Package org.ka2ddo.aprs
Class MaidenheadLocatorBeacon
java.lang.Object
org.ka2ddo.ax25.AX25Message
org.ka2ddo.aprs.Message
org.ka2ddo.aprs.PositionMessage
org.ka2ddo.aprs.MaidenheadLocatorBeacon
- All Implemented Interfaces:
Serializable
,Cloneable
,Comparable<AX25Message>
,CommentedMessage
,SendableMessage
This class decodes the (obsolete) Maidenhead Locator Beacon message (APRS protocol specification chapter 6),
although this class is also used to store Status messages (APRS protocol specification chapter 16) when a
Maidenhead prefix is used in the status message.
- Author:
- Andrew Pavlin, KA2DDO
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.ka2ddo.ax25.AX25Message
AX25Message.Precedence
-
Field Summary
Fields inherited from class org.ka2ddo.aprs.PositionMessage
abc, altitude, altitudeUnit, COMPRESSED_LAT_SCALING, CONV_MPH_TO_METERS_PER_SEC, DHM, enabledForTransmit, fLatitude, fLatPrecision, fLongitude, fmtMonitorFreq, HMS, HUNDREDTH_MINUTE_F, isCustom, latitude, LN_BASE1_08, longitude, ONE_DEGREE_F, ONE_MINUTE_F, TEN_MINUTES_F, TENTH_MINUTE_F
Fields inherited from class org.ka2ddo.aprs.Message
appendCR, APRS_AND_OPENTRAC_AND_RAW, APRS_AND_RAW, comment, msgType, S_PERMANENT, S_PERMANENT_UC, symbolCode, symTableId
Fields inherited from class org.ka2ddo.ax25.AX25Message
APRS_AND_OPENTRAC, ax25Frame, extensions, invalid, originatingCallsign, originatingDest, PERMANENT, rcptTime, thirdParty, timestamp, UTC
-
Constructor Summary
ConstructorDescriptionMaidenheadLocatorBeacon
(byte[] body, int offset, String tp, long rcvTimestamp) Decode a Maidenhead locator beacon message from the specified AX.25 frame body.MaidenheadLocatorBeacon
(long now, byte msgType, double latitude, double longitude, String comment) Alternate constructor for making a transmittable MaidenheadLocatorBeacon message (including one that looks like a StatusMessage with Maidenhead location). -
Method Summary
Modifier and TypeMethodDescriptionvoid
Specify that message should no longer be transmitted.static String
encodeMaidenheadIdentifier
(double latitude, double longitude) Convert a lat/lon pair in decimal degrees North/East into a Maidenhead location.byte[]
getBody
(boolean countTransmission, ProtocolFamily protocolId, AX25Frame frame) Get an instance of this message, suitable for transmitting.Get the protocol family or families that this message corresponds to, so ports that don't support all protocols will not forward inappropriate packets.Descriptive text about this message, to be included in the toString() method's response.static boolean
testIfMaidenheadIdentifier
(byte[] body, int offset) Test if the specified message body contains a string that looks like a Maidenhead location identifier.Methods inherited from class org.ka2ddo.aprs.PositionMessage
appendAreaParameters, appendRepeaterParameters, appendSignpostParameters, bodyEquals, createObjectFromThisPosition, decodeDataExtension, decodeLatitude, decodeLongitude, decodeOnlyLatitude, decodeOnlyLongitude, encodeLatitudeCompressed, encodeLatitudePlainText, encodeLongitudeCompressed, encodeLongitudePlainText, extractCompressedLatitude, extractCompressedLongitude, extractLatitude, extractLongitude, getAbc, getAltitude, getAltitudeUnit, getLatitude, getLatitudeAccuracy, getLongitude, hasPosition, isCustom, isEnabled, isShowDate, isUsingCompressedFormat, looksLikeFrequency, looksLikeFrequency, setAbc, setAmbiguity, setCustom, setLatitude, setLocation, setLongitude, setShowDate, testIfValidCompressedLocation
Methods inherited from class org.ka2ddo.aprs.Message
compareTo, decodeDatestamp, decodeHurricaneParams, decodeTimestamp, decodeWeatherParams, decodeWeatherParams, dup, encodeTimestamp, extractComment, extractComment, extractSymbol, formatBody, getComment, getExtensionString, getMsgType, getPrecedence, getSymbolCode, getSymTableId, hasWeather, inferSymbol, isAppendCR, isSymbolInferred, looksLikeLongFormatLatitude, setAppendCR, setComment, setSymbolCode, setSymTableId, toString
Methods inherited from class org.ka2ddo.ax25.AX25Message
equals, extractSource, getAx25Frame, getExtension, getFirstDigipeat, getLastDigipeat, getNthDigipeat, getOriginalDestination, getOriginalSource, getOriginatingCallsign, getOriginatingDest, getRcptTime, getReadOnlyExtensionMap, getTimestamp, hashCode, hasThisFirstDigi, indexOf, indexOf, isDirect, isInvalid, isRf, onlyDigits, onlyDigits, onlyDigitsOrMinus, onlyDigitsOrPeriod, onlyDigitsOrSpace, onlyDigitsPlus, onlyPeriods, setAx25Frame, setInvalid, setOriginatingCallsign, setRcptTime, setTimestamp, split, storeExtension
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.ka2ddo.ax25.SendableMessage
dup, isEnabled
-
Constructor Details
-
MaidenheadLocatorBeacon
Decode a Maidenhead locator beacon message from the specified AX.25 frame body.- Parameters:
body
- byte array of frame bodyoffset
- zero-based index into array where the message starts (after any third-party data)tp
- String of third-party header, or null if not routed by another networkrcvTimestamp
- Unix time in milliseconds since midnight 1 January 1970 UTC when message was received
-
MaidenheadLocatorBeacon
public MaidenheadLocatorBeacon(long now, byte msgType, double latitude, double longitude, String comment) Alternate constructor for making a transmittable MaidenheadLocatorBeacon message (including one that looks like a StatusMessage with Maidenhead location).- Parameters:
now
- current time in Java milliseconds since midnight Jan 1 1970 UTCmsgType
- APRS message type character (either '[' or '>')latitude
- latitude in fractional degrees Northlongitude
- longitude in fractional degrees Eastcomment
- free-text comment String- See Also:
-
-
Method Details
-
testIfMaidenheadIdentifier
public static boolean testIfMaidenheadIdentifier(byte[] body, int offset) Test if the specified message body contains a string that looks like a Maidenhead location identifier.- Parameters:
body
- byte array presumably containing an ASCII APRS messageoffset
- position in the byte array where a Maidenhead identifier might start- Returns:
- boolean true if there is a Maidenhead identifier in the body at the specified offset
-
encodeMaidenheadIdentifier
Convert a lat/lon pair in decimal degrees North/East into a Maidenhead location.- Parameters:
latitude
- latitude in decimal degrees Northlongitude
- longitude in decimal degrees East- Returns:
- 6 character Maidenhead locator
-
getBody
Get an instance of this message, suitable for transmitting.- Specified by:
getBody
in interfaceSendableMessage
- Parameters:
countTransmission
- number of times the message has been transmitted.protocolId
- ProtocolFamily to generate the message inframe
- 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:
-
paramString
Descriptive text about this message, to be included in the toString() method's response.- Overrides:
paramString
in classPositionMessage
- Returns:
- String describing the contents of this message
- See Also:
-
disableForTransmit
public void disableForTransmit()Specify that message should no longer be transmitted.- Specified by:
disableForTransmit
in interfaceSendableMessage
-
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 classMessage
- Returns:
- array of supported ProtocolFamily enums
-