@typecad/cuttlefish 1.0.0-alpha.13 → 1.0.0-alpha.15

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 (343) hide show
  1. package/README.md +82 -79
  2. package/assets/editor-extensions/typecad-debug/README.md +141 -0
  3. package/assets/editor-extensions/typecad-debug/out/extension.js +347 -0
  4. package/assets/editor-extensions/typecad-debug/out/extension.js.map +1 -0
  5. package/assets/editor-extensions/typecad-debug/package.json +76 -0
  6. package/assets/editor-extensions/typecad-ui/LICENSE +27 -0
  7. package/assets/editor-extensions/typecad-ui/README.md +52 -0
  8. package/assets/editor-extensions/typecad-ui/file-icon-dark.png +0 -0
  9. package/assets/editor-extensions/typecad-ui/file-icon-light.png +0 -0
  10. package/assets/editor-extensions/typecad-ui/icon.png +0 -0
  11. package/assets/editor-extensions/typecad-ui/language-configuration.json +43 -0
  12. package/assets/editor-extensions/typecad-ui/package.json +54 -0
  13. package/assets/editor-extensions/typecad-ui/snippets/typecad-ui.json +80 -0
  14. package/assets/editor-extensions/typecad-ui/syntaxes/markdown-ui.json +45 -0
  15. package/assets/editor-extensions/typecad-ui/syntaxes/typecad-ui.tmLanguage.json +1269 -0
  16. package/dist/api/config.d.ts +30 -27
  17. package/dist/api/schema/types.d.ts +20 -3
  18. package/dist/api/shared/async-runtime-static.d.ts +1 -1
  19. package/dist/api/shared/async-runtime-static.js +5 -5
  20. package/dist/api/shared/async-types.d.ts +3 -2
  21. package/dist/api/shared/board-catalog.d.ts +2 -0
  22. package/dist/api/shared/board-catalog.js +6 -0
  23. package/dist/api/shared/board-resolver.d.ts +4 -7
  24. package/dist/api/shared/board-resolver.js +2 -1
  25. package/dist/api/shared/coop-scheduler.d.ts +1 -1
  26. package/dist/api/shared/coop-scheduler.js +1 -1
  27. package/dist/api/shared/cpp-type-ir.d.ts +1 -1
  28. package/dist/api/shared/cpp-type-ir.js +1 -1
  29. package/dist/api/shared/display-profile.d.ts +1 -1
  30. package/dist/api/shared/display-profile.js +3 -5
  31. package/dist/api/shared/framework-manifest-registry.d.ts +1 -1
  32. package/dist/api/shared/framework-manifest-registry.js +0 -1
  33. package/dist/api/shared/framework-manifest.d.ts +65 -507
  34. package/dist/api/shared/framework-manifest.js +6 -11
  35. package/dist/api/shared/hal-op-ir.d.ts +294 -685
  36. package/dist/api/shared/hal-op-ir.js +31 -65
  37. package/dist/api/shared/index.d.ts +0 -4
  38. package/dist/api/shared/index.js +1 -7
  39. package/dist/api/shared/ir-core.d.ts +6 -0
  40. package/dist/api/shared/ir-declarations.d.ts +4 -0
  41. package/dist/api/shared/ir.d.ts +1 -3
  42. package/dist/api/shared/platform-strategy.d.ts +14 -37
  43. package/dist/api/shared/polyfill-helper-registry.js +0 -5
  44. package/dist/api/shared/polyfill-types.js +0 -27
  45. package/dist/api/shared/promise-runtime.js +3 -3
  46. package/dist/api/shared/spdx-licenses.d.ts +12 -10
  47. package/dist/api/shared/spdx-licenses.js +1 -1
  48. package/dist/api/shared/toolchain-types.d.ts +1 -1
  49. package/dist/api/shared/toolchain-types.js +3 -3
  50. package/dist/api/shared/types.d.ts +0 -3
  51. package/dist/api/shared/validate-framework-manifest.js +13 -33
  52. package/dist/board-catalog/dts-reader.d.ts +220 -0
  53. package/dist/board-catalog/dts-reader.js +1052 -0
  54. package/dist/board-catalog/index.d.ts +11 -0
  55. package/dist/board-catalog/index.js +12 -0
  56. package/dist/board-catalog/pinconfig.d.ts +48 -0
  57. package/dist/board-catalog/pinconfig.js +263 -0
  58. package/dist/board-catalog/sdk.d.ts +82 -0
  59. package/dist/board-catalog/sdk.js +180 -0
  60. package/dist/board-catalog/store.d.ts +196 -0
  61. package/dist/board-catalog/store.js +363 -0
  62. package/dist/board-catalog/types.d.ts +233 -0
  63. package/dist/board-catalog/types.js +7 -0
  64. package/dist/board-catalog/walker.d.ts +112 -0
  65. package/dist/board-catalog/walker.js +1101 -0
  66. package/dist/cli-utils.d.ts +2 -2
  67. package/dist/cli-utils.js +5 -5
  68. package/dist/cli.js +227 -244
  69. package/dist/config-loader.d.ts +14 -19
  70. package/dist/config-loader.js +242 -78
  71. package/dist/config-schema.d.ts +19 -227
  72. package/dist/config-schema.js +9 -8
  73. package/dist/contract/board-generator.d.ts +4 -4
  74. package/dist/contract/board-generator.js +16 -5
  75. package/dist/contract/contract-parser.d.ts +36 -127
  76. package/dist/contract/contract-parser.js +76 -0
  77. package/dist/contract/index.d.ts +1 -1
  78. package/dist/contract/index.js +70 -21
  79. package/dist/create/active-board-catalog.d.ts +9 -0
  80. package/dist/create/active-board-catalog.js +94 -0
  81. package/dist/create/board-catalog.generated.d.ts +96 -0
  82. package/dist/create/board-catalog.generated.js +128737 -0
  83. package/dist/create/board-search.d.ts +23 -0
  84. package/dist/create/board-search.js +88 -0
  85. package/dist/create/editor-integration.d.ts +32 -0
  86. package/dist/create/editor-integration.js +257 -0
  87. package/dist/create/eslint-rules-template.d.ts +2 -2
  88. package/dist/create/framework-catalog.d.ts +48 -8
  89. package/dist/create/framework-catalog.js +58 -44
  90. package/dist/create/index.d.ts +8 -13
  91. package/dist/create/index.js +5 -9
  92. package/dist/create/mcu-target.d.ts +39 -0
  93. package/dist/create/mcu-target.js +80 -0
  94. package/dist/create/pack-targets.d.ts +19 -0
  95. package/dist/create/pack-targets.js +56 -0
  96. package/dist/create/{init-scaffold.d.ts → scaffold.d.ts} +8 -11
  97. package/dist/create/{init-scaffold.js → scaffold.js} +28 -87
  98. package/dist/create/templates.d.ts +51 -0
  99. package/dist/create/{init-templates.js → templates.js} +135 -116
  100. package/dist/create/wizard.d.ts +19 -0
  101. package/dist/create/wizard.js +314 -0
  102. package/dist/debug/preprocessor.d.ts +5 -0
  103. package/dist/debug/preprocessor.js +31 -7
  104. package/dist/diagnostics/diagnostics-report.d.ts +1 -1
  105. package/dist/diagnostics/diagnostics-report.js +3 -11
  106. package/dist/diagnostics/json-schema.d.ts +1 -1
  107. package/dist/diagnostics/md-writer.js +2 -2
  108. package/dist/diagnostics/mermaid-builder.d.ts +1 -1
  109. package/dist/diagnostics/mermaid-builder.js +1 -1
  110. package/dist/emit/cpp-emitter.js +4 -1
  111. package/dist/emit/emitters/class-emitter.js +32 -4
  112. package/dist/emit/emitters/emitter-context.d.ts +11 -0
  113. package/dist/emit/emitters/entrypoint-synthesizer.js +1 -1
  114. package/dist/emit/emitters/function-emitter-impl.js +33 -17
  115. package/dist/emit/emitters/output-finalizer.d.ts +7 -0
  116. package/dist/emit/emitters/output-finalizer.js +31 -23
  117. package/dist/emit/emitters/setup.js +147 -63
  118. package/dist/emit/emitters/top-level-prep.js +1 -1
  119. package/dist/emit/emitters/type-decl-emitter.js +13 -8
  120. package/dist/emit/emitters/ui-emitter.js +1 -1
  121. package/dist/emit/expression-renderer.d.ts +3 -3
  122. package/dist/emit/expression-renderer.js +17 -7
  123. package/dist/emit/route-hal-op.js +17 -48
  124. package/dist/emit/snprintf-helpers.d.ts +1 -3
  125. package/dist/emit/snprintf-helpers.js +1 -39
  126. package/dist/emit/statement-renderer.d.ts +0 -4
  127. package/dist/emit/statement-renderer.js +54 -45
  128. package/dist/emit/utils/async-state-machine.d.ts +16 -9
  129. package/dist/emit/utils/async-state-machine.js +56 -54
  130. package/dist/emit/utils/comment-helpers.d.ts +0 -8
  131. package/dist/emit/utils/comment-helpers.js +1 -1
  132. package/dist/emit/utils/cpp-helpers.d.ts +2 -2
  133. package/dist/emit/utils/cpp-helpers.js +2 -2
  134. package/dist/emit/utils/hal-op-cpp-type.js +4 -6
  135. package/dist/emit/utils/index.d.ts +3 -3
  136. package/dist/emit/utils/index.js +3 -3
  137. package/dist/emit/utils/type-inference.d.ts +1 -29
  138. package/dist/emit/utils/type-inference.js +0 -75
  139. package/dist/framework-package.d.ts +3 -0
  140. package/dist/framework-package.js +23 -6
  141. package/dist/framework-registry.d.ts +5 -5
  142. package/dist/frameworks/native/graphics/terminal-preview.d.ts +5 -0
  143. package/dist/frameworks/native/graphics/terminal-preview.js +33 -0
  144. package/dist/frameworks/native/index.d.ts +3 -0
  145. package/dist/frameworks/native/index.js +15 -0
  146. package/dist/frameworks/native/native-compile.d.ts +17 -0
  147. package/dist/frameworks/native/native-compile.js +170 -0
  148. package/dist/frameworks/native/native-config.d.ts +41 -0
  149. package/dist/frameworks/native/native-config.js +7 -0
  150. package/dist/frameworks/native/strategy.d.ts +97 -0
  151. package/dist/frameworks/native/strategy.js +664 -0
  152. package/dist/ir/board-resolver.d.ts +18 -23
  153. package/dist/ir/board-resolver.js +43 -401
  154. package/dist/ir/build-ir-state.d.ts +3 -0
  155. package/dist/ir/build-ir-state.js +42 -0
  156. package/dist/ir/build-ir.d.ts +1 -1
  157. package/dist/ir/build-ir.js +64 -45
  158. package/dist/ir/declaration-builders.js +1 -0
  159. package/dist/ir/expression-to-ir.js +17 -10
  160. package/dist/ir/hal/hal-emitter.d.ts +0 -2
  161. package/dist/ir/hal/hal-emitter.js +92 -41
  162. package/dist/ir/hal/hal-parser.d.ts +5 -5
  163. package/dist/ir/hal/hal-parser.js +128 -36
  164. package/dist/ir/hal/hal-plugins.d.ts +0 -1
  165. package/dist/ir/hal/hal-plugins.js +425 -716
  166. package/dist/ir/heap-analysis.js +2 -41
  167. package/dist/ir/identifier-collector.js +32 -20
  168. package/dist/ir/network-validation.js +7 -11
  169. package/dist/ir/ownership-analysis.js +75 -13
  170. package/dist/ir/peripheral-usage.d.ts +8 -2
  171. package/dist/ir/peripheral-usage.js +78 -149
  172. package/dist/ir/peripheral-validation.js +23 -3
  173. package/dist/ir/pin-capability-validation.d.ts +12 -0
  174. package/dist/ir/pin-capability-validation.js +61 -97
  175. package/dist/ir/pin-mode-validation.js +5 -5
  176. package/dist/ir/program-analysis.d.ts +8 -15
  177. package/dist/ir/program-analysis.js +140 -323
  178. package/dist/ir/pulldown-validation.js +11 -4
  179. package/dist/ir/resource-analysis.js +15 -3
  180. package/dist/ir/statement-to-ir.js +0 -6
  181. package/dist/ir/timing-validation.js +1 -1
  182. package/dist/ir/transformers/array-methods.js +11 -5
  183. package/dist/ir/transformers/call-statement.js +20 -87
  184. package/dist/ir/transformers/callback-context-registry.d.ts +1 -1
  185. package/dist/ir/transformers/callback-context-registry.js +8 -16
  186. package/dist/ir/transformers/control-flow.js +0 -13
  187. package/dist/ir/transformers/expressions.js +10 -9
  188. package/dist/ir/transformers/hal-call-resolver.d.ts +2 -2
  189. package/dist/ir/transformers/hal-call-resolver.js +24 -10
  190. package/dist/ir/transformers/hal-emit-helpers.d.ts +2 -2
  191. package/dist/ir/transformers/hal-emit-helpers.js +2 -2
  192. package/dist/ir/transformers/namespace-methods.js +1 -1
  193. package/dist/ir/transformers/ui-callback-lowering.d.ts +0 -2
  194. package/dist/ir/transformers/ui-callback-lowering.js +0 -24
  195. package/dist/ir/transformers/variables.js +338 -42
  196. package/dist/ir/try-catch-validation.js +4 -3
  197. package/dist/ir/type-resolution.js +15 -4
  198. package/dist/ir/validation-orchestrator.js +0 -9
  199. package/dist/libdef/cpp-to-decl.d.ts +0 -9
  200. package/dist/libdef/cpp-to-decl.js +0 -72
  201. package/dist/libdef/registry.d.ts +0 -1
  202. package/dist/libdef/registry.js +1 -24
  203. package/dist/library/catalog.d.ts +35 -0
  204. package/dist/library/catalog.js +67 -0
  205. package/dist/library/cli.d.ts +2 -0
  206. package/dist/library/cli.js +168 -0
  207. package/dist/library/init.d.ts +25 -0
  208. package/dist/library/init.js +397 -0
  209. package/dist/library/install.d.ts +9 -0
  210. package/dist/library/install.js +80 -0
  211. package/dist/library/registry-search.d.ts +34 -0
  212. package/dist/library/registry-search.js +50 -0
  213. package/dist/library/validate.d.ts +17 -0
  214. package/dist/library/validate.js +175 -0
  215. package/dist/library-packages.d.ts +95 -0
  216. package/dist/library-packages.js +275 -0
  217. package/dist/mapping/peripheral-names.js +9 -4
  218. package/dist/mapping/source-map.d.ts +3 -4
  219. package/dist/mapping/source-map.js +12 -18
  220. package/dist/orchestrator/graph-builder.d.ts +3 -3
  221. package/dist/orchestrator/graph-builder.js +29 -12
  222. package/dist/orchestrator/type-checker.d.ts +3 -3
  223. package/dist/orchestrator/type-checker.js +3 -3
  224. package/dist/platform/async-runtime.js +1 -1
  225. package/dist/platform/coop-scheduler-runtime.js +2 -2
  226. package/dist/platform/generic-debug-codegen.d.ts +36 -0
  227. package/dist/platform/generic-debug-codegen.js +185 -0
  228. package/dist/platform/generic-strategy.d.ts +3 -4
  229. package/dist/platform/generic-strategy.js +5 -80
  230. package/dist/platform/index.js +1 -1
  231. package/dist/platform/registry.d.ts +2 -2
  232. package/dist/platform/registry.js +2 -2
  233. package/dist/preview/client.js +17 -3
  234. package/dist/safety/asil-decorators.d.ts +32 -0
  235. package/dist/safety/asil-decorators.js +32 -0
  236. package/dist/safety/authoring.d.ts +85 -0
  237. package/dist/safety/authoring.js +61 -0
  238. package/dist/safety/engine.d.ts +3 -0
  239. package/dist/safety/engine.js +83 -0
  240. package/dist/safety/hal/ops.d.ts +48 -0
  241. package/dist/safety/hal/ops.js +46 -0
  242. package/dist/safety/iso26262/analyze.d.ts +13 -0
  243. package/dist/safety/iso26262/analyze.js +29 -0
  244. package/dist/safety/iso26262/asil.d.ts +10 -0
  245. package/dist/safety/iso26262/asil.js +22 -0
  246. package/dist/safety/iso26262/collect.d.ts +14 -0
  247. package/dist/safety/iso26262/collect.js +137 -0
  248. package/dist/safety/iso26262/goto-checker.d.ts +10 -0
  249. package/dist/safety/iso26262/goto-checker.js +72 -0
  250. package/dist/safety/iso26262/heap-checker.d.ts +7 -0
  251. package/dist/safety/iso26262/heap-checker.js +57 -0
  252. package/dist/safety/iso26262/init-checker.d.ts +13 -0
  253. package/dist/safety/iso26262/init-checker.js +127 -0
  254. package/dist/safety/iso26262/loop-checker.d.ts +7 -0
  255. package/dist/safety/iso26262/loop-checker.js +86 -0
  256. package/dist/safety/iso26262/recursion-checker.d.ts +9 -0
  257. package/dist/safety/iso26262/recursion-checker.js +134 -0
  258. package/dist/safety/iso26262/sidecar-writer.d.ts +25 -0
  259. package/dist/safety/iso26262/sidecar-writer.js +13 -0
  260. package/dist/safety/passes/pinMode-intercept.d.ts +3 -0
  261. package/dist/safety/passes/pinMode-intercept.js +60 -0
  262. package/dist/safety/runtime/mode-table.d.ts +5 -0
  263. package/dist/safety/runtime/mode-table.js +55 -0
  264. package/dist/safety/runtime/polyfills.d.ts +6 -0
  265. package/dist/safety/runtime/polyfills.js +12 -0
  266. package/dist/safety/runtime/result-struct.d.ts +11 -0
  267. package/dist/safety/runtime/result-struct.js +98 -0
  268. package/dist/safety/runtime/safe-int.d.ts +33 -0
  269. package/dist/safety/runtime/safe-int.js +170 -0
  270. package/dist/safety/runtime/safe-traits.d.ts +4 -0
  271. package/dist/safety/runtime/safe-traits.js +95 -0
  272. package/dist/safety/runtime/safe-variable.d.ts +39 -0
  273. package/dist/safety/runtime/safe-variable.js +226 -0
  274. package/dist/safety/runtime/vote.d.ts +8 -0
  275. package/dist/safety/runtime/vote.js +92 -0
  276. package/dist/safety/runtime/write-verify.d.ts +8 -0
  277. package/dist/safety/runtime/write-verify.js +71 -0
  278. package/dist/safety/safe-int-types.d.ts +45 -0
  279. package/dist/safety/safe-int-types.js +25 -0
  280. package/dist/safety/safe-variable-types.d.ts +29 -0
  281. package/dist/safety/safe-variable-types.js +19 -0
  282. package/dist/safety/safety-bridge.d.ts +5 -6
  283. package/dist/safety/safety-bridge.js +15 -28
  284. package/dist/safety/sidecar-bridge.d.ts +1 -3
  285. package/dist/safety/sidecar-bridge.js +3 -20
  286. package/dist/safety/specifiers.d.ts +6 -0
  287. package/dist/safety/specifiers.js +14 -0
  288. package/dist/safety-hook.d.ts +8 -7
  289. package/dist/safety-hook.js +12 -13
  290. package/dist/testing.d.ts +5 -6
  291. package/dist/testing.js +5 -5
  292. package/dist/transpile/resolution.d.ts +1 -1
  293. package/dist/transpile/resolution.js +18 -9
  294. package/dist/transpile/test-pins.d.ts +18 -0
  295. package/dist/transpile/test-pins.js +142 -0
  296. package/dist/transpile.d.ts +1 -2
  297. package/dist/transpile.js +90 -29
  298. package/dist/types.d.ts +45 -26
  299. package/dist/ui-hook.d.ts +1 -1
  300. package/dist/utils/cli.d.ts +2 -2
  301. package/dist/utils/cli.js +160 -157
  302. package/dist/utils/fs.d.ts +3 -4
  303. package/dist/utils/fs.js +4 -5
  304. package/dist/utils/strings.d.ts +0 -1
  305. package/dist/utils/strings.js +0 -8
  306. package/dist/utils/ui.d.ts +5 -2
  307. package/dist/utils/ui.js +13 -3
  308. package/package.json +158 -149
  309. package/dist/add-preset.d.ts +0 -4
  310. package/dist/add-preset.js +0 -74
  311. package/dist/api/shared/async-symbol-detector.d.ts +0 -11
  312. package/dist/api/shared/async-symbol-detector.js +0 -140
  313. package/dist/api/shared/native-display-op-resolver.d.ts +0 -10
  314. package/dist/api/shared/native-display-op-resolver.js +0 -64
  315. package/dist/create/board-checklist.d.ts +0 -2
  316. package/dist/create/board-checklist.js +0 -52
  317. package/dist/create/board-codegen.d.ts +0 -9
  318. package/dist/create/board-codegen.js +0 -238
  319. package/dist/create/board-generators.d.ts +0 -12
  320. package/dist/create/board-generators.js +0 -651
  321. package/dist/create/board-spec.d.ts +0 -637
  322. package/dist/create/board-spec.js +0 -214
  323. package/dist/create/init-templates.d.ts +0 -28
  324. package/dist/create/init-wizard.d.ts +0 -8
  325. package/dist/create/init-wizard.js +0 -182
  326. package/dist/install/framework-catalog.d.ts +0 -53
  327. package/dist/install/framework-catalog.js +0 -107
  328. package/dist/install/handle-install.d.ts +0 -35
  329. package/dist/install/handle-install.js +0 -177
  330. package/dist/install/index.d.ts +0 -4
  331. package/dist/install/index.js +0 -3
  332. package/dist/ir/pin-state-tracking.d.ts +0 -58
  333. package/dist/ir/pin-state-tracking.js +0 -182
  334. package/dist/ir/pwm-timer-sharing.d.ts +0 -4
  335. package/dist/ir/pwm-timer-sharing.js +0 -94
  336. package/dist/ir/timer0-pwm-timing-conflict.d.ts +0 -4
  337. package/dist/ir/timer0-pwm-timing-conflict.js +0 -72
  338. package/dist/libdef/component-decls.d.ts +0 -2
  339. package/dist/libdef/component-decls.js +0 -6
  340. package/dist/libdef/component-discovery.d.ts +0 -43
  341. package/dist/libdef/component-discovery.js +0 -83
  342. package/dist/theme-tokens.d.ts +0 -22
  343. package/dist/theme-tokens.js +0 -172
@@ -7,466 +7,262 @@ export interface GpioWriteOp {
7
7
  pin: number;
8
8
  /** 0 = LOW, 1 = HIGH, or a runtime expression string (e.g. "state", "!state") */
9
9
  value: 0 | 1 | string;
10
- /**
11
- * Output-pin state tracking: set at the END of the file's IR build (see
12
- * markShadowUpdatingOps) when this pin has a tracked shadow read anywhere
13
- * in the file — the emitted write must also assign the shadow state
14
- * variable. Baked into the op at build time because emit never sees live
15
- * tracker state: every file's buildProgramIR resets the tracker, and all
16
- * files build before any emit runs.
17
- */
18
- updatesShadow?: boolean;
19
10
  }
20
11
  export interface GpioReadOp {
21
12
  operation: "gpio.read";
22
13
  port?: string;
23
14
  pin: number;
24
- /**
25
- * Output-pin state tracking: when set, this read is on a pin explicitly
26
- * configured as OUTPUT and must NOT lower to a hardware pin read (which is
27
- * not portable for direction-only outputs, e.g. Zephyr). 'high'/'low' fold
28
- * to a compile-time constant; 'shadow' lowers to the tracked state
29
- * variable that generated writes keep updated.
30
- */
31
- trackedValue?: "high" | "low" | "shadow";
32
15
  }
