oep-client-python 0.0.40__py3-none-any.whl → 0.0.42__py3-none-any.whl

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 (222) hide show
  1. oep_client/__init__.py +1 -1
  2. oep_client/__main__.py +8 -8
  3. oep_client/acquire.py +1866 -0
  4. oep_client/{conformance.py → conformance/__init__.py} +40 -37
  5. oep_client/{conformance_allocator.py → conformance/allocator.py} +2 -2
  6. oep_client/{virtual_allocator_model.py → conformance/allocator_model.py} +2 -2
  7. oep_client/{conformance_allocator_sample.py → conformance/allocator_sample.py} +2 -2
  8. oep_client/{conformance_analog.py → conformance/analog.py} +4 -4
  9. oep_client/{virtual_analog_model.py → conformance/analog_model.py} +6 -6
  10. oep_client/{conformance_analog_payload.py → conformance/analog_payload.py} +1 -1
  11. oep_client/{conformance_analog_sample.py → conformance/analog_sample.py} +1 -1
  12. oep_client/{conformance_arm_adi.py → conformance/arm_adi.py} +2 -2
  13. oep_client/{conformance_arm_adi_blocks.py → conformance/arm_adi_blocks.py} +2 -2
  14. oep_client/{virtual_arm_adi_model.py → conformance/arm_adi_model.py} +2 -2
  15. oep_client/{conformance_arm_adi_sample.py → conformance/arm_adi_sample.py} +1 -1
  16. oep_client/{conformance_attach.py → conformance/attach.py} +5 -6
  17. oep_client/{virtual_attach_model.py → conformance/attach_model.py} +7 -7
  18. oep_client/{conformance_attach_sample.py → conformance/attach_sample.py} +1 -1
  19. oep_client/{virtual_block_model.py → conformance/block_model.py} +2 -2
  20. oep_client/{conformance_block_sample.py → conformance/block_sample.py} +1 -1
  21. oep_client/{conformance_blocks.py → conformance/blocks.py} +3 -3
  22. oep_client/{conformance_capture_group.py → conformance/capture_group.py} +3 -3
  23. oep_client/{conformance_capture_group_geometry.py → conformance/capture_group_geometry.py} +1 -1
  24. oep_client/{virtual_capture_group_geometry_model.py → conformance/capture_group_geometry_model.py} +1 -1
  25. oep_client/{virtual_capture_group_model.py → conformance/capture_group_model.py} +7 -7
  26. oep_client/{conformance_capture_group_sample.py → conformance/capture_group_sample.py} +1 -1
  27. oep_client/{conformance_capture_metadata.py → conformance/capture_metadata.py} +2 -2
  28. oep_client/{virtual_capture_metadata_model.py → conformance/capture_metadata_model.py} +2 -2
  29. oep_client/{conformance_capture_serial.py → conformance/capture_serial.py} +3 -3
  30. oep_client/{conformance_capture_serial_sample.py → conformance/capture_serial_sample.py} +5 -5
  31. oep_client/{conformance_capture_timeline.py → conformance/capture_timeline.py} +2 -2
  32. oep_client/{conformance_capture_timeline_lifecycle.py → conformance/capture_timeline_lifecycle.py} +2 -2
  33. oep_client/{virtual_capture_timeline_model.py → conformance/capture_timeline_model.py} +7 -7
  34. oep_client/{conformance_capture_timeline_sample.py → conformance/capture_timeline_sample.py} +1 -1
  35. oep_client/{conformance_clock.py → conformance/clock.py} +1 -1
  36. oep_client/{virtual_clock_model.py → conformance/clock_model.py} +2 -2
  37. oep_client/{conformance_clock_sample.py → conformance/clock_sample.py} +1 -1
  38. oep_client/{conformance_core_fixed_fields.py → conformance/core_fixed_fields.py} +2 -2
  39. oep_client/{conformance_core_smoke.py → conformance/core_smoke.py} +2 -2
  40. oep_client/{conformance_corr.py → conformance/corr.py} +2 -2
  41. oep_client/{conformance_cut.py → conformance/cut.py} +2 -2
  42. oep_client/{virtual_cut_model.py → conformance/cut_model.py} +3 -3
  43. oep_client/{conformance_cut_sample.py → conformance/cut_sample.py} +1 -1
  44. oep_client/{conformance_data.py → conformance/data.py} +2 -2
  45. oep_client/{virtual_data_model.py → conformance/data_model.py} +4 -4
  46. oep_client/{conformance_data_sample.py → conformance/data_sample.py} +1 -1
  47. oep_client/{conformance_debug.py → conformance/debug.py} +2 -2
  48. oep_client/{virtual_debug_model.py → conformance/debug_model.py} +2 -2
  49. oep_client/{conformance_debug_sample.py → conformance/debug_sample.py} +1 -1
  50. oep_client/{virtual_declaration_model.py → conformance/declaration_model.py} +2 -2
  51. oep_client/{conformance_dependencies.py → conformance/dependencies.py} +1 -1
  52. oep_client/{virtual_dependency_model.py → conformance/dependency_model.py} +3 -3
  53. oep_client/{conformance_dependency_sample.py → conformance/dependency_sample.py} +1 -1
  54. oep_client/{conformance_discovery.py → conformance/discovery.py} +1 -1
  55. oep_client/{conformance_dmseq.py → conformance/dmseq.py} +2 -2
  56. oep_client/{virtual_dmseq_model.py → conformance/dmseq_model.py} +3 -3
  57. oep_client/{conformance_dmseq_sample.py → conformance/dmseq_sample.py} +1 -1
  58. oep_client/{conformance_dmseq_target.py → conformance/dmseq_target.py} +2 -2
  59. oep_client/{virtual_dmseq_target_model.py → conformance/dmseq_target_model.py} +1 -1
  60. oep_client/{conformance_dmseq_target_sample.py → conformance/dmseq_target_sample.py} +2 -2
  61. oep_client/{conformance_execution_order.py → conformance/execution_order.py} +2 -2
  62. oep_client/{conformance_execution_order_sample.py → conformance/execution_order_sample.py} +1 -1
  63. oep_client/{conformance_exhausted.py → conformance/exhausted.py} +5 -5
  64. oep_client/{conformance_exhausted_sample.py → conformance/exhausted_sample.py} +2 -2
  65. oep_client/{conformance_fixture_metadata.py → conformance/fixture_metadata.py} +2 -2
  66. oep_client/{virtual_fixture_metadata_model.py → conformance/fixture_metadata_model.py} +2 -2
  67. oep_client/{conformance_gpio.py → conformance/gpio.py} +2 -2
  68. oep_client/{conformance_gpio_lifecycle.py → conformance/gpio_lifecycle.py} +2 -2
  69. oep_client/{virtual_gpio_lifecycle_model.py → conformance/gpio_lifecycle_model.py} +1 -1
  70. oep_client/{conformance_gpio_lifecycle_sample.py → conformance/gpio_lifecycle_sample.py} +1 -1
  71. oep_client/{virtual_gpio_model.py → conformance/gpio_model.py} +2 -2
  72. oep_client/{conformance_gpio_sample.py → conformance/gpio_sample.py} +1 -1
  73. oep_client/{conformance_host_core.py → conformance/host_core.py} +2 -2
  74. oep_client/{conformance_host_deadline.py → conformance/host_deadline.py} +1 -1
  75. oep_client/{conformance_host_deadline_sample.py → conformance/host_deadline_sample.py} +2 -2
  76. oep_client/{conformance_host_notifications.py → conformance/host_notifications.py} +3 -3
  77. oep_client/{conformance_host_notifications_sample.py → conformance/host_notifications_sample.py} +1 -1
  78. oep_client/{conformance_host_request_sample.py → conformance/host_request_sample.py} +1 -1
  79. oep_client/{conformance_host_requests.py → conformance/host_requests.py} +4 -4
  80. oep_client/{conformance_host_resend.py → conformance/host_resend.py} +3 -3
  81. oep_client/{conformance_host_resend_sample.py → conformance/host_resend_sample.py} +4 -4
  82. oep_client/{conformance_host_tlv.py → conformance/host_tlv.py} +3 -3
  83. oep_client/{conformance_host_tlv_sample.py → conformance/host_tlv_sample.py} +1 -1
  84. oep_client/{conformance_host_values.py → conformance/host_values.py} +3 -3
  85. oep_client/{conformance_host_values_sample.py → conformance/host_values_sample.py} +1 -1
  86. oep_client/{conformance_host_wait.py → conformance/host_wait.py} +2 -2
  87. oep_client/{conformance_host_wait_sample.py → conformance/host_wait_sample.py} +2 -2
  88. oep_client/{conformance_i2c.py → conformance/i2c.py} +2 -2
  89. oep_client/{virtual_i2c_model.py → conformance/i2c_model.py} +5 -5
  90. oep_client/{conformance_i2c_sample.py → conformance/i2c_sample.py} +1 -1
  91. oep_client/{conformance_interface_smoke.py → conformance/interface_smoke.py} +5 -5
  92. oep_client/{conformance_interfaces.py → conformance/interfaces.py} +1 -1
  93. oep_client/{conformance_lease.py → conformance/lease.py} +2 -2
  94. oep_client/{conformance_lease_sample.py → conformance/lease_sample.py} +2 -2
  95. oep_client/{conformance_link_routes.py → conformance/link_routes.py} +3 -3
  96. oep_client/{virtual_link_routes_model.py → conformance/link_routes_model.py} +2 -2
  97. oep_client/{conformance_link_routes_sample.py → conformance/link_routes_sample.py} +1 -1
  98. oep_client/{virtual_link_transfer_model.py → conformance/link_transfer_model.py} +3 -3
  99. oep_client/{conformance_link_transfer_sample.py → conformance/link_transfer_sample.py} +1 -1
  100. oep_client/{conformance_link_transfers.py → conformance/link_transfers.py} +2 -2
  101. oep_client/{conformance_logic.py → conformance/logic.py} +5 -9
  102. oep_client/{virtual_logic_model.py → conformance/logic_model.py} +6 -6
  103. oep_client/{conformance_logic_sample.py → conformance/logic_sample.py} +1 -1
  104. oep_client/{conformance_mailbox.py → conformance/mailbox.py} +2 -2
  105. oep_client/{virtual_mailbox_model.py → conformance/mailbox_model.py} +2 -2
  106. oep_client/{conformance_mailbox_sample.py → conformance/mailbox_sample.py} +1 -1
  107. oep_client/{virtual_notification_model.py → conformance/notification_model.py} +5 -5
  108. oep_client/{conformance_notification_retention.py → conformance/notification_retention.py} +2 -2
  109. oep_client/{conformance_notification_retention_sample.py → conformance/notification_retention_sample.py} +3 -3
  110. oep_client/{conformance_notification_sequence.py → conformance/notification_sequence.py} +2 -2
  111. oep_client/{conformance_notification_sequence_sample.py → conformance/notification_sequence_sample.py} +1 -1
  112. oep_client/{virtual_oep_declaration_model.py → conformance/oep_declaration_model.py} +5 -5
  113. oep_client/{conformance_oep_declarations.py → conformance/oep_declarations.py} +1 -1
  114. oep_client/{conformance_oep_smoke.py → conformance/oep_smoke.py} +3 -3
  115. oep_client/{virtual_outcome_model.py → conformance/outcome_model.py} +2 -2
  116. oep_client/{conformance_outcome_sample.py → conformance/outcome_sample.py} +1 -1
  117. oep_client/{conformance_outcomes.py → conformance/outcomes.py} +1 -1
  118. oep_client/{conformance_pipeline.py → conformance/pipeline.py} +1 -1
  119. oep_client/{virtual_pipeline_model.py → conformance/pipeline_model.py} +1 -1
  120. oep_client/{conformance_pipeline_sample.py → conformance/pipeline_sample.py} +1 -1
  121. oep_client/{conformance_port_speed.py → conformance/port_speed.py} +2 -2
  122. oep_client/{conformance_port_speed_execution.py → conformance/port_speed_execution.py} +2 -2
  123. oep_client/{virtual_port_speed_execution_model.py → conformance/port_speed_execution_model.py} +2 -2
  124. oep_client/{conformance_port_speed_execution_sample.py → conformance/port_speed_execution_sample.py} +1 -1
  125. oep_client/{conformance_port_speed_lifecycle.py → conformance/port_speed_lifecycle.py} +2 -2
  126. oep_client/{virtual_port_speed_model.py → conformance/port_speed_model.py} +2 -2
  127. oep_client/{conformance_port_speed_sample.py → conformance/port_speed_sample.py} +1 -1
  128. oep_client/{conformance_probe_input.py → conformance/probe_input.py} +3 -3
  129. oep_client/{conformance_probe_input_sample.py → conformance/probe_input_sample.py} +4 -4
  130. oep_client/{conformance_recovery.py → conformance/recovery.py} +4 -4
  131. oep_client/{conformance_recovery_race_sample.py → conformance/recovery_race_sample.py} +2 -2
  132. oep_client/{conformance_recovery_races.py → conformance/recovery_races.py} +5 -5
  133. oep_client/{conformance_recovery_sample.py → conformance/recovery_sample.py} +2 -2
  134. oep_client/{conformance_refusal_order.py → conformance/refusal_order.py} +3 -3
  135. oep_client/{conformance_refusal_order_sample.py → conformance/refusal_order_sample.py} +4 -4
  136. oep_client/{conformance_registered_ops.py → conformance/registered_ops.py} +1 -1
  137. oep_client/{virtual_registered_ops_model.py → conformance/registered_ops_model.py} +3 -3
  138. oep_client/{conformance_replay_pressure.py → conformance/replay_pressure.py} +2 -2
  139. oep_client/{conformance_reset.py → conformance/reset.py} +4 -4
  140. oep_client/{virtual_reset_model.py → conformance/reset_model.py} +6 -6
  141. oep_client/{conformance_reset_sample.py → conformance/reset_sample.py} +1 -1
  142. oep_client/{virtual_resource_model.py → conformance/resource_model.py} +3 -3
  143. oep_client/{conformance_resource_sample.py → conformance/resource_sample.py} +1 -1
  144. oep_client/{conformance_resources.py → conformance/resources.py} +1 -1
  145. oep_client/{conformance_response_race.py → conformance/response_race.py} +3 -3
  146. oep_client/{conformance_response_race_sample.py → conformance/response_race_sample.py} +3 -3
  147. oep_client/{conformance_restart.py → conformance/restart.py} +2 -2
  148. oep_client/{virtual_restart_model.py → conformance/restart_model.py} +2 -2
  149. oep_client/{conformance_restart_sample.py → conformance/restart_sample.py} +2 -2
  150. oep_client/{conformance_retention.py → conformance/retention.py} +7 -14
  151. oep_client/{conformance_retention_lifecycle.py → conformance/retention_lifecycle.py} +2 -2
  152. oep_client/{conformance_retention_lifecycle_sample.py → conformance/retention_lifecycle_sample.py} +1 -1
  153. oep_client/{virtual_retention_model.py → conformance/retention_model.py} +3 -3
  154. oep_client/{conformance_retention_sample.py → conformance/retention_sample.py} +1 -1
  155. oep_client/{conformance_retry.py → conformance/retry.py} +2 -2
  156. oep_client/{virtual_retry_model.py → conformance/retry_model.py} +2 -2
  157. oep_client/{conformance_retry_sample.py → conformance/retry_sample.py} +1 -1
  158. oep_client/{virtual_route_model.py → conformance/route_model.py} +5 -5
  159. oep_client/{conformance_route_sample.py → conformance/route_sample.py} +1 -1
  160. oep_client/{conformance_routes.py → conformance/routes.py} +1 -1
  161. oep_client/{conformance_run.py → conformance/run.py} +4 -4
  162. oep_client/{virtual_run_model.py → conformance/run_model.py} +4 -4
  163. oep_client/{conformance_run_sample.py → conformance/run_sample.py} +1 -1
  164. oep_client/{conformance_scan.py → conformance/scan.py} +5 -8
  165. oep_client/{virtual_scan_model.py → conformance/scan_model.py} +4 -5
  166. oep_client/{conformance_scan_options.py → conformance/scan_options.py} +6 -6
  167. oep_client/{virtual_scan_options_model.py → conformance/scan_options_model.py} +8 -10
  168. oep_client/{conformance_scan_options_sample.py → conformance/scan_options_sample.py} +1 -1
  169. oep_client/{conformance_scan_sample.py → conformance/scan_sample.py} +1 -1
  170. oep_client/{conformance_selected_metadata.py → conformance/selected_metadata.py} +2 -2
  171. oep_client/{virtual_selected_metadata_model.py → conformance/selected_metadata_model.py} +2 -2
  172. oep_client/{conformance_session_loss.py → conformance/session_loss.py} +4 -4
  173. oep_client/{conformance_session_loss_sample.py → conformance/session_loss_sample.py} +2 -2
  174. oep_client/{conformance_session_smoke.py → conformance/session_smoke.py} +2 -2
  175. oep_client/{conformance_spi.py → conformance/spi.py} +2 -2
  176. oep_client/{virtual_spi_model.py → conformance/spi_model.py} +2 -2
  177. oep_client/{conformance_spi_sample.py → conformance/spi_sample.py} +1 -1
  178. oep_client/{conformance_step.py → conformance/step.py} +3 -3
  179. oep_client/{virtual_step_model.py → conformance/step_model.py} +3 -3
  180. oep_client/{conformance_step_sample.py → conformance/step_sample.py} +1 -1
  181. oep_client/{conformance_stream.py → conformance/stream.py} +1 -1
  182. oep_client/{virtual_stream_model.py → conformance/stream_model.py} +5 -5
  183. oep_client/{conformance_stream_sample.py → conformance/stream_sample.py} +1 -1
  184. oep_client/{conformance_subscription_sample.py → conformance/subscription_sample.py} +1 -1
  185. oep_client/{conformance_subscriptions.py → conformance/subscriptions.py} +1 -1
  186. oep_client/{conformance_tcp.py → conformance/tcp.py} +1 -1
  187. oep_client/{conformance_tcp_peers.py → conformance/tcp_peers.py} +3 -3
  188. oep_client/{conformance_tcp_recovery.py → conformance/tcp_recovery.py} +3 -3
  189. oep_client/{conformance_tcp_recovery_sample.py → conformance/tcp_recovery_sample.py} +6 -6
  190. oep_client/{virtual_tlv_request_model.py → conformance/tlv_request_model.py} +5 -4
  191. oep_client/{conformance_tlv_requests.py → conformance/tlv_requests.py} +4 -8
  192. oep_client/{conformance_uart.py → conformance/uart.py} +5 -6
  193. oep_client/{virtual_uart_model.py → conformance/uart_model.py} +5 -6
  194. oep_client/{conformance_uart_sample.py → conformance/uart_sample.py} +1 -1
  195. oep_client/{conformance_uart_stream.py → conformance/uart_stream.py} +2 -2
  196. oep_client/{conformance_uart_stream_sample.py → conformance/uart_stream_sample.py} +1 -1
  197. oep_client/{conformance_usb.py → conformance/usb.py} +4 -4
  198. oep_client/{conformance_usb_cases.py → conformance/usb_cases.py} +3 -3
  199. oep_client/{conformance_usb_model.py → conformance/usb_model.py} +4 -4
  200. oep_client/{conformance_wire_options.py → conformance/wire_options.py} +7 -4
  201. oep_client/{virtual_wire_options_model.py → conformance/wire_options_model.py} +5 -10
  202. oep_client/{conformance_wire_options_sample.py → conformance/wire_options_sample.py} +1 -1
  203. oep_client/{conformance_writer_lease.py → conformance/writer_lease.py} +2 -2
  204. oep_client/{virtual_writer_lease_model.py → conformance/writer_lease_model.py} +2 -2
  205. oep_client/{conformance_writer_lease_sample.py → conformance/writer_lease_sample.py} +1 -1
  206. oep_client/discovery.py +1 -1
  207. oep_client/endpoint.py +7 -7
  208. oep_client/host.py +1 -1
  209. oep_client/link.py +122 -42
  210. oep_client/pins.py +16 -2
  211. oep_client/registry.py +4 -4
  212. oep_client/virtual_bench.py +2 -2
  213. oep_client/virtual_bench_serve.py +3 -0
  214. oep_client/virtual_core.py +2 -2
  215. {oep_client_python-0.0.40.dist-info → oep_client_python-0.0.42.dist-info}/METADATA +14 -11
  216. oep_client_python-0.0.42.dist-info/RECORD +257 -0
  217. oep_client_python-0.0.40.dist-info/RECORD +0 -256
  218. /oep_client/{conformance_host_core_sample.py → conformance/host_core_sample.py} +0 -0
  219. /oep_client/{conformance_serial.py → conformance/serial.py} +0 -0
  220. {oep_client_python-0.0.40.dist-info → oep_client_python-0.0.42.dist-info}/WHEEL +0 -0
  221. {oep_client_python-0.0.40.dist-info → oep_client_python-0.0.42.dist-info}/entry_points.txt +0 -0
  222. {oep_client_python-0.0.40.dist-info → oep_client_python-0.0.42.dist-info}/licenses/LICENSE +0 -0
