• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

dangernoodle-io / breadboard / 27110657624
100%

Build:
DEFAULT BRANCH: main
Ran 08 Jun 2026 01:15AM UTC
Jobs 1
Files 29
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

08 Jun 2026 01:14AM UTC coverage: 100.0%. Remained the same
27110657624

push

github

web-flow
feat(bb_fan): add opt-in autofan PID controller (BB_FAN_AUTOFAN) (#365)

* feat(bb_fan): add opt-in autofan PID controller (BB_FAN_AUTOFAN)

Ports TaipanMiner's proven autofan controller into bb_fan so breadboard
owns POST /api/fan when BB_FAN_AUTOFAN=y, eliminating the route
collision where both BB and TM registered POST /api/fan.

- vendor bb_fan_pid (MIT, ported from TM's pid.c): Kp=5 Ki=0.1 Kd=2,
  P_ON_E, REVERSE, 5000 ms sample time, injectable clock for host tests
- bb_fan_poll() runs PID after reading die temp when autofan is enabled:
  dual EMA (alpha=0.2) for die and aux (VR) temps, input-src selected by
  max((ema−target)/target) ratio (faithful to TA-141/TA-352)
- fail-safe: temp read fails → 100% duty; autofan disabled → no duty change
- aux (VR) temp fed by consumer via bb_fan_set_aux_temp(); bb_fan does
  not depend on bb_power
- on ESP-IDF, call bb_fan_autofan_inject_clock(h) after handle creation
  to inject esp_timer-backed ms clock (bb_fan_clock_espidf.c)
- bb_fan_routes POST: autofan on → parses autofan config fields
  (autofan, die_target_c, vr_target_c, manual_pct, min_pct) → 204;
  autofan off → raw duty_pct as before
- bb_fan_routes GET: autofan on → emits die_ema_c, vr_ema_c,
  pid_input_c, pid_input_src (same field names as TM's /api/fan)
- Kconfig BB_FAN_AUTOFAN default n (opt-in)
- 23 host tests covering PID direction, 5s gate, EMA, input-src
  selection, output clamps, fail-safe, enable/disable toggle, telemetry
- smoke-esp32 (autofan off) + smoke-esp32-autofan (autofan on) both link
- all 1518 host tests pass

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor(bb_fan): vr wire label, autofan persist callback, BB-owned manual mode

- [A] GET /api/fan: map internal pid_input_src "aux" → wire name "vr" in the
  route emit layer; update schema enum to ["die","vr"]; internal C API unchanged
- [B] bb_fan_routes_set_autofan_persist_cb(): consumer registers NVS-persist hook
  invoked only from the POST /api/fan... (continued)

1604 of 1604 branches covered (100.0%)

Branch coverage included in aggregate %.

98 of 98 new or added lines in 1 file covered. (100.0%)

2702 of 2702 relevant lines covered (100.0%)

961.87 hits per line

Jobs
ID Job ID Ran Files Coverage
1 27110657624.1 08 Jun 2026 01:15AM UTC 29
100.0
GitHub Action Run
Source Files on build 27110657624
  • Tree
  • List 29
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #27110657624
  • f459d114 on github
  • Prev Build on main (#27108484776)
  • Next Build on main (#27112146526)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc