From d50fe757596dd9367565f5b2068f8793863d8d4b Mon Sep 17 00:00:00 2001 From: Matt Date: Wed, 16 Apr 2025 00:15:50 -0400 Subject: [PATCH] use ES modules --- lora/LoraStream.js | 2 +- lora/MeshtasticStream.js | 7 ++++--- lora/index.js | 24 ++++++++++++++---------- lora/package.json | 1 + 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/lora/LoraStream.js b/lora/LoraStream.js index 110bfe2..e505218 100644 --- a/lora/LoraStream.js +++ b/lora/LoraStream.js @@ -1,6 +1,6 @@ import { Transform } from 'stream'; -export class LoraStream extends Transform { +export default class LoraStream extends Transform { constructor(options) { super(options); this.byteBuffer = new Uint8Array([]); diff --git a/lora/MeshtasticStream.js b/lora/MeshtasticStream.js index 9f0859d..3736428 100644 --- a/lora/MeshtasticStream.js +++ b/lora/MeshtasticStream.js @@ -2,7 +2,7 @@ import { Transform } from 'stream'; import { Mesh, Channel, Config, ModuleConfig } from '@meshtastic/protobufs'; import { fromBinary, create } from '@bufbuild/protobuf'; -export class MeshtasticStream extends Transform { +export default class MeshtasticStream extends Transform { constructor(options) { super({ readableObjectMode: true, ...options }); } @@ -23,11 +23,9 @@ export class MeshtasticStream extends Transform { // can't find, come back to this break; case 'config': - // todo: config has another payloadVariant within it schema = Config.ConfigSchema break; case 'moduleConfig': - // todo: config has another payloadVariant within it schema = ModuleConfig.ModuleConfigSchema break; case 'fileInfo': @@ -39,6 +37,9 @@ export class MeshtasticStream extends Transform { case 'metadata': schema = Mesh.DeviceMetadataSchema break; + case 'logRecord': + schema = Mesh.LogRecordSchema + break; case 'configCompleteId': // done sending init data break; diff --git a/lora/index.js b/lora/index.js index aa38242..eebfe15 100644 --- a/lora/index.js +++ b/lora/index.js @@ -1,9 +1,8 @@ -const { Mesh, Mqtt, Portnums, Telemetry, Config, Channel } = require("@meshtastic/protobufs"); -const { fromBinary, toBinary, create } = require("@bufbuild/protobuf"); -const { LoraStream } = require("./LoraStream"); -const { MeshtasticStream } = require("./MeshtasticStream"); - -const net = require('net'); +import { Mesh, Mqtt, Portnums, Telemetry, Config, Channel } from '@meshtastic/protobufs'; +import { fromBinary, toBinary, create } from '@bufbuild/protobuf'; +import { LoraStream } from './LoraStream'; +import { MeshtasticStream } from './MeshtasticStream'; +import net from 'net'; const client = new net.Socket(); const IP = '192.168.10.117'; @@ -12,7 +11,7 @@ const PORT = 4403; function sendHello() { const data = create(Mesh.ToRadioSchema, { payloadVariant: { - case: "wantConfigId", + case: 'wantConfigId', value: 1, } }); @@ -95,9 +94,14 @@ function onMeshPacket(envelope) { break; } + let decodedData = dataPacket.payload; if (schema !== null) { - console.log(dataPacket); - const decodedData = fromBinary(schema, dataPacket.payload); - console.log(decodedData); + try { + decodedData = fromBinary(schema, decodedData); + console.log(decodedData); + } catch(e) { + // ignore errors, likely incomplete data + return; + } } } \ No newline at end of file diff --git a/lora/package.json b/lora/package.json index b8cfe5a..e692b2a 100644 --- a/lora/package.json +++ b/lora/package.json @@ -5,6 +5,7 @@ "author": "", "license": "ISC", "description": "", + "type": "module", "dependencies": { "@bufbuild/protobuf": "^2.2.5", "@meshtastic/protobufs": "npm:@jsr/meshtastic__protobufs@^2.6.2",