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 {
if (this.movementModel != null) {
this.movementModel.addComponent(this);
}
this.placementModel = placementModel;
if (this.placementModel != null) {
this.placementModel.addComponent(this);
......@@ -220,7 +220,7 @@ public abstract class AbstractTopologyComponent implements TopologyComponent {
@Override
public PositionVector getRealPosition() {
return position.clone();
return position; // no copy! See SimLocationActuator Interface Description!
}
@Override
......
......@@ -20,50 +20,21 @@
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.Set;
import de.tud.kom.p2psim.api.common.HostProperties;
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.TopologyComponent;
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.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.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.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}.
......@@ -129,7 +100,6 @@ public class DefaultTopologyComponent extends AbstractTopologyComponent {
public void setMovementSpeed(double speed) {
this.currentMovementSpeed = speed;
}
@Override
public void setTargetAttractionPoint(AttractionPoint targetAttractionPoint)
......
......@@ -23,13 +23,20 @@ package de.tud.kom.p2psim.impl.topology.component;
import java.util.Set;
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.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.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.sensor.battery.BatterySensor;
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.
......@@ -37,11 +44,14 @@ import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Attraction
* @author Julian Zobel
* @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.
......@@ -55,7 +65,54 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements U
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
public double getMinMovementSpeed() {
return movement.getMinCruiseSpeed();
......@@ -77,45 +134,60 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements U
}
@Override
public void setTargetAttractionPoint(AttractionPoint targetAttractionPoint)
throws UnsupportedOperationException {
public boolean isActive() {
return actuator.isOn();
}
@Override
public boolean activate() {
return actuator.turnOn();
}
@Override
public boolean deactivate() {
// TODO Auto-generated method stub
return false;
}
@Override
public Set<AttractionPoint> getAllAttractionPoints() {
public Location getCurrentLocation() {
// TODO Auto-generated method stub
return null;
}
@Override
public AttractionPoint getCurrentTargetAttractionPoint() {
public double getCurrentBatteryLevel() {
// TODO Auto-generated method stub
return null;
return 0;
}
@Override
public void moveToLocation(Location targetLocation) {
// TODO Auto-generated method stub
}
@Override
public UAVMovementModel getUAVMovement() {
return movement;
}
@Override
public void setUAVMovement(UAVMovementModel uavMovement) {
this.movement = uavMovement;
this.movement = uavMovement;
}
public void setUAVComponent(OverlayComponent uavOverlayComponent) {
this.uavOverlayComponent = uavOverlayComponent;
@Override
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