Commit 73c80cdf authored by Julian Zobel's avatar Julian Zobel
Browse files

Added mutliple functions to the UAV topology component.

Removed unused imports in Abstract and Defaut Topology.
Adapted the getRealPosition method in abstract topology not to a clone, but the real position element, according to the interface definition.
parent a5c7e481
...@@ -85,7 +85,7 @@ public abstract class AbstractTopologyComponent implements TopologyComponent { ...@@ -85,7 +85,7 @@ public abstract class AbstractTopologyComponent implements TopologyComponent {
if (this.movementModel != null) { if (this.movementModel != null) {
this.movementModel.addComponent(this); this.movementModel.addComponent(this);
} }
this.placementModel = placementModel; this.placementModel = placementModel;
if (this.placementModel != null) { if (this.placementModel != null) {
this.placementModel.addComponent(this); this.placementModel.addComponent(this);
...@@ -220,7 +220,7 @@ public abstract class AbstractTopologyComponent implements TopologyComponent { ...@@ -220,7 +220,7 @@ public abstract class AbstractTopologyComponent implements TopologyComponent {
@Override @Override
public PositionVector getRealPosition() { public PositionVector getRealPosition() {
return position.clone(); return position; // no copy! See SimLocationActuator Interface Description!
} }
@Override @Override
......
...@@ -20,50 +20,21 @@ ...@@ -20,50 +20,21 @@
package de.tud.kom.p2psim.impl.topology.component; package de.tud.kom.p2psim.impl.topology.component;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Random; import java.util.Random;
import java.util.Set; import java.util.Set;
import de.tud.kom.p2psim.api.common.HostProperties; import de.tud.kom.p2psim.api.common.HostProperties;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.api.linklayer.mac.MacAddress;
import de.tud.kom.p2psim.api.linklayer.mac.MacLayer;
import de.tud.kom.p2psim.api.linklayer.mac.PhyType;
import de.tud.kom.p2psim.api.topology.Topology; import de.tud.kom.p2psim.api.topology.Topology;
import de.tud.kom.p2psim.api.topology.TopologyComponent; import de.tud.kom.p2psim.api.topology.TopologyComponent;
import de.tud.kom.p2psim.api.topology.movement.MovementModel; import de.tud.kom.p2psim.api.topology.movement.MovementModel;
import de.tud.kom.p2psim.api.topology.placement.PlacementModel; import de.tud.kom.p2psim.api.topology.placement.PlacementModel;
import de.tud.kom.p2psim.api.topology.views.TopologyView;
import de.tud.kom.p2psim.impl.simengine.Simulator;
import de.tudarmstadt.maki.simonstrator.api.Event;
import de.tudarmstadt.maki.simonstrator.api.EventHandler;
import de.tudarmstadt.maki.simonstrator.api.Graphs;
import de.tudarmstadt.maki.simonstrator.api.Host;
import de.tudarmstadt.maki.simonstrator.api.Oracle;
import de.tudarmstadt.maki.simonstrator.api.Randoms; import de.tudarmstadt.maki.simonstrator.api.Randoms;
import de.tudarmstadt.maki.simonstrator.api.common.graph.Graph;
import de.tudarmstadt.maki.simonstrator.api.common.graph.IEdge;
import de.tudarmstadt.maki.simonstrator.api.common.graph.INode;
import de.tudarmstadt.maki.simonstrator.api.common.graph.INodeID;
import de.tudarmstadt.maki.simonstrator.api.component.ComponentNotAvailableException;
import de.tudarmstadt.maki.simonstrator.api.component.network.NetInterface;
import de.tudarmstadt.maki.simonstrator.api.component.network.NetworkComponent.NetInterfaceName;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.AttractionPoint; import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.AttractionPoint;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.LocationListener;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.LocationRequest;
import de.tudarmstadt.maki.simonstrator.api.component.sis.SiSComponent;
import de.tudarmstadt.maki.simonstrator.api.component.sis.SiSDataCallback;
import de.tudarmstadt.maki.simonstrator.api.component.sis.SiSInfoProperties;
import de.tudarmstadt.maki.simonstrator.api.component.sis.SiSInformationProvider.SiSProviderHandle;
import de.tudarmstadt.maki.simonstrator.api.component.sis.exception.InformationNotAvailableException;
import de.tudarmstadt.maki.simonstrator.api.component.sis.type.SiSTypes;
import de.tudarmstadt.maki.simonstrator.api.component.sis.util.SiSTopologyProvider;
import de.tudarmstadt.maki.simonstrator.api.component.topology.TopologyID;
import de.tudarmstadt.maki.simonstrator.api.component.transport.ConnectivityListener;
/** /**
* Default implementation of a {@link TopologyComponent}. * Default implementation of a {@link TopologyComponent}.
...@@ -129,7 +100,6 @@ public class DefaultTopologyComponent extends AbstractTopologyComponent { ...@@ -129,7 +100,6 @@ public class DefaultTopologyComponent extends AbstractTopologyComponent {
public void setMovementSpeed(double speed) { public void setMovementSpeed(double speed) {
this.currentMovementSpeed = speed; this.currentMovementSpeed = speed;
} }
@Override @Override
public void setTargetAttractionPoint(AttractionPoint targetAttractionPoint) public void setTargetAttractionPoint(AttractionPoint targetAttractionPoint)
......
...@@ -23,13 +23,20 @@ package de.tud.kom.p2psim.impl.topology.component; ...@@ -23,13 +23,20 @@ package de.tud.kom.p2psim.impl.topology.component;
import java.util.Set; import java.util.Set;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.api.energy.Battery;
import de.tud.kom.p2psim.api.energy.ComponentType;
import de.tud.kom.p2psim.api.energy.EnergyModel;
import de.tud.kom.p2psim.api.topology.Topology; import de.tud.kom.p2psim.api.topology.Topology;
import de.tud.kom.p2psim.api.topology.movement.MovementModel; import de.tud.kom.p2psim.api.topology.movement.MovementModel;
import de.tud.kom.p2psim.api.topology.movement.UAVLocationActuator; import de.tud.kom.p2psim.api.topology.movement.SimUAVLocationActuator;
import de.tud.kom.p2psim.api.topology.movement.UAVMovementModel; import de.tud.kom.p2psim.api.topology.movement.UAVMovementModel;
import de.tud.kom.p2psim.api.topology.placement.PlacementModel; import de.tud.kom.p2psim.api.topology.placement.PlacementModel;
import de.tud.kom.p2psim.impl.energy.components.ActuatorEnergyComponent;
import de.tudarmstadt.maki.simonstrator.api.component.ComponentNotAvailableException;
import de.tudarmstadt.maki.simonstrator.api.component.overlay.OverlayComponent; import de.tudarmstadt.maki.simonstrator.api.component.overlay.OverlayComponent;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.battery.BatterySensor;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.AttractionPoint; import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.AttractionPoint;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
/** /**
* Topology component used for UAVs. * Topology component used for UAVs.
...@@ -37,11 +44,14 @@ import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Attraction ...@@ -37,11 +44,14 @@ import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Attraction
* @author Julian Zobel * @author Julian Zobel
* @version 1.0, 06.09.2018 * @version 1.0, 06.09.2018
*/ */
public class UAVTopologyComponent extends AbstractTopologyComponent implements UAVLocationActuator { public class UAVTopologyComponent extends AbstractTopologyComponent implements SimUAVLocationActuator {
UAVMovementModel movement; private UAVMovementModel movement;
OverlayComponent uavOverlayComponent; private OverlayComponent uavOverlayComponent;
private ActuatorEnergyComponent actuator;
public BatterySensor battery;
/** /**
* Create a TopologyComponent for the current host. * Create a TopologyComponent for the current host.
...@@ -55,7 +65,54 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements U ...@@ -55,7 +65,54 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements U
super(host, topology, movementModel, placementModel, registerAsInformationProviderInSiS); super(host, topology, movementModel, placementModel, registerAsInformationProviderInSiS);
} }
@Override
public void initialize() {
super.initialize();
try {
actuator = getHost().getComponent(EnergyModel.class)
.getComponent(ComponentType.ACTUATOR, ActuatorEnergyComponent.class);
actuator.turnOn();
} catch (ComponentNotAvailableException e) {
System.err.println("No Acutator Energy Component was found!");
}
try {
battery = getHost().getComponent(BatterySensor.class);
} catch (ComponentNotAvailableException e) {
System.err.println("No Battery Component was found!");
}
}
@Override
public void setTargetAttractionPoint(AttractionPoint targetAttractionPoint)
throws UnsupportedOperationException {
// TODO Auto-generated method stub
}
@Override
public Set<AttractionPoint> getAllAttractionPoints() {
// TODO Auto-generated method stub
return null;
}
@Override
public AttractionPoint getCurrentTargetAttractionPoint() {
// TODO Auto-generated method stub
return null;
}
public void setUAVComponent(OverlayComponent uavOverlayComponent) {
this.uavOverlayComponent = uavOverlayComponent;
}
public OverlayComponent getUAVComponent() {
return uavOverlayComponent;
}
@Override @Override
public double getMinMovementSpeed() { public double getMinMovementSpeed() {
return movement.getMinCruiseSpeed(); return movement.getMinCruiseSpeed();
...@@ -77,45 +134,60 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements U ...@@ -77,45 +134,60 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements U
} }
@Override @Override
public void setTargetAttractionPoint(AttractionPoint targetAttractionPoint) public boolean isActive() {
throws UnsupportedOperationException { return actuator.isOn();
}
@Override
public boolean activate() {
return actuator.turnOn();
}
@Override
public boolean deactivate() {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return false;
} }
@Override @Override
public Set<AttractionPoint> getAllAttractionPoints() { public Location getCurrentLocation() {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return null; return null;
} }
@Override @Override
public AttractionPoint getCurrentTargetAttractionPoint() { public double getCurrentBatteryLevel() {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return null; return 0;
} }
@Override
public void moveToLocation(Location targetLocation) {
// TODO Auto-generated method stub
}
@Override @Override
public UAVMovementModel getUAVMovement() { public UAVMovementModel getUAVMovement() {
return movement; return movement;
} }
@Override @Override
public void setUAVMovement(UAVMovementModel uavMovement) { public void setUAVMovement(UAVMovementModel uavMovement) {
this.movement = uavMovement; this.movement = uavMovement;
} }
public void setUAVComponent(OverlayComponent uavOverlayComponent) { @Override
this.uavOverlayComponent = uavOverlayComponent; public ActuatorEnergyComponent getActuatorEnergyComponent() {
return actuator;
} }
public OverlayComponent getUAVComponent() {
return uavOverlayComponent; public void updateCurrentLocation(Location location, double actuatorLoad) {
super.updateCurrentLocation(location);
actuator.useActuator(actuatorLoad);
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment