From 7f8733c5b972a539771793dd0c0309550eadf0e2 Mon Sep 17 00:00:00 2001 From: philon- Date: Wed, 23 Jul 2025 00:26:54 +0200 Subject: [PATCH 1/2] ClientNotification WIP --- packages/core/src/utils/eventSystem.ts | 11 ++++++++++- packages/core/src/utils/transform/decodePacket.ts | 14 +++++++++++++- packages/web/src/core/subscriptions.ts | 6 ++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/packages/core/src/utils/eventSystem.ts b/packages/core/src/utils/eventSystem.ts index f50ca035..81b24d34 100644 --- a/packages/core/src/utils/eventSystem.ts +++ b/packages/core/src/utils/eventSystem.ts @@ -1,7 +1,7 @@ import type * as Protobuf from "@meshtastic/protobufs"; import { SimpleEventDispatcher } from "ste-simple-events"; -import type { PacketMetadata } from "../types.ts"; import type * as Types from "../types.ts"; +import type { PacketMetadata } from "../types.ts"; export class EventSystem { /** @@ -330,6 +330,15 @@ export class EventSystem { PacketMetadata > = new SimpleEventDispatcher>(); + /** + * Fires when a new MeshPacket message containing a ClientNotification packet has been + * received from device + * + * @event onClientNotificationPacket + */ + public readonly onClientNotificationPacket: SimpleEventDispatcher = + new SimpleEventDispatcher(); + /** * Fires when the devices connection or configuration status changes * diff --git a/packages/core/src/utils/transform/decodePacket.ts b/packages/core/src/utils/transform/decodePacket.ts index 00daf25e..94f0e54d 100644 --- a/packages/core/src/utils/transform/decodePacket.ts +++ b/packages/core/src/utils/transform/decodePacket.ts @@ -1,6 +1,6 @@ import { fromBinary } from "@bufbuild/protobuf"; -import { Constants, Protobuf, Types } from "../../../mod.ts"; import type { MeshDevice } from "../../../mod.ts"; +import { Constants, Protobuf, Types } from "../../../mod.ts"; import type { DeviceOutput } from "../../types.ts"; export const decodePacket = (device: MeshDevice) => @@ -209,6 +209,18 @@ export const decodePacket = (device: MeshDevice) => break; } + case "clientNotification": { + device.log.trace( + Types.Emitter[Types.Emitter.HandleFromRadio], + `📣 Received ClientNotification: ${decodedMessage.payloadVariant.value.message}`, + ); + + device.events.onClientNotificationPacket.dispatch( + decodedMessage.payloadVariant.value, + ); + break; + } + default: { device.log.warn( Types.Emitter[Types.Emitter.HandleFromRadio], diff --git a/packages/web/src/core/subscriptions.ts b/packages/web/src/core/subscriptions.ts index 338512c9..e9725688 100644 --- a/packages/web/src/core/subscriptions.ts +++ b/packages/web/src/core/subscriptions.ts @@ -114,6 +114,12 @@ export const subscribeAll = ( }); }); + connection.events.onClientNotificationPacket.subscribe( + (clientNotificationPacket) => { + console.debug(clientNotificationPacket.message); + }, + ); + connection.events.onRoutingPacket.subscribe((routingPacket) => { if (routingPacket.data.variant.case === "errorReason") { switch (routingPacket.data.variant.value) { From 434770d239b65440dd86b34c103fb57bedf3b0a5 Mon Sep 17 00:00:00 2001 From: philon- Date: Thu, 24 Jul 2025 21:01:12 +0200 Subject: [PATCH 2/2] Test --- packages/web/package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/web/package.json b/packages/web/package.json index 149836a2..0dc313c2 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -28,10 +28,10 @@ "dependencies": { "@bufbuild/protobuf": "^2.6.0", "@hookform/resolvers": "^5.1.1", - "@meshtastic/core": "npm:@jsr/meshtastic__core@2.6.4", - "@meshtastic/transport-http": "npm:@jsr/meshtastic__transport-http", - "@meshtastic/transport-web-bluetooth": "npm:@jsr/meshtastic__transport-web-bluetooth", - "@meshtastic/transport-web-serial": "npm:@jsr/meshtastic__transport-web-serial", + "@meshtastic/core": "workspace:*", + "@meshtastic/transport-http": "workspace:*", + "@meshtastic/transport-web-bluetooth": "workspace:*", + "@meshtastic/transport-web-serial": "workspace:*", "@noble/curves": "^1.9.2", "@radix-ui/react-accordion": "^1.2.11", "@radix-ui/react-checkbox": "^1.3.2",