oep-client-python 0.0.32__tar.gz → 0.0.33__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 (731) hide show
  1. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/CHANGELOG.md +10 -0
  2. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/PKG-INFO +1 -1
  3. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/spec-follow-notes.ja.md +39 -0
  4. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/pyproject.toml +1 -1
  5. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/__init__.py +1 -1
  6. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/__main__.py +8 -0
  7. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/config.py +24 -0
  8. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/endpoint.py +38 -12
  9. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/registry.py +4 -4
  10. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/riscv.py +16 -1
  11. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_bench.py +5 -3
  12. oep_client_python-0.0.33/tests/hw/results/9489dd2ae0953650-0.0.32+1491c13-0.0.31-20261016T133559.json +393 -0
  13. oep_client_python-0.0.33/tests/hw/results/9489dd2ae0953650-0.0.32+672bf7b-0.0.32-20261016T164655.json +391 -0
  14. oep_client_python-0.0.33/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131458.json +372 -0
  15. oep_client_python-0.0.33/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131510.json +162 -0
  16. oep_client_python-0.0.33/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131526.json +372 -0
  17. oep_client_python-0.0.33/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131532.json +372 -0
  18. oep_client_python-0.0.33/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131656.json +361 -0
  19. oep_client_python-0.0.33/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131703.json +372 -0
  20. oep_client_python-0.0.33/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T131708.json +372 -0
  21. oep_client_python-0.0.33/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T132050.json +364 -0
  22. oep_client_python-0.0.33/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T132057.json +364 -0
  23. oep_client_python-0.0.33/tests/hw/results/9489dd2ae0953650-0.0.32-0.0.31-20261016T132104.json +364 -0
  24. oep_client_python-0.0.33/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.32+1491c13-0.0.31-20261016T133501.json +752 -0
  25. oep_client_python-0.0.33/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.32+672bf7b-0.0.32-20261016T164559.json +753 -0
  26. oep_client_python-0.0.33/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.32-0.0.31-20261016T130922.json +719 -0
  27. oep_client_python-0.0.33/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.32-0.0.31-20261016T131024.json +228 -0
  28. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/test_probe.py +15 -2
  29. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/spec/oep-v1.toml +18 -1
  30. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_config.py +2 -1
  31. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_host_rules_2026_10_02.py +2 -2
  32. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_passthrough.py +2 -0
  33. oep_client_python-0.0.33/tests/test_rvswd_rest.py +61 -0
  34. oep_client_python-0.0.33/tests/vectors/SPEC_COMMIT +1 -0
  35. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/vectors/SPEC_SHA256 +3 -3
  36. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/vectors/ops.json +4 -4
  37. oep_client_python-0.0.32/tests/vectors/SPEC_COMMIT +0 -1
  38. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/.gitignore +0 -0
  39. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/LICENSE +0 -0
  40. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/README.ja.md +0 -0
  41. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/README.md +0 -0
  42. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/README.ja.md +0 -0
  43. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/allocator-conformance.ja.md +0 -0
  44. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/analog-conformance.ja.md +0 -0
  45. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/analog-payload-conformance.ja.md +0 -0
  46. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/arm-adi-conformance.ja.md +0 -0
  47. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/attach-conformance.ja.md +0 -0
  48. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/block-conformance.ja.md +0 -0
  49. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/capture-group-conformance.ja.md +0 -0
  50. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/capture-group-geometry-conformance.ja.md +0 -0
  51. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/capture-metadata-conformance.ja.md +0 -0
  52. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/capture-serial-conformance.ja.md +0 -0
  53. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/capture-timeline-conformance.ja.md +0 -0
  54. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/capture-timeline-lifecycle-conformance.ja.md +0 -0
  55. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/clock-conformance.ja.md +0 -0
  56. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/config-conformance.ja.md +0 -0
  57. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/config-execution-conformance.ja.md +0 -0
  58. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/config-fallback-conformance.ja.md +0 -0
  59. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/config-paging-conformance.ja.md +0 -0
  60. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/config-power-loss-conformance.ja.md +0 -0
  61. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/config-storage-conformance.ja.md +0 -0
  62. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/conformance-checks.ja.md +0 -0
  63. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/conformance-spec-compatibility.ja.md +0 -0
  64. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/core-fixed-fields-review.ja.md +0 -0
  65. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/core-smoke-conformance.ja.md +0 -0
  66. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/corr-conformance.ja.md +0 -0
  67. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/cut-conformance.ja.md +0 -0
  68. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/data-conformance.ja.md +0 -0
  69. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/debug-conformance.ja.md +0 -0
  70. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/dependency-conformance.ja.md +0 -0
  71. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/discovery-conformance.ja.md +0 -0
  72. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/dmseq-conformance.ja.md +0 -0
  73. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/dmseq-target-conformance.ja.md +0 -0
  74. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/execution-order-conformance.ja.md +0 -0
  75. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/exhausted-conformance.ja.md +0 -0
  76. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/fixture-metadata-conformance.ja.md +0 -0
  77. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/gpio-conformance.ja.md +0 -0
  78. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/gpio-lifecycle-conformance.ja.md +0 -0
  79. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/hardware-configuration.ja.md +0 -0
  80. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/hardware-quickstart.ja.md +0 -0
  81. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/hardware-schema.ja.md +0 -0
  82. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/host-core-shapes-conformance.ja.md +0 -0
  83. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/host-deadline-conformance.ja.md +0 -0
  84. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/host-notification-conformance.ja.md +0 -0
  85. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/host-request-conformance.ja.md +0 -0
  86. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/host-resend-conformance.ja.md +0 -0
  87. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/host-tlv-conformance.ja.md +0 -0
  88. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/host-value-conformance.ja.md +0 -0
  89. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/host-wait-conformance.ja.md +0 -0
  90. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/i2c-conformance.ja.md +0 -0
  91. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/interface-conformance.ja.md +0 -0
  92. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/interface-smoke-conformance.ja.md +0 -0
  93. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/lease-conformance.ja.md +0 -0
  94. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/link-routes-conformance.ja.md +0 -0
  95. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/link-transfer-conformance.ja.md +0 -0
  96. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/logic-conformance.ja.md +0 -0
  97. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/mailbox-conformance.ja.md +0 -0
  98. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/notification-output-sample.ja.md +0 -0
  99. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/notification-retention-conformance.ja.md +0 -0
  100. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/notification-sequence-conformance.ja.md +0 -0
  101. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/oep-declaration-conformance.ja.md +0 -0
  102. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/oep-example-smoke-conformance.ja.md +0 -0
  103. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/outcome-conformance.ja.md +0 -0
  104. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/pin-constraints-conformance.ja.md +0 -0
  105. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/pipeline-conformance.ja.md +0 -0
  106. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/port-speed-conformance.ja.md +0 -0
  107. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/probe-input-conformance.ja.md +0 -0
  108. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/recovery-conformance.ja.md +0 -0
  109. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/recovery-races-conformance.ja.md +0 -0
  110. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/refusal-order-conformance.ja.md +0 -0
  111. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/registered-ops-conformance.ja.md +0 -0
  112. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/replay-pressure-conformance.ja.md +0 -0
  113. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/reset-conformance.ja.md +0 -0
  114. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/resource-conformance.ja.md +0 -0
  115. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/response-race-conformance.ja.md +0 -0
  116. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/restart-conformance.ja.md +0 -0
  117. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/retention-conformance.ja.md +0 -0
  118. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/retention-lifecycle-conformance.ja.md +0 -0
  119. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/retry-conformance.ja.md +0 -0
  120. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/route-conformance.ja.md +0 -0
  121. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/run-conformance.ja.md +0 -0
  122. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/scan-conformance.ja.md +0 -0
  123. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/scan-options-conformance.ja.md +0 -0
  124. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/selected-metadata-conformance.ja.md +0 -0
  125. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/session-loss-conformance.ja.md +0 -0
  126. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/session-smoke-conformance.ja.md +0 -0
  127. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/spec-a09fa45-sections.ja.md +0 -0
  128. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/spi-conformance.ja.md +0 -0
  129. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/stage9-rule-trace.ja.md +0 -0
  130. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/step-conformance.ja.md +0 -0
  131. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/stream-conformance.ja.md +0 -0
  132. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/subscription-conformance.ja.md +0 -0
  133. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/tcp-recovery-conformance.ja.md +0 -0
  134. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/testing-consumers.ja.md +0 -0
  135. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/testing-policy.ja.md +0 -0
  136. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/tlv-request-conformance.ja.md +0 -0
  137. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/README.ja.md +0 -0
  138. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/capture.json +0 -0
  139. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/common.json +0 -0
  140. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/console.json +0 -0
  141. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/core.json +0 -0
  142. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/debug.json +0 -0
  143. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/fixture.json +0 -0
  144. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/link.json +0 -0
  145. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/plan.json +0 -0
  146. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/probe-config.json +0 -0
  147. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/restart.json +0 -0
  148. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review/capture.json +0 -0
  149. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review/common.json +0 -0
  150. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review/console.json +0 -0
  151. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review/core.json +0 -0
  152. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review/debug.json +0 -0
  153. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review/fixture.json +0 -0
  154. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review/link.json +0 -0
  155. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review/plan.json +0 -0
  156. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review/probe-config.json +0 -0
  157. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review/restart.json +0 -0
  158. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review/sample-audit.ja.md +0 -0
  159. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review/transports.json +0 -0
  160. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review2/capture.json +0 -0
  161. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review2/common.json +0 -0
  162. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review2/console.json +0 -0
  163. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review2/core.0.json +0 -0
  164. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review2/core.1-6.json +0 -0
  165. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review2/core.7-13.json +0 -0
  166. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review2/debug.json +0 -0
  167. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review2/fixture.json +0 -0
  168. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review2/link.json +0 -0
  169. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review2/plan.json +0 -0
  170. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review2/probe-config.json +0 -0
  171. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review2/restart.json +0 -0
  172. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review2/transports.json +0 -0
  173. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review3/capture.json +0 -0
  174. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review3/core-a.json +0 -0
  175. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review3/core-b.json +0 -0
  176. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review3/debug-a.json +0 -0
  177. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review3/debug-b.json +0 -0
  178. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review3/rest.json +0 -0
  179. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review4/capture.json +0 -0
  180. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review4/core-rest.json +0 -0
  181. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review4/core-sessions.json +0 -0
  182. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review4/debug.json +0 -0
  183. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review4/fixture-console.json +0 -0
  184. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review4/small.json +0 -0
  185. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review5/capture.json +0 -0
  186. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review5/core-a.json +0 -0
  187. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review5/core-b.json +0 -0
  188. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review5/debug-targets.json +0 -0
  189. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review5/debug-wires.json +0 -0
  190. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review5/small.json +0 -0
  191. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review6/capture-console.json +0 -0
  192. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review6/core-early.json +0 -0
  193. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review6/core-late.json +0 -0
  194. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review6/debug-a.json +0 -0
  195. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review6/debug-b.json +0 -0
  196. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review6/rest.json +0 -0
  197. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review7/exact-payload.json +0 -0
  198. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review7/host-recovery.json +0 -0
  199. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review7/optional-as-required.json +0 -0
  200. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review7/request-validation.json +0 -0
  201. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review7/state-and-resources.json +0 -0
  202. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review7/tlv-readers.json +0 -0
  203. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review8/core-1.json +0 -0
  204. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review8/core-2.json +0 -0
  205. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/review8/debug.json +0 -0
  206. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/trace/transports.json +0 -0
  207. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/uart-conformance.ja.md +0 -0
  208. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/uart-stream-conformance.ja.md +0 -0
  209. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/usb-conformance.ja.md +0 -0
  210. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/wire-options-conformance.ja.md +0 -0
  211. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/docs/writer-lease-conformance.ja.md +0 -0
  212. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/arm.py +0 -0
  213. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/capture.py +0 -0
  214. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/catalog.py +0 -0
  215. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/ch32_flash.py +0 -0
  216. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/cobs.py +0 -0
  217. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance.py +0 -0
  218. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_allocator.py +0 -0
  219. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_allocator_sample.py +0 -0
  220. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_analog.py +0 -0
  221. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_analog_payload.py +0 -0
  222. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_analog_sample.py +0 -0
  223. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_arm_adi.py +0 -0
  224. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_arm_adi_blocks.py +0 -0
  225. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_arm_adi_sample.py +0 -0
  226. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_attach.py +0 -0
  227. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_attach_sample.py +0 -0
  228. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_block_sample.py +0 -0
  229. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_blocks.py +0 -0
  230. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_capture_group.py +0 -0
  231. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_capture_group_geometry.py +0 -0
  232. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_capture_group_sample.py +0 -0
  233. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_capture_metadata.py +0 -0
  234. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_capture_serial.py +0 -0
  235. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_capture_serial_sample.py +0 -0
  236. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_capture_timeline.py +0 -0
  237. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_capture_timeline_lifecycle.py +0 -0
  238. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_capture_timeline_sample.py +0 -0
  239. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_clock.py +0 -0
  240. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_clock_sample.py +0 -0
  241. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_config.py +0 -0
  242. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_config_execution.py +0 -0
  243. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_config_execution_sample.py +0 -0
  244. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_config_fallback.py +0 -0
  245. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_config_fallback_sample.py +0 -0
  246. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_config_paging.py +0 -0
  247. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_config_paging_sample.py +0 -0
  248. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_config_power_loss.py +0 -0
  249. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_config_power_loss_sample.py +0 -0
  250. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_config_sample.py +0 -0
  251. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_config_storage.py +0 -0
  252. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_config_storage_sample.py +0 -0
  253. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_core_fixed_fields.py +0 -0
  254. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_core_smoke.py +0 -0
  255. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_corr.py +0 -0
  256. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_cut.py +0 -0
  257. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_cut_sample.py +0 -0
  258. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_data.py +0 -0
  259. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_data_sample.py +0 -0
  260. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_debug.py +0 -0
  261. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_debug_sample.py +0 -0
  262. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_dependencies.py +0 -0
  263. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_dependency_sample.py +0 -0
  264. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_discovery.py +0 -0
  265. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_dmseq.py +0 -0
  266. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_dmseq_sample.py +0 -0
  267. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_dmseq_target.py +0 -0
  268. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_dmseq_target_sample.py +0 -0
  269. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_execution_order.py +0 -0
  270. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_execution_order_sample.py +0 -0
  271. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_exhausted.py +0 -0
  272. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_exhausted_sample.py +0 -0
  273. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_fixture_metadata.py +0 -0
  274. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_gpio.py +0 -0
  275. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_gpio_lifecycle.py +0 -0
  276. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_gpio_lifecycle_sample.py +0 -0
  277. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_gpio_sample.py +0 -0
  278. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_host_core.py +0 -0
  279. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_host_core_sample.py +0 -0
  280. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_host_deadline.py +0 -0
  281. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_host_deadline_sample.py +0 -0
  282. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_host_notifications.py +0 -0
  283. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_host_notifications_sample.py +0 -0
  284. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_host_request_sample.py +0 -0
  285. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_host_requests.py +0 -0
  286. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_host_resend.py +0 -0
  287. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_host_resend_sample.py +0 -0
  288. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_host_tlv.py +0 -0
  289. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_host_tlv_sample.py +0 -0
  290. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_host_values.py +0 -0
  291. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_host_values_sample.py +0 -0
  292. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_host_wait.py +0 -0
  293. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_host_wait_sample.py +0 -0
  294. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_i2c.py +0 -0
  295. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_i2c_sample.py +0 -0
  296. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_interface_smoke.py +0 -0
  297. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_interfaces.py +0 -0
  298. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_lease.py +0 -0
  299. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_lease_sample.py +0 -0
  300. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_link_routes.py +0 -0
  301. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_link_routes_sample.py +0 -0
  302. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_link_transfer_sample.py +0 -0
  303. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_link_transfers.py +0 -0
  304. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_logic.py +0 -0
  305. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_logic_sample.py +0 -0
  306. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_mailbox.py +0 -0
  307. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_mailbox_sample.py +0 -0
  308. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_notification_retention.py +0 -0
  309. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_notification_retention_sample.py +0 -0
  310. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_notification_sequence.py +0 -0
  311. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_notification_sequence_sample.py +0 -0
  312. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_oep_declarations.py +0 -0
  313. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_oep_smoke.py +0 -0
  314. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_outcome_sample.py +0 -0
  315. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_outcomes.py +0 -0
  316. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_pipeline.py +0 -0
  317. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_pipeline_sample.py +0 -0
  318. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_port_speed.py +0 -0
  319. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_port_speed_execution.py +0 -0
  320. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_port_speed_execution_sample.py +0 -0
  321. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_port_speed_lifecycle.py +0 -0
  322. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_port_speed_sample.py +0 -0
  323. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_probe_input.py +0 -0
  324. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_probe_input_sample.py +0 -0
  325. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_recovery.py +0 -0
  326. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_recovery_race_sample.py +0 -0
  327. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_recovery_races.py +0 -0
  328. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_recovery_sample.py +0 -0
  329. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_refusal_order.py +0 -0
  330. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_refusal_order_sample.py +0 -0
  331. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_registered_ops.py +0 -0
  332. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_replay_pressure.py +0 -0
  333. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_reset.py +0 -0
  334. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_reset_sample.py +0 -0
  335. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_resource_sample.py +0 -0
  336. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_resources.py +0 -0
  337. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_response_race.py +0 -0
  338. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_response_race_sample.py +0 -0
  339. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_restart.py +0 -0
  340. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_restart_sample.py +0 -0
  341. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_retention.py +0 -0
  342. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_retention_lifecycle.py +0 -0
  343. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_retention_lifecycle_sample.py +0 -0
  344. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_retention_sample.py +0 -0
  345. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_retry.py +0 -0
  346. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_retry_sample.py +0 -0
  347. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_route_sample.py +0 -0
  348. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_routes.py +0 -0
  349. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_run.py +0 -0
  350. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_run_sample.py +0 -0
  351. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_scan.py +0 -0
  352. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_scan_options.py +0 -0
  353. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_scan_options_sample.py +0 -0
  354. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_scan_sample.py +0 -0
  355. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_selected_metadata.py +0 -0
  356. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_serial.py +0 -0
  357. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_session_loss.py +0 -0
  358. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_session_loss_sample.py +0 -0
  359. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_session_smoke.py +0 -0
  360. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_spi.py +0 -0
  361. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_spi_sample.py +0 -0
  362. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_step.py +0 -0
  363. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_step_sample.py +0 -0
  364. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_stream.py +0 -0
  365. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_stream_sample.py +0 -0
  366. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_subscription_sample.py +0 -0
  367. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_subscriptions.py +0 -0
  368. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_tcp.py +0 -0
  369. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_tcp_peers.py +0 -0
  370. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_tcp_recovery.py +0 -0
  371. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_tcp_recovery_sample.py +0 -0
  372. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_tlv_requests.py +0 -0
  373. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_uart.py +0 -0
  374. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_uart_sample.py +0 -0
  375. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_uart_stream.py +0 -0
  376. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_uart_stream_sample.py +0 -0
  377. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_usb.py +0 -0
  378. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_usb_cases.py +0 -0
  379. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_usb_model.py +0 -0
  380. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_wire_options.py +0 -0
  381. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_wire_options_sample.py +0 -0
  382. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_writer_lease.py +0 -0
  383. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/conformance_writer_lease_sample.py +0 -0
  384. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/console.py +0 -0
  385. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/core.py +0 -0
  386. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/decode.py +0 -0
  387. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/discovery.py +0 -0
  388. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/dump.py +0 -0
  389. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/fixture.py +0 -0
  390. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/frames.py +0 -0
  391. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/hardware.py +0 -0
  392. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/hid_stream.py +0 -0
  393. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/host.py +0 -0
  394. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/interfaces.py +0 -0
  395. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/kept_session.py +0 -0
  396. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/link.py +0 -0
  397. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/linktest.py +0 -0
  398. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/message.py +0 -0
  399. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/names.py +0 -0
  400. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/pins.py +0 -0
  401. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/pytest_conformance.py +0 -0
  402. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/rp2350.py +0 -0
  403. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/speed_record.py +0 -0
  404. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/targets.py +0 -0
  405. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/uiapduino.py +0 -0
  406. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/usb_stream.py +0 -0
  407. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_allocator_model.py +0 -0
  408. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_analog_model.py +0 -0
  409. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_arm_adi_model.py +0 -0
  410. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_attach_model.py +0 -0
  411. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_bench_capture.py +0 -0
  412. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_bench_mdns.py +0 -0
  413. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_bench_serial.py +0 -0
  414. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_bench_serve.py +0 -0
  415. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_bench_usb.py +0 -0
  416. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_block_model.py +0 -0
  417. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_capture_group_geometry_model.py +0 -0
  418. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_capture_group_model.py +0 -0
  419. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_capture_metadata_model.py +0 -0
  420. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_capture_timeline_model.py +0 -0
  421. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_clock_model.py +0 -0
  422. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_config_execution_model.py +0 -0
  423. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_config_model.py +0 -0
  424. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_config_paging_model.py +0 -0
  425. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_config_power_loss_model.py +0 -0
  426. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_config_storage_model.py +0 -0
  427. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_core.py +0 -0
  428. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_cut_model.py +0 -0
  429. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_data_model.py +0 -0
  430. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_debug_model.py +0 -0
  431. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_declaration_model.py +0 -0
  432. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_dependency_model.py +0 -0
  433. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_dmseq_model.py +0 -0
  434. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_dmseq_target_model.py +0 -0
  435. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_fixture_metadata_model.py +0 -0
  436. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_gpio_lifecycle_model.py +0 -0
  437. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_gpio_model.py +0 -0
  438. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_i2c_model.py +0 -0
  439. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_link_routes_model.py +0 -0
  440. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_link_transfer_model.py +0 -0
  441. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_logic_model.py +0 -0
  442. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_mailbox_model.py +0 -0
  443. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_names.py +0 -0
  444. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_notification_model.py +0 -0
  445. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_oep_declaration_model.py +0 -0
  446. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_outcome_model.py +0 -0
  447. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_pipeline_model.py +0 -0
  448. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_port_speed_execution_model.py +0 -0
  449. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_port_speed_model.py +0 -0
  450. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_registered_ops_model.py +0 -0
  451. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_reset_model.py +0 -0
  452. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_resource_model.py +0 -0
  453. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_restart_model.py +0 -0
  454. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_retention_model.py +0 -0
  455. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_retry_model.py +0 -0
  456. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_route_model.py +0 -0
  457. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_run_model.py +0 -0
  458. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_scan_model.py +0 -0
  459. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_scan_options_model.py +0 -0
  460. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_selected_metadata_model.py +0 -0
  461. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_spi_model.py +0 -0
  462. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_step_model.py +0 -0
  463. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_stream_model.py +0 -0
  464. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_tlv_request_model.py +0 -0
  465. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_uart_model.py +0 -0
  466. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_wire_options_model.py +0 -0
  467. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/src/oep_client/virtual_writer_lease_model.py +0 -0
  468. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/conftest.py +0 -0
  469. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/equipment/.env.example +0 -0
  470. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/equipment/test_core_contract.py +0 -0
  471. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/equipment/test_preflight.py +0 -0
  472. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/fixtures/hardware.virtual.toml +0 -0
  473. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/.env.example +0 -0
  474. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/.env.virtual.example +0 -0
  475. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/README.ja.md +0 -0
  476. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/README.md +0 -0
  477. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/__init__.py +0 -0
  478. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/boards.py +0 -0
  479. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/conftest.py +0 -0
  480. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/firmware.py +0 -0
  481. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/flash.py +0 -0
  482. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/hardware.example.toml +0 -0
  483. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/hardware.resolved.example.toml +0 -0
  484. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/record.py +0 -0
  485. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/.gitignore +0 -0
  486. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/9489dd2ae0953650-0.0.26+5bafb92-0.0.26.json +0 -0
  487. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/9489dd2ae0953650-0.0.26+654b06a-0.0.26.json +0 -0
  488. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/9489dd2ae0953650-0.0.27+ec1df99-0.0.27.json +0 -0
  489. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.26+4fad559-0.0.26.json +0 -0
  490. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-d0wd-v3-0070070d9394-0.0.26+5bafb92-0.0.26.json +0 -0
  491. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.25-0.0.26.json +0 -0
  492. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.26+5bafb92-0.0.26.json +0 -0
  493. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.26+654b06a-0.0.26.json +0 -0
  494. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.26+e877631-0.0.26.json +0 -0
  495. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.27+ac80e07-0.0.27.json +0 -0
  496. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.27+ec1df99-0.0.27.json +0 -0
  497. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.27-0.0.27.json +0 -0
  498. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-pico-d4-50029191fe34-0.0.28-0.0.28.json +0 -0
  499. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-pico-d4-50029191fe34-unknown-0.0.26.json +0 -0
  500. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-series-30eda0e31108-0.0.26+5bafb92-0.0.26.json +0 -0
  501. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-series-30eda0e31108-0.0.26+654b06a-0.0.26.json +0 -0
  502. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-series-30eda0e343c6-0.0.26+5bafb92-0.0.26.json +0 -0
  503. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-series-30eda0e343c6-0.0.26+654b06a-0.0.26.json +0 -0
  504. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-series-30eda0e343c6-0.0.27+ec1df99-0.0.27.json +0 -0
  505. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-series-30eda0e343c6-0.0.28+ffe4eb1-0.0.28.json +0 -0
  506. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-series-30eda0e343c6-0.0.28-0.0.28.json +0 -0
  507. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28+0f013b7-0.0.28.json +0 -0
  508. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28+1c940ca-0.0.28.json +0 -0
  509. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28+4ef21db+4ef21db-dirty-0.0.28.json +0 -0
  510. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28+68d9694-0.0.28.json +0 -0
  511. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28+ec38b1d-0.0.28.json +0 -0
  512. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28+ffe4eb1-0.0.28.json +0 -0
  513. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/results/esp32-series-30eda0ea068b-0.0.28-0.0.28.json +0 -0
  514. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/hw/test_harness.py +0 -0
  515. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/spec_names.py +0 -0
  516. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_capabilities.py +0 -0
  517. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_capture.py +0 -0
  518. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_cobs.py +0 -0
  519. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_config_disable.py +0 -0
  520. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_config_idle.py +0 -0
  521. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_config_network.py +0 -0
  522. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance.py +0 -0
  523. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_allocator.py +0 -0
  524. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_analog.py +0 -0
  525. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_analog_payload.py +0 -0
  526. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_arm_adi.py +0 -0
  527. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_arm_adi_blocks.py +0 -0
  528. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_attach.py +0 -0
  529. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_blocks.py +0 -0
  530. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_capture_group.py +0 -0
  531. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_capture_group_geometry.py +0 -0
  532. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_capture_metadata.py +0 -0
  533. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_capture_serial.py +0 -0
  534. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_capture_timeline.py +0 -0
  535. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_capture_timeline_lifecycle.py +0 -0
  536. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_clock.py +0 -0
  537. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_config.py +0 -0
  538. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_config_execution.py +0 -0
  539. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_config_fallback.py +0 -0
  540. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_config_paging.py +0 -0
  541. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_config_power_loss.py +0 -0
  542. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_config_storage.py +0 -0
  543. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_core_fixed_fields.py +0 -0
  544. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_core_smoke.py +0 -0
  545. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_corr.py +0 -0
  546. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_cut.py +0 -0
  547. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_data.py +0 -0
  548. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_debug.py +0 -0
  549. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_dependencies.py +0 -0
  550. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_discovery.py +0 -0
  551. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_dmseq.py +0 -0
  552. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_dmseq_target.py +0 -0
  553. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_execution_order.py +0 -0
  554. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_exhausted.py +0 -0
  555. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_fixture_metadata.py +0 -0
  556. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_gpio.py +0 -0
  557. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_gpio_lifecycle.py +0 -0
  558. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_host_core.py +0 -0
  559. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_host_critical_calls.py +0 -0
  560. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_host_deadline.py +0 -0
  561. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_host_notifications.py +0 -0
  562. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_host_requests.py +0 -0
  563. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_host_resend.py +0 -0
  564. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_host_tlv.py +0 -0
  565. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_host_values.py +0 -0
  566. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_host_wait.py +0 -0
  567. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_i2c.py +0 -0
  568. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_interface_smoke.py +0 -0
  569. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_interfaces.py +0 -0
  570. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_lease.py +0 -0
  571. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_link_routes.py +0 -0
  572. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_link_transfers.py +0 -0
  573. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_logic.py +0 -0
  574. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_mailbox.py +0 -0
  575. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_notification_output.py +0 -0
  576. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_notification_retention.py +0 -0
  577. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_notification_sequence.py +0 -0
  578. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_oep_declarations.py +0 -0
  579. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_oep_smoke.py +0 -0
  580. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_outcomes.py +0 -0
  581. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_pipeline.py +0 -0
  582. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_port_speed.py +0 -0
  583. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_port_speed_execution.py +0 -0
  584. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_port_speed_lifecycle.py +0 -0
  585. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_probe_input.py +0 -0
  586. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_reconnect.py +0 -0
  587. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_recovery.py +0 -0
  588. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_recovery_races.py +0 -0
  589. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_refusal_order.py +0 -0
  590. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_registered_ops.py +0 -0
  591. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_replay_pressure.py +0 -0
  592. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_replay_records_optional.py +0 -0
  593. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_reset.py +0 -0
  594. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_resources.py +0 -0
  595. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_response_race.py +0 -0
  596. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_restart.py +0 -0
  597. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_retention.py +0 -0
  598. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_retention_lifecycle.py +0 -0
  599. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_retry.py +0 -0
  600. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_routes.py +0 -0
  601. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_run.py +0 -0
  602. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_scan.py +0 -0
  603. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_scan_options.py +0 -0
  604. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_selected_metadata.py +0 -0
  605. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_serial.py +0 -0
  606. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_session_loss.py +0 -0
  607. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_session_smoke.py +0 -0
  608. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_spec_guard.py +0 -0
  609. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_spi.py +0 -0
  610. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_step.py +0 -0
  611. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_stream.py +0 -0
  612. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_subscriptions.py +0 -0
  613. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_tcp.py +0 -0
  614. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_tcp_peers.py +0 -0
  615. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_tcp_recovery.py +0 -0
  616. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_tlv_requests.py +0 -0
  617. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_uart.py +0 -0
  618. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_uart_stream.py +0 -0
  619. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_usb.py +0 -0
  620. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_wire_options.py +0 -0
  621. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_conformance_writer_lease.py +0 -0
  622. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_console_queue_and_reset_settle.py +0 -0
  623. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_debug_attach.py +0 -0
  624. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_extension_patterns.py +0 -0
  625. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_fixture_targets.py +0 -0
  626. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_flash_console.py +0 -0
  627. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_gpio_drive_and_serve_options.py +0 -0
  628. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_hardware.py +0 -0
  629. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_hid_stream.py +0 -0
  630. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_host_boot_lifecycle.py +0 -0
  631. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_host_rules_2026_10_06.py +0 -0
  632. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_host_wait_bound.py +0 -0
  633. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_interfaces.py +0 -0
  634. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_link_drop.py +0 -0
  635. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_link_host.py +0 -0
  636. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_link_serial.py +0 -0
  637. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_linktest.py +0 -0
  638. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_literals.py +0 -0
  639. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_minimal_ops.py +0 -0
  640. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_no_resume.py +0 -0
  641. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_pins.py +0 -0
  642. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_plan.py +0 -0
  643. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_port_speed.py +0 -0
  644. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_request_tails.py +0 -0
  645. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_restart.py +0 -0
  646. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_resubscribe_after_reopen.py +0 -0
  647. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review4_capture.py +0 -0
  648. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review4_debug.py +0 -0
  649. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review4_small.py +0 -0
  650. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review5_capture.py +0 -0
  651. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review5_core_a.py +0 -0
  652. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review5_core_b.py +0 -0
  653. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review5_debug_targets.py +0 -0
  654. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review5_debug_wires.py +0 -0
  655. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review5_small.py +0 -0
  656. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review6_capture_console.py +0 -0
  657. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review6_core_early.py +0 -0
  658. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review6_core_late.py +0 -0
  659. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review6_debug_a.py +0 -0
  660. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review6_debug_b.py +0 -0
  661. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review6_rest.py +0 -0
  662. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review7_exact_payload.py +0 -0
  663. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review7_host_recovery.py +0 -0
  664. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review7_request_validation.py +0 -0
  665. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review7_state_resources.py +0 -0
  666. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review7_tlv_readers.py +0 -0
  667. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review8_core_1.py +0 -0
  668. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review8_core_2.py +0 -0
  669. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_review8_debug.py +0 -0
  670. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_session.py +0 -0
  671. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_spec_283e5b5.py +0 -0
  672. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_spec_2c6d18d.py +0 -0
  673. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_spec_3cc50c8.py +0 -0
  674. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_spec_sections.py +0 -0
  675. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_spec_vectors.py +0 -0
  676. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_target_parts.py +0 -0
  677. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_tcp_discovery.py +0 -0
  678. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_trace_capture.py +0 -0
  679. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_trace_common.py +0 -0
  680. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_trace_console.py +0 -0
  681. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_trace_core.py +0 -0
  682. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_trace_core_names.py +0 -0
  683. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_trace_debug.py +0 -0
  684. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_trace_fixture.py +0 -0
  685. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_trace_link.py +0 -0
  686. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_trace_plan.py +0 -0
  687. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_trace_probe_config.py +0 -0
  688. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_trace_restart.py +0 -0
  689. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_trace_transports.py +0 -0
  690. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_usb_identity.py +0 -0
  691. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_usb_stream.py +0 -0
  692. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_analog_roles.py +0 -0
  693. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_announce.py +0 -0
  694. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_capture.py +0 -0
  695. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_capture_changing_trigger.py +0 -0
  696. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_capture_channel_time.py +0 -0
  697. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_capture_initial_trigger_time.py +0 -0
  698. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_capture_lifetime.py +0 -0
  699. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_capture_notifications.py +0 -0
  700. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_capture_one_shot_time.py +0 -0
  701. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_capture_pretrigger.py +0 -0
  702. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_capture_query.py +0 -0
  703. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_capture_rates.py +0 -0
  704. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_capture_requests.py +0 -0
  705. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_capture_resume_calibration.py +0 -0
  706. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_capture_trigger_modes.py +0 -0
  707. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_capture_waiting.py +0 -0
  708. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_pin_constraints.py +0 -0
  709. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_rules_2026_10_02.py +0 -0
  710. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_rules_2026_10_06.py +0 -0
  711. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_serve_reboot.py +0 -0
  712. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_serve_tcp_connections.py +0 -0
  713. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_spec.py +0 -0
  714. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_bench_targets.py +0 -0
  715. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_core.py +0 -0
  716. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/test_virtual_core_bool.py +0 -0
  717. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/vectors/checks.json +0 -0
  718. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/vectors/cobs.json +0 -0
  719. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/vectors/confirm.json +0 -0
  720. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/vectors/core_extensions.json +0 -0
  721. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/vectors/core_lifecycle.json +0 -0
  722. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/vectors/core_policy.json +0 -0
  723. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/vectors/discovery.json +0 -0
  724. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/vectors/headers.json +0 -0
  725. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/vectors/interface_boundaries.json +0 -0
  726. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/vectors/interface_profiles.json +0 -0
  727. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/vectors/logic_layout.json +0 -0
  728. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/vectors/ops_encoding.json +0 -0
  729. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/vectors/refusals.json +0 -0
  730. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/tests/vectors/sessions.json +0 -0
  731. {oep_client_python-0.0.32 → oep_client_python-0.0.33}/udev/70-oep-probe.rules +0 -0
@@ -2,6 +2,16 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.0.33
6
+ - (JA) oep-spec ba4e8ee(debug §3.1、core §12 規則 8、probe.config の rvswd-rest)に追従。rvswd の線の休ませ方は、attach の idle_clock が無ければ
7
+ probe が決める(その SWCLK の channel の設定 rvswd-rest、無ければ target_id の系統: CH32L103 は low)。仮想ベンチはそのとおりに休ませ、attach の応答と
8
+ connections に使う休ませ方を返す。クライアントは `Wire.idle_clock`、`ConnectionInfo.idle_clock` で読み、`config.RvswdRest` と
9
+ `oep config rvswd-rest PROBE CH auto|high|low` で口ごとに自動を止められる。
10
+ - (JA) oep-spec 91209aa の線の名前(swdio / swclk / swio / rx / tx)を registry から引く(`config.LINE_NAMES`)。console-passthrough は 13 byte のまま
11
+ (91209aa の idle_clock の欄は oep-spec edbe841 で取り下げ)。
12
+ - (JA) tests/hw: `OEP_HW_IDLE_CLOCK=low|high` で rvswd の attach に休ませ方を明示できる。無ければ probe の判定に任せ、結果に使った休ませ方を記録する。
13
+ - (JA) CI: equipment の段が走ったときだけ証跡を upload する(テストの段が落ちると .pytest-results/ が空で警告が出ていた)。
14
+
5
15
  ## 0.0.32
6
16
  - (JA) 仮想ベンチに `--minimal-ops`(`virtual_bench.minimal_ops`)を足す。console と fixture UART の任意の op(marks、clear、mark、write)を
7
17
  ops から外し、unknown_operation で答える。host が任意の op を describe の ops を見ずに使っていないかを、実機なしで試せる
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: oep-client-python
3
- Version: 0.0.32
3
+ Version: 0.0.33
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
@@ -595,3 +595,42 @@ B にした。core §12 の規則 7 を「他者は名前で識別する所か
595
595
 
596
596
  **仕様への提案の候補(まだ出していない)**: 共有ベクタのうち「仕様書の例の probe」に固有の値(fn 19 の CPU 捕捉の 16 ms、analog の skew や scale の値)を前提にするものは、
597
597
  実装の harness が名前で見分けて飛ばしている。ベクタに「例の probe の構成」を示す欄があれば、各実装が機械的に扱える。小さいので、ch32rv の追従の後にまとめて判断する。
598
+
599
+ ## 実機の入れ替え(2026-10-16、リリース 0.0.32)
600
+
601
+ 既存の OEP プローブ 6 台(RP2040 `53032847491a571c`、Pico 2 `9489dd2ae0953650`、P4 `30eda0ea068b` / `30eda0e34a0e`、
602
+ P4X `e8f60ae84e28`、classic ESP32 `0070070d9394`)を Arduino 0.0.32 のリリース版に入れ替え、設定を新しい形(ラベル `S.N`、素通し、wifi)で入れ直した。
603
+
604
+ | # | 見つけたこと | 判断 |
605
+ |---|---|---|
606
+ | H1 | capture の start の応答に、Arduino が仕様に無い blocking_ms(u32) を generation の前に残していた(logic、analog)。仕様の形で読む host は generation を TLV と読んで落ちる。共有ベクタは start の応答を見ていなかった | Arduino を直した(ffd6a14、未リリース。実機は 0.0.32 のまま)。**ベクタへの提案の候補**: capture / analog の start の応答の形 |
607
+ | H2 | CH32L103(Pico 2 の rvswd)は、線を休ませる間に SWCLK が high だと debug module がリセットされる(DMCONTROL 0、hart が走る。リセット要因は増えない)。idle_clock low の attach なら halt が保たれる。旧設定の slot は idle_clock low を持っていた | tests/hw に OEP_HW_IDLE_CLOCK を足した。**仕様への提案の候補**: probe.config の console-passthrough(§1.2)に idle_clock が無く、L103 のような target では素通しを使えない(attach と同じ値を持たせる)。ベンチでは L103 の素通しを外した |
608
+
609
+ ### 決定: rvswd の線の休ませ方(2026-10-16、所有者が決定。oep-spec 3b32b12 / ba4e8ee)
610
+
611
+ 仕様にはまだ入れていない(oep-spec edbe841 で 1ad434f と 91209aa の欄を取り下げ、判断基準を probe ガイド §12 に書いた e25a654)。実装の試作は
612
+ oep-client-python の `wip/rvswd-rest` ブランチ。
613
+
614
+ - 事実: CH32L103 は high で休ませると約 1 ms で debug module がリセットされる。CH32X035 は low で休ませると attach できない。attach は 2 本とも high
615
+ から始まるので、どの系統でも target_id(DMI 0x7F)までは読める。ch32rv は今、L103 を見たら low で attach し直す回避を持っている(B になれば外す)。
616
+ - 方向(所有者の意見): 自動の決定は足してよい。初期設定はブラウザから行う予定で、時間の猶予が無い操作は host から間に合わない。
617
+ ただし自動を OFF にする手段もあった方がよい。
618
+ - 案:
619
+ 1. attach に idle_clock の TLV が無ければ、probe は target_id の系統(bit 31〜20)から決める。系統の表は registry(名前で引くデータ)。
620
+ 2. 使った休ませ方は attach の応答と connections に必ず出す。
621
+ 3. OFF は probe.config の項目 `rvswd-rest`(値: auto / high / low。項目が無ければ auto)。**口ごとに決める**: 1 台に X035 の口と L103 の口が
622
+ 並ぶことがあるので、key は wire の fn ではなく、その口の SWCLK の channel(label / idle と同じ「channel が key」。attach は swclk を固定部で
623
+ 名指すので probe はその channel の項目を引く。ユーザーと ch32rv の指摘)。host の居ない場面(素通し、ブラウザで設定した probe)にも効き、
624
+ console-passthrough に idle_clock の欄は要らない。
625
+ 4. 優先: attach の TLV > 設定の `rvswd-rest`(high / low)> 自動(auto)。
626
+ 5. 1 つの接続の休ませ方は 1 つ。変えるには detach が要る(違う TLV の attach は、生きた接続のピンなので cause 1 で断られる。ch32rv の
627
+ ブローカーは応答の休ませ方と合えば貸し、違えば断る)。
628
+ 6. 系統の事実の正本は ch32-device-data の family 属性。registry の表はそこから作るか CI で突き合わせ、2 つの正本にしない。
629
+ DMI 0x7F の bit 31〜20 で系統を引けるかは、古い系統(V103 など)の id の形で確かめる(ch32rv の DB には例外の形がある)。
630
+ - 残る論点: core §12 規則 8(チップ固有の処理を汎用のインターフェースに入れない)との関係。rvswd は対象の系統が限られる線なので、
631
+ その線の定義の中に置いてよいか。
632
+
633
+ 決定(所有者): 基本は host が判定し、タイミング系などは probe の自動判定を足せる。自動判定は設定で OFF にでき、判定したことが分かるようにする
634
+ (core §12 規則 8)。仕様は上の案のとおり(key は SWCLK の channel)。Python ebcf306 以降、Arduino 77a8002。
635
+ 実機(77a8002): idle_clock 無しの attach で Pico 2 + L103 は low(halt を 3 秒保つ)、P4 + X035 は high。`rvswd-rest=high` で L103 は high になり halt が
636
+ 0.1 s で外れる(OFF が効く)。
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "oep-client-python"
7
- version = "0.0.32"
7
+ version = "0.0.33"
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.32"
5
+ __version__ = "0.0.33"
@@ -353,6 +353,12 @@ def _config_parser(sub) -> None:
353
353
  idle.add_argument("channel", type=int)
