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

dangernoodle-io / TaipanMiner / 25204685441
90%

Build:
DEFAULT BRANCH: main
Ran 01 May 2026 06:13AM UTC
Jobs 1
Files 28
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

01 May 2026 06:11AM UTC coverage: 93.468% (-0.4%) from 93.851%
25204685441

push

github

web-flow
feat(fan): autofan PID with temp setpoint, replacing fixed curve (#290)

* feat(fan): autofan PID with temp setpoint, replacing fixed curve

Replace the open-loop temp→duty curve (`emc2101_curve.h`) with a
closed-loop PID controller that drives fan duty toward a configurable
temperature setpoint, matching AxeOS behavior. Vendor a small
host-testable PID (Brett Beauregard's algorithm, MIT) with the time
source abstracted via a function pointer so unit tests inject a mock
clock and the ESP target injects esp_timer.

- new components/asic/{include/pid.h,src/pid.c}: PIDController API,
  modes (AUTOMATIC/MANUAL), proportional-on-error/measurement, output
  clamping, sample-time gating, output-limits-aware integral wind-up
  protection
- taipan_config exposes four NVS-backed knobs: autofan_enabled (default
  true), temp_target_c (default 60, clamped 35..85), manual_fan_pct
  (default 100), min_fan_pct (default 25)
- asic_task fan tick (5s cadence) selects between overheat fail-safe,
  autofan PID, and manual fixed pct; EMA-filters the diode reading
  (alpha=0.2) before feeding the PID; refreshes setpoint and min from
  config each tick so they're live-tunable
- /api/fan GET extends the existing snapshot with autofan/target/manual/
  min; new POST handler accepts form-urlencoded partial updates and
  persists via taipan_config setters
- delete the fixed curve header and its unit tests
- new test/test_host/test_pid.c with convergence, bounds, manual-mode,
  and sample-time gating coverage (467 tests pass, +6)
- gitignore .breadboard symlink (local dev convenience)

Bench-observed on 172.16.1.93 (bitaxe-650): autofan correctly outputs
100% because the diode reading sits ~14°C above the AxeOS-reported
temp under identical config — that residual reading delta is a separate
investigation (NVS temp_offset on AxeOS or hardware unit-to-unit), not
the autofan architecture itself, which now matches AxeOS.

Closes TA-315.

* test: cover autofan setters and remaining PI... (continued)

705 of 840 branches covered (83.93%)

Branch coverage included in aggregate %.

133 of 137 new or added lines in 3 files covered. (97.08%)

1613 of 1640 relevant lines covered (98.35%)

253670.11 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
97.89
-1.79% components/webui/src/routes_json.c
1
90.32
components/asic/src/pid.c
Jobs
ID Job ID Ran Files Coverage
1 25204685441.1 01 May 2026 06:13AM UTC 28
93.47
GitHub Action Run
Source Files on build 25204685441
  • Tree
  • List 28
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #25204685441
  • 05a39016 on github
  • Prev Build on main (#25203059352)
  • Next Build on main (#25204831913)
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