driverge-mcp 0.0.1 → 0.1.0-beta.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.
package/README.md CHANGED
@@ -7,13 +7,17 @@
7
7
  <a href="https://www.npmjs.com/package/driverge-mcp"><img alt="npm" src="https://img.shields.io/npm/v/driverge-mcp"></a>
8
8
  <a href="https://github.com/MehmetTopuz/driverge-mcp/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/MehmetTopuz/driverge-mcp/actions/workflows/ci.yml/badge.svg"></a>
9
9
  <a href="LICENSE"><img alt="license" src="https://img.shields.io/badge/license-MIT-blue"></a>
10
- <img alt="status" src="https://img.shields.io/badge/status-pre--release-orange">
10
+ <img alt="status" src="https://img.shields.io/badge/status-closed%20beta-orange">
11
11
  <img alt="mcp" src="https://img.shields.io/badge/MCP-server-black">
12
12
  </p>
13
13
 
14
- > 🚧 **Early pre-release** — [`driverge-mcp`](https://www.npmjs.com/package/driverge-mcp)
15
- > is on npm, so the `npx driverge-mcp` install below works today. APIs and the
16
- > JSON schema may still change before v0.1.0; expect rough edges.
14
+ > 🧪 **Closed beta** — [`driverge-mcp`](https://www.npmjs.com/package/driverge-mcp)
15
+ > is published to npm under the `beta` dist-tag; install the beta channel with
16
+ > **`npx -y driverge-mcp@beta`**. It is **not yet hardware-verified through the
17
+ > release gate** — generated drivers are reviewed *drafts*, not certified
18
+ > firmware. APIs and the JSON schema may still change before the stable **v0.1.0**.
19
+ > See **[Maturity & status](#maturity--status)**, and **[BETA.md](BETA.md)** if
20
+ > you're testing.
17
21
 
18
22
  ---
19
23
 
@@ -101,14 +105,16 @@ Every target specializes the same portable **[thin-HAL](https://en.wikipedia.org
101
105
  seam — the driver core is identical across platforms; only the seam implementation
102
106
  changes.
103
107
 
104
- | Target | Bus binding | Buses | Language | Status |
108
+ | Target | Bus binding | Buses | Language | Maturity |
105
109
  |---|---|---|---|---|
106
- | **Portable (thin-HAL)** | user-implemented `hal_*` seam | I²C, SPI, UART, CAN | C / C++ | |
107
- | **ESP32** | ESP-IDF (`i2c_master_*`, `spi_master`, `uart`, TWAI) | I²C, SPI, UART, CAN | C / C++ | |
108
- | **STM32** | CubeHAL (`HAL_I2C_*`, `HAL_SPI_*` + GPIO CS, `HAL_UART_*`) | I²C, SPI, UART | C / C++ | |
109
- | **Arduino** | `Wire` / `SPI` | — | C++ | planned |
110
-
111
- STM32 CAN is planned (the bxCAN/FDCAN family split needs its own pass); asking
110
+ | **Portable (thin-HAL)** | user-implemented `hal_*` seam | I²C, SPI, UART, CAN | C / C++ | **Beta** |
111
+ | **ESP32** | ESP-IDF (`i2c_master_*`, `spi_master`, `uart`, TWAI) | I²C, SPI, UART, CAN | C / C++ | **Experimental** |
112
+ | **STM32** | CubeHAL (`HAL_I2C_*`, `HAL_SPI_*` + GPIO CS, `HAL_UART_*`) | I²C, SPI, UART | C / C++ | **Experimental** |
113
+ | **Arduino** | `Wire` / `SPI` | — | C++ | not implemented |
114
+
115
+ "Maturity" here is *codegen* maturity vs. *hardware-verified* maturity see
116
+ [Maturity & status](#maturity--status) for exactly what has and hasn't run on
117
+ silicon. STM32 CAN is planned (the bxCAN/FDCAN family split needs its own pass); asking
112
118
  a target for a bus it doesn't support fails fast with a clear
113
119
  `UnsupportedBusError` rather than emitting a wrong seam. Pass
114
120
  `language: "cpp"` to `generate_driver` for a class-based C++ driver
@@ -141,6 +147,47 @@ explicitly instead of guessing, and the generated skeleton tells the host AI
141
147
  what to complete. The full, always-current matrix lives in the
142
148
  [coverage scorecard](tests/scorecard/scorecard.snap.md).
143
149
 
150
+ ## Maturity & status
151
+
152
+ Driverge is in **closed beta** (`0.1.0-beta.x`, npm `beta` dist-tag). Here is
153
+ exactly what that means — what's proven, what isn't, and how much to trust the
154
+ output.
155
+
156
+ **Proven today (host-level):**
157
+ - The full deterministic test suite is green (440-plus tests) on a clean
158
+ TypeScript build.
159
+ - The **portable** driver is compiled by a real `gcc` gate in CI.
160
+ - The extraction pipeline is regression-tested against **13 real datasheets**,
161
+ and reports its own coverage honestly — **7 fully extracted, 3 partial, 3
162
+ deferred** to the host AI (see the
163
+ [coverage scorecard](tests/scorecard/scorecard.snap.md)).
164
+
165
+ **Not yet proven — this is the beta → v0.1.0 gate:**
166
+ - **On-hardware behavior is not gated.** Only one informal ESP32 bring-up has run
167
+ (MPU-9250, hand-completed), and it surfaced the bus-error and address bugs
168
+ fixed in this release. There is no clean, repeatable hardware pass yet, and
169
+ **STM32 has never run on silicon.**
170
+ - The **native** ESP32/STM32 seams are not yet built by an automated compile gate
171
+ (ESP-IDF / CubeIDE) — only the portable target is.
172
+ - Only one MCP client has been exercised end-to-end.
173
+
174
+ **Per-target maturity:**
175
+
176
+ | Target | Buses with any on-hardware exposure | Maturity |
177
+ |---|---|---|
178
+ | Portable (thin-HAL) | I²C (host-compiled only) | **Beta** — host-tested + gcc-compiled, not on hardware |
179
+ | ESP32 (ESP-IDF) | I²C (one informal bring-up) | **Experimental** — codegen shipped; SPI/UART/CAN never on hardware |
180
+ | STM32 (CubeHAL) | none | **Experimental** — codegen shipped; never on hardware |
181
+ | Arduino · STM32 CAN | — | **Not implemented** |
182
+
183
+ > Treat every generated driver as a **reviewed draft**: check register addresses,
184
+ > the init sequence, and any compensation math against the datasheet before you
185
+ > flash it. Driverge is not safety-certified.
186
+
187
+ **Testing the beta?** [BETA.md](BETA.md) has the identity-register smoke test to
188
+ run and how to send a field report — the MPU-9250 report in
189
+ `raw/DRIVERGE_ISSUES.md` is the template.
190
+
144
191
  ## Concepts behind Driverge
145
192
 
146
193
  Driverge splits driver-writing into two kinds of work: the **mechanical part**
@@ -206,6 +253,14 @@ else:
206
253
  | UART | `hal_uart_write`, `hal_uart_read` |
207
254
  | CAN | `hal_can_transfer` (one call = one frame exchange) |
208
255
 
256
+ The register-access transfer seams (`hal_i2c_*`, `hal_spi_transfer`,
257
+ `hal_can_transfer`) return `int` — **`0` on success, non-zero on a bus error**
258
+ (NACK, timeout) — and `<part>_read_register`/`_write_register` **propagate** that
259
+ status, so a failed transfer surfaces to the caller instead of being silently
260
+ swallowed. (`hal_uart_read` returns the byte count actually read; `hal_delay_ms`
261
+ is `void`.) A native seam (ESP32, STM32) returns its vendor status directly
262
+ (`esp_err_t`/`HAL_OK`-mapped), which is already `0` on success.
263
+
209
264
  The driver core is therefore identical across platforms; a native target
210
265
  (ESP32, STM32) just pre-fills the seam with the vendor calls.
211
266
  `validate_driver` enforces this purity: a driver that calls a vendor peripheral
@@ -259,6 +314,10 @@ Add Driverge to your MCP client (no build step —
259
314
  Other clients (Codex, Gemini CLI, …) take the same `command` + `args` pair in
260
315
  their own MCP config.
261
316
 
317
+ > **Beta testers:** pin the beta channel explicitly with `["-y",
318
+ > "driverge-mcp@beta"]` as the `args`. Plain `driverge-mcp` resolves the npm
319
+ > `latest` tag, which deliberately lags the beta during closed beta.
320
+
262
321
  **No clone, no global install.** The config above tells your MCP client to
263
322
  launch `npx -y driverge-mcp`; npx downloads Driverge from the npm registry on
264
323
  first run, caches it, and starts it automatically each time the client does
@@ -289,6 +348,30 @@ Set it in the MCP config's `env` block, e.g.:
289
348
  Without `out_dir` the generated files are returned in the tool result only —
290
349
  no disk writes, no configuration needed.
291
350
 
351
+ ### Windows & npx notes
352
+
353
+ The config blocks above (writing `.mcp.json` / `claude_desktop_config.json`
354
+ **directly**) are the most reliable way to add Driverge on Windows. A few
355
+ environment-specific snags worth knowing:
356
+
357
+ - **Prefer editing the config file over `claude mcp add … -- npx -y driverge-mcp`.**
358
+ The `-y` after `npx` can be parsed by the `claude` CLI itself
359
+ (`unknown option '-y'`) rather than passed through. Writing the JSON block
360
+ directly sidesteps it. (`-y` still belongs in the `args` array, as shown above —
361
+ it only misbehaves as a bare CLI flag.)
362
+ - **PowerShell 5.1 + `claude mcp add-json`.** Nested double-quotes in the inline
363
+ JSON can get mangled before the CLI sees them (`Invalid configuration: Invalid
364
+ input`). Again, write the `.mcp.json` file directly instead of passing JSON on
365
+ the command line.
366
+ - **Spawning the server yourself?** On Windows, launching `npx.cmd` from Node
367
+ needs `shell: true` (otherwise `spawn EINVAL`) — Node no longer runs `.cmd`
368
+ shims without a shell. MCP clients handle this for you; this only bites custom
369
+ smoke-test scripts.
370
+ - **"Pending approval" in `claude mcp list`.** A project-scope `.mcp.json` may show
371
+ as `⏸ Pending approval` in a separate `claude mcp list` process while the
372
+ `driverge` tools are already callable in your active session — the listing lags
373
+ the running session, it does not mean the server failed to load.
374
+
292
375
  ### Run from source (development)
293
376
 
294
377
  To contribute, or to run the latest unreleased changes:
@@ -329,6 +412,15 @@ Give your MCP client a datasheet and ask it to build a driver. The typical flow:
329
412
 
330
413
  Reusing the same `ref` with a different `target` re-renders with **no re-parse**.
331
414
 
415
+ **Completing a `deferred` datasheet.** When `analyze_datasheet` reports
416
+ `extraction: deferred` (the register/command section was detected but not
417
+ auto-extracted — common for split product-spec/register-map documents), the host
418
+ AI reconstructs the map from the `driverge://datasheet/<ref>` resource and
419
+ **persists it back** with `validate_datasheet({ "ref": "…", "json": { … } })` —
420
+ passing **both** `ref` and the completed `json` overwrites the cached datasheet
421
+ under that `ref`. The next `generate_driver({ "ref": "…" })` then renders the real
422
+ registers instead of a TODO stub. This closes the loop without re-analyzing.
423
+
332
424
  ### Worked example — BME280 → portable driver
333
425
 
334
426
  > "Analyze the datasheet at `C:/ds/bme280.pdf` with driverge, then generate a
@@ -371,7 +463,7 @@ datasheet prose, and `validate_driver` checks the result.
371
463
  | Tool | `analyze_datasheet` | PDF → validated JSON, cached under a `ref` |
372
464
  | Tool | `generate_driver` | `ref` + `target` → driver skeleton + `fill_in_brief` |
373
465
  | Tool | `validate_driver` | static-lint a completed driver against its `ref` |
374
- | Tool | `validate_datasheet` | re-run the L5 validator over a `ref` or JSON |
466
+ | Tool | `validate_datasheet` | re-run the L5 validator over a `ref` or JSON; passing **both** `ref` + `json` persists the completed datasheet under that `ref` |
375
467
  | Tool | `ping` | health check — confirms the server is running |
376
468
  | Resource | `driverge://datasheet/<ref>` | full parsed JSON for an analyzed datasheet |
377
469
  | Resource | `driverge://schema` | the frozen datasheet JSON-Schema contract |
@@ -400,7 +492,8 @@ datasheet prose, and `validate_driver` checks the result.
400
492
 
401
493
  - **v0.x** — one reference sensor (BME280), portable thin-HAL core, MCP surface,
402
494
  multiple clients. ✅
403
- - **v0.y** — native targets: ESP32 ✅, STM32 ✅, Arduino (next);
495
+ - **v0.y** — native codegen: ESP32 ✅, STM32 *(on-hardware verification is the
496
+ beta → v0.1.0 gate — see [Maturity & status](#maturity--status))*, Arduino (next);
404
497
  multi-manufacturer extraction ✅ (12 vendors tested — see
405
498
  [Verified parts](#verified-parts)); multi-bus seam families (I²C, SPI, UART,
406
499
  CAN) ✅; C or C++ output ✅. *(current)*
@@ -66,20 +66,20 @@ function halImplI2c(name, prefix, language) {
66
66
  ` return i2c_master_bus_add_device(bus, &cfg, &s_${name}_dev);`,
67
67
  "}",
68
68
  "",
69
- "void hal_i2c_write(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len) {",
69
+ "int hal_i2c_write(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len) {",
70
70
  " uint8_t buf[33];",
71
71
  " (void)addr; /* the device handle already encodes the bus address */",
72
72
  " if ((size_t)len + 1u > sizeof buf) {",
73
- " return;",
73
+ " return ESP_ERR_INVALID_SIZE;",
74
74
  " }",
75
75
  " buf[0] = reg;",
76
76
  " memcpy(&buf[1], data, len);",
77
- ` i2c_master_transmit(s_${name}_dev, buf, (size_t)len + 1u, ${prefix}_I2C_TIMEOUT_MS);`,
77
+ ` return i2c_master_transmit(s_${name}_dev, buf, (size_t)len + 1u, ${prefix}_I2C_TIMEOUT_MS);`,
78
78
  "}",
79
79
  "",
80
- "void hal_i2c_read(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len) {",
80
+ "int hal_i2c_read(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len) {",
81
81
  " (void)addr;",
82
- ` i2c_master_transmit_receive(s_${name}_dev, &reg, 1, data, len, ${prefix}_I2C_TIMEOUT_MS);`,
82
+ ` return i2c_master_transmit_receive(s_${name}_dev, &reg, 1, data, len, ${prefix}_I2C_TIMEOUT_MS);`,
83
83
  "}",
84
84
  "",
85
85
  "void hal_delay_ms(uint32_t ms) {",
@@ -123,14 +123,14 @@ function halImplSpi(name, prefix, language) {
123
123
  ` return spi_bus_add_device(host, &cfg, &s_${name}_dev);`,
124
124
  "}",
125
125
  "",
126
- "void hal_spi_transfer(const uint8_t *tx, uint16_t tx_len, uint8_t *rx, uint16_t rx_len) {",
126
+ "int hal_spi_transfer(const uint8_t *tx, uint16_t tx_len, uint8_t *rx, uint16_t rx_len) {",
127
127
  " spi_transaction_t t;",
128
128
  " memset(&t, 0, sizeof t);",
129
129
  " t.length = 8 * tx_len;",
130
130
  " t.rxlength = 8 * rx_len;",
131
131
  " t.tx_buffer = tx;",
132
132
  " t.rx_buffer = rx;",
133
- ` spi_device_polling_transmit(s_${name}_dev, &t);`,
133
+ ` return spi_device_polling_transmit(s_${name}_dev, &t);`,
134
134
  "}",
135
135
  "",
136
136
  "void hal_delay_ms(uint32_t ms) {",
@@ -1 +1 @@
1
- {"version":3,"file":"esp32.js","sourceRoot":"","sources":["../../src/codegen/esp32.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"esp32.js","sourceRoot":"","sources":["../../src/codegen/esp32.ts"],"names":[],"mappings":"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"}
@@ -34,21 +34,20 @@ function cppBusSeam(busKind, prefix) {
34
34
  return {
35
35
  member: [" uint8_t i2c_addr_;"],
36
36
  initMember: [` i2c_addr_ = ${prefix}_I2C_ADDR;`],
37
- readBody: [" hal_i2c_read(i2c_addr_, reg, &value, 1);", " return 0;"],
38
- writeBody: [" hal_i2c_write(i2c_addr_, reg, &value, 1);", " return 0;"],
37
+ readBody: [" return hal_i2c_read(i2c_addr_, reg, &value, 1);"],
38
+ writeBody: [" return hal_i2c_write(i2c_addr_, reg, &value, 1);"],
39
39
  };
40
40
  }
41
41
  if (busKind === "SPI") {
42
42
  return {
43
43
  member: [],
44
44
  initMember: [],
45
- readBody: [" hal_spi_transfer(&reg, 1, &value, 1);", " return 0;"],
45
+ readBody: [" return hal_spi_transfer(&reg, 1, &value, 1);"],
46
46
  writeBody: [
47
47
  " uint8_t frame[2];",
48
48
  " frame[0] = reg;",
49
49
  " frame[1] = value;",
50
- " hal_spi_transfer(frame, 2, nullptr, 0);",
51
- " return 0;",
50
+ " return hal_spi_transfer(frame, 2, nullptr, 0);",
52
51
  ],
53
52
  };
54
53
  }
@@ -205,8 +204,9 @@ function commandDriverCpp(json, commands, name, prefix) {
205
204
  : can
206
205
  ? BUS_SEAM.CAN.decl
207
206
  : [
208
- "void hal_i2c_write(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len);",
209
- "void hal_i2c_read (uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len);",
207
+ "/* Return 0 on success, non-zero on a bus error (e.g. NACK). */",
208
+ "int hal_i2c_write(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len);",
209
+ "int hal_i2c_read (uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len);",
210
210
  ]), "void hal_delay_ms (uint32_t ms);", "}", "", `class ${className} {`, "public:", " int init();", " int sendCommand(uint16_t command);", " int readData(uint8_t *buffer, uint16_t len);", ...(crc ? [" uint8_t crc8(const uint8_t *data, uint16_t len);"] : []));
211
211
  if (!noAddrBus) {
212
212
  hpp.push("", "private:", " uint8_t i2c_addr_;");
@@ -232,8 +232,7 @@ function commandDriverCpp(json, commands, name, prefix) {
232
232
  " msb = (uint8_t)(command >> 8);",
233
233
  " lsb = (uint8_t)(command & 0xFF);",
234
234
  ...I2C_COMMAND_FRAME_NOTE,
235
- " hal_i2c_write(i2c_addr_, msb, &lsb, 1);",
236
- " return 0;",
235
+ " return hal_i2c_write(i2c_addr_, msb, &lsb, 1);",
237
236
  ]),
238
237
  "}",
239
238
  "",
@@ -1 +1 @@
1
- {"version":3,"file":"portable-cpp.js","sourceRoot":"","sources":["../../src/codegen/portable-cpp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"portable-cpp.js","sourceRoot":"","sources":["../../src/codegen/portable-cpp.ts"],"names":[],"mappings":"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"}
@@ -90,28 +90,30 @@ export function commandSetTodoText(json, name, prefix) {
90
90
  export const BUS_SEAM = {
91
91
  I2C: {
92
92
  decl: [
93
- "void hal_i2c_write(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len);",
94
- "void hal_i2c_read (uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len);",
93
+ "/* Return 0 on success, non-zero on a bus error (e.g. NACK). */",
94
+ "int hal_i2c_write(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len);",
95
+ "int hal_i2c_read (uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len);",
95
96
  ],
96
97
  handleField: " uint8_t i2c_addr;",
97
- readBody: [" hal_i2c_read(dev->i2c_addr, reg, value, 1);"],
98
- writeBody: [" hal_i2c_write(dev->i2c_addr, reg, &value, 1);"],
98
+ readBody: [" return hal_i2c_read(dev->i2c_addr, reg, value, 1);"],
99
+ writeBody: [" return hal_i2c_write(dev->i2c_addr, reg, &value, 1);"],
99
100
  },
100
101
  SPI: {
101
102
  decl: [
102
103
  "/* One call = one CS-framed transaction: CS is asserted, tx_len bytes are",
103
104
  " * clocked out, then rx_len bytes are clocked in, then CS is deasserted.",
104
105
  " * tx/rx may be NULL when their respective length is 0. CS is handled",
105
- " * entirely inside hal_spi_transfer — callers never touch it. */",
106
- "void hal_spi_transfer(const uint8_t *tx, uint16_t tx_len, uint8_t *rx, uint16_t rx_len);",
106
+ " * entirely inside hal_spi_transfer — callers never touch it. Returns 0 on",
107
+ " * success, non-zero on a bus error. */",
108
+ "int hal_spi_transfer(const uint8_t *tx, uint16_t tx_len, uint8_t *rx, uint16_t rx_len);",
107
109
  ],
108
110
  handleField: " uint8_t _reserved; /* platform CS handled in hal_spi_transfer */",
109
- readBody: [" hal_spi_transfer(&reg, 1, value, 1);"],
111
+ readBody: [" return hal_spi_transfer(&reg, 1, value, 1);"],
110
112
  writeBody: [
111
113
  " uint8_t frame[2];",
112
114
  " frame[0] = reg;",
113
115
  " frame[1] = value;",
114
- " hal_spi_transfer(frame, 2, NULL, 0);",
116
+ " return hal_spi_transfer(frame, 2, NULL, 0);",
115
117
  ],
116
118
  },
117
119
  UART: {
@@ -256,16 +258,19 @@ function registerDriver(json, registers, name, prefix) {
256
258
  if (bits.length > 0)
257
259
  header.push("", "/* Bit-field mask/shift accessors. */", ...bits);
258
260
  header.push("", "/* Thin-HAL seam — implement these for your platform (see thin-hal). */", ...seam.decl, "void hal_delay_ms (uint32_t ms);", "", "/* Driver handle. */", `typedef struct {`, seam.handleField, `} ${type};`, "", "/* Public API. */", `int ${name}_init(${type} *dev);`, `int ${name}_read_register(${type} *dev, uint8_t reg, uint8_t *value);`, `int ${name}_write_register(${type} *dev, uint8_t reg, uint8_t value);`, "", '#ifdef __cplusplus', "}", "#endif", `#endif /* ${guard} */`, "");
261
+ // The I2C/SPI seam bodies now END with `return hal_..._transfer/read/write(...)`,
262
+ // propagating the seam's status (0 = success) to the caller — a NACK/bus error
263
+ // is no longer swallowed (A7). So no trailing `return 0` is appended here.
259
264
  const readBody = uart
260
265
  ? uartFramingBody(["dev", "reg", "value"])
261
266
  : can
262
267
  ? canFramingBody(["dev", "reg", "value"])
263
- : [" if (dev == NULL || value == NULL) {", " return -1;", " }", ...seam.readBody, " return 0;"];
268
+ : [" if (dev == NULL || value == NULL) {", " return -1;", " }", ...seam.readBody];
264
269
  const writeBody = uart
265
270
  ? uartFramingBody(["dev", "reg", "value"])
266
271
  : can
267
272
  ? canFramingBody(["dev", "reg", "value"])
268
- : [" if (dev == NULL) {", " return -1;", " }", ...seam.writeBody, " return 0;"];
273
+ : [" if (dev == NULL) {", " return -1;", " }", ...seam.writeBody];
269
274
  const source = [
270
275
  `#include "${name}.h"`,
271
276
  "",
@@ -396,10 +401,7 @@ function commandDriver(json, commands, name, prefix) {
396
401
  ? BUS_SEAM.UART.decl
397
402
  : can
398
403
  ? BUS_SEAM.CAN.decl
399
- : [
400
- "void hal_i2c_write(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len);",
401
- "void hal_i2c_read (uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len);",
402
- ]), "void hal_delay_ms (uint32_t ms);", "", "/* Driver handle. */", "typedef struct {", uart ? BUS_SEAM.UART.handleField : can ? BUS_SEAM.CAN.handleField : " uint8_t i2c_addr;", `} ${type};`, "", "/* Public API. */", `int ${name}_init(${type} *dev);`, `int ${name}_send_command(${type} *dev, uint16_t command);`, `int ${name}_read_data(${type} *dev, uint8_t *buffer, uint16_t len);`, ...(crc ? [`uint8_t ${name}_crc8(const uint8_t *data, uint16_t len);`] : []), "", '#ifdef __cplusplus', "}", "#endif", `#endif /* ${guard} */`, "");
404
+ : BUS_SEAM.I2C.decl), "void hal_delay_ms (uint32_t ms);", "", "/* Driver handle. */", "typedef struct {", uart ? BUS_SEAM.UART.handleField : can ? BUS_SEAM.CAN.handleField : " uint8_t i2c_addr;", `} ${type};`, "", "/* Public API. */", `int ${name}_init(${type} *dev);`, `int ${name}_send_command(${type} *dev, uint16_t command);`, `int ${name}_read_data(${type} *dev, uint8_t *buffer, uint16_t len);`, ...(crc ? [`uint8_t ${name}_crc8(const uint8_t *data, uint16_t len);`] : []), "", '#ifdef __cplusplus', "}", "#endif", `#endif /* ${guard} */`, "");
403
405
  const source = [
404
406
  `#include "${name}.h"`,
405
407
  "",
@@ -426,8 +428,7 @@ function commandDriver(json, commands, name, prefix) {
426
428
  " msb = (uint8_t)(command >> 8);",
427
429
  " lsb = (uint8_t)(command & 0xFF);",
428
430
  ...I2C_COMMAND_FRAME_NOTE,
429
- " hal_i2c_write(dev->i2c_addr, msb, &lsb, 1);",
430
- " return 0;",
431
+ " return hal_i2c_write(dev->i2c_addr, msb, &lsb, 1);",
431
432
  ]),
432
433
  "}",
433
434
  "",
@@ -1 +1 @@
1
- {"version":3,"file":"portable.js","sourceRoot":"","sources":["../../src/codegen/portable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"portable.js","sourceRoot":"","sources":["../../src/codegen/portable.ts"],"names":[],"mappings":"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"}
@@ -57,15 +57,17 @@ function halImplI2c(name, prefix, language) {
57
57
  ` s_${name}_hi2c = hi2c;`,
58
58
  "}",
59
59
  "",
60
- "void hal_i2c_write(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len) {",
60
+ "int hal_i2c_write(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len) {",
61
61
  " /* CubeHAL takes the 8-bit (left-shifted) device address. */",
62
- ` HAL_I2C_Mem_Write(s_${name}_hi2c, (uint16_t)(addr << 1), reg,`,
63
- ` I2C_MEMADD_SIZE_8BIT, data, len, ${prefix}_I2C_TIMEOUT_MS);`,
62
+ ` HAL_StatusTypeDef status = HAL_I2C_Mem_Write(s_${name}_hi2c, (uint16_t)(addr << 1), reg,`,
63
+ ` I2C_MEMADD_SIZE_8BIT, data, len, ${prefix}_I2C_TIMEOUT_MS);`,
64
+ " return (status == HAL_OK) ? 0 : -1;",
64
65
  "}",
65
66
  "",
66
- "void hal_i2c_read(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len) {",
67
- ` HAL_I2C_Mem_Read(s_${name}_hi2c, (uint16_t)(addr << 1), reg,`,
68
- ` I2C_MEMADD_SIZE_8BIT, data, len, ${prefix}_I2C_TIMEOUT_MS);`,
67
+ "int hal_i2c_read(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len) {",
68
+ ` HAL_StatusTypeDef status = HAL_I2C_Mem_Read(s_${name}_hi2c, (uint16_t)(addr << 1), reg,`,
69
+ ` I2C_MEMADD_SIZE_8BIT, data, len, ${prefix}_I2C_TIMEOUT_MS);`,
70
+ " return (status == HAL_OK) ? 0 : -1;",
69
71
  "}",
70
72
  "",
71
73
  "void hal_delay_ms(uint32_t ms) {",
@@ -106,15 +108,17 @@ function halImplSpi(name, prefix, language) {
106
108
  ` s_${name}_cs_pin = cs_pin;`,
107
109
  "}",
108
110
  "",
109
- "void hal_spi_transfer(const uint8_t *tx, uint16_t tx_len, uint8_t *rx, uint16_t rx_len) {",
111
+ "int hal_spi_transfer(const uint8_t *tx, uint16_t tx_len, uint8_t *rx, uint16_t rx_len) {",
112
+ " HAL_StatusTypeDef status = HAL_OK;",
110
113
  ` HAL_GPIO_WritePin(s_${name}_cs_port, s_${name}_cs_pin, GPIO_PIN_RESET);`,
111
114
  " if (tx_len > 0) {",
112
- ` HAL_SPI_Transmit(s_${name}_hspi, (uint8_t *)tx, tx_len, ${prefix}_SPI_TIMEOUT_MS);`,
115
+ ` status = HAL_SPI_Transmit(s_${name}_hspi, (uint8_t *)tx, tx_len, ${prefix}_SPI_TIMEOUT_MS);`,
113
116
  " }",
114
- " if (rx_len > 0) {",
115
- ` HAL_SPI_Receive(s_${name}_hspi, rx, rx_len, ${prefix}_SPI_TIMEOUT_MS);`,
117
+ " if (status == HAL_OK && rx_len > 0) {",
118
+ ` status = HAL_SPI_Receive(s_${name}_hspi, rx, rx_len, ${prefix}_SPI_TIMEOUT_MS);`,
116
119
  " }",
117
120
  ` HAL_GPIO_WritePin(s_${name}_cs_port, s_${name}_cs_pin, GPIO_PIN_SET);`,
121
+ " return (status == HAL_OK) ? 0 : -1;",
118
122
  "}",
119
123
  "",
120
124
  "void hal_delay_ms(uint32_t ms) {",
@@ -1 +1 @@
1
- {"version":3,"file":"stm32.js","sourceRoot":"","sources":["../../src/codegen/stm32.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stm32.js","sourceRoot":"","sources":["../../src/codegen/stm32.ts"],"names":[],"mappings":"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"}