Browse Source

Catch packet decoding errors (#809)

* Catch decoding errors, refs #808

* Catch packet handling errors

* Add missing type
pull/815/head
Henri Bergius 11 months ago
committed by GitHub
parent
commit
b87fad23d8
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 20
      packages/core/src/utils/transform/decodePacket.ts

20
packages/core/src/utils/transform/decodePacket.ts

@ -24,16 +24,34 @@ export const decodePacket = (device: MeshDevice) =>
break; break;
} }
case "packet": { case "packet": {
const decodedMessage = fromBinary( let decodedMessage: Protobuf.Mesh.FromRadio;
try {
decodedMessage = fromBinary(
Protobuf.Mesh.FromRadioSchema, Protobuf.Mesh.FromRadioSchema,
chunk.data, chunk.data,
); );
} catch (e) {
device.log.error(
Types.Emitter[Types.Emitter.HandleFromRadio],
"⚠️ Received undecodable packet",
e,
);
break;
}
device.events.onFromRadio.dispatch(decodedMessage); device.events.onFromRadio.dispatch(decodedMessage);
/** @todo Add map here when `all=true` gets fixed. */ /** @todo Add map here when `all=true` gets fixed. */
switch (decodedMessage.payloadVariant.case) { switch (decodedMessage.payloadVariant.case) {
case "packet": { case "packet": {
try {
device.handleMeshPacket(decodedMessage.payloadVariant.value); device.handleMeshPacket(decodedMessage.payloadVariant.value);
} catch (e) {
device.log.error(
Types.Emitter[Types.Emitter.HandleFromRadio],
"⚠️ Unable to handle mesh packet",
e,
);
}
break; break;
} }

Loading…
Cancel
Save