354
354
  idle.add_argument("mode", choices=sorted(config.IDLE))
355
355
  idle.add_argument("--save", action="store_true")
356
+ rest = cs.add_parser("rvswd-rest", help="how rvswd rests a port's SWCLK: auto (the probe decides from the target_id), "
357
+ "or high / low fixed (the automatic choice off; debug §3.1)")
358
+ rest.add_argument("probe")
359
+ rest.add_argument("channel", type=int, help="the port's SWCLK channel")
360
+ rest.add_argument("mode", choices=sorted(config.REST_MODE))
361
+ rest.add_argument("--save", action="store_true")
356
362
  dis = cs.add_parser("disable", help="channels the probe never drives or sets up (not on this board)")
357
363
  dis.add_argument("probe")
358
364
  dis.add_argument("channels", type=int, nargs="+")
@@ -435,6 +441,8 @@ def _config(args) -> int:
435
441
  _change(hst, cfg, [config.Label(channel=args.channel, text=args.text)], args.save)
436
442
  elif args.action == "idle":
437
443
  _change(hst, cfg, [config.Idle(channel=args.channel, mode=args.mode)], args.save)
444
+ elif args.action == "rvswd-rest":
445
+ _change(hst, cfg, [config.RvswdRest(channel=args.channel, mode=args.mode)], args.save)
438
446
  elif args.action == "disable":
