From 5b163bf12063f6920c2e269fe6fca171f88d8325 Mon Sep 17 00:00:00 2001 From: Joel Wetzell Date: Wed, 13 Sep 2023 15:44:16 -0500 Subject: [PATCH] layout tracker fields differently --- decoder.js | 14 +++++++----- decoders/data/data-tracker-field-chunk.js | 10 ++++----- models/packets/data-packet.js | 27 +++++++++++++++++++++-- 3 files changed, 39 insertions(+), 12 deletions(-) diff --git a/decoder.js b/decoder.js index 954381f..d6b2a85 100644 --- a/decoder.js +++ b/decoder.js @@ -47,11 +47,15 @@ class Decoder { if (this.data.trackers[tracker.id] === undefined) { this.data.trackers[tracker.id] = {}; } - tracker.fields?.forEach((field) => { - Object.entries(field).forEach(([key, value]) => { - this.data.trackers[tracker.id][key] = value; - }); - }); + this.data.trackers[tracker.id] = { + pos: tracker.pos, + speed: tracker.speed, + ori: tracker.ori, + status: tracker.status, + accel: tracker.accel, + trgtpos: tracker.trgtpos, + timestamp: tracker.timestamp, + }; }); } }); diff --git a/decoders/data/data-tracker-field-chunk.js b/decoders/data/data-tracker-field-chunk.js index 06eaabc..147bb4f 100644 --- a/decoders/data/data-tracker-field-chunk.js +++ b/decoders/data/data-tracker-field-chunk.js @@ -18,12 +18,12 @@ module.exports = new Parser() .choice('data', { tag: 'id', choices: { - 0x0000: new Parser().floatle('pos_x').floatle('pos_y').floatle('pos_z'), - 0x0001: new Parser().floatle('speed_x').floatle('speed_y').floatle('speed_z'), - 0x0002: new Parser().floatle('ori_x').floatle('ori_y').floatle('ori_z'), + 0x0000: new Parser().floatle('x').floatle('y').floatle('z'), + 0x0001: new Parser().floatle('x').floatle('y').floatle('z'), + 0x0002: new Parser().floatle('x').floatle('y').floatle('z'), 0x0003: new Parser().floatle('validity'), - 0x0004: new Parser().floatle('accel_x').floatle('accel_y').floatle('accel_z'), - 0x0005: new Parser().floatle('trgtpos_x').floatle('trgtpos_y').floatle('trgtpos_z'), + 0x0004: new Parser().floatle('x').floatle('y').floatle('z'), + 0x0005: new Parser().floatle('x').floatle('y').floatle('z'), 0x0006: new Parser().uint64le('tracker_timestamp'), }, }); diff --git a/models/packets/data-packet.js b/models/packets/data-packet.js index 24f6fe7..956d06a 100644 --- a/models/packets/data-packet.js +++ b/models/packets/data-packet.js @@ -35,9 +35,32 @@ class DataPacket { }) .parse(tracker.data); if (fields.fields) { - tracker.fields = []; fields.fields.forEach((field) => { - tracker.fields.push(field.data); + switch (field.id) { + case 0x0000: + tracker.pos = field.data; + break; + case 0x0001: + tracker.speed = field.data; + break; + case 0x0002: + tracker.ori = field.data; + break; + case 0x0003: + tracker.status = field.data; + break; + case 0x0004: + tracker.accel = field.data; + break; + case 0x0005: + tracker.trgtpos = field.data; + break; + case 0x0006: + tracker.timestamp = field.data; + break; + default: + break; + } }); } }