@typecad/framework-zephyr 1.0.0-alpha.16 → 1.0.0-alpha.19

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 (210) hide show
  1. package/LICENSE +202 -21
  2. package/README.md +49 -87
  3. package/dist/as-built.d.ts +2 -2
  4. package/dist/as-built.js +2 -2
  5. package/dist/audit.d.ts +111 -0
  6. package/dist/audit.js +416 -0
  7. package/dist/boardgen.d.ts +1 -9
  8. package/dist/boardgen.js +288 -47
  9. package/dist/chips/resolve.js +20 -0
  10. package/dist/chips/types.d.ts +22 -1
  11. package/dist/debug-codegen.js +1 -1
  12. package/dist/display/bindings.d.ts +55 -0
  13. package/dist/display/bindings.js +316 -0
  14. package/dist/display/gfx.d.ts +2 -3
  15. package/dist/display/gfx.js +166 -154
  16. package/dist/display/index.js +20 -1
  17. package/dist/display/mipi-dbi-host.d.ts +9 -0
  18. package/dist/display/mipi-dbi-host.js +174 -0
  19. package/dist/display/profiles.d.ts +109 -4
  20. package/dist/display/profiles.js +270 -7
  21. package/dist/display/touch-adapter.js +119 -49
  22. package/dist/display/ui-adapter-eink.d.ts +2 -0
  23. package/dist/display/ui-adapter-eink.js +4 -0
  24. package/dist/display/ui-adapter-gray.d.ts +8 -0
  25. package/dist/display/ui-adapter-gray.js +170 -0
  26. package/dist/display/ui-adapter-mono.d.ts +13 -0
  27. package/dist/display/ui-adapter-mono.js +230 -0
  28. package/dist/display/ui-adapter-native.d.ts +10 -0
  29. package/dist/display/ui-adapter-native.js +295 -0
  30. package/dist/display/ui-adapter-shared.d.ts +11 -0
  31. package/dist/display/ui-adapter-shared.js +122 -0
  32. package/dist/display/ui-adapter.js +510 -558
  33. package/dist/doctor.js +4 -4
  34. package/dist/dt-config/custom-board.js +2 -2
  35. package/dist/dt-config/kconfig.d.ts +62 -1
  36. package/dist/dt-config/kconfig.js +141 -38
  37. package/dist/dt-config/overlay.d.ts +15 -2
  38. package/dist/dt-config/overlay.js +433 -18
  39. package/dist/framework.manifest.d.ts +10 -4
  40. package/dist/framework.manifest.js +133 -17
  41. package/dist/index.d.ts +2 -0
  42. package/dist/index.js +14 -6
  43. package/dist/licenses.d.ts +2 -2
  44. package/dist/licenses.js +13 -92
  45. package/dist/lowering/can.d.ts +25 -0
  46. package/dist/lowering/can.js +97 -0
  47. package/dist/lowering/clock.d.ts +17 -0
  48. package/dist/lowering/clock.js +58 -0
  49. package/dist/lowering/fs.js +1 -1
  50. package/dist/lowering/gpio.js +0 -32
  51. package/dist/lowering/hid.d.ts +27 -0
  52. package/dist/lowering/hid.js +244 -0
  53. package/dist/lowering/http.js +264 -32
  54. package/dist/lowering/i2c.d.ts +8 -0
  55. package/dist/lowering/i2c.js +137 -5
  56. package/dist/lowering/i2s.d.ts +27 -0
  57. package/dist/lowering/i2s.js +98 -0
  58. package/dist/lowering/index.d.ts +9 -1
  59. package/dist/lowering/index.js +25 -1
  60. package/dist/lowering/interrupts.js +6 -0
  61. package/dist/lowering/matrix.d.ts +15 -0
  62. package/dist/lowering/matrix.js +63 -0
  63. package/dist/lowering/mqtt.js +110 -8
  64. package/dist/lowering/power.d.ts +3 -2
  65. package/dist/lowering/power.js +20 -45
  66. package/dist/lowering/pwm.js +25 -0
  67. package/dist/lowering/sensor.d.ts +2 -2
  68. package/dist/lowering/sensor.js +8 -4
  69. package/dist/lowering/strip.d.ts +16 -0
  70. package/dist/lowering/strip.js +70 -0
  71. package/dist/lowering/thread.js +5 -1
  72. package/dist/lowering/trace.d.ts +44 -0
  73. package/dist/lowering/trace.js +239 -0
  74. package/dist/lowering/uart.js +6 -1
  75. package/dist/lowering/usb.d.ts +3 -1
  76. package/dist/lowering/usb.js +16 -13
  77. package/dist/lowering/wdt.js +2 -29
  78. package/dist/sbom.d.ts +181 -0
  79. package/dist/sbom.js +901 -0
  80. package/dist/sdk/board-catalog-sync.d.ts +1 -3
  81. package/dist/sdk/board-catalog-sync.js +4 -10
  82. package/dist/strategy.d.ts +82 -46
  83. package/dist/strategy.js +639 -182
  84. package/dist/tmp-probe.d.ts +2 -0
  85. package/dist/tmp-probe.js +9 -0
  86. package/dist/toolchain/debug-config.d.ts +50 -90
  87. package/dist/toolchain/debug-config.js +239 -510
  88. package/dist/toolchain/env-check.d.ts +1 -3
  89. package/dist/toolchain/env-check.js +2 -7
  90. package/dist/toolchain/index.d.ts +28 -3
  91. package/dist/toolchain/index.js +498 -62
  92. package/dist/toolchain/runners.d.ts +16 -0
  93. package/dist/toolchain/runners.js +75 -0
  94. package/dist/toolchain/scaffold.d.ts +5 -2
  95. package/dist/toolchain/scaffold.js +79 -15
  96. package/dist/toolchain/west-discover.d.ts +6 -0
  97. package/dist/toolchain/west-discover.js +36 -13
  98. package/dist/toolchain/west-spawn.js +8 -2
  99. package/dist/west-inventory.d.ts +25 -0
  100. package/dist/west-inventory.js +97 -0
  101. package/installer/README.md +328 -328
  102. package/installer/install.sh +2 -2
  103. package/installer/templates/project/.typecad/activate-zephyr.ps1 +1 -1
  104. package/installer/templates/project/.typecad/activate-zephyr.sh +1 -1
  105. package/installer/templates/project/.vscode/settings.json +1 -1
  106. package/installer/templates/project/README.md +2 -2
  107. package/package.json +5 -5
  108. package/src/as-built.ts +206 -206
  109. package/src/audit.ts +529 -0
  110. package/src/boardgen.ts +265 -50
  111. package/src/chips/resolve.ts +21 -0
  112. package/src/chips/types.ts +10 -1
  113. package/src/display/bindings.ts +347 -0
  114. package/src/display/gfx.ts +318 -306
  115. package/src/display/index.ts +87 -70
  116. package/src/display/mipi-dbi-host.ts +183 -0
  117. package/src/display/profiles.ts +458 -139
  118. package/src/display/touch-adapter.ts +119 -49
  119. package/src/display/ui-adapter-eink.ts +13 -0
  120. package/src/display/ui-adapter-gray.ts +178 -0
  121. package/src/display/ui-adapter-mono.ts +238 -0
  122. package/src/display/ui-adapter-native.ts +304 -0
  123. package/src/display/ui-adapter-shared.ts +125 -0
  124. package/src/display/ui-adapter.ts +732 -781
  125. package/src/doctor.ts +4 -4
  126. package/src/dt-config/custom-board.ts +2 -2
  127. package/src/dt-config/kconfig.ts +647 -505
  128. package/src/dt-config/overlay.ts +1475 -1058
  129. package/src/framework.manifest.ts +659 -535
  130. package/src/index.ts +16 -6
  131. package/src/licenses.ts +346 -425
  132. package/src/lowering/can.ts +140 -0
  133. package/src/lowering/clock.ts +91 -0
  134. package/src/lowering/fs.ts +135 -135
  135. package/src/lowering/gpio.ts +0 -33
  136. package/src/lowering/hid.ts +261 -0
  137. package/src/lowering/http.ts +264 -32
  138. package/src/lowering/i2c.ts +142 -5
  139. package/src/lowering/i2s.ts +143 -0
  140. package/src/lowering/index.ts +18 -1
  141. package/src/lowering/interrupts.ts +6 -0
  142. package/src/lowering/matrix.ts +70 -0
  143. package/src/lowering/mqtt.ts +109 -8
  144. package/src/lowering/power.ts +41 -0
  145. package/src/lowering/pwm.ts +192 -167
  146. package/src/lowering/sensor.ts +159 -155
  147. package/src/lowering/strip.ts +81 -0
  148. package/src/lowering/thread.ts +5 -1
  149. package/src/lowering/trace.ts +270 -0
  150. package/src/lowering/uart.ts +6 -1
  151. package/src/lowering/usb.ts +16 -13
  152. package/src/lowering/wdt.ts +2 -25
  153. package/src/sbom.ts +1117 -0
  154. package/src/sdk/board-catalog-sync.ts +4 -25
  155. package/src/strategy.ts +2680 -2309
  156. package/src/toolchain/debug-config.ts +262 -522
  157. package/src/toolchain/env-check.ts +279 -285
  158. package/src/toolchain/index.ts +1792 -1359
  159. package/src/toolchain/runners.ts +80 -0
  160. package/src/toolchain/scaffold.ts +355 -296
  161. package/src/toolchain/west-discover.ts +35 -13
  162. package/src/toolchain/west-spawn.ts +174 -168
  163. package/src/west-inventory.ts +102 -0
  164. package/dist/async/timer-polyfill.d.ts +0 -10
  165. package/dist/async/timer-polyfill.js +0 -95
  166. package/dist/chips/board-overrides.d.ts +0 -7
  167. package/dist/chips/board-overrides.js +0 -11
  168. package/dist/chips/esp32.d.ts +0 -2
  169. package/dist/chips/esp32.js +0 -71
  170. package/dist/chips/esp32s3.d.ts +0 -2
  171. package/dist/chips/esp32s3.js +0 -103
  172. package/dist/chips/soc/.d.ts +0 -2
  173. package/dist/chips/soc/.js +0 -129
  174. package/dist/chips/soc/esp32.d.ts +0 -2
  175. package/dist/chips/soc/esp32.js +0 -120
  176. package/dist/chips/soc/esp32c3.d.ts +0 -2
  177. package/dist/chips/soc/esp32c3.js +0 -90
  178. package/dist/chips/soc/esp32c6.d.ts +0 -2
  179. package/dist/chips/soc/esp32c6.js +0 -109
  180. package/dist/chips/soc/esp32s3.d.ts +0 -2
  181. package/dist/chips/soc/esp32s3.js +0 -189
  182. package/dist/chips/soc/index.d.ts +0 -2
  183. package/dist/chips/soc/index.js +0 -23
  184. package/dist/chips/soc/nrf52840.d.ts +0 -2
  185. package/dist/chips/soc/nrf52840.js +0 -130
  186. package/dist/chips/soc/rp2040.d.ts +0 -2
  187. package/dist/chips/soc/rp2040.js +0 -141
  188. package/dist/chips/soc/rp2350a.d.ts +0 -2
  189. package/dist/chips/soc/rp2350a.js +0 -145
  190. package/dist/chips/soc/samd21g18a.d.ts +0 -2
  191. package/dist/chips/soc/samd21g18a.js +0 -143
  192. package/dist/chips/soc/stm32f411xe.d.ts +0 -2
  193. package/dist/chips/soc/stm32f411xe.js +0 -251
  194. package/dist/chips/xiao-ble.d.ts +0 -2
  195. package/dist/chips/xiao-ble.js +0 -100
  196. package/dist/lowering/pulse.d.ts +0 -7
  197. package/dist/lowering/pulse.js +0 -51
  198. package/dist/lowering/tone.d.ts +0 -10
  199. package/dist/lowering/tone.js +0 -63
  200. package/dist/lowering/worker-backing.d.ts +0 -14
  201. package/dist/lowering/worker-backing.js +0 -79
  202. package/dist/lowering/worker.d.ts +0 -6
  203. package/dist/lowering/worker.js +0 -14
  204. package/dist/sdk/board-data.generated.d.ts +0 -2
  205. package/dist/sdk/board-data.generated.js +0 -4
  206. package/dist/sdk/catalog-walker.d.ts +0 -90
  207. package/dist/sdk/catalog-walker.js +0 -682
  208. package/dist/sdk/dts-reader.d.ts +0 -83
  209. package/dist/sdk/dts-reader.js +0 -596
  210. package/src/debug-codegen.ts +0 -207