439
447
  _change(hst, cfg, [config.Disable(channel=ch) for ch in args.channels], args.save)
440
448
  elif args.action == "remove":
@@ -36,6 +36,7 @@ NAMES = tuple(_CFG.names["setting"]) # the standard i
36
36
  ITEM = {k.replace("-", "_"): i + 1 for i, k in enumerate(NAMES)}
37
37
  DESCRIBE = _CFG.tlv["describe"]
38
38
  IDLE = {k.replace("_", "-"): v for k, v in _CFG.enum["idle_mode"].items()}
39
+ REST_MODE = dict(_CFG.enum["rvswd_rest_mode"]) # rvswd-rest: auto / high / low (debug §3.1)
39
40
  STORAGE_STATE = {v: k for k, v in _CFG.enum["storage_state"].items()}
40
41
  UNREADABLE = {v: k for k, v in _CFG.enum["storage_unreadable"].items()}
41
42
  FORM = _CFG.enum["setting_form"]
@@ -140,6 +141,27 @@ class Passthrough:
140
141
  return struct.pack("<HHIB", self.fn, self.rx, self.baud, self.format)
141
142
 
142
143
 
144
+ @dataclass
145
+ class RvswdRest:
146
+ """How an rvswd attach without idle_clock rests the SWCLK on `channel` (the port's SWCLK; debug §3.1): auto - the
147
+ probe's choice from the target_id it reads (also with no item) - or high / low fixed, the automatic choice off for
148
+ that port. An attach's idle_clock TLV still decides."""
149
+ channel: int
150
+ mode: str = "auto"
151
+ NAME = "rvswd-rest"
152
+
153
+ def key(self) -> int:
154
+ return self.channel
155
+
156
+ def value(self) -> bytes:
157
+ return struct.pack("<H", self.key()) + self.data()
158
+
159
+ def data(self) -> bytes:
160
+ if self.mode not in REST_MODE:
161
+ raise ValueError(f"rvswd-rest mode {self.mode!r}: one of {', '.join(REST_MODE)}")
162
+ return bytes([REST_MODE[self.mode]])
163
+
164
+
143
165
  @dataclass(kw_only=True)
