mirror of
https://github.com/MCKero6423/uv-k5-v3-emulator.git
synced 2026-10-02 03:15:36 +00:00
Make the ADC settable, which reaches the battery behaviour
Prompted by a fair criticism: the reports said what runs, not what is actually reproduced. An audit found the ADC was modelled but returned a hardcoded 2200 forever, so gBatteryDisplayLevel, gLowBattery and the warning popup were all unreachable. A peripheral that answers reads is not the same as a peripheral that is reproduced. adc-result is now settable over QOM and clamped to 12 bits. Measured: 2200 gives level 4 and no warning, 1200 gives level 0 and raises gLowBattery, and the level recovers to 4 afterwards. tools/test_battery.py covers it, and deliberately does NOT assert that gLowBattery clears on recovery. helper/battery.c:190-204 only clears it when the level lands exactly on 2; above that it clears gLowBatteryConfirmed and leaves gLowBattery set. So 4 -> 0 -> 4 really does leave the flag raised. The first version of this test called that a failure -- the test was wrong, not the model. The emulator reproduces the firmware, including behaviour that looks like a bug.
This commit is contained in:
1 parent
7ed9f61f71
commit
e46cae2e48
4 files changed
+245
-3
No files matched your search
@@ -88,6 +88,7 @@ keypresses silently stop working. Run the test after touching that code;
|
||||
test_ptt.py PTT keys the radio and releases cleanly
|
||||
test_scan.py a busy band does not stall a scan
|
||||
test_audio_path.py the amplifier turns on when the firmware wants sound
|
||||
test_battery.py battery level and low-battery follow the ADC
|
||||
run_tests.sh runs all of the above, build-checked first
|
||||
test_run_tests.sh that the runner actually notices failures
|
||||
lib_kill_emulator.sh cleanup that only ever kills emulators
|
||||
@@ -146,6 +147,7 @@ that was never compiled. Individual tests still run standalone:
|
||||
python3 tools/test_ptt.py
|
||||
python3 tools/test_scan.py
|
||||
python3 tools/test_audio_path.py
|
||||
python3 tools/test_battery.py
|
||||
|
||||
This matters more than it looks. The keypad can break silently under -O2 without
|
||||
any compiler warning -- see the `volatile` note in [Status](#status) -- so a clean
|
||||
|
||||
Reference in new issue
Block a user