@typecad/framework-zephyr 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 (191) hide show
  1. package/README.md +22 -35
  2. package/dist/as-built.d.ts +33 -0
  3. package/dist/as-built.js +188 -0
  4. package/dist/async/timer-polyfill.js +1 -1
  5. package/dist/boardgen.d.ts +128 -0
  6. package/dist/boardgen.js +1366 -0
  7. package/dist/chips/board-overrides.d.ts +7 -0
  8. package/dist/chips/board-overrides.js +11 -0
  9. package/dist/chips/controllers.d.ts +28 -8
  10. package/dist/chips/controllers.js +49 -12
  11. package/dist/chips/esp32s3.js +49 -0
  12. package/dist/chips/index.d.ts +6 -12
  13. package/dist/chips/index.js +18 -34
  14. package/dist/chips/resolve.d.ts +16 -2
  15. package/dist/chips/resolve.js +298 -15
  16. package/dist/chips/soc/.d.ts +2 -0
  17. package/dist/chips/soc/.js +129 -0
  18. package/dist/chips/soc/esp32.d.ts +2 -0
  19. package/dist/chips/soc/esp32.js +120 -0
  20. package/dist/chips/soc/esp32c3.d.ts +2 -0
  21. package/dist/chips/soc/esp32c3.js +90 -0
  22. package/dist/chips/soc/esp32c6.d.ts +2 -0
  23. package/dist/chips/soc/esp32c6.js +109 -0
  24. package/dist/chips/soc/esp32s3.d.ts +2 -0
  25. package/dist/chips/soc/esp32s3.js +189 -0
  26. package/dist/chips/soc/index.d.ts +2 -0
  27. package/dist/chips/soc/index.js +23 -0
  28. package/dist/chips/soc/nrf52840.d.ts +2 -0
  29. package/dist/chips/soc/nrf52840.js +130 -0
  30. package/dist/chips/soc/rp2040.d.ts +2 -0
  31. package/dist/chips/soc/rp2040.js +141 -0
  32. package/dist/chips/soc/rp2350a.d.ts +2 -0
  33. package/dist/chips/soc/rp2350a.js +145 -0
  34. package/dist/chips/soc/samd21g18a.d.ts +2 -0
  35. package/dist/chips/soc/samd21g18a.js +143 -0
  36. package/dist/chips/soc/stm32f411xe.d.ts +2 -0
  37. package/dist/chips/soc/stm32f411xe.js +251 -0
  38. package/dist/chips/types.d.ts +382 -12
  39. package/dist/chips/xiao-ble.js +33 -0
  40. package/dist/display/profiles.js +1 -1
  41. package/dist/doctor.js +38 -4
  42. package/dist/dt-config/custom-board.d.ts +23 -0
  43. package/dist/dt-config/custom-board.js +227 -0
  44. package/dist/dt-config/kconfig.d.ts +83 -1
  45. package/dist/dt-config/kconfig.js +116 -27
  46. package/dist/dt-config/overlay.js +623 -18
  47. package/dist/framework.manifest.d.ts +20 -30
  48. package/dist/framework.manifest.js +124 -178
  49. package/dist/index.d.ts +4 -1
  50. package/dist/index.js +8 -2
  51. package/dist/lowering/adc.d.ts +26 -5
  52. package/dist/lowering/adc.js +137 -31
  53. package/dist/lowering/ble.js +31 -28
  54. package/dist/lowering/dac.js +9 -9
  55. package/dist/lowering/fs.js +18 -10
  56. package/dist/lowering/gpio.d.ts +2 -0
  57. package/dist/lowering/gpio.js +90 -10
  58. package/dist/lowering/http.js +39 -14
  59. package/dist/lowering/hwtimer.d.ts +4 -0
  60. package/dist/lowering/hwtimer.js +35 -10
  61. package/dist/lowering/i2c.js +46 -54
  62. package/dist/lowering/index.d.ts +5 -5
  63. package/dist/lowering/index.js +15 -16
  64. package/dist/lowering/interrupts.d.ts +22 -5
  65. package/dist/lowering/interrupts.js +104 -22
  66. package/dist/lowering/mqtt.js +12 -6
  67. package/dist/lowering/power.js +0 -4
  68. package/dist/lowering/preferences.js +49 -77
  69. package/dist/lowering/pulse.js +5 -36
  70. package/dist/lowering/pwm.d.ts +32 -3
  71. package/dist/lowering/pwm.js +105 -17
  72. package/dist/lowering/random.js +3 -3
  73. package/dist/lowering/sensor.d.ts +37 -0
  74. package/dist/lowering/sensor.js +119 -0
  75. package/dist/lowering/spi.d.ts +12 -0
  76. package/dist/lowering/spi.js +65 -40
  77. package/dist/lowering/thread.d.ts +14 -0
  78. package/dist/lowering/thread.js +55 -0
  79. package/dist/lowering/timing.js +20 -46
  80. package/dist/lowering/tone.js +18 -5
  81. package/dist/lowering/uart.d.ts +13 -0
  82. package/dist/lowering/uart.js +72 -51
  83. package/dist/lowering/usb.d.ts +34 -0
  84. package/dist/lowering/usb.js +206 -0
  85. package/dist/lowering/wdt.d.ts +1 -1
  86. package/dist/lowering/wdt.js +17 -7
  87. package/dist/lowering/wifi.d.ts +3 -2
  88. package/dist/lowering/wifi.js +120 -111
  89. package/dist/sdk/board-catalog-sync.d.ts +16 -0
  90. package/dist/sdk/board-catalog-sync.js +41 -0
  91. package/dist/sdk/board-data.generated.d.ts +2 -0
  92. package/dist/sdk/board-data.generated.js +4 -0
  93. package/dist/sdk/catalog-walker.d.ts +90 -0
  94. package/dist/sdk/catalog-walker.js +682 -0
  95. package/dist/sdk/dts-reader.d.ts +83 -0
  96. package/dist/sdk/dts-reader.js +596 -0
  97. package/dist/strategy.d.ts +136 -17
  98. package/dist/strategy.js +881 -212
  99. package/dist/toolchain/bossac-touch.d.ts +18 -0
  100. package/dist/toolchain/bossac-touch.js +88 -0
  101. package/dist/toolchain/compat.d.ts +2 -2
  102. package/dist/toolchain/compat.js +8 -3
  103. package/dist/toolchain/debug-config.d.ts +21 -26
  104. package/dist/toolchain/debug-config.js +212 -72
  105. package/dist/toolchain/env-check.d.ts +4 -4
  106. package/dist/toolchain/env-check.js +5 -5
  107. package/dist/toolchain/index.d.ts +66 -1
  108. package/dist/toolchain/index.js +713 -58
  109. package/dist/toolchain/scaffold.d.ts +9 -0
  110. package/dist/toolchain/scaffold.js +84 -7
  111. package/dist/toolchain/west-discover.d.ts +8 -1
  112. package/dist/toolchain/west-discover.js +19 -6
  113. package/dist/toolchain/west-spawn.js +17 -5
  114. package/installer/CHANGELOG.md +473 -0
  115. package/installer/README.md +328 -0
  116. package/installer/environment.yml +46 -0
  117. package/installer/etc/conda/activate.d/zephyr.bat +7 -0
  118. package/installer/etc/conda/activate.d/zephyr.ps1 +12 -0
  119. package/installer/etc/conda/activate.d/zephyr.sh +20 -0
  120. package/installer/etc/conda/deactivate.d/zephyr.bat +6 -0
  121. package/installer/etc/conda/deactivate.d/zephyr.ps1 +6 -0
  122. package/installer/etc/conda/deactivate.d/zephyr.sh +4 -0
  123. package/installer/install.mjs +580 -0
  124. package/installer/install.ps1 +619 -0
  125. package/installer/install.sh +310 -0
  126. package/installer/lib/detect-platform.sh +62 -0
  127. package/installer/lib/fetch-sdk.sh +304 -0
  128. package/installer/lib/init-workspace.sh +153 -0
  129. package/installer/lib/write-activation.sh +76 -0
  130. package/installer/patches/tfm-c-include-separators.patch +19 -0
  131. package/installer/patches/zephyr-tfm-nordic-zephyr-include.patch +24 -0
  132. package/installer/templates/project/.typecad/activate-zephyr.ps1 +31 -0
  133. package/installer/templates/project/.typecad/activate-zephyr.sh +31 -0
  134. package/installer/templates/project/.vscode/settings.json +30 -0
  135. package/installer/templates/project/README.md +58 -0
  136. package/installer/versions.env +110 -0
  137. package/package.json +16 -16
  138. package/src/as-built.ts +206 -0
  139. package/src/boardgen.ts +1428 -0
  140. package/src/chips/controllers.ts +61 -12
  141. package/src/chips/index.ts +35 -54
  142. package/src/chips/resolve.ts +316 -14
  143. package/src/chips/types.ts +388 -13
  144. package/src/display/profiles.ts +1 -1
  145. package/src/doctor.ts +110 -77
  146. package/src/dt-config/custom-board.ts +325 -0
  147. package/src/dt-config/kconfig.ts +177 -19
  148. package/src/dt-config/overlay.ts +1058 -450
  149. package/src/framework.manifest.ts +125 -178
  150. package/src/index.ts +57 -41
  151. package/src/lowering/adc.ts +222 -102
  152. package/src/lowering/ble.ts +32 -28
  153. package/src/lowering/dac.ts +82 -82
  154. package/src/lowering/fs.ts +18 -10
  155. package/src/lowering/gpio.ts +242 -152
  156. package/src/lowering/http.ts +512 -488
  157. package/src/lowering/hwtimer.ts +139 -101
  158. package/src/lowering/i2c.ts +116 -126
  159. package/src/lowering/index.ts +91 -93
  160. package/src/lowering/interrupts.ts +113 -21
  161. package/src/lowering/mqtt.ts +12 -6
  162. package/src/lowering/preferences.ts +327 -354
  163. package/src/lowering/pwm.ts +167 -74
  164. package/src/lowering/random.ts +3 -3
  165. package/src/lowering/sensor.ts +155 -0
  166. package/src/lowering/spi.ts +164 -124
  167. package/src/lowering/thread.ts +63 -0
  168. package/src/lowering/timing.ts +46 -72
  169. package/src/lowering/uart.ts +73 -51
  170. package/src/lowering/usb.ts +221 -0
  171. package/src/lowering/wdt.ts +95 -84
  172. package/src/lowering/wifi.ts +120 -111
  173. package/src/sdk/board-catalog-sync.ts +62 -0
  174. package/src/strategy.ts +888 -229
  175. package/src/toolchain/bossac-touch.ts +112 -0
  176. package/src/toolchain/compat.ts +8 -3
  177. package/src/toolchain/debug-config.ts +666 -522
  178. package/src/toolchain/env-check.ts +9 -9
  179. package/src/toolchain/index.ts +765 -44
  180. package/src/toolchain/scaffold.ts +81 -7
  181. package/src/toolchain/west-discover.ts +334 -316
  182. package/src/toolchain/west-spawn.ts +17 -5
  183. package/src/async/timer-polyfill.ts +0 -107
  184. package/src/chips/esp32.ts +0 -74
  185. package/src/chips/esp32s3.ts +0 -57
  186. package/src/chips/xiao-ble.ts +0 -70
  187. package/src/lowering/power.ts +0 -70
  188. package/src/lowering/pulse.ts +0 -93
  189. package/src/lowering/tone.ts +0 -60
  190. package/src/lowering/worker-backing.ts +0 -94
  191. package/src/lowering/worker.ts +0 -17
