woz_seam_stubs.c
This port's half of modules/woz_uwb/src/driver/uwb_seam.h.
Overview
This port's half of modules/woz_uwb/src/driver/uwb_seam.h. The Nordic build routes DW3000 RX events through uwb_rxdiag.c's woz_uwb_set_callbacks -> shim_rxok, which (after the MAC's own prepoll_rx_rearm arms the SP3 POLL window) calls ccc_shim_rx_try_prepoll to decrypt+warm the NEXT block's STS. That bootstrap warm is what flips g_warm_valid true so the POLL window ever gets armed and Response_0 sent. This port omits uwb_rxdiag.c wholesale (its heartbeat needs Zephyr k_work, which the compat layer does not provide), so without this shim the callbacks reach the radio unmodified, ccc_shim_rx_try_prepoll is never called, g_warm_valid stays false, and the responder receives Pre-POLLs but never replies. Re-create only the essential chain here (no k_work, no diagnostics), plus the PHY-config seam, which this port has nothing to add to.
API
Fint32_t woz_uwb_configure_phy(dwt_config_t *config)
PHY configuration: nothing to log without uwb_rxdiag.c, so pass it straight on.
Fstatic void shim_rxok(const dwt_cb_data_t *d)
RX-good shim: feed the empirical STS-index tracker, run the MAC's arm (prepoll_rx_rearm), then — unless this RX is the awaited POLL — decode the Pre-POLL to warm the next block's STS. Mirrors uwb_rxdiag.c:shim_rxok minus the tallies/cadence/event logging.
Fstatic void shim_rxto(const dwt_cb_data_t *d)
RX-timeout callback shim; forwards the event to g_chain_rxto if a handler is registered, otherwise no-op.
Fstatic void shim_rxerr(const dwt_cb_data_t *d)
RX-error callback shim; forwards the event to g_chain_rxerr if a handler is registered, otherwise no-op.
Fstatic void shim_txdone(const dwt_cb_data_t *d)
TX-done callback shim; forwards the event to g_chain_txdone if a handler is registered, otherwise no-op.
Fvoid woz_uwb_set_callbacks(dwt_callbacks_s *callbacks)
Intercept the callback registration and insert the RX-good bootstrap shim.