14#ifndef ESP_SDR_ESP_SDR_RING_H_
15#define ESP_SDR_ESP_SDR_RING_H_
33#define ESP_SDR_RING_RATE_HZ 16000000U
36#define ESP_SDR_RING_DECIM_MIN 64U
37#define ESP_SDR_RING_DECIM_MAX 1024U
40#define ESP_SDR_RING_FULL_SCALE 16384
50#define ESP_SDR_RING_DECIM_BOX4 4U
51#define ESP_SDR_RING_BOX4_FULL_SCALE 8192
65#define ESP_SDR_RING_DECIM_RAW 1U
66#define ESP_SDR_RING_RAW_FULL_SCALE 32768
67#define ESP_SDR_RING_RAW_HISTORY 64U
122#define ESP_SDR_RING_UNIT_DEFAULT 12288U
124#define ESP_SDR_RING_UNIT_MIN 1024U
146 uint32_t
units, abandoned, lost_pairs;
200 uint32_t pairs, samples;
205 uint32_t cycles_x100, stage_x100[4];
280 void *user, uint32_t from, uint32_t words);
296 uint32_t fired, cancelled, timeouts, skipped;
309 uint32_t window_max_cyc;
ESP-SDR: raw I/Q receive and transmit on the ESP32-S3 Wi-Fi radio.
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).
bool esp_sdr_ring_burst_busy(void)
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,...
void esp_sdr_ring_burst_cancel(void)
Drop the armed burst; the capture goes on or restarts.
void(* esp_sdr_ring_gen_t)(void *user, uint32_t *dst, uint64_t index, uint32_t n)
Definition esp_sdr_ring.h:256
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).
int esp_sdr_ring_run(const struct esp_sdr_ring_cfg *cfg, struct esp_sdr_ring_stats *stats)
Stream until esp_sdr_ring_stop() or a ring failure.
void(* esp_sdr_ring_sink_t)(void *user, const int16_t *i, const int16_t *q, size_t n, uint64_t index)
Definition esp_sdr_ring.h:75
esp_sdr_ring_status
Definition esp_sdr_ring.h:127
void esp_sdr_ring_stop(void)
Ask a running esp_sdr_ring_run() to return; safe from any thread or ISR.
int esp_sdr_ring_bench(const struct esp_sdr_ring_cfg *cfg, unsigned int units, struct esp_sdr_ring_bench_result *res)
Time the filter on synthetic data in bank 0, the engine idle.
void esp_sdr_ring_wmac_release(bool was_enabled)
Undo esp_sdr_ring_wmac_hold() on the same CPU.
bool esp_sdr_ring_wmac_hold(void)
Hold off the Wi-Fi MAC interrupt on the calling CPU.
bool esp_sdr_ring_now(uint64_t *pair)
The running ring's position, from any CPU.
bool esp_sdr_ring_active(void)
@ ESP_SDR_RING_LENGTH
Definition esp_sdr_ring.h:138
@ ESP_SDR_RING_START
Definition esp_sdr_ring.h:134
@ ESP_SDR_RING_AGE
Definition esp_sdr_ring.h:132
@ ESP_SDR_RING_END
Definition esp_sdr_ring.h:136
@ ESP_SDR_RING_LATE
Definition esp_sdr_ring.h:130
Definition esp_sdr_ring.h:199
Definition esp_sdr_ring.h:295
uint32_t gen_left_max
Definition esp_sdr_ring.h:311
int32_t fire_last_pairs
Definition esp_sdr_ring.h:302
uint32_t arm_late
Definition esp_sdr_ring.h:300
uint32_t late
Definition esp_sdr_ring.h:298
int32_t stop_last_pairs
Definition esp_sdr_ring.h:304
int32_t ready_max_pairs
Definition esp_sdr_ring.h:308
uint32_t dac_last_cyc
Definition esp_sdr_ring.h:306
Definition esp_sdr_ring.h:78
unsigned int decim
Definition esp_sdr_ring.h:83
bool spare_bank
Definition esp_sdr_ring.h:112
bool shift_fs4
Definition esp_sdr_ring.h:88
uint32_t unit_pairs
Definition esp_sdr_ring.h:106
bool spare_bank_app
Definition esp_sdr_ring.h:118
bool subsample
Definition esp_sdr_ring.h:98
Definition esp_sdr_ring.h:141
uint64_t pairs
Definition esp_sdr_ring.h:143
uint32_t gain_refreshed
Definition esp_sdr_ring.h:152
uint32_t irq_lines
Definition esp_sdr_ring.h:158
uint32_t units
Definition esp_sdr_ring.h:146
uint32_t late_max
Definition esp_sdr_ring.h:148
uint32_t slice_max
Definition esp_sdr_ring.h:150
uint32_t irq_windows
Definition esp_sdr_ring.h:156
uint32_t stalls
Definition esp_sdr_ring.h:154