In migrating a project from SDK 14.2.0 to SDK 15.3.0, I've found that one of my drivers has broken. It's a driver for a GPS module and uses SPI. My test for the driver is getting stuck in a loop waiting for a single shot timer to run. The same test passed on SDK 14.2.0. I can step through the code and see a recurring timer running, with the timeout handler being called. But at the same point I'm running two single shot timers and neither of those are getting their timeout handlers called ever.
Here's the relevant bit of the GPS driver:
Here's the test:
This test doesn't reach the FAIL line, it just gets stuck in the loop forever, when it should exit that after 2s. Further, the while loop in the GPS driver also gets stuck because m_gps.spi_transfer_timed_out is never true because the timer with ID m_gps_spi_timeout_timer_id never gets its handler called.
My app_config.h is attached and the sdk_config.h is the one from <SDK>/config/nrf52832/config. My timer prescaler is 31. The delay for the single shot timer in the driver is: