esp-sdr-zephyr
Raw I/Q receive and transmit on the ESP32-S3/C6 Wi-Fi radio, for Zephyr
Loading...
Searching...
No Matches
Bursts inside a run

Data Structures

struct  esp_sdr_ring_burst_stats

Typedefs

typedef void(* esp_sdr_ring_gen_t) (void *user, uint32_t *dst, uint64_t index, uint32_t n)

Functions

uint32_t * esp_sdr_ring_burst_buf (size_t *words)
 The burst bank, the CPUs' to write while no burst is armed and outside its waveform's [from, words) once armed.
int esp_sdr_ring_burst_arm (uint64_t end_pair, uint64_t limit_pair, esp_sdr_ring_gen_t gen, void *user, uint32_t from, uint32_t words)
 Arm a burst (from another CPU than the run's).
bool esp_sdr_ring_burst_fire (uint64_t at_pair)
 Play the armed burst with its first sample at at_pair (at once if that has passed).
void esp_sdr_ring_burst_cancel (void)
 Drop the armed burst; the capture goes on or restarts.
bool esp_sdr_ring_burst_busy (void)

Detailed Description

A run with esp_sdr_ring_cfg::spare_bank can interrupt its capture for one transmitted burst (an 802.15.4 ACK) from bank 2: armed with the pair at which a received frame ends, the run stops the capture at the first unit boundary at or after it, hands the last unit to the sink, turns the front end to TX and waits; fired, it plays the bank once at 40 MS/s from the given pair on; then it turns back to RX and restarts the capture (the output index jumps over the gap, the pair index keeps counting real time). All pairs are on the run's pair index (esp_sdr_ring_now()).

Typedef Documentation

◆ esp_sdr_ring_gen_t

typedef void(* esp_sdr_ring_gen_t) (void *user, uint32_t *dst, uint64_t index, uint32_t n)

Writes DAC words [index, index + n) of the burst to dst (esp_sdr_tx_word()).

Function Documentation

◆ esp_sdr_ring_burst_arm()

int esp_sdr_ring_burst_arm ( uint64_t end_pair,
uint64_t limit_pair,
esp_sdr_ring_gen_t gen,
void * user,
uint32_t from,
uint32_t words )

Arm a burst (from another CPU than the run's).

Parameters
end_pairThe capture runs at least until this pair.
limit_pairWithout a fire by this pair the burst is dropped, and a fire seen later is skipped.
genBuilds words [from, words) of the bank between polls before the stop, and the rest after it; words below from are kept.
userPassed to gen.
fromFirst word gen builds; the caller has written those before it.
wordsLength of the burst in DAC words, ESP_SDR_SAMPLES_MIN to ESP_SDR_SAMPLES_MAX.
Returns
0, -EINVAL, or -EBUSY when no run with a spare bank is active or a burst is armed already.

◆ esp_sdr_ring_burst_busy()

bool esp_sdr_ring_burst_busy ( void )
Returns
Whether a burst is armed or running.

◆ esp_sdr_ring_burst_fire()

bool esp_sdr_ring_burst_fire ( uint64_t at_pair)

Play the armed burst with its first sample at at_pair (at once if that has passed).

Returns
false if no burst was armed (dropped).