diff --git a/src/meshcore/commands/device.py b/src/meshcore/commands/device.py index 676be22..9a61177 100644 --- a/src/meshcore/commands/device.py +++ b/src/meshcore/commands/device.py @@ -66,16 +66,16 @@ class DeviceCommands(CommandHandlerBase): b"\x0c" + int(val).to_bytes(4, "little"), [EventType.OK, EventType.ERROR] ) - async def set_radio(self, freq: float, bw: float, sf: int, cr: int) -> Event: - logger.debug(f"Setting radio params: freq={freq}, bw={bw}, sf={sf}, cr={cr}") - return await self.send( - b"\x0b" - + int(float(freq) * 1000).to_bytes(4, "little") - + int(float(bw) * 1000).to_bytes(4, "little") - + int(sf).to_bytes(1, "little") - + int(cr).to_bytes(1, "little"), - [EventType.OK, EventType.ERROR], - ) + async def set_radio(self, freq: float, bw: float, sf: int, cr: int, repeat = None) -> Event: + logger.debug(f"Setting radio params: freq={freq}, bw={bw}, sf={sf}, cr={cr}, repeat={repeat}") + data = b"\x0b" + data += int(float(freq) * 1000).to_bytes(4, "little") + data += int(float(bw) * 1000).to_bytes(4, "little") + data += int(sf).to_bytes(1, "little") + data += int(cr).to_bytes(1, "little") + if not repeat is None: + data += int(repeat).to_bytes(1,"little") + return await self.send(data, [EventType.OK, EventType.ERROR]) async def set_tuning(self, rx_dly: int, af: int) -> Event: logger.debug(f"Setting tuning params: rx_dly={rx_dly}, af={af}") diff --git a/src/meshcore/reader.py b/src/meshcore/reader.py index 79deccc..ad2f92b 100644 --- a/src/meshcore/reader.py +++ b/src/meshcore/reader.py @@ -278,6 +278,9 @@ class MessageReader: res["fw_build"] = dbuf.read(12).decode("utf-8", "ignore").replace("\0", "") res["model"] = dbuf.read(40).decode("utf-8", "ignore").replace("\0", "") res["ver"] = dbuf.read(20).decode("utf-8", "ignore").replace("\0", "") + rpt = dbuf.read(1) + if len(rpt) > 0: + res["repeat"] = (rpt[0] != 0) await self.dispatcher.dispatch(Event(EventType.DEVICE_INFO, res)) elif packet_type_value == PacketType.CUSTOM_VARS.value: