From 8c33c09ac163c49854d7c2f76137413dcba37b69 Mon Sep 17 00:00:00 2001 From: Florent Date: Sat, 14 Feb 2026 15:36:17 -0400 Subject: [PATCH] handle repeat mode --- src/meshcore/commands/device.py | 5 +++++ src/meshcore/events.py | 1 + src/meshcore/reader.py | 22 ++++++++++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/src/meshcore/commands/device.py b/src/meshcore/commands/device.py index 9a61177..a991327 100644 --- a/src/meshcore/commands/device.py +++ b/src/meshcore/commands/device.py @@ -287,3 +287,8 @@ class DeviceCommands(CommandHandlerBase): logger.debug("Getting packet statistics") # CMD_GET_STATS (56) + STATS_TYPE_PACKETS (2) return await self.send(b"\x38\x02", [EventType.STATS_PACKETS, EventType.ERROR]) + + async def get_allowed_repeat_freq(self) -> Event: + logger.debug("Getting allowed repeat freqs") + return await self.send(b"\x3c", [EventType.ALLOWED_REPEAT_FREQ, EventType.ERROR]) + diff --git a/src/meshcore/events.py b/src/meshcore/events.py index f11694d..0de7ac2 100644 --- a/src/meshcore/events.py +++ b/src/meshcore/events.py @@ -54,6 +54,7 @@ class EventType(Enum): SIGN_START = "sign_start" SIGNATURE = "signature" ADVERT_RESPONSE = "advert_response" + ALLOWED_REPEAT_FREQ = "allowed_repeat_freq" # Command response types OK = "command_ok" diff --git a/src/meshcore/reader.py b/src/meshcore/reader.py index ad2f92b..2f69f9f 100644 --- a/src/meshcore/reader.py +++ b/src/meshcore/reader.py @@ -607,6 +607,28 @@ class MessageReader: Event(EventType.TELEMETRY_RESPONSE, res, attributes) ) + elif packet_type_value == PacketType.ALLOWED_REPEAT_FREQ.value: + res = {} + freqs = [] + + cont = True + try: + while cont: + min = int.from_bytes(dbuf.read(4), "little", signed=False) + max = int.from_bytes(dbuf.read(4), "little", signed=False) + if min == 0 or max == 0: + cont = False + else: + freqs.append({"min" : min, "max": max}) + except e: + print(e) + + res["freqs"] = freqs + + await self.dispatcher.dispatch( + Event(EventType.ALLOWED_REPEAT_FREQ, res) + ) + elif packet_type_value == PacketType.BINARY_RESPONSE.value: dbuf.read(1) tag = dbuf.read(4).hex()