Tobias Brunner
dace837f70
All checks were successful
continuous-integration/drone/push Build is passing
46 lines
1.1 KiB
JavaScript
46 lines
1.1 KiB
JavaScript
function Decoder(bytes, port) {
|
|
// Decode an uplink message from a buffer
|
|
// (array) of bytes to an object of fields.
|
|
var alarm=(bytes[6] & 0x40)?true:false; //Alarm status
|
|
value=((bytes[6] & 0x3f) <<8) | bytes[7];
|
|
var batV=value/1000; //Battery,units:Volts
|
|
value=bytes[8]<<8 | bytes[9];
|
|
if(bytes[8] & 0x80)
|
|
{
|
|
value |=0xFFFF0000;
|
|
}
|
|
var roll=value/100; //roll,units: °
|
|
value=bytes[10]<<8 | bytes[11];
|
|
if(bytes[10] & 0x80)
|
|
{
|
|
value |=0xFFFF0000;
|
|
}
|
|
var pitch=value/100; //pitch,units: °
|
|
var json={
|
|
roll:roll,
|
|
pitch:pitch,
|
|
batV:batV,
|
|
alarm:alarm
|
|
};
|
|
var value=bytes[0]<<16 | bytes[1]<<8 | bytes[2];
|
|
if(bytes[0] & 0x80)
|
|
{
|
|
value |=0xFFFFFF000000;
|
|
}
|
|
var value2=bytes[3]<<16 | bytes[4]<<8 | bytes[5];
|
|
if(bytes[3] & 0x80)
|
|
{
|
|
value2 |=0xFFFFFF000000;
|
|
}
|
|
if (value == 0x0FFFFF && value2 == 0x0FFFFF)
|
|
{
|
|
//gps disabled (low battery)
|
|
} else if (value === 0 && value2 === 0) {
|
|
//gps no position yet
|
|
} else {
|
|
json.latitude=value/10000; //gps latitude,units: °
|
|
json.longitude=value2/10000; //gps longitude,units: °
|
|
}
|
|
return json;
|
|
}
|