@@ -1,207 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // Zephyr debug code generator — printk-based debug output
3
- //
4
- // The Zephyr counterpart to framework-esp32/src/debug-codegen.ts. Zephyr's
5
- // minimal C++ config has no <iostream> (manifest: needsIostream=false,
6
- // stdlibSupport.hasIostream=false), so the GenericStrategy's std::cout fallback
7
- // used by the debug preprocessor would NOT compile. This module routes every
8
- // debug line through printk("...\n") — the always-available Zephyr console,
9
- // with no CONFIG_CONSOLE dependency — so `cuttlefish build --debug` produces
10
- // compiling output.
11
- //
12
- // The halt primitive is __tc_debug_wait_for_continue() (emitted in
13
- // ZephyrStrategy.shimLines when --debug is active): a k_console-input / busy
14
- // poll that yields to the scheduler so an unattended breakpoint does not trip
15
- // any watchdog. ENTER continues; 's' disables this breakpoint for the run.
16
- //
17
- // Used by ZephyrStrategy's generateDebug* overrides, dispatched by the
18
- // cuttlefish debug preprocessor (cuttlefish/src/debug/preprocessor.ts).
19
- // ---------------------------------------------------------------------------
20
-
21
- export interface CapturedVariable {
22
- name: string;
23
- isFunction?: boolean;
24
- /** Coarse C++ type category (inferred by the preprocessor without a checker). */
25
- cppType?: 'bool' | 'int' | 'long' | 'float' | 'string' | 'unknown';
26
- }
27
-
28
- export interface LogMessagePart {
29
- type: 'text' | 'variable';
30
- value: string;
31
- }
32
-
33
- /**
34
- * Generate the debug-mode banner. printk is always wired (Zephyr console), so
35
- * there is no init to perform — just confirm debug instrumentation is live.
36
- */
37
- export function generateZephyrInitCode(): string[] {
38
- return [
39
- `// === DEBUG: Zephyr console (printk) ===`,
40
- `printk("[TypeCAD] Debug Mode Active\\n");`,
41
- `// === END DEBUG INIT ===`,
42
- ``,
43
- ];
44
- }
45
-
46
- /**
47
- * Generate Zephyr code for a breakpoint.
48
- *
49
- * The halt is __tc_debug_wait_for_continue() (emitted in ZephyrStrategy.shimLines
50
- * under --debug): blocks until a byte arrives on the console, yielding to the
51
- * scheduler between polls. The user must have a console attached (`west serial`
52
- * or a terminal on the USB-CDC port); ENTER continues, 's' skips this breakpoint
53
- * for the rest of the run.
54
- *
55
- * When `breakpointId` is set, the whole halt block is wrapped in
56
- * `if (!__tc_bp_disabled_<id>)`, so a skipped breakpoint becomes a no-op until
57
- * reboot. The flag is `static` so it persists across loop() iterations.
58
- */
59
- export function generateZephyrBreakpointCode(
60
- fileName: string,
61
- lineNum: number,
62
- originalLine: string,
63
- variables: CapturedVariable[],
64
- normalizedCondition: string | undefined,
65
- breakpointId?: number,
66
- ): string[] {
67
- const lines: string[] = [];
68
- const hasDisableGuard = breakpointId !== undefined;
69
- // Each wrap level adds two spaces of indent: the disable guard (outermost)
70
- // then the condition (if any).
71
- const indent = ' ' + (hasDisableGuard ? ' ' : '') + (normalizedCondition ? ' ' : '');
72
-
73
- lines.push(` // === BREAKPOINT: ${fileName}:${lineNum} ===`);
74
-
75
- // Disable guard: a skipped breakpoint becomes a no-op until reboot. The
76
- // disable state lives in the framework's debug shim (a static registry keyed
77
- // by breakpointId) — NOT as a per-breakpoint declaration here, because the
78
- // transpiler mangles `static bool` declarations injected into the source.
79
- if (hasDisableGuard) {
80
- lines.push(` if (!__tc_bp_is_disabled(${breakpointId})) {`);
81
- }
82
-
83
- if (normalizedCondition) {
84
- lines.push(` ${hasDisableGuard ? ' ' : ''}if (${normalizedCondition}) {`);
85
- }
86
-
87
- lines.push(`${indent}printk("----------------------------------------\\n");`);
88
-
89
- const headerText = normalizedCondition
90
- ? `[BREAK] ${fileName}:${lineNum} (condition: ${escapeString(normalizedCondition)})`
91
- : `[BREAK] ${fileName}:${lineNum}`;
92
- lines.push(`${indent}printk("%s\\n", "${headerText}");`);
93
-
94
- lines.push(`${indent}printk(" %s\\n", "${escapeString(originalLine)}");`);
95
-
96
- if (variables.length > 0) {
97
- lines.push(`${indent}printk(" Variables:\\n");`);
98
- for (const v of variables) {
99
- if (v.isFunction) {
100
- lines.push(`${indent}printk(" - %s = [function]\\n", "${v.name}");`);
101
- } else {
102
- const { spec, arg } = formatSpecFor(v.name, v.cppType);
103
- lines.push(`${indent}printk(" - %s = ${spec}\\n", "${v.name}", ${arg});`);
104
- }
105
- }
106
- } else {
107
- lines.push(`${indent}printk(" (no variables in scope)\\n");`);
108
- }
109
-
110
- lines.push(`${indent}printk(" [ENTER: continue | s: skip this breakpoint]\\n");`);
111
- lines.push(`${indent}printk("----------------------------------------\\n");`);
112
-
113
- // Halt — block on console input, scheduler-yielding. 's' records this id as
114
- // disabled in the shim's registry. Pass -1 when no id (never disable).
115
- lines.push(`${indent}__tc_debug_wait_for_continue(${hasDisableGuard ? breakpointId : -1});`);
116
-
117
- if (normalizedCondition) {
118
- lines.push(` ${hasDisableGuard ? ' ' : ''}}`);
119
- }
120
-
121
- if (hasDisableGuard) {
122
- lines.push(` }`);
123
- }
124
-
125
- lines.push(` // === END BREAKPOINT ===`);
126
-
127
- return lines;
128
- }
129
-
130
- /**
131
- * Generate Zephyr code for a logpoint (logs a message without halting).
132
- */
133
- export function generateZephyrLogpointCode(
134
- fileName: string,
135
- lineNum: number,
136
- parts: LogMessagePart[],
137
- variables: CapturedVariable[],
138
- ): string[] {
139
- const lines: string[] = [];
140
-
141
- lines.push(` // === LOGPOINT: ${fileName}:${lineNum} ===`);
142
- lines.push(` printk("[LOG ${fileName}:${lineNum}] ");`);
143
-
144
- for (const part of parts) {
145
- if (part.type === 'text') {
146
- lines.push(` printk("${escapeString(part.value)}");`);
147
- } else {
148
- // variable part: only printable if it is a non-function value in scope.
149
- const match = variables.find((v) => v.name === part.value && !v.isFunction);
150
- if (match) {
151
- const { spec, arg } = formatSpecFor(match.name, match.cppType);
152
- lines.push(` printk("${spec}", ${arg});`);
153
- } else {
154
- lines.push(` printk("{${escapeString(part.value)}}"); // variable not in scope`);
155
- }
156
- }
157
- }
158
-
159
- lines.push(` printk("\\n");`);
160
- lines.push(` // === END LOGPOINT ===`);
161
-
162
- return lines;
163
- }
164
-
165
- /**
166
- * Escape a string for use inside printk("..."). Same rules as the ESP-IDF
167
- * generator: backslash, double-quote, newline, carriage return.
168
- */
169
- function escapeString(s: string): string {
170
- return s
171
- .replace(/\\/g, '\\\\')
172
- .replace(/"/g, '\\"')
173
- .replace(/\n/g, '\\n')
174
- .replace(/\r/g, '\\r');
175
- }
176
-
177
- /**
178
- * Pick a printk format specifier + argument expression for a debug variable.
179
- *
180
- * The debug preprocessor has no TypeChecker, so `cppType` is a coarse category
181
- * inferred from AST shape. For `unknown` we cast to `double` and use `%g` so
182
- * the generated printk always compiles for any numeric/bool variable. printk
183
- * supports the standard printf format specifiers.
184
- *
185
- * Returns `{ spec, arg }` where `spec` is the `%`-specifier substring to embed
186
- * in the format string and `arg` is the C++ argument expression.
187
- */
188
- function formatSpecFor(
189
- varName: string,
190
- cppType: CapturedVariable['cppType'],
191
- ): { spec: string; arg: string } {
192
- switch (cppType) {
193
- case 'bool':
194
- case 'int':
195
- return { spec: '%d', arg: varName };
196
- case 'long':
197
- return { spec: '%ld', arg: varName };
198
- case 'float':
199
- return { spec: '%g', arg: varName };
200
- case 'string':
201
- return { spec: '%s', arg: varName };
202
- case 'unknown':
203
- default:
204
- // Cast to double so printk compiles regardless of the real C++ type.
205
- return { spec: '%g', arg: `static_cast<double>(${varName})` };
206
- }
207
- }