@@ -1,94 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // Zephyr worker-offload backing (system workqueue + counting semaphore)
3
- //
4
- // Supplies the spawn/signal/poll primitives that the shared worker_runtime
5
- // polyfill calls into, for Zephyr targets. This is the Zephyr-native analog of
6
- // the ESP32 FreeRTOS backing (framework-esp32/src/lowering/worker-backing.ts):
7
- //
8
- // ESP32 (FreeRTOS) Zephyr
9
- // ───────────────────────── ─────────────────────────────────────────
10
- // xTaskCreate + vTaskDelete k_work_submit to the system workqueue
11
- // xTaskNotifyGive (barrier) k_sem_give (kernel barrier)
12
- // ulTaskNotifyTake(0) k_sem_take(K_NO_WAIT)
13
- //
14
- // The worker runs on the system workqueue thread (a real kernel thread, not an
15
- // ISR), so it can execute a full function. Completion is signalled via a per-
16
- // slot counting semaphore given from workqueue thread context (k_sem_give is
17
- // safe from thread context — NOT k_sem_give from an ISR; workqueue handlers run
18
- // in thread context). k_sem provides the memory barrier the contract requires.
19
- //
20
- // IMPORTANT: the system workqueue has a fixed stack (CONFIG_SYSTEM_WORKQUEUE_
21
- // STACK_SIZE). The scaffold bumps it because heavy workers (TLS, sensor fusion)
22
- // overflow the default ~2 KB. Pin a large worker to a private workqueue if it
23
- // exceeds the system queue's stack.
24
- // ---------------------------------------------------------------------------
25
-
26
- import type { WorkerBacking } from "@typecad/cuttlefish/api/shared";
27
-
28
- export interface ZephyrWorkerBackingOptions {
29
- /** Initial count of each per-slot semaphore. Default 0 (empty). */
30
- initialSemCount?: number;
31
- }
32
-
33
- /**
34
- * Build the Zephyr (k_work + k_sem) worker backing.
35
- *
36
- * Per slot: a `struct k_work _work_<i>` and a `struct k_sem _done_sem_<i>`.
37
- * submit resets the semaphore and submits the work to the system workqueue;
38
- * the work handler runs the trampoline; the trampoline signals completion via
39
- * k_sem_give; done polls via k_sem_take(K_NO_WAIT).
40
- */
41
- export function buildZephyrWorkerBacking(
42
- _options: ZephyrWorkerBackingOptions = {},
43
- ): WorkerBacking {
44
- return {
45
- requiredIncludes: ['<zephyr/kernel.h>', '<zephyr/work/work.h>'],
46
-
47
- declarations: [
48
- `// Zephyr worker backing: per-slot work item + completion semaphore.`,
49
- `// Declared inside the typecad_worker namespace alongside the slots.`,
50
- ],
51
-
52
- slotDeclarations: (handleId, trampolineName) => {
53
- // Per-slot completion semaphore (given from workqueue thread context).
54
- // Declared before the trampoline so the trampoline's signalDoneExpr can
55
- // reference it. The trampoline itself is forward-declared by the shared
56
- // runtime above this block.
57
- return [
58
- `// Per-slot completion semaphore.`,
59
- `K_SEM_DEFINE(_done_sem_${handleId}, 0, 1);`,
60
- ``,
61
- `// Per-slot work item + handler. The handler forwards to the shared-`,
62
- `// runtime trampoline (which runs the submitted fn + signals the sem).`,
63
- `static void ${trampolineName}_work_handler(struct k_work* work) {`,
64
- ` (void)work;`,
65
- ` ${trampolineName}(nullptr);`,
66
- `}`,
67
- `K_WORK_DEFINE(_work_${handleId}, ${trampolineName}_work_handler);`,
68
- ];
69
- },
70
-
71
- spawnLines: (handleId, trampolineName, _waiterExpr) => {
72
- // The waiter field is unused on Zephyr (the semaphore IS the signal).
73
- // Reset the completion semaphore, then submit the work item to the
74
- // system workqueue. The work handler (bound via K_WORK_DEFINE above)
75
- // runs the shared-runtime trampoline.
76
- return [
77
- `(void)0; // waiter unused: k_sem is the signal`,
78
- `k_sem_reset(&_done_sem_${handleId});`,
79
- `(void)k_work_submit(&_work_${handleId}); // ${trampolineName} on sys workqueue`,
80
- ];
81
- },
82
-
83
- signalDoneExpr: (handleId) =>
84
- // Given from workqueue thread context (k_sem_give is thread-safe here).
85
- // k_sem provides the kernel memory barrier making the worker's outputs
86
- // visible to the consumer once k_sem_take succeeds.
87
- `k_sem_give(&_done_sem_${handleId})`,
88
-
89
- isDoneExpr: (handleId) =>
90
- // Non-blocking take; its barrier makes the worker's outputs safe to read.
91
- // The shared runtime fast-paths on the volatile done flag first.
92
- `(k_sem_take(&_done_sem_${handleId}, K_NO_WAIT) == 0)`,
93
- };
94
- }
@@ -1,17 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // Zephyr worker-offload lowering
3
- //
4
- // Delegates the shared worker.* op contract to the cross-framework helper
5
- // lowerWorkerOp (worker-runtime.ts). The per-framework primitives are supplied
6
- // by the Zephyr worker backing (worker-backing.ts: k_work + k_sem), emitted via
7
- // the worker_runtime polyfill when the program uses worker.* ops. See the
8
- // Zephyr strategy's worker backing wiring + generateNativePolyfills.
9
- // ---------------------------------------------------------------------------
10
-
11
- import type { HALOpIR } from '@typecad/cuttlefish/api/shared';
12
- import { lowerWorkerOp } from '@typecad/cuttlefish/api/shared';
13
-
14
- /** Resolve a HAL worker.* op to C++ against the shared __tc_worker contract. */
15
- export function lowerWorker(op: HALOpIR): { code?: string; expression?: string } | undefined {
16
- return lowerWorkerOp(op);
17
- }