oep-client-python 0.0.34__tar.gz → 0.0.37__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 (748) hide show
  1. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/CHANGELOG.md +114 -0
  2. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/PKG-INFO +18 -15
  3. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/README.ja.md +16 -13
  4. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/README.md +17 -14
  5. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/spec-follow-notes.ja.md +47 -0
  6. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/pyproject.toml +1 -1
  7. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/__init__.py +1 -1
  8. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/__main__.py +171 -205
  9. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/capture.py +423 -56
  10. oep_client_python-0.0.37/src/oep_client/capture_blocks.py +294 -0
  11. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance.py +1 -1
  12. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_capture_group.py +1 -1
  13. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_capture_metadata.py +7 -10
  14. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_host_request_sample.py +0 -2
  15. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_host_requests.py +3 -9
  16. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_host_wait.py +7 -7
  17. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_host_wait_sample.py +6 -6
  18. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_registered_ops.py +6 -7
  19. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_selected_metadata.py +3 -9
  20. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/core.py +24 -18
  21. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/discovery.py +1 -1
  22. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/dump.py +7 -3
  23. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/endpoint.py +403 -336
  24. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/frames.py +3 -2
  25. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/hid_stream.py +10 -3
  26. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/host.py +8 -2
  27. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/interfaces.py +3 -7
  28. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/link.py +28 -7
  29. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/message.py +23 -2
  30. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/pins.py +23 -21
  31. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/registry.py +29 -33
  32. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/riscv.py +8 -1
  33. oep_client_python-0.0.37/src/oep_client/settings.py +570 -0
  34. oep_client_python-0.0.37/src/oep_client/usb_stream.py +528 -0
  35. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_analog_model.py +2 -2
  36. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_bench.py +157 -68
  37. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_bench_capture.py +417 -44
  38. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_bench_serve.py +14 -4
  39. oep_client_python-0.0.37/src/oep_client/virtual_bench_trigger.py +277 -0
  40. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_capture_group_model.py +1 -1
  41. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_capture_metadata_model.py +3 -3
  42. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_capture_timeline_model.py +1 -1
  43. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_registered_ops_model.py +1 -1
  44. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_selected_metadata_model.py +4 -4
  45. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/README.ja.md +9 -9
  46. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/README.md +7 -7
  47. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/boards.py +4 -4
  48. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/conftest.py +0 -2
  49. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/record.py +35 -36
  50. oep_client_python-0.0.37/tests/hw/results/9489dd2ae0953650-0.0.36+f8ac55a-0.0.36-20261022T160307.json +506 -0
  51. oep_client_python-0.0.37/tests/hw/results/9489dd2ae0953650-0.0.36+f8ac55a-0.0.36-20261022T161655.json +561 -0
  52. oep_client_python-0.0.37/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.36+f8ac55a-0.0.36-20261022T160134.json +687 -0
  53. oep_client_python-0.0.37/tests/hw/results/esp32-series-30eda0ea068b-0.0.36+f8ac55a-0.0.36-20261022T160503.json +464 -0
  54. oep_client_python-0.0.37/tests/hw/results/esp32-series-30eda0ea068b-unknown-0.0.36-20261022T160222.json +118 -0
  55. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/test_harness.py +36 -32
  56. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/test_probe.py +100 -89
  57. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/spec/oep-v1.toml +290 -95
  58. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_capabilities.py +9 -8
  59. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_capture.py +44 -0
  60. oep_client_python-0.0.37/tests/test_capture_blocks.py +178 -0
  61. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_capture_metadata.py +4 -11
  62. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_fixture_metadata.py +2 -2
  63. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_host_requests.py +6 -8
  64. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_host_wait.py +2 -2
  65. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_registered_ops.py +4 -5
  66. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_selected_metadata.py +6 -14
  67. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_console_queue_and_reset_settle.py +13 -12
  68. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_gpio_drive_and_serve_options.py +8 -11
  69. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_host_rules_2026_10_02.py +9 -18
  70. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_host_rules_2026_10_06.py +2 -2
  71. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_interfaces.py +13 -0
  72. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_no_resume.py +1 -1
  73. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_passthrough.py +80 -58
  74. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_pins.py +14 -16
  75. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_plan.py +2 -2
  76. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_request_tails.py +32 -32
  77. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_restart.py +6 -5
  78. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review4_small.py +0 -17
  79. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review5_capture.py +2 -1
  80. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review5_core_a.py +8 -10
  81. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review5_debug_wires.py +2 -2
  82. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review6_debug_a.py +1 -1
  83. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review6_rest.py +0 -58
  84. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review7_state_resources.py +4 -4
  85. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_rvswd_rest.py +8 -6
  86. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_session.py +7 -5
  87. oep_client_python-0.0.37/tests/test_settings.py +522 -0
  88. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_spec_283e5b5.py +3 -2
  89. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_spec_2c6d18d.py +1 -1
  90. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_spec_3cc50c8.py +28 -21
  91. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_spec_vectors.py +76 -73
  92. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_tcp_discovery.py +4 -5
  93. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_trace_capture.py +27 -23
  94. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_trace_core.py +41 -32
  95. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_trace_core_names.py +9 -9
  96. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_trace_fixture.py +7 -7
  97. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_trace_transports.py +2 -2
  98. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_usb_identity.py +4 -4
  99. oep_client_python-0.0.37/tests/test_usb_stream.py +285 -0
  100. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_capture.py +5 -3
  101. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_capture_channel_time.py +2 -2
  102. oep_client_python-0.0.37/tests/test_virtual_bench_capture_formats.py +316 -0
  103. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_capture_notifications.py +6 -4
  104. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_capture_one_shot_time.py +2 -1
  105. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_capture_pretrigger.py +6 -4
  106. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_capture_trigger_modes.py +1 -1
  107. oep_client_python-0.0.37/tests/test_virtual_bench_capture_trigger_source.py +119 -0
  108. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_capture_waiting.py +2 -2
  109. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_pin_constraints.py +5 -6
  110. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_rules_2026_10_02.py +55 -35
  111. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_rules_2026_10_06.py +35 -31
  112. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_serve_reboot.py +12 -7
  113. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_spec.py +6 -5
  114. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_wire_hold.py +6 -5
  115. oep_client_python-0.0.37/tests/vectors/SPEC_COMMIT +1 -0
  116. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/vectors/SPEC_SHA256 +7 -5
  117. oep_client_python-0.0.37/tests/vectors/capture_formats.json +369 -0
  118. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/vectors/interface_boundaries.json +10 -94
  119. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/vectors/interface_profiles.json +5 -7
  120. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/vectors/ops.json +206 -155
  121. oep_client_python-0.0.37/tests/vectors/settings_file.json +185 -0
  122. oep_client_python-0.0.34/docs/trace/probe-config.json +0 -1067
  123. oep_client_python-0.0.34/src/oep_client/config.py +0 -675
  124. oep_client_python-0.0.34/src/oep_client/conformance_config.py +0 -139
  125. oep_client_python-0.0.34/src/oep_client/conformance_config_execution.py +0 -84
  126. oep_client_python-0.0.34/src/oep_client/conformance_config_execution_sample.py +0 -13
  127. oep_client_python-0.0.34/src/oep_client/conformance_config_fallback.py +0 -72
  128. oep_client_python-0.0.34/src/oep_client/conformance_config_fallback_sample.py +0 -25
  129. oep_client_python-0.0.34/src/oep_client/conformance_config_paging.py +0 -87
  130. oep_client_python-0.0.34/src/oep_client/conformance_config_paging_sample.py +0 -29
  131. oep_client_python-0.0.34/src/oep_client/conformance_config_power_loss.py +0 -89
  132. oep_client_python-0.0.34/src/oep_client/conformance_config_power_loss_sample.py +0 -15
  133. oep_client_python-0.0.34/src/oep_client/conformance_config_sample.py +0 -13
  134. oep_client_python-0.0.34/src/oep_client/conformance_config_storage.py +0 -79
  135. oep_client_python-0.0.34/src/oep_client/conformance_config_storage_sample.py +0 -15
  136. oep_client_python-0.0.34/src/oep_client/usb_stream.py +0 -252
  137. oep_client_python-0.0.34/src/oep_client/virtual_config_execution_model.py +0 -68
  138. oep_client_python-0.0.34/src/oep_client/virtual_config_model.py +0 -176
  139. oep_client_python-0.0.34/src/oep_client/virtual_config_paging_model.py +0 -12
  140. oep_client_python-0.0.34/src/oep_client/virtual_config_power_loss_model.py +0 -77
  141. oep_client_python-0.0.34/src/oep_client/virtual_config_storage_model.py +0 -20
  142. oep_client_python-0.0.34/tests/test_config.py +0 -209
  143. oep_client_python-0.0.34/tests/test_config_disable.py +0 -199
  144. oep_client_python-0.0.34/tests/test_config_idle.py +0 -157
  145. oep_client_python-0.0.34/tests/test_config_network.py +0 -333
  146. oep_client_python-0.0.34/tests/test_conformance_config.py +0 -129
  147. oep_client_python-0.0.34/tests/test_conformance_config_execution.py +0 -124
  148. oep_client_python-0.0.34/tests/test_conformance_config_fallback.py +0 -99
  149. oep_client_python-0.0.34/tests/test_conformance_config_paging.py +0 -160
  150. oep_client_python-0.0.34/tests/test_conformance_config_power_loss.py +0 -118
  151. oep_client_python-0.0.34/tests/test_conformance_config_storage.py +0 -101
  152. oep_client_python-0.0.34/tests/test_trace_probe_config.py +0 -287
  153. oep_client_python-0.0.34/tests/test_usb_stream.py +0 -96
  154. oep_client_python-0.0.34/tests/vectors/SPEC_COMMIT +0 -1
  155. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/.gitignore +0 -0
  156. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/LICENSE +0 -0
  157. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/README.ja.md +0 -0
  158. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/allocator-conformance.ja.md +0 -0
  159. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/analog-conformance.ja.md +0 -0
  160. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/analog-payload-conformance.ja.md +0 -0
  161. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/arm-adi-conformance.ja.md +0 -0
  162. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/attach-conformance.ja.md +0 -0
  163. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/block-conformance.ja.md +0 -0
  164. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/capture-group-conformance.ja.md +0 -0
  165. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/capture-group-geometry-conformance.ja.md +0 -0
  166. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/capture-metadata-conformance.ja.md +0 -0
  167. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/capture-serial-conformance.ja.md +0 -0
  168. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/capture-timeline-conformance.ja.md +0 -0
  169. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/capture-timeline-lifecycle-conformance.ja.md +0 -0
  170. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/clock-conformance.ja.md +0 -0
  171. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/config-conformance.ja.md +0 -0
  172. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/config-execution-conformance.ja.md +0 -0
  173. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/config-fallback-conformance.ja.md +0 -0
  174. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/config-paging-conformance.ja.md +0 -0
  175. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/config-power-loss-conformance.ja.md +0 -0
  176. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/config-storage-conformance.ja.md +0 -0
  177. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/conformance-checks.ja.md +0 -0
  178. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/conformance-spec-compatibility.ja.md +0 -0
  179. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/core-fixed-fields-review.ja.md +0 -0
  180. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/core-smoke-conformance.ja.md +0 -0
  181. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/corr-conformance.ja.md +0 -0
  182. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/cut-conformance.ja.md +0 -0
  183. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/data-conformance.ja.md +0 -0
  184. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/debug-conformance.ja.md +0 -0
  185. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/dependency-conformance.ja.md +0 -0
  186. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/discovery-conformance.ja.md +0 -0
  187. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/dmseq-conformance.ja.md +0 -0
  188. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/dmseq-target-conformance.ja.md +0 -0
  189. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/execution-order-conformance.ja.md +0 -0
  190. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/exhausted-conformance.ja.md +0 -0
  191. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/fixture-metadata-conformance.ja.md +0 -0
  192. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/gpio-conformance.ja.md +0 -0
  193. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/gpio-lifecycle-conformance.ja.md +0 -0
  194. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/hardware-configuration.ja.md +0 -0
  195. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/hardware-quickstart.ja.md +0 -0
  196. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/hardware-schema.ja.md +0 -0
  197. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/host-core-shapes-conformance.ja.md +0 -0
  198. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/host-deadline-conformance.ja.md +0 -0
  199. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/host-notification-conformance.ja.md +0 -0
  200. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/host-request-conformance.ja.md +0 -0
  201. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/host-resend-conformance.ja.md +0 -0
  202. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/host-tlv-conformance.ja.md +0 -0
  203. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/host-value-conformance.ja.md +0 -0
  204. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/host-wait-conformance.ja.md +0 -0
  205. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/i2c-conformance.ja.md +0 -0
  206. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/interface-conformance.ja.md +0 -0
  207. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/interface-smoke-conformance.ja.md +0 -0
  208. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/lease-conformance.ja.md +0 -0
  209. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/link-routes-conformance.ja.md +0 -0
  210. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/link-transfer-conformance.ja.md +0 -0
  211. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/logic-conformance.ja.md +0 -0
  212. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/mailbox-conformance.ja.md +0 -0
  213. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/notification-output-sample.ja.md +0 -0
  214. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/notification-retention-conformance.ja.md +0 -0
  215. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/notification-sequence-conformance.ja.md +0 -0
  216. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/oep-declaration-conformance.ja.md +0 -0
  217. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/oep-example-smoke-conformance.ja.md +0 -0
  218. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/outcome-conformance.ja.md +0 -0
  219. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/pin-constraints-conformance.ja.md +0 -0
  220. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/pipeline-conformance.ja.md +0 -0
  221. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/port-speed-conformance.ja.md +0 -0
  222. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/probe-input-conformance.ja.md +0 -0
  223. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/recovery-conformance.ja.md +0 -0
  224. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/recovery-races-conformance.ja.md +0 -0
  225. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/refusal-order-conformance.ja.md +0 -0
  226. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/registered-ops-conformance.ja.md +0 -0
  227. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/replay-pressure-conformance.ja.md +0 -0
  228. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/reset-conformance.ja.md +0 -0
  229. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/resource-conformance.ja.md +0 -0
  230. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/response-race-conformance.ja.md +0 -0
  231. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/restart-conformance.ja.md +0 -0
  232. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/retention-conformance.ja.md +0 -0
  233. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/retention-lifecycle-conformance.ja.md +0 -0
  234. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/retry-conformance.ja.md +0 -0
  235. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/route-conformance.ja.md +0 -0
  236. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/run-conformance.ja.md +0 -0
  237. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/scan-conformance.ja.md +0 -0
  238. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/scan-options-conformance.ja.md +0 -0
  239. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/selected-metadata-conformance.ja.md +0 -0
  240. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/session-loss-conformance.ja.md +0 -0
  241. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/session-smoke-conformance.ja.md +0 -0
  242. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/spec-a09fa45-sections.ja.md +0 -0
  243. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/spi-conformance.ja.md +0 -0
  244. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/stage9-rule-trace.ja.md +0 -0
  245. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/step-conformance.ja.md +0 -0
  246. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/stream-conformance.ja.md +0 -0
  247. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/subscription-conformance.ja.md +0 -0
  248. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/tcp-recovery-conformance.ja.md +0 -0
  249. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/testing-consumers.ja.md +0 -0
  250. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/testing-policy.ja.md +0 -0
  251. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/tlv-request-conformance.ja.md +0 -0
  252. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/README.ja.md +0 -0
  253. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/capture.json +0 -0
  254. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/common.json +0 -0
  255. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/console.json +0 -0
  256. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/core.json +0 -0
  257. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/debug.json +0 -0
  258. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/fixture.json +0 -0
  259. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/link.json +0 -0
  260. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/plan.json +0 -0
  261. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/restart.json +0 -0
  262. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review/capture.json +0 -0
  263. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review/common.json +0 -0
  264. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review/console.json +0 -0
  265. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review/core.json +0 -0
  266. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review/debug.json +0 -0
  267. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review/fixture.json +0 -0
  268. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review/link.json +0 -0
  269. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review/plan.json +0 -0
  270. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review/probe-config.json +0 -0
  271. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review/restart.json +0 -0
  272. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review/sample-audit.ja.md +0 -0
  273. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review/transports.json +0 -0
  274. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review2/capture.json +0 -0
  275. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review2/common.json +0 -0
  276. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review2/console.json +0 -0
  277. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review2/core.0.json +0 -0
  278. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review2/core.1-6.json +0 -0
  279. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review2/core.7-13.json +0 -0
  280. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review2/debug.json +0 -0
  281. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review2/fixture.json +0 -0
  282. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review2/link.json +0 -0
  283. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review2/plan.json +0 -0
  284. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review2/probe-config.json +0 -0
  285. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review2/restart.json +0 -0
  286. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review2/transports.json +0 -0
  287. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review3/capture.json +0 -0
  288. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review3/core-a.json +0 -0
  289. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review3/core-b.json +0 -0
  290. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review3/debug-a.json +0 -0
  291. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review3/debug-b.json +0 -0
  292. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review3/rest.json +0 -0
  293. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review4/capture.json +0 -0
  294. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review4/core-rest.json +0 -0
  295. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review4/core-sessions.json +0 -0
  296. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review4/debug.json +0 -0
  297. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review4/fixture-console.json +0 -0
  298. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review4/small.json +0 -0
  299. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review5/capture.json +0 -0
  300. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review5/core-a.json +0 -0
  301. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review5/core-b.json +0 -0
  302. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review5/debug-targets.json +0 -0
  303. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review5/debug-wires.json +0 -0
  304. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review5/small.json +0 -0
  305. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review6/capture-console.json +0 -0
  306. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review6/core-early.json +0 -0
  307. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review6/core-late.json +0 -0
  308. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review6/debug-a.json +0 -0
  309. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review6/debug-b.json +0 -0
  310. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review6/rest.json +0 -0
  311. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review7/exact-payload.json +0 -0
  312. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review7/host-recovery.json +0 -0
  313. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review7/optional-as-required.json +0 -0
  314. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review7/request-validation.json +0 -0
  315. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review7/state-and-resources.json +0 -0
  316. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review7/tlv-readers.json +0 -0
  317. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review8/core-1.json +0 -0
  318. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review8/core-2.json +0 -0
  319. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/review8/debug.json +0 -0
  320. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/trace/transports.json +0 -0
  321. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/uart-conformance.ja.md +0 -0
  322. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/uart-stream-conformance.ja.md +0 -0
  323. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/usb-conformance.ja.md +0 -0
  324. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/wire-options-conformance.ja.md +0 -0
  325. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/docs/writer-lease-conformance.ja.md +0 -0
  326. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/arm.py +0 -0
  327. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/catalog.py +0 -0
  328. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/ch32_flash.py +0 -0
  329. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/cobs.py +0 -0
  330. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_allocator.py +0 -0
  331. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_allocator_sample.py +0 -0
  332. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_analog.py +0 -0
  333. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_analog_payload.py +0 -0
  334. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_analog_sample.py +0 -0
  335. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_arm_adi.py +0 -0
  336. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_arm_adi_blocks.py +0 -0
  337. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_arm_adi_sample.py +0 -0
  338. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_attach.py +0 -0
  339. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_attach_sample.py +0 -0
  340. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_block_sample.py +0 -0
  341. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_blocks.py +0 -0
  342. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_capture_group_geometry.py +0 -0
  343. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_capture_group_sample.py +0 -0
  344. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_capture_serial.py +0 -0
  345. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_capture_serial_sample.py +0 -0
  346. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_capture_timeline.py +0 -0
  347. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_capture_timeline_lifecycle.py +0 -0
  348. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_capture_timeline_sample.py +0 -0
  349. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_clock.py +0 -0
  350. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_clock_sample.py +0 -0
  351. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_core_fixed_fields.py +0 -0
  352. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_core_smoke.py +0 -0
  353. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_corr.py +0 -0
  354. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_cut.py +0 -0
  355. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_cut_sample.py +0 -0
  356. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_data.py +0 -0
  357. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_data_sample.py +0 -0
  358. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_debug.py +0 -0
  359. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_debug_sample.py +0 -0
  360. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_dependencies.py +0 -0
  361. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_dependency_sample.py +0 -0
  362. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_discovery.py +0 -0
  363. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_dmseq.py +0 -0
  364. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_dmseq_sample.py +0 -0
  365. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_dmseq_target.py +0 -0
  366. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_dmseq_target_sample.py +0 -0
  367. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_execution_order.py +0 -0
  368. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_execution_order_sample.py +0 -0
  369. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_exhausted.py +0 -0
  370. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_exhausted_sample.py +0 -0
  371. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_fixture_metadata.py +0 -0
  372. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_gpio.py +0 -0
  373. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_gpio_lifecycle.py +0 -0
  374. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_gpio_lifecycle_sample.py +0 -0
  375. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_gpio_sample.py +0 -0
  376. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_host_core.py +0 -0
  377. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_host_core_sample.py +0 -0
  378. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_host_deadline.py +0 -0
  379. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_host_deadline_sample.py +0 -0
  380. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_host_notifications.py +0 -0
  381. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_host_notifications_sample.py +0 -0
  382. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_host_resend.py +0 -0
  383. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_host_resend_sample.py +0 -0
  384. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_host_tlv.py +0 -0
  385. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_host_tlv_sample.py +0 -0
  386. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_host_values.py +0 -0
  387. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_host_values_sample.py +0 -0
  388. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_i2c.py +0 -0
  389. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_i2c_sample.py +0 -0
  390. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_interface_smoke.py +0 -0
  391. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_interfaces.py +0 -0
  392. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_lease.py +0 -0
  393. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_lease_sample.py +0 -0
  394. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_link_routes.py +0 -0
  395. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_link_routes_sample.py +0 -0
  396. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_link_transfer_sample.py +0 -0
  397. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_link_transfers.py +0 -0
  398. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_logic.py +0 -0
  399. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_logic_sample.py +0 -0
  400. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_mailbox.py +0 -0
  401. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_mailbox_sample.py +0 -0
  402. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_notification_retention.py +0 -0
  403. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_notification_retention_sample.py +0 -0
  404. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_notification_sequence.py +0 -0
  405. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_notification_sequence_sample.py +0 -0
  406. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_oep_declarations.py +0 -0
  407. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_oep_smoke.py +0 -0
  408. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_outcome_sample.py +0 -0
  409. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_outcomes.py +0 -0
  410. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_pipeline.py +0 -0
  411. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_pipeline_sample.py +0 -0
  412. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_port_speed.py +0 -0
  413. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_port_speed_execution.py +0 -0
  414. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_port_speed_execution_sample.py +0 -0
  415. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_port_speed_lifecycle.py +0 -0
  416. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_port_speed_sample.py +0 -0
  417. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_probe_input.py +0 -0
  418. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_probe_input_sample.py +0 -0
  419. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_recovery.py +0 -0
  420. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_recovery_race_sample.py +0 -0
  421. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_recovery_races.py +0 -0
  422. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_recovery_sample.py +0 -0
  423. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_refusal_order.py +0 -0
  424. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_refusal_order_sample.py +0 -0
  425. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_replay_pressure.py +0 -0
  426. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_reset.py +0 -0
  427. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_reset_sample.py +0 -0
  428. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_resource_sample.py +0 -0
  429. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_resources.py +0 -0
  430. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_response_race.py +0 -0
  431. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_response_race_sample.py +0 -0
  432. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_restart.py +0 -0
  433. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_restart_sample.py +0 -0
  434. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_retention.py +0 -0
  435. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_retention_lifecycle.py +0 -0
  436. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_retention_lifecycle_sample.py +0 -0
  437. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_retention_sample.py +0 -0
  438. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_retry.py +0 -0
  439. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_retry_sample.py +0 -0
  440. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_route_sample.py +0 -0
  441. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_routes.py +0 -0
  442. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_run.py +0 -0
  443. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_run_sample.py +0 -0
  444. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_scan.py +0 -0
  445. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_scan_options.py +0 -0
  446. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_scan_options_sample.py +0 -0
  447. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_scan_sample.py +0 -0
  448. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_serial.py +0 -0
  449. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_session_loss.py +0 -0
  450. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_session_loss_sample.py +0 -0
  451. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_session_smoke.py +0 -0
  452. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_spi.py +0 -0
  453. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_spi_sample.py +0 -0
  454. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_step.py +0 -0
  455. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_step_sample.py +0 -0
  456. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_stream.py +0 -0
  457. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_stream_sample.py +0 -0
  458. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_subscription_sample.py +0 -0
  459. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_subscriptions.py +0 -0
  460. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_tcp.py +0 -0
  461. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_tcp_peers.py +0 -0
  462. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_tcp_recovery.py +0 -0
  463. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_tcp_recovery_sample.py +0 -0
  464. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_tlv_requests.py +0 -0
  465. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_uart.py +0 -0
  466. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_uart_sample.py +0 -0
  467. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_uart_stream.py +0 -0
  468. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_uart_stream_sample.py +0 -0
  469. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_usb.py +0 -0
  470. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_usb_cases.py +0 -0
  471. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_usb_model.py +0 -0
  472. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_wire_options.py +0 -0
  473. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_wire_options_sample.py +0 -0
  474. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_writer_lease.py +0 -0
  475. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/conformance_writer_lease_sample.py +0 -0
  476. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/console.py +0 -0
  477. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/decode.py +0 -0
  478. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/fixture.py +0 -0
  479. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/hardware.py +0 -0
  480. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/kept_session.py +0 -0
  481. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/linktest.py +0 -0
  482. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/names.py +0 -0
  483. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/pytest_conformance.py +0 -0
  484. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/rp2350.py +0 -0
  485. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/speed_record.py +0 -0
  486. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/targets.py +0 -0
  487. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/uiapduino.py +0 -0
  488. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_allocator_model.py +0 -0
  489. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_arm_adi_model.py +0 -0
  490. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_attach_model.py +0 -0
  491. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_bench_mdns.py +0 -0
  492. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_bench_serial.py +0 -0
  493. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_bench_usb.py +0 -0
  494. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_block_model.py +0 -0
  495. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_capture_group_geometry_model.py +0 -0
  496. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_clock_model.py +0 -0
  497. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_core.py +0 -0
  498. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_cut_model.py +0 -0
  499. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_data_model.py +0 -0
  500. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_debug_model.py +0 -0
  501. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_declaration_model.py +0 -0
  502. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_dependency_model.py +0 -0
  503. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_dmseq_model.py +0 -0
  504. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_dmseq_target_model.py +0 -0
  505. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_fixture_metadata_model.py +0 -0
  506. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_gpio_lifecycle_model.py +0 -0
  507. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_gpio_model.py +0 -0
  508. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_i2c_model.py +0 -0
  509. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_link_routes_model.py +0 -0
  510. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_link_transfer_model.py +0 -0
  511. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_logic_model.py +0 -0
  512. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_mailbox_model.py +0 -0
  513. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_names.py +0 -0
  514. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_notification_model.py +0 -0
  515. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_oep_declaration_model.py +0 -0
  516. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_outcome_model.py +0 -0
  517. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_pipeline_model.py +0 -0
  518. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_port_speed_execution_model.py +0 -0
  519. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_port_speed_model.py +0 -0
  520. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_reset_model.py +0 -0
  521. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_resource_model.py +0 -0
  522. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_restart_model.py +0 -0
  523. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_retention_model.py +0 -0
  524. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_retry_model.py +0 -0
  525. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_route_model.py +0 -0
  526. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_run_model.py +0 -0
  527. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_scan_model.py +0 -0
  528. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_scan_options_model.py +0 -0
  529. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_spi_model.py +0 -0
  530. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_step_model.py +0 -0
  531. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_stream_model.py +0 -0
  532. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_tlv_request_model.py +0 -0
  533. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_uart_model.py +0 -0
  534. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_wire_options_model.py +0 -0
  535. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/src/oep_client/virtual_writer_lease_model.py +0 -0
  536. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/conftest.py +0 -0
  537. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/equipment/.env.example +0 -0
  538. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/equipment/test_core_contract.py +0 -0
  539. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/equipment/test_preflight.py +0 -0
  540. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/fixtures/hardware.virtual.toml +0 -0
  541. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/.env.example +0 -0
  542. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/.env.virtual.example +0 -0
  543. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/__init__.py +0 -0
  544. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/firmware.py +0 -0
  545. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/flash.py +0 -0
  546. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/hardware.example.toml +0 -0
  547. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/hardware.resolved.example.toml +0 -0
  548. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/.gitignore +0 -0
  549. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/9489dd2ae0953650-0.0.26+5bafb92-0.0.26.json +0 -0
  550. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/9489dd2ae0953650-0.0.26+654b06a-0.0.26.json +0 -0
  551. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/9489dd2ae0953650-0.0.27+ec1df99-0.0.27.json +0 -0
  552. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/9489dd2ae0953650-0.0.32+1491c13-0.0.31-20261016T133559.json +0 -0
  553. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/9489dd2ae0953650-0.0.32+672bf7b-0.0.32-20261016T164655.json +0 -0
  554. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131458.json +0 -0
  555. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131510.json +0 -0
  556. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131526.json +0 -0
  557. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131532.json +0 -0
  558. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131656.json +0 -0
  559. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131703.json +0 -0
  560. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131708.json +0 -0
  561. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T132050.json +0 -0
  562. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T132057.json +0 -0
  563. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T132104.json +0 -0
  564. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.26+4fad559-0.0.26.json +0 -0
  565. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.26+5bafb92-0.0.26.json +0 -0
  566. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.32+1491c13-0.0.31-20261016T133501.json +0 -0
  567. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.32+672bf7b-0.0.32-20261016T164559.json +0 -0
  568. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.32-0.0.31-20261016T130922.json +0 -0
  569. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.32-0.0.31-20261016T131024.json +0 -0
  570. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.25-0.0.26.json +0 -0
  571. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.26+5bafb92-0.0.26.json +0 -0
  572. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.26+654b06a-0.0.26.json +0 -0
  573. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.26+e877631-0.0.26.json +0 -0
  574. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.27+ac80e07-0.0.27.json +0 -0
  575. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.27+ec1df99-0.0.27.json +0 -0
  576. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.27-0.0.27.json +0 -0
  577. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.28-0.0.28.json +0 -0
  578. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-pico-d4-50029191fe34-unknown-0.0.26.json +0 -0
  579. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-series-30eda0e31108-0.0.26+5bafb92-0.0.26.json +0 -0
  580. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-series-30eda0e31108-0.0.26+654b06a-0.0.26.json +0 -0
  581. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-series-30eda0e343c6-0.0.26+5bafb92-0.0.26.json +0 -0
  582. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-series-30eda0e343c6-0.0.26+654b06a-0.0.26.json +0 -0
  583. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-series-30eda0e343c6-0.0.27+ec1df99-0.0.27.json +0 -0
  584. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-series-30eda0e343c6-0.0.28+ffe4eb1-0.0.28.json +0 -0
  585. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-series-30eda0e343c6-0.0.28-0.0.28.json +0 -0
  586. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28+0f013b7-0.0.28.json +0 -0
  587. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28+1c940ca-0.0.28.json +0 -0
  588. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28+4ef21db+4ef21db-dirty-0.0.28.json +0 -0
  589. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28+68d9694-0.0.28.json +0 -0
  590. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28+ec38b1d-0.0.28.json +0 -0
  591. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28+ffe4eb1-0.0.28.json +0 -0
  592. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28-0.0.28.json +0 -0
  593. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/spec_names.py +0 -0
  594. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_cobs.py +0 -0
  595. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance.py +0 -0
  596. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_allocator.py +0 -0
  597. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_analog.py +0 -0
  598. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_analog_payload.py +0 -0
  599. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_arm_adi.py +0 -0
  600. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_arm_adi_blocks.py +0 -0
  601. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_attach.py +0 -0
  602. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_blocks.py +0 -0
  603. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_capture_group.py +0 -0
  604. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_capture_group_geometry.py +0 -0
  605. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_capture_serial.py +0 -0
  606. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_capture_timeline.py +0 -0
  607. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_capture_timeline_lifecycle.py +0 -0
  608. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_clock.py +0 -0
  609. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_core_fixed_fields.py +0 -0
  610. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_core_smoke.py +0 -0
  611. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_corr.py +0 -0
  612. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_cut.py +0 -0
  613. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_data.py +0 -0
  614. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_debug.py +0 -0
  615. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_dependencies.py +0 -0
  616. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_discovery.py +0 -0
  617. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_dmseq.py +0 -0
  618. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_dmseq_target.py +0 -0
  619. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_execution_order.py +0 -0
  620. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_exhausted.py +0 -0
  621. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_gpio.py +0 -0
  622. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_gpio_lifecycle.py +0 -0
  623. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_host_core.py +0 -0
  624. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_host_critical_calls.py +0 -0
  625. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_host_deadline.py +0 -0
  626. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_host_notifications.py +0 -0
  627. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_host_resend.py +0 -0
  628. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_host_tlv.py +0 -0
  629. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_host_values.py +0 -0
  630. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_i2c.py +0 -0
  631. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_interface_smoke.py +0 -0
  632. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_interfaces.py +0 -0
  633. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_lease.py +0 -0
  634. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_link_routes.py +0 -0
  635. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_link_transfers.py +0 -0
  636. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_logic.py +0 -0
  637. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_mailbox.py +0 -0
  638. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_notification_output.py +0 -0
  639. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_notification_retention.py +0 -0
  640. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_notification_sequence.py +0 -0
  641. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_oep_declarations.py +0 -0
  642. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_oep_smoke.py +0 -0
  643. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_outcomes.py +0 -0
  644. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_pipeline.py +0 -0
  645. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_port_speed.py +0 -0
  646. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_port_speed_execution.py +0 -0
  647. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_port_speed_lifecycle.py +0 -0
  648. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_probe_input.py +0 -0
  649. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_reconnect.py +0 -0
  650. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_recovery.py +0 -0
  651. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_recovery_races.py +0 -0
  652. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_refusal_order.py +0 -0
  653. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_replay_pressure.py +0 -0
  654. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_replay_records_optional.py +0 -0
  655. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_reset.py +0 -0
  656. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_resources.py +0 -0
  657. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_response_race.py +0 -0
  658. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_restart.py +0 -0
  659. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_retention.py +0 -0
  660. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_retention_lifecycle.py +0 -0
  661. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_retry.py +0 -0
  662. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_routes.py +0 -0
  663. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_run.py +0 -0
  664. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_scan.py +0 -0
  665. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_scan_options.py +0 -0
  666. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_serial.py +0 -0
  667. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_session_loss.py +0 -0
  668. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_session_smoke.py +0 -0
  669. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_spec_guard.py +0 -0
  670. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_spi.py +0 -0
  671. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_step.py +0 -0
  672. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_stream.py +0 -0
  673. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_subscriptions.py +0 -0
  674. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_tcp.py +0 -0
  675. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_tcp_peers.py +0 -0
  676. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_tcp_recovery.py +0 -0
  677. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_tlv_requests.py +0 -0
  678. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_uart.py +0 -0
  679. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_uart_stream.py +0 -0
  680. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_usb.py +0 -0
  681. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_wire_options.py +0 -0
  682. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_conformance_writer_lease.py +0 -0
  683. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_debug_attach.py +0 -0
  684. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_extension_patterns.py +0 -0
  685. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_fixture_targets.py +0 -0
  686. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_flash_console.py +0 -0
  687. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_hardware.py +0 -0
  688. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_hid_stream.py +0 -0
  689. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_host_boot_lifecycle.py +0 -0
  690. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_host_wait_bound.py +0 -0
  691. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_link_drop.py +0 -0
  692. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_link_host.py +0 -0
  693. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_link_serial.py +0 -0
  694. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_linktest.py +0 -0
  695. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_literals.py +0 -0
  696. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_minimal_ops.py +0 -0
  697. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_port_speed.py +0 -0
  698. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_resubscribe_after_reopen.py +0 -0
  699. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review4_capture.py +0 -0
  700. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review4_debug.py +0 -0
  701. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review5_core_b.py +0 -0
  702. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review5_debug_targets.py +0 -0
  703. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review5_small.py +0 -0
  704. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review6_capture_console.py +0 -0
  705. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review6_core_early.py +0 -0
  706. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review6_core_late.py +0 -0
  707. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review6_debug_b.py +0 -0
  708. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review7_exact_payload.py +0 -0
  709. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review7_host_recovery.py +0 -0
  710. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review7_request_validation.py +0 -0
  711. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review7_tlv_readers.py +0 -0
  712. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review8_core_1.py +0 -0
  713. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review8_core_2.py +0 -0
  714. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_review8_debug.py +0 -0
  715. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_spec_sections.py +0 -0
  716. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_target_parts.py +0 -0
  717. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_trace_common.py +0 -0
  718. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_trace_console.py +0 -0
  719. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_trace_debug.py +0 -0
  720. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_trace_link.py +0 -0
  721. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_trace_plan.py +0 -0
  722. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_trace_restart.py +0 -0
  723. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_analog_roles.py +0 -0
  724. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_announce.py +0 -0
  725. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_capture_changing_trigger.py +0 -0
  726. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_capture_initial_trigger_time.py +0 -0
  727. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_capture_lifetime.py +0 -0
  728. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_capture_query.py +0 -0
  729. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_capture_rates.py +0 -0
  730. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_capture_requests.py +0 -0
  731. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_capture_resume_calibration.py +0 -0
  732. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_serve_tcp_connections.py +0 -0
  733. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_bench_targets.py +0 -0
  734. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_core.py +0 -0
  735. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/test_virtual_core_bool.py +0 -0
  736. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/vectors/checks.json +0 -0
  737. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/vectors/cobs.json +0 -0
  738. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/vectors/confirm.json +0 -0
  739. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/vectors/core_extensions.json +0 -0
  740. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/vectors/core_lifecycle.json +0 -0
  741. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/vectors/core_policy.json +0 -0
  742. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/vectors/discovery.json +0 -0
  743. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/vectors/headers.json +0 -0
  744. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/vectors/logic_layout.json +0 -0
  745. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/vectors/ops_encoding.json +0 -0
  746. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/vectors/refusals.json +0 -0
  747. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/tests/vectors/sessions.json +0 -0
  748. {oep_client_python-0.0.34 → oep_client_python-0.0.37}/udev/70-oep-probe.rules +0 -0
@@ -2,6 +2,120 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.0.37
6
+ - (JA) 設定を core(oep-spec core §13、9fc6ad9 / c4fbd6e)に合わせた。`oep_client.config`(`oep.probe.config`)を無くし、
7
+ `oep_client.settings` を足した:
8
+ - fn 0 の get / set / unset / save / state / network。値は(fn、項目番号、key)で運び、host には(カテゴリ、平らな名前、値、出どころ)で見せる。
9
+ - 設定のファイル(docs/oep-settings-file.ja.md)の書き出しと入れ直し(`export`、`plan_import`、`apply_import`)。secret は読まない。
10
+ - `oep config` を `oep settings`(show / items / set / unset / save / state / network / export / import)に置き換えた。
11
+ - 仮想ベンチは fn 0 の設定(各持ち主の項目、固定・既定の値、名前での保存)を持つ。共有ベクタの設定の場合と settings_file.json を通す。
12
+ - 線の名前の探し方(`find_line`)は、出どころによらず全部の `channel.{}.label` から探す(firmware の label も設定の固定の値)。
13
+ - (JA) libusb1 経由の HID(hidapi がない環境の経路)で、カーネルの HID ドライバを外して interface を claim してから、
14
+ レポート記述子を読むようにした。今までは claim の前に読んでいて、Linux の usbfs に LIBUSB_ERROR_IO で断られていた
15
+ (RP2 の HID は interface 3、2026-10-22)。OEP の記述子でなければ interface を戻し、ドライバを付け直す。
16
+ - (JA) `CaptureDrops` に dropped_bytes を足した。ストリームが落としたバイト数の合計で、理由を問わない(写す経路で区画を捨てた
17
+ 分も含む)。oep-probe-arduino e08687c 以降。それより前の形では None。
18
+ - (JA) USB(vendor bulk)の既定を `UsbProcessStream` にした(POSIX のみ)。
19
+ - wireskein の測定: 負荷 14 の host で、P4X の 40 MB/s・30 秒を取った。thread の版は 6 回中 3 回で欠損があり、process の
20
+ 版は 3 回とも欠損 0 だった。
21
+ - `OEP_USB_STREAM=thread` で、今までどおり UsbAsyncStream(このプロセスのスレッド)を使う。Windows は pipe を fd で
22
+ 渡せないので、今までどおり。
23
+ - 子プロセスが動かない(起動できない、準備の前に終わった、時間切れ)ときは、警告を出して UsbAsyncStream に戻す。機器が
24
+ 無いという答えはそのまま返す。
25
+ - 開くのに、子プロセスを起こす分だけ時間がかかる(約 0.6 秒)。
26
+ - (JA) `CaptureDrops` に spill_peak と spill_bytes を足した。P4 のファーム 826eee0 からの、ストリームの DMA リングの後ろの
27
+ 待避 FIFO(PSRAM、8 MiB)の最大使用量と大きさ。それより前のファームの形では None。
28
+ - (JA) `UsbAsyncStream` の既定を 32 KiB × 480 本にした(前は 64 KiB × 128)。
29
+ - probe は各転送を短いパケットで終えるので、URB の大きさによらず 1 本に 1 フレーム(40 MB/s の P4X で約 19 KB)しか入らない。
30
+ host が溜められるのは「本数 × 1 フレーム」になる(64 KiB × 128 は約 2.4 MB、40 MB/s で 60 ms)。wireskein の測定による。
31
+ - 480 × 32 KiB は 15 MiB で、usbfs_memory_mb の既定 16 に収まる。usbfs が途中で断ったら、そこまでの本数で続ける
32
+ (1 本も出せなければ例外)。
33
+ - `open_usb_host(urb_size=, depth=)` で選べる。UsbProcessStream は、このプロセスの URB_SIZE / DEPTH を引き継ぐ。
34
+ - (JA) `UsbProcessStream`: UsbAsyncStream を別のプロセス(`python -m oep_client.usb_stream`)で動かす。形は UsbAsyncStream と同じ
35
+ (read、in_waiting、write、reset_input_buffer、close、stats)。
36
+ - IN の転送の受け取りと出し直しは、そのプロセスの event のスレッドと GIL で行う。host の側のスレッドが GIL を長く持っても
37
+ (numpy、大きな bytes の結合など)、転送は止まらない。読まれていない分は、そのプロセスに溜まる。
38
+ - データはパイプで、write と stats は socket pair で受け渡す。multiprocessing の spawn は使わない(呼び出し側の __main__ を
39
+ もう一度走らせるため)。
40
+ - 環境変数 `OEP_USB_STREAM=process` で、open_host の USB がこれを使う(既定は今までどおり UsbAsyncStream)。
41
+ - wireskein の切り分けを受けた。負荷 14 のとき、event のスレッドが最大 6 秒止まり、40 MB/s の P4X で欠損が出ていた。
42
+ 実機では、まだ確かめていない。
43
+ - (JA) `UsbAsyncStream`: 戻った IN の転送は、データを写したらすぐ出し直し、ロック(read() と共有)はその後に取るようにした。
44
+ 前はロックを取ってから出し直していたので、read() がロックを持つ間は転送が戻らなかった。`stats()` を足した(callbacks、
45
+ inflight_min = callback の時点で出ていた転送の最少、gap_max_s = callback の間隔の最大、buffered_max、bytes、urb_size、
46
+ depth)。`open()` / コンストラクタで urb_size と depth を選べる(既定は URB_SIZE × DEPTH = 64 KiB × 128)。
47
+ wireskein の切り分け(負荷 14 で 40 MB/s に欠損。event のスレッドが時々数百 ms から数秒止まる)を受けた。
48
+ - (JA) `CaptureGroup.stream(link, tracks, seconds=, nbytes=, into=)` -> `{fn: Received}`: ストリーミングのトラックを集めた
49
+ capture-group で、1 本の経路に混ざって届く push をトラックごと(fn ごと)の Received に分けて集める。seq、generation、gap、
50
+ segment_info の扱いは `LogicCapture.stream()` と同じ(その内側を `_collect()` に切り出した)。nbytes は全トラックが届くまで待つ。
51
+ `CaptureGroup.finish()` は各トラックの `finish()` を呼ぶ。wireskein の依頼。
52
+ - (JA) `Wire.scan`: 1 回の要求に入れる組を、255 までかつ経路の max_frame に収まる数にした。前は 255 組を詰めていて、
53
+ max_frame 1024 の経路で候補が多いと(rp2350-pins の 812 組)1031 バイトの要求を送っていた(仮想ベンチはそれを受けていた)。JS への移植で見つかった。
54
+
55
+ ## 0.0.36
56
+ - (JA) 試験: segment_columns の試験は、numpy が無ければ飛ばす(numpy は任意の依存。numpy の無い CI で落ちていた)。
57
+ - (JA) `CaptureGroup.trigger_caps()` -> `TriggerCaps | None`: capture-group の describe の trigger_caps(§4.4、0x41)を読む(max_stages、
58
+ max_terms、max_conds、cross_track、types、protocols、trigger_out_latency_ns。trigger_out が無ければ None)。`takes(COND[...])` と
59
+ `kinds()`(宣言された条件の型の名前)で、bind の前に頼めるかを確かめられる。宣言なしや知らない形では None(宣言は目安で、正しいのは
60
+ bind の答え)。wireskein の依頼。P4X(5a61110)で level、edge、cross_up、cross_down と読めた。
61
+ - (JA) `capture_blocks.segment_columns` / `LogicCapture.columns(data, samples)`: 形式 1 の区画を、ブロックを作らずに列で読む(numpy が要る)。
62
+ raw のチャネルはビット列、events のチャネルは区画を通した刻み(`EventColumn`: quanta、levels、counts、start_level)。fallback の
63
+ ブロックは、その標本から probe と同じ数え方で刻みに直す。検査は read_logic_blocks と同じ。ヘッダだけを Python で辿り、raw は
64
+ (fallback の組、r)ごとにまとめて、events は区画の全行を一度に読む(wireskein の提案と試作。60 ブロックの区画で 54 → 10 ms)。
65
+ - (JA) 仮想ベンチ: 形式 0 / 4 とアナログの streaming も、1 回の tick で作るサンプルを BLOCKS_A_TICK までにした(形式 1 と同じ。作れる
66
+ 速さで遅れて流す)。前は経過した時間ぶんを一度に作ろうとして、tick が長引くほど次の tick が重くなり、1 MHz × 2 本でも 0.3 秒の
67
+ あいだ push が 1 つも来ず、stop の応答に 12.8 秒かかっていた(wireskein の報告)。
68
+ - (JA) oep-spec e1d5495 に追従(registry とベクタを取り込み)。configure / query の応答の judge_latency_ns(§3.3)を
69
+ `Config.judge_latency_ns` で読む(組の出来事の元の条件を判定するトラックの、出来事と知るまでの最大の時間。返さない probe は None)。
70
+ - (JA) `UsbAsyncStream.DEPTH` の既定を 32 から 128 にした(64 KiB × 128 = 8 MiB、40 MB/s で 200 ms ぶん)。P4X の 40 MHz・8 本の 30 秒で、
71
+ 32 では USB の受け取り側のときどきの止まり(URB の出し直しの遅れ、バス)で 0.2〜0.6 % を落とした。128 では wireskein の 2 回と
72
+ こちらの 5 回(形式 0 を 4 回、形式 4 を 1 回)、すべて落としなし。
73
+ - (JA) `LogicCapture.stream()` の keepalive の間隔を、同じ `into` の呼びをまたいで数えるようにした。前は呼ぶたびに数え直していたので、
74
+ 0.2 秒ずつ刻んで呼ぶ host では keepalive が 1 度も出ず、30 秒の取得の途中で lease が切れていた(wireskein の報告)。
75
+ - (JA) `capture.CaptureDrops.buffer_peak`: Arduino の firmware の capture-drops に足された最後の u32(ストリームの溜め、P4 では PSRAM の
76
+ DMA リングが、送られずに持っていた最大のバイト数)。前の形(30 B)は `buffer_peak` を None にして読む。
77
+ - (JA) oep-spec 569e86b(capture §3.3 stream_buffer)に追従。`Config.stream_buffer` と `Config.tolerable_delay_s()`(host が読みを止めて
78
+ よい時間の目安。形式 1 / 2 は最悪の帯域を渡す)。仮想ベンチは streaming の応答で 1 MiB を返す。`link.reader`("usb-async"、"usb-sync"、
79
+ ほかは stream の型の名前)で、どちらの USB の読みかが分かる(wireskein の依頼。同期の読みでは host の揺れが probe の落としになる)。
80
+ - (JA) 名前付き拡張(core §2.2、tag 0x7F)を共通に読む: `message.named_extensions(tlvs)`、`Tail.named()`(名前 → data、同じ名前は最初)。
81
+ キャプチャの `Status.named`。Arduino の firmware 独自の診断 `capture.CaptureDrops`(`io.github.open-embedded-probe.capture-drops`:
82
+ 落としの内訳、経路、stage の数、メモリ)を `CaptureDrops.of(status)` で読む(wireskein の依頼)。registry と vectors は oep-spec 0eb94f8。
83
+ - (JA) 受信: 呼び出し側の時間切れの時点で frame が途中まで届いていても、FramingLost にしない(届いた分を取っておいて次の呼び出しで続ける)。
84
+ FramingLost は、frame の途中で受信が probe_frame_gap_ms 以上止まったときだけ。16 KiB の push が 20 ms の pump の境目にかかると「区切りが
85
+ 崩れた」とみなして同期をやり直し、その間の push を捨てていた(2026-10-20、P4X の形式 4)。
86
+ - (JA) `capture_blocks.LogicBlock.start_levels`: events のチャネル全部(fallback も含む)の、ブロックの直前のレベル(§1.3 start_level)。
87
+ 区画の境目の変化を、fallback のブロックでも数えられる(wireskein の依頼)。
88
+ - (JA) 仮想ベンチ: 形式 1 の streaming は、1 回の tick で作るサンプルを BLOCKS_A_TICK までにする(作れる速さで遅れて流す)。stop は作りかけの
89
+ ブロックだけを閉じる。2 MHz × 4 本で、遅れを取り戻そうとして応答しなくなっていた(wireskein の報告)。
90
+ - (JA) 仮想ベンチの §4.4 を oep-spec e87b50b に合わせた(段の入り口の when、アーム前の最後のサンプルとの比較、決めた段のトラックの不確かさ)。
91
+ - (JA) oep-spec 8e7ca20 の capture に追従(第 1 波)。
92
+ - 形式 1(ロジックのブロック、§1.3): `capture_blocks.read_logic_blocks` で復号する。raw と fallback のチャネルはビット列(bytes)で、events の
93
+ チャネルは (tick、level、count) で返す。numpy があれば、見出しだけを Python で読み、残りを numpy でまとめて読む。
94
+ `LogicCapture.configure(data_format=, events=, roles=, block_max=)` で設定し、read_segment は区画の終わり(次の区画の position か
95
+ write_pos)まで 1 回で読む。`lc.blocks()` で復号し、`worst_bytes()` で最悪の大きさを計算する。
96
+ - 形式 4(試験の並び): ストリームの position k のバイトが k & 0xFF になる。
97
+ - trigger_opts(arm、rearm、when、hysteresis)は `capture.TriggerOpts` で設定する。既定は arm 1、when 0 で、前の版の「最初に見えた条件で立つ」は
98
+ arm 0、when 1 で表す。
99
+ - トリガの記録(§3.10)は `lc.triggers()` で読む。triggered の出来事は record、sample、uncertainty_ns も持つ。
100
+ - 仮想ベンチ: P4 のロジックは形式 1(mode 1 / 2)と形式 4 を、アナログは形式 4 を宣言する。rearm 1 の repeat では区画の間も state 3 のまま
101
+ 待ち、status の flags bit2、区画の flags bit3 / bit0 を立てる。configure は実装した TLV だけを知っていて、ほかを critical なら unsupported で
102
+ 断る。capture-group の force は §4.4 を入れるまで ops から外す。
103
+ - conformance: triggers と group の force を任意の op として扱い、bind の TLV が定義されていても通す。
104
+ - 仮想ベンチの形式 1 は streaming にも対応する。ブロックは揃ってから送る。stop では短い最後のブロックを送る。区画の位置は、区画が始まるたびに
105
+ 記録した表から引く。購読が無い間に始まった区画は丸ごと捨てる。
106
+ - capture-group §4.4 の出来事の元(trigger source)を入れた。
107
+ - クライアント: `capture.TriggerSource`、`Stage`、`Cond`(level、edge、cross_up / cross_down、above / below、timer)で式を組み、
108
+ `CaptureGroup.bind(tracks, source)` で送る(どれも critical)。`CaptureGroup.force()`、`GroupStatus.trigger`(fn、ns、uncertainty_ns)、
109
+ group の triggered(trigger_fn、record、ns、uncertainty)。トラックは `trigger=(LINKED, 0, 0)` と自分の pretrigger で configure する。
110
+ - 仮想ベンチ(P4 の group): features bit 0 と trigger_caps を宣言し、force を持つ。持つものは、4 段 × 4 項 × 4 条件、トラックをまたぐ AND、
111
+ count、within_ns、on_timeout 0 / 1、abort、arm。rearm 1、外部の入力、trigger_out、serial は持たない。
112
+ - 判定は、項が見るトラックのうち最も速いもののサンプルで行う(時刻の来たサンプルだけを見る)。
113
+ - 出来事では、各トラックが自分のサンプルで区画を切り、自分の triggered を送る。
114
+ - linked のトラックを単独で start すると cause 6、trigger source の組に linked でないトラックを入れると cause 6。
115
+ - 仮想ベンチの `--logic-wave ROLE=SPEC`(`virtual_bench_capture.logic_wave`): ロジックの役割ごとに波形を選ぶ。counter、quiet[:LEVEL]、
116
+ square:PERIOD、uart:BAUD[:TEXT](8N1 の文字、文字の間はアイドル)。静かな線と UART のような線で、形式 1 の典型の帯域を測れる
117
+ (§1.3 の例: 2110 B / ブロック、125 MHz で 64.4 MB/s。仕様の見積もりは 63.6 MB/s)。
118
+
5
119
  ## 0.0.34