144
166
  class ConsolePassthrough:
145
167
  """Serial port `port` carries the target's debug console - read by the probe itself over `wire_fn` on (swdio, swclk)
@@ -293,6 +315,8 @@ def decode(name: str, key: int, d: bytes, setting: Setting | None = None, netifs
293
315
  try:
294
316
  if name == "label":
295
317
  return Label(channel=key, text=d.decode("utf-8", "replace"))
318
+ if name == "rvswd-rest" and len(d) == 1 and d[0] in REST_MODE.values():
319
+ return RvswdRest(channel=key, mode={v: k for k, v in REST_MODE.items()}[d[0]])
296
320
  if name == "idle" and len(d) == 1:
297
321
  return Idle(channel=key, mode=_name(IDLE, d[0]))
298
322
  if name == "disable" and not d:
@@ -117,7 +117,8 @@ RESET_MODE = _RV.enum["reset_mode"]
117
117
  READ_FROM = reg.COMMON.enum["read_from"] # position, oldest, now, last_mark (common §1.2)
118
118
  STEP_LEFT = _RV.tlv["step_answer"]["step_left"] # step's answer: the hart could not be halted again (§4.2)
119
119
  ITEM = {k.replace("-", "_"): k for k in cfgmod.NAMES} # the standard items by name (probe.config §1, core §7.7)
120
- CHANNEL_ITEMS = (ITEM["label"], ITEM["idle"], ITEM["disable"]) # items keyed by a channel (probe.config §1)
120
+ CHANNEL_ITEMS = (ITEM["label"], ITEM["idle"], ITEM["disable"], ITEM["rvswd_rest"]) # keyed by a channel (probe.config §1)
121
+ REST_MODE = cfgmod.REST_MODE
121
122
  IDLE_MODE = _CFG.enum["idle_mode"]
122
123
  CFG_DESCRIBE = cfgmod.DESCRIBE
123
124
  SETTING_FORM = _CFG.enum["setting_form"]
@@ -137,7 +138,18 @@ I2C_FEATURES, SPI_FEATURES = _I2C.enum["features"], _SPI.enum["features"]
137
138
  TARGET_ROLES = {"oep.fixture.gpio": {1}, "oep.fixture.uart": {1, 2}, _I2C.name: set(_I2C.enum["role"].values()),
138
139
  _SPI.name: set(_SPI.enum["role"].values())} # the plan roles each fixture takes
139
140
  UART_FORMAT_MASK = 0x1F # the defined format bits (fixture §2)
140
- _T_SCAN, _T_ATTACH, _T_ATTACH_ANSWER = (reg.WIRE_RVSWD.tlv[k] for k in ("scan", "attach", "attach_answer"))
141
+ _T_SCAN, _T_ATTACH, _T_ATTACH_ANSWER, _T_CONNECTIONS_ANSWER = (
142
+ reg.WIRE_RVSWD.tlv[k] for k in ("scan", "attach", "attach_answer", "connections_answer"))
143
+ _IDLE_CLOCK = reg.WIRE_RVSWD.enum["idle_clock"]
144
+
145
+
146
+ def rvswd_rest(target_id: int | None) -> int:
147
+ """The rest an rvswd attach without idle_clock uses (debug §3.1): low for a family in the registry's
148
+ idle_low_family (target_id >> target_id_family.shift), high otherwise and when no target_id was read."""
149
+ if target_id is None:
150
+ return _IDLE_CLOCK["high"]
151
+ family = target_id >> reg.WIRE_RVSWD.enum["target_id_family"]["shift"]
152
+ return _IDLE_CLOCK["low"] if family in reg.WIRE_RVSWD.enum["idle_low_family"].values() else _IDLE_CLOCK["high"]
141
153
  _WIRE_INDEX = reg.WIRE_RVSWD.tlv["unsupported_payload"]["index"] # scan's candidate index (debug §1)
142
154
  ATTACH_METHOD = reg.WIRE_RVSWD.enum["attach_method"]
143
155
  GPIO_MODE_MAX = max(_GPIO.enum["mode"].values()) # 6: the modes revision 1 defines are 0-6 (fixture §1)
@@ -542,7 +554,7 @@ class Connection:
542
554
 
543
555
 
544
556
  ITEM_SIZES = {ITEM["idle"]: 1, ITEM["disable"]: 0, ITEM["passthrough"]: 9, # the data of a fixed length (probe.config §1)
545
- ITEM["console_passthrough"]: 13, ITEM["ipv4"]: 14}
557
+ ITEM["console_passthrough"]: 13, ITEM["ipv4"]: 14, ITEM["rvswd_rest"]: 1}
546
558
  PASSTHROUGHS = (ITEM["passthrough"], ITEM["console_passthrough"])
547
559
 
548
560
 
@@ -2293,8 +2305,11 @@ class Endpoint:
2293
2305
  if tg.havereset:
2294
2306
  tg.havereset, flags = False, flags | ATTACH_FLAGS["havereset_acked"]
2295
2307
  c = self.conns[cid]
2296
- if idle_clock is not None:
2297
- c.idle_clock = idle_clock
2308
+ if rvswd: # the host's TLV, the setting, else from target_id (§3.1)
2309
+ setting = self.config.get((ITEM["rvswd_rest"], pair[1]), bytes([REST_MODE["auto"]]))[0]
2310
+ c.idle_clock = (idle_clock if idle_clock is not None
2311
+ else _IDLE_CLOCK["high"] if setting == REST_MODE["high"]
2312
+ else _IDLE_CLOCK["low"] if setting == REST_MODE["low"] else rvswd_rest(c.tid))
2298
2313
  if reset is not None and tg.reset_line not in (None, channel):
2299
2314
  if method == 1: # a line that resets nothing: halted where it ran
2300
2315
  tg.halted, tg.dpc = True, tg.reset_vector + 0x2f8
@@ -2308,6 +2323,8 @@ class Endpoint:
2308
2323
  if tg.halted and method == 1: # bit3: the probe saw hart 0 halted (§3)
2309
2324
  flags |= ATTACH_FLAGS["halted"]
2310
2325
  tail += m.tlv(_T_ATTACH_ANSWER["dpc"], struct.pack("<I", tg.dpc))
2326
+ if rvswd: # the rest in use, always (§3.1)
2327
+ tail += m.tlv(_T_ATTACH_ANSWER["idle_clock"], bytes([c.idle_clock]))
2311
2328
  return self._answer(struct.pack("<IIBI", cid, tg.dmstatus(), flags, c.speed) + tail)
2312
2329
  if op == O["detach"]:
2313
2330
  cid = t.take("I")
@@ -2321,24 +2338,31 @@ class Endpoint:
2321
2338
  first = t.take("B")
2322
2339
  t.tail()
2323
2340
  mine = sorted((c.order, cid) for cid, c in self.conns.items() if c.fn == fn)
2324
- rows = []
2341
+ rows, rests = [], []
2325
2342
  for _, cid in mine:
2326
2343
  c = self.conns[cid]
2327
2344
  tid = b"" if c.tid is None else struct.pack("<I", c.tid)
2328
2345
  scheme = TARGET_ID_SCHEME["dmi_7f"] if tid else 0
2329
2346
  rows.append(struct.pack("<IHHIBB", cid, *c.pair, c.speed, scheme, len(tid)) + tid)
2330
- return m.COMPLETED, m.SUCCESS, self._paged(rows, first)
2347
+ rests.append(c.idle_clock)
2348
+ # rvswd: TLV idle_clock (entry_index, rest) for every entry of the page (§2.1, §3.1)
2349
+ return m.COMPLETED, m.SUCCESS, self._paged(rows, first, rests if rvswd else None)
2331
2350
  return m.REJECTED, m.UNKNOWN_OPERATION, b""
2332
2351
 
2333
- def _paged(self, rows: list[bytes], first: int) -> bytes:
2334
- """more(u8) count(u8) the rows from `first` that fit the frame (connections, streams: core §2.3's lists)."""
2352
+ def _paged(self, rows: list[bytes], first: int, rests: list[int] | None = None) -> bytes:
2353
+ """more(u8) count(u8) the rows from `first` that fit the frame (connections, streams: core §2.3's lists);
2354
+ with `rests` (rvswd's connections), each row's TLV idle_clock (entry_index, rest) after them, counted in."""
2335
2355
  budget = self.probe.max_frame - m.RESULT_HEADER - 2
2336
2356
  out: list[bytes] = []
2337
- for row in rows[first:]:
2338
- if out and sum(map(len, out)) + len(row) > budget:
2357
+ tail: list[bytes] = []
2358
+ for i, row in enumerate(rows[first:]):
2359
+ extra = b"" if rests is None else m.tlv(_T_CONNECTIONS_ANSWER["idle_clock"], bytes([len(out), rests[first + i]]))
2360
+ if out and sum(map(len, out + tail)) + len(row) + len(extra) > budget:
2339
2361
  break
2340
2362
  out.append(row)
2341
- return bytes([int(first + len(out) < len(rows)), len(out)]) + b"".join(out)
2363
+ if extra:
2364
+ tail.append(extra)
2365
+ return bytes([int(first + len(out) < len(rows)), len(out)]) + b"".join(out) + b"".join(tail)
2342
2366
 
2343
2367
  def _attach_methods(self, fn: int) -> set[int]:
2344
2368
  """method 0, and 1 when the wire declares features bit0 attach_halt (debug §3)."""
@@ -3275,6 +3299,8 @@ class Endpoint:
3275
3299
  return True
3276
3300
  if mode in (IDLE_MODE["pull_up"], IDLE_MODE["pull_down"]) and mode in self.no_pull.get(key, ()):
3277
3301
  return True
3302
+ if name == ITEM["rvswd_rest"] and d[0] not in REST_MODE.values():
3303
+ return True # a mode the definition leaves unused (§1)
3278
3304
  return False
3279
3305
 
3280
3306
  def _shown(self, name: str, d: bytes) -> bytes:
@@ -3,7 +3,7 @@
3
3
 
4
4
  from types import SimpleNamespace as _NS
5
5
 
6
- REGISTRY_HASH = "0aaae1a1afbb5b02"
6
+ REGISTRY_HASH = "66b19f04290391f3"
7
7
  SCHEMA = 1
8
8
  PROTOCOL_REVISION = 1
9
9
  CONFIRM_REQUEST_MAGIC = 'OEP?'
@@ -42,7 +42,7 @@ PROBE_LINK = _NS(name="oep.probe.link", revision=1, target=None, op={"source": 0
42
42
  line_names={}, names={})
43
43
  INTERFACES["oep.probe.link"] = PROBE_LINK
44
44
  WIRE_RVSWD = _NS(name="oep.wire.rvswd", revision=1, target="RISC-V targets whose debug module is reached over the two-wire RVSWD line", op={"scan": 0x10, "attach": 0x11, "detach": 0x12, "connections": 0x13}, lock_free={0x13},
45
- tlv={"describe": {"max_connections": 0x40}, "scan": {"max_speed": 0x01, "idle_clock": 0x03}, "attach": {"idle_clock": 0x03, "reset": 0x04}, "attach_answer": {"target_id": 0x01, "dpc": 0x02}, "unavailable_payload": {"index": 0x40}, "unsupported_payload": {"index": 0x40}}, event={}, enum={"scan_kind": {"riscv_dm": 0x01}, "attach_flags": {"havereset_acked": 0x01, "halted": 0x08}, "features": {"attach_halt": 0x01}, "attach_method": {"run": 0x00, "halt": 0x01}, "pin_role": {"swdio": 0x01, "swclk": 0x02, "reset": 0x03}, "idle_clock": {"high": 0x00, "low": 0x01}}, own={},
45
+ tlv={"describe": {"max_connections": 0x40}, "scan": {"max_speed": 0x01, "idle_clock": 0x03}, "attach": {"idle_clock": 0x03, "reset": 0x04}, "attach_answer": {"target_id": 0x01, "dpc": 0x02, "idle_clock": 0x03}, "connections_answer": {"idle_clock": 0x02}, "unavailable_payload": {"index": 0x40}, "unsupported_payload": {"index": 0x40}}, event={}, enum={"scan_kind": {"riscv_dm": 0x01}, "attach_flags": {"havereset_acked": 0x01, "halted": 0x08}, "features": {"attach_halt": 0x01}, "attach_method": {"run": 0x00, "halt": 0x01}, "pin_role": {"swdio": 0x01, "swclk": 0x02, "reset": 0x03}, "idle_clock": {"high": 0x00, "low": 0x01}, "target_id_family": {"shift": 0x14}, "idle_low_family": {"ch32l103": 0x103}}, own={},
46
46
  line_names={}, names={})
47
47
  INTERFACES["oep.wire.rvswd"] = WIRE_RVSWD
48
48
  WIRE_SWIO = _NS(name="oep.wire.swio", revision=1, target="RISC-V targets whose debug module is reached over the one-wire SWIO line", op={"scan": 0x10, "attach": 0x11, "detach": 0x12, "connections": 0x13}, lock_free={0x13},
@@ -94,6 +94,6 @@ FIXTURE_CAPTURE_GROUP = _NS(name="oep.fixture.capture-group", revision=1, target
94
94
  line_names={}, names={})
95
95
  INTERFACES["oep.fixture.capture-group"] = FIXTURE_CAPTURE_GROUP
96
96
  PROBE_CONFIG = _NS(name="oep.probe.config", revision=1, target=None, op={"get": 0x10, "set": 0x11, "save": 0x12, "erase": 0x13, "unset": 0x14, "state": 0x15, "network": 0x16}, lock_free={0x10, 0x15, 0x16},
97
- tlv={"describe": {"storage": 0x40, "setting": 0x41, "netif": 0x42}}, event={}, enum={"idle_mode": {"hi_z": 0x00, "pull_up": 0x01, "pull_down": 0x02, "output_low": 0x03, "output_high": 0x04}, "ipv4_mode": {"dhcp": 0x00, "static": 0x01}, "network_state": {"off": 0x00, "connecting": 0x01, "up": 0x02, "waiting": 0x03}, "network_reason": {"none": 0x00, "not_found": 0x01, "auth": 0x02, "no_address": 0x03, "other": 0x04}, "setting_form": {"named": 0x00, "bytes": 0x01, "text": 0x02, "u32": 0x03, "ipv4": 0x04, "bool": 0x05}, "setting_flag": {"secret": 0x01, "restart": 0x02}, "storage_state": {"none": 0x00, "applied": 0x01, "unreadable": 0x02, "partial": 0x03}, "storage_unreadable": {"none": 0x00, "form": 0x01, "item": 0x02, "capacity": 0x03}}, own={},
98
- line_names={'nrst': 'the target reset line (Host only)', 'power_hi': 'target power on when high (Host only)', 'power_lo': 'target power on when low (Host only)'}, names={'setting': {'label': 'key channel; text 1-32 bytes', 'idle': 'key channel; mode(u8)', 'disable': 'key channel; no data', 'passthrough': 'key port; fn(u16) rx(u16) baud(u32) format(u8)', 'console-passthrough': 'key port; wire_fn(u16) swdio(u16) swclk(u16) max_speed(u32) console_fn(u16) mechanism(u8)', 'wifi': 'key entry; ssid_len(u8) ssid pass_len(u8) passphrase; passphrase write-only', 'ipv4': 'key netif; mode(u8) address(4) prefix(u8) gateway(4) dns(4)'}, 'netif': {'wifi': 'Wi-Fi station', 'ethernet': 'wired Ethernet'}})
97
+ tlv={"describe": {"storage": 0x40, "setting": 0x41, "netif": 0x42}}, event={}, enum={"idle_mode": {"hi_z": 0x00, "pull_up": 0x01, "pull_down": 0x02, "output_low": 0x03, "output_high": 0x04}, "rvswd_rest_mode": {"auto": 0x00, "high": 0x01, "low": 0x02}, "ipv4_mode": {"dhcp": 0x00, "static": 0x01}, "network_state": {"off": 0x00, "connecting": 0x01, "up": 0x02, "waiting": 0x03}, "network_reason": {"none": 0x00, "not_found": 0x01, "auth": 0x02, "no_address": 0x03, "other": 0x04}, "setting_form": {"named": 0x00, "bytes": 0x01, "text": 0x02, "u32": 0x03, "ipv4": 0x04, "bool": 0x05}, "setting_flag": {"secret": 0x01, "restart": 0x02}, "storage_state": {"none": 0x00, "applied": 0x01, "unreadable": 0x02, "partial": 0x03}, "storage_unreadable": {"none": 0x00, "form": 0x01, "item": 0x02, "capacity": 0x03}}, own={},
98
+ line_names={'swdio': 'the debug data line (2 wires: rvswd, swd) (Host only)', 'swclk': 'the debug clock line (2 wires: rvswd, swd) (Host only)', 'swio': 'the one debug wire (swio) (Host only)', 'rx': 'the fixture UART receive, wired to the target TX (Host only)', 'tx': 'the fixture UART transmit, wired to the target RX (Host only)', 'nrst': 'the target reset line (Host only)', 'power_hi': 'target power on when high (Host only)', 'power_lo': 'target power on when low (Host only)'}, names={'setting': {'label': 'key channel; text 1-32 bytes', 'idle': 'key channel; mode(u8)', 'disable': 'key channel; no data', 'passthrough': 'key port; fn(u16) rx(u16) baud(u32) format(u8)', 'console-passthrough': 'key port; wire_fn(u16) swdio(u16) swclk(u16) max_speed(u32) console_fn(u16) mechanism(u8)', 'wifi': 'key entry; ssid_len(u8) ssid pass_len(u8) passphrase; passphrase write-only', 'ipv4': 'key netif; mode(u8) address(4) prefix(u8) gateway(4) dns(4)', 'rvswd-rest': "key channel (the port's SWCLK); mode(u8): rvswd_rest_mode"}, 'netif': {'wifi': 'Wi-Fi station', 'ethernet': 'wired Ethernet'}})
99
99
  INTERFACES["oep.probe.config"] = PROBE_CONFIG
@@ -197,6 +197,10 @@ class WireBase(Interface):
197
197
  ONE_WIRE = False # swio: swclk is 0xFFFF (§3)
198
198
  DEFAULT_MAX_SPEED = 1_000_000 # when the wire declares no max_clock_hz either
199
199
 
200
+ def _is_rvswd(self) -> bool:
201
+ """The rest TLVs are rvswd's (debug §3.1); the name as opened, else the class's."""
202
+ return getattr(self, "name", self.NAME) == "oep.wire.rvswd"
203
+
200
204
  def _description(self) -> catalog.Description:
201
205
  return catalog.decode_description(b"".join(catalog.tlv(t, v) for t, v in describe(self.host, self.fn)))
202
206
 
@@ -307,17 +311,22 @@ class WireBase(Interface):
307
311
  for _ in range(count):
308
312
  conn, swdio, swclk, speed, scheme, n = rd.take("IHHIBB")
309
313
  tid = rd.bytes(n)
310
- page.append([conn, (swdio, swclk), speed, (scheme, tid) if scheme else None, None])
314
+ page.append([conn, (swdio, swclk), speed, (scheme, tid) if scheme else None, None, None])
311
315
  for tag, value in m.split_tlvs(rd.rest()):
312
316
  # entry_index(u8) targetsel(u32), repeatable; bit 7 in an answer: an unknown tag (core §2.2, §2.3)
313
317
  if tag == _SELECTED_TARGET and len(value) == 5 and value[0] < len(page):
314
318
  page[value[0]][4] = struct.unpack_from("<I", value, 1)[0]
319
+ # rvswd: entry_index(u8) idle_clock(u8) for every entry (debug §2.1, §3.1)
320
+ if self._is_rvswd() and tag == _REST and len(value) == 2 and value[0] < len(page):
321
+ page[value[0]][5] = _REST_NAMES.get(value[1])
315
322
  out += [ConnectionInfo(*row) for row in page]
316
323
  if not more or not count or len(out) > 0xFF:
317
324
  return out
318
325
 
319
326
 
320
327
  _SELECTED_TARGET = reg.WIRE_SWD.tlv["connections_answer"]["selected_target"]
328
+ _REST = reg.WIRE_RVSWD.tlv["connections_answer"]["idle_clock"]
329
+ _REST_NAMES = {v: k for k, v in reg.WIRE_RVSWD.enum["idle_clock"].items()}
321
330
 
322
331
 
323
332
  @dataclass(frozen=True)
@@ -329,6 +338,7 @@ class ConnectionInfo:
329
338
  speed_hz: int
330
339
  target_id: tuple[int, bytes] | None
331
340
  targetsel: int | None = None
341
+ idle_clock: str | None = None # rvswd: "high" / "low", the rest the connection uses (debug §3.1)
332
342
 
333
343
 
334
344
  class Wire(WireBase):
@@ -342,6 +352,7 @@ class Wire(WireBase):
342
352
  SCHEME_DMI_7F = reg.COMMON.enum["target_id_scheme"]["dmi_7f"] # the u32 at DMI 0x7F (oep-if-debug §3)
343
353
 
344
354
  TAG_DPC = reg.WIRE_RVSWD.tlv["attach_answer"]["dpc"]
355
+ TAG_REST = reg.WIRE_RVSWD.tlv["attach_answer"]["idle_clock"]
345
356
 
346
357
  def __init__(self, hst: h.Host, name: str = "oep.wire.rvswd"):
347
358
  super().__init__(hst, name)
@@ -397,6 +408,10 @@ class Wire(WireBase):
397
408
  dpc = tail.get(self.TAG_DPC)
398
409
  # dpc is a u32: a value of another length is broken, not used (core §2.3)
399
410
  self.dpc = struct.unpack("<I", dpc)[0] if self.halted and dpc is not None and len(dpc) == 4 else None
411
+ # rvswd: the rest the connection uses, the host's or the probe's choice from target_id (debug §3.1)
412
+ rest = tail.get(self.TAG_REST) if self._is_rvswd() else None
413
+ names = {v: k for k, v in self.IDLE_CLOCK.items()}
414
+ self.idle_clock = names.get(rest[0]) if rest is not None and len(rest) == 1 else None
400
415
  return conn, status
401
416
 
402
417
  def attach_under_reset(self, channel: int, hold_ms: int = 20, max_speed: int | None = None,
@@ -262,7 +262,7 @@ def _setting(name: str, keys: int, form: int = 0, max_len: int = 0, flags: int =
262
262
 
263
263
 
264
264
  def _config(fn: int, instance: int, storage: int = 4096, *, channels: int = 64, ports: int = 4, netifs=(), wifi_entries: int = 4,
265
- own=()) -> Offered:
265
+ own=(), rvswd: bool = False) -> Offered:
266
266
  """oep.probe.config's declarations (probe.config §4): the standard items label / idle / disable (keys: the
267
267
  channels), passthrough / console-passthrough (keys: the transports), with `netifs` (names) wifi / ipv4 and the
268
268
  network op; `own`: the probe's own items as (name, form, keys, max_len, flags) (§1.6). storage 0 = none - no storage
@@ -274,6 +274,8 @@ def _config(fn: int, instance: int, storage: int = 4096, *, channels: int = 64,
274
274
  if "wifi" in netifs:
275
275
  settings.append(_setting("wifi", wifi_entries))
276
276
  settings.append(_setting("ipv4", len(netifs) + 1))
277
+ if rvswd: # its automatic rest can be turned off per port (debug §3.1)
278
+ settings.append(_setting("rvswd-rest", channels))
277
279
  settings += [_setting(name, keys, form, max_len, flags) for name, form, keys, max_len, flags in own]
278
280
  return Offered(fn, instance, "oep.probe.config", ops_of("oep.probe.config", *drop)
279
281
  + ((catalog.u32(_CFG["storage"], storage),) if storage else ()) + tuple(settings)
@@ -388,7 +390,7 @@ def p4_x035() -> VirtualProbe:
388
390
  max_stretch_us=100_000), # stretch
389
391
  Offered(9, 0, "oep.fixture.spi-target", _roles({1: pins, 2: pins, 3: pins, 4: pins})
390
392
  + _spi_decl(max_length=64, max_hz=3_000_000, features=0b1, queue_depth=8)), # LSB first
391
- _config(10, 0, channels=55, ports=4, netifs=("ethernet",)),
393
+ _config(10, 0, channels=55, ports=4, netifs=("ethernet",), rvswd=True),
392
394
  # the P4's ADC1 (GPIO16-23): one ADC for all its channels, 611 Hz - 83.3 kHz in all; ESP32-style attenuations
393
395
  Offered(11, 0, "oep.fixture.analog", _roles({k: list(range(16, 24)) for k in range(4)})
394
396
  + _analog_decl([(0, 0, 950), (1, 0, 1250), (2, 0, 1750), (3, 0, 3100)], 65536, 611, 83_333),
@@ -465,7 +467,7 @@ def p4_bench() -> VirtualProbe:
465
467
  _console(3),
466
468
  _gpio(4, pins),
467
469
  _uart(5, 0, pins, 3_000_000),
468
- _config(6, 0, channels=55, ports=4),
470
+ _config(6, 0, channels=55, ports=4, rvswd=True),
469
471
  _link(7),
470
472
  _plan(8),
471
473
  _restart(9),