Skip to content

Name the caller's own fix in pod refusals; consistent eFuse rail names - #26

Merged
wardviaene merged 1 commit into
mainfrom
friendlier-refusals
Oct 9, 2026
Merged

wardviaene merged 1 commit into
mainfrom
friendlier-refusals

Conversation

@wardviaene

Copy link
Copy Markdown
Member

What

First-time-user UX for pod refusals and power wording.

SDK (embeddedci): a FirmwareError whose fix the firmware spells as a raw protocol command now names the SDK call:

  • uart_proxy_start: la voltage not set; set the board's I/O voltage first: BenchPod(conn, la_voltage=3.3) (1.8 for a 1.8 V target), the benchpod_la_voltage fixture in conftest.py, or bp.set_la_voltage(3.3)
  • uart_proxy_start: pin conflict: LA4 is in use by gpio; release it with bp.release_gpio(4)
  • other owners: bp.disable_i2c_sensor(), bp.disable_gps(), close the session from bp.open_uart() / bp.open_spi(), wait for the flash; pull conflict bp.set_pull(7, False); gpio-output bp.gpio(4, "output"); bp.fpga_image(0); bp.loop_input().

MCP (embeddedci-mcp): the same refusals name tools, rewritten from firmware_message so the text is the same with any supported SDK:

  • FirmwareError: la: la voltage not set; call set_la_voltage first with the DUT's I/O voltage (1.8 or 3.3)
  • PinConflictError: uart_proxy_start: pin conflict: LA4 is in use by gpio; release it with gpio_release(la=[4])
  • uart_close, disable_i2c_sensor, disable_gps, set_pull(las=[7], enabled=false), gpio_mode(la=[4], mode="output"), fpga_image(image="loop"), loop_input.

Instructions, wiring reference and tool/result descriptions now say "internal 5 V (efuse 1)" and "external (efuse 2)" (tools_surface.json refreshed: descriptions only).

Compatibility

Error classes, attributes (la, function, cmd) and each message's leading words (la voltage not set, pin conflict: LA4 is in use by gpio) are unchanged, so classify_firmware_error and caller matching keep working. firmware_message still holds the pod's original text; hints not in the table pass through unchanged. No public API added or removed.

Hint texts come from benchpod-firmware stm32h563/src/la_pins.c (release_hint, pull and gpio-output checks), command_handler.c, command_handler_dap.c, command_handler_dac.c on origin/main.

Tests

Unit only (no hardware): embeddedci 568 passed / 175 skipped, embeddedci-mcp 145 passed / 12 skipped, embeddedci-openhtf 74 passed, scripts 12 passed.

🤖 Generated with Claude Code

The firmware spells some fixes as raw protocol commands ("set it with la_voltage (mv 1800 or
3300)", "release it with {"cmd":"gpio","la":4,"mode":"off"}"). The SDK now rewrites them into
SDK calls (BenchPod(conn, la_voltage=3.3), the benchpod_la_voltage fixture, bp.set_la_voltage,
bp.release_gpio(4), bp.disable_i2c_sensor(), bp.disable_gps(), closing the UART/SPI session,
bp.set_pull(7, False), ...) and the MCP server into tool names (set_la_voltage,
gpio_release(la=[4]), uart_close, disable_i2c_sensor, disable_gps, set_pull, ...).

Error classes, attributes and the leading words of each message are unchanged;
firmware_message keeps the pod's own text and unknown hints pass through. The MCP rewrites
from firmware_message itself, so it reads the same with any supported SDK release.

MCP instructions, wiring reference and tool/result descriptions now say "internal 5 V
(efuse 1)" and "external (efuse 2)".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@wardviaene
wardviaene merged commit 3a394da into main Oct 9, 2026
20 checks passed
@wardviaene
wardviaene deleted the friendlier-refusals branch October 9, 2026 20:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant