/* * Copyright (c) 2005-2010 KOM � Multimedia Communications Lab * * This file is part of Simonstrator.KOM. * * Simonstrator.KOM is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * PeerfactSim.KOM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PeerfactSim.KOM. If not, see . * */ package de.tud.kom.p2psim.api.topology.component; import java.util.LinkedList; import de.tud.kom.p2psim.impl.topology.component.BaseTopologyComponent; import de.tud.kom.p2psim.impl.topology.placement.UAVBasePlacement; import de.tud.kom.p2psim.impl.topology.util.PositionVector; import de.tudarmstadt.maki.simonstrator.api.uavsupport.Actuator; import de.tudarmstadt.maki.simonstrator.api.uavsupport.callbacks.BaseConnectedCallback; import de.tudarmstadt.maki.simonstrator.api.uavsupport.callbacks.BaseDisconnectedCallback; import de.tudarmstadt.maki.simonstrator.api.uavsupport.callbacks.BatteryReplacementCallback; import de.tudarmstadt.maki.simonstrator.api.uavsupport.callbacks.ReachedLocationCallback; /** * A controllable location actuator, that can be turned on and off, gives access * to the current location and battery levels, and also receives a location for * a target that the actuator will then approach. * * @author Julian Zobel * */ public interface ControllableLocationActuator extends Actuator { public boolean isActive(); public boolean activate(); public boolean deactivate(); public PositionVector getCurrentLocation(); public PositionVector getCurrentDirection(); public PositionVector getBaseLocation(); public void updateCurrentDirection(PositionVector direction); public double getCurrentBatteryLevel(); public double getCurrentBatteryEnergy(); public double getMaximumBatteryCapacity(); public LinkedList getTargetLocations(); public void setTargetLocation(PositionVector targetLocation, ReachedLocationCallback cb); public void addTargetLocation(PositionVector targetLocation, ReachedLocationCallback cb); public void setTargetLocationRoute(LinkedList route, ReachedLocationCallback cb); public void removeAllTargetLocations(); public void batteryReplacement(BatteryReplacementCallback cb); public void returnToBase(ReachedLocationCallback cb); public void connectToBase(BaseConnectedCallback cb); public void disconnectFromBase(BaseDisconnectedCallback cb); public void setMovementSpeed(double speed); public double getMinMovementSpeed(); public double getMaxMovementSpeed(); public double getMovementSpeed(); public double estimatePowerConsumptionWatt(double velocity); public double estimateFlightDistance(double velocity, double batterylevel, double batterythreshold); public double estimateOptimalSpeed(); }