org.ka2ddo.aprs
Class PositionlessWeatherReport

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

public class PositionlessWeatherReport
extends Message
implements SendableMessage

This class decodes a Positionless Weather APRS message (APRS protocol specification chapter 12).

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.ka2ddo.ax25.AX25Message
AX25Message.Precedence
 
Field Summary
protected static java.lang.String MDHM
           
 char softwareType
          Code for type of software the sending weather station is using.
 java.lang.String wsType
          Weather station hardware type.
 
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
PositionlessWeatherReport(byte[] body, int offset, java.lang.String tp, AX25Callsign dst, long rcvTimestamp)
          Standard constructor for PositionlessWeatherReport, for decoding from an AX.25 frame (or equivalent).
PositionlessWeatherReport(long now)
          Alternate constructor, used to create an empty message for population by local weather data.
PositionlessWeatherReport(java.lang.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.
 
Method Summary
 byte[] getBody(boolean countTransmission, byte protocolId, AX25Frame frame)
          Get an instance of this message, suitable for transmitting.
 boolean isEnabled()
          Test if message should still be transmitted.
 boolean isSymbolInferred()
          Report whether the non-null APRS symbol reported by this message is explicit or inferred from destination or source callsign.
 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
bodyEquals, compareTo, decodeDatestamp, decodeHurricaneParams, decodeTimestamp, decodeWeatherParams, decodeWeatherParams, dup, encodeTimestamp, extractComment, extractComment, extractSymbol, formatBody, getComment, getExtension, getExtensionString, getMsgType, getReadOnlyExtensionMap, getSymbolCode, getSymTableId, hasWeather, inferSymbol, 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
 
Methods inherited from interface org.ka2ddo.ax25.SendableMessage
dup
 

Field Detail

MDHM

protected static final java.lang.String MDHM
See Also:
Constant Field Values

softwareType

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


wsType

public java.lang.String wsType
Weather station hardware type.

Constructor Detail

PositionlessWeatherReport

public PositionlessWeatherReport(byte[] body,
                                 int offset,
                                 java.lang.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(java.lang.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 Detail

paramString

public java.lang.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:
Message.toString()

getBody

public byte[] getBody(boolean countTransmission,
                      byte 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 - AX.25 protocol ID to generate the message in, or 0 for default protocol; currently, only NOLVL3 (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:
AX25Frame.parsedAX25Msg

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

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