MovementSupported.java 3.5 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
 * Copyright (c) 2005-2011 KOM - Multimedia Communications Lab
 *
 * This file is part of PeerfactSim.KOM.
 * 
 * PeerfactSim.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 <http://www.gnu.org/licenses/>.
 *
 */

package de.tud.kom.p2psim.api.topology.movement;

23
import de.tud.kom.p2psim.impl.topology.util.PositionVector;
24
25
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.LocationActuator;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.LocationSensor;
26
27
28
29
30
31
32
33

/**
 * Identifier for Components or Applications that support movement. If for
 * instance a Device should be moved it has to extend this class and will be
 * notified upon each change of its position.
 * 
 * @author Bjoern Richerzhagen
 * @version 1.0, 04/25/2011
34
35
36
 * @deprecated we will try to clean up this interface in favor of
 *             {@link LocationSensor} or {@link SimLocationSensor} and
 *             {@link LocationActuator}
37
 */
38
@Deprecated
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
public interface MovementSupported {

	/**
	 * Callback, if the position of this MovementSupported-Instance changed in
	 * this round (this is preferred over registering the MovementComponent as a
	 * {@link MovementListener})
	 */
	public void positionChanged();

	/**
	 * Generic position, this allows us to use the GNP or other models that
	 * support the Position-Interface. This call does not consume any energy,
	 * even if a Positioning-Device is specified in the EnergyModel. It should
	 * not be used inside an Application, as the more sophisticated way is to
	 * add a GPS-Component to the EnergyModel and call getEstimatedPosition()
	 * 
	 * <b>This is used in high-performance calculations inside the TopologyViews
	 * and should therefore NOT return copies but the object instance to prevent
	 * fetching the object after each movement!</b>
	 * 
	 * @return
	 */
	public PositionVector getRealPosition();

	/**
	 * Has to return true, if movement is possible (for example Net Layer is
	 * online).
	 * 
	 * @return
	 */
	public boolean movementActive();

	/**
	 * Adds a listener that is called upon node movement
	 * 
	 * @param listener
	 */
	public void addMovementListener(MovementListener listener);

	/**
	 * Removes the movement listener
	 * 
	 * @param listener
	 */
	public void removeMovementListener(MovementListener listener);

	/**
	 * Gets the minimum movement speed of this movable component.
	 * 
	 * @return The minimum movement speed
	 */
	public double getMinMovementSpeed();

	/**
	 * Gets the maximum movement speed of this movable component.
	 * 
	 * @return The maximum movement speed
	 */
	public double getMaxMovementSpeed();

	/**
100
101
102
	 * Gets the currently set movement speed for that node. Initialized with a
	 * random value between min and max. Use setMovementSpeed() to lateron
	 * change the value.
103
	 * 
104
	 * @return
105
106
	 */
	public double getMovementSpeed();
107
108
109
110
111
112
113

	/**
	 * Allows to set the movement speed in meter per second. Should be between
	 * min and max speed, but this is not enforced.
	 */
	public void setMovementSpeed(double speed);

114
}