removed unused ipdistributor code: was previously used to assign IP addresses to simulated motes,
a decision better made by Contiki
This commit is contained in:
parent
8947c7a3bb
commit
947f3322ba
@ -1,5 +1,4 @@
|
||||
se.sics.cooja.GUI.MOTETYPES = se.sics.cooja.motes.DisturberMoteType se.sics.cooja.contikimote.ContikiMoteType se.sics.cooja.mspmote.ESBMoteType se.sics.cooja.mspmote.SkyMoteType
|
||||
se.sics.cooja.GUI.PLUGINS = se.sics.cooja.plugins.Visualizer se.sics.cooja.plugins.LogListener se.sics.cooja.plugins.MoteInformation se.sics.cooja.plugins.MoteInterfaceViewer se.sics.cooja.plugins.VariableWatcher se.sics.cooja.plugins.EventListener se.sics.cooja.plugins.RadioLogger se.sics.cooja.mspmote.plugins.MspCodeWatcher se.sics.cooja.mspmote.plugins.MspStackWatcher se.sics.cooja.mspmote.plugins.MspCycleWatcher
|
||||
se.sics.cooja.GUI.IP_DISTRIBUTORS = se.sics.cooja.ipdistributors.RandomIPDistributor se.sics.cooja.ipdistributors.SpatialIPDistributor se.sics.cooja.ipdistributors.IdIPDistributor
|
||||
se.sics.cooja.GUI.POSITIONERS = se.sics.cooja.positioners.RandomPositioner se.sics.cooja.positioners.LinearPositioner se.sics.cooja.positioners.EllipsePositioner se.sics.cooja.positioners.ManualPositioner
|
||||
se.sics.cooja.GUI.RADIOMEDIUMS = se.sics.cooja.radiomediums.UDGM se.sics.cooja.radiomediums.UDGMConstantLoss se.sics.cooja.radiomediums.DirectedGraphMedium se.sics.mrm.MRM se.sics.cooja.radiomediums.SilentRadioMedium
|
||||
|
@ -4,6 +4,5 @@ se.sics.cooja.contikimote.ContikiMoteType.MOTE_INTERFACES = se.sics.cooja.interf
|
||||
se.sics.cooja.contikimote.ContikiMoteType.C_SOURCES =
|
||||
se.sics.cooja.GUI.MOTETYPES = se.sics.cooja.motes.ImportAppMoteType se.sics.cooja.motes.DisturberMoteType se.sics.cooja.contikimote.ContikiMoteType
|
||||
se.sics.cooja.GUI.PLUGINS = se.sics.cooja.plugins.Visualizer se.sics.cooja.plugins.LogListener se.sics.cooja.plugins.TimeLine se.sics.cooja.plugins.MoteInformation se.sics.cooja.plugins.MoteInterfaceViewer se.sics.cooja.plugins.VariableWatcher se.sics.cooja.plugins.EventListener se.sics.cooja.plugins.RadioLogger se.sics.cooja.plugins.ScriptRunner se.sics.cooja.plugins.Notes se.sics.cooja.plugins.BufferListener
|
||||
se.sics.cooja.GUI.IP_DISTRIBUTORS = se.sics.cooja.ipdistributors.RandomIPDistributor se.sics.cooja.ipdistributors.SpatialIPDistributor se.sics.cooja.ipdistributors.IdIPDistributor
|
||||
se.sics.cooja.GUI.POSITIONERS = se.sics.cooja.positioners.RandomPositioner se.sics.cooja.positioners.LinearPositioner se.sics.cooja.positioners.EllipsePositioner se.sics.cooja.positioners.ManualPositioner
|
||||
se.sics.cooja.GUI.RADIOMEDIUMS = se.sics.cooja.radiomediums.UDGM se.sics.cooja.radiomediums.UDGMConstantLoss se.sics.cooja.radiomediums.DirectedGraphMedium se.sics.cooja.radiomediums.SilentRadioMedium
|
||||
|
@ -1,76 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006, Swedish Institute of Computer Science. All rights
|
||||
* reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer. 2. Redistributions in
|
||||
* binary form must reproduce the above copyright notice, this list of
|
||||
* conditions and the following disclaimer in the documentation and/or other
|
||||
* materials provided with the distribution. 3. Neither the name of the
|
||||
* Institute nor the names of its contributors may be used to endorse or promote
|
||||
* products derived from this software without specific prior written
|
||||
* permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* $Id: IPDistributor.java,v 1.2 2007/01/10 14:57:42 fros4943 Exp $
|
||||
*/
|
||||
|
||||
package se.sics.cooja;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.util.Vector;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
/**
|
||||
* A IP distributor is used for determining IP addresses of newly created motes.
|
||||
*
|
||||
* @see se.sics.cooja.Positioner
|
||||
* @author Fredrik Osterlind
|
||||
*/
|
||||
public abstract class IPDistributor {
|
||||
private static Logger logger = Logger.getLogger(IPDistributor.class);
|
||||
|
||||
/**
|
||||
* This method creates an instance of the given class with the given vector as
|
||||
* constructor argument. Instead of calling the constructors directly this
|
||||
* method may be used.
|
||||
*
|
||||
* @param ipDistClass
|
||||
* Class
|
||||
* @param newMotes
|
||||
* All motes that later should be assigned IP numbers
|
||||
* @return IP distributor instance
|
||||
*/
|
||||
public static final IPDistributor generateIPDistributor(
|
||||
Class<? extends IPDistributor> ipDistClass, Vector<Mote> newMotes) {
|
||||
try {
|
||||
// Generating IP distributor
|
||||
Constructor constr = ipDistClass
|
||||
.getConstructor(new Class[] { Vector.class });
|
||||
return (IPDistributor) constr.newInstance(new Object[] { newMotes });
|
||||
} catch (Exception e) {
|
||||
logger.fatal("Exception when creating " + ipDistClass + ": " + e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the next mote IP address.
|
||||
*
|
||||
* @return IP Address
|
||||
*/
|
||||
public abstract String getNextIPAddress();
|
||||
|
||||
}
|
@ -31,16 +31,45 @@
|
||||
|
||||
package se.sics.cooja.dialogs;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.beans.*;
|
||||
import java.text.*;
|
||||
import java.util.*;
|
||||
import javax.swing.*;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Component;
|
||||
import java.awt.Container;
|
||||
import java.awt.Dialog;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Frame;
|
||||
import java.awt.Window;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.FocusEvent;
|
||||
import java.awt.event.FocusListener;
|
||||
import java.beans.PropertyChangeEvent;
|
||||
import java.beans.PropertyChangeListener;
|
||||
import java.text.NumberFormat;
|
||||
import java.text.ParseException;
|
||||
import java.util.Vector;
|
||||
|
||||
import javax.swing.BorderFactory;
|
||||
import javax.swing.Box;
|
||||
import javax.swing.BoxLayout;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JComboBox;
|
||||
import javax.swing.JDialog;
|
||||
import javax.swing.JFormattedTextField;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import se.sics.cooja.*;
|
||||
import se.sics.cooja.interfaces.*;
|
||||
import se.sics.cooja.GUI;
|
||||
import se.sics.cooja.Mote;
|
||||
import se.sics.cooja.MoteType;
|
||||
import se.sics.cooja.Positioner;
|
||||
import se.sics.cooja.Simulation;
|
||||
import se.sics.cooja.interfaces.MoteID;
|
||||
import se.sics.cooja.interfaces.Position;
|
||||
|
||||
/**
|
||||
* A dialog for adding motes.
|
||||
@ -66,7 +95,7 @@ public class AddMoteDialog extends JDialog {
|
||||
|
||||
private JFormattedTextField numberOfMotesField, startX, endX, startY, endY,
|
||||
startZ, endZ;
|
||||
private JComboBox positionDistributionBox /*, ipDistributionBox*/;
|
||||
private JComboBox positionDistributionBox;
|
||||
|
||||
|
||||
/**
|
||||
@ -176,36 +205,6 @@ public class AddMoteDialog extends JDialog {
|
||||
mainPane.add(smallPane);
|
||||
mainPane.add(Box.createRigidArea(new Dimension(0, 5)));
|
||||
|
||||
// IP address distribution
|
||||
/*smallPane = new JPanel();
|
||||
smallPane.setAlignmentX(Component.LEFT_ALIGNMENT);
|
||||
smallPane.setLayout(new BoxLayout(smallPane, BoxLayout.X_AXIS));
|
||||
label = new JLabel("IP Addressing");
|
||||
label.setPreferredSize(new Dimension(LABEL_WIDTH, LABEL_HEIGHT));
|
||||
|
||||
Vector<Class<? extends IPDistributor>> ipDistributors = simulation.getGUI()
|
||||
.getRegisteredIPDistributors();
|
||||
String[] ipDistributions = new String[ipDistributors.size()];
|
||||
for (int i = 0; i < ipDistributions.length; i++) {
|
||||
ipDistributions[i] = GUI.getDescriptionOf(ipDistributors.get(i));
|
||||
}
|
||||
|
||||
comboBox = new JComboBox(ipDistributions);
|
||||
|
||||
comboBox.setSelectedIndex(0);
|
||||
comboBox.addActionListener(myEventHandler);
|
||||
comboBox.addFocusListener(myEventHandler);
|
||||
ipDistributionBox = comboBox;
|
||||
label.setLabelFor(comboBox);
|
||||
|
||||
smallPane.add(label);
|
||||
smallPane.add(Box.createHorizontalStrut(10));
|
||||
smallPane.add(comboBox);
|
||||
|
||||
mainPane.add(smallPane);
|
||||
mainPane.add(Box.createRigidArea(new Dimension(0, 5)));
|
||||
*/
|
||||
|
||||
// Position distribution
|
||||
smallPane = new JPanel();
|
||||
smallPane.setAlignmentX(Component.LEFT_ALIGNMENT);
|
||||
@ -504,7 +503,7 @@ public class AddMoteDialog extends JDialog {
|
||||
}
|
||||
}
|
||||
|
||||
/* Set unique mote id's for all new motes
|
||||
/* Set unique mote id's for all new motes
|
||||
* TODO ID should be provided differently; not rely on the unsafe MoteID interface */
|
||||
int nextMoteID = 1;
|
||||
for (Mote m: simulation.getMotes()) {
|
||||
@ -522,33 +521,6 @@ public class AddMoteDialog extends JDialog {
|
||||
}
|
||||
}
|
||||
|
||||
// IP address new motes
|
||||
/*Class<? extends IPDistributor> ipDistClass = null;
|
||||
for (Class<? extends IPDistributor> ipDistributor : simulation.getGUI()
|
||||
.getRegisteredIPDistributors()) {
|
||||
if (GUI.getDescriptionOf(ipDistributor).equals(
|
||||
ipDistributionBox.getSelectedItem())) {
|
||||
ipDistClass = ipDistributor;
|
||||
}
|
||||
}
|
||||
|
||||
IPDistributor ipDistributor = IPDistributor.generateIPDistributor(
|
||||
ipDistClass, newMotes);
|
||||
|
||||
if (ipDistributor == null) {
|
||||
logger.fatal("Could not create IP distributor");
|
||||
dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < newMotes.size(); i++) {
|
||||
String newIPString = ipDistributor.getNextIPAddress();
|
||||
if (newMotes.get(i).getInterfaces().getIPAddress() != null) {
|
||||
newMotes.get(i).getInterfaces().getIPAddress().setIPString(
|
||||
newIPString);
|
||||
}
|
||||
}*/
|
||||
|
||||
dispose();
|
||||
} catch (OutOfMemoryError e2) {
|
||||
newMotes = null;
|
||||
|
@ -1,74 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006, Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: IdIPDistributor.java,v 1.2 2009/09/17 13:20:03 fros4943 Exp $
|
||||
*/
|
||||
|
||||
package se.sics.cooja.ipdistributors;
|
||||
import java.util.Vector;
|
||||
import se.sics.cooja.*;
|
||||
|
||||
/**
|
||||
* Generates IP addresses on the form 10.[id/256 mod 256*256].[id mod 256].1.
|
||||
*
|
||||
* Observe!
|
||||
* - ID must be set before this is called (otherwise IP=0.0.0.0).
|
||||
* - Only supports 256*256 motes, (IPs will wrap if above).
|
||||
*
|
||||
* @author Fredrik Osterlind
|
||||
*/
|
||||
@ClassDescription("From ID (10.id.id.1)")
|
||||
public class IdIPDistributor extends IPDistributor {
|
||||
private Vector<String> generatedIPAddresses;
|
||||
|
||||
/**
|
||||
* Creates a Id IP distributor.
|
||||
* @param newMotes All motes which later will be assigned IP numbers.
|
||||
*/
|
||||
public IdIPDistributor(Vector<Mote> newMotes) {
|
||||
generatedIPAddresses = new Vector<String>();
|
||||
|
||||
for (int i=0; i < newMotes.size(); i++) {
|
||||
int moteId = newMotes.get(i).getID();
|
||||
generatedIPAddresses.add("10." +
|
||||
(moteId / 256 % (256*256))
|
||||
+ "." +
|
||||
(moteId % 256)
|
||||
+ ".1");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public String getNextIPAddress() {
|
||||
if (generatedIPAddresses.size() > 0)
|
||||
return generatedIPAddresses.remove(0);
|
||||
else
|
||||
return "0.0.0.0";
|
||||
}
|
||||
|
||||
}
|
@ -1,59 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006, Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: RandomIPDistributor.java,v 1.2 2009/02/18 12:07:19 fros4943 Exp $
|
||||
*/
|
||||
|
||||
package se.sics.cooja.ipdistributors;
|
||||
import java.util.Random;
|
||||
import java.util.Vector;
|
||||
import se.sics.cooja.*;
|
||||
|
||||
/**
|
||||
* Generates IP addresses randomly on the form 10.10.[1-20].[1-20].
|
||||
* Nothing prevents several motes from getting the same IP number.
|
||||
*
|
||||
* @author Fredrik Osterlind
|
||||
*/
|
||||
@ClassDescription("Random (10.10.?.?)")
|
||||
public class RandomIPDistributor extends IPDistributor {
|
||||
|
||||
private Random random = new Random(); /* Do not use main random generator for setup */
|
||||
|
||||
/**
|
||||
* Creates a random IP distributor.
|
||||
* @param newMotes All motes which later will be assigned IP numbers.
|
||||
*/
|
||||
public RandomIPDistributor(Vector<Mote> newMotes) {
|
||||
}
|
||||
|
||||
public String getNextIPAddress() {
|
||||
return "" + 10 + "." + 10 + "." + (1+random.nextInt(20)) + "." + (1+random.nextInt(20));
|
||||
}
|
||||
|
||||
}
|
@ -1,106 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006, Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: SpatialIPDistributor.java,v 1.1 2006/08/21 12:13:07 fros4943 Exp $
|
||||
*/
|
||||
|
||||
package se.sics.cooja.ipdistributors;
|
||||
import java.util.Vector;
|
||||
import se.sics.cooja.*;
|
||||
|
||||
/**
|
||||
* Generates spatial IP addresses on the form 10.[z-coord].[y-coord].[x-coord].
|
||||
* The smallest coordinate in each interval will be mapped onto address 1,
|
||||
* and the biggest coordinate onto address 200.
|
||||
* Nothing prevents several motes from getting the same IP number.
|
||||
*
|
||||
* @author Fredrik Osterlind
|
||||
*/
|
||||
@ClassDescription("Spatial (10.x.y.z)")
|
||||
public class SpatialIPDistributor extends IPDistributor {
|
||||
private double lowestX, biggestX, lowestY, biggestY, lowestZ, biggestZ;
|
||||
private Vector<String> generatedIPAddresses;
|
||||
|
||||
/**
|
||||
* Creates a random IP distributor.
|
||||
* @param newMotes All motes which later will be assigned IP numbers.
|
||||
*/
|
||||
public SpatialIPDistributor(Vector<Mote> newMotes) {
|
||||
lowestX = newMotes.get(0).getInterfaces().getPosition().getXCoordinate();
|
||||
biggestX = newMotes.get(0).getInterfaces().getPosition().getXCoordinate();
|
||||
lowestY = newMotes.get(0).getInterfaces().getPosition().getYCoordinate();
|
||||
biggestY = newMotes.get(0).getInterfaces().getPosition().getYCoordinate();
|
||||
lowestZ = newMotes.get(0).getInterfaces().getPosition().getZCoordinate();
|
||||
biggestZ = newMotes.get(0).getInterfaces().getPosition().getZCoordinate();
|
||||
|
||||
for (int i=0; i < newMotes.size(); i++) {
|
||||
if (newMotes.get(i).getInterfaces().getPosition().getXCoordinate() < lowestX)
|
||||
lowestX = newMotes.get(i).getInterfaces().getPosition().getXCoordinate();
|
||||
if (newMotes.get(i).getInterfaces().getPosition().getXCoordinate() > biggestX)
|
||||
biggestX = newMotes.get(i).getInterfaces().getPosition().getXCoordinate();
|
||||
|
||||
if (newMotes.get(i).getInterfaces().getPosition().getYCoordinate() < lowestY)
|
||||
lowestY = newMotes.get(i).getInterfaces().getPosition().getYCoordinate();
|
||||
if (newMotes.get(i).getInterfaces().getPosition().getYCoordinate() > biggestY)
|
||||
biggestY = newMotes.get(i).getInterfaces().getPosition().getYCoordinate();
|
||||
|
||||
if (newMotes.get(i).getInterfaces().getPosition().getZCoordinate() < lowestZ)
|
||||
lowestZ = newMotes.get(i).getInterfaces().getPosition().getZCoordinate();
|
||||
if (newMotes.get(i).getInterfaces().getPosition().getZCoordinate() > biggestZ)
|
||||
biggestZ = newMotes.get(i).getInterfaces().getPosition().getZCoordinate();
|
||||
}
|
||||
|
||||
generatedIPAddresses = new Vector<String>();
|
||||
for (int i=0; i < newMotes.size(); i++) {
|
||||
String ipAddress = "10.";
|
||||
int partIP;
|
||||
|
||||
// Z coord
|
||||
partIP = (int) (1 + 199*(newMotes.get(i).getInterfaces().getPosition().getZCoordinate() - lowestZ) / (biggestZ - lowestZ));
|
||||
ipAddress = ipAddress.concat(partIP + ".");
|
||||
|
||||
// Y coord
|
||||
partIP = (int) (1 + 199*(newMotes.get(i).getInterfaces().getPosition().getYCoordinate() - lowestY) / (biggestY - lowestY));
|
||||
ipAddress = ipAddress.concat(partIP + ".");
|
||||
|
||||
// X coord
|
||||
partIP = (int) (1 + 199*(newMotes.get(i).getInterfaces().getPosition().getXCoordinate() - lowestX) / (biggestX - lowestX));
|
||||
ipAddress = ipAddress.concat(partIP + "");
|
||||
|
||||
generatedIPAddresses.add(ipAddress);
|
||||
}
|
||||
}
|
||||
|
||||
public String getNextIPAddress() {
|
||||
if (generatedIPAddresses.size() > 0)
|
||||
return generatedIPAddresses.remove(0);
|
||||
else
|
||||
return "0.0.0.0";
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user