Skip to main content

Deployable Jar (Advanced)

An executable Java jar of our P6 encoder/decoder is also available. Manual processing of P6 messages is only recommended for advanced users.

Basic Usage

The basic command line usage of this jar is simple. Running the jar with the --help setting will display some basic information and examples for usage. It outlines the 4 arguments that can be used:

ArgumentInput FormatDescription
--helpDisplays the help information
--dateYYYY-MM-DDCurrent date is the default
--directionMO or MTThe direction of the message. If the message is given the wrong direction you will see ERROR_PAYLOAD_INVALID. MO is default.
--encodeJSON StringThe MO or MT message only, not to include the wrapper message e.g. MO_MESSAGE_ALERT_GENERIC
--decodeHexadecimalOnly the payload content to be decoded (message field within a Lingo message)
--keyHexadecimalThe encryption key

Decoding Example

To decode a payload, simply use the --decode flag with the payload. Optionally include a date and direction if applicable.

java -jar p6.jar --direction MO --date 2024-03-04 --decode 06120000000000000AA53C4000000007E037001F00

When decoded it will be wrapped in a higher level object P6DecodingResponse which includes a status and errors as a result of decoding. The messages field is then populated with the decoded results. The example below shows the MO message for MO_MESSAGE_ALERT_GENERIC as decoded by the command above.

{
"status": true,
"error": [],
"messages": [{
"mo": {
"encrypted": false,
"alertStatus": false,
"powerStatus": false,
"watchStatus": false,
"type": "MO_MESSAGE_ALERT_GENERIC",
"genericAlert": {
"position": {
"standard": {
"at": {
"year": 2024,
"month": 8,
"day": 24,
"hour": 12,
"minute": 6,
"second": 43
},
"timeDelta": 43603,
"dayOfYear": 55,
"latlng": {
"latitude": -90.0,
"longitude": -180.0
},
"altitude": 0,
"course": 0,
"speed": 0.0,
"navigationMode": "NAVIGATION_MODE_2D",
"battery": 98,
"pdop": 0.0,
"temperature": 23
}
},
"eventId": "ALERT_EVENT_BUTTON_ALERT_CANCEL",
"deltaTime": 0,
"at": {
"year": 2024,
"month": 8,
"day": 24,
"hour": 12,
"minute": 6,
"second": 43
}
}
}
}]
}

Encoding Example

To encode a message, use the --encode flag with the optional date and direction flags as required. When encoding, the message must be passed in at the individual message level.

Consider the following example:

java -jar p6.jar --encode "{
"encrypted": false,
"alertStatus": false,
"powerStatus": false,
"watchStatus": false,
"type": "MO_MESSAGE_ALERT_GENERIC",
"genericAlert": {
"position": {
"standard": {
"at": {
"year": 2024,
"month": 8,
"day": 24,
"hour": 12,
"minute": 6,
"second": 43
},
"timeDelta": 43603,
"dayOfYear": 55,
"latlng": {
"latitude": -90.0,
"longitude": -180.0
},
"altitude": 0,
"course": 0,
"speed": 0.0,
"navigationMode": "NAVIGATION_MODE_2D",
"battery": 98,
"pdop": 0.0,
"temperature": 23
}
},
"eventId": "ALERT_EVENT_BUTTON_ALERT_CANCEL",
"deltaTime": 0,
"at": {
"year": 2024,
"month": 8,
"day": 24,
"hour": 12,
"minute": 6,
"second": 43
}
}
}"

This results in the hexadecimal below.

06120000000000000AA53C4000040007E037001F00

Encryption

The jar also has the capability to handle encryption. An encryption key can be provided with the --key flag and will be used in both decoding encrypted messages and encoding json messages.

--key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Encrypt

To encrypt the encoded json, simply add the --key to the arguments with the normal process.

java -jar p6.jar --encode "{
"encrypted": true,
"alertStatus": false,
"powerStatus": true,
"watchStatus": false,
"type": "MO_MESSAGE_DEACTIVATION_NO_FIX",
"alert": {
"type": "EVENT_DEACTIVATION",
"position": {
"no": {
"at": {
"year": 2024,
"month": 8,
"day": 27,
"hour": 18,
"minute": 23,
"second": 40},
"timeDelta": 66220,
"dayOfYear": 58,
"battery": 50,
"temperature": -26
}
}
}
}"
--key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

This will generate the output as usual

A66EEFF7B6F2FDEB63E7C64487F6E882811C7E4FFC80BA

Decrypt

To decrypt it is the same process again, passing in the --key with your request.

java -jar p6.jar --decode a6b55fdc74d0b1cf2f80c4fbe42b701d3edd1d6fbe447fc86cab66e3215e39f4a9162f --key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX