meshcore 2.1.14__tar.gz → 2.1.16__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 (61) hide show
  1. {meshcore-2.1.14 → meshcore-2.1.16}/PKG-INFO +1 -1
  2. {meshcore-2.1.14 → meshcore-2.1.16}/pyproject.toml +1 -1
  3. {meshcore-2.1.14 → meshcore-2.1.16}/src/meshcore/commands/contact.py +13 -22
  4. meshcore-2.1.14/src/meshcore/commands/.contact.py.swp +0 -0
  5. {meshcore-2.1.14 → meshcore-2.1.16}/.github/python-test.yml +0 -0
  6. {meshcore-2.1.14 → meshcore-2.1.16}/.gitignore +0 -0
  7. {meshcore-2.1.14 → meshcore-2.1.16}/LICENSE +0 -0
  8. {meshcore-2.1.14 → meshcore-2.1.16}/README.md +0 -0
  9. {meshcore-2.1.14 → meshcore-2.1.16}/examples/ble_chat.py +0 -0
  10. {meshcore-2.1.14 → meshcore-2.1.16}/examples/ble_pin_pairing_example.py +0 -0
  11. {meshcore-2.1.14 → meshcore-2.1.16}/examples/ble_private_key_export.py +0 -0
  12. {meshcore-2.1.14 → meshcore-2.1.16}/examples/ble_t1000_chan_msg.py +0 -0
  13. {meshcore-2.1.14 → meshcore-2.1.16}/examples/ble_t1000_custom_vars.py +0 -0
  14. {meshcore-2.1.14 → meshcore-2.1.16}/examples/ble_t1000_infos.py +0 -0
  15. {meshcore-2.1.14 → meshcore-2.1.16}/examples/ble_t1000_msg.py +0 -0
  16. {meshcore-2.1.14 → meshcore-2.1.16}/examples/ble_t1000_msg_retries.py +0 -0
  17. {meshcore-2.1.14 → meshcore-2.1.16}/examples/ble_t1000_set_cv.py +0 -0
  18. {meshcore-2.1.14 → meshcore-2.1.16}/examples/connection_events_example.py +0 -0
  19. {meshcore-2.1.14 → meshcore-2.1.16}/examples/mepo_mc_gps.py +0 -0
  20. {meshcore-2.1.14 → meshcore-2.1.16}/examples/pubsub_example.py +0 -0
  21. {meshcore-2.1.14 → meshcore-2.1.16}/examples/rf_packet_monitor.py +0 -0
  22. {meshcore-2.1.14 → meshcore-2.1.16}/examples/serial_battery_monitor.py +0 -0
  23. {meshcore-2.1.14 → meshcore-2.1.16}/examples/serial_channel_manager.py +0 -0
  24. {meshcore-2.1.14 → meshcore-2.1.16}/examples/serial_chat.py +0 -0
  25. {meshcore-2.1.14 → meshcore-2.1.16}/examples/serial_contacts.py +0 -0
  26. {meshcore-2.1.14 → meshcore-2.1.16}/examples/serial_infos.py +0 -0
  27. {meshcore-2.1.14 → meshcore-2.1.16}/examples/serial_msg.py +0 -0
  28. {meshcore-2.1.14 → meshcore-2.1.16}/examples/serial_repeater_status.py +0 -0
  29. {meshcore-2.1.14 → meshcore-2.1.16}/examples/serial_repeater_telemetry.py +0 -0
  30. {meshcore-2.1.14 → meshcore-2.1.16}/examples/serial_trace.py +0 -0
  31. {meshcore-2.1.14 → meshcore-2.1.16}/examples/tcp_chat.py +0 -0
  32. {meshcore-2.1.14 → meshcore-2.1.16}/examples/tcp_login_status.py +0 -0
  33. {meshcore-2.1.14 → meshcore-2.1.16}/examples/tcp_mchome_contacts.py +0 -0
  34. {meshcore-2.1.14 → meshcore-2.1.16}/examples/tcp_mchome_infos.py +0 -0
  35. {meshcore-2.1.14 → meshcore-2.1.16}/examples/tcp_mchome_msg.py +0 -0
  36. {meshcore-2.1.14 → meshcore-2.1.16}/examples/tcp_mchome_readmsgs.py +0 -0
  37. {meshcore-2.1.14 → meshcore-2.1.16}/pytest.ini +0 -0
  38. {meshcore-2.1.14 → meshcore-2.1.16}/src/meshcore/__init__.py +0 -0
  39. {meshcore-2.1.14 → meshcore-2.1.16}/src/meshcore/ble_cx.py +0 -0
  40. {meshcore-2.1.14 → meshcore-2.1.16}/src/meshcore/commands/__init__.py +0 -0
  41. {meshcore-2.1.14 → meshcore-2.1.16}/src/meshcore/commands/base.py +0 -0
  42. {meshcore-2.1.14 → meshcore-2.1.16}/src/meshcore/commands/binary.py +0 -0
  43. {meshcore-2.1.14 → meshcore-2.1.16}/src/meshcore/commands/device.py +0 -0
  44. {meshcore-2.1.14 → meshcore-2.1.16}/src/meshcore/commands/messaging.py +0 -0
  45. {meshcore-2.1.14 → meshcore-2.1.16}/src/meshcore/connection_manager.py +0 -0
  46. {meshcore-2.1.14 → meshcore-2.1.16}/src/meshcore/events.py +0 -0
  47. {meshcore-2.1.14 → meshcore-2.1.16}/src/meshcore/lpp_json_encoder.py +0 -0
  48. {meshcore-2.1.14 → meshcore-2.1.16}/src/meshcore/meshcore.py +0 -0
  49. {meshcore-2.1.14 → meshcore-2.1.16}/src/meshcore/packets.py +0 -0
  50. {meshcore-2.1.14 → meshcore-2.1.16}/src/meshcore/parsing.py +0 -0
  51. {meshcore-2.1.14 → meshcore-2.1.16}/src/meshcore/reader.py +0 -0
  52. {meshcore-2.1.14 → meshcore-2.1.16}/src/meshcore/serial_cx.py +0 -0
  53. {meshcore-2.1.14 → meshcore-2.1.16}/src/meshcore/tcp_cx.py +0 -0
  54. {meshcore-2.1.14 → meshcore-2.1.16}/tests/README.md +0 -0
  55. {meshcore-2.1.14 → meshcore-2.1.16}/tests/test_ble_connection.py +0 -0
  56. {meshcore-2.1.14 → meshcore-2.1.16}/tests/test_ble_pin_pairing.py +0 -0
  57. {meshcore-2.1.14 → meshcore-2.1.16}/tests/test_meshcore_ble_pin.py +0 -0
  58. {meshcore-2.1.14 → meshcore-2.1.16}/tests/unit/test_commands.py +0 -0
  59. {meshcore-2.1.14 → meshcore-2.1.16}/tests/unit/test_events.py +0 -0
  60. {meshcore-2.1.14 → meshcore-2.1.16}/tests/unit/test_private_key_export.py +0 -0
  61. {meshcore-2.1.14 → meshcore-2.1.16}/tests/unit/test_reader.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcore
