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
This commit is contained in:
Jason committed 2026-03-19 09:42:59 +02:00
1 parent b93ee04592
commit 397969348e
17 files changed
+640 -572

No files matched your search

@@ -7,6 +7,7 @@
/* Configurable return values */
int mock_adf4382_init_retval = 0;
int mock_adf4382_set_timed_sync_retval = 0;
int mock_ad9523_setup_retval = 0;
/* Internal device stubs (allocated on the heap by mock init) */
@@ -73,7 +74,7 @@ int adf4382_set_en_chan(struct adf4382_dev *dev, uint8_t ch, bool en)
int adf4382_set_timed_sync_setup(struct adf4382_dev *dev, bool sync)
{
spy_push_drv(SPY_ADF4382_SET_TIMED_SYNC, dev, (uint32_t)sync);
return 0;
return mock_adf4382_set_timed_sync_retval;
}
int adf4382_set_ezsync_setup(struct adf4382_dev *dev, bool sync)