mirror of
https://github.com/liquidraver/ZephCore.git
synced 2026-10-15 06:19:55 +00:00
An nRF UARTE receiver starts at boot and never stops. The GPS UART suspend in standby/off was limited to boards with GPS power control, because suspending into a module that is still streaming NMEA could hang the main thread waiting for RXTO (RAK3401, 1.16.6). Patch 0010 bounds that wait (4 ms, then the peripheral is disabled and the events cleared) and resume re-arms from a clean state, so gps_power.cpp drops the requirement: gat562_30s, muziworks_r1neo, rak3401_1watt, rak4631 and xiao_nrf54l15 now release the UART too. Stress-tested with a temporary hook on the T1000-E, GPS streaming NMEA at 115200: 900 suspend/resume cycles at random points of the stream, no failure, slowest suspend 640 us (the bounded fallback never ran), NMEA callbacks back at 1 Hz after every round. xiao_nrf54l15 gets an optional gnss-nmea-generic on uart21 (D6/D7, 9600), as the RAK4631 and Heltec V3 have: a user-fitted GPS works on the release image, and with nothing fitted the port, enabled upstream and unused until now, no longer keeps its receiver armed. On the bench unit: boots, GPS acquiring, 10 x gps off/on and two reboots clean. Builds: rak4631 repeater and companion, rak3401_1watt, gat562_30s, muziworks_r1neo, xiao_nrf54l15 repeater and companion.