@typecad/cuttlefish 0.1.0-alpha.1

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 (377) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +79 -0
  3. package/dist/api/board-types.d.ts +1 -0
  4. package/dist/api/board-types.js +4 -0
  5. package/dist/api/capabilities.d.ts +12 -0
  6. package/dist/api/capabilities.js +1 -0
  7. package/dist/api/config.d.ts +120 -0
  8. package/dist/api/config.js +7 -0
  9. package/dist/api/index.d.ts +5 -0
  10. package/dist/api/index.js +2 -0
  11. package/dist/api/schema/builder.d.ts +14 -0
  12. package/dist/api/schema/builder.js +15 -0
  13. package/dist/api/schema/index.d.ts +2 -0
  14. package/dist/api/schema/index.js +1 -0
  15. package/dist/api/schema/types.d.ts +257 -0
  16. package/dist/api/schema/types.js +4 -0
  17. package/dist/api/shared/async-runtime-static.d.ts +8 -0
  18. package/dist/api/shared/async-runtime-static.js +201 -0
  19. package/dist/api/shared/async-types.d.ts +42 -0
  20. package/dist/api/shared/async-types.js +8 -0
  21. package/dist/api/shared/board-resolver.d.ts +12 -0
  22. package/dist/api/shared/board-resolver.js +7 -0
  23. package/dist/api/shared/cpp-type-ir.d.ts +229 -0
  24. package/dist/api/shared/cpp-type-ir.js +672 -0
  25. package/dist/api/shared/display-adapter.d.ts +12 -0
  26. package/dist/api/shared/display-adapter.js +145 -0
  27. package/dist/api/shared/display-adapters/eink-mono.d.ts +2 -0
  28. package/dist/api/shared/display-adapters/eink-mono.js +53 -0
  29. package/dist/api/shared/display-adapters/sdl.d.ts +2 -0
  30. package/dist/api/shared/display-adapters/sdl.js +452 -0
  31. package/dist/api/shared/display-adapters/ssd1309.d.ts +2 -0
  32. package/dist/api/shared/display-adapters/ssd1309.js +136 -0
  33. package/dist/api/shared/display-adapters/st7796.d.ts +2 -0
  34. package/dist/api/shared/display-adapters/st7796.js +132 -0
  35. package/dist/api/shared/display-capabilities.d.ts +45 -0
  36. package/dist/api/shared/display-capabilities.js +54 -0
  37. package/dist/api/shared/display-op-ir.d.ts +62 -0
  38. package/dist/api/shared/display-op-ir.js +19 -0
  39. package/dist/api/shared/display-profile.d.ts +265 -0
  40. package/dist/api/shared/display-profile.js +338 -0
  41. package/dist/api/shared/graphics-strategy.d.ts +29 -0
  42. package/dist/api/shared/graphics-strategy.js +11 -0
  43. package/dist/api/shared/hal-op-ir.d.ts +393 -0
  44. package/dist/api/shared/hal-op-ir.js +18 -0
  45. package/dist/api/shared/index.d.ts +26 -0
  46. package/dist/api/shared/index.js +21 -0
  47. package/dist/api/shared/ir-core.d.ts +363 -0
  48. package/dist/api/shared/ir-core.js +8 -0
  49. package/dist/api/shared/ir-declarations.d.ts +201 -0
  50. package/dist/api/shared/ir-declarations.js +26 -0
  51. package/dist/api/shared/ir.d.ts +85 -0
  52. package/dist/api/shared/ir.js +13 -0
  53. package/dist/api/shared/platform-strategy.d.ts +402 -0
  54. package/dist/api/shared/platform-strategy.js +14 -0
  55. package/dist/api/shared/polyfill-helper-registry.d.ts +11 -0
  56. package/dist/api/shared/polyfill-helper-registry.js +86 -0
  57. package/dist/api/shared/polyfill-types.d.ts +33 -0
  58. package/dist/api/shared/polyfill-types.js +76 -0
  59. package/dist/api/shared/promise-runtime.d.ts +10 -0
  60. package/dist/api/shared/promise-runtime.js +244 -0
  61. package/dist/api/shared/snprintf-types.d.ts +29 -0
  62. package/dist/api/shared/snprintf-types.js +8 -0
  63. package/dist/api/shared/string-method-registry.d.ts +53 -0
  64. package/dist/api/shared/string-method-registry.js +168 -0
  65. package/dist/api/shared/toolchain-types.d.ts +63 -0
  66. package/dist/api/shared/toolchain-types.js +71 -0
  67. package/dist/api/shared/types.d.ts +50 -0
  68. package/dist/api/shared/types.js +6 -0
  69. package/dist/ast/parse.d.ts +2 -0
  70. package/dist/ast/parse.js +4 -0
  71. package/dist/cache.d.ts +26 -0
  72. package/dist/cache.js +95 -0
  73. package/dist/cli-utils.d.ts +37 -0
  74. package/dist/cli-utils.js +250 -0
  75. package/dist/cli.d.ts +2 -0
  76. package/dist/cli.js +635 -0
  77. package/dist/config-loader.d.ts +78 -0
  78. package/dist/config-loader.js +508 -0
  79. package/dist/config-schema.d.ts +233 -0
  80. package/dist/config-schema.js +83 -0
  81. package/dist/create/board-checklist.d.ts +2 -0
  82. package/dist/create/board-checklist.js +52 -0
  83. package/dist/create/board-codegen.d.ts +9 -0
  84. package/dist/create/board-codegen.js +238 -0
  85. package/dist/create/board-generators.d.ts +12 -0
  86. package/dist/create/board-generators.js +652 -0
  87. package/dist/create/board-spec.d.ts +640 -0
  88. package/dist/create/board-spec.js +215 -0
  89. package/dist/create/eslint-rules-template.d.ts +2 -0
  90. package/dist/create/eslint-rules-template.js +672 -0
  91. package/dist/create/index.d.ts +11 -0
  92. package/dist/create/index.js +8 -0
  93. package/dist/create/init-scaffold.d.ts +27 -0
  94. package/dist/create/init-scaffold.js +150 -0
  95. package/dist/create/init-templates.d.ts +24 -0
  96. package/dist/create/init-templates.js +379 -0
  97. package/dist/create/init-wizard.d.ts +8 -0
  98. package/dist/create/init-wizard.js +168 -0
  99. package/dist/debug/breakpoint-loader.d.ts +24 -0
  100. package/dist/debug/breakpoint-loader.js +137 -0
  101. package/dist/debug/index.d.ts +3 -0
  102. package/dist/debug/index.js +7 -0
  103. package/dist/debug/preprocessor.d.ts +9 -0
  104. package/dist/debug/preprocessor.js +214 -0
  105. package/dist/debug/types.d.ts +32 -0
  106. package/dist/debug/types.js +6 -0
  107. package/dist/diagnostics/diagnostics-report.d.ts +51 -0
  108. package/dist/diagnostics/diagnostics-report.js +333 -0
  109. package/dist/diagnostics/json-schema.d.ts +138 -0
  110. package/dist/diagnostics/json-schema.js +27 -0
  111. package/dist/diagnostics/md-writer.d.ts +10 -0
  112. package/dist/diagnostics/md-writer.js +336 -0
  113. package/dist/diagnostics/mermaid-builder.d.ts +65 -0
  114. package/dist/diagnostics/mermaid-builder.js +681 -0
  115. package/dist/emit/cpp-emitter.d.ts +6 -0
  116. package/dist/emit/cpp-emitter.js +48 -0
  117. package/dist/emit/emitters/class-emitter.d.ts +2 -0
  118. package/dist/emit/emitters/class-emitter.js +523 -0
  119. package/dist/emit/emitters/emitter-context.d.ts +174 -0
  120. package/dist/emit/emitters/emitter-context.js +1 -0
  121. package/dist/emit/emitters/entrypoint-synthesizer.d.ts +2 -0
  122. package/dist/emit/emitters/entrypoint-synthesizer.js +175 -0
  123. package/dist/emit/emitters/function-emitter-impl.d.ts +19 -0
  124. package/dist/emit/emitters/function-emitter-impl.js +428 -0
  125. package/dist/emit/emitters/line-appender.d.ts +15 -0
  126. package/dist/emit/emitters/line-appender.js +344 -0
  127. package/dist/emit/emitters/namespace-emitter.d.ts +2 -0
  128. package/dist/emit/emitters/namespace-emitter.js +324 -0
  129. package/dist/emit/emitters/output-finalizer.d.ts +4 -0
  130. package/dist/emit/emitters/output-finalizer.js +267 -0
  131. package/dist/emit/emitters/setup.d.ts +3 -0
  132. package/dist/emit/emitters/setup.js +851 -0
  133. package/dist/emit/emitters/top-level-prep.d.ts +2 -0
  134. package/dist/emit/emitters/top-level-prep.js +706 -0
  135. package/dist/emit/emitters/type-decl-emitter.d.ts +2 -0
  136. package/dist/emit/emitters/type-decl-emitter.js +251 -0
  137. package/dist/emit/emitters/ui-emitter.d.ts +21 -0
  138. package/dist/emit/emitters/ui-emitter.js +564 -0
  139. package/dist/emit/enum-emitter.d.ts +1 -0
  140. package/dist/emit/enum-emitter.js +1 -0
  141. package/dist/emit/expression-renderer.d.ts +283 -0
  142. package/dist/emit/expression-renderer.js +1477 -0
  143. package/dist/emit/native-helpers-emitter.d.ts +11 -0
  144. package/dist/emit/native-helpers-emitter.js +34 -0
  145. package/dist/emit/route-hal-op.d.ts +5 -0
  146. package/dist/emit/route-hal-op.js +13 -0
  147. package/dist/emit/snprintf-helpers.d.ts +17 -0
  148. package/dist/emit/snprintf-helpers.js +462 -0
  149. package/dist/emit/statement-renderer.d.ts +189 -0
  150. package/dist/emit/statement-renderer.js +948 -0
  151. package/dist/emit/utils/async-state-machine.d.ts +42 -0
  152. package/dist/emit/utils/async-state-machine.js +343 -0
  153. package/dist/emit/utils/comment-helpers.d.ts +20 -0
  154. package/dist/emit/utils/comment-helpers.js +31 -0
  155. package/dist/emit/utils/cpp-helpers.d.ts +47 -0
  156. package/dist/emit/utils/cpp-helpers.js +85 -0
  157. package/dist/emit/utils/include-resolver.d.ts +58 -0
  158. package/dist/emit/utils/include-resolver.js +155 -0
  159. package/dist/emit/utils/index.d.ts +8 -0
  160. package/dist/emit/utils/index.js +12 -0
  161. package/dist/emit/utils/type-inference.d.ts +159 -0
  162. package/dist/emit/utils/type-inference.js +559 -0
  163. package/dist/eslint-check.d.ts +10 -0
  164. package/dist/eslint-check.js +102 -0
  165. package/dist/framework-package.d.ts +10 -0
  166. package/dist/framework-package.js +58 -0
  167. package/dist/framework-registry.d.ts +39 -0
  168. package/dist/framework-registry.js +30 -0
  169. package/dist/incremental-cache.d.ts +116 -0
  170. package/dist/incremental-cache.js +335 -0
  171. package/dist/ir/adc-range-validation.d.ts +11 -0
  172. package/dist/ir/adc-range-validation.js +250 -0
  173. package/dist/ir/ast-node-utils.d.ts +8 -0
  174. package/dist/ir/ast-node-utils.js +32 -0
  175. package/dist/ir/board-pin-utils.d.ts +13 -0
  176. package/dist/ir/board-pin-utils.js +65 -0
  177. package/dist/ir/board-resolver.d.ts +36 -0
  178. package/dist/ir/board-resolver.js +437 -0
  179. package/dist/ir/build-ir-state.d.ts +167 -0
  180. package/dist/ir/build-ir-state.js +306 -0
  181. package/dist/ir/build-ir.d.ts +2 -0
  182. package/dist/ir/build-ir.js +808 -0
  183. package/dist/ir/call-graph.d.ts +35 -0
  184. package/dist/ir/call-graph.js +194 -0
  185. package/dist/ir/compile-time-only.d.ts +2 -0
  186. package/dist/ir/compile-time-only.js +16 -0
  187. package/dist/ir/declaration-builders.d.ts +9 -0
  188. package/dist/ir/declaration-builders.js +608 -0
  189. package/dist/ir/entry-points.d.ts +30 -0
  190. package/dist/ir/entry-points.js +191 -0
  191. package/dist/ir/expression-to-ir.d.ts +5 -0
  192. package/dist/ir/expression-to-ir.js +2249 -0
  193. package/dist/ir/extract-property-chain.d.ts +10 -0
  194. package/dist/ir/extract-property-chain.js +30 -0
  195. package/dist/ir/feature-prescan.d.ts +3 -0
  196. package/dist/ir/feature-prescan.js +43 -0
  197. package/dist/ir/feature-registry.d.ts +30 -0
  198. package/dist/ir/feature-registry.js +816 -0
  199. package/dist/ir/filter.d.ts +7 -0
  200. package/dist/ir/filter.js +85 -0
  201. package/dist/ir/function-builder.d.ts +19 -0
  202. package/dist/ir/function-builder.js +670 -0
  203. package/dist/ir/hal/hal-emitter.d.ts +62 -0
  204. package/dist/ir/hal/hal-emitter.js +735 -0
  205. package/dist/ir/hal/hal-parser.d.ts +61 -0
  206. package/dist/ir/hal/hal-parser.js +473 -0
  207. package/dist/ir/hal/hal-plugins.d.ts +34 -0
  208. package/dist/ir/hal/hal-plugins.js +706 -0
  209. package/dist/ir/hal-resolver.d.ts +5 -0
  210. package/dist/ir/hal-resolver.js +5 -0
  211. package/dist/ir/heap-analysis.d.ts +8 -0
  212. package/dist/ir/heap-analysis.js +350 -0
  213. package/dist/ir/heap-array-validation.d.ts +24 -0
  214. package/dist/ir/heap-array-validation.js +29 -0
  215. package/dist/ir/identifier-collector.d.ts +18 -0
  216. package/dist/ir/identifier-collector.js +439 -0
  217. package/dist/ir/interrupt-analysis.d.ts +39 -0
  218. package/dist/ir/interrupt-analysis.js +467 -0
  219. package/dist/ir/memory-budget-validation.d.ts +10 -0
  220. package/dist/ir/memory-budget-validation.js +86 -0
  221. package/dist/ir/namespace-builder.d.ts +7 -0
  222. package/dist/ir/namespace-builder.js +152 -0
  223. package/dist/ir/ownership-analysis.d.ts +9 -0
  224. package/dist/ir/ownership-analysis.js +1207 -0
  225. package/dist/ir/peripheral-ownership.d.ts +3 -0
  226. package/dist/ir/peripheral-ownership.js +152 -0
  227. package/dist/ir/peripheral-symbols.d.ts +7 -0
  228. package/dist/ir/peripheral-symbols.js +57 -0
  229. package/dist/ir/peripheral-usage.d.ts +54 -0
  230. package/dist/ir/peripheral-usage.js +691 -0
  231. package/dist/ir/peripheral-validation.d.ts +8 -0
  232. package/dist/ir/peripheral-validation.js +77 -0
  233. package/dist/ir/pin-alias-conflict.d.ts +4 -0
  234. package/dist/ir/pin-alias-conflict.js +34 -0
  235. package/dist/ir/pin-capability-validation.d.ts +6 -0
  236. package/dist/ir/pin-capability-validation.js +413 -0
  237. package/dist/ir/pin-mode-validation.d.ts +10 -0
  238. package/dist/ir/pin-mode-validation.js +301 -0
  239. package/dist/ir/pin-safety.d.ts +11 -0
  240. package/dist/ir/pin-safety.js +58 -0
  241. package/dist/ir/program-analysis.d.ts +44 -0
  242. package/dist/ir/program-analysis.js +589 -0
  243. package/dist/ir/pulldown-validation.d.ts +7 -0
  244. package/dist/ir/pulldown-validation.js +49 -0
  245. package/dist/ir/pwm-timer-sharing.d.ts +4 -0
  246. package/dist/ir/pwm-timer-sharing.js +93 -0
  247. package/dist/ir/reachability.d.ts +68 -0
  248. package/dist/ir/reachability.js +224 -0
  249. package/dist/ir/register-decorators.d.ts +6 -0
  250. package/dist/ir/register-decorators.js +49 -0
  251. package/dist/ir/render-expr.d.ts +4 -0
  252. package/dist/ir/render-expr.js +127 -0
  253. package/dist/ir/resource-analysis.d.ts +19 -0
  254. package/dist/ir/resource-analysis.js +153 -0
  255. package/dist/ir/statement-to-ir.d.ts +23 -0
  256. package/dist/ir/statement-to-ir.js +349 -0
  257. package/dist/ir/symbol-table.d.ts +68 -0
  258. package/dist/ir/symbol-table.js +179 -0
  259. package/dist/ir/symbol-types.d.ts +56 -0
  260. package/dist/ir/symbol-types.js +107 -0
  261. package/dist/ir/timer0-pwm-timing-conflict.d.ts +4 -0
  262. package/dist/ir/timer0-pwm-timing-conflict.js +71 -0
  263. package/dist/ir/timing-validation.d.ts +7 -0
  264. package/dist/ir/timing-validation.js +95 -0
  265. package/dist/ir/transformers/array-methods.d.ts +8 -0
  266. package/dist/ir/transformers/array-methods.js +493 -0
  267. package/dist/ir/transformers/call-statement.d.ts +5 -0
  268. package/dist/ir/transformers/call-statement.js +758 -0
  269. package/dist/ir/transformers/callback-context-registry.d.ts +20 -0
  270. package/dist/ir/transformers/callback-context-registry.js +55 -0
  271. package/dist/ir/transformers/canvas-lowering.d.ts +42 -0
  272. package/dist/ir/transformers/canvas-lowering.js +249 -0
  273. package/dist/ir/transformers/control-flow.d.ts +8 -0
  274. package/dist/ir/transformers/control-flow.js +508 -0
  275. package/dist/ir/transformers/expressions.d.ts +7 -0
  276. package/dist/ir/transformers/expressions.js +406 -0
  277. package/dist/ir/transformers/hal-call-resolver.d.ts +29 -0
  278. package/dist/ir/transformers/hal-call-resolver.js +274 -0
  279. package/dist/ir/transformers/hal-emit-helpers.d.ts +14 -0
  280. package/dist/ir/transformers/hal-emit-helpers.js +63 -0
  281. package/dist/ir/transformers/namespace-methods.d.ts +20 -0
  282. package/dist/ir/transformers/namespace-methods.js +110 -0
  283. package/dist/ir/transformers/register-assignment.d.ts +5 -0
  284. package/dist/ir/transformers/register-assignment.js +56 -0
  285. package/dist/ir/transformers/ui-call-resolver.d.ts +149 -0
  286. package/dist/ir/transformers/ui-call-resolver.js +1136 -0
  287. package/dist/ir/transformers/ui-callback-lowering.d.ts +62 -0
  288. package/dist/ir/transformers/ui-callback-lowering.js +623 -0
  289. package/dist/ir/transformers/ui-mount.d.ts +20 -0
  290. package/dist/ir/transformers/ui-mount.js +35 -0
  291. package/dist/ir/transformers/ui-reactive.d.ts +68 -0
  292. package/dist/ir/transformers/ui-reactive.js +129 -0
  293. package/dist/ir/transformers/variables.d.ts +14 -0
  294. package/dist/ir/transformers/variables.js +1045 -0
  295. package/dist/ir/try-catch-validation.d.ts +26 -0
  296. package/dist/ir/try-catch-validation.js +128 -0
  297. package/dist/ir/type-resolution.d.ts +31 -0
  298. package/dist/ir/type-resolution.js +977 -0
  299. package/dist/ir/ui-element-auto-wire.d.ts +50 -0
  300. package/dist/ir/ui-element-auto-wire.js +218 -0
  301. package/dist/ir/unit-suspicion-validation.d.ts +12 -0
  302. package/dist/ir/unit-suspicion-validation.js +296 -0
  303. package/dist/ir/utils/walk-ir.d.ts +6 -0
  304. package/dist/ir/utils/walk-ir.js +162 -0
  305. package/dist/ir/validation-orchestrator.d.ts +4 -0
  306. package/dist/ir/validation-orchestrator.js +45 -0
  307. package/dist/libdef/base-class-resolver.d.ts +23 -0
  308. package/dist/libdef/base-class-resolver.js +50 -0
  309. package/dist/libdef/cpp-to-decl.d.ts +34 -0
  310. package/dist/libdef/cpp-to-decl.js +584 -0
  311. package/dist/libdef/header-parser.d.ts +53 -0
  312. package/dist/libdef/header-parser.js +269 -0
  313. package/dist/libdef/registry.d.ts +10 -0
  314. package/dist/libdef/registry.js +142 -0
  315. package/dist/mapping/peripheral-names.d.ts +23 -0
  316. package/dist/mapping/peripheral-names.js +63 -0
  317. package/dist/mapping/source-map.d.ts +46 -0
  318. package/dist/mapping/source-map.js +207 -0
  319. package/dist/orchestrator/dts-generator.d.ts +17 -0
  320. package/dist/orchestrator/dts-generator.js +83 -0
  321. package/dist/orchestrator/graph-builder.d.ts +18 -0
  322. package/dist/orchestrator/graph-builder.js +218 -0
  323. package/dist/orchestrator/semantic-facts-verifier.d.ts +38 -0
  324. package/dist/orchestrator/semantic-facts-verifier.js +121 -0
  325. package/dist/orchestrator/semantic-facts.d.ts +141 -0
  326. package/dist/orchestrator/semantic-facts.js +652 -0
  327. package/dist/orchestrator/type-checker.d.ts +39 -0
  328. package/dist/orchestrator/type-checker.js +760 -0
  329. package/dist/platform/async-runtime.d.ts +8 -0
  330. package/dist/platform/async-runtime.js +26 -0
  331. package/dist/platform/generic-strategy.d.ts +101 -0
  332. package/dist/platform/generic-strategy.js +289 -0
  333. package/dist/platform/index.d.ts +4 -0
  334. package/dist/platform/index.js +9 -0
  335. package/dist/platform/registry.d.ts +21 -0
  336. package/dist/platform/registry.js +42 -0
  337. package/dist/platform/toolchain.d.ts +4 -0
  338. package/dist/platform/toolchain.js +43 -0
  339. package/dist/preview/client.d.ts +1 -0
  340. package/dist/preview/client.js +137 -0
  341. package/dist/preview/server.d.ts +5 -0
  342. package/dist/preview/server.js +199 -0
  343. package/dist/profiler/index.d.ts +28 -0
  344. package/dist/profiler/index.js +28 -0
  345. package/dist/profiler/profiler.d.ts +95 -0
  346. package/dist/profiler/profiler.js +338 -0
  347. package/dist/profiler/types.d.ts +87 -0
  348. package/dist/profiler/types.js +12 -0
  349. package/dist/stores/display-profile-store.d.ts +16 -0
  350. package/dist/stores/display-profile-store.js +48 -0
  351. package/dist/stores/theme-store.d.ts +13 -0
  352. package/dist/stores/theme-store.js +30 -0
  353. package/dist/testing.d.ts +45 -0
  354. package/dist/testing.js +47 -0
  355. package/dist/transpile/resolution.d.ts +29 -0
  356. package/dist/transpile/resolution.js +282 -0
  357. package/dist/transpile.d.ts +3 -0
  358. package/dist/transpile.js +722 -0
  359. package/dist/types.d.ts +217 -0
  360. package/dist/types.js +1 -0
  361. package/dist/ui/ui-bridge.d.ts +4 -0
  362. package/dist/ui/ui-bridge.js +34 -0
  363. package/dist/ui-hook.d.ts +84 -0
  364. package/dist/ui-hook.js +45 -0
  365. package/dist/utils/cli.d.ts +3 -0
  366. package/dist/utils/cli.js +463 -0
  367. package/dist/utils/fs.d.ts +4 -0
  368. package/dist/utils/fs.js +23 -0
  369. package/dist/utils/logger.d.ts +2 -0
  370. package/dist/utils/logger.js +8 -0
  371. package/dist/utils/strings.d.ts +35 -0
  372. package/dist/utils/strings.js +142 -0
  373. package/dist/utils/ui.d.ts +66 -0
  374. package/dist/utils/ui.js +149 -0
  375. package/dist/watch.d.ts +35 -0
  376. package/dist/watch.js +111 -0
  377. package/package.json +127 -0
@@ -0,0 +1,393 @@
1
+ import type { DisplayHALOp } from "./display-op-ir.js";
2
+ export interface GpioWriteOp {
3
+ operation: "gpio.write";
4
+ /** MCU port name (e.g. "PB5") — canonical identity from datasheet */
5
+ port?: string;
6
+ /** Legacy framework pin number */
7
+ pin: number;
8
+ /** 0 = LOW, 1 = HIGH, or a runtime expression string (e.g. "state", "!state") */
9
+ value: 0 | 1 | string;
10
+ }
11
+ export interface GpioReadOp {
12
+ operation: "gpio.read";
13
+ port?: string;
14
+ pin: number;
15
+ }
16
+ export interface GpioToggleOp {
17
+ operation: "gpio.toggle";
18
+ port?: string;
19
+ pin: number;
20
+ }
21
+ export interface GpioSetModeOp {
22
+ operation: "gpio.set_mode";
23
+ port?: string;
24
+ pin: number;
25
+ /** "output" | "input" | "input_pullup" | "input_pulldown" */
26
+ mode: string;
27
+ }
28
+ export interface PwmWriteOp {
29
+ operation: "pwm.write";
30
+ port?: string;
31
+ pin: number;
32
+ /** Duty cycle — numeric value or runtime expression string */
33
+ duty: number | string;
34
+ }
35
+ export interface PwmGetFrequencyOp {
36
+ operation: "pwm.get_frequency";
37
+ port?: string;
38
+ pin: number;
39
+ }
40
+ export interface PwmGetResolutionOp {
41
+ operation: "pwm.get_resolution";
42
+ port?: string;
43
+ pin: number;
44
+ }
45
+ export interface AdcReadOp {
46
+ operation: "adc.read";
47
+ port?: string;
48
+ pin: number;
49
+ }
50
+ export interface AdcGetResolutionOp {
51
+ operation: "adc.get_resolution";
52
+ }
53
+ export interface AdcSetReferenceOp {
54
+ operation: "adc.set_reference";
55
+ /** Reference constant name or numeric value */
56
+ reference: string | number;
57
+ }
58
+ export interface AdcGetReferenceOp {
59
+ operation: "adc.get_reference";
60
+ }
61
+ export interface AdcReadVoltageOp {
62
+ operation: "adc.read_voltage";
63
+ port?: string;
64
+ pin: number;
65
+ vRef?: number;
66
+ maxValue?: number;
67
+ }
68
+ export interface DacWriteOp {
69
+ operation: "dac.write";
70
+ port?: string;
71
+ pin: number;
72
+ /** Output value — numeric or runtime expression string */
73
+ value: number | string;
74
+ }
75
+ export interface InterruptAttachOp {
76
+ operation: "interrupt.attach";
77
+ port?: string;
78
+ pin: number;
79
+ /** Resolved C++ callback function name */
80
+ handler: string;
81
+ /** "rising" | "falling" | "change" | "high" | "low" */
82
+ mode: string;
83
+ }
84
+ export interface InterruptDetachOp {
85
+ operation: "interrupt.detach";
86
+ port?: string;
87
+ pin: number;
88
+ }
89
+ export interface TonePlayOp {
90
+ operation: "tone.play";
91
+ port?: string;
92
+ pin: number;
93
+ /** Frequency in Hz — numeric or runtime expression string */
94
+ frequency: number | string;
95
+ /** Optional duration in milliseconds — numeric or runtime expression string */
96
+ duration?: number | string;
97
+ }
98
+ export interface ToneStopOp {
99
+ operation: "tone.stop";
100
+ port?: string;
101
+ pin: number;
102
+ }
103
+ export interface TimingDelayOp {
104
+ operation: "timing.delay";
105
+ ms: number;
106
+ }
107
+ export interface TimingDelayMicrosecondsOp {
108
+ operation: "timing.delay_microseconds";
109
+ us: number;
110
+ }
111
+ export interface TimingMillisOp {
112
+ operation: "timing.millis";
113
+ }
114
+ export interface TimingMicrosOp {
115
+ operation: "timing.micros";
116
+ }
117
+ export interface TimingFreeHeapOp {
118
+ operation: "timing.free_heap";
119
+ }
120
+ export interface TimingSetIntervalOp {
121
+ operation: "timing.set_interval";
122
+ /** Resolved C++ callback function name */
123
+ handler: string;
124
+ timeout: number;
125
+ }
126
+ export interface TimingSetTimeoutOp {
127
+ operation: "timing.set_timeout";
128
+ /** Resolved C++ callback function name */
129
+ handler: string;
130
+ timeout: number;
131
+ }
132
+ export interface TimingClearIntervalOp {
133
+ operation: "timing.clear_interval";
134
+ id: number;
135
+ }
136
+ export interface TimingClearTimeoutOp {
137
+ operation: "timing.clear_timeout";
138
+ id: number;
139
+ }
140
+ export interface PowerDeepSleepOp {
141
+ operation: "power.deep_sleep";
142
+ ms: number;
143
+ }
144
+ export interface PowerLightSleepOp {
145
+ operation: "power.light_sleep";
146
+ }
147
+ export interface PowerSetCpuFrequencyOp {
148
+ operation: "power.set_cpu_frequency";
149
+ mhz: number;
150
+ }
151
+ export interface I2cBeginOp {
152
+ operation: "i2c.begin";
153
+ bus: string;
154
+ /** Slave address (only for slave mode) — numeric or runtime expression string */
155
+ address?: number | string;
156
+ }
157
+ export interface I2cEndOp {
158
+ operation: "i2c.end";
159
+ bus: string;
160
+ }
161
+ export interface I2cSetClockOp {
162
+ operation: "i2c.set_clock";
163
+ bus: string;
164
+ /** Clock speed in Hz — numeric or runtime expression string */
165
+ hz: number | string;
166
+ }
167
+ export interface I2cBeginTransmissionOp {
168
+ operation: "i2c.begin_transmission";
169
+ bus: string;
170
+ /** Slave address — numeric or runtime expression string */
171
+ address: number | string;
172
+ }
173
+ export interface I2cWriteOp {
174
+ operation: "i2c.write";
175
+ bus: string;
176
+ /** Resolved C++ expression for the data to write */
177
+ data: string;
178
+ }
179
+ export interface I2cWriteBytesOp {
180
+ operation: "i2c.write_bytes";
181
+ bus: string;
182
+ /** Individual byte values — numeric literals or runtime expressions */
183
+ bytes: (number | string)[];
184
+ }
185
+ export interface I2cWriteBufferOp {
186
+ operation: "i2c.write_buffer";
187
+ bus: string;
188
+ /** C array / buffer variable name */
189
+ data: string;
190
+ }
191
+ export interface I2cReadBufferOp {
192
+ operation: "i2c.read_buffer";
193
+ bus: string;
194
+ count: number | string;
195
+ /** Buffer variable name, or "__DISCARD__" to read-and-drop */
196
+ buffer: string;
197
+ }
198
+ export interface I2cEndTransmissionOp {
199
+ operation: "i2c.end_transmission";
200
+ bus: string;
201
+ stop: boolean;
202
+ }
203
+ export interface I2cRequestFromOp {
204
+ operation: "i2c.request_from";
205
+ bus: string;
206
+ /** Slave address — numeric or runtime expression string */
207
+ address: number | string;
208
+ /** Number of bytes — numeric or runtime expression string */
209
+ quantity: number | string;
210
+ stop: boolean;
211
+ }
212
+ export interface I2cAvailableOp {
213
+ operation: "i2c.available";
214
+ bus: string;
215
+ }
216
+ export interface I2cReadOp {
217
+ operation: "i2c.read";
218
+ bus: string;
219
+ }
220
+ export interface I2cRecoverOp {
221
+ operation: "i2c.recover";
222
+ bus: string;
223
+ }
224
+ export interface SpiBeginOp {
225
+ operation: "spi.begin";
226
+ bus: string;
227
+ }
228
+ export interface SpiEndOp {
229
+ operation: "spi.end";
230
+ bus: string;
231
+ }
232
+ export interface SpiTransferOp {
233
+ operation: "spi.transfer";
234
+ bus: string;
235
+ /** Resolved C++ expression for data to transfer */
236
+ data: string;
237
+ }
238
+ export interface SpibeginTransactionOp {
239
+ operation: "spi.begin_transaction";
240
+ bus: string;
241
+ /** Resolved C++ SPISettings expression */
242
+ settings: string;
243
+ }
244
+ export interface SpiEndTransactionOp {
245
+ operation: "spi.end_transaction";
246
+ bus: string;
247
+ }
248
+ export interface SpiSetModeOp {
249
+ operation: "spi.set_mode";
250
+ bus: string;
251
+ /** SPI mode (0-3) — numeric or runtime expression string */
252
+ mode: number | string;
253
+ }
254
+ export interface SpiSetBitOrderOp {
255
+ operation: "spi.set_bit_order";
256
+ bus: string;
257
+ /** "lsb" | "msb" */
258
+ order: string;
259
+ }
260
+ export interface SpiCsLowOp {
261
+ operation: "spi.cs_low";
262
+ port?: string;
263
+ pin: number;
264
+ }
265
+ export interface SpiCsHighOp {
266
+ operation: "spi.cs_high";
267
+ port?: string;
268
+ pin: number;
269
+ }
270
+ export interface UartBeginOp {
271
+ operation: "uart.begin";
272
+ port: string;
273
+ /** Baud rate — numeric or runtime expression string */
274
+ baud: number | string;
275
+ }
276
+ export interface UartEndOp {
277
+ operation: "uart.end";
278
+ port: string;
279
+ }
280
+ export interface UartPrintOp {
281
+ operation: "uart.print";
282
+ port: string;
283
+ /** Resolved C++ expression to print */
284
+ value: string;
285
+ }
286
+ export interface UartPrintlnOp {
287
+ operation: "uart.println";
288
+ port: string;
289
+ /** Resolved C++ expression to print */
290
+ value: string;
291
+ }
292
+ export interface UartPrintfOp {
293
+ operation: "uart.printf";
294
+ port: string;
295
+ /** printf format string */
296
+ format: string;
297
+ /** Resolved C++ argument expressions */
298
+ args: string[];
299
+ }
300
+ export interface UartWriteOp {
301
+ operation: "uart.write";
302
+ port: string;
303
+ /** Resolved C++ expression for data */
304
+ data: string;
305
+ }
306
+ export interface UartReadOp {
307
+ operation: "uart.read";
308
+ port: string;
309
+ }
310
+ export interface UartPeekOp {
311
+ operation: "uart.peek";
312
+ port: string;
313
+ }
314
+ export interface UartAvailableOp {
315
+ operation: "uart.available";
316
+ port: string;
317
+ }
318
+ export interface UartFlushOp {
319
+ operation: "uart.flush";
320
+ port: string;
321
+ }
322
+ export interface PulseInOp {
323
+ operation: "pulse.in";
324
+ port?: string;
325
+ pin: number;
326
+ /** 0 = LOW, 1 = HIGH */
327
+ value: 0 | 1;
328
+ /** Optional timeout in microseconds */
329
+ timeout?: number;
330
+ }
331
+ export interface PulseInLongOp {
332
+ operation: "pulse.in_long";
333
+ port?: string;
334
+ pin: number;
335
+ /** 0 = LOW, 1 = HIGH */
336
+ value: 0 | 1;
337
+ }
338
+ export interface ShiftOutOp {
339
+ operation: "shift.out";
340
+ dataPin: number;
341
+ clockPin: number;
342
+ /** "lsb" | "msb" */
343
+ bitOrder: string;
344
+ value: number;
345
+ }
346
+ export interface ShiftInOp {
347
+ operation: "shift.in";
348
+ dataPin: number;
349
+ clockPin: number;
350
+ /** "lsb" | "msb" */
351
+ bitOrder: string;
352
+ }
353
+ export interface BoardResolveOp {
354
+ operation: "board.resolve";
355
+ /** Dot-separated path into the board definition (e.g. "peripherals.pwm.resolution") */
356
+ path: string;
357
+ }
358
+ export interface WdtEnableOp {
359
+ operation: "wdt.enable";
360
+ /** Timeout — a duration string ("250ms"), a WDTO_* constant name, or a number */
361
+ timeout: string | number;
362
+ }
363
+ export interface WdtResetOp {
364
+ operation: "wdt.reset";
365
+ }
366
+ export interface WdtDisableOp {
367
+ operation: "wdt.disable";
368
+ }
369
+ export interface SnprintfEmitOp {
370
+ operation: "snprintf.emit";
371
+ /** Temporary buffer variable name */
372
+ bufferName: string;
373
+ /** printf-style format string */
374
+ format: string;
375
+ /** Resolved C++ argument expressions */
376
+ args: string[];
377
+ }
378
+ export interface RawCppOp {
379
+ operation: "raw";
380
+ /** Raw C++ code string (framework-agnostic, use sparingly) */
381
+ code: string;
382
+ }
383
+ /**
384
+ * HAL Operation IR — a discriminated union of all supported hardware
385
+ * operations. Each node carries a semantic `operation` tag and typed
386
+ * arguments. Framework strategies translate these into concrete C++.
387
+ */
388
+ export type HALOpIR = GpioWriteOp | GpioReadOp | GpioToggleOp | GpioSetModeOp | PwmWriteOp | PwmGetFrequencyOp | PwmGetResolutionOp | AdcReadOp | AdcGetResolutionOp | AdcSetReferenceOp | AdcGetReferenceOp | AdcReadVoltageOp | DacWriteOp | InterruptAttachOp | InterruptDetachOp | TonePlayOp | ToneStopOp | TimingDelayOp | TimingDelayMicrosecondsOp | TimingMillisOp | TimingMicrosOp | TimingFreeHeapOp | TimingSetIntervalOp | TimingSetTimeoutOp | TimingClearIntervalOp | TimingClearTimeoutOp | PowerDeepSleepOp | PowerLightSleepOp | PowerSetCpuFrequencyOp | I2cBeginOp | I2cEndOp | I2cSetClockOp | I2cBeginTransmissionOp | I2cWriteOp | I2cWriteBytesOp | I2cWriteBufferOp | I2cReadBufferOp | I2cEndTransmissionOp | I2cRequestFromOp | I2cAvailableOp | I2cReadOp | I2cRecoverOp | SpiBeginOp | SpiEndOp | SpiTransferOp | SpibeginTransactionOp | SpiEndTransactionOp | SpiSetModeOp | SpiSetBitOrderOp | SpiCsLowOp | SpiCsHighOp | UartBeginOp | UartEndOp | UartPrintOp | UartPrintlnOp | UartPrintfOp | UartWriteOp | UartReadOp | UartPeekOp | UartAvailableOp | UartFlushOp | PulseInOp | PulseInLongOp | ShiftOutOp | ShiftInOp | BoardResolveOp | WdtEnableOp | WdtResetOp | WdtDisableOp | SnprintfEmitOp | RawCppOp | DisplayHALOp;
389
+ /**
390
+ * Helper type: extracts the operation string from a HALOpIR variant.
391
+ * Useful for type-safe switch statements in framework strategies.
392
+ */
393
+ export type HALOperationKind = HALOpIR["operation"];
@@ -0,0 +1,18 @@
1
+ // ---------------------------------------------------------------------------
2
+ // HAL Operation IR — semantic hardware operations
3
+ //
4
+ // Each HALOpIR node represents a single hardware operation (GPIO write, I2C
5
+ // transfer, timing delay, etc.) that the framework strategy translates into
6
+ // framework-specific C++.
7
+ //
8
+ // The transpiler produces these nodes when resolving HAL method calls.
9
+ // Framework strategies (ArduinoStrategy, NativeAVRStrategy, etc.) implement
10
+ // resolveHALOperation() to map each operation to concrete C++ code.
11
+ //
12
+ // Pin-carrying operations include an optional `port` field for the MCU
13
+ // datasheet port name (e.g. "PB5"). When present, framework strategies
14
+ // should prefer the port name and look up the framework pin number via
15
+ // the MCU package's pin mapping. The `pin` field provides backward
16
+ // compatibility as a legacy framework pin number.
17
+ // ---------------------------------------------------------------------------
18
+ export {};
@@ -0,0 +1,26 @@
1
+ export type { Diagnostic, PlatformContext, SourceSpan, TargetProfile } from './types.js';
2
+ export type { CppTypeIR, CppTypeKind, CppPrimitiveName, CppFormatKind, } from './cpp-type-ir.js';
3
+ export { parseCppType, renderCppType, splitTemplateArgs, isPointer, isReference, isContainer, isVector, isMap, isSet, isTuple, isVariant, isStdFunction, isStaticArray, isCArray, isStringLike, isPrimitive, bareType, elementOf, formatKindOf, CppTypeIR as cppTypeIRBuilder, parsedIsPointer, parsedIsStringLike, parsedIsPrimitive, parsedIsContainer, parsedIsVector, parsedIsMap, parsedIsSet, parsedIsTuple, parsedIsVariant, parsedIsStaticArray, parsedIsStdString, parsedElementOf, parsedElementString, parsedBareString, parsedBareType, collectNamedTypes, parsedCollectNamedTypes, needsCStrForStringLike, parsedIsPlainStructType, } from './cpp-type-ir.js';
4
+ export type { ExpressionIR, StatementIR, ProgramIR, ImportIR, ReExportIR, CallExpressionIR, SuperCallIR, VariableDeclarationIR, AssignmentIR, UpdateIR, ReturnIR, WhileIR, IfIR, ForIR, ForOfIR, ForInIR, BreakIR, ContinueIR, DoWhileIR, SwitchIR, CaseIR, TryIR, ThrowIR, LabeledIR, BlockIR, HALOpStatementIR, FunctionIR, StructDefIR, EnumIR, ClassFieldIR, ClassConstructorIR, ClassMethodIR, ClassGetterIR, ClassSetterIR, ClassIR, InterfaceIR, TypeAliasIR, NamespaceIR, PeripheralUsageIR, RegisterBitFieldIR, RegisterClassIR, ParameterIR, CppType, } from './ir.js';
5
+ export type { HALOpIR, HALOperationKind, } from './hal-op-ir.js';
6
+ export type { DisplayInitOp, DisplayFillRectOp, DisplayDrawTextOp, DisplayDrawRectOp, DisplayFlushOp, DisplayHALOp, } from './display-op-ir.js';
7
+ export { DISPLAY_OPERATION_KINDS } from './display-op-ir.js';
8
+ export type { PlatformGraphicsStrategy, GraphicsCapacity } from './graphics-strategy.js';
9
+ export type { DisplayProfile, DisplayConfig, DisplaySize, TouchProfile, TouchLibrary, ResolvedDisplay } from './display-profile.js';
10
+ export { effectiveDisplaySize, normalizeDisplayRotation, resolveDisplayProfile, resolveScrollConfig, DEFAULT_SCROLL_CANVAS_BUDGET_BYTES } from './display-profile.js';
11
+ export type { DisplayCapabilities, DisplayFeatureFlags, NativeFormat, RefreshModel, PartialRefreshScope, } from './display-capabilities.js';
12
+ export { defaultTftCapabilities, deriveCapabilities } from './display-capabilities.js';
13
+ export type { BoardConstants } from './board-resolver.js';
14
+ export type { RuntimePolyfillIR, StdLibSupport, } from './polyfill-types.js';
15
+ export { getStdLibSupport, DEFAULT_STDLIB_SUPPORT } from './polyfill-types.js';
16
+ export type { PlatformStrategy, PlatformProfileStrategy, PlatformPolyfillStrategy, PlatformTypeStrategy, PlatformExpressionStrategy, PlatformStatementStrategy, PlatformSafetyStrategy, PlatformBuildStrategy, PlatformDebugStrategy, PlatformAsyncStrategy, PlatformHALStrategy, } from './platform-strategy.js';
17
+ export type { CompileError, CompileResult, UploadResult, ToolchainOptions } from './toolchain-types.js';
18
+ export { parseCompileErrors, collectCppFiles } from './toolchain-types.js';
19
+ export type { KnownVariableInfo, SnprintfArgRenderResult, SnprintfRenderResult, EmissionScopeState, SnprintfExpressionRenderer, } from './snprintf-types.js';
20
+ export { POLYFILL_HELPER_MAP, filterPolyfillHelpers } from './polyfill-helper-registry.js';
21
+ export { STRING_METHODS, STRING_METHOD_NAMES, applyStringMethodRewrites } from './string-method-registry.js';
22
+ export type { StringMethodSpec, StringMethodArgForm } from './string-method-registry.js';
23
+ export { isStringEnum } from './ir-declarations.js';
24
+ export type { AsyncRuntimeConfig } from './async-types.js';
25
+ export { generatePromiseRuntime } from './promise-runtime.js';
26
+ export { generateStaticAsyncRuntime } from './async-runtime-static.js';
@@ -0,0 +1,21 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Shared types barrel export
3
+ //
4
+ // Re-exports all shared types for use by CLI and framework packages.
5
+ // ---------------------------------------------------------------------------
6
+ export { parseCppType, renderCppType, splitTemplateArgs, isPointer, isReference, isContainer, isVector, isMap, isSet, isTuple, isVariant, isStdFunction, isStaticArray, isCArray, isStringLike, isPrimitive, bareType, elementOf, formatKindOf, CppTypeIR as cppTypeIRBuilder, parsedIsPointer, parsedIsStringLike, parsedIsPrimitive, parsedIsContainer, parsedIsVector, parsedIsMap, parsedIsSet, parsedIsTuple, parsedIsVariant, parsedIsStaticArray, parsedIsStdString, parsedElementOf, parsedElementString, parsedBareString, parsedBareType, collectNamedTypes, parsedCollectNamedTypes, needsCStrForStringLike, parsedIsPlainStructType, } from './cpp-type-ir.js';
7
+ export { DISPLAY_OPERATION_KINDS } from './display-op-ir.js';
8
+ export { effectiveDisplaySize, normalizeDisplayRotation, resolveDisplayProfile, resolveScrollConfig, DEFAULT_SCROLL_CANVAS_BUDGET_BYTES } from './display-profile.js';
9
+ export { defaultTftCapabilities, deriveCapabilities } from './display-capabilities.js';
10
+ export { getStdLibSupport, DEFAULT_STDLIB_SUPPORT } from './polyfill-types.js';
11
+ export { parseCompileErrors, collectCppFiles } from './toolchain-types.js';
12
+ // Polyfill helper registry
13
+ export { POLYFILL_HELPER_MAP, filterPolyfillHelpers } from './polyfill-helper-registry.js';
14
+ // Shared string-method lowering (used by all platform strategies)
15
+ export { STRING_METHODS, STRING_METHOD_NAMES, applyStringMethodRewrites } from './string-method-registry.js';
16
+ // Runtime helpers
17
+ export { isStringEnum } from './ir-declarations.js';
18
+ // Promise runtime generator (heap-based: ESP32/ESP8266/rp2040/samd/…)
19
+ export { generatePromiseRuntime } from './promise-runtime.js';
20
+ // Heap-free static async runtime generator (AVR / megaavr / no-<vector> targets)
21
+ export { generateStaticAsyncRuntime } from './async-runtime-static.js';