Jason
|
397969348e
|
Fix all 8 firmware bugs with regression tests
Bugs fixed in adf4382a_manager.c:
- Bug #1: Move initialized=true before sync setup, propagate sync failure
- Bug #3: Implement TriggerTimedSync with sw_sync pulse (was no-op)
- Bug #5: Replace GPIO-only placeholder with TIM3 PWM for DELADJ
- Bug #7: Correct GPIOG pin definitions to match CubeMX (pins 6-15)
Bugs fixed in main.cpp:
- Bug #2: Remove pre-reset ad9523_setup() call (keep only post-reset)
- Bug #4: Move init error check before phase shift calls
- Bug #6: Fix timer variable (last_check -> last_check1) in temp block
- Bug #8: Uncomment uart_print/uart_println debug helpers
Test harness updates:
- All 8 tests rewritten to assert correct post-fix behavior
- Added TIM PWM mock (SPY_TIM_PWM_START/STOP/SET_COMPARE)
- Added mock_adf4382_set_timed_sync_retval for failure injection
- Updated shims and Makefile for new test dependencies
- All 8 tests pass: make clean && make test -> 8/8 passed
|
2026-03-19 09:42:59 +02:00 |
|
Jason
|
28a66889ad
|
Add MCU firmware test harness with 8 bug-confirming tests
Complete test infrastructure for the observe-before-fix methodology:
- stm32_hal_mock: HAL stub types + spy/recording ring buffer (512 entries)
- ad_driver_mock: ADF4382/AD9523 mock drivers with configurable returns
- 9 shim headers redirecting real #includes to mock types
- Makefile with individual (test_bug1..8) and aggregate (test) targets
All 8 tests pass, confirming:
#1 Timed sync init ordering (SetupTimedSync before initialized=true)
#2 AD9523 double setup (first call before reset release)
#3 TriggerTimedSync no-op (prints messages, no HW action)
#4 Phase shift before init error check
#5 SetFinePhaseShift GPIO-only placeholder (no PWM)
#6 Timer variable collision (last_check vs last_check1)
#7 GPIO pin mapping conflict (manager.h vs CubeMX main.h)
#8 uart_print/uart_println commented out
|
2026-03-19 09:28:19 +02:00 |
|