ioteer/ttnscripts/lgt92.js

47 lines
1.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

function Decoder(bytes, port) {
return {
// GPS coordinates; signed 32 bits integer, MSB; unit: °
// When power is low (<2.84v), GPS wont be able to get location
// info and GPS feature will be disabled and the location field
// will be filled with 0x0FFFFFFF, 0x0FFFFFFF.
Latitude:
(bytes[0]<<24 | bytes[1]<<16 | bytes[2]<<8 | bytes[3]) / 1000000,
Longitude:
(bytes[4]<<24 | bytes[5]<<16 | bytes[6]<<8 | bytes[7]) / 1000000,
// Alarm status: boolean
ALARM_status: (bytes[8] & 0x40) > 0,
// Battery; 14 bits; unit: V
BatV: ((bytes[8] & 0x3f)<<8 | bytes[9]) / 1000,
// Motion detection mode; 2 bits
MD: {
"0": "Disable",
"1": "Move",
"2": "Collide",
"3": "Custom"
}[bytes[10]>>6],
// LED status for position, uplink and downlink; 1 bit
LON: (bytes[10] & 0x20) ? "ON" : "OFF",
// Firmware version; 5 bits
FW:150+(bytes[10] & 0x1f),
// Roll; signed 16 bits integer, MSB; unit: °
// Sign-extend to 32 bits to support negative values: shift 16 bytes
// too far to the left, followed by sign-propagating right shift
Roll: (bytes[11]<<24>>16 | bytes[12]) / 100,
// Pitch: signed 16 bits integer, MSB, unit: °
Pitch: (bytes[13]<<24>>16 | bytes[14]) / 100,
};
}