its.backbone.domain.tms
Class TmsStation

java.lang.Object
  extended byits.backbone.domain.SensorData
      extended byits.backbone.domain.tms.TmsData
          extended byits.backbone.domain.tms.TmsStation
All Implemented Interfaces:
java.io.Serializable

public class TmsStation
extends TmsData

Encapsulates a TMS station in packed format Last change: NSF 3 Feb 98 9:16 am

See Also:
Serialized Form

Field Summary
static int DATA_USABLE
          value for flag indicating data is usable. 0 means it is not usable.
 int flag
          validity flag (1 = good)
 int incidentDetect
          was an incident reported?
static int MAX_LOOPS
          Maximum number of loops which can report
static int MAX_SCAN_COUNT
          Max scan count
static int MAX_VOLUME
          Max 20 second volume
 int nLoops
          number of loops reporting
 int scanCount
          occupancy
 int volume
          number of vehicles counted for all loops in 20 seconds
 
Fields inherited from class its.backbone.domain.tms.TmsData
INCIDENT_CONTINUING, INCIDENT_NONE, INCIDENT_OCCURRED, INCIDENT_TENTATIVE
 
Fields inherited from class its.backbone.domain.SensorData
dataBlock, MASK_EIGHT_BIT, MASK_FIVE_BIT, MASK_FOUR_BIT, MASK_ONE_BIT, MASK_SEVEN_BIT, MASK_SIX_BIT, MASK_THREE_BIT, MASK_TWO_BIT, rawData
 
Constructor Summary
TmsStation(DataBlock dataBlock)
          Constructs a Tmsstation using the 3 bytes of data at offset in dataBlock.
 
Method Summary
 int getFlag()
           
 int getIncidentDetect()
           
 java.lang.String getName()
           
 int getNLoops()
           
 float getOccupancy()
           
 int getPackedSize()
           
 int getRawVolume()
           
 int getScanCount()
           
 TmsTimestamp getTimestamp()
           
 int getVolume()
          return volume in vehicles/hour, average of loops
 boolean isValid()
          Checks to see if data passes constraints.
 java.lang.String[] processSensor(int offset, java.lang.String sensor_id)
          processes an instance of a sensor
protected  void read(int offset)
          reads values for a TmsStation from the 3 bytes of data at offset in dataBlock.
 
Methods inherited from class its.backbone.domain.tms.TmsData
checkOffsetBounds
 
Methods inherited from class its.backbone.domain.SensorData
setRawData
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

incidentDetect

public int incidentDetect
was an incident reported?


nLoops

public int nLoops
number of loops reporting


scanCount

public int scanCount
occupancy


flag

public int flag
validity flag (1 = good)


volume

public int volume
number of vehicles counted for all loops in 20 seconds


DATA_USABLE

public static final int DATA_USABLE
value for flag indicating data is usable. 0 means it is not usable.

See Also:
Constant Field Values

MAX_LOOPS

public static final int MAX_LOOPS
Maximum number of loops which can report

See Also:
Constant Field Values

MAX_SCAN_COUNT

public static final int MAX_SCAN_COUNT
Max scan count

See Also:
Constant Field Values

MAX_VOLUME

public static final int MAX_VOLUME
Max 20 second volume

See Also:
Constant Field Values
Constructor Detail

TmsStation

public TmsStation(DataBlock dataBlock)
           throws java.lang.IllegalArgumentException
Constructs a Tmsstation using the 3 bytes of data at offset in dataBlock.

Parameters:
dataBlock - byte array containing data
Throws:
BadOffsetException - if offset is less than the header size or greater than the data block size
java.lang.IllegalArgumentException
Method Detail

read

protected void read(int offset)
             throws BadOffsetException
reads values for a TmsStation from the 3 bytes of data at offset in dataBlock.

Specified by:
read in class TmsData
Parameters:
offset - offset within dataBlock
Throws:
BadOffsetException - if offset is less than the header size or greater than the data block size

processSensor

public java.lang.String[] processSensor(int offset,
                                        java.lang.String sensor_id)
                                 throws java.lang.IllegalArgumentException,
                                        BadOffsetException
Description copied from class: SensorData
processes an instance of a sensor

Specified by:
processSensor in class SensorData
Parameters:
offset - the offset into the blob
sensor_id - the sensor id
Returns:
array of strings containing variable values of SQL command
Throws:
java.lang.IllegalArgumentException - thrown if bad sensor id
BadOffsetException - thrown if offset is bad

getTimestamp

public TmsTimestamp getTimestamp()
Specified by:
getTimestamp in class TmsData
Returns:
timestamp

getIncidentDetect

public int getIncidentDetect()
Returns:
incidentDetect value (values are enumerated in TmsData).

getNLoops

public int getNLoops()
Returns:
number of loops reporting, this should be 2 to 7

getFlag

public int getFlag()
Returns:
data validity flag, 0 means data not usable, 1 means data usable.

getScanCount

public int getScanCount()
Returns:
number of scans (60 per second for 20 seconds) in which was occupied.

getRawVolume

public int getRawVolume()
Returns:
raw volume, which is a 20-second vehicle count. This should be between 0 and 119.

getOccupancy

public float getOccupancy()
Returns:
occupancy as percent, calculated from scanCount

getVolume

public int getVolume()
return volume in vehicles/hour, average of loops


getPackedSize

public int getPackedSize()
Overrides:
getPackedSize in class SensorData
Returns:
the size of the packed data (3 bytes)

getName

public java.lang.String getName()
Specified by:
getName in class TmsData
Returns:
the printable string "Station"

isValid

public boolean isValid()
Checks to see if data passes constraints. This is an external test performed by TmsStation, it is not sent by the TMS.

Specified by:
isValid in class TmsData
Returns:
true if data is valid, as determined by tests:
  • flag == 1
  • scanCount <= MAX_SCAN_COUNT
  • volume <= MAX_VOLUME
  • nLoops <= MAX_LOOPS