6
120
  - (JA) oep-spec bc52327(debug §2 の閉じた後の保持、§2.2 holds、probe.config の wire-hold、core §8 の例外)に追従。仮想ベンチは、線切れ以外で
7
121
  接続を閉じたらその口の休みの状態を保持し、ピンを取られる、wire-hold が off、idle / disable の項目、で保持を終える。駆動が止まると halt を失う
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: oep-client-python
3
- Version: 0.0.34
3
+ Version: 0.0.37
4
4
  Summary: Open Embedded Probe (OEP) v1 host: serial / USB / TCP transports, the session rules, the standard interfaces, and a virtual bench
5
5
  Project-URL: Homepage, https://github.com/Open-Embedded-Probe/oep-client-python
6
6
  Project-URL: Repository, https://github.com/Open-Embedded-Probe/oep-client-python
@@ -84,7 +84,7 @@ names starting with `_`, may change. Check probe/client compatibility using the
84
84
  | `pins` | `oep pins`: classify the channels, hold-low search, scan, identify, confirm the reset line, suggest the connection profile and the labels (`PinFinder`) |
85
85
  | `console` | `oep.target.console` (position streams: read answers carry their length; marks carry `time_ns`, the common kinds lost / clear / host and the console's reset 0x40 / restart 0x41; the lock-free `streams()` list of stream, connection and mechanism; `open(conn, mechanism)` always makes a new stream (u32) on the connection - a second on a connection with a live one is unavailable cause 6 -; a stream is the session's - close, its connection's release and the session's end release it with its buffer, and its number answers no_resource after that; a write goes into the stream's send queue - its size is the probe's own, not declared -, accepted = min(count, its free space), 0 only when full; an SDI stream's write is unsupported; marks, clear, mark and write are optional) and `ConsoleIO`, read as bytes and written in chunks of at most one frame, on from each answer's accepted (`stall_s`: TimeoutError when nothing is taken for that long) |
86
86
  | `fixture` | `oep.fixture.gpio` (`set([(ch, mode)])` applied in order in one request, `read(channels)` the levels; the output strength is the probe's own - there is no drive selection) / `uart` (its stream is the plan's; nothing is received until `configure(baud, fmt)`; `status()` = `UartStatus(baud, format)` in force, baud 0 and format 0 while not configured; a configure the probe could not bring up raises `Failed` and leaves it not configured) / `i2c-target` (one form: `configure(address)` - the target made anew -, every controller write with data one frame for `read_rx`, reads answered from `preload_tx(data)` slots or 0xFF, `status()` = `I2cStatus(state, queued, rx_frames, tx_slots, errors)`, `stretch` when the ops offer it, `internal_pullups`: whether it enables pull-ups of its own; the reserved addresses 0x00-0x07 / 0x78-0x7F refused before sending) / `spi-target` (no reset: configure again; `cs_setup_ns`: how long after CS the first bit is sure; `oep dump` shows it) |
87
- | `config` | `oep.probe.config` (label / idle / disable items keyed by channel, get / set / unset with counts, save / erase / state when the probe has storage; `describe()` = the declarations, `state()` = `State(storage, saved_generation, reason)`; the generation counts the changes of a boot from 1: `same_items(a, b)` compares items, `needs_save()` says whether a save would change the storage, `apply(wanted, save=False)` sets / unsets what differs (host guide §15); `find_line(cfg, "nrst", profile=None)` = host guide §5.3's line lookup, the firmware's fixed labels as its last step) |
87
+ | `settings` | the core's settings (oep-spec core §13): fn 0's get / set / unset / save / state / network. `Settings(hst)`: `catalog()` = the names of this boot (each fn's category `core` / `name/instance`, items, choices, channel / route / netif names), `show()` = every value as (category, flat name, value, origin), `set_named(category, {flat: value})` / `unset_named` / `unset_all`, raw `set` / `unset` by (fn, number, key), `save()`, `state()`, `network()`; `export()` / `plan_import(doc)` / `apply_import(plan)` = the settings file (oep-spec docs/oep-settings-file.ja.md; secrets never read); `find_line(source, "nrst", profile=None)` = host guide §5.3's line lookup over every channel label |
88
88
  | `capture` | `oep.fixture.logic` / `analog` / `capture-group` (revision 1, oep-spec oep-if-capture). configure's TLVs follow core §2.3: a value the probe cannot honour is refused unsupported with the tag as sent (the table's TLVs go without the critical bit); the answer holds the actual values, its samples among them (analog: a scale for every role, a skew left out read as 0). Every `start()` returns a new generation (`LogicCapture.generation`, never re-used within a boot: past 0xFFFFFFFF a start is refused until a reboot) that read and release name - `read_segment(segment)` passes the segment's own - and every event carries (`events()` drops an earlier start's); streaming data frames carry their generation and their segment (segment_info, never crossing a segment: `Received.segments`); `status()` returns a `Status`. A capture-group binds configured tracks with an immediate trigger, all in one mode, and starts them at once (`CaptureGroup.start` -> the group's start_ns; the group's and each track's generation). Every segment read goes to the `Host.on_capture` callbacks as a `CaptureRecord` (the hook for run recorders; no wireskein dependency) |
89
89
  | `decode` | decoding capture channels (I2C) |
90
90
  | `registry` | generated from oep-spec's number table (never edited; copied again from oep-spec). The public way to reach an interface by name is `registry.INTERFACES[name]` (`.revision`, `.op`, `.tlv`, `.enum`, e.g. `INTERFACES["oep.fixture.uart"].enum["role"]`); the module-level names (`FIXTURE_UART`, ...) are the same objects |
@@ -135,10 +135,13 @@ A probe's CDC ports (`/dev/ttyACM*`) need no rule beyond the usual `dialout` gro
135
135
 
136
136
  ```sh
137
137
  oep dump --port <probe> # what the probe offers (--virtual p4-x035: no hardware)
138
- oep config show <probe> # the settings, the declarations and the storage state
139
- oep config state <probe> # the storage state alone (lock-free)
140
- oep config label <probe> 23 nrst # also: idle CH MODE, disable CH..., remove KIND CH (each takes --save)
141
- oep config save <probe> # kept over a restart (also: erase)
138
+ oep settings show <probe> # every value with its origin, and the storage state
139
+ oep settings items <probe> # what each owner declares (names, forms, choices)
140
+ oep settings set <probe> core channel.GPIO23.label=nrst channel.GPIO20.idle=pull-up [--save]
141
+ oep settings unset <probe> core channel.GPIO20.idle [--save] # or --all (then --save empties the storage)
142
+ oep settings save <probe> # kept over a restart
143
+ oep settings export <probe> jig.oep-settings.json # the user's values by name (secrets left out)
144
+ oep settings import <probe> jig.oep-settings.json [--save] # shows the changes, asks, then sets / unsets
142
145
  oep speed <probe> [921600,500000] [--verify] [--flows out:2] # port_speed: raise a UART bridge (default 500000), print the report (below)
143
146
  oep pins <probe> --power 5 --wire swio # where the target is wired: debug pins, reset line, labels (below)
144
147
  oep clock <probe> [-n 8] [--json] # fn 0's clock: uptime_ns and boot_id against this host's time (shortest of n)
@@ -150,7 +153,7 @@ oep linktest <probe> ... # --timeout: 0.3 s an answer by def
150
153
 
151
154
  `<probe>` is a serial port, `tcp://HOST:PORT`, `tcp://HOST` (the port DNS-SD finds for that host), `tcp:UNIT_ID` (the
152
155
  probe DNS-SD finds by its TXT unit_id; describe's unit_id must say the same, else it is closed) or
153
- `usb[:VID:PID[:SERIAL]]`. A change takes the lock (owner "oep config") and
156
+ `usb[:VID:PID[:SERIAL]]`. A change takes the lock (owner "oep settings") and
154
157
  ends the session after it; it takes effect at once and, after `save`, stays over a restart.
155
158
 
156
159
  ### A host run again: the kept session id
@@ -176,7 +179,7 @@ sets `hst.kept = kept_session.KeptSession()` on a Host it builds itself.
176
179
 
177
180
  ### TCP
178
181
 
179
- A probe that serves OEP over TCP is found by DNS-SD (its network settings are not oep.probe.config's).
182
+ A probe that serves OEP over TCP is found by DNS-SD (its network settings are the core's: transports §7).
180
183
 
181
184
  - `oep find` browses `_oep._tcp` (transports §3, host guide §4.1) and lists unit_id, host, port and address. The
182
185
  service name `oep` is not registered, so another service may advertise `_oep._tcp`: each instance is verified first
@@ -249,9 +252,9 @@ attach swio 19: target_id 00310510 (WCH DMI 0x7F) -> ch32v00x, halted at dpc 0x1
249
252
  option bytes (read only): RST_MODE 10 (USER 0xf7): NRST on PD7, 12 ms ignore window
250
253
  attach under reset through 4 (held 20 ms): dpc 0x0 -> the reset line
251
254
  profile: wire swio, pins 19 (the host's to keep: the probe keeps no wiring)
252
- label: oep config label ... 4 nrst (not written)
253
- label: oep config label ... 5 power_hi (not written)
254
- idle: oep config idle ... 5 output-high (keeps the target powered while no plan holds channel 5; not written by this tool)
255
+ label: oep settings set ... core channel.GPIO4.label=nrst (not written)
256
+ label: oep settings set ... core channel.GPIO5.label=power_hi (not written)
257
+ idle: oep settings set ... core channel.GPIO5.idle=high (keeps the target powered while no plan holds channel 5; not written by this tool)
255
258
  released every plan (channel 5 is back to its idle state: the target is powered only while something drives it)
256
259
  done in 7.3 s
257
260
  ```
@@ -394,10 +397,10 @@ halted or a riscv-dm request of that connection runs (`console_take(sid)` hands
394
397
  lines outside through `gpio_world`); uart receives nothing until configured, status baud and format; i2c-target one form
395
398
  (a write with data one frame, cut at max_length; reads from preload_tx slots, else 0xFF); spi-target without reset.
396
399
  Capture: configure's TLVs follow core §2.3 alone; a bound track's start / configure is unavailable cause 4, a bind short
397
- of resources cause 2 with the fn; a read at or past the write position answers write_pos and len 0. probe.config: label / idle /
398
- disable items (idle 3 bytes; an item of another length malformed); the generation counts the changes of a boot from 1;
399
- state is storage_state, saved_generation, reason; at boot the saved items are checked one by one, disable first, and what
400
- fails is left out (partial). port_speed: baud / step / verify_ms on the UART bridge the request came in on, within
400
+ of resources cause 2 with the fn; a read at or past the write position answers write_pos and len 0. The settings (core §13): each fn's items from its
401
+ describe, values with their origin (the firmware's fixed / default ones from the profile); a value of another length
402
+ malformed; the generation counts the changes of a boot from 1; state is storage_state, saved_generation, reason; at boot
403
+ the saved values (by category and item name) are checked one by one, disable first, and what fails is left out (partial). port_speed: baud / step / verify_ms on the UART bridge the request came in on, within
401
404
  port_speed_tolerance_pct, phases 0-3 read by port_state; the virtual bench goes back after verify_ms, after
402
405
  port_speed_idle_ms with no good frame, or at the session's end - never on broken frames.
403
406
 
@@ -52,7 +52,7 @@ GitHub Release、PyPI(Trusted Publishing)へ出す。変更は CHANGELOG.md
52
52
  | `pins` | `oep pins`: channel の分類、low に保つ探索、scan、識別、リセットの線の確かめ、接続プロファイルと label の提案(`PinFinder`) |
53
53
  | `console` | `oep.target.console`(位置つきのストリーム: read の応答は長さを持ち、マークは `time_ns` と、共通の kind の lost / clear / host、コンソールの reset 0x40 / restart 0x41 を持つ。ロック不要の `streams()` は stream、connection、mechanism の並び。`open(conn, mechanism)` はいつもその connection に新しいストリーム(u32)を作る - 生きているストリームのある connection への 2 つ目は unavailable cause 6 -。ストリームはセッションのもので、close、connection の解放、セッションの終わりでバッファごと解放され、その番号はその後 no_resource。write はストリームの送りの列に入る - 列の大きさは probe が決め、宣言しない -。accepted = count と列の空きの小さい方で、0 は列が満ちたときだけ。SDI のストリームへの write は unsupported。marks、clear、mark、write は任意)と、バイト列として読み、多くても 1 フレームずつ、応答の accepted の続きから書く `ConsoleIO`(`stall_s`: その間何も受けなければ TimeoutError) |
54
54
  | `fixture` | `oep.fixture.gpio`(`set([(ch, mode)])` は 1 つの要求で順に当て、`read(channels)` は level を返す。出力の強さは probe 自身のもので、選ぶ手段は無い)/ `uart`(ストリームは plan が作る。`configure(baud, fmt)` までは何も受けない。`status()` = いま効いている `UartStatus(baud, format)` で、configure していなければ baud 0、format 0。probe が立ち上げられなかった configure は `Failed` を上げ、configure していない状態に戻る)/ `i2c-target`(1 つの形: `configure(address)` - target を作り直す -、データのある controller の書き込み 1 回が `read_rx` の 1 フレーム、読み出しには `preload_tx(data)` の置き場か 0xFF で答える、`status()` = `I2cStatus(state, queued, rx_frames, tx_slots, errors)`、ops にあれば `stretch`、`internal_pullups`: 自分の pull-up を入れるか。予約のアドレス 0x00〜0x07 / 0x78〜0x7F は送る前に断る)/ `spi-target`(reset は無く、configure し直す。`cs_setup_ns`: CS の後、最初のビットが確かになるまでの時間。`oep dump` が出す) |
55
- | `config` | `oep.probe.config`(channel ごとの label / idle / disable の項目、count 付きの get / set / unset、保存を持つ probe では save / erase / state。`describe()` = 宣言、`state()` = `State(storage, saved_generation, reason)`。generation は起動から 1 で数える変更の回数: `same_items(a, b)` は項目で比べ、`needs_save()` は保存すると保存が変わるかを言い、`apply(wanted, save=False)` は違う分を set / unset する(host ガイド §15)。`find_line(cfg, "nrst", profile=None)` = host ガイド §5.3 の線の探し方で、firmware の固定 label が最後の段) |
55
+ | `settings` | core の設定(oep-spec core §13): fn 0 の get / set / unset / save / state / network。`Settings(hst)`: `catalog()` = その起動の名前(各 fn のカテゴリ `core` / `name/instance`、項目、選択肢、channel・経路・netif の名前)、`show()` = 全部の値を(カテゴリ、平らな名前、値、出どころ)で、`set_named(category, {平らな名前: 値})` / `unset_named` / `unset_all`、番号での `set` / `unset`、`save()`、`state()`、`network()`。`export()` / `plan_import(doc)` / `apply_import(plan)` = 設定のファイル(oep-spec docs/oep-settings-file.ja.md。secret は読まない)。`find_line(source, "nrst", profile=None)` = host ガイド §5.3 の線の探し方(全部の channel の label から) |
56
56
  | `capture` | `oep.fixture.logic` / `analog` / `capture-group`(revision 1、oep-spec の oep-if-capture)。configure の TLV は core §2.3 に従う: probe が守れない値は送ったままの tag で unsupported で断られる(表の TLV は critical を付けずに送る)。応答が実際の値で、samples もそれが正しい(アナログ: scale は役割ごとに必ずあり、省かれた skew は 0 と読む)。`start()` はそのたびに新しい世代を返す(`LogicCapture.generation`。同じ起動の間は使い回さず、0xFFFFFFFF の後の start は再起動まで断られる)。read と release はその世代を付け(`read_segment(segment)` は区画自身の世代を付ける)、どの出来事も世代を持つ(`events()` は前の start のものを捨てる)。ストリーミングのデータフレームは世代と自分の区画を持ち、区画をまたがない(segment_info、`Received.segments`)。`status()` は `Status` を返す。capture-group は configure 済みで即時のトリガの、同じ mode のトラックを束ね、一度に始める(`CaptureGroup.start` -> group の start_ns。group と各トラックの世代)。読んだ区画は `Host.on_capture` の callback に `CaptureRecord` で渡る(記録の受け口。wireskein には依存しない) |
57
57
  | `decode` | キャプチャのチャネルの復号(I2C) |
58
58
  | `registry` | oep-spec の番号の表から生成したモジュール(編集しない。oep-spec から写し直す)。名前からインターフェースの番号を引く公開の入口は `registry.INTERFACES[name]`(`.revision`、`.op`、`.tlv`、`.enum`。例 `INTERFACES["oep.fixture.uart"].enum["role"]`)。`FIXTURE_UART` などのモジュールの名前は同じもの |
@@ -102,10 +102,13 @@ probe の CDC の口(`/dev/ttyACM*`)は、いつもの `dialout` グルー
102
102
 
103
103
  ```sh
104
104
  oep dump --port <probe> # 能力の一覧(--virtual p4-x035 でハードウェアなし)
105
- oep config show <probe> # 設定、宣言、保存の状態
106
- oep config state <probe> # 保存の状態だけ(ロック不要)
107
- oep config label <probe> 23 nrst # ほかに idle CH MODE、disable CH...、remove KIND CH(どれも --save を取る)
108
- oep config save <probe> # 再起動の後も残す(erase もある)
105
+ oep settings show <probe> # 全部の値と出どころ、保存の状態
106
+ oep settings items <probe> # 各持ち主が宣言する項目(名前、形、選択肢)
107
+ oep settings set <probe> core channel.GPIO23.label=nrst channel.GPIO20.idle=pull-up [--save]
108
+ oep settings unset <probe> core channel.GPIO20.idle [--save] # --all なら全部(その後の --save で保存も空に)
109
+ oep settings save <probe> # 再起動の後も残す
110
+ oep settings export <probe> jig.oep-settings.json # 利用者の値を名前で書き出す(secret は入らない)
111
+ oep settings import <probe> jig.oep-settings.json [--save] # 変わる所を見せ、確かめてから set / unset
109
112
  oep speed <probe> [921600,500000] [--verify] [--flows out:2] # port_speed: UART bridge を速くし(既定 500000)、結果を出す(下)
110
113
  oep pins <probe> --power 5 --wire swio # target のつながり方: debug のピン、リセットの線、label(下)
111
114
  oep clock <probe> [-n 8] [--json] # fn 0 の clock: uptime_ns と boot_id をこの host の時刻に合わせて(n 回のうち往復が最短のもの)
@@ -116,7 +119,7 @@ oep linktest <probe> ... # --timeout: 既定は応答 1 つ
116
119
  ```
117
120
 
118
121
  `<probe>` はシリアルの口、`tcp://HOST:PORT`、`tcp://HOST`(その host に DNS-SD が見つけた port)、`tcp:UNIT_ID`(TXT の unit_id で
119
- DNS-SD が見つけた probe。describe の unit_id が同じでなければ閉じる)、`usb[:VID:PID[:SERIAL]]`。変更はロックを取り(owner "oep config")、終わったら
122
+ DNS-SD が見つけた probe。describe の unit_id が同じでなければ閉じる)、`usb[:VID:PID[:SERIAL]]`。変更はロックを取り(owner "oep settings")、終わったら
120
123
  セッションを閉じる。変更はすぐ効き、`save` の後は再起動しても残る。
121
124
 
122
125
  ### 走り直す host: 残したセッションの id
@@ -141,7 +144,7 @@ Host に `hst.kept = kept_session.KeptSession()` を置く。
141
144
 
142
145
  ### TCP
143
146
 
144
- TCP で OEP を運ぶ probe は DNS-SD で見つける(ネットワークの設定は oep.probe.config のものではない)。
147
+ TCP で OEP を運ぶ probe は DNS-SD で見つける(ネットワークの設定は core のもの: transports §7)。
145
148
 
146
149
  - `oep find` は `_oep._tcp` を browse し(transports §3、host ガイド §4.1)、unit_id、host、port、アドレスを並べる。service の名前
147
150
  `oep` は登録した名前ではないので、別のサービスが `_oep._tcp` を広告しうる: どの instance もまず確かめる(`discovery.verify`、
@@ -209,9 +212,9 @@ attach swio 19: target_id 00310510 (WCH DMI 0x7F) -> ch32v00x, halted at dpc 0x1
209
212
  option bytes (read only): RST_MODE 10 (USER 0xf7): NRST on PD7, 12 ms ignore window
210
213
  attach under reset through 4 (held 20 ms): dpc 0x0 -> the reset line
211
214
  profile: wire swio, pins 19 (the host's to keep: the probe keeps no wiring)
212
- label: oep config label ... 4 nrst (not written)
213
- label: oep config label ... 5 power_hi (not written)
214
- idle: oep config idle ... 5 output-high (keeps the target powered while no plan holds channel 5; not written by this tool)
215
+ label: oep settings set ... core channel.GPIO4.label=nrst (not written)
216
+ label: oep settings set ... core channel.GPIO5.label=power_hi (not written)
217
+ idle: oep settings set ... core channel.GPIO5.idle=high (keeps the target powered while no plan holds channel 5; not written by this tool)
215
218
  released every plan (channel 5 is back to its idle state: the target is powered only while something drives it)
216
219
  done in 7.3 s
217
220
  ```
@@ -331,9 +334,9 @@ restart 0x41。DMDATA / dmseq のストリームの送りの列は poll ごと
331
334
  (外の線は `gpio_world`)。uart は configure するまで何も受けず、status は baud と format。i2c-target は 1 つの形(データのある書き込み
332
335
  1 回が 1 フレームで max_length で切る。読み出しは preload_tx の置き場から、無ければ 0xFF)。spi-target に reset は無い。capture:
333
336
  configure の TLV は core §2.3 だけに従う。bind されたトラックの start / configure は unavailable cause 4、資源の足りない bind は cause 2 と
334
- fn。書き込み位置以降の read は write_pos と len 0 を答える。probe.config: label / idle / disable の項目(idle は 3 byte。長さが形と違う
335
- 項目は malformed)。generation は起動から 1 で数える変更の回数。state は storage_state、saved_generation、reason。起動時は保存した項目を
336
- 1 つずつ確かめ、disable を先に当て、当てられないものは外す(部分適用)。port_speed: 要求が来た UART bridge の口への
337
+ fn。書き込み位置以降の read は write_pos と len 0 を答える。設定(core §13): 各 fn の項目は describe から、値は出どころつき(firmware の固定・既定は
338
+ profile から)。長さが形と違う値は malformed。generation は起動から 1 で数える変更の回数。state は storage_state、saved_generation、reason。
339
+ 起動時は保存した値(カテゴリと項目の名前で)を 1 つずつ確かめ、disable を先に当て、当てられないものは外す(部分適用)。port_speed: 要求が来た UART bridge の口への
337
340
  baud / step / verify_ms で、port_speed_tolerance_pct の内、phase 0〜3 は port_state で読める。仮想ベンチが戻るのは verify_ms の後、正常な
338
341
  フレームの無い port_speed_idle_ms の後、セッションの終わり - 壊れたフレームでは戻らない。
339
342
 
@@ -59,7 +59,7 @@ names starting with `_`, may change. Check probe/client compatibility using the
59
59
  | `pins` | `oep pins`: classify the channels, hold-low search, scan, identify, confirm the reset line, suggest the connection profile and the labels (`PinFinder`) |
60
60
  | `console` | `oep.target.console` (position streams: read answers carry their length; marks carry `time_ns`, the common kinds lost / clear / host and the console's reset 0x40 / restart 0x41; the lock-free `streams()` list of stream, connection and mechanism; `open(conn, mechanism)` always makes a new stream (u32) on the connection - a second on a connection with a live one is unavailable cause 6 -; a stream is the session's - close, its connection's release and the session's end release it with its buffer, and its number answers no_resource after that; a write goes into the stream's send queue - its size is the probe's own, not declared -, accepted = min(count, its free space), 0 only when full; an SDI stream's write is unsupported; marks, clear, mark and write are optional) and `ConsoleIO`, read as bytes and written in chunks of at most one frame, on from each answer's accepted (`stall_s`: TimeoutError when nothing is taken for that long) |
61
61
  | `fixture` | `oep.fixture.gpio` (`set([(ch, mode)])` applied in order in one request, `read(channels)` the levels; the output strength is the probe's own - there is no drive selection) / `uart` (its stream is the plan's; nothing is received until `configure(baud, fmt)`; `status()` = `UartStatus(baud, format)` in force, baud 0 and format 0 while not configured; a configure the probe could not bring up raises `Failed` and leaves it not configured) / `i2c-target` (one form: `configure(address)` - the target made anew -, every controller write with data one frame for `read_rx`, reads answered from `preload_tx(data)` slots or 0xFF, `status()` = `I2cStatus(state, queued, rx_frames, tx_slots, errors)`, `stretch` when the ops offer it, `internal_pullups`: whether it enables pull-ups of its own; the reserved addresses 0x00-0x07 / 0x78-0x7F refused before sending) / `spi-target` (no reset: configure again; `cs_setup_ns`: how long after CS the first bit is sure; `oep dump` shows it) |
62
- | `config` | `oep.probe.config` (label / idle / disable items keyed by channel, get / set / unset with counts, save / erase / state when the probe has storage; `describe()` = the declarations, `state()` = `State(storage, saved_generation, reason)`; the generation counts the changes of a boot from 1: `same_items(a, b)` compares items, `needs_save()` says whether a save would change the storage, `apply(wanted, save=False)` sets / unsets what differs (host guide §15); `find_line(cfg, "nrst", profile=None)` = host guide §5.3's line lookup, the firmware's fixed labels as its last step) |
62
+ | `settings` | the core's settings (oep-spec core §13): fn 0's get / set / unset / save / state / network. `Settings(hst)`: `catalog()` = the names of this boot (each fn's category `core` / `name/instance`, items, choices, channel / route / netif names), `show()` = every value as (category, flat name, value, origin), `set_named(category, {flat: value})` / `unset_named` / `unset_all`, raw `set` / `unset` by (fn, number, key), `save()`, `state()`, `network()`; `export()` / `plan_import(doc)` / `apply_import(plan)` = the settings file (oep-spec docs/oep-settings-file.ja.md; secrets never read); `find_line(source, "nrst", profile=None)` = host guide §5.3's line lookup over every channel label |
63
63
  | `capture` | `oep.fixture.logic` / `analog` / `capture-group` (revision 1, oep-spec oep-if-capture). configure's TLVs follow core §2.3: a value the probe cannot honour is refused unsupported with the tag as sent (the table's TLVs go without the critical bit); the answer holds the actual values, its samples among them (analog: a scale for every role, a skew left out read as 0). Every `start()` returns a new generation (`LogicCapture.generation`, never re-used within a boot: past 0xFFFFFFFF a start is refused until a reboot) that read and release name - `read_segment(segment)` passes the segment's own - and every event carries (`events()` drops an earlier start's); streaming data frames carry their generation and their segment (segment_info, never crossing a segment: `Received.segments`); `status()` returns a `Status`. A capture-group binds configured tracks with an immediate trigger, all in one mode, and starts them at once (`CaptureGroup.start` -> the group's start_ns; the group's and each track's generation). Every segment read goes to the `Host.on_capture` callbacks as a `CaptureRecord` (the hook for run recorders; no wireskein dependency) |
64
64
  | `decode` | decoding capture channels (I2C) |
65
65
  | `registry` | generated from oep-spec's number table (never edited; copied again from oep-spec). The public way to reach an interface by name is `registry.INTERFACES[name]` (`.revision`, `.op`, `.tlv`, `.enum`, e.g. `INTERFACES["oep.fixture.uart"].enum["role"]`); the module-level names (`FIXTURE_UART`, ...) are the same objects |
@@ -110,10 +110,13 @@ A probe's CDC ports (`/dev/ttyACM*`) need no rule beyond the usual `dialout` gro
110
110
 
111
111
  ```sh
112
112
  oep dump --port <probe> # what the probe offers (--virtual p4-x035: no hardware)
113
- oep config show <probe> # the settings, the declarations and the storage state
114
- oep config state <probe> # the storage state alone (lock-free)
115
- oep config label <probe> 23 nrst # also: idle CH MODE, disable CH..., remove KIND CH (each takes --save)
116
- oep config save <probe> # kept over a restart (also: erase)
113
+ oep settings show <probe> # every value with its origin, and the storage state
114
+ oep settings items <probe> # what each owner declares (names, forms, choices)
115
+ oep settings set <probe> core channel.GPIO23.label=nrst channel.GPIO20.idle=pull-up [--save]
116
+ oep settings unset <probe> core channel.GPIO20.idle [--save] # or --all (then --save empties the storage)
117
+ oep settings save <probe> # kept over a restart
118
+ oep settings export <probe> jig.oep-settings.json # the user's values by name (secrets left out)
119
+ oep settings import <probe> jig.oep-settings.json [--save] # shows the changes, asks, then sets / unsets
117
120
  oep speed <probe> [921600,500000] [--verify] [--flows out:2] # port_speed: raise a UART bridge (default 500000), print the report (below)
118
121
  oep pins <probe> --power 5 --wire swio # where the target is wired: debug pins, reset line, labels (below)
119
122
  oep clock <probe> [-n 8] [--json] # fn 0's clock: uptime_ns and boot_id against this host's time (shortest of n)
@@ -125,7 +128,7 @@ oep linktest <probe> ... # --timeout: 0.3 s an answer by def
125
128
 
126
129
  `<probe>` is a serial port, `tcp://HOST:PORT`, `tcp://HOST` (the port DNS-SD finds for that host), `tcp:UNIT_ID` (the
127
130
  probe DNS-SD finds by its TXT unit_id; describe's unit_id must say the same, else it is closed) or
128
- `usb[:VID:PID[:SERIAL]]`. A change takes the lock (owner "oep config") and
131
+ `usb[:VID:PID[:SERIAL]]`. A change takes the lock (owner "oep settings") and
129
132
  ends the session after it; it takes effect at once and, after `save`, stays over a restart.
130
133
 
131
134
  ### A host run again: the kept session id
@@ -151,7 +154,7 @@ sets `hst.kept = kept_session.KeptSession()` on a Host it builds itself.
151
154
 
152
155
  ### TCP
153
156
 
154
- A probe that serves OEP over TCP is found by DNS-SD (its network settings are not oep.probe.config's).
157
+ A probe that serves OEP over TCP is found by DNS-SD (its network settings are the core's: transports §7).
155
158
 
156
159
  - `oep find` browses `_oep._tcp` (transports §3, host guide §4.1) and lists unit_id, host, port and address. The
157
160
  service name `oep` is not registered, so another service may advertise `_oep._tcp`: each instance is verified first
@@ -224,9 +227,9 @@ attach swio 19: target_id 00310510 (WCH DMI 0x7F) -> ch32v00x, halted at dpc 0x1
224
227
  option bytes (read only): RST_MODE 10 (USER 0xf7): NRST on PD7, 12 ms ignore window
225
228
  attach under reset through 4 (held 20 ms): dpc 0x0 -> the reset line
226
229
  profile: wire swio, pins 19 (the host's to keep: the probe keeps no wiring)
227
- label: oep config label ... 4 nrst (not written)
228
- label: oep config label ... 5 power_hi (not written)
229
- idle: oep config idle ... 5 output-high (keeps the target powered while no plan holds channel 5; not written by this tool)
230
+ label: oep settings set ... core channel.GPIO4.label=nrst (not written)
231
+ label: oep settings set ... core channel.GPIO5.label=power_hi (not written)
232
+ idle: oep settings set ... core channel.GPIO5.idle=high (keeps the target powered while no plan holds channel 5; not written by this tool)
230
233
  released every plan (channel 5 is back to its idle state: the target is powered only while something drives it)
231
234
  done in 7.3 s
232
235
  ```
@@ -369,10 +372,10 @@ halted or a riscv-dm request of that connection runs (`console_take(sid)` hands
369
372
  lines outside through `gpio_world`); uart receives nothing until configured, status baud and format; i2c-target one form
370
373
  (a write with data one frame, cut at max_length; reads from preload_tx slots, else 0xFF); spi-target without reset.
371
374
  Capture: configure's TLVs follow core §2.3 alone; a bound track's start / configure is unavailable cause 4, a bind short
372
- of resources cause 2 with the fn; a read at or past the write position answers write_pos and len 0. probe.config: label / idle /
373
- disable items (idle 3 bytes; an item of another length malformed); the generation counts the changes of a boot from 1;
374
- state is storage_state, saved_generation, reason; at boot the saved items are checked one by one, disable first, and what
375
- fails is left out (partial). port_speed: baud / step / verify_ms on the UART bridge the request came in on, within
375
+ of resources cause 2 with the fn; a read at or past the write position answers write_pos and len 0. The settings (core §13): each fn's items from its
376
+ describe, values with their origin (the firmware's fixed / default ones from the profile); a value of another length
377
+ malformed; the generation counts the changes of a boot from 1; state is storage_state, saved_generation, reason; at boot
378
+ the saved values (by category and item name) are checked one by one, disable first, and what fails is left out (partial). port_speed: baud / step / verify_ms on the UART bridge the request came in on, within
376
379
  port_speed_tolerance_pct, phases 0-3 read by port_state; the virtual bench goes back after verify_ms, after
377
380
  port_speed_idle_ms with no good frame, or at the session's end - never on broken frames.
378
381
 
@@ -634,3 +634,50 @@ oep-client-python の `wip/rvswd-rest` ブランチ。
634
634
  (core §12 規則 8)。仕様は上の案のとおり(key は SWCLK の channel)。Python ebcf306 以降、Arduino 77a8002。
635
635
  実機(77a8002): idle_clock 無しの attach で Pico 2 + L103 は low(halt を 3 秒保つ)、P4 + X035 は high。`rvswd-rest=high` で L103 は high になり halt が
636
636
  0.1 s で外れる(OFF が効く)。
637
+
638
+ ## 2026-10-16 capture の第 1 波(形式 1 / 4、trigger_opts、トリガの記録)
639
+
640
+ - 形式 1 の区画は可変長で、区画の情報(37 byte)にバイト数が無い。host は、次の区画の position(最後なら write_pos)まで読み、ブロックの見出しで
641
+ 切る。見出しを 1 つずつ読むと 1 ブロック 2 往復になるので避ける。wireskein と相談し、区画の情報は変えない(自己区切りで足りる)。
642
+ - trigger_opts の既定(arm 1、when 0)は、前の版の「start から最初に見えた条件で立つ」と違う。前の版の動きは arm 0、when 1 で表す。テストの
643
+ 多くがこの前提で書かれていて、既定が変わると一斉に落ちた(634 件)。
644
+ - 実装して見つけ、仕様に戻したもの(oep-spec 8e7ca20):
645
+ - rearm 1 のリピートで区画の間に待つときの state。2 にすると release を受けられないので、3 のまま status の bit2 で示す。
646
+ - flags bit0 は「置き場が無いときだけ」だったが、rearm の待ちでも区画は続かない。理由によらない意味にし、落としかどうかは bit3 で分ける。
647
+ - 全部 events のときの layout の w = 0。
648
+ - 形式 4 の「区画の position」は、ストリームの position の意味。
649
+ - 共有ベクタの logic triggered が旧来の 20 byte の形のまま残っていた。
650
+ - arm 1 の飛ばしで、まだ時刻の来ていないサンプル(pretrigger − 1)を先に読むバグを、仮想ベンチの「時刻の前に波形を読まない」テストが捕まえた。
651
+
652
+ ## 2026-10-20 P4 の 40 MB/s streaming で当たった §2.2
653
+
654
+ - §2.2 は「取り込みのキューやリングのあふれで落としたサンプルは、区画の中の落とし(エラー、state 6)」と書いている。P4 の zero-copy の
655
+ streaming では、区画(push の frame)は収穫のときに作る。DMA に追い越されたバイトは、まだどの区画にも入っていない。それでも
656
+ エラーにすると、host が 26 ms 止まっただけでキャプチャが終わる。
657
+ - Arduino d92d988 は、追い越されたバイトと queue に入らなかった塊を落とし、position を飛ばす(隙間)。エラーにはしない。
658
+ wireskein が §2.2 を「失った範囲を区画の外に置けるなら、理由によらず隙間。区画の中で失ったときだけエラー」に直す案を出している。
659
+ → oep-spec bfbde01 でその案のとおりに直した(wireskein と合意)。実装と文面のずれは解消。
660
+
661
+ ## 2026-10-22 機能を選べるファームと、設定の項目の fn 番号
662
+
663
+ Firmware/OepProbe のインターフェースと transport を、ビルドオプションなしで選べるようにした(oep-probe-arduino
664
+ 009873d〜cff9253)。選び方を変えて焼き直すと、fn の番号と経路(transport)の index が変わる。
665
+
666
+ - probe.config の項目は、fn を番号で持つ。passthrough の fn、console-passthrough の wire_fn と console_fn がそれにあたる。
667
+ port も、fn 0 の経路の index で持つ。
668
+ - 選び方を変えて焼き直すと、保存済みの項目が別の fn や経路を指す。たいていは型の検査で unsupported になり、その項目が
669
+ 無効になるだけで済む。ただし同じ型の fn が別にあると、黙って別のものを指す。例は P4 の uart が 2 本ある場合。
670
+ - 今の実装の回避: 新しい fn は既存の fn の後ろに足し、同じ選び方なら番号が変わらないようにした。選び方そのものを
671
+ 変えた場合は防げない。
672
+ - 仕様への論点(未決。所有者の判断待ち): 項目の参照を fn の名前と instance で持つか。または、保存したときの
673
+ インターフェースの一覧(名前の並び)と一致しないときは、項目を unreadable にする規則を明記するか。
674
+ → oep-spec 9fc6ad9 で設定を core(§13)に移し、保存と書き出しは名前(カテゴリ、項目、key、参照)で持つことにして解消した。
675
+ fn の番号と経路の index は起動の間だけのもの。
676
+
677
+ ## 2026-10-22 core の設定(§13)を実装して当たったこと
678
+
679
+ - §13.3 の初版は「text の規則(§2.1)に合わない text も malformed」と書いていた。2026-10-07 のルールレビューで決めた
680
+ 「要求の text の中身は確かめない(host が見せるときに置き換える)」と食い違う。→ oep-spec c4fbd6e で「text は長さだけを
681
+ 確かめる」に直した。Arduino と仮想ベンチも長さだけを確かめる。
682
+ - 仮想ベンチの profile は、oep.probe.config が持っていた fn の番号を空けたままにした(後ろの fn の番号を変えないため)。
683
+ fn の番号に欠番があってよいかは core が明記していない(list は fn を並べるだけ)。実機の firmware は欠番を作らない。
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "oep-client-python"
7
- version = "0.0.34"
7
+ version = "0.0.37"
8
8
  description = "Open Embedded Probe (OEP) v1 host: serial / USB / TCP transports, the session rules, the standard interfaces, and a virtual bench"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -2,4 +2,4 @@
2
2
 
3
3
  __all__ = ["__version__"]
4
4
 
5
- __version__ = "0.0.34"
5
+ __version__ = "0.0.37"