Commit 0c80da45 authored by Björn Richerzhagen's avatar Björn Richerzhagen
Browse files

Removed deprecated `Position`-Interface

parent db566de9
/*
* Copyright (c) 2005-2010 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.common;
import de.tudarmstadt.maki.simonstrator.api.common.Transmitable;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
/**
* The common interface for positions within PeerfactSim, this hides the
* business logic of a PositionVector in util.position.
*
* You should consider extending PositionVector for your implementations.
*
* @author Bjoern Richerzhagen
* @version 1.0, 05/26/2011
* @deprecated please consider using {@link Location} instead!
*/
@Deprecated
public interface Position extends Transmitable, Cloneable, Location {
/**
* Get the distance of this position compared to any other Position, if they
* have the same number of dimensions and are compatible.
*
* @param position
* @return
*/
public double getDistance(Position position);
/**
* Calculates the angle <b>in rad</b> from the current position to the
* target.
*
* @param target
* @return An angle in rad between -PI and PI, where 0 is "East", or the
* direction of the positive x-Axis
*/
public double getAngle(Position target);
/**
* This method should be consistent with the getDistance and
* getAngle-methods. It returns a Position that has the given distance and
* angle from the current position.
*
* @param distance
* @param angle
* an angle in rad between -PI and PI, where 0 is the direction
* of the positive x-Axis and angles are incremented
* counter-clockwise (mathematical)
* @return
*/
public Position getTarget(double distance, double angle);
/**
* CLone a Position, ensuring there is no information propagation due to
* Java. Consider a clone() as some kind of snapshot of the current state of
* the cloned position. It is very important to call clone() in scenarios
* with moving hosts!
*
* @return
*/
public Position clone();
}
...@@ -22,13 +22,13 @@ ...@@ -22,13 +22,13 @@
package de.tud.kom.p2psim.api.network; package de.tud.kom.p2psim.api.network;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.api.network.routing.RoutingAlgorithm; import de.tud.kom.p2psim.api.network.routing.RoutingAlgorithm;
import de.tudarmstadt.maki.simonstrator.api.Message; import de.tudarmstadt.maki.simonstrator.api.Message;
import de.tudarmstadt.maki.simonstrator.api.component.network.Bandwidth; import de.tudarmstadt.maki.simonstrator.api.component.network.Bandwidth;
import de.tudarmstadt.maki.simonstrator.api.component.network.NetID; import de.tudarmstadt.maki.simonstrator.api.component.network.NetID;
import de.tudarmstadt.maki.simonstrator.api.component.network.NetInterface; import de.tudarmstadt.maki.simonstrator.api.component.network.NetInterface;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
/** /**
* The NetLayer provides a general interface to encapsulate various networking * The NetLayer provides a general interface to encapsulate various networking
...@@ -123,7 +123,7 @@ public interface NetLayer extends NetInterface { ...@@ -123,7 +123,7 @@ public interface NetLayer extends NetInterface {
* *
* @return Position the appropriate position * @return Position the appropriate position
*/ */
public Position getNetPosition(); public Location getNetPosition();
/** /**
* Returns the maximum physical bandwidth that is available at the given * Returns the maximum physical bandwidth that is available at the given
......
...@@ -26,6 +26,7 @@ import de.tud.kom.p2psim.api.topology.social.SocialView; ...@@ -26,6 +26,7 @@ import de.tud.kom.p2psim.api.topology.social.SocialView;
import de.tud.kom.p2psim.api.topology.views.TopologyView; import de.tud.kom.p2psim.api.topology.views.TopologyView;
import de.tud.kom.p2psim.api.topology.waypoints.WaypointModel; import de.tud.kom.p2psim.api.topology.waypoints.WaypointModel;
import de.tud.kom.p2psim.impl.topology.PositionVector; import de.tud.kom.p2psim.impl.topology.PositionVector;
import de.tudarmstadt.maki.simonstrator.api.component.GlobalComponent;
/** /**
* We provide a global Topology-Object (ie. this object is only created once in * We provide a global Topology-Object (ie. this object is only created once in
...@@ -36,7 +37,7 @@ import de.tud.kom.p2psim.impl.topology.PositionVector; ...@@ -36,7 +37,7 @@ import de.tud.kom.p2psim.impl.topology.PositionVector;
* @author Bjoern Richerzhagen * @author Bjoern Richerzhagen
* @version 1.0, 21.02.2012 * @version 1.0, 21.02.2012
*/ */
public interface Topology { public interface Topology extends GlobalComponent {
/** /**
* This Position Vector contains the upper bounds for each dimension used in * This Position Vector contains the upper bounds for each dimension used in
......
...@@ -20,9 +20,7 @@ ...@@ -20,9 +20,7 @@
package de.tud.kom.p2psim.api.topology; package de.tud.kom.p2psim.api.topology;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.common.SimHostComponent; import de.tud.kom.p2psim.api.common.SimHostComponent;
import de.tud.kom.p2psim.api.energy.EnergyComponent;
import de.tud.kom.p2psim.api.topology.movement.MovementListener; import de.tud.kom.p2psim.api.topology.movement.MovementListener;
import de.tud.kom.p2psim.api.topology.movement.MovementSupported; import de.tud.kom.p2psim.api.topology.movement.MovementSupported;
import de.tud.kom.p2psim.api.topology.views.TopologyView; import de.tud.kom.p2psim.api.topology.views.TopologyView;
...@@ -40,33 +38,10 @@ import de.tudarmstadt.maki.simonstrator.api.component.topology.UnderlayTopologyP ...@@ -40,33 +38,10 @@ import de.tudarmstadt.maki.simonstrator.api.component.topology.UnderlayTopologyP
public interface TopologyComponent extends SimHostComponent, MovementSupported, public interface TopologyComponent extends SimHostComponent, MovementSupported,
MovementListener, UnderlayTopologyProvider, LocationSensor { MovementListener, UnderlayTopologyProvider, LocationSensor {
/**
* Abstract QoS-Classes for the Accuracy of the position. Implementation
* depends on the {@link EnergyComponent}
*
* @author Bjoern Richerzhagen
* @version 1.0, 26.02.2012
*/
@Deprecated
public static enum PositionAccuracy {
HIGH, MEDIUM, LOW
}
/**
* This uses an {@link EnergyComponent} for position retrieving (ie a GPS).
* A call might trigger energy consumption and the result will in most cases
* not be 100% accurate. Use this in your application if you want to add
* another layer of realism.
*
* @param accuracy
* a QoS-Class for the accuracy
* @return An estimate of the current position
*/
@Deprecated
public Position getPosition(PositionAccuracy accuracy);
/** /**
* Returns the Topology-Object that provides access to {@link TopologyView}s * Returns the Topology-Object that provides access to {@link TopologyView}s
* Note: the {@link Topology} is also available as a GlobalComponent via the
* Binder-class.
* *
* @return * @return
*/ */
......
...@@ -24,7 +24,6 @@ import java.util.List; ...@@ -24,7 +24,6 @@ import java.util.List;
import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.Geometry;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.topology.views.TopologyView; import de.tud.kom.p2psim.api.topology.views.TopologyView;
import de.tud.kom.p2psim.impl.topology.PositionVector; import de.tud.kom.p2psim.impl.topology.PositionVector;
......
...@@ -23,13 +23,13 @@ package de.tud.kom.p2psim.api.topology.views; ...@@ -23,13 +23,13 @@ package de.tud.kom.p2psim.api.topology.views;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.linklayer.mac.Link; import de.tud.kom.p2psim.api.linklayer.mac.Link;
import de.tud.kom.p2psim.api.linklayer.mac.MacAddress; 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.MacLayer;
import de.tud.kom.p2psim.api.linklayer.mac.PhyType; import de.tud.kom.p2psim.api.linklayer.mac.PhyType;
import de.tud.kom.p2psim.api.topology.TopologyListener; import de.tud.kom.p2psim.api.topology.TopologyListener;
import de.tud.kom.p2psim.api.topology.movement.MovementListener; import de.tud.kom.p2psim.api.topology.movement.MovementListener;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
/** /**
* Each MAC has a view on the global topology of hosts (ie. the * Each MAC has a view on the global topology of hosts (ie. the
...@@ -119,7 +119,7 @@ public interface TopologyView extends TopologyListener, MovementListener { ...@@ -119,7 +119,7 @@ public interface TopologyView extends TopologyListener, MovementListener {
* The {@link MacAddress} of the host * The {@link MacAddress} of the host
* @return The real Position of the Host. * @return The real Position of the Host.
*/ */
public Position getPosition(MacAddress address); public Location getPosition(MacAddress address);
/** /**
* Gets the real distance between the two hosts. * Gets the real distance between the two hosts.
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
package de.tud.kom.p2psim.api.topology.views.wifi.phy; package de.tud.kom.p2psim.api.topology.views.wifi.phy;
import de.tud.kom.p2psim.api.common.Position; import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
/** /**
* This interface is for the calculation of the propagation loss of an * This interface is for the calculation of the propagation loss of an
...@@ -52,8 +52,8 @@ public abstract class PropagationLossModel { ...@@ -52,8 +52,8 @@ public abstract class PropagationLossModel {
* The second position * The second position
* @return The RX power in dBm * @return The RX power in dBm
*/ */
public abstract double getRxPowerDbm(double txPowerDbm, Position a, public abstract double getRxPowerDbm(double txPowerDbm, Location a,
Position b); Location b);
/** /**
* Gets the RX Power in dBm for the distance. * Gets the RX Power in dBm for the distance.
......
...@@ -28,13 +28,13 @@ import java.util.List; ...@@ -28,13 +28,13 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.linklayer.mac.MacAddress; 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.MacLayer;
import de.tud.kom.p2psim.api.topology.views.wifi.phy.PropagationLossModel; import de.tud.kom.p2psim.api.topology.views.wifi.phy.PropagationLossModel;
import de.tud.kom.p2psim.api.topology.views.wifi.phy.WifiMode; import de.tud.kom.p2psim.api.topology.views.wifi.phy.WifiMode;
import de.tud.kom.p2psim.api.topology.views.wifi.phy.WifiPhy.Standard_802_11; import de.tud.kom.p2psim.api.topology.views.wifi.phy.WifiPhy.Standard_802_11;
import de.tud.kom.p2psim.impl.topology.views.wifi.phy.InterferenceHelper; import de.tud.kom.p2psim.impl.topology.views.wifi.phy.InterferenceHelper;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
/** /**
* This class is an interface for other implementation of Rate Managers. The * This class is an interface for other implementation of Rate Managers. The
...@@ -598,8 +598,8 @@ public abstract class AbstractRateManager { ...@@ -598,8 +598,8 @@ public abstract class AbstractRateManager {
* antenna. <br> * antenna. <br>
* This is only a helper to calculate the SNR in the AdHocMac. * This is only a helper to calculate the SNR in the AdHocMac.
*/ */
public double calculateActuallySNR(Position startPosition, public double calculateActuallySNR(Location startPosition,
Position targetPosition, WifiMode mode, double txPowerDbm) { Location targetPosition, WifiMode mode, double txPowerDbm) {
InterferenceHelper helper = mac.getWifiTopologyView() InterferenceHelper helper = mac.getWifiTopologyView()
.getInterferenceHelper(); .getInterferenceHelper();
double noiseInterferenceW = helper double noiseInterferenceW = helper
......
...@@ -28,7 +28,6 @@ import java.util.Random; ...@@ -28,7 +28,6 @@ import java.util.Random;
import de.tud.kom.p2psim.api.analyzer.LinklayerAnalyzer; import de.tud.kom.p2psim.api.analyzer.LinklayerAnalyzer;
import de.tud.kom.p2psim.api.analyzer.MessageAnalyzer.Reason; import de.tud.kom.p2psim.api.analyzer.MessageAnalyzer.Reason;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.api.linklayer.LinkLayerMessage; import de.tud.kom.p2psim.api.linklayer.LinkLayerMessage;
import de.tud.kom.p2psim.api.linklayer.mac.Link; import de.tud.kom.p2psim.api.linklayer.mac.Link;
...@@ -47,6 +46,7 @@ import de.tud.kom.p2psim.impl.linklayer.DefaultLinkMessageEvent; ...@@ -47,6 +46,7 @@ import de.tud.kom.p2psim.impl.linklayer.DefaultLinkMessageEvent;
import de.tud.kom.p2psim.impl.linklayer.mac.AbstractMacLayer; import de.tud.kom.p2psim.impl.linklayer.mac.AbstractMacLayer;
import de.tud.kom.p2psim.impl.linklayer.mac.wifi.AbstractRateManager.RateManagerTypes; import de.tud.kom.p2psim.impl.linklayer.mac.wifi.AbstractRateManager.RateManagerTypes;
import de.tud.kom.p2psim.impl.linklayer.mac.wifi.DcfManager.WifiState; import de.tud.kom.p2psim.impl.linklayer.mac.wifi.DcfManager.WifiState;
import de.tud.kom.p2psim.impl.topology.PositionVector;
import de.tud.kom.p2psim.impl.topology.views.wifi.WifiTopologyView; import de.tud.kom.p2psim.impl.topology.views.wifi.WifiTopologyView;
import de.tud.kom.p2psim.impl.util.LiveMonitoring; import de.tud.kom.p2psim.impl.util.LiveMonitoring;
import de.tud.kom.p2psim.impl.util.LiveMonitoring.ProgressValue; import de.tud.kom.p2psim.impl.util.LiveMonitoring.ProgressValue;
...@@ -56,6 +56,7 @@ import de.tudarmstadt.maki.simonstrator.api.Monitor.Level; ...@@ -56,6 +56,7 @@ import de.tudarmstadt.maki.simonstrator.api.Monitor.Level;
import de.tudarmstadt.maki.simonstrator.api.Randoms; import de.tudarmstadt.maki.simonstrator.api.Randoms;
import de.tudarmstadt.maki.simonstrator.api.Time; import de.tudarmstadt.maki.simonstrator.api.Time;
import de.tudarmstadt.maki.simonstrator.api.component.core.MonitorComponent.AnalyzerNotAvailableException; import de.tudarmstadt.maki.simonstrator.api.component.core.MonitorComponent.AnalyzerNotAvailableException;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
import de.tudarmstadt.maki.simonstrator.api.operation.AbstractOperation; import de.tudarmstadt.maki.simonstrator.api.operation.AbstractOperation;
/** /**
...@@ -671,14 +672,12 @@ public class Ieee80211AdHocMac extends AbstractMacLayer { ...@@ -671,14 +672,12 @@ public class Ieee80211AdHocMac extends AbstractMacLayer {
/** /**
* Gets a copy of the real position of this host. * Gets a copy of the real position of this host.
* *
* Clone <strong>ONLY</strong> here.
*
* @return The position of this host. * @return The position of this host.
*/ */
private Position getPosition() { private PositionVector getPosition() {
/* return this.getHost().getTopologyComponent().getRealPosition().clone();
* FIXME this leads to serious performance degradations. Do we REALLY
* need a copy?
*/
return this.getHost().getTopologyComponent().getRealPosition(); // .clone();
} }
/** /**
...@@ -919,9 +918,9 @@ public class Ieee80211AdHocMac extends AbstractMacLayer { ...@@ -919,9 +918,9 @@ public class Ieee80211AdHocMac extends AbstractMacLayer {
WifiMacEventInformation eInfo = (WifiMacEventInformation) eventInfo; WifiMacEventInformation eInfo = (WifiMacEventInformation) eventInfo;
// startPosition is from receiver (because ack come from this!) // startPosition is from receiver (because ack come from this!)
Position startPosition = ((Ieee80211AdHocMac) topoView Location startPosition = ((Ieee80211AdHocMac) topoView
.getMac(eventInfo.getReceiver())).getPosition(); .getMac(eventInfo.getReceiver())).getPosition();
Position targetPosition = this.getPosition(); Location targetPosition = this.getPosition();
double ackSnr = rateManager.calculateActuallySNR(startPosition, double ackSnr = rateManager.calculateActuallySNR(startPosition,
targetPosition, eInfo.getAckMode(), txPowerDbm); targetPosition, eInfo.getAckMode(), txPowerDbm);
rateManager.reportDataOk(eventInfo.getReceiver(), ackSnr, rateManager.reportDataOk(eventInfo.getReceiver(), ackSnr,
......
...@@ -26,7 +26,6 @@ import java.util.List; ...@@ -26,7 +26,6 @@ import java.util.List;
import de.tud.kom.p2psim.api.analyzer.ConnectivityAnalyzer; import de.tud.kom.p2psim.api.analyzer.ConnectivityAnalyzer;
import de.tud.kom.p2psim.api.analyzer.MessageAnalyzer.Reason; import de.tud.kom.p2psim.api.analyzer.MessageAnalyzer.Reason;
import de.tud.kom.p2psim.api.analyzer.NetlayerAnalyzer; import de.tud.kom.p2psim.api.analyzer.NetlayerAnalyzer;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.api.linklayer.mac.PhyType; import de.tud.kom.p2psim.api.linklayer.mac.PhyType;
import de.tud.kom.p2psim.api.network.NetMessage; import de.tud.kom.p2psim.api.network.NetMessage;
...@@ -42,6 +41,7 @@ import de.tudarmstadt.maki.simonstrator.api.component.core.MonitorComponent.Anal ...@@ -42,6 +41,7 @@ import de.tudarmstadt.maki.simonstrator.api.component.core.MonitorComponent.Anal
import de.tudarmstadt.maki.simonstrator.api.component.network.Bandwidth; import de.tudarmstadt.maki.simonstrator.api.component.network.Bandwidth;
import de.tudarmstadt.maki.simonstrator.api.component.network.NetID; import de.tudarmstadt.maki.simonstrator.api.component.network.NetID;
import de.tudarmstadt.maki.simonstrator.api.component.network.NetInterface; import de.tudarmstadt.maki.simonstrator.api.component.network.NetInterface;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
import de.tudarmstadt.maki.simonstrator.api.component.transport.ConnectivityListener; import de.tudarmstadt.maki.simonstrator.api.component.transport.ConnectivityListener;
/** /**
...@@ -70,7 +70,7 @@ public abstract class AbstractNetLayer implements SimNetworkComponent, ...@@ -70,7 +70,7 @@ public abstract class AbstractNetLayer implements SimNetworkComponent,
private boolean online; private boolean online;
private Position position; private Location position;
Bandwidth currentBandwidth; Bandwidth currentBandwidth;
...@@ -93,7 +93,7 @@ public abstract class AbstractNetLayer implements SimNetworkComponent, ...@@ -93,7 +93,7 @@ public abstract class AbstractNetLayer implements SimNetworkComponent,
* the NetPosition of the network layer * the NetPosition of the network layer
*/ */
public AbstractNetLayer(SimHost host, NetID netId, Bandwidth maxBandwidth, public AbstractNetLayer(SimHost host, NetID netId, Bandwidth maxBandwidth,
Position position, NetMeasurementDB.Host hostMeta) { Location position, NetMeasurementDB.Host hostMeta) {
this.myID = netId; this.myID = netId;
this.msgListeners = new LinkedList<NetMessageListener>(); this.msgListeners = new LinkedList<NetMessageListener>();
this.connListeners = new LinkedList<ConnectivityListener>(); this.connListeners = new LinkedList<ConnectivityListener>();
...@@ -378,7 +378,7 @@ public abstract class AbstractNetLayer implements SimNetworkComponent, ...@@ -378,7 +378,7 @@ public abstract class AbstractNetLayer implements SimNetworkComponent,
* @see de.tud.kom.p2psim.api.api.network.NetLayer#getNetPosition() * @see de.tud.kom.p2psim.api.api.network.NetLayer#getNetPosition()
*/ */
@Override @Override
public Position getNetPosition() { public Location getNetPosition() {
return this.position; return this.position;
} }
......
...@@ -7,7 +7,6 @@ import java.util.List; ...@@ -7,7 +7,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import de.tud.kom.p2psim.api.analyzer.MessageAnalyzer.Reason; import de.tud.kom.p2psim.api.analyzer.MessageAnalyzer.Reason;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.api.network.BandwidthImpl; import de.tud.kom.p2psim.api.network.BandwidthImpl;
import de.tud.kom.p2psim.api.network.FlowBasedNetlayer; import de.tud.kom.p2psim.api.network.FlowBasedNetlayer;
...@@ -22,6 +21,7 @@ import de.tudarmstadt.maki.simonstrator.api.Message; ...@@ -22,6 +21,7 @@ import de.tudarmstadt.maki.simonstrator.api.Message;
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.Monitor.Level;
import de.tudarmstadt.maki.simonstrator.api.component.network.NetID; import de.tudarmstadt.maki.simonstrator.api.component.network.NetID;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
/** /**
* The Class Node. * The Class Node.
...@@ -48,7 +48,7 @@ public class FairshareNode extends AbstractNetLayer implements ...@@ -48,7 +48,7 @@ public class FairshareNode extends AbstractNetLayer implements
* @param geoLoc * @param geoLoc
*/ */
public FairshareNode(SimHost host, FairshareSubnet subnet, NetID netID, public FairshareNode(SimHost host, FairshareSubnet subnet, NetID netID,
BandwidthImpl maxBandwidth, Position position, BandwidthImpl maxBandwidth, Location position,
NetMeasurementDB.Host hostMeta) { NetMeasurementDB.Host hostMeta) {
super(host, netID, maxBandwidth, position, hostMeta); super(host, netID, maxBandwidth, position, hostMeta);
this.subnet = subnet; this.subnet = subnet;
......
...@@ -23,8 +23,6 @@ package de.tud.kom.p2psim.impl.network.gnp; ...@@ -23,8 +23,6 @@ package de.tud.kom.p2psim.impl.network.gnp;
import java.util.Random; import java.util.Random;
import umontreal.iro.lecuyer.probdist.LognormalDist;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.linklayer.mac.PhyType; import de.tud.kom.p2psim.api.linklayer.mac.PhyType;
import de.tud.kom.p2psim.api.network.NetLatencyModel; import de.tud.kom.p2psim.api.network.NetLatencyModel;
import de.tud.kom.p2psim.api.network.NetLayer; import de.tud.kom.p2psim.api.network.NetLayer;
...@@ -35,6 +33,8 @@ import de.tud.kom.p2psim.impl.network.gnp.topology.CountryLookup; ...@@ -35,6 +33,8 @@ import de.tud.kom.p2psim.impl.network.gnp.topology.CountryLookup;
import de.tud.kom.p2psim.impl.network.gnp.topology.PingErLookup; import de.tud.kom.p2psim.impl.network.gnp.topology.PingErLookup;
import de.tudarmstadt.maki.simonstrator.api.Randoms; import de.tudarmstadt.maki.simonstrator.api.Randoms;
import de.tudarmstadt.maki.simonstrator.api.Time; import de.tudarmstadt.maki.simonstrator.api.Time;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
import umontreal.iro.lecuyer.probdist.LognormalDist;
public class GnpLatencyModel implements NetLatencyModel { public class GnpLatencyModel implements NetLatencyModel {
...@@ -71,9 +71,9 @@ public class GnpLatencyModel implements NetLatencyModel { ...@@ -71,9 +71,9 @@ public class GnpLatencyModel implements NetLatencyModel {
double distance = GeoLocationOracle.getGeographicalDistance(sender.getNetID(), receiver.getNetID()); double distance = GeoLocationOracle.getGeographicalDistance(sender.getNetID(), receiver.getNetID());
minRtt = 62 + (0.02 * distance); minRtt = 62 + (0.02 * distance);
} else { } else {
Position senderPos = sender.getNetPosition(); Location senderPos = sender.getNetPosition();
Position receiverPos = receiver.getNetPosition(); Location receiverPos = receiver.getNetPosition();
minRtt = senderPos.getDistance(receiverPos); minRtt = senderPos.distanceTo(receiverPos);
} }
return minRtt; return minRtt;
} }
......
...@@ -23,8 +23,8 @@ package de.tud.kom.p2psim.impl.network.gnp.topology; ...@@ -23,8 +23,8 @@ package de.tud.kom.p2psim.impl.network.gnp.topology;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.impl.topology.PositionVector; import de.tud.kom.p2psim.impl.topology.PositionVector;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
/** /**
* Implementation of NetPosition for Position and distance measurnment on the * Implementation of NetPosition for Position and distance measurnment on the
...@@ -55,7 +55,7 @@ public class GeographicPosition extends PositionVector { ...@@ -55,7 +55,7 @@ public class GeographicPosition extends PositionVector {
/** /**
* @return geographical distance in km * @return geographical distance in km
*/ */
public double getDistance(Position point) { public double distanceTo(Location point) {
double pi = 3.14159265; double pi = 3.14159265;
double radConverter = pi / 180; double radConverter = pi / 180;
double lat1 = latitude * radConverter; double lat1 = latitude * radConverter;
...@@ -68,12 +68,6 @@ public class GeographicPosition extends PositionVector { ...@@ -68,12 +68,6 @@ public class GeographicPosition extends PositionVector {
return 2 * 6378.2 * Math.atan2(Math.sqrt(temp), Math.sqrt(1 - temp)); return 2 * 6378.2 * Math.atan2(Math.sqrt(temp), Math.sqrt(1 - temp));
} }
@Override
public double getAngle(Position target) {
throw new AssertionError(
"getAngle is not defined for this Position-Type");
}
@Override @Override
public int getTransmissionSize() { public int getTransmissionSize() {
return 16; // 2 * double return 16; // 2 * double
......
...@@ -23,7 +23,6 @@ package de.tud.kom.p2psim.impl.network.gnp.topology; ...@@ -23,7 +23,6 @@ package de.tud.kom.p2psim.impl.network.gnp.topology;
import java.util.ArrayList; import java.util.ArrayList;
import de.tud.kom.p2psim.api.common.Position;
import de.tudarmstadt.maki.simonstrator.api.Randoms; import de.tudarmstadt.maki.simonstrator.api.Randoms;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location; import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
...@@ -37,7 +36,7 @@ import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location; ...@@ -37,7 +36,7 @@ import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
* *
*/ */
public class GnpPosition implements Position, Comparable<GnpPosition> { public class GnpPosition implements Location, Comparable<GnpPosition> {
private static final long serialVersionUID = -1103996725403557900L; private static final long serialVersionUID = -1103996725403557900L;
...@@ -165,7 +164,7 @@ public class GnpPosition implements Position, Comparable<GnpPosition> { ...@@ -165,7 +164,7 @@ public class GnpPosition implements Position, Comparable<GnpPosition> {
* @return error * @return error
*/ */
public double getDownhillSimplexError(GnpPosition monitor) { public double getDownhillSimplexError(GnpPosition monitor) {
double calculatedDistance = this.getDistance(monitor); double calculatedDistance = this.distanceTo(monitor);
double measuredDistance = this.getMeasuredRtt(monitor); double measuredDistance = this.getMeasuredRtt(monitor);
if (Double.compare(measuredDistance, Double.NaN) == 0) if (Double.compare(measuredDistance, Double.NaN) == 0)
return 0.0; return 0.0;
...@@ -182,7 +181,7 @@ public class GnpPosition implements Position, Comparable<GnpPosition> { ...@@ -182,7 +181,7 @@ public class GnpPosition implements Position, Comparable<GnpPosition> {
* @return error value * @return error value
*/ */
public double getDirectionalRelativError(GnpPosition monitor) { public double getDirectionalRelativError(GnpPosition monitor) {
double calculatedDistance = this.getDistance(monitor); double calculatedDistance = this.distanceTo(monitor);
double measuredDistance = this.getMeasuredRtt(monitor); double measuredDistance = this.getMeasuredRtt(monitor);
if (Double.compare(measuredDistance, Double.NaN) == 0) if (Double.compare(measuredDistance, Double.NaN) == 0)
return Double.NaN; return Double.NaN;
...@@ -236,7 +235,7 @@ public class GnpPosition implements Position, Comparable<GnpPosition> { ...@@ -236,7 +235,7 @@ public class GnpPosition implements Position, Comparable<GnpPosition> {
/** /**
* @return euclidean distance * @return euclidean distance
*/ */
public double getDistance(Position point) { public double getDistance(Location point) {
GnpPosition coord = (GnpPosition) point; GnpPosition coord = (GnpPosition) point;
double distance = 0.0; double distance = 0.0;
for (int c = 0; c < gnpCoordinates.length; c++) for (int c = 0; c < gnpCoordinates.length; c++)
...@@ -245,18 +244,6 @@ public class GnpPosition implements Position, Comparable<GnpPosition> { ...@@ -245,18 +244,6 @@ public class GnpPosition implements Position, Comparable<GnpPosition> {
return Math.sqrt(distance); return Math.sqrt(distance);
} }
@Override
public double getAngle(Position target) {
throw new AssertionError(
"getAngle is not defined for this Position-Type");
}
@Override
public Position getTarget(double distance, double angle) {
throw new AssertionError(
"getTarget is not defined for this Position-Type");
}
@Override @Override
public int getTransmissionSize() { public int getTransmissionSize() {
return 16; // 2 * double return 16; // 2 * double
...@@ -323,7 +310,7 @@ public class GnpPosition implements Position, Comparable<GnpPosition> { ...@@ -323,7 +310,7 @@ public class GnpPosition implements Position, Comparable<GnpPosition> {
@Override @Override
public double distanceTo(Location dest) { public double distanceTo(Location dest) {
return getDistance((Position) dest); return getDistance(dest);
} }
@Override @Override
......
...@@ -692,7 +692,7 @@ public class HostMap { ...@@ -692,7 +692,7 @@ public class HostMap {
private static double getGeographicalDistance(double latitude1, double longitude1, double latitude2, double longitude2) { private static double getGeographicalDistance(double latitude1, double longitude1, double latitude2, double longitude2) {
GeographicPosition pos1 = new GeographicPosition(longitude1, latitude1); GeographicPosition pos1 = new GeographicPosition(longitude1, latitude1);
GeographicPosition pos2 = new GeographicPosition(longitude2, latitude2); GeographicPosition pos2 = new GeographicPosition(longitude2, latitude2);
return pos1.getDistance(pos2); return pos1.distanceTo(pos2);
} }
/** /**
......
...@@ -23,7 +23,6 @@ package de.tud.kom.p2psim.impl.network.modular; ...@@ -23,7 +23,6 @@ package de.tud.kom.p2psim.impl.network.modular;
import java.util.Collection; import java.util.Collection;
import de.tud.kom.p2psim.api.analyzer.MessageAnalyzer.Reason; import de.tud.kom.p2psim.api.analyzer.MessageAnalyzer.Reason;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.api.network.BandwidthImpl; import de.tud.kom.p2psim.api.network.BandwidthImpl;
import de.tud.kom.p2psim.api.network.NetMessage; import de.tud.kom.p2psim.api.network.NetMessage;
...@@ -54,6 +53,7 @@ import de.tudarmstadt.maki.simonstrator.api.Monitor; ...@@ -54,6 +53,7 @@ import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Monitor.Level; import de.tudarmstadt.maki.simonstrator.api.Monitor.Level;
import de.tudarmstadt.maki.simonstrator.api.component.network.Bandwidth; import de.tudarmstadt.maki.simonstrator.api.component.network.Bandwidth;
import de.tudarmstadt.maki.simonstrator.api.component.network.NetID; import de.tudarmstadt.maki.simonstrator.api.component.network.NetID;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
/** /**
* <p> * <p>
...@@ -113,7 +113,8 @@ public class ModularNetLayer extends AbstractNetLayer { ...@@ -113,7 +113,8 @@ public class ModularNetLayer extends AbstractNetLayer {
* Device-Type of this Host * Device-Type of this Host
*/ */
ModularNetLayer(SimHost host, AbstractModularSubnet subnet, ModularNetLayer(SimHost host, AbstractModularSubnet subnet,
BandwidthImpl maxBW, NetMeasurementDB.Host hostMeta, Position position, BandwidthImpl maxBW, NetMeasurementDB.Host hostMeta,
Location position,
IPv4NetID id) { IPv4NetID id) {
super(host, id, maxBW, position, hostMeta); super(host, id, maxBW, position, hostMeta);
this.subnet = subnet; this.subnet = subnet;
......
...@@ -21,9 +21,9 @@ ...@@ -21,9 +21,9 @@
package de.tud.kom.p2psim.impl.network.modular.st; package de.tud.kom.p2psim.impl.network.modular.st;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB; import de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
/** /**
* This strategy determines an abstract network position of a given host * This strategy determines an abstract network position of a given host
...@@ -43,7 +43,7 @@ public interface PositioningStrategy extends ModNetLayerStrategy { ...@@ -43,7 +43,7 @@ public interface PositioningStrategy extends ModNetLayerStrategy {
* @param hostMeta * @param hostMeta
* @return * @return
*/ */
public Position getPosition( public Location getPosition(
SimHost host, SimHost host,
NetMeasurementDB db, NetMeasurementDB db,
NetMeasurementDB.Host hostMeta); NetMeasurementDB.Host hostMeta);
......
...@@ -30,7 +30,8 @@ public class FootprintLatency implements LatencyStrategy { ...@@ -30,7 +30,8 @@ public class FootprintLatency implements LatencyStrategy {
throw new IllegalArgumentException("FootprintLatency is incompatible with the NetMeasurementDB"); throw new IllegalArgumentException("FootprintLatency is incompatible with the NetMeasurementDB");
} }
double distance = nlSender.getNetPosition().getDistance(nlReceiver.getNetPosition()); double distance = nlSender.getNetPosition()
.distanceTo(nlReceiver.getNetPosition());
return (staticPart + Math.round(geoDistFactor * distance)) return (staticPart + Math.round(geoDistFactor * distance))
* Time.MILLISECOND; * Time.MILLISECOND;
......
...@@ -24,7 +24,6 @@ package de.tud.kom.p2psim.impl.network.modular.st.latency; ...@@ -24,7 +24,6 @@ package de.tud.kom.p2psim.impl.network.modular.st.latency;
import java.util.Random; import java.util.Random;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.network.NetLayer; import de.tud.kom.p2psim.api.network.NetLayer;
import de.tud.kom.p2psim.api.network.NetMessage; import de.tud.kom.p2psim.api.network.NetMessage;
import de.tud.kom.p2psim.impl.network.AbstractNetLayer; import de.tud.kom.p2psim.impl.network.AbstractNetLayer;
...@@ -33,6 +32,7 @@ import de.tud.kom.p2psim.impl.network.modular.st.LatencyStrategy; ...@@ -33,6 +32,7 @@ import de.tud.kom.p2psim.impl.network.modular.st.LatencyStrategy;
import de.tud.kom.p2psim.impl.network.simple.SimpleSubnet; import de.tud.kom.p2psim.impl.network.simple.SimpleSubnet;
import de.tudarmstadt.maki.simonstrator.api.Randoms; import de.tudarmstadt.maki.simonstrator.api.Randoms;
import de.tudarmstadt.maki.simonstrator.api.Time; import de.tudarmstadt.maki.simonstrator.api.Time;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
/** /**
* This model is abstracting the details of the four lower OSI layers (UDP and * This model is abstracting the details of the four lower OSI layers (UDP and
...@@ -85,9 +85,9 @@ public class SimpleLatencyModel implements LatencyStrategy { ...@@ -85,9 +85,9 @@ public class SimpleLatencyModel implements LatencyStrategy {
* @return the distance * @return the distance
*/ */
public double getDistance(NetLayer sender, NetLayer receiver) { public double getDistance(NetLayer sender, NetLayer receiver) {
Position ps = sender.getNetPosition(); Location ps = sender.getNetPosition();
Position pr = receiver.getNetPosition(); Location pr = receiver.getNetPosition();
return ps.getDistance(pr); return ps.distanceTo(pr);
} }
/** /**
......
...@@ -23,12 +23,12 @@ ...@@ -23,12 +23,12 @@
package de.tud.kom.p2psim.impl.network.modular.st.latency; package de.tud.kom.p2psim.impl.network.modular.st.latency;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.network.NetMessage; import de.tud.kom.p2psim.api.network.NetMessage;
import de.tud.kom.p2psim.impl.network.AbstractNetLayer; import de.tud.kom.p2psim.impl.network.AbstractNetLayer;
import de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB; import de.tud.kom.p2psim.impl.network.modular.db.NetMeasurementDB;
import de.tud.kom.p2psim.impl.network.modular.st.LatencyStrategy; import de.tud.kom.p2psim.impl.network.modular.st.LatencyStrategy;
import de.tudarmstadt.maki.simonstrator.api.Time; import de.tudarmstadt.maki.simonstrator.api.Time;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.Location;
public class SimpleStaticLatencyModel implements LatencyStrategy { public class SimpleStaticLatencyModel implements LatencyStrategy {
...@@ -60,10 +60,10 @@ public class SimpleStaticLatencyModel implements LatencyStrategy { ...@@ -60,10 +60,10 @@ public class SimpleStaticLatencyModel implements LatencyStrategy {
*/ */
protected double getDistance(AbstractNetLayer nlSender, AbstractNetLayer nlReceiver){ protected double getDistance(AbstractNetLayer nlSender, AbstractNetLayer nlReceiver){
Position ps = nlSender.getNetPosition(); Location ps = nlSender.getNetPosition();
Position pr = nlReceiver.getNetPosition(); Location pr = nlReceiver.getNetPosition();
return ps.getDistance(pr); return ps.distanceTo(pr);
} }
......
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