support path_hash_mode

This commit is contained in:
Florent
2026-02-26 14:24:02 -04:00
parent 03c05d77a2
commit 26730d1efa
4 changed files with 12 additions and 3 deletions

View File

@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project] [project]
name = "meshcore" name = "meshcore"
version = "2.2.14" version = "2.2.15"
authors = [ authors = [
{ name="Florent de Lamotte", email="florent@frizoncorrea.fr" }, { name="Florent de Lamotte", email="florent@frizoncorrea.fr" },
{ name="Alex Wolden", email="awolden@gmail.com" }, { name="Alex Wolden", email="awolden@gmail.com" },

View File

@@ -292,3 +292,7 @@ class DeviceCommands(CommandHandlerBase):
logger.debug("Getting allowed repeat freqs") logger.debug("Getting allowed repeat freqs")
return await self.send(b"\x3c", [EventType.ALLOWED_REPEAT_FREQ, EventType.ERROR]) return await self.send(b"\x3c", [EventType.ALLOWED_REPEAT_FREQ, EventType.ERROR])
async def set_path_hash_mode(self, mode: int) -> Event:
logger.debug(f"Setting path mode to {mode}")
data = b"\x3d\0" + mode.to_bytes(1, "little")
return await self.send(data, [EventType.OK, EventType.ERROR])

View File

@@ -71,6 +71,7 @@ class CommandType(Enum):
SET_AUTOADD_CONFIG = 58 SET_AUTOADD_CONFIG = 58
GET_AUTOADD_CONFIG = 59 GET_AUTOADD_CONFIG = 59
GET_ALLOWED_REPEAT_FREQ = 60 GET_ALLOWED_REPEAT_FREQ = 60
SET_PATH_HASH_MODE = 61
# Packet prefixes for the protocol # Packet prefixes for the protocol
class PacketType(Enum): class PacketType(Enum):

View File

@@ -270,17 +270,21 @@ class MessageReader:
elif packet_type_value == PacketType.DEVICE_INFO.value: elif packet_type_value == PacketType.DEVICE_INFO.value:
res = {} res = {}
res["fw ver"] = dbuf.read(1)[0] fw_ver = dbuf.read(1)[0]
if data[1] >= 3: res["fw ver"] = fw_ver
if fw_ver >= 3:
res["max_contacts"] = dbuf.read(1)[0] * 2 res["max_contacts"] = dbuf.read(1)[0] * 2
res["max_channels"] = dbuf.read(1)[0] res["max_channels"] = dbuf.read(1)[0]
res["ble_pin"] = int.from_bytes(dbuf.read(4), byteorder="little") res["ble_pin"] = int.from_bytes(dbuf.read(4), byteorder="little")
res["fw_build"] = dbuf.read(12).decode("utf-8", "ignore").replace("\0", "") res["fw_build"] = dbuf.read(12).decode("utf-8", "ignore").replace("\0", "")
res["model"] = dbuf.read(40).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", "") res["ver"] = dbuf.read(20).decode("utf-8", "ignore").replace("\0", "")
if fw_ver >= 9: # has repeater mode
rpt = dbuf.read(1) rpt = dbuf.read(1)
if len(rpt) > 0: if len(rpt) > 0:
res["repeat"] = (rpt[0] != 0) res["repeat"] = (rpt[0] != 0)
if fw_ver >= 10: # has path_hash_mode
res["path_hash_mode"] = dbuf.read(1)[0]
await self.dispatcher.dispatch(Event(EventType.DEVICE_INFO, res)) await self.dispatcher.dispatch(Event(EventType.DEVICE_INFO, res))
elif packet_type_value == PacketType.CUSTOM_VARS.value: elif packet_type_value == PacketType.CUSTOM_VARS.value: