org.ka2ddo.aprs
Class TelemetryMessage

java.lang.Object
  extended by org.ka2ddo.ax25.AX25Message
      extended by org.ka2ddo.aprs.Message
          extended by org.ka2ddo.aprs.TelemetryMessage
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, java.lang.Comparable<AX25Message>, CommentedMessage

public class TelemetryMessage
extends Message

This class contains a decoded APRS telemetry message (APRS protocol specification chapter 13).

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.ka2ddo.ax25.AX25Message
AX25Message.Precedence
 
Field Summary
 float[] analogValues
          A 5-element array of the 5 non-boolean analog values in the telemetry message.
 int bitmask
          A bitmask containing the 8 boolean digits from the telemetry message.
static int MIC
          Constant representing the decoded representation of the "MIC" sequence "number".
 int sequenceNum
          The extracted sequence number of the telemetry data.
 
Fields inherited from class org.ka2ddo.aprs.Message
comment, extensions, msgType, S_PERMANENT, S_PERMANENT_UC, symbolCode, symTableId, USASCII
 
Fields inherited from class org.ka2ddo.ax25.AX25Message
ax25Frame, invalid, ISO_8859_1, originatingCallsign, PERMANENT, rcptTime, thirdParty, timestamp, UTC, UTF8
 
Constructor Summary
TelemetryMessage(byte[] body, int offset, java.lang.String tp, long rcvTimestamp)
          Constructor for a TelemetryMessage from an AX25Frame.
TelemetryMessage(PositionMessage pm, int startPos, int endPos)
          Construct a TelemetryMessage based on Base91 Telemetry data extracted from a PositionMessage's comment, per the proposed extension documented in http://he.fi/doc/aprs-base91-comment-telemetry.txt.
 
Method Summary
 boolean bodyEquals(AX25Message o)
          Compare the contents of the body of the message, reporting if they match.
 java.lang.String getBase91Encoding()
          Encode this telemetry data in the format for base-91 appending to the comment of an APRS PositionReport, per http://he.fi/doc/aprs-base91-comment-telemetry.txt.
 java.lang.String paramString()
          Descriptive text about this message, to be included in the toString() method's response.
 
Methods inherited from class org.ka2ddo.aprs.Message
compareTo, decodeDatestamp, decodeHurricaneParams, decodeTimestamp, decodeWeatherParams, decodeWeatherParams, dup, encodeTimestamp, extractComment, extractComment, extractSymbol, formatBody, getComment, getExtension, getExtensionString, getMsgType, getReadOnlyExtensionMap, getSymbolCode, getSymTableId, hasWeather, inferSymbol, isSymbolInferred, looksLikeLongFormatLatitude, setComment, setSymbolCode, setSymTableId, storeExtension, toString
 
Methods inherited from class org.ka2ddo.ax25.AX25Message
equals, extractSource, getAx25Frame, getFirstDigipeat, getLastDigipeat, getOriginalDestination, getOriginalSource, getOriginatingCallsign, getPrecedence, getRcptTime, getTimestamp, hashCode, hasPosition, hasThisFirstDigi, indexOf, indexOf, isInvalid, onlyDigits, onlyDigits, onlyDigitsOrPeriod, onlyDigitsOrSpace, onlyDigitsPlus, onlyPeriods, setAx25Frame, setInvalid, setOriginatingCallsign, setRcptTime, setTimestamp, split
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

MIC

public static final int MIC
Constant representing the decoded representation of the "MIC" sequence "number".

See Also:
Constant Field Values

sequenceNum

public int sequenceNum
The extracted sequence number of the telemetry data.


analogValues

public float[] analogValues
A 5-element array of the 5 non-boolean analog values in the telemetry message.


bitmask

public int bitmask
A bitmask containing the 8 boolean digits from the telemetry message.

Constructor Detail

TelemetryMessage

public TelemetryMessage(byte[] body,
                        int offset,
                        java.lang.String tp,
                        long rcvTimestamp)
Constructor for a TelemetryMessage from an AX25Frame. The caller is responsible for ensuring the byte array contains a TelemetryMessage before using this class to decode it.

Parameters:
body - byte array containing the message
offset - index into the byte array where the telemetry message text starts
tp - String of third-party routing data (may be null)
rcvTimestamp - time in Java milliseconds since Jan 1 1970 UTC when this message was received

TelemetryMessage

public TelemetryMessage(PositionMessage pm,
                        int startPos,
                        int endPos)
Construct a TelemetryMessage based on Base91 Telemetry data extracted from a PositionMessage's comment, per the proposed extension documented in http://he.fi/doc/aprs-base91-comment-telemetry.txt.

Parameters:
pm - PositionMessage containing the base-91 telemetry data
startPos - index into the PositionMessage's comment where the telemetry data starts (after the '|' character)
endPos - index into the PositionMessage's comment where the telemetry data ends (the closing '|' character)
Method Detail

paramString

public java.lang.String paramString()
Descriptive text about this message, to be included in the toString() method's response. This method may be overridden, and the override may concatenate the results of the superclass's paramString) method with additional text of its own.

Overrides:
paramString in class Message
Returns:
String describing the contents of this message
See Also:
Message.toString(), Message.getComment()

getBase91Encoding

public java.lang.String getBase91Encoding()
                                   throws java.lang.IllegalArgumentException
Encode this telemetry data in the format for base-91 appending to the comment of an APRS PositionReport, per http://he.fi/doc/aprs-base91-comment-telemetry.txt.

Returns:
base-91 encoded telemetry String
Throws:
java.lang.IllegalArgumentException - if any value of telemetry message is out of range to fit in base-91 encoding

bodyEquals

public boolean bodyEquals(AX25Message o)
Compare the contents of the body of the message, reporting if they match.

Overrides:
bodyEquals in class Message
Parameters:
o - another AX25Message to compare against
Returns:
boolean true if the body values are equivalent