3
- Version: 2.1.14
3
+ Version: 2.1.16
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.1.14"
7
+ version = "2.1.16"
8
8
  authors = [
9
9
  { name="Florent de Lamotte", email="florent@frizoncorrea.fr" },
10
10
  { name="Alex Wolden", email="awolden@gmail.com" },
@@ -9,16 +9,17 @@ logger = logging.getLogger("meshcore")
9
9
 
10
10
 
11
11
  class ContactCommands(CommandHandlerBase):
12
- async def get_contacts(self, lastmod=0, anim=False) -> Event:
12
+ async def get_contacts_async(self, lastmod=0) :
13
13
  logger.debug("Getting contacts")
14
14
  data = b"\x04"
15
15
  if lastmod > 0:
16
16
  data = data + lastmod.to_bytes(4, "little")
17
- if anim:
18
- print("Fetching contacts ", end="", flush=True)
19
17
  # wait first event
20
- res = await self.send(data)
21
- timeout = 5
18
+ await self.send(data)
19
+
20
+ async def get_contacts(self, lastmod=0, timeout=5) -> Event:
21
+ await self.get_contacts_async(lastmod)
22
+
22
23
  # Inline wait for events to continue waiting for CONTACTS event
23
24
  # while receiving NEXT_CONTACTs (or it might be missed over serial)
24
25
  try:
@@ -26,7 +27,7 @@ class ContactCommands(CommandHandlerBase):
26
27
  futures = []
27
28
  for event_type in [EventType.ERROR, EventType.NEXT_CONTACT, EventType.CONTACTS] :
28
29
  future = asyncio.create_task(
29
- self.dispatcher.wait_for_event(event_type, {}, timeout)
30
+ self.dispatcher.wait_for_event(event_type, {}, timeout=timeout)
30
31
  )
31
32
  futures.append(future)
32
33
 
@@ -39,26 +40,20 @@ class ContactCommands(CommandHandlerBase):
39
40
 
40
41
  # Check if any future completed successfully
41
42
  if len(done) == 0:
42
- print(" Timeout")
43
+ logger.debug("Timeout while getting contacts")
43
44
  for future in pending: # cancel all futures
44
45
  future.cancel()
45
46
  return None
46
47
 
47
48
  for future in done:
48
49
  event = await future
49
-
50
- if event:
51
- if event.type == EventType.NEXT_CONTACT:
52
- if anim:
53
- print(".", end="", flush=True)
54
- else: # Done or Error ... cancel pending and return
55
- if anim:
56
- print(" Done" if event.type == EventType.CONTACTS else " Error")
57
- for future in pending:
58
- future.cancel()
59
- return event
50
+ if event is None or event.type != EventType.NEXT_CONTACT:
51
+ for future in pending:
52
+ future.cancel()
53
+ return event
60
54
 
61
55
  futures = []
56
+
62
57
  for future in pending: # put back pending
63
58
  futures.append(future)
64
59
 
@@ -69,13 +64,9 @@ class ContactCommands(CommandHandlerBase):
69
64
 
70
65
  except asyncio.TimeoutError:
71
66
  logger.debug(f"Timeout receiving contacts")
72
- if anim:
73
- print(" Timeout")
74
67
  return None
75
68
  except Exception as e:
76
69
  logger.debug(f"Command error: {e}")
77
- if anim:
78
- print(" Error")
79
70
  return Event(EventType.ERROR, {"error": str(e)})
80
71
 
81
72
  async def reset_path(self, key: DestinationType) -> Event:
File without changes
File without changes
File without changes
File without changes
File without changes