@typecad/cuttlefish 1.0.0-alpha.6 → 1.0.0-alpha.8

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 (187) hide show
  1. package/dist/api/config.d.ts +32 -0
  2. package/dist/api/index.d.ts +1 -1
  3. package/dist/api/schema/types.d.ts +15 -0
  4. package/dist/api/shared/async-runtime-static.d.ts +12 -1
  5. package/dist/api/shared/async-runtime-static.js +69 -24
  6. package/dist/api/shared/async-symbol-detector.d.ts +11 -0
  7. package/dist/api/shared/async-symbol-detector.js +140 -0
  8. package/dist/api/shared/async-types.d.ts +24 -0
  9. package/dist/api/shared/coop-scheduler.d.ts +60 -0
  10. package/dist/api/shared/coop-scheduler.js +149 -0
  11. package/dist/api/shared/display-adapter.d.ts +4 -3
  12. package/dist/api/shared/display-adapter.js +15 -118
  13. package/dist/api/shared/display-adapters/sdl.js +38 -31
  14. package/dist/api/shared/display-profile.d.ts +47 -25
  15. package/dist/api/shared/display-profile.js +31 -164
  16. package/dist/api/shared/framework-manifest-registry.d.ts +9 -0
  17. package/dist/api/shared/framework-manifest-registry.js +27 -0
  18. package/dist/api/shared/framework-manifest.d.ts +581 -0
  19. package/dist/api/shared/framework-manifest.js +182 -0
  20. package/dist/api/shared/glcdfont.d.ts +12 -0
  21. package/dist/api/shared/glcdfont.js +124 -0
  22. package/dist/api/shared/graphics-strategy.d.ts +37 -0
  23. package/dist/api/shared/hal-op-ir.d.ts +755 -1
  24. package/dist/api/shared/hal-op-ir.js +129 -1
  25. package/dist/api/shared/index.d.ts +20 -2
  26. package/dist/api/shared/index.js +25 -1
  27. package/dist/api/shared/ir-core.d.ts +4 -0
  28. package/dist/api/shared/ir-declarations.d.ts +6 -0
  29. package/dist/api/shared/native-display-op-resolver.d.ts +10 -0
  30. package/dist/api/shared/native-display-op-resolver.js +64 -0
  31. package/dist/api/shared/platform-strategy.d.ts +113 -2
  32. package/dist/api/shared/polyfill-helper-registry.js +18 -1
  33. package/dist/api/shared/promise-runtime.d.ts +1 -1
  34. package/dist/api/shared/promise-runtime.js +95 -13
  35. package/dist/api/shared/toolchain-types.d.ts +17 -0
  36. package/dist/api/shared/validate-framework-manifest.d.ts +28 -0
  37. package/dist/api/shared/validate-framework-manifest.js +494 -0
  38. package/dist/api/shared/worker-runtime-polyfill.d.ts +22 -0
  39. package/dist/api/shared/worker-runtime-polyfill.js +34 -0
  40. package/dist/api/shared/worker-runtime.d.ts +69 -0
  41. package/dist/api/shared/worker-runtime.js +163 -0
  42. package/dist/cli.js +186 -82
  43. package/dist/config-loader.d.ts +7 -2
  44. package/dist/config-loader.js +23 -3
  45. package/dist/config-schema.d.ts +112 -70
  46. package/dist/config-schema.js +14 -0
  47. package/dist/contract/board-generator.d.ts +17 -0
  48. package/dist/contract/board-generator.js +57 -0
  49. package/dist/contract/contract-parser.d.ts +217 -0
  50. package/dist/contract/contract-parser.js +224 -0
  51. package/dist/contract/index.d.ts +22 -0
  52. package/dist/contract/index.js +68 -0
  53. package/dist/create/board-codegen.js +4 -4
  54. package/dist/create/board-generators.js +4 -5
  55. package/dist/create/board-spec.d.ts +72 -75
  56. package/dist/create/board-spec.js +0 -1
  57. package/dist/create/init-scaffold.d.ts +9 -2
  58. package/dist/create/init-scaffold.js +0 -14
  59. package/dist/create/init-templates.d.ts +2 -0
  60. package/dist/create/init-templates.js +74 -8
  61. package/dist/create/init-wizard.js +31 -7
  62. package/dist/debug/preprocessor.js +178 -39
  63. package/dist/debug/types.d.ts +23 -0
  64. package/dist/diagnostics/mermaid-builder.d.ts +1 -1
  65. package/dist/diagnostics/mermaid-builder.js +34 -24
  66. package/dist/emit/compliance/arxml-writer.d.ts +11 -0
  67. package/dist/emit/compliance/arxml-writer.js +34 -0
  68. package/dist/emit/compliance/compliance-context.d.ts +57 -0
  69. package/dist/emit/compliance/compliance-context.js +113 -0
  70. package/dist/emit/compliance/deviation-ledger.d.ts +27 -0
  71. package/dist/emit/compliance/deviation-ledger.js +47 -0
  72. package/dist/emit/compliance/deviation-writer.d.ts +30 -0
  73. package/dist/emit/compliance/deviation-writer.js +37 -0
  74. package/dist/emit/compliance/index.d.ts +7 -0
  75. package/dist/emit/compliance/index.js +6 -0
  76. package/dist/emit/compliance/rule-engine.d.ts +13 -0
  77. package/dist/emit/compliance/rule-engine.js +101 -0
  78. package/dist/emit/compliance/rules.d.ts +16 -0
  79. package/dist/emit/compliance/rules.js +191 -0
  80. package/dist/emit/compliance/types.d.ts +59 -0
  81. package/dist/emit/compliance/types.js +8 -0
  82. package/dist/emit/cpp-emitter.js +4 -3
  83. package/dist/emit/emitters/class-emitter.js +6 -1
  84. package/dist/emit/emitters/emitter-context.d.ts +28 -1
  85. package/dist/emit/emitters/function-emitter-impl.js +153 -53
  86. package/dist/emit/emitters/line-appender.js +19 -0
  87. package/dist/emit/emitters/line-marker.d.ts +38 -0
  88. package/dist/emit/emitters/line-marker.js +39 -0
  89. package/dist/emit/emitters/output-finalizer.d.ts +6 -0
  90. package/dist/emit/emitters/output-finalizer.js +101 -12
  91. package/dist/emit/emitters/setup.d.ts +17 -0
  92. package/dist/emit/emitters/setup.js +257 -36
  93. package/dist/emit/emitters/top-level-prep.js +8 -0
  94. package/dist/emit/emitters/type-decl-emitter.js +28 -3
  95. package/dist/emit/emitters/ui-emitter.js +33 -9
  96. package/dist/emit/expression-renderer.d.ts +1 -1
  97. package/dist/emit/expression-renderer.js +91 -6
  98. package/dist/emit/route-hal-op.js +18 -5
  99. package/dist/emit/snprintf-helpers.js +15 -4
  100. package/dist/emit/statement-renderer.d.ts +10 -0
  101. package/dist/emit/statement-renderer.js +34 -5
  102. package/dist/emit/utils/async-state-machine.js +221 -125
  103. package/dist/emit/utils/hal-op-cpp-type.d.ts +6 -0
  104. package/dist/emit/utils/hal-op-cpp-type.js +40 -0
  105. package/dist/framework-package.js +2 -0
  106. package/dist/framework-registry.d.ts +17 -0
  107. package/dist/ir/adc-range-validation.js +14 -1
  108. package/dist/ir/build-ir-state.d.ts +1 -0
  109. package/dist/ir/build-ir-state.js +14 -0
  110. package/dist/ir/build-ir.js +9 -5
  111. package/dist/ir/call-graph.js +16 -0
  112. package/dist/ir/expression-to-ir.js +164 -0
  113. package/dist/ir/feature-registry.js +7 -25
  114. package/dist/ir/function-builder.js +22 -0
  115. package/dist/ir/hal/hal-emitter.d.ts +5 -2
  116. package/dist/ir/hal/hal-emitter.js +50 -18
  117. package/dist/ir/hal/hal-parser.d.ts +6 -0
  118. package/dist/ir/hal/hal-parser.js +81 -0
  119. package/dist/ir/hal/hal-plugins.js +723 -1
  120. package/dist/ir/identifier-collector.js +35 -0
  121. package/dist/ir/interrupt-analysis.d.ts +5 -1
  122. package/dist/ir/interrupt-analysis.js +8 -16
  123. package/dist/ir/network-validation.d.ts +4 -0
  124. package/dist/ir/network-validation.js +184 -0
  125. package/dist/ir/ownership-analysis.js +20 -1
  126. package/dist/ir/pin-capability-validation.js +37 -0
  127. package/dist/ir/pin-mode-validation.d.ts +2 -2
  128. package/dist/ir/pin-mode-validation.js +49 -18
  129. package/dist/ir/program-analysis.d.ts +65 -0
  130. package/dist/ir/program-analysis.js +318 -2
  131. package/dist/ir/render-expr.js +11 -0
  132. package/dist/ir/timing-validation.d.ts +6 -1
  133. package/dist/ir/timing-validation.js +60 -13
  134. package/dist/ir/transformers/call-statement.js +105 -0
  135. package/dist/ir/transformers/expressions.js +62 -0
  136. package/dist/ir/transformers/hal-call-resolver.js +21 -0
  137. package/dist/ir/transformers/hal-emit-helpers.js +1 -1
  138. package/dist/ir/transformers/namespace-methods.js +17 -12
  139. package/dist/ir/transformers/ui-reactive.js +2 -2
  140. package/dist/ir/transformers/variables.js +92 -3
  141. package/dist/ir/type-resolution.js +18 -0
  142. package/dist/ir/ui-element-auto-wire.js +7 -5
  143. package/dist/ir/utils/map-statements.d.ts +4 -0
  144. package/dist/ir/utils/map-statements.js +79 -0
  145. package/dist/ir/validation-orchestrator.js +9 -2
  146. package/dist/ir/worker-analysis.d.ts +10 -0
  147. package/dist/ir/worker-analysis.js +261 -0
  148. package/dist/libdef/c-to-decl.d.ts +27 -0
  149. package/dist/libdef/c-to-decl.js +397 -0
  150. package/dist/libdef/component-decls.d.ts +2 -0
  151. package/dist/libdef/component-decls.js +6 -0
  152. package/dist/libdef/component-discovery.d.ts +43 -0
  153. package/dist/libdef/component-discovery.js +83 -0
  154. package/dist/libdef/cpp-to-decl.d.ts +9 -0
  155. package/dist/libdef/cpp-to-decl.js +72 -0
  156. package/dist/libdef/registry.js +5 -2
  157. package/dist/lint-cache.d.ts +59 -0
  158. package/dist/lint-cache.js +257 -0
  159. package/dist/orchestrator/graph-builder.js +14 -9
  160. package/dist/platform/coop-scheduler-runtime.d.ts +19 -0
  161. package/dist/platform/coop-scheduler-runtime.js +41 -0
  162. package/dist/platform/generic-strategy.d.ts +15 -3
  163. package/dist/platform/generic-strategy.js +49 -4
  164. package/dist/safety/safety-bridge.d.ts +11 -0
  165. package/dist/safety/safety-bridge.js +48 -0
  166. package/dist/safety/sidecar-bridge.d.ts +5 -0
  167. package/dist/safety/sidecar-bridge.js +22 -0
  168. package/dist/safety-hook.d.ts +79 -0
  169. package/dist/safety-hook.js +35 -0
  170. package/dist/testing.d.ts +7 -1
  171. package/dist/testing.js +8 -1
  172. package/dist/transpile.d.ts +3 -0
  173. package/dist/transpile.js +175 -41
  174. package/dist/types.d.ts +13 -2
  175. package/dist/ui-hook.d.ts +17 -3
  176. package/dist/utils/cli.js +78 -4
  177. package/dist/utils/fs.d.ts +13 -0
  178. package/dist/utils/fs.js +50 -0
  179. package/package.json +24 -5
  180. package/dist/api/shared/display-adapters/eink-mono.d.ts +0 -2
  181. package/dist/api/shared/display-adapters/eink-mono.js +0 -53
  182. package/dist/api/shared/display-adapters/ssd1309.d.ts +0 -2
  183. package/dist/api/shared/display-adapters/ssd1309.js +0 -136
  184. package/dist/api/shared/display-adapters/st7796.d.ts +0 -2
  185. package/dist/api/shared/display-adapters/st7796.js +0 -132
  186. package/dist/licenses.d.ts +0 -185
  187. package/dist/licenses.js +0 -963
@@ -42,6 +42,77 @@ export interface PwmGetResolutionOp {
42
42
  port?: string;
43
43
  pin: number;
44
44
  }
45
+ export interface RmtTxInitOp {
46
+ operation: "rmt.tx_init";
47
+ port?: string;
48
+ pin: number;
49
+ resolutionHz: number | string;
50
+ bit0Hi: number | string;
51
+ bit0Lo: number | string;
52
+ bit1Hi: number | string;
53
+ bit1Lo: number | string;
54
+ msbFirst?: boolean | string;
55
+ queueDepth?: number | string;
56
+ }
57
+ export interface RmtTxWriteBytesOp {
58
+ operation: "rmt.tx_write_bytes";
59
+ port?: string;
60
+ pin: number;
61
+ /** Pre-rendered C array initializer body, e.g. "1, 2, 3" (positional; bytes arg is array-literal-rendered). */
62
+ bytes: string;
63
+ }
64
+ export interface RmtTxWriteSymbolsOp {
65
+ operation: "rmt.tx_write_symbols";
66
+ port?: string;
67
+ pin: number;
68
+ /** Rendered rmt_symbol_word_t array body, one row per symbol. */
69
+ symbols: string;
70
+ }
71
+ export interface RmtTxWaitDoneOp {
72
+ operation: "rmt.tx_wait_done";
73
+ port?: string;
74
+ pin: number;
75
+ timeoutMs?: number | string;
76
+ }
77
+ export interface RmtTxDeinitOp {
78
+ operation: "rmt.tx_deinit";
79
+ port?: string;
80
+ pin: number;
81
+ }
82
+ export interface RmtRxInitOp {
83
+ operation: "rmt.rx_init";
84
+ port?: string;
85
+ pin: number;
86
+ resolutionHz: number | string;
87
+ }
88
+ export interface RmtRxOnReceivedOp {
89
+ operation: "rmt.rx_on_received";
90
+ port?: string;
91
+ pin: number;
92
+ /** User-declared C function name to call on receive. */
93
+ handler: string;
94
+ }
95
+ export interface RmtRxStartOp {
96
+ operation: "rmt.rx_start";
97
+ port?: string;
98
+ pin: number;
99
+ }
100
+ export interface RmtRxStopOp {
101
+ operation: "rmt.rx_stop";
102
+ port?: string;
103
+ pin: number;
104
+ }
105
+ export interface RmtRxReadOp {
106
+ operation: "rmt.rx_read";
107
+ port?: string;
108
+ pin: number;
109
+ maxCount: number | string;
110
+ }
111
+ export interface RmtRxDeinitOp {
112
+ operation: "rmt.rx_deinit";
113
+ port?: string;
114
+ pin: number;
115
+ }
45
116
  export interface AdcReadOp {
46
117
  operation: "adc.read";
47
118
  port?: string;
@@ -148,6 +219,11 @@ export interface PowerSetCpuFrequencyOp {
148
219
  operation: "power.set_cpu_frequency";
149
220
  mhz: number;
150
221
  }
222
+ export interface PowerDeepSleepPinOp {
223
+ operation: "power.deep_sleep_pin";
224
+ pin: number;
225
+ level: number;
226
+ }
151
227
  export interface I2cBeginOp {
152
228
  operation: "i2c.begin";
153
229
  bus: string;
@@ -384,6 +460,673 @@ export interface SnprintfEmitOp {
384
460
  /** Resolved C++ argument expressions */
385
461
  args: string[];
386
462
  }
463
+ export interface WifiConnectOp {
464
+ operation: "wifi.connect";
465
+ ssid: string;
466
+ password?: string;
467
+ timeoutMs: number | string;
468
+ blocking: boolean;
469
+ }
470
+ export interface WifiConnectStartOp {
471
+ operation: "wifi.connect_start";
472
+ ssid: string;
473
+ password?: string;
474
+ }
475
+ export interface WifiDisconnectOp {
476
+ operation: "wifi.disconnect";
477
+ }
478
+ export interface WifiStatusOp {
479
+ operation: "wifi.status";
480
+ }
481
+ export interface WifiIsConnectedOp {
482
+ operation: "wifi.is_connected";
483
+ }
484
+ export interface WifiLocalIpOp {
485
+ operation: "wifi.local_ip";
486
+ }
487
+ export interface WifiRssiOp {
488
+ operation: "wifi.rssi";
489
+ }
490
+ export interface WifiMacOp {
491
+ operation: "wifi.mac";
492
+ }
493
+ export interface WifiSetHostnameOp {
494
+ operation: "wifi.set_hostname";
495
+ name: string;
496
+ }
497
+ export interface WifiSetStaticIpOp {
498
+ operation: "wifi.set_static_ip";
499
+ ip: string;
500
+ gateway: string;
501
+ subnet: string;
502
+ dns?: string;
503
+ }
504
+ export interface WifiSetAutoReconnectOp {
505
+ operation: "wifi.set_auto_reconnect";
506
+ enabled: boolean | string;
507
+ }
508
+ export interface WifiSetPowerSaveOp {
509
+ operation: "wifi.set_power_save";
510
+ mode: string;
511
+ }
512
+ export interface WifiSetTxPowerOp {
513
+ operation: "wifi.set_tx_power";
514
+ dbm: number | string;
515
+ }
516
+ export interface WifiOnEventOp {
517
+ operation: "wifi.on_event";
518
+ event: "connect" | "disconnect" | string;
519
+ handler: string;
520
+ }
521
+ export interface WifiApStartOp {
522
+ operation: "wifi.ap_start";
523
+ ssid: string;
524
+ password?: string;
525
+ channel?: number | string;
526
+ hidden?: boolean | string;
527
+ maxClients?: number | string;
528
+ }
529
+ export interface WifiApStopOp {
530
+ operation: "wifi.ap_stop";
531
+ }
532
+ export interface WifiApClientCountOp {
533
+ operation: "wifi.ap_client_count";
534
+ }
535
+ export interface WifiApIpOp {
536
+ operation: "wifi.ap_ip";
537
+ }
538
+ export interface WifiApSetChannelOp {
539
+ operation: "wifi.ap_set_channel";
540
+ channel: number | string;
541
+ }
542
+ export interface WifiApSetHiddenOp {
543
+ operation: "wifi.ap_set_hidden";
544
+ hidden: boolean | string;
545
+ }
546
+ export interface WifiApSetMaxClientsOp {
547
+ operation: "wifi.ap_set_max_clients";
548
+ maxClients: number | string;
549
+ }
550
+ export interface WifiScanOp {
551
+ operation: "wifi.scan";
552
+ }
553
+ export interface WifiScanStartOp {
554
+ operation: "wifi.scan_start";
555
+ }
556
+ /** Poll predicate paired with wifi.scan_start — true when scan results are ready. */
557
+ export interface WifiScanDoneOp {
558
+ operation: "wifi.scan_done";
559
+ }
560
+ export interface WifiScanCountOp {
561
+ operation: "wifi.scan_count";
562
+ }
563
+ export interface WifiScanSsidOp {
564
+ operation: "wifi.scan_ssid";
565
+ index: number | string;
566
+ }
567
+ export interface WifiScanRssiOp {
568
+ operation: "wifi.scan_rssi";
569
+ index: number | string;
570
+ }
571
+ export interface WifiScanEncryptionOp {
572
+ operation: "wifi.scan_encryption";
573
+ index: number | string;
574
+ }
575
+ export interface WifiScanChannelOp {
576
+ operation: "wifi.scan_channel";
577
+ index: number | string;
578
+ }
579
+ export interface WifiSaveCredentialsOp {
580
+ operation: "wifi.save_credentials";
581
+ ssid: string;
582
+ password: string;
583
+ }
584
+ export interface WifiConnectSavedOp {
585
+ operation: "wifi.connect_saved";
586
+ timeoutMs: number | string;
587
+ }
588
+ export interface WifiClearCredentialsOp {
589
+ operation: "wifi.clear_credentials";
590
+ }
591
+ export interface WifiWaitConnectedOp {
592
+ operation: "wifi.wait_connected";
593
+ timeoutMs: number | string;
594
+ }
595
+ export interface WifiWaitDisconnectedOp {
596
+ operation: "wifi.wait_disconnected";
597
+ }
598
+ export interface HttpBeginOp {
599
+ operation: "http.begin";
600
+ method: string;
601
+ url: string;
602
+ }
603
+ export interface HttpResetOp {
604
+ operation: "http.reset";
605
+ }
606
+ export interface HttpSetHeaderOp {
607
+ operation: "http.set_header";
608
+ name: string;
609
+ value: string;
610
+ }
611
+ export interface HttpSetTimeoutOp {
612
+ operation: "http.set_timeout";
613
+ ms: number | string;
614
+ }
615
+ export interface HttpSetMaxBodyOp {
616
+ operation: "http.set_max_body";
617
+ bytes: number | string;
618
+ }
619
+ export interface HttpSetBodyOp {
620
+ operation: "http.set_body";
621
+ data: string;
622
+ json?: boolean;
623
+ }
624
+ export interface HttpSetInsecureOp {
625
+ operation: "http.set_insecure";
626
+ }
627
+ export interface HttpSetCaCertOp {
628
+ operation: "http.set_ca_cert";
629
+ pem: string;
630
+ }
631
+ export interface HttpSendOp {
632
+ operation: "http.send";
633
+ blocking: boolean;
634
+ }
635
+ export interface HttpSendStartOp {
636
+ operation: "http.send_start";
637
+ }
638
+ /** Poll predicate paired with http.send_start — true when the response is in. */
639
+ export interface HttpDoneOp {
640
+ operation: "http.done";
641
+ }
642
+ /** Submit `fnRef(argRef)` to worker slot `handleId`; returns immediately. */
643
+ export interface WorkerSubmitOp {
644
+ operation: "worker.submit";
645
+ /** Fixed worker slot index (0..poolSize-1). */
646
+ handleId: number;
647
+ /** C++ symbol of the function to run: `void fn(void* arg)`. */
648
+ fnRef: string;
649
+ /** Optional argument expression (passed through verbatim). */
650
+ argRef?: string;
651
+ }
652
+ /** Poll predicate paired with worker.submit — true once the worker finished. */
653
+ export interface WorkerDoneOp {
654
+ operation: "worker.done";
655
+ /** Worker slot index, matching the worker.submit it polls. */
656
+ handleId: number;
657
+ }
658
+ export interface HttpStatusOp {
659
+ operation: "http.status";
660
+ }
661
+ export interface HttpOkOp {
662
+ operation: "http.ok";
663
+ }
664
+ export interface HttpBodyOp {
665
+ operation: "http.body";
666
+ }
667
+ export interface HttpContentLengthOp {
668
+ operation: "http.content_length";
669
+ }
670
+ export interface HttpResponseHeaderOp {
671
+ operation: "http.response_header";
672
+ name: string;
673
+ }
674
+ export interface BleServerBeginOp {
675
+ operation: "ble.server_begin";
676
+ name: string;
677
+ }
678
+ export interface BleAdvertiseStartOp {
679
+ operation: "ble.advertise_start";
680
+ }
681
+ export interface BleAdvertiseStopOp {
682
+ operation: "ble.advertise_stop";
683
+ }
684
+ export interface BleAddServiceOp {
685
+ operation: "ble.add_service";
686
+ uuid: string;
687
+ }
688
+ export interface BleAddCharOp {
689
+ operation: "ble.add_char";
690
+ index: number | string;
691
+ uuid: string;
692
+ type: string;
693
+ perms: number | string;
694
+ svcIndex?: number | string;
695
+ }
696
+ export interface BleOnReadOp {
697
+ operation: "ble.on_read";
698
+ index: number | string;
699
+ handler: string;
700
+ }
701
+ export interface BleOnWriteOp {
702
+ operation: "ble.on_write";
703
+ index: number | string;
704
+ handler: string;
705
+ }
706
+ export interface BleOnConnectOp {
707
+ operation: "ble.on_connect";
708
+ handler: string;
709
+ }
710
+ export interface BleOnDisconnectOp {
711
+ operation: "ble.on_disconnect";
712
+ handler: string;
713
+ }
714
+ export interface BleNotifyOp {
715
+ operation: "ble.notify";
716
+ index: number | string;
717
+ value: number | string;
718
+ }
719
+ export interface BleIsConnectedOp {
720
+ operation: "ble.is_connected";
721
+ }
722
+ export interface BleClientCountOp {
723
+ operation: "ble.client_count";
724
+ }
725
+ export interface BleSetNameOp {
726
+ operation: "ble.set_name";
727
+ name: string;
728
+ }
729
+ export interface BleUntilConnectedOp {
730
+ operation: "ble.until_connected";
731
+ timeoutMs: number | string;
732
+ blocking: boolean;
733
+ }
734
+ export interface BleUntilConnectedStartOp {
735
+ operation: "ble.until_connected_start";
736
+ }
737
+ export interface BleSetTxPowerOp {
738
+ operation: "ble.set_tx_power";
739
+ dbm: number | string;
740
+ }
741
+ export interface BleStatusOp {
742
+ operation: "ble.status";
743
+ }
744
+ export interface PreferencesBeginOp {
745
+ operation: "preferences.begin";
746
+ namespace: string;
747
+ readOnly: boolean;
748
+ }
749
+ export interface PreferencesEndOp {
750
+ operation: "preferences.end";
751
+ }
752
+ export interface PreferencesClearOp {
753
+ operation: "preferences.clear";
754
+ }
755
+ export interface PreferencesRemoveOp {
756
+ operation: "preferences.remove";
757
+ key: string;
758
+ }
759
+ export interface PreferencesPutIntOp {
760
+ operation: "preferences.put_int";
761
+ key: string;
762
+ value: number | string;
763
+ }
764
+ export interface PreferencesGetIntOp {
765
+ operation: "preferences.get_int";
766
+ key: string;
767
+ defaultValue: number | string;
768
+ }
769
+ export interface PreferencesPutUIntOp {
770
+ operation: "preferences.put_uint";
771
+ key: string;
772
+ value: number | string;
773
+ }
774
+ export interface PreferencesGetUIntOp {
775
+ operation: "preferences.get_uint";
776
+ key: string;
777
+ defaultValue: number | string;
778
+ }
779
+ export interface PreferencesPutBoolOp {
780
+ operation: "preferences.put_bool";
781
+ key: string;
782
+ value: boolean;
783
+ }
784
+ export interface PreferencesGetBoolOp {
785
+ operation: "preferences.get_bool";
786
+ key: string;
787
+ defaultValue: boolean;
788
+ }
789
+ export interface PreferencesPutFloatOp {
790
+ operation: "preferences.put_float";
791
+ key: string;
792
+ value: number | string;
793
+ }
794
+ export interface PreferencesGetFloatOp {
795
+ operation: "preferences.get_float";
796
+ key: string;
797
+ defaultValue: number | string;
798
+ }
799
+ export interface PreferencesPutStringOp {
800
+ operation: "preferences.put_string";
801
+ key: string;
802
+ value: string;
803
+ }
804
+ export interface PreferencesGetStringOp {
805
+ operation: "preferences.get_string";
806
+ key: string;
807
+ defaultValue: string;
808
+ }
809
+ export interface RandomIntOp {
810
+ operation: "random.int";
811
+ }
812
+ export interface RandomRangeOp {
813
+ operation: "random.range";
814
+ /** Inclusive lower bound — numeric or runtime expression string */
815
+ min: number | string;
816
+ /** Inclusive upper bound — numeric or runtime expression string */
817
+ max: number | string;
818
+ }
819
+ export interface RandomSeedOp {
820
+ operation: "random.seed";
821
+ /** Seed value — numeric or runtime expression string */
822
+ seed: number | string;
823
+ }
824
+ export interface FsBeginOp {
825
+ operation: "fs.begin";
826
+ }
827
+ export interface FsReadTextOp {
828
+ operation: "fs.read_text";
829
+ /** C string expression for the path */
830
+ path: string;
831
+ }
832
+ export interface FsWriteTextOp {
833
+ operation: "fs.write_text";
834
+ /** C string expression for the path */
835
+ path: string;
836
+ /** C string expression for the content */
837
+ content: string;
838
+ }
839
+ export interface FsExistsOp {
840
+ operation: "fs.exists";
841
+ /** C string expression for the path */
842
+ path: string;
843
+ }
844
+ export interface FsRemoveOp {
845
+ operation: "fs.remove";
846
+ /** C string expression for the path */
847
+ path: string;
848
+ }
849
+ export interface MdnsStartOp {
850
+ operation: "mdns.start";
851
+ /** C string expression for the host name */
852
+ hostname: string;
853
+ }
854
+ export interface MdnsSetHostnameOp {
855
+ operation: "mdns.set_hostname";
856
+ /** C string expression for the host name */
857
+ name: string;
858
+ }
859
+ export interface MdnsAddServiceOp {
860
+ operation: "mdns.add_service";
861
+ /** C string expression for the service instance name */
862
+ instance: string;
863
+ /** C string expression for the protocol ("_tcp" / "_udp") */
864
+ proto: string;
865
+ /** Port number — numeric or runtime expression string */
866
+ port: number | string;
867
+ }
868
+ export interface MdnsAnnounceOp {
869
+ operation: "mdns.announce";
870
+ }
871
+ export interface MdnsStopOp {
872
+ operation: "mdns.stop";
873
+ }
874
+ export interface MqttConnectOp {
875
+ operation: "mqtt.connect";
876
+ /** C string expression for the broker URI ("mqtt://..." / "mqtts://...") */
877
+ brokerUri: string;
878
+ /** C string expression for the client id */
879
+ clientId: string;
880
+ }
881
+ export interface MqttOnMessageOp {
882
+ operation: "mqtt.on_message";
883
+ /** Resolved C++ callback function name (topic, payload) */
884
+ handler: string;
885
+ }
886
+ export interface MqttSubscribeOp {
887
+ operation: "mqtt.subscribe";
888
+ /** C string expression for the topic filter */
889
+ topic: string;
890
+ }
891
+ export interface MqttPublishOp {
892
+ operation: "mqtt.publish";
893
+ /** C string expression for the topic */
894
+ topic: string;
895
+ /** C string expression for the payload */
896
+ data: string;
897
+ }
898
+ export interface MqttConnectedOp {
899
+ operation: "mqtt.connected";
900
+ }
901
+ export interface MqttDisconnectOp {
902
+ operation: "mqtt.disconnect";
903
+ }
904
+ export interface OtaFromUrlOp {
905
+ operation: "ota.from_url";
906
+ /** C string expression for the HTTPS firmware URL */
907
+ url: string;
908
+ }
909
+ export interface OtaBeginOp {
910
+ operation: "ota.begin";
911
+ }
912
+ export interface OtaWriteOp {
913
+ operation: "ota.write";
914
+ /** C expression for the chunk data (buffer/pointer) */
915
+ chunk: string;
916
+ }
917
+ export interface OtaApplyOp {
918
+ operation: "ota.apply";
919
+ }
920
+ export interface TempReadOp {
921
+ operation: "temp.read";
922
+ }
923
+ export interface HwtimerSetFrequencyOp {
924
+ operation: "hwtimer.set_frequency";
925
+ /** Timer instance index */
926
+ instance: number | string;
927
+ /** Frequency in Hz */
928
+ hz: number | string;
929
+ }
930
+ export interface HwtimerOnOverflowOp {
931
+ operation: "hwtimer.on_overflow";
932
+ /** Timer instance index */
933
+ instance: number | string;
934
+ /** Resolved C++ callback function name */
935
+ handler: string;
936
+ }
937
+ export interface HwtimerStartOp {
938
+ operation: "hwtimer.start";
939
+ /** Timer instance index */
940
+ instance: number | string;
941
+ }
942
+ export interface HwtimerStopOp {
943
+ operation: "hwtimer.stop";
944
+ /** Timer instance index */
945
+ instance: number | string;
946
+ }
947
+ export interface CapacitiveReadOp {
948
+ operation: "capacitive.read";
949
+ port?: string;
950
+ /** Touch-capable GPIO pin number */
951
+ pin: number;
952
+ }
953
+ export interface I2sInitOp {
954
+ operation: "i2s.init";
955
+ /** Sample rate in Hz */
956
+ sampleRate: number | string;
957
+ /** Number of channels (1 = mono, 2 = stereo) */
958
+ channels?: number | string;
959
+ /** Bits per sample (8, 16, 24, 32) */
960
+ bitsPerSample?: number | string;
961
+ }
962
+ export interface I2sWriteOp {
963
+ operation: "i2s.write";
964
+ /** C expression for the sample buffer */
965
+ data: string;
966
+ /** Number of bytes to write */
967
+ length: number | string;
968
+ }
969
+ export interface I2sReadOp {
970
+ operation: "i2s.read";
971
+ /** Buffer variable name */
972
+ buffer: string;
973
+ /** Number of bytes to read */
974
+ length: number | string;
975
+ }
976
+ export interface TwaiInitOp {
977
+ operation: "twai.init";
978
+ /** Baud rate in bits per second */
979
+ baudrate: number | string;
980
+ /** TX GPIO pin number */
981
+ txPin: number;
982
+ /** RX GPIO pin number */
983
+ rxPin: number;
984
+ }
985
+ export interface TwaiSendOp {
986
+ operation: "twai.send";
987
+ /** CAN identifier */
988
+ id: number | string;
989
+ /** C expression for the payload bytes */
990
+ data: string;
991
+ /** Number of payload bytes (0-8) */
992
+ length: number | string;
993
+ }
994
+ export interface TwaiReceiveOp {
995
+ operation: "twai.receive";
996
+ /** Buffer variable name */
997
+ buffer: string;
998
+ }
999
+ export interface UsbInitOp {
1000
+ operation: "usb.init";
1001
+ /** Device descriptor name or C expression (framework-specific) */
1002
+ descriptor?: string;
1003
+ }
1004
+ export interface UsbWriteOp {
1005
+ operation: "usb.write";
1006
+ /** Endpoint index (0 for control/default) */
1007
+ endpoint: number | string;
1008
+ /** C expression for the data buffer */
1009
+ data: string;
1010
+ /** Number of bytes */
1011
+ length: number | string;
1012
+ }
1013
+ export interface UsbReadOp {
1014
+ operation: "usb.read";
1015
+ /** Endpoint index */
1016
+ endpoint: number | string;
1017
+ /** Buffer variable name */
1018
+ buffer: string;
1019
+ /** Max bytes to read */
1020
+ length: number | string;
1021
+ }
1022
+ export interface EthInitOp {
1023
+ operation: "eth.init";
1024
+ /** PHY address (0-31) */
1025
+ phyAddress: number | string;
1026
+ /** MDC GPIO pin */
1027
+ mdcPin: number;
1028
+ /** MDIO GPIO pin */
1029
+ mdioPin: number;
1030
+ }
1031
+ export interface EthStartOp {
1032
+ operation: "eth.start";
1033
+ }
1034
+ export interface EthIsLinkedOp {
1035
+ operation: "eth.is_linked";
1036
+ }
1037
+ export interface EspnowInitOp {
1038
+ operation: "espnow.init";
1039
+ }
1040
+ export interface EspnowAddPeerOp {
1041
+ operation: "espnow.add_peer";
1042
+ /** Peer MAC address as a C expression (e.g. an array initializer) */
1043
+ mac: string;
1044
+ }
1045
+ export interface EspnowSendOp {
1046
+ operation: "espnow.send";
1047
+ /** Peer MAC address C expression, or NULL for broadcast */
1048
+ mac: string;
1049
+ /** C expression for the payload */
1050
+ data: string;
1051
+ /** Number of bytes */
1052
+ length: number | string;
1053
+ }
1054
+ export interface EspnowOnReceiveOp {
1055
+ operation: "espnow.on_receive";
1056
+ /** Resolved C++ callback function name */
1057
+ handler: string;
1058
+ }
1059
+ export interface CryptoAesEncryptOp {
1060
+ operation: "crypto.aes_encrypt";
1061
+ /** C expression for the key buffer */
1062
+ key: string;
1063
+ /** C expression for the plaintext buffer */
1064
+ input: string;
1065
+ /** Output buffer variable name */
1066
+ output: string;
1067
+ /** Number of bytes (must be a multiple of 16) */
1068
+ length: number | string;
1069
+ }
1070
+ export interface CryptoSha256Op {
1071
+ operation: "crypto.sha256";
1072
+ /** C expression for the input buffer */
1073
+ input: string;
1074
+ /** Number of bytes */
1075
+ length: number | string;
1076
+ /** Output buffer variable name (32 bytes) */
1077
+ output: string;
1078
+ }
1079
+ export interface CryptoHmacOp {
1080
+ operation: "crypto.hmac";
1081
+ /** Key C expression */
1082
+ key: string;
1083
+ /** Message C expression */
1084
+ message: string;
1085
+ /** Message length in bytes */
1086
+ length: number | string;
1087
+ /** Output buffer variable name */
1088
+ output: string;
1089
+ }
1090
+ export interface PcntInitOp {
1091
+ operation: "pcnt.init";
1092
+ /** PCNT unit index */
1093
+ unit: number | string;
1094
+ /** Pulse input GPIO pin */
1095
+ pulsePin: number;
1096
+ /** Optional control/filter GPIO pin */
1097
+ ctrlPin?: number;
1098
+ }
1099
+ export interface PcntCountOp {
1100
+ operation: "pcnt.count";
1101
+ /** PCNT unit index */
1102
+ unit: number | string;
1103
+ }
1104
+ export interface PcntClearOp {
1105
+ operation: "pcnt.clear";
1106
+ /** PCNT unit index */
1107
+ unit: number | string;
1108
+ }
1109
+ export interface McpwmInitOp {
1110
+ operation: "mcpwm.init";
1111
+ /** MCPWM unit index */
1112
+ unit: number | string;
1113
+ /** PWM frequency in Hz */
1114
+ frequency: number | string;
1115
+ }
1116
+ export interface McpwmSetDutyOp {
1117
+ operation: "mcpwm.set_duty";
1118
+ /** MCPWM unit index */
1119
+ unit: number | string;
1120
+ /** Operator/timer index */
1121
+ operator: number | string;
1122
+ /** Duty cycle percentage (0.0 - 100.0) */
1123
+ duty: number | string;
1124
+ }
1125
+ export interface McpwmStartOp {
1126
+ operation: "mcpwm.start";
1127
+ /** MCPWM unit index */
1128
+ unit: number | string;
1129
+ }
387
1130
  export interface RawCppOp {
388
1131
  operation: "raw";
389
1132
  /** Raw C++ code string (framework-agnostic, use sparingly) */
@@ -394,9 +1137,20 @@ export interface RawCppOp {
394
1137
  * operations. Each node carries a semantic `operation` tag and typed
395
1138
  * arguments. Framework strategies translate these into concrete C++.
396
1139
  */
397
- 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 | SpiReadBufferOp | UartBeginOp | UartEndOp | UartPrintOp | UartPrintlnOp | UartPrintfOp | UartWriteOp | UartReadOp | UartPeekOp | UartAvailableOp | UartFlushOp | PulseInOp | PulseInLongOp | ShiftOutOp | ShiftInOp | BoardResolveOp | WdtEnableOp | WdtResetOp | WdtDisableOp | SnprintfEmitOp | RawCppOp | DisplayHALOp;
1140
+ 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;
398
1141
  /**
399
1142
  * Helper type: extracts the operation string from a HALOpIR variant.
400
1143
  * Useful for type-safe switch statements in framework strategies.
401
1144
  */
402
1145
  export type HALOperationKind = HALOpIR["operation"];
1146
+ /**
1147
+ * Runtime registry of every HAL operation discriminator, parallel to
1148
+ * {@link DISPLAY_OPERATION_KINDS}. Lets tests and the manifest validator
1149
+ * enumerate HAL op kinds without parsing types (which are erased at runtime).
1150
+ * Keep in sync with {@link HALOpIR} above.
1151
+ *
1152
+ * Note: `display.*` ops are NOT listed here — they live in
1153
+ * {@link DISPLAY_OPERATION_KINDS} in `display-op-ir.ts`. The manifest
1154
+ * validator imports both and unions them when probing display ops.
1155
+ */
1156
+ 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"];