openaliro
Aliro reader: UWB/CCC core and ESP32-S3/C5/C6 port
Loading...
Searching...
No Matches
uwb_min.c File Reference

— DW3110 bring-up driver (implementation). More...

#include "uwb_min.h"
#include <errno.h>
#include <string.h>
#include "woz_port.h"
#include "woz_log.h"
#include <deca_device_api.h>
#include <deca_probe_interface.h>
#include <dw3000_hw.h>
#include <dw3000_spi.h>
#include "uwb_seam.h"
Include dependency graph for uwb_min.c:

Functions

static int uwb_probe_ensure (void)
 Bring the SDK up to "probed" state on first call; no-op afterwards.
 
static int uwb_radio_ensure_init (void)
 Bring the SDK up to "radio configured + LEDs on" state.
 
int uwb_min_radio_init (void)
 Ensure the DW3110 is fully initialised (probe + initialise + configure + LEDs).
 
uint32_t uwb_min_radio_generation (void)
 Count of fresh radio inits; changes whenever the base config was re-applied.
 
int uwb_min_hw_reset (void)
 Pulse the DW3110 RST line low to force a hardware reset.
 
int uwb_min_read_chipid (uint32_t *id_out)
 Read the DW3000-family DEV_ID register over SPI.
 
int uwb_min_selftest (struct uwb_selftest_result *out)
 Radio self-test: configure, TX one frame, then arm RX.
 
int uwb_min_twr_prep (void)
 Configure the radio for the raw SS-TWR loopback (SP3-ND, ch9, code11); no STS.
 
void uwb_min_twr_exchange (struct uwb_twr_frame *f)
 Run one POLL/RESP exchange; the STS must already be programmed.
 
int uwb_min_twr_poll (uint32_t n, uint32_t period_ms, struct uwb_twr_result *out)
 Raw static-STS SS-TWR initiator burst (bench probe).
 

Variables

static const dwt_config_t g_uwb_cfg
 Default radio configuration (channel 9, 6.8 Mbps).
 
static const dwt_txconfig_t g_uwb_txcfg
 Default TX power / pulse-shaper config (channel 9).
 
static const uint8_t g_partner_sts_key [16]
 Shared static STS test vector for the two-device raw loopback.
 

Detailed Description

— DW3110 bring-up driver (implementation).

Function Documentation

◆ uwb_probe_ensure()

static int uwb_probe_ensure ( void  )
static

Bring the SDK up to "probed" state on first call; no-op afterwards.

The whole reset -> wake -> probe sequence is retried: transient SPI/power glitches (bench-seen as a burst of dwt_probe -1 during post-commissioning Wi-Fi traffic, self-recovering on the caller's next attempt) clear on a fresh chip reset, so retrying here turns a failed session start into a slightly slower one.