Class TelemetryMessage

All Implemented Interfaces:
Serializable, Cloneable, Comparable<AX25Message>, CommentedMessage, SendableMessage

public class TelemetryMessage extends Message implements SendableMessage
This class contains a decoded APRS telemetry message (APRS protocol specification chapter 13).
Author:
Andrew Pavlin, KA2DDO
See Also:
  • Field Details

    • MIC

      public static final int MIC
      Constant representing the decoded representation of the "MIC" sequence "number".
      See Also:
    • 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 Details

    • TelemetryMessage

      public TelemetryMessage()
      Create a TelemetryMessage suitable for transmission to another station.
    • TelemetryMessage

      public TelemetryMessage(byte[] body, int offset, 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 Details

    • paramString

      public 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:
    • getBase91Encoding

      public String getBase91Encoding() throws 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:
      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
    • getBody

      public byte[] getBody(boolean countTransmission, ProtocolFamily protocolId, AX25Frame frame)
      Get an instance of this message, suitable for transmitting.
      Specified by:
      getBody in interface SendableMessage
      Parameters:
      countTransmission - number of times the message has been transmitted.
      protocolId - ProtocolFamily to generate the message in; currently, only APRS is supported.
      frame - AX25Frame into which the message will be placed; the decoded message (as opposed to the byte array encoding) should be stored into the field frame.parsedAX25Msg
      Returns:
      byte array of message, or null if message body cannot be generated in specified protocol, or retransmission count has been exceeded.
      See Also:
    • isEnabled

      public boolean isEnabled()
      Test if message should still be transmitted.
      Specified by:
      isEnabled in interface SendableMessage
      Returns:
      boolean true if message should still be transmitted
    • disableForTransmit

      public void disableForTransmit()
      Specify that message should no longer be transmitted.
      Specified by:
      disableForTransmit in interface SendableMessage