Class PositionlessWeatherReport

java.lang.Object
org.ka2ddo.ax25.AX25Message
org.ka2ddo.aprs.Message
org.ka2ddo.aprs.PositionlessWeatherReport
All Implemented Interfaces:
Serializable, Cloneable, Comparable<AX25Message>, CommentedMessage, SendableMessage

public class PositionlessWeatherReport extends Message implements SendableMessage
This class decodes a Positionless Weather APRS message (APRS protocol specification chapter 12).
Author:
Andrew Pavlin, KA2DDO
See Also:
  • Field Details

    • MDHM

      protected static final String MDHM
      Date format String to parse 8-character date/time strings.
      See Also:
    • softwareType

      public char softwareType
      Code for type of software the sending weather station is using.
    • wsType

      public String wsType
      Weather station hardware type.
  • Constructor Details

    • PositionlessWeatherReport

      public PositionlessWeatherReport(byte[] body, int offset, String tp, AX25Callsign dst, long rcvTimestamp)
      Standard constructor for PositionlessWeatherReport, for decoding from an AX.25 frame (or equivalent).
      Parameters:
      body - byte array of frame body
      offset - starting point in the array (in case of third-party header)
      tp - extracted third-party header String
      dst - destination AX25Callsign from frame
      rcvTimestamp - timestamp at which message was received
    • PositionlessWeatherReport

      public PositionlessWeatherReport(String body, int offset)
      Alternate constructor, used only to decode $PKWDWXI special message from Kenwood TH-D72 HT's built-in TNC when weather data is expected to be imported into the TNC from a local weather station.
      Parameters:
      body - String containing the $PKWDWXI message
      offset - index of first byte after the message header
    • PositionlessWeatherReport

      public PositionlessWeatherReport(long now)
      Alternate constructor, used to create an empty message for population by local weather data.
      Parameters:
      now - time of weather data, in Java milliseconds since Jan 1, 1970 UTC
  • Method Details

    • paramString

      public String paramString()
      Descriptive text about this message, to be included in the toString() method's response.
      Overrides:
      paramString in class Message
      Returns:
      String describing the contents of this message
      See Also:
    • 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 and OPENTRAC are 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
    • isSymbolInferred

      public boolean isSymbolInferred()
      Report whether the non-null APRS symbol reported by this message is explicit or inferred from destination or source callsign. Intended to be overridden by message types which can infer a symbol but can't explicitly specify the symbol.
      Overrides:
      isSymbolInferred in class Message
      Returns:
      boolean true if symbol is inferred
    • getProtocols

      public Set<ProtocolFamily> getProtocols()
      Get the protocol family or families that this message corresponds to, so ports that don't support all protocols will not forward inappropriate packets.
      Overrides:
      getProtocols in class Message
      Returns:
      array of supported ProtocolFamily enums