jist.swans.field
Class Field

java.lang.Object
  extended by jist.swans.field.Field
All Implemented Interfaces:
JistAPI.Proxiable, JistAPI.Timeless, FieldInterface

public class Field
extends java.lang.Object
implements FieldInterface

An abstract parent of Field implementations, which contains the common code.

Since:
SWANS1.0
Version:
$Id: Field.java,v 1.57 2004/04/06 16:07:47 barr Exp $
Author:
Rimon Barr <barr+jist@cs.cornell.edu>

Nested Class Summary
static interface Field.ConnectivityVisitor
          Connectivity visitor interface.
static class Field.RadioData
          Radio information stored by the Field entity.
 
Field Summary
protected  Fading fading
          Fading model.
protected  double limit
          Propagation limit (in dBm).
static org.apache.log4j.Logger logField
          logger for field events.
protected  Mobility mobility
          Mobility model.
protected  PathLoss pathloss
          Pathloss model.
protected  Field.RadioData[] radios
          Array of radios on this field.
protected  FieldInterface self
          Self-referencing field entity.
protected  Spatial spatial
          Spatial data structure.
private  Spatial.SpatialTransmitVisitor transmitVisitor
          Transmission visitor object.
 
Constructor Summary
Field(Location bounds)
          Initialize new, empty field with default fading (FadingNone) and pathloss (PathLossFreeSpace) models, and default propagation limits.
Field(Location bounds, boolean wrap)
          Initialize new, empty field with default fading (FadingNone) and pathloss (PathLossFreeSpace) models, and default propagation limits, possibly with wrapped edges.
Field(Spatial spatial, Fading fading, PathLoss pathloss, Mobility mobility, double propagationLimit)
          Initialize new, empty field with given fading and pathloss models, using default propagation limits.
 
Method Summary
 void addRadio(RadioInfo info, RadioInterface entity, Location loc)
          Add a radio onto the field.
 double computeAvgConnectivity(boolean sense)
          Compute field connectivity.
 double computeDensity()
          Compute field density.
 void delRadio(java.lang.Integer id)
          Remove a radio from the field.
 FieldInterface getProxy()
          Return the proxy entity of this field.
 Field.RadioData getRadioData(java.lang.Integer id)
          Return radio properties.
 void moveRadio(java.lang.Integer id, Location loc)
          Move radio to different location on field.
 void moveRadioOff(java.lang.Integer id, Location delta)
          Move radio to different relative location on field.
 void setFading(Fading fading)
          Set field fading model.
 void setMobility(Mobility mobility)
          Set mobility model.
 void setPathLoss(PathLoss pathloss)
          Set field pathloss model.
 void setPropagationLimit(double limit)
          Set signal propagation threshold.
 void startMobility(java.lang.Integer id)
          Start mobility; schedule first mobility event.
 void transmit(RadioInfo srcInfo, Message msg, long duration)
          Transmit physical-layer message.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logField

public static final org.apache.log4j.Logger logField
logger for field events.


limit

protected double limit
Propagation limit (in dBm). This is the signal strength threshold.


pathloss

protected PathLoss pathloss
Pathloss model.


fading

protected Fading fading
Fading model.


mobility

protected Mobility mobility
Mobility model.


spatial

protected Spatial spatial
Spatial data structure.


self

protected FieldInterface self
Self-referencing field entity.


radios

protected Field.RadioData[] radios
Array of radios on this field.


transmitVisitor

private Spatial.SpatialTransmitVisitor transmitVisitor
Transmission visitor object.

Constructor Detail

Field

public Field(Location bounds)
Initialize new, empty field with default fading (FadingNone) and pathloss (PathLossFreeSpace) models, and default propagation limits.

Parameters:
bounds - spatial limits of field

Field

public Field(Location bounds,
             boolean wrap)
Initialize new, empty field with default fading (FadingNone) and pathloss (PathLossFreeSpace) models, and default propagation limits, possibly with wrapped edges.

Parameters:
bounds - spatial limits of field
wrap - whether to wrap field edges

Field

public Field(Spatial spatial,
             Fading fading,
             PathLoss pathloss,
             Mobility mobility,
             double propagationLimit)
Initialize new, empty field with given fading and pathloss models, using default propagation limits.

Parameters:
spatial - binning model
fading - fading model
pathloss - pathloss model
mobility - mobility model
propagationLimit - minimum signal threshold (in dBm)
Method Detail

setFading

public void setFading(Fading fading)
Set field fading model.

Parameters:
fading - fading model

setPathLoss

public void setPathLoss(PathLoss pathloss)
Set field pathloss model.

Parameters:
pathloss - pathloss model

setMobility

public void setMobility(Mobility mobility)
Set mobility model.

Parameters:
mobility - mobility model

setPropagationLimit

public void setPropagationLimit(double limit)
Set signal propagation threshold.

Parameters:
limit - minimum signal threshold (in dBm)

getProxy

public FieldInterface getProxy()
Return the proxy entity of this field.

Returns:
proxy entity of this field

addRadio

public void addRadio(RadioInfo info,
                     RadioInterface entity,
                     Location loc)
Add a radio onto the field.

Parameters:
info - radio properties (includes radio identifier)
entity - radio upcall entity reference
loc - radio location

delRadio

public void delRadio(java.lang.Integer id)
Remove a radio from the field.

Parameters:
id - radio identifier

getRadioData

public Field.RadioData getRadioData(java.lang.Integer id)
Return radio properties.

Parameters:
id - radio identifier
Returns:
radio properties

moveRadio

public void moveRadio(java.lang.Integer id,
                      Location loc)
Move radio to different location on field.

Specified by:
moveRadio in interface FieldInterface
Parameters:
id - unique radio identifier
loc - new radio coordinates

moveRadioOff

public void moveRadioOff(java.lang.Integer id,
                         Location delta)
Move radio to different relative location on field.

Specified by:
moveRadioOff in interface FieldInterface
Parameters:
id - unique radio identifier
delta - radio offset coordinates

startMobility

public void startMobility(java.lang.Integer id)
Start mobility; schedule first mobility event.

Parameters:
id - radio identifier

transmit

public void transmit(RadioInfo srcInfo,
                     Message msg,
                     long duration)
Transmit physical-layer message. Called from radio entity.

Specified by:
transmit in interface FieldInterface
Parameters:
srcInfo - source radio information
msg - physical layer packet
duration - transmission duration

computeDensity

public double computeDensity()
Compute field density.

Returns:
field node density

computeAvgConnectivity

public double computeAvgConnectivity(boolean sense)
Compute field connectivity.

Parameters:
sense - whether to use radio sensing or reception signal strength
Returns:
field connectivity