diff --git a/nodered/decode_locally_referenced_packet/decode_locally_referenced_packet.html b/nodered/decode_locally_referenced_packet/decode_locally_referenced_packet.html new file mode 100644 index 0000000000000000000000000000000000000000..313c074e7aa2546709524bc5c4f28bf30445e60e --- /dev/null +++ b/nodered/decode_locally_referenced_packet/decode_locally_referenced_packet.html @@ -0,0 +1,26 @@ +<script type="text/javascript"> + RED.nodes.registerType('Decode LocRef',{ + category: 'locapack', + color: '#d06b5f', + defaults: { + name: {value:""} + }, + inputs:1, + outputs:1, + icon: "file.png", + label: function() { + return this.name||"Decode LocRef"; + } + }); +</script> + +<script type="text/html" data-template-name="Decode LocRef"> + <div class="form-row"> + <label for="node-input-name"><i class="icon-tag"></i> Name</label> + <input type="text" id="node-input-name" placeholder="Name"> + </div> +</script> + +<script type="text/html" data-help-name="Decode LocRef"> + <p>A node that decodes Locapack type 2 payloads (Locally Referenced)</p> +</script> diff --git a/nodered/decode_locally_referenced_packet/decode_locally_referenced_packet.js b/nodered/decode_locally_referenced_packet/decode_locally_referenced_packet.js new file mode 100644 index 0000000000000000000000000000000000000000..15807e682783594fa94b62590308d252d64808eb --- /dev/null +++ b/nodered/decode_locally_referenced_packet/decode_locally_referenced_packet.js @@ -0,0 +1,52 @@ +module.exports = function(RED) { + function DecodeLocallyReferencedPacketNode(config) { + RED.nodes.createNode(this,config); + var node = this; + node.on('input', function(msg) { + + var p = {}; + var buff = msg.payload.LocaPack.payload; + var len = 0; + + // Get Header Field (hdr) + var hdr = {}; + var hdr_raw = parseInt(buff[len]); + hdr.z_presence_flag = (hdr_raw & 0x80) ? true : false; + hdr.dop_presence_flag = (hdr_raw & 0x40) ? true : false; + hdr.frameofref_id_presence_flag = (hdr_raw & 0x20) ? true : false; + p.header = hdr; + len += 1; + + // Latitude + p.x = buff.readFloatLE(len); + len += 4; + + // Longitude + p.y = buff.readFloatLE(len); + len += 4; + + // If the message contains the z field + if (p.header.z_presence_flag ) { + p.z = buff.readFloatLE(len); + len += 4; + } + + // If the message contains the dop field + if (p.header.dop_presence_flag ) { + p.dop = buff.readFloatLE(len); + len += 4; + } + + // If the message contains the frameofref_id field + if (p.header.frameofref_id_presence_flag ) { + p.frameofref_id = 0; //buff.readBigInt64LE(len); + len += 8; + } + + msg.payload.LocaPack["locallyReferencedPacket"] = p; + + node.send(msg); + }); + } + RED.nodes.registerType("Decode LocRef",DecodeLocallyReferencedPacketNode); +} diff --git a/nodered/decode_universal_gnss_packet/decode_universal_gnss_packet.html b/nodered/decode_universal_gnss_packet/decode_universal_gnss_packet.html index 7a896765dd199cf38d7c177714415dc031270317..df3912cd040bb75852bf6ee798aa996d1b674894 100644 --- a/nodered/decode_universal_gnss_packet/decode_universal_gnss_packet.html +++ b/nodered/decode_universal_gnss_packet/decode_universal_gnss_packet.html @@ -22,5 +22,5 @@ </script> <script type="text/html" data-help-name="Decode GNSS"> - <p>A simple node that converts the message payloads decode_universal_gnss_packet</p> + <p>A node that decodes Locapack type 1 payloads (Universal GNSS)</p> </script> diff --git a/nodered/package.json b/nodered/package.json index cbc995546ac51be37d3b14d62920281eced9e3ff..f9551b21e632155c5aff634e8ffecf57443626c3 100644 --- a/nodered/package.json +++ b/nodered/package.json @@ -11,7 +11,8 @@ "node-red" : { "nodes": { "DecodeLocapackHeader": "decode_locapack_header/decode_locapack_header.js", - "DecodeUniversalGnssPacket": "decode_universal_gnss_packet/decode_universal_gnss_packet.js" + "DecodeUniversalGnssPacket": "decode_universal_gnss_packet/decode_universal_gnss_packet.js", + "DecodeLocallyReferencedPacket": "decode_locally_referenced_packet/decode_locally_referenced_packet.js" } } }