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.
Files changed (68) hide show
  1. {meshcore-2.2.25 → meshcore-2.2.26}/PKG-INFO +1 -1
  2. {meshcore-2.2.25 → meshcore-2.2.26}/pyproject.toml +1 -1
  3. {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/commands/contact.py +6 -0
  4. {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/events.py +1 -0
  5. {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/packets.py +2 -0
  6. {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/reader.py +14 -0
  7. {meshcore-2.2.25 → meshcore-2.2.26}/.github/python-test.yml +0 -0
  8. {meshcore-2.2.25 → meshcore-2.2.26}/.gitignore +0 -0
  9. {meshcore-2.2.25 → meshcore-2.2.26}/LICENSE +0 -0
  10. {meshcore-2.2.25 → meshcore-2.2.26}/README.md +0 -0
  11. {meshcore-2.2.25 → meshcore-2.2.26}/examples/.pubsub_example.py.swp +0 -0
  12. {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_chat.py +0 -0
  13. {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_pin_pairing_example.py +0 -0
  14. {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_private_key_export.py +0 -0
  15. {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_sign_example.py +0 -0
  16. {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_stats.py +0 -0
  17. {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_t1000_chan_msg.py +0 -0
  18. {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_t1000_custom_vars.py +0 -0
  19. {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_t1000_infos.py +0 -0
  20. {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_t1000_msg.py +0 -0
  21. {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_t1000_msg_retries.py +0 -0
  22. {meshcore-2.2.25 → meshcore-2.2.26}/examples/ble_t1000_set_cv.py +0 -0
  23. {meshcore-2.2.25 → meshcore-2.2.26}/examples/chan_recv_with_path.py +0 -0
  24. {meshcore-2.2.25 → meshcore-2.2.26}/examples/connection_events_example.py +0 -0
  25. {meshcore-2.2.25 → meshcore-2.2.26}/examples/mepo_mc_gps.py +0 -0
  26. {meshcore-2.2.25 → meshcore-2.2.26}/examples/pubsub_example.py +0 -0
  27. {meshcore-2.2.25 → meshcore-2.2.26}/examples/rf_packet_monitor.py +0 -0
  28. {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_battery_monitor.py +0 -0
  29. {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_channel_manager.py +0 -0
  30. {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_chat.py +0 -0
  31. {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_contacts.py +0 -0
  32. {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_infos.py +0 -0
  33. {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_meshcore_ollama.py +0 -0
  34. {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_msg.py +0 -0
  35. {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_pingbot.py +0 -0
  36. {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_repeater_status.py +0 -0
  37. {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_repeater_telemetry.py +0 -0
  38. {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_rss_bot.py +0 -0
  39. {meshcore-2.2.25 → meshcore-2.2.26}/examples/serial_trace.py +0 -0
  40. {meshcore-2.2.25 → meshcore-2.2.26}/examples/tcp_chat.py +0 -0
  41. {meshcore-2.2.25 → meshcore-2.2.26}/examples/tcp_login_status.py +0 -0
  42. {meshcore-2.2.25 → meshcore-2.2.26}/examples/tcp_mchome_contacts.py +0 -0
  43. {meshcore-2.2.25 → meshcore-2.2.26}/examples/tcp_mchome_infos.py +0 -0
  44. {meshcore-2.2.25 → meshcore-2.2.26}/examples/tcp_mchome_msg.py +0 -0
  45. {meshcore-2.2.25 → meshcore-2.2.26}/examples/tcp_mchome_readmsgs.py +0 -0
  46. {meshcore-2.2.25 → meshcore-2.2.26}/pytest.ini +0 -0
  47. {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/__init__.py +0 -0
  48. {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/ble_cx.py +0 -0
  49. {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/commands/__init__.py +0 -0
  50. {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/commands/base.py +0 -0
  51. {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/commands/binary.py +0 -0
  52. {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/commands/control_data.py +0 -0
  53. {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/commands/device.py +0 -0
  54. {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/commands/messaging.py +0 -0
  55. {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/connection_manager.py +0 -0
  56. {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/lpp_json_encoder.py +0 -0
  57. {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/meshcore.py +0 -0
  58. {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/parsing.py +0 -0
  59. {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/serial_cx.py +0 -0
  60. {meshcore-2.2.25 → meshcore-2.2.26}/src/meshcore/tcp_cx.py +0 -0
  61. {meshcore-2.2.25 → meshcore-2.2.26}/tests/README.md +0 -0
  62. {meshcore-2.2.25 → meshcore-2.2.26}/tests/test_ble_connection.py +0 -0
  63. {meshcore-2.2.25 → meshcore-2.2.26}/tests/test_ble_pin_pairing.py +0 -0
  64. {meshcore-2.2.25 → meshcore-2.2.26}/tests/test_meshcore_ble_pin.py +0 -0
  65. {meshcore-2.2.25 → meshcore-2.2.26}/tests/unit/test_commands.py +0 -0
  66. {meshcore-2.2.25 → meshcore-2.2.26}/tests/unit/test_events.py +0 -0
  67. {meshcore-2.2.25 → meshcore-2.2.26}/tests/unit/test_private_key_export.py +0 -0
  68. {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.25
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
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "meshcore"
7
- version = "2.2.25"
7
+ version = "2.2.26"
8
8
  authors = [
9
9
  { name="Florent de Lamotte", email="florent@frizoncorrea.fr" },
10
10
  { name="Alex Wolden", email="awolden@gmail.com" },
@@ -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])
@@ -23,6 +23,7 @@ class EventType(Enum):
23
23
  NEW_CONTACT = "new_contact"
24
24
  NEXT_CONTACT = "next_contact"
25
25
  AUTOADD_CONFIG = "autoadd_config"
26
+ ADVERT_PATH = "advert_path"
26
27
 
27
28
  # Push notifications
28
29
  ADVERTISEMENT = "advertisement"
@@ -97,6 +97,8 @@ class PacketType(Enum):
97
97
  SIGN_START = 19
98
98
  SIGNATURE = 20
99
99
  CUSTOM_VARS = 21
100
+ ADVERT_PATH = 22
101
+ TUNING_PARAMS = 23
100
102
  STATS = 24
101
103
  AUTOADD_CONFIG = 25
102
104
  ALLOWED_REPEAT_FREQ = 26
@@ -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