Commit e68ebafa authored by Julian Zobel's avatar Julian Zobel
Browse files

Logging for crash. Provide the return location instead the base location

parent 75a053f5
...@@ -39,6 +39,7 @@ import de.tud.kom.p2psim.impl.energy.models.AbstractEnergyModel; ...@@ -39,6 +39,7 @@ import de.tud.kom.p2psim.impl.energy.models.AbstractEnergyModel;
import de.tud.kom.p2psim.impl.topology.placement.UAVBasePlacement; import de.tud.kom.p2psim.impl.topology.placement.UAVBasePlacement;
import de.tud.kom.p2psim.impl.topology.util.PositionVector; import de.tud.kom.p2psim.impl.topology.util.PositionVector;
import de.tudarmstadt.maki.simonstrator.api.Monitor; import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Monitor.Level;
import de.tudarmstadt.maki.simonstrator.api.component.ComponentNotAvailableException; 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.location.IAttractionPoint; import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.IAttractionPoint;
...@@ -175,10 +176,14 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements S ...@@ -175,10 +176,14 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements S
if(this.position.getAltitude() != 0) { if(this.position.getAltitude() != 0) {
this.setState(UAVstate.CRASHED); this.setState(UAVstate.CRASHED);
PositionVector l = getCurrentLocation();
l.setAltitude(0);
this.updateCurrentLocation(l);
uavOverlayComponent.shutdown(); uavOverlayComponent.shutdown();
shutdownCommunication(); shutdownCommunication();
Monitor.log(this.getClass(), Level.WARN, "[UAVTopologyComponent] UAV " + getUAVComponent().getHost().getId() + " crashed at " + getRealPosition(), "");
} else { } else {
this.setState(UAVstate.OFFLINE); this.setState(UAVstate.OFFLINE);
} }
...@@ -244,6 +249,7 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements S ...@@ -244,6 +249,7 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements S
@Override @Override
public void setTargetLocationRoute(LinkedList<PositionVector> route, public void setTargetLocationRoute(LinkedList<PositionVector> route,
ReachedLocationCallback cb) { ReachedLocationCallback cb) {
if(!isActive()) return;
LinkedList<PositionVector> positionvectorlist = new LinkedList<>(); LinkedList<PositionVector> positionvectorlist = new LinkedList<>();
for (Location loc : route) { for (Location loc : route) {
positionvectorlist.add(new PositionVector(loc)); positionvectorlist.add(new PositionVector(loc));
...@@ -275,7 +281,7 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements S ...@@ -275,7 +281,7 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements S
return state; return state;
} }
private PositionVector getOverBaseLocation() { private PositionVector getBaseReturnLocation() {
PositionVector locationOverBase = baseLocation.clone(); PositionVector locationOverBase = baseLocation.clone();
locationOverBase.setAltitude(10); locationOverBase.setAltitude(10);
...@@ -284,13 +290,16 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements S ...@@ -284,13 +290,16 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements S
@Override @Override
public void returnToBase(double velocity, ReachedLocationCallback cb) { public void returnToBase(double velocity, ReachedLocationCallback cb) {
if(!isActive()) return;
movement.setTargetVelocity(velocity); movement.setTargetVelocity(velocity);
movement.setTargetLocation(getOverBaseLocation(), cb); movement.setTargetLocation(getBaseReturnLocation(), cb);
} }
@Override @Override
public boolean landAtBase(BaseConnectionCallback cb) { public boolean landAtBase(BaseConnectionCallback cb) {
if(overBaseLocation()) { if(!isActive()) return false;
if(isOverBaseLocation()) {
this.setState(UAVstate.RETURN); this.setState(UAVstate.RETURN);
ReachedLocationCallback landedCallback = new ReachedLocationCallback() { ReachedLocationCallback landedCallback = new ReachedLocationCallback() {
...@@ -312,13 +321,13 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements S ...@@ -312,13 +321,13 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements S
@Override @Override
public boolean startFromBase(ReachedLocationCallback cb) { public boolean startFromBase(ReachedLocationCallback cb) {
if(this.getCurrentLocation().equals(this.getBaseLocation()) if(this.getCurrentLocation().equals(baseLocation)
&& state == UAVstate.BASE_CONNECTION_READY && state == UAVstate.BASE_CONNECTION_READY
&& activate()) { && activate()) {
disconnectFromBase(); disconnectFromBase();
movement.setTargetVelocity(movement.getVerticalAscentMaxVelocity()); movement.setTargetVelocity(movement.getVerticalAscentMaxVelocity());
movement.setTargetLocation(getOverBaseLocation(), cb); movement.setTargetLocation(getBaseReturnLocation(), cb);
return true; return true;
} }
...@@ -326,9 +335,9 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements S ...@@ -326,9 +335,9 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements S
} }
private boolean overBaseLocation() { private boolean isOverBaseLocation() {
if(this.getCurrentLocation().getX() == this.getBaseLocation().getX() if(this.getCurrentLocation().getX() == baseLocation.getX()
&& this.getCurrentLocation().getY() == this.getBaseLocation().getY()) { && this.getCurrentLocation().getY() == baseLocation.getY()) {
return true; return true;
} }
else return false; else return false;
...@@ -439,7 +448,7 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements S ...@@ -439,7 +448,7 @@ public class UAVTopologyComponent extends AbstractTopologyComponent implements S
@Override @Override
public PositionVector getBaseLocation() { public PositionVector getBaseLocation() {
return baseLocation.clone(); return getBaseReturnLocation();
} }
......
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