oep_client/__init__.py CHANGED
@@ -2,4 +2,4 @@
2
2
 
3
3
  __all__ = ["__version__"]
4
4
 
5
- __version__ = "0.0.40"
5
+ __version__ = "0.0.42"
oep_client/__main__.py CHANGED
@@ -20,8 +20,8 @@
20
20
  host's time - the reading with the shortest round trip of n)
21
21
  oep restart <probe> [--reopen-s S] (oep.probe.restart: the probe restarts; waits until it is back, its new boot_id)
22
22
 
23
- <probe>: a serial port, tcp://HOST[:PORT] (no port: the one DNS-SD finds), tcp:UNIT_ID (found by DNS-SD) or
24
- usb[:VID:PID[:SERIAL]]. A change takes the lock (owner "oep settings") and
23
+ <probe>: an OEP address, oep://UNIT_ID[?via=usb|bulk|hid|cdc|net|tcp:HOST:PORT|tty:PATH] (host guide §5.3), or, for a
24
+ probe whose unit_id is not known, a serial port, tcp://HOST[:PORT] (no port: the one DNS-SD finds) or usb (the only one). A change takes the lock (owner "oep settings") and
25
25
  ends the session after it; it takes effect at once, and stays over a restart only after `save` (or --save).
26
26
  """
27
27
 
@@ -47,7 +47,7 @@ def _open_host(target: str, **kw):
47
47
  return link.open_host(target, **kw)
48
48
  except (OSError, ValueError, ImportError, host.OepError) as e:
49
49
  why = " ".join(str(e).split()).rstrip(".") or type(e).__name__
50
- hint = f" Hint: {USB_HINT}." if isinstance(e, FileNotFoundError) and (target == "usb" or target.startswith("usb:")) \
50
+ hint = f" Hint: {USB_HINT}." if isinstance(e, FileNotFoundError) and (target == "usb" or target.lower().startswith("oep://")) \
51
51
  else ""
52
52
  raise SystemExit(f"oep: cannot open {target}: {why}.{hint}") from None
53
53
 
@@ -81,7 +81,7 @@ def main(argv=None) -> int:
81
81
  sp.add_argument("--baud", type=int, default=link.BASE_BAUD, help="the boot speed (default 115200)")
82
82
  sp.add_argument("--json", action="store_true")
83
83
  lt = sub.add_parser("linktest", help="measure the link: traffic patterns at rates the host asks for, what breaks")
84
- lt.add_argument("probe", help="a probe: a serial port, tcp://HOST:PORT or usb[:VID:PID]")
84
+ lt.add_argument("probe", help="a probe: oep://UNIT_ID[?via=...], a serial port, tcp://HOST:PORT or usb")
85
85
  lt.add_argument("--rates", default="", help="comma-separated rates to switch to with port_speed and measure at "
86
86
  "(each on its own; 0 or 'now' = the speed in force). Default: only the speed in force")
87
87
  lt.add_argument("--patterns", default="in,out,duplex", help="in (probe->host), out (host->probe), duplex")
@@ -96,7 +96,7 @@ def main(argv=None) -> int:
96
96
  lt.add_argument("--json", action="store_true", help="one JSON object per cell")
97
97
  pn = sub.add_parser("pins", help="find where a target is wired: classify the channels, scan the wire, find the "
98
98
  "reset line, suggest labels (writes nothing without --save)")
99
- pn.add_argument("probe", help="a probe: a serial port, tcp://HOST:PORT or usb[:VID:PID[:SERIAL]]")
99
+ pn.add_argument("probe", help="a probe: oep://UNIT_ID[?via=...], a serial port, tcp://HOST:PORT or usb")
100
100
  pn.add_argument("--power", type=int, help="the gpio channel that powers the target: switched off, then on, to "
101
101
  "see which channels follow it (never touched without this)")
102
102
  pn.add_argument("--exclude", default="", help="channels never to read, scan or hold, comma-separated")
@@ -116,11 +116,11 @@ def main(argv=None) -> int:
116
116
  "<name>.swio), <name>.nrst, <name>.power_hi; the probe is then opened as oep://<unit_id>/<name>")
117
117
  pn.add_argument("--json", action="store_true", help="the report as JSON (the steps' lines go to stderr)")
118
118
  ck = sub.add_parser("clock", help="the probe's clock (fn 0 clock, core §7.6) against this host's: lock-free")
119
- ck.add_argument("probe", help="a probe: a serial port, tcp://HOST:PORT or usb[:VID:PID[:SERIAL]]")
119
+ ck.add_argument("probe", help="a probe: oep://UNIT_ID[?via=...], a serial port, tcp://HOST:PORT or usb")
120
120
  ck.add_argument("-n", type=int, default=8, help="readings; the one with the shortest round trip is kept (default 8)")
121
121
  ck.add_argument("--json", action="store_true")
122
122
  rs = sub.add_parser("restart", help="restart the probe (oep.probe.restart, optional) and wait until it is back")
123
- rs.add_argument("probe", help="a probe: a serial port, tcp://HOST:PORT or usb[:VID:PID[:SERIAL]]")
123
+ rs.add_argument("probe", help="a probe: oep://UNIT_ID[?via=...], a serial port, tcp://HOST:PORT or usb")
124
124
  rs.add_argument("--force", action="store_true", help="take the lock from its holder")
125
125
  rs.add_argument("--reopen-s", type=float, default=0.0, metavar="S",
126
126
  help="when the probe is not back within its restart_max_ms, open it again for up to S more seconds "
@@ -138,7 +138,7 @@ def main(argv=None) -> int:
138
138
  d = sub.add_parser("dump", help="list and describe every interface a probe offers")
139
139
  src = d.add_mutually_exclusive_group(required=True)
140
140
  src.add_argument("--virtual", choices=sorted(virtual_bench.PROFILES), help="an in-process virtual bench (no hardware)")
141
- src.add_argument("--port", help="a probe: a serial port, tcp://HOST:PORT or usb[:VID:PID] (lock-free reads only)")
141
+ src.add_argument("--port", help="a probe: oep://UNIT_ID[?via=...], a serial port, tcp://HOST:PORT or usb (lock-free reads only)")
142
142
  d.add_argument("--prefix", default="", help="only names under this namespace (label boundaries)")
143
143
  d.add_argument("--exact", action="store_true", help="the prefix is a whole name")
144
144
  d.add_argument("--json", action="store_true", help="machine-readable output")