meshcore 2.2.25__tar.gz → 2.2.26__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {meshcore-2.2.25 → meshcore-2.2.26}/PKG-INFO +1 -1
- {meshcore-2.2.25 → meshcore-2.2.26}/pyproject.toml +1 -1
- {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/commands/contact.py +6 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/events.py +1 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/packets.py +2 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/reader.py +14 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/.github/python-test.yml +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/.gitignore +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/LICENSE +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/README.md +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/.pubsub_example.py.swp +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_chat.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_pin_pairing_example.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_private_key_export.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_sign_example.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_stats.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_t1000_chan_msg.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_t1000_custom_vars.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_t1000_infos.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_t1000_msg.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_t1000_msg_retries.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_t1000_set_cv.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/chan_recv_with_path.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/connection_events_example.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/mepo_mc_gps.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/pubsub_example.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/rf_packet_monitor.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_battery_monitor.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_channel_manager.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_chat.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_contacts.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_infos.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_meshcore_ollama.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_msg.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_pingbot.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_repeater_status.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_repeater_telemetry.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_rss_bot.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_trace.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/tcp_chat.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/tcp_login_status.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/tcp_mchome_contacts.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/tcp_mchome_infos.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/tcp_mchome_msg.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/examples/tcp_mchome_readmsgs.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/pytest.ini +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/__init__.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/ble_cx.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/commands/__init__.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/commands/base.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/commands/binary.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/commands/control_data.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/commands/device.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/commands/messaging.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/connection_manager.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/lpp_json_encoder.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/meshcore.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/parsing.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/serial_cx.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/tcp_cx.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/tests/README.md +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/tests/test_ble_connection.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/tests/test_ble_pin_pairing.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/tests/test_meshcore_ble_pin.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/tests/unit/test_commands.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/tests/unit/test_events.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/tests/unit/test_private_key_export.py +0 -0
- {meshcore-2.2.25 → meshcore-2.2.26}/tests/unit/test_reader.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: meshcore
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.26
|
|
4
4
|
Summary: Base classes for communicating with meshcore companion radios
|
|
5
5
|
Project-URL: Homepage, https://github.com/fdlamotte/meshcore_py
|
|
6
6
|
Project-URL: Issues, https://github.com/fdlamotte/meshcore_py/issues
|
|
@@ -182,3 +182,9 @@ class ContactCommands(CommandHandlerBase):
|
|
|
182
182
|
async def get_autoadd_config(self) -> Event:
|
|
183
183
|
data = b"\x3B"
|
|
184
184
|
return await self.send(data, [EventType.AUTOADD_CONFIG, EventType.ERROR])
|
|
185
|
+
|
|
186
|
+
async def get_advert_path(self, key: DestinationType) -> Event:
|
|
187
|
+
key_bytes = _validate_destination(key, prefix_length=32)
|
|
188
|
+
logger.debug(f"getting advert path for: {key} {key_bytes.hex()}")
|
|
189
|
+
data = b"\x2a\0" + key_bytes
|
|
190
|
+
return await self.send(data, [EventType.ADVERT_PATH, EventType.ERROR])
|
|
@@ -123,6 +123,20 @@ class MessageReader:
|
|
|
123
123
|
await self.dispatcher.dispatch(Event(EventType.NEXT_CONTACT, c))
|
|
124
124
|
self.contacts[c["public_key"]] = c
|
|
125
125
|
|
|
126
|
+
elif packet_type_value == PacketType.ADVERT_PATH.value :
|
|
127
|
+
r = {}
|
|
128
|
+
r["timestamp"] = int.from_bytes(dbuf.read(4), "little", signed=False)
|
|
129
|
+
plen = int.from_bytes(dbuf.read(1), "little", signed=False)
|
|
130
|
+
if plen == 255: # flood, should not happen
|
|
131
|
+
r["path_hash_mode"] = -1
|
|
132
|
+
r["path_len"] = -1
|
|
133
|
+
else:
|
|
134
|
+
r["path_hash_mode"] = plen >> 6 # 2 upper bytes
|
|
135
|
+
r["path_len"] = plen & 0x3F
|
|
136
|
+
r["path"] = dbuf.read().replace(b"\0", b"").hex()
|
|
137
|
+
|
|
138
|
+
await self.dispatcher.dispatch(Event(EventType.ADVERT_PATH, r))
|
|
139
|
+
|
|
126
140
|
elif packet_type_value == PacketType.CONTACT_END.value:
|
|
127
141
|
lastmod = int.from_bytes(dbuf.read(4), byteorder="little")
|
|
128
142
|
attributes = {
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|