mirror of
https://github.com/meshcore-dev/meshcore_py.git
synced 2026-06-11 11:56:18 +00:00
support path_hash_mode
This commit is contained in:
@@ -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" },
|
||||||
|
|||||||
@@ -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])
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user