33
16
  export interface GpioToggleOp {
34
17
  operation: "gpio.toggle";
35
18
  port?: string;
36
19
  pin: number;
37
- /** Output-pin state tracking — same contract as GpioWriteOp.updatesShadow. */
38
- updatesShadow?: boolean;
39
20
  }
40
- export interface GpioSetModeOp {
41
- operation: "gpio.set_mode";
21
+ export interface InterruptDetachOp {
22
+ operation: "interrupt.detach";
42
23
  port?: string;
43
24
  pin: number;
44
- /** "output" | "input" | "input_pullup" | "input_pulldown" */
45
- mode: string;
46
25
  }
47
- export interface PwmWriteOp {
48
- operation: "pwm.write";
49
- port?: string;
50
- pin: number;
51
- /** Duty cycle — numeric value or runtime expression string */
52
- duty: number | string;
26
+ export interface TimingSleepOp {
27
+ operation: "timing.sleep";
28
+ ms: number;
53
29
  }
54
- export interface PwmGetFrequencyOp {
55
- operation: "pwm.get_frequency";
56
- port?: string;
57
- pin: number;
30
+ export interface TimingNowOp {
31
+ operation: "timing.now";
58
32
  }
59
- export interface PwmGetResolutionOp {
60
- operation: "pwm.get_resolution";
61
- port?: string;
62
- pin: number;
33
+ export interface TimingNowUsOp {
34
+ operation: "timing.now_us";
63
35
  }
64
- export interface RmtTxInitOp {
65
- operation: "rmt.tx_init";
66
- port?: string;
67
- pin: number;
68
- resolutionHz: number | string;
69
- bit0Hi: number | string;
70
- bit0Lo: number | string;
71
- bit1Hi: number | string;
72
- bit1Lo: number | string;
73
- msbFirst?: boolean | string;
74
- queueDepth?: number | string;
75
- }
76
- export interface RmtTxWriteBytesOp {
77
- operation: "rmt.tx_write_bytes";
78
- port?: string;
79
- pin: number;
80
- /** Pre-rendered C array initializer body, e.g. "1, 2, 3" (positional; bytes arg is array-literal-rendered). */
81
- bytes: string;
36
+ export interface TimingBusyWaitUsOp {
37
+ operation: "timing.busy_wait_us";
38
+ us: number;
82
39
  }
83
- export interface RmtTxWriteSymbolsOp {
84
- operation: "rmt.tx_write_symbols";
85
- port?: string;
40
+ export interface GpioConfigureOp {
41
+ operation: "gpio.configure";
86
42
  pin: number;
87
- /** Rendered rmt_symbol_word_t array body, one row per symbol. */
88
- symbols: string;
43
+ /** Flag token text: "GPIO.OUTPUT | GPIO.PULL_UP" */
44
+ flags: string;
89
45
  }
90
- export interface RmtTxWaitDoneOp {
91
- operation: "rmt.tx_wait_done";
92
- port?: string;
46
+ export interface GpioReadCfgOp {
47
+ operation: "gpio.read_cfg";
93
48
  pin: number;
94
- timeoutMs?: number | string;
49
+ /** Flag token text — the guarded configure is fused into the read. */
50
+ flags: string;
95
51
  }
96
- export interface RmtTxDeinitOp {
97
- operation: "rmt.tx_deinit";
98
- port?: string;
99
- pin: number;
52
+ export interface GpioShiftOutOp {
53
+ operation: "gpio.shift_out";
54
+ dataPin: number;
55
+ clockPin: number;
56
+ value: number | string;
57
+ msbFirst: boolean;
100
58
  }
101
- export interface RmtRxInitOp {
102
- operation: "rmt.rx_init";
103
- port?: string;
104
- pin: number;
105
- resolutionHz: number | string;
59
+ export interface GpioShiftInOp {
60
+ operation: "gpio.shift_in";
61
+ dataPin: number;
62
+ clockPin: number;
63
+ msbFirst: boolean;
106
64
  }
107
- export interface RmtRxOnReceivedOp {
108
- operation: "rmt.rx_on_received";
109
- port?: string;
65
+ export interface InterruptAttachFlagsOp {
66
+ operation: "interrupt.attach_flags";
110
67
  pin: number;
111
- /** User-declared C function name to call on receive. */
68
+ /** Resolved C++ callback function name */
112
69
  handler: string;
70
+ /** INT flag token text: "GPIO.INT_EDGE_FALLING" */
71
+ intFlags: string;
113
72
  }
114
- export interface RmtRxStartOp {
115
- operation: "rmt.rx_start";
116
- port?: string;
117
- pin: number;
73
+ /** Inline routing overrides shared by the pwm.set_* ops (construction
74
+ * opts, the escape hatch): DT controller nodelabel + channel. */
75
+ export interface PwmRoutingOverride {
76
+ controllerOverride?: string;
77
+ channelOverride?: number;
118
78
  }
119
- export interface RmtRxStopOp {
120
- operation: "rmt.rx_stop";
121
- port?: string;
79
+ export interface PwmSetPulseOp extends PwmRoutingOverride {
80
+ operation: "pwm.set_pulse";
122
81
  pin: number;
82
+ /** Construction period in ns */
83
+ periodNs: number | string;
84
+ pulseNs: number | string;
123
85
  }
124
- export interface RmtRxReadOp {
125
- operation: "rmt.rx_read";
126
- port?: string;
86
+ export interface PwmSetDutyOp extends PwmRoutingOverride {
87
+ operation: "pwm.set_duty";
127
88
  pin: number;
128
- maxCount: number | string;
89
+ /** Construction period in ns */
90
+ periodNs: number | string;
91
+ /** Duty fraction 0.0–1.0 */
92
+ duty: number | string;
129
93
  }
130
- export interface RmtRxDeinitOp {
131
- operation: "rmt.rx_deinit";
132
- port?: string;
94
+ export interface PwmSetPeriodOp extends PwmRoutingOverride {
95
+ operation: "pwm.set_period";
133
96
  pin: number;
97
+ periodNs: number | string;
134
98
  }
135
- export interface AdcReadOp {
136
- operation: "adc.read";
137
- port?: string;
99
+ export interface AdcReadRawOp {
100
+ operation: "adc.read_raw";
138
101
  pin: number;
139
- }
140
- export interface AdcGetResolutionOp {
141
- operation: "adc.get_resolution";
142
- }
143
- export interface AdcSetReferenceOp {
144
- operation: "adc.set_reference";
145
- /** Reference constant name or numeric value */
146
- reference: string | number;
147
- }
148
- export interface AdcGetReferenceOp {
149
- operation: "adc.get_reference";
150
- }
151
- export interface AdcReadVoltageOp {
152
- operation: "adc.read_voltage";
153
- port?: string;
102
+ /** Gain token text ("ADC.GAIN_1_4"); '' = descriptor default */
103
+ gain?: string;
104
+ /** Reference token text ("ADC.REF_INTERNAL"); '' = descriptor default */
105
+ reference?: string;
106
+ /** Inline routing overrides (construction opts, the escape hatch): the
107
+ * user vouches for a pin the facts layer does not cover. -1/'' = absent. */
108
+ channelOverride?: number;
109
+ deviceOverride?: string;
110
+ pinctrlOverride?: string;
111
+ }
112
+ export interface AdcReadMvOp {
113
+ operation: "adc.read_mv";
154
114
  pin: number;
155
- vRef?: number;
156
- maxValue?: number;
157
- }
158
- export interface DacWriteOp {
159
- operation: "dac.write";
160
- port?: string;
115
+ gain?: string;
116
+ reference?: string;
117
+ channelOverride?: number;
118
+ deviceOverride?: string;
119
+ pinctrlOverride?: string;
120
+ }
121
+ export interface DacWriteValueOp {
122
+ operation: "dac.write_value";
161
123
  pin: number;
162
- /** Output value — numeric or runtime expression string */
163
124
  value: number | string;
125
+ /** Construction resolution in bits; 0 = descriptor channel default */
126
+ resolution: number;
164
127
  }
165
- export interface InterruptAttachOp {
166
- operation: "interrupt.attach";
167
- port?: string;
168
- pin: number;
169
- /** Resolved C++ callback function name */
170
- handler: string;
171
- /** "rising" | "falling" | "change" | "high" | "low" */
172
- mode: string;
173
- }
174
- export interface InterruptDetachOp {
175
- operation: "interrupt.detach";
176
- port?: string;
177
- pin: number;
178
- }
179
- export interface TonePlayOp {
180
- operation: "tone.play";
181
- port?: string;
182
- pin: number;
183
- /** Frequency in Hz — numeric or runtime expression string */
184
- frequency: number | string;
185
- /** Optional duration in milliseconds — numeric or runtime expression string */
186
- duration?: number | string;
187
- }
188
- export interface ToneStopOp {
189
- operation: "tone.stop";
190
- port?: string;
191
- pin: number;
192
- }
193
- export interface TimingDelayOp {
194
- operation: "timing.delay";
195
- ms: number;
196
- }
197
- export interface TimingDelayMicrosecondsOp {
198
- operation: "timing.delay_microseconds";
199
- us: number;
200
- }
201
- export interface TimingMillisOp {
202
- operation: "timing.millis";
203
- }
204
- export interface TimingMicrosOp {
205
- operation: "timing.micros";
206
- }
207
- export interface TimingFreeHeapOp {
208
- operation: "timing.free_heap";
128
+ export interface WdtSetupOp {
129
+ operation: "wdt.setup";
130
+ /** Construction timeout in milliseconds */
131
+ timeoutMs: number;
209
132
  }
210
- export interface TimingSetIntervalOp {
211
- operation: "timing.set_interval";
212
- /** Resolved C++ callback function name */
213
- handler: string;
214
- timeout: number;
133
+ export interface WdtFeedOp {
134
+ operation: "wdt.feed";
215
135
  }
216
- export interface TimingSetTimeoutOp {
217
- operation: "timing.set_timeout";
136
+ export interface CounterOnAlarmOp {
137
+ operation: "counter.on_alarm";
138
+ instance: number;
218
139
  /** Resolved C++ callback function name */
219
140
  handler: string;
220
- timeout: number;
221
- }
222
- export interface TimingClearIntervalOp {
223
- operation: "timing.clear_interval";
224
- id: number;
225
- }
226
- export interface TimingClearTimeoutOp {
227
- operation: "timing.clear_timeout";
228
- id: number;
229
- }
230
- export interface PowerDeepSleepOp {
231
- operation: "power.deep_sleep";
232
- ms: number;
233
- }
234
- export interface PowerLightSleepOp {
235
- operation: "power.light_sleep";
236
- }
237
- export interface PowerSetCpuFrequencyOp {
238
- operation: "power.set_cpu_frequency";
239
- mhz: number;
240
141
  }
241
- export interface PowerDeepSleepPinOp {
242
- operation: "power.deep_sleep_pin";
243
- pin: number;
244
- level: number;
245
- }
246
- export interface I2cBeginOp {
247
- operation: "i2c.begin";
248
- bus: string;
249
- /** Slave address (only for slave mode) — numeric or runtime expression string */
250
- address?: number | string;
142
+ export interface CounterStartOp {
143
+ operation: "counter.start";
144
+ instance: number;
145
+ /** Construction alarm frequency in Hz — realized as the top value */
146
+ hz: number;
251
147
  }
252
- export interface I2cEndOp {
253
- operation: "i2c.end";
254
- bus: string;
148
+ export interface CounterStopOp {
149
+ operation: "counter.stop";
150
+ instance: number;
255
151
  }
256
- export interface I2cSetClockOp {
257
- operation: "i2c.set_clock";
152
+ export interface I2cRegWriteOp {
153
+ operation: "i2c.reg_write";
258
154
  bus: string;
259
- /** Clock speed in Hz — numeric or runtime expression string */
260
- hz: number | string;
155
+ address: number;
156
+ /** Bus speed applied once at first use; 0 = leave as configured */
157
+ hz: number;
158
+ reg: number | string;
159
+ value: number | string;
261
160
  }
262
- export interface I2cBeginTransmissionOp {
263
- operation: "i2c.begin_transmission";
161
+ export interface I2cRegReadOp {
162
+ operation: "i2c.reg_read";
264
163
  bus: string;
265
- /** Slave address — numeric or runtime expression string */
266
- address: number | string;
164
+ address: number;
165
+ hz: number;
166
+ reg: number | string;
267
167
  }
268
- export interface I2cWriteOp {
269
- operation: "i2c.write";
168
+ export interface I2cRegUpdateOp {
169
+ operation: "i2c.reg_update";
270
170
  bus: string;
271
- /** Resolved C++ expression for the data to write */
272
- data: string;
171
+ address: number;
172
+ hz: number;
173
+ reg: number | string;
174
+ mask: number | string;
175
+ value: number | string;
273
176
  }
274
- export interface I2cWriteBytesOp {
275
- operation: "i2c.write_bytes";
177
+ export interface I2cDevWriteOp {
178
+ operation: "i2c.dev_write";
276
179
  bus: string;
277
- /** Individual byte values — numeric literals or runtime expressions */
180
+ address: number;
181
+ hz: number;
182
+ /** Byte values — numeric literals or runtime expressions */
278
183
  bytes: (number | string)[];
279
184
  }
280
- export interface I2cWriteBufferOp {
281
- operation: "i2c.write_buffer";
282
- bus: string;
283
- /** C array / buffer variable name */
284
- data: string;
285
- }
286
- export interface I2cReadBufferOp {
287
- operation: "i2c.read_buffer";
288
- bus: string;
289
- count: number | string;
290
- /** Buffer variable name, or "__DISCARD__" to read-and-drop */
291
- buffer: string;
292
- }
293
- export interface I2cEndTransmissionOp {
294
- operation: "i2c.end_transmission";
295
- bus: string;
296
- stop: boolean;
297
- }
298
- export interface I2cRequestFromOp {
299
- operation: "i2c.request_from";
300
- bus: string;
301
- /** Slave address — numeric or runtime expression string */
302
- address: number | string;
303
- /** Number of bytes — numeric or runtime expression string */
304
- quantity: number | string;
305
- stop: boolean;
306
- }
307
- export interface I2cAvailableOp {
308
- operation: "i2c.available";
309
- bus: string;
310
- }
311
- export interface I2cReadOp {
312
- operation: "i2c.read";
313
- bus: string;
314
- }
315
- export interface I2cRecoverOp {
316
- operation: "i2c.recover";
317
- bus: string;
318
- }
319
- export interface SpiBeginOp {
320
- operation: "spi.begin";
321
- bus: string;
322
- }
323
- export interface SpiEndOp {
324
- operation: "spi.end";
325
- bus: string;
326
- }
327
- export interface SpiTransferOp {
328
- operation: "spi.transfer";
329
- bus: string;
330
- /** Resolved C++ expression for data to transfer */
331
- data: string;
332
- }
333
- export interface SpibeginTransactionOp {
334
- operation: "spi.begin_transaction";
335
- bus: string;
336
- /** Resolved C++ SPISettings expression */
337
- settings: string;
338
- }
339
- export interface SpiEndTransactionOp {
340
- operation: "spi.end_transaction";
341
- bus: string;
342
- }
343
- export interface SpiSetModeOp {
344
- operation: "spi.set_mode";
185
+ export interface SpiTransceiveOp {
186
+ operation: "spi.transceive";
345
187
  bus: string;
346
- /** SPI mode (0-3) — numeric or runtime expression string */
347
- mode: number | string;
348
- }
349
- export interface SpiSetBitOrderOp {
350
- operation: "spi.set_bit_order";
188
+ cs: number;
189
+ hz: number;
190
+ mode: number;
191
+ tx: (number | string)[];
192
+ /** Caller's buffer identifier ('' = write-only) */
193
+ rx: string;
194
+ }
195
+ export interface SpiDevWriteOp {
196
+ operation: "spi.dev_write";
351
197
  bus: string;
352
- /** "lsb" | "msb" */
353
- order: string;
354
- }
355
- export interface SpiCsLowOp {
356
- operation: "spi.cs_low";
357
- port?: string;
358
- pin: number;
359
- }
360
- export interface SpiCsHighOp {
361
- operation: "spi.cs_high";
362
- port?: string;
363
- pin: number;
198
+ cs: number;
199
+ hz: number;
200
+ mode: number;
201
+ tx: (number | string)[];
364
202
  }
365
- export interface SpiReadBufferOp {
366
- operation: "spi.read_buffer";
203
+ export interface SpiRegReadOp {
204
+ operation: "spi.reg_read";
367
205
  bus: string;
368
- /** Number of bytes — numeric or runtime expression string */
369
- count: number | string;
370
- /** Buffer variable name, "__HAL_READ_BUF__" placeholder (rewritten to the
371
- * caller's variable by the variable-init transformer), or "__DISCARD__" */
372
- buffer: string;
373
- }
374
- export interface UartBeginOp {
375
- operation: "uart.begin";
376
- port: string;
377
- /** Baud rate — numeric or runtime expression string */
378
- baud: number | string;
379
- }
380
- export interface UartEndOp {
381
- operation: "uart.end";
382
- port: string;
383
- }
384
- export interface UartPrintOp {
385
- operation: "uart.print";
386
- port: string;
387
- /** Resolved C++ expression to print */
388
- value: string;
206
+ cs: number;
207
+ hz: number;
208
+ mode: number;
209
+ reg: number | string;
389
210
  }
390
- export interface UartPrintlnOp {
391
- operation: "uart.println";
211
+ export interface UartPollWriteOp {
212
+ operation: "uart.poll_write";
392
213
  port: string;
393
- /** Resolved C++ expression to print */
394
- value: string;
395
- }
396
- export interface UartPrintfOp {
397
- operation: "uart.printf";
398
- port: string;
399
- /** printf format string */
400
- format: string;
401
- /** Resolved C++ argument expressions */
402
- args: string[];
403
- }
404
- export interface UartWriteOp {
405
- operation: "uart.write";
406
- port: string;
407
- /** Resolved C++ expression for data */
214
+ baud: number;
408
215
  data: string;
409
216
  }
410
- export interface UartReadOp {
411
- operation: "uart.read";
217
+ export interface UartRxArmOp {
218
+ operation: "uart.rx_arm";
412
219
  port: string;
220
+ /** Ring size in bytes (sizes the shim's static buffer). */
221
+ ring: number;
413
222
  }
414
- export interface UartPeekOp {
415
- operation: "uart.peek";
223
+ export interface UartRxAvailableOp {
224
+ operation: "uart.rx_available";
416
225
  port: string;
226
+ ring: number;
417
227
  }
418
- export interface UartAvailableOp {
419
- operation: "uart.available";
228
+ export interface UartRxPeekOp {
229
+ operation: "uart.rx_peek";
420
230
  port: string;
231
+ ring: number;
421
232
  }
422
- export interface UartFlushOp {
423
- operation: "uart.flush";
233
+ export interface UartRxReadOp {
234
+ operation: "uart.rx_read";
424
235
  port: string;
236
+ ring: number;
237
+ }
238
+ export interface ThreadStartOp {
239
+ operation: "thread.start";
240
+ /** Thread identity slot (0, 1, 2, …) */
241
+ instance: number;
242
+ /** Stack size in bytes (construction fact — sizes the K_THREAD_STACK) */
243
+ stackBytes: number;
244
+ /** Zephyr priority (negative = cooperative; default 5 = preemptive below main) */
245
+ priority: number;
246
+ /** Resolved C++ entry function name (callback-registered) */
247
+ handler: string;
425
248
  }
426
- export interface PulseInOp {
427
- operation: "pulse.in";
428
- port?: string;
429
- pin: number;
430
- /** 0 = LOW, 1 = HIGH */
431
- value: 0 | 1;
432
- /** Optional timeout in microseconds */
433
- timeout?: number;
434
- }
435
- export interface PulseInLongOp {
436
- operation: "pulse.in_long";
437
- port?: string;
438
- pin: number;
439
- /** 0 = LOW, 1 = HIGH */
440
- value: 0 | 1;
249
+ export interface ThreadJoinOp {
250
+ operation: "thread.join";
251
+ instance: number;
441
252
  }
442
- export interface ShiftOutOp {
443
- operation: "shift.out";
444
- dataPin: number;
445
- clockPin: number;
446
- /** "lsb" | "msb" */
447
- bitOrder: string;
448
- value: number;
253
+ export interface I2cReadOp {
254
+ operation: "i2c.read";
255
+ bus: string;
449
256
  }
450
- export interface ShiftInOp {
451
- operation: "shift.in";
452
- dataPin: number;
453
- clockPin: number;
454
- /** "lsb" | "msb" */
455
- bitOrder: string;
257
+ export interface I2cRecoverOp {
258
+ operation: "i2c.recover";
259
+ bus: string;
456
260
  }
457
261
  export interface BoardResolveOp {
458
262
  operation: "board.resolve";
459
263
  /** Dot-separated path into the board definition (e.g. "peripherals.pwm.resolution") */
460
264
  path: string;
461
265
  }
462
- export interface WdtEnableOp {
463
- operation: "wdt.enable";
464
- /** Timeout — a duration string ("250ms"), a WDTO_* constant name, or a number */
465
- timeout: string | number;
466
- }
467
- export interface WdtResetOp {
468
- operation: "wdt.reset";
469
- }
470
266
  export interface WdtDisableOp {
471
267
  operation: "wdt.disable";
472
268
  }
@@ -479,12 +275,26 @@ export interface SnprintfEmitOp {
479
275
  /** Resolved C++ argument expressions */
480
276
  args: string[];
481
277
  }
482
- export interface WifiConnectOp {
483
- operation: "wifi.connect";
278
+ export interface WifiJoinOp {
279
+ operation: "wifi.join";
484
280
  ssid: string;
485
- password?: string;
486
- timeoutMs: number | string;
487
- blocking: boolean;
281
+ /** Pre-shared key; absent for open networks. */
282
+ psk?: string;
283
+ /** Security token value (WiFi.OPEN/WPA2/WPA3/WPA2_WPA3) — the lowering
284
+ * maps it to the Zephyr wifi_security_type enum. */
285
+ security?: number;
286
+ /** 0 = any. */
287
+ channel?: number;
288
+ /** Band token value (WiFi.BAND_2_4 / BAND_5). */
289
+ band?: number;
290
+ /** join()'s bounded-wait deadline. */
291
+ timeoutMs?: number;
292
+ /** Nonzero = WiFi.PS_OFF — disable the radio's modem sleep. */
293
+ ps?: number;
294
+ /** Static IPv4 facts — applied instead of DHCP when present. */
295
+ ipAddr?: string;
296
+ gateway?: string;
297
+ netmask?: string;
488
298
  }
489
299
  export interface WifiConnectStartOp {
490
300
  operation: "wifi.connect_start";
@@ -494,9 +304,6 @@ export interface WifiConnectStartOp {
494
304
  export interface WifiDisconnectOp {
495
305
  operation: "wifi.disconnect";
496
306
  }
497
- export interface WifiStatusOp {
498
- operation: "wifi.status";
499
- }
500
307
  export interface WifiIsConnectedOp {
501
308
  operation: "wifi.is_connected";
502
309
  }
@@ -509,29 +316,6 @@ export interface WifiRssiOp {
509
316
  export interface WifiMacOp {
510
317
  operation: "wifi.mac";
511
318
  }
512
- export interface WifiSetHostnameOp {
513
- operation: "wifi.set_hostname";
514
- name: string;
515
- }
516
- export interface WifiSetStaticIpOp {
517
- operation: "wifi.set_static_ip";
518
- ip: string;
519
- gateway: string;
520
- subnet: string;
521
- dns?: string;
522
- }
523
- export interface WifiSetAutoReconnectOp {
524
- operation: "wifi.set_auto_reconnect";
525
- enabled: boolean | string;
526
- }
527
- export interface WifiSetPowerSaveOp {
528
- operation: "wifi.set_power_save";
529
- mode: string;
530
- }
531
- export interface WifiSetTxPowerOp {
532
- operation: "wifi.set_tx_power";
533
- dbm: number | string;
534
- }
535
319
  export interface WifiOnEventOp {
536
320
  operation: "wifi.on_event";
537
321
  event: "connect" | "disconnect" | string;
@@ -548,27 +332,12 @@ export interface WifiApStartOp {
548
332
  export interface WifiApStopOp {
549
333
  operation: "wifi.ap_stop";
550
334
  }
551
- export interface WifiApClientCountOp {
552
- operation: "wifi.ap_client_count";
553
- }
554
- export interface WifiApIpOp {
555
- operation: "wifi.ap_ip";
556
- }
557
- export interface WifiApSetChannelOp {
558
- operation: "wifi.ap_set_channel";
559
- channel: number | string;
560
- }
561
- export interface WifiApSetHiddenOp {
562
- operation: "wifi.ap_set_hidden";
563
- hidden: boolean | string;
564
- }
565
- export interface WifiApSetMaxClientsOp {
566
- operation: "wifi.ap_set_max_clients";
567
- maxClients: number | string;
568
- }
569
335
  export interface WifiScanOp {
570
336
  operation: "wifi.scan";
571
337
  }
338
+ /** Async split partner of wifi.scan — kicks the scan without waiting; pair
339
+ * with the wifi.scan_done poll predicate (netWaitInfo). Emitted
340
+ * synthetically by the async tier, not by a TS-facing HAL method. */
572
341
  export interface WifiScanStartOp {
573
342
  operation: "wifi.scan_start";
574
343
  }
@@ -595,33 +364,11 @@ export interface WifiScanChannelOp {
595
364
  operation: "wifi.scan_channel";
596
365
  index: number | string;
597
366
  }
598
- export interface WifiSaveCredentialsOp {
599
- operation: "wifi.save_credentials";
600
- ssid: string;
601
- password: string;
602
- }
603
- export interface WifiConnectSavedOp {
604
- operation: "wifi.connect_saved";
605
- timeoutMs: number | string;
606
- }
607
- export interface WifiClearCredentialsOp {
608
- operation: "wifi.clear_credentials";
609
- }
610
- export interface WifiWaitConnectedOp {
611
- operation: "wifi.wait_connected";
612
- timeoutMs: number | string;
613
- }
614
- export interface WifiWaitDisconnectedOp {
615
- operation: "wifi.wait_disconnected";
616
- }
617
367
  export interface HttpBeginOp {
618
368
  operation: "http.begin";
619
369
  method: string;
620
370
  url: string;
621
371
  }
622
- export interface HttpResetOp {
623
- operation: "http.reset";
624
- }
625
372
  export interface HttpSetHeaderOp {
626
373
  operation: "http.set_header";
627
374
  name: string;
@@ -642,6 +389,8 @@ export interface HttpSetBodyOp {
642
389
  }
643
390
  export interface HttpSetInsecureOp {
644
391
  operation: "http.set_insecure";
392
+ /** False is a no-op (the op always emits from send(); the lowering elides). */
393
+ insecure: boolean;
645
394
  }
646
395
  export interface HttpSetCaCertOp {
647
396
  operation: "http.set_ca_cert";
@@ -658,22 +407,6 @@ export interface HttpSendStartOp {
658
407
  export interface HttpDoneOp {
659
408
  operation: "http.done";
660
409
  }
661
- /** Submit `fnRef(argRef)` to worker slot `handleId`; returns immediately. */
662
- export interface WorkerSubmitOp {
663
- operation: "worker.submit";
664
- /** Fixed worker slot index (0..poolSize-1). */
665
- handleId: number;
666
- /** C++ symbol of the function to run: `void fn(void* arg)`. */
667
- fnRef: string;
668
- /** Optional argument expression (passed through verbatim). */
669
- argRef?: string;
670
- }
671
- /** Poll predicate paired with worker.submit — true once the worker finished. */
672
- export interface WorkerDoneOp {
673
- operation: "worker.done";
674
- /** Worker slot index, matching the worker.submit it polls. */
675
- handleId: number;
676
- }
677
410
  export interface HttpStatusOp {
678
411
  operation: "http.status";
679
412
  }
@@ -741,87 +474,70 @@ export interface BleIsConnectedOp {
741
474
  export interface BleClientCountOp {
742
475
  operation: "ble.client_count";
743
476
  }
744
- export interface BleSetNameOp {
745
- operation: "ble.set_name";
746
- name: string;
747
- }
748
- export interface BleUntilConnectedOp {
749
- operation: "ble.until_connected";
750
- timeoutMs: number | string;
751
- blocking: boolean;
752
- }
753
- export interface BleUntilConnectedStartOp {
754
- operation: "ble.until_connected_start";
755
- }
756
- export interface BleSetTxPowerOp {
757
- operation: "ble.set_tx_power";
758
- dbm: number | string;
759
- }
760
- export interface BleStatusOp {
761
- operation: "ble.status";
762
- }
763
- export interface PreferencesBeginOp {
764
- operation: "preferences.begin";
765
- namespace: string;
766
- readOnly: boolean;
767
- }
768
- export interface PreferencesEndOp {
769
- operation: "preferences.end";
770
- }
771
477
  export interface PreferencesClearOp {
772
478
  operation: "preferences.clear";
479
+ /** Namespace — the settings subtree prefix tc/<ns>/. */
480
+ ns: string;
773
481
  }
774
482
  export interface PreferencesRemoveOp {
775
483
  operation: "preferences.remove";
484
+ /** Namespace — the settings subtree prefix tc/<ns>/. */
485
+ ns: string;
776
486
  key: string;
777
487
  }
778
488
  export interface PreferencesPutIntOp {
779
489
  operation: "preferences.put_int";
490
+ /** Namespace — the settings subtree prefix tc/<ns>/. */
491
+ ns: string;
780
492
  key: string;
781
493
  value: number | string;
782
494
  }
783
495
  export interface PreferencesGetIntOp {
784
496
  operation: "preferences.get_int";
785
- key: string;
786
- defaultValue: number | string;
787
- }
788
- export interface PreferencesPutUIntOp {
789
- operation: "preferences.put_uint";
790
- key: string;
791
- value: number | string;
792
- }
793
- export interface PreferencesGetUIntOp {
794
- operation: "preferences.get_uint";
497
+ /** Namespace — the settings subtree prefix tc/<ns>/. */
498
+ ns: string;
795
499
  key: string;
796
500
  defaultValue: number | string;
797
501
  }
798
502
  export interface PreferencesPutBoolOp {
799
503
  operation: "preferences.put_bool";
504
+ /** Namespace — the settings subtree prefix tc/<ns>/. */
505
+ ns: string;
800
506
  key: string;
801
507
  value: boolean;
802
508
  }
803
509
  export interface PreferencesGetBoolOp {
804
510
  operation: "preferences.get_bool";
511
+ /** Namespace — the settings subtree prefix tc/<ns>/. */
512
+ ns: string;
805
513
  key: string;
806
514
  defaultValue: boolean;
807
515
  }
808
516
  export interface PreferencesPutFloatOp {
809
517
  operation: "preferences.put_float";
518
+ /** Namespace — the settings subtree prefix tc/<ns>/. */
519
+ ns: string;
810
520
  key: string;
811
521
  value: number | string;
812
522
  }
813
523
  export interface PreferencesGetFloatOp {
814
524
  operation: "preferences.get_float";
525
+ /** Namespace — the settings subtree prefix tc/<ns>/. */
526
+ ns: string;
815
527
  key: string;
816
528
  defaultValue: number | string;
817
529
  }
818
530
  export interface PreferencesPutStringOp {
819
531
  operation: "preferences.put_string";
532
+ /** Namespace — the settings subtree prefix tc/<ns>/. */
533
+ ns: string;
820
534
  key: string;
821
535
  value: string;
822
536
  }
823
537
  export interface PreferencesGetStringOp {
824
538
  operation: "preferences.get_string";
539
+ /** Namespace — the settings subtree prefix tc/<ns>/. */
540
+ ns: string;
825
541
  key: string;
826
542
  defaultValue: string;
827
543
  }
@@ -840,9 +556,6 @@ export interface RandomSeedOp {
840
556
  /** Seed value — numeric or runtime expression string */
841
557
  seed: number | string;
842
558
  }
843
- export interface FsBeginOp {
844
- operation: "fs.begin";
845
- }
846
559
  export interface FsReadTextOp {
847
560
  operation: "fs.read_text";
848
561
  /** C string expression for the path */
@@ -865,31 +578,6 @@ export interface FsRemoveOp {
865
578
  /** C string expression for the path */
866
579
  path: string;
867
580
  }
868
- export interface MdnsStartOp {
869
- operation: "mdns.start";
870
- /** C string expression for the host name */
871
- hostname: string;
872
- }
873
- export interface MdnsSetHostnameOp {
874
- operation: "mdns.set_hostname";
875
- /** C string expression for the host name */
876
- name: string;
877
- }
878
- export interface MdnsAddServiceOp {
879
- operation: "mdns.add_service";
880
- /** C string expression for the service instance name */
881
- instance: string;
882
- /** C string expression for the protocol ("_tcp" / "_udp") */
883
- proto: string;
884
- /** Port number — numeric or runtime expression string */
885
- port: number | string;
886
- }
887
- export interface MdnsAnnounceOp {
888
- operation: "mdns.announce";
889
- }
890
- export interface MdnsStopOp {
891
- operation: "mdns.stop";
892
- }
893
581
  export interface MqttConnectOp {
894
582
  operation: "mqtt.connect";
895
583
  /** C string expression for the broker URI ("mqtt://..." / "mqtts://...") */
@@ -920,54 +608,44 @@ export interface MqttConnectedOp {
920
608
  export interface MqttDisconnectOp {
921
609
  operation: "mqtt.disconnect";
922
610
  }
923
- export interface OtaFromUrlOp {
924
- operation: "ota.from_url";
925
- /** C string expression for the HTTPS firmware URL */
926
- url: string;
927
- }
928
- export interface OtaBeginOp {
929
- operation: "ota.begin";
930
- }
931
- export interface OtaWriteOp {
932
- operation: "ota.write";
933
- /** C expression for the chunk data (buffer/pointer) */
934
- chunk: string;
935
- }
936
- export interface OtaApplyOp {
937
- operation: "ota.apply";
938
- }
939
- export interface TempReadOp {
940
- operation: "temp.read";
941
- }
942
- export interface HwtimerSetFrequencyOp {
943
- operation: "hwtimer.set_frequency";
944
- /** Timer instance index */
945
- instance: number | string;
946
- /** Frequency in Hz */
947
- hz: number | string;
948
- }
949
- export interface HwtimerOnOverflowOp {
950
- operation: "hwtimer.on_overflow";
951
- /** Timer instance index */
952
- instance: number | string;
953
- /** Resolved C++ callback function name */
954
- handler: string;
955
- }
956
- export interface HwtimerStartOp {
957
- operation: "hwtimer.start";
958
- /** Timer instance index */
959
- instance: number | string;
960
- }
961
- export interface HwtimerStopOp {
962
- operation: "hwtimer.stop";
963
- /** Timer instance index */
964
- instance: number | string;
965
- }
966
- export interface CapacitiveReadOp {
967
- operation: "capacitive.read";
968
- port?: string;
969
- /** Touch-capable GPIO pin number */
970
- pin: number;
611
+ export interface SensorFetchOp {
612
+ operation: "sensor.fetch";
613
+ /** Catalog token an underscored Zephyr compatible ('SENSOR.sensirion_sht3xd'
614
+ * or the bare 'sensirion_sht3xd'); the lowering resolves it against the
615
+ * generated catalog for the DT compatible string. */
616
+ part: string;
617
+ /** Bus name as carried by the HAL ('I2C1' / its alias 'Wire1'). */
618
+ bus: string;
619
+ /** Bus port: 7-bit I2C address, or the SPI chip-select pin number. */
620
+ port: number | string;
621
+ /** 'i2c' | 'spi' — which DT child shape the overlay emits. */
622
+ busKind: string;
623
+ /** SPI clock Hz (0 = the 1 MHz default). */
624
+ spiHz: number | string;
625
+ /** SPI mode 0-3. */
626
+ spiMode: number | string;
627
+ /** Alert GPIO (-1 = none). */
628
+ alertPin: number | string;
629
+ }
630
+ export interface SensorGetOp {
631
+ operation: "sensor.get";
632
+ /** Catalog token see SensorFetchOp.part. */
633
+ part: string;
634
+ /** Bus name see SensorFetchOp.bus. */
635
+ bus: string;
636
+ /** Bus port — see SensorFetchOp.port. */
637
+ port: number | string;
638
+ /** 'i2c' | 'spi' — see SensorFetchOp.busKind. */
639
+ busKind: string;
640
+ /** SPI clock Hz — see SensorFetchOp.spiHz. */
641
+ spiHz: number | string;
642
+ /** SPI mode — see SensorFetchOp.spiMode. */
643
+ spiMode: number | string;
644
+ /** Alert GPIO — see SensorFetchOp.alertPin. */
645
+ alertPin: number | string;
646
+ /** Channel name a SENSOR_CHAN_* suffix, possibly 'CHAN.'-prefixed
647
+ * (the property-access text of a CHAN.<name> argument). */
648
+ chan: string;
971
649
  }
972
650
  export interface I2sInitOp {
973
651
  operation: "i2s.init";
@@ -1015,28 +693,43 @@ export interface TwaiReceiveOp {
1015
693
  /** Buffer variable name */
1016
694
  buffer: string;
1017
695
  }
1018
- export interface UsbInitOp {
1019
- operation: "usb.init";
1020
- /** Device descriptor name or C expression (framework-specific) */
1021
- descriptor?: string;
696
+ export interface UsbBeginOp {
697
+ operation: "usb.begin";
698
+ /** Port identifier, e.g. "USB0" (instance 0) */
699
+ port: string;
1022
700
  }
1023
- export interface UsbWriteOp {
1024
- operation: "usb.write";
1025
- /** Endpoint index (0 for control/default) */
1026
- endpoint: number | string;
1027
- /** C expression for the data buffer */
1028
- data: string;
1029
- /** Number of bytes */
1030
- length: number | string;
701
+ export interface UsbWaitReadyOp {
702
+ operation: "usb.wait_ready";
703
+ port: string;
704
+ /** Bounded DTR poll in the shim; 0 = wait forever. */
705
+ timeoutMs: number;
706
+ }
707
+ export interface UsbEndOp {
708
+ operation: "usb.end";
709
+ port: string;
710
+ }
711
+ export interface UsbPrintOp {
712
+ operation: "usb.print";
713
+ port: string;
714
+ value: string;
715
+ }
716
+ export interface UsbPrintlnOp {
717
+ operation: "usb.println";
718
+ port: string;
719
+ value: string;
1031
720
  }
1032
721
  export interface UsbReadOp {
1033
722
  operation: "usb.read";
1034
- /** Endpoint index */
1035
- endpoint: number | string;
1036
- /** Buffer variable name */
1037
- buffer: string;
1038
- /** Max bytes to read */
1039
- length: number | string;
723
+ port: string;
724
+ }
725
+ export interface UsbAvailableOp {
726
+ operation: "usb.available";
727
+ port: string;
728
+ }
729
+ export interface UsbConnectedOp {
730
+ operation: "usb.connected";
731
+ /** Port identifier; resolves to a boolean expression (host opened the port) */
732
+ port: string;
1040
733
  }
1041
734
  export interface EthInitOp {
1042
735
  operation: "eth.init";
@@ -1053,39 +746,6 @@ export interface EthStartOp {
1053
746
  export interface EthIsLinkedOp {
1054
747
  operation: "eth.is_linked";
1055
748
  }
1056
- export interface EspnowInitOp {
1057
- operation: "espnow.init";
1058
- }
1059
- export interface EspnowAddPeerOp {
1060
- operation: "espnow.add_peer";
1061
- /** Peer MAC address as a C expression (e.g. an array initializer) */
1062
- mac: string;
1063
- }
1064
- export interface EspnowSendOp {
1065
- operation: "espnow.send";
1066
- /** Peer MAC address C expression, or NULL for broadcast */
1067
- mac: string;
1068
- /** C expression for the payload */
1069
- data: string;
1070
- /** Number of bytes */
1071
- length: number | string;
1072
- }
1073
- export interface EspnowOnReceiveOp {
1074
- operation: "espnow.on_receive";
1075
- /** Resolved C++ callback function name */
1076
- handler: string;
1077
- }
1078
- export interface CryptoAesEncryptOp {
1079
- operation: "crypto.aes_encrypt";
1080
- /** C expression for the key buffer */
1081
- key: string;
1082
- /** C expression for the plaintext buffer */
1083
- input: string;
1084
- /** Output buffer variable name */
1085
- output: string;
1086
- /** Number of bytes (must be a multiple of 16) */
1087
- length: number | string;
1088
- }
1089
749
  export interface CryptoSha256Op {
1090
750
  operation: "crypto.sha256";
1091
751
  /** C expression for the input buffer */
@@ -1095,57 +755,6 @@ export interface CryptoSha256Op {
1095
755
  /** Output buffer variable name (32 bytes) */
1096
756
  output: string;
1097
757
  }
1098
- export interface CryptoHmacOp {
1099
- operation: "crypto.hmac";
1100
- /** Key C expression */
1101
- key: string;
1102
- /** Message C expression */
1103
- message: string;
1104
- /** Message length in bytes */
1105
- length: number | string;
1106
- /** Output buffer variable name */
1107
- output: string;
1108
- }
1109
- export interface PcntInitOp {
1110
- operation: "pcnt.init";
1111
- /** PCNT unit index */
1112
- unit: number | string;
1113
- /** Pulse input GPIO pin */
1114
- pulsePin: number;
1115
- /** Optional control/filter GPIO pin */
1116
- ctrlPin?: number;
1117
- }
1118
- export interface PcntCountOp {
1119
- operation: "pcnt.count";
1120
- /** PCNT unit index */
1121
- unit: number | string;
1122
- }
1123
- export interface PcntClearOp {
1124
- operation: "pcnt.clear";
1125
- /** PCNT unit index */
1126
- unit: number | string;
1127
- }
1128
- export interface McpwmInitOp {
1129
- operation: "mcpwm.init";
1130
- /** MCPWM unit index */
1131
- unit: number | string;
1132
- /** PWM frequency in Hz */
1133
- frequency: number | string;
1134
- }
1135
- export interface McpwmSetDutyOp {
1136
- operation: "mcpwm.set_duty";
1137
- /** MCPWM unit index */
1138
- unit: number | string;
1139
- /** Operator/timer index */
1140
- operator: number | string;
1141
- /** Duty cycle percentage (0.0 - 100.0) */
1142
- duty: number | string;
1143
- }
1144
- export interface McpwmStartOp {
1145
- operation: "mcpwm.start";
1146
- /** MCPWM unit index */
1147
- unit: number | string;
1148
- }
1149
758
  export interface RawCppOp {
1150
759
  operation: "raw";
1151
760
  /** Raw C++ code string (framework-agnostic, use sparingly) */
@@ -1156,7 +765,7 @@ export interface RawCppOp {
1156
765
  * operations. Each node carries a semantic `operation` tag and typed
1157
766
  * arguments. Framework strategies translate these into concrete C++.
1158
767
  */
1159
- export type HALOpIR = GpioWriteOp | GpioReadOp | GpioToggleOp | GpioSetModeOp | PwmWriteOp | PwmGetFrequencyOp | PwmGetResolutionOp | RmtTxInitOp | RmtTxWriteBytesOp | RmtTxWriteSymbolsOp | RmtTxWaitDoneOp | RmtTxDeinitOp | RmtRxInitOp | RmtRxOnReceivedOp | RmtRxStartOp | RmtRxStopOp | RmtRxReadOp | RmtRxDeinitOp | AdcReadOp | AdcGetResolutionOp | AdcSetReferenceOp | AdcGetReferenceOp | AdcReadVoltageOp | DacWriteOp | InterruptAttachOp | InterruptDetachOp | TonePlayOp | ToneStopOp | TimingDelayOp | TimingDelayMicrosecondsOp | TimingMillisOp | TimingMicrosOp | TimingFreeHeapOp | TimingSetIntervalOp | TimingSetTimeoutOp | TimingClearIntervalOp | TimingClearTimeoutOp | PowerDeepSleepOp | PowerLightSleepOp | PowerSetCpuFrequencyOp | PowerDeepSleepPinOp | I2cBeginOp | I2cEndOp | I2cSetClockOp | I2cBeginTransmissionOp | I2cWriteOp | I2cWriteBytesOp | I2cWriteBufferOp | I2cReadBufferOp | I2cEndTransmissionOp | I2cRequestFromOp | I2cAvailableOp | I2cReadOp | I2cRecoverOp | SpiBeginOp | SpiEndOp | SpiTransferOp | SpibeginTransactionOp | SpiEndTransactionOp | SpiSetModeOp | SpiSetBitOrderOp | SpiCsLowOp | SpiCsHighOp | SpiReadBufferOp | UartBeginOp | UartEndOp | UartPrintOp | UartPrintlnOp | UartPrintfOp | UartWriteOp | UartReadOp | UartPeekOp | UartAvailableOp | UartFlushOp | PulseInOp | PulseInLongOp | ShiftOutOp | ShiftInOp | BoardResolveOp | WdtEnableOp | WdtResetOp | WdtDisableOp | SnprintfEmitOp | WifiConnectOp | WifiConnectStartOp | WifiDisconnectOp | WifiStatusOp | WifiIsConnectedOp | WifiLocalIpOp | WifiRssiOp | WifiMacOp | WifiSetHostnameOp | WifiSetStaticIpOp | WifiSetAutoReconnectOp | WifiSetPowerSaveOp | WifiSetTxPowerOp | WifiOnEventOp | WifiApStartOp | WifiApStopOp | WifiApClientCountOp | WifiApIpOp | WifiApSetChannelOp | WifiApSetHiddenOp | WifiApSetMaxClientsOp | WifiScanOp | WifiScanStartOp | WifiScanDoneOp | WifiScanCountOp | WifiScanSsidOp | WifiScanRssiOp | WifiScanEncryptionOp | WifiScanChannelOp | WifiSaveCredentialsOp | WifiConnectSavedOp | WifiClearCredentialsOp | WifiWaitConnectedOp | WifiWaitDisconnectedOp | HttpBeginOp | HttpResetOp | HttpSetHeaderOp | HttpSetTimeoutOp | HttpSetMaxBodyOp | HttpSetBodyOp | HttpSetInsecureOp | HttpSetCaCertOp | HttpSendOp | HttpSendStartOp | HttpDoneOp | WorkerSubmitOp | WorkerDoneOp | HttpStatusOp | HttpOkOp | HttpBodyOp | HttpContentLengthOp | HttpResponseHeaderOp | BleServerBeginOp | BleAdvertiseStartOp | BleAdvertiseStopOp | BleAddServiceOp | BleAddCharOp | BleOnReadOp | BleOnWriteOp | BleOnConnectOp | BleOnDisconnectOp | BleNotifyOp | BleIsConnectedOp | BleClientCountOp | BleSetNameOp | BleUntilConnectedOp | BleUntilConnectedStartOp | BleSetTxPowerOp | BleStatusOp | PreferencesBeginOp | PreferencesEndOp | PreferencesClearOp | PreferencesRemoveOp | PreferencesPutIntOp | PreferencesGetIntOp | PreferencesPutUIntOp | PreferencesGetUIntOp | PreferencesPutBoolOp | PreferencesGetBoolOp | PreferencesPutFloatOp | PreferencesGetFloatOp | PreferencesPutStringOp | PreferencesGetStringOp | RandomIntOp | RandomRangeOp | RandomSeedOp | FsBeginOp | FsReadTextOp | FsWriteTextOp | FsExistsOp | FsRemoveOp | MdnsStartOp | MdnsSetHostnameOp | MdnsAddServiceOp | MdnsAnnounceOp | MdnsStopOp | MqttConnectOp | MqttOnMessageOp | MqttSubscribeOp | MqttPublishOp | MqttConnectedOp | MqttDisconnectOp | OtaFromUrlOp | OtaBeginOp | OtaWriteOp | OtaApplyOp | TempReadOp | HwtimerSetFrequencyOp | HwtimerOnOverflowOp | HwtimerStartOp | HwtimerStopOp | CapacitiveReadOp | I2sInitOp | I2sWriteOp | I2sReadOp | TwaiInitOp | TwaiSendOp | TwaiReceiveOp | UsbInitOp | UsbWriteOp | UsbReadOp | EthInitOp | EthStartOp | EthIsLinkedOp | EspnowInitOp | EspnowAddPeerOp | EspnowSendOp | EspnowOnReceiveOp | CryptoAesEncryptOp | CryptoSha256Op | CryptoHmacOp | PcntInitOp | PcntCountOp | PcntClearOp | McpwmInitOp | McpwmSetDutyOp | McpwmStartOp | RawCppOp | DisplayHALOp;
768
+ export type HALOpIR = GpioWriteOp | GpioReadOp | GpioToggleOp | InterruptDetachOp | TimingSleepOp | TimingNowOp | TimingNowUsOp | TimingBusyWaitUsOp | GpioConfigureOp | GpioReadCfgOp | GpioShiftOutOp | GpioShiftInOp | InterruptAttachFlagsOp | PwmSetPulseOp | PwmSetDutyOp | PwmSetPeriodOp | AdcReadRawOp | AdcReadMvOp | DacWriteValueOp | WdtSetupOp | WdtFeedOp | CounterOnAlarmOp | CounterStartOp | CounterStopOp | I2cRegWriteOp | I2cRegReadOp | I2cRegUpdateOp | I2cDevWriteOp | SpiTransceiveOp | SpiDevWriteOp | SpiRegReadOp | UartPollWriteOp | UartRxArmOp | UartRxAvailableOp | UartRxPeekOp | UartRxReadOp | ThreadStartOp | ThreadJoinOp | I2cReadOp | I2cRecoverOp | BoardResolveOp | WdtDisableOp | SnprintfEmitOp | WifiJoinOp | WifiConnectStartOp | WifiDisconnectOp | WifiIsConnectedOp | WifiLocalIpOp | WifiRssiOp | WifiMacOp | WifiOnEventOp | WifiApStartOp | WifiApStopOp | WifiScanOp | WifiScanStartOp | WifiScanDoneOp | WifiScanCountOp | WifiScanSsidOp | WifiScanRssiOp | WifiScanEncryptionOp | WifiScanChannelOp | HttpBeginOp | HttpSetHeaderOp | HttpSetTimeoutOp | HttpSetMaxBodyOp | HttpSetBodyOp | HttpSetInsecureOp | HttpSetCaCertOp | HttpSendOp | HttpSendStartOp | HttpDoneOp | HttpStatusOp | HttpOkOp | HttpBodyOp | HttpContentLengthOp | HttpResponseHeaderOp | BleServerBeginOp | BleAdvertiseStartOp | BleAdvertiseStopOp | BleAddServiceOp | BleAddCharOp | BleOnReadOp | BleOnWriteOp | BleOnConnectOp | BleOnDisconnectOp | BleNotifyOp | BleIsConnectedOp | BleClientCountOp | PreferencesClearOp | PreferencesRemoveOp | PreferencesPutIntOp | PreferencesGetIntOp | PreferencesPutBoolOp | PreferencesGetBoolOp | PreferencesPutFloatOp | PreferencesGetFloatOp | PreferencesPutStringOp | PreferencesGetStringOp | RandomIntOp | RandomRangeOp | RandomSeedOp | FsReadTextOp | FsWriteTextOp | FsExistsOp | FsRemoveOp | MqttConnectOp | MqttOnMessageOp | MqttSubscribeOp | MqttPublishOp | MqttConnectedOp | MqttDisconnectOp | SensorFetchOp | SensorGetOp | I2sInitOp | I2sWriteOp | I2sReadOp | TwaiInitOp | TwaiSendOp | TwaiReceiveOp | UsbBeginOp | UsbEndOp | UsbPrintOp | UsbPrintlnOp | UsbWaitReadyOp | UsbReadOp | UsbAvailableOp | UsbConnectedOp | EthInitOp | EthStartOp | EthIsLinkedOp | CryptoSha256Op | RawCppOp | DisplayHALOp;
1160
769
  /**
1161
770
  * Helper type: extracts the operation string from a HALOpIR variant.
1162
771
  * Useful for type-safe switch statements in framework strategies.
@@ -1172,4 +781,4 @@ export type HALOperationKind = HALOpIR["operation"];
1172
781
  * {@link DISPLAY_OPERATION_KINDS} in `display-op-ir.ts`. The manifest
1173
782
  * validator imports both and unions them when probing display ops.
1174
783
  */
1175
- export declare const HAL_OPERATION_KINDS: readonly ["gpio.write", "gpio.read", "gpio.toggle", "gpio.set_mode", "pwm.write", "pwm.get_frequency", "pwm.get_resolution", "rmt.tx_init", "rmt.tx_write_bytes", "rmt.tx_write_symbols", "rmt.tx_wait_done", "rmt.tx_deinit", "rmt.rx_init", "rmt.rx_on_received", "rmt.rx_start", "rmt.rx_stop", "rmt.rx_read", "rmt.rx_deinit", "adc.read", "adc.get_resolution", "adc.set_reference", "adc.get_reference", "adc.read_voltage", "dac.write", "interrupt.attach", "interrupt.detach", "tone.play", "tone.stop", "timing.delay", "timing.delay_microseconds", "timing.millis", "timing.micros", "timing.free_heap", "timing.set_interval", "timing.set_timeout", "timing.clear_interval", "timing.clear_timeout", "power.deep_sleep", "power.light_sleep", "power.set_cpu_frequency", "power.deep_sleep_pin", "i2c.begin", "i2c.end", "i2c.set_clock", "i2c.begin_transmission", "i2c.write", "i2c.write_bytes", "i2c.write_buffer", "i2c.read_buffer", "i2c.end_transmission", "i2c.request_from", "i2c.available", "i2c.read", "i2c.recover", "spi.begin", "spi.end", "spi.transfer", "spi.begin_transaction", "spi.end_transaction", "spi.set_mode", "spi.set_bit_order", "spi.cs_low", "spi.cs_high", "spi.read_buffer", "uart.begin", "uart.end", "uart.print", "uart.println", "uart.printf", "uart.write", "uart.read", "uart.peek", "uart.available", "uart.flush", "pulse.in", "pulse.in_long", "shift.out", "shift.in", "board.resolve", "wdt.enable", "wdt.reset", "wdt.disable", "snprintf.emit", "wifi.connect", "wifi.connect_start", "wifi.disconnect", "wifi.status", "wifi.is_connected", "wifi.local_ip", "wifi.rssi", "wifi.mac", "wifi.set_hostname", "wifi.set_static_ip", "wifi.set_auto_reconnect", "wifi.set_power_save", "wifi.set_tx_power", "wifi.on_event", "wifi.ap_start", "wifi.ap_stop", "wifi.ap_client_count", "wifi.ap_ip", "wifi.ap_set_channel", "wifi.ap_set_hidden", "wifi.ap_set_max_clients", "wifi.scan", "wifi.scan_start", "wifi.scan_done", "wifi.scan_count", "wifi.scan_ssid", "wifi.scan_rssi", "wifi.scan_encryption", "wifi.scan_channel", "wifi.save_credentials", "wifi.connect_saved", "wifi.clear_credentials", "wifi.wait_connected", "wifi.wait_disconnected", "http.begin", "http.reset", "http.set_header", "http.set_timeout", "http.set_max_body", "http.set_body", "http.set_insecure", "http.set_ca_cert", "http.send", "http.send_start", "http.done", "http.status", "http.ok", "http.body", "http.content_length", "http.response_header", "worker.submit", "worker.done", "ble.server_begin", "ble.advertise_start", "ble.advertise_stop", "ble.add_service", "ble.add_char", "ble.on_read", "ble.on_write", "ble.on_connect", "ble.on_disconnect", "ble.notify", "ble.is_connected", "ble.client_count", "ble.set_name", "ble.until_connected", "ble.until_connected_start", "ble.set_tx_power", "ble.status", "preferences.begin", "preferences.end", "preferences.clear", "preferences.remove", "preferences.put_int", "preferences.get_int", "preferences.put_uint", "preferences.get_uint", "preferences.put_bool", "preferences.get_bool", "preferences.put_float", "preferences.get_float", "preferences.put_string", "preferences.get_string", "random.int", "random.range", "random.seed", "fs.begin", "fs.read_text", "fs.write_text", "fs.exists", "fs.remove", "mdns.start", "mdns.set_hostname", "mdns.add_service", "mdns.announce", "mdns.stop", "mqtt.connect", "mqtt.on_message", "mqtt.subscribe", "mqtt.publish", "mqtt.connected", "mqtt.disconnect", "ota.from_url", "ota.begin", "ota.write", "ota.apply", "temp.read", "hwtimer.set_frequency", "hwtimer.on_overflow", "hwtimer.start", "hwtimer.stop", "capacitive.read", "i2s.init", "i2s.write", "i2s.read", "twai.init", "twai.send", "twai.receive", "usb.init", "usb.write", "usb.read", "eth.init", "eth.start", "eth.is_linked", "espnow.init", "espnow.add_peer", "espnow.send", "espnow.on_receive", "crypto.aes_encrypt", "crypto.sha256", "crypto.hmac", "pcnt.init", "pcnt.count", "pcnt.clear", "mcpwm.init", "mcpwm.set_duty", "mcpwm.start", "raw"];
784
+ export declare const HAL_OPERATION_KINDS: readonly ["gpio.write", "gpio.read", "gpio.toggle", "interrupt.attach_flags", "interrupt.detach", "timing.sleep", "timing.now", "timing.now_us", "timing.busy_wait_us", "gpio.configure", "gpio.read_cfg", "gpio.shift_out", "gpio.shift_in", "pwm.set_pulse", "pwm.set_duty", "pwm.set_period", "adc.read_raw", "adc.read_mv", "dac.write_value", "wdt.setup", "wdt.feed", "counter.on_alarm", "counter.start", "counter.stop", "i2c.reg_write", "i2c.reg_read", "i2c.reg_update", "i2c.dev_write", "spi.transceive", "spi.dev_write", "spi.reg_read", "uart.poll_write", "uart.rx_arm", "uart.rx_available", "uart.rx_peek", "uart.rx_read", "thread.start", "thread.join", "board.resolve", "wdt.disable", "snprintf.emit", "wifi.join", "wifi.connect_start", "wifi.disconnect", "wifi.is_connected", "wifi.local_ip", "wifi.rssi", "wifi.mac", "wifi.on_event", "wifi.ap_start", "wifi.ap_stop", "wifi.scan", "wifi.scan_start", "wifi.scan_done", "wifi.scan_count", "wifi.scan_ssid", "wifi.scan_rssi", "wifi.scan_encryption", "wifi.scan_channel", "http.begin", "http.set_header", "http.set_timeout", "http.set_max_body", "http.set_body", "http.set_insecure", "http.set_ca_cert", "http.send", "http.send_start", "http.done", "http.status", "http.ok", "http.body", "http.content_length", "http.response_header", "ble.server_begin", "ble.advertise_start", "ble.advertise_stop", "ble.add_service", "ble.add_char", "ble.on_read", "ble.on_write", "ble.on_connect", "ble.on_disconnect", "ble.notify", "ble.is_connected", "ble.client_count", "preferences.clear", "preferences.remove", "preferences.put_int", "preferences.get_int", "preferences.put_bool", "preferences.get_bool", "preferences.put_float", "preferences.get_float", "preferences.put_string", "preferences.get_string", "random.int", "random.range", "random.seed", "fs.read_text", "fs.write_text", "fs.exists", "fs.remove", "mqtt.connect", "mqtt.on_message", "mqtt.subscribe", "mqtt.publish", "mqtt.connected", "mqtt.disconnect", "sensor.fetch", "sensor.get", "i2s.init", "i2s.write", "i2s.read", "twai.init", "twai.send", "twai.receive", "usb.begin", "usb.wait_ready", "usb.end", "usb.print", "usb.println", "usb.read", "usb.available", "usb.connected", "eth.init", "eth.start", "eth.is_linked", "raw"];