48#define CAR_PIECE_FLOOR 23
52#define CAR_FRAME_MAX 1280
53#define CAR_POLL_BYTES 14
54#define CAR_KEYDOWN_MAX 16
76 size_t (*tx_read)(
void *ctx, uint8_t *buf,
size_t max);
77 size_t (*tx_pending)(
void *ctx);
79 void (*deliver)(
void *ctx,
const uint8_t *buf,
size_t len);
81 void (*tx_confirmed)(
void *ctx,
size_t len);
85 void (*pattern)(
void *ctx,
int kind);
88 void (*end)(
void *ctx);
91 void (*trace)(
void *ctx,
const char *line);
106 int K, len, next, need;
283 float snr_db, uint32_t age_ms);
329void car_rung_geometry(
int lv,
bool floor_patterns,
int *bytes_per_frame,
int *frames,
330 uint64_t *round_air_ms, uint64_t *overhead_ms);
static void bind_rx(car_t *c, int lv)
Definition carousel.c:523
int mode
Definition carousel.c:2330
int bw_hz
Definition carousel.c:2369
static bool peer_keyed(car_t *c, uint64_t now)
Definition carousel.c:484
static void keydown(car_t *c, car_frame_t *fr, int n)
Definition carousel.c:503
void car_start_receiver(car_t *c, uint64_t now)
Definition carousel.c:2432
void car_set_nav_loss(double loss)
Definition carousel.c:86
bool car_slot_reserved(const car_t *m, uint64_t start, uint64_t end)
Definition carousel.c:183
void car_init(car_t *c, const car_io_t *io, int rx_level, int tx_level)
Definition carousel.c:2349
bool car_is_master(const car_t *c)
Definition carousel.c:2627
void car_set_max_level(car_t *c, int lv)
Definition carousel.c:2383
void car_log_ctl(car_t *c, uint64_t end, uint32_t tg)
Definition carousel.c:2636
@ CAR_T_M
Definition carousel.h:100
@ CAR_T_F
Definition carousel.h:100
@ CAR_T_S
Definition carousel.h:100
@ CAR_T_W
Definition carousel.h:100
@ CAR_NTIMERS
Definition carousel.h:100
#define CAR_PIECE
Definition carousel.h:42
int car_max_level_for_bw(int bw_hz)
Definition carousel.c:2375
void car_on_tx_done(car_t *c, uint64_t now)
Definition carousel.c:2504
#define CAR_MAX_K
Definition carousel.h:49
void car_on_time(car_t *c, uint64_t now)
Definition carousel.c:2588
int car_ui_tx_mode(const car_t *c)
Definition carousel.c:2408
void car_rung_geometry(int lv, bool floor_patterns, int *bytes_per_frame, int *frames, uint64_t *round_air_ms, uint64_t *overhead_ms)
Definition carousel.c:930
void car_on_app_data(car_t *c, uint64_t now)
Definition carousel.c:2576
#define CAR_NLEVELS
Definition carousel.h:51
int car_piece(const car_t *c)
Definition carousel.c:2406
size_t car_tx_inflight(const car_t *c)
Definition carousel.c:171
int car_level_mode(int level)
Definition carousel.c:161
#define CAR_WIN
Definition carousel.h:50
uint64_t car_drain_budget_ms(const car_t *c)
Definition carousel.c:2618
bool car_peer_ctl_deaf(const car_t *c)
Definition carousel.c:2450
#define CAR_MLOG
Definition carousel.h:55
int car_overruns(const car_t *c)
Definition carousel.c:179
bool car_expect_pattern(const car_t *c)
Definition carousel.c:2571
int car_start_level(float snr_db)
Definition carousel.c:2341
int car_piece_for_start(int caller_start_level)
Definition carousel.c:2401
int car_ui_peer_mode(const car_t *c)
Definition carousel.c:2410
void car_seed_ctl_deaf(car_t *c, bool mine, bool peers)
Definition carousel.c:2452
void car_start_sender(car_t *c, uint64_t now)
Definition carousel.c:2418
void car_on_frame(car_t *c, uint64_t now, const uint8_t *bytes, size_t len, int mode, bool control, float snr_db, uint32_t age_ms)
Definition carousel.c:2460
bool car_wants_nav(const car_t *c)
Definition carousel.c:87
const char * car_failed(const car_t *c)
Definition carousel.c:178
bool car_is_idle(const car_t *c)
Definition carousel.c:166
void car_on_pattern(car_t *c, uint64_t now, int kind)
Definition carousel.c:2546
@ CAR_PATTERN_BREAK
Definition carousel.h:98
@ CAR_PATTERN_ACK
Definition carousel.h:98
void car_set_nav_below_db(float db)
Definition carousel.c:85
#define CAR_KEYDOWN_MAX
Definition carousel.h:54
void car_set_nav_ms(uint32_t ms)
Definition carousel.c:82
#define CAR_FRAME_MAX
Definition carousel.h:52
uint64_t car_next_deadline(const car_t *c)
Definition carousel.c:476
void car_request_end(car_t *c)
Definition carousel.c:2644
uint64_t car_free_at(const car_t *c, uint64_t now, uint64_t len)
Definition carousel.c:2629
int car_ui_rx_mode(const car_t *c)
Definition carousel.c:2409
#define RS_MAX_PIECES
Definition rs_erasure.h:20
int mode
Definition carousel.h:59
uint32_t gap_ms
Definition carousel.h:62
size_t len
Definition carousel.h:60
void * ctx
Definition carousel.h:92
uint32_t block_key
Definition carousel.h:95
Definition carousel.h:124
uint8_t k
Definition carousel.h:129
uint64_t e
Definition carousel.h:125
uint8_t mk
Definition carousel.h:131
bool pat
Definition carousel.h:132
uint32_t d
Definition carousel.h:126
uint32_t tg
Definition carousel.h:128
uint32_t p
Definition carousel.h:127
uint8_t done
Definition carousel.h:130
Definition carousel.h:115
bool done
Definition carousel.h:116
uint8_t id
Definition carousel.h:117
int delivered
Definition carousel.h:119
int have
Definition carousel.h:118
Definition carousel.h:104
int sent
Definition carousel.h:109
int round_sent
Definition carousel.h:110
int app_len
Definition carousel.h:107
bool stopped
Definition carousel.h:111
int K
Definition carousel.h:106
uint8_t id
Definition carousel.h:105
int resend
Definition carousel.h:108
Definition carousel.h:135
int floor_silent
Definition carousel.h:216
int rx_level
Definition carousel.h:139
uint64_t eh
Definition carousel.h:185
int poll_level
Definition carousel.h:234
double tx_loss
Definition carousel.h:212
bool peer_hi_known
Definition carousel.h:246
bool m_heard
Definition carousel.h:164
uint8_t last_mk
Definition carousel.h:174
bool end_req
Definition carousel.h:192
uint64_t peer_data_ms
Definition carousel.h:201
bool peer_ctl_deaf
Definition carousel.h:145
bool traffic
Definition carousel.h:177
uint8_t tx_poll_id
Definition carousel.h:209
int round_frames
Definition carousel.h:235
int reqs
Definition carousel.h:178
uint32_t d
Definition carousel.h:189
int req_lv
Definition carousel.h:193
int m_kind
Definition carousel.h:158
bool floor_waiting
Definition carousel.h:213
bool peer_unopened
Definition carousel.h:240
bool tx_pat_anchor
Definition carousel.h:211
bool master
Definition carousel.h:137
uint64_t phase_start
Definition carousel.h:154
int kind
Definition carousel.h:184
uint8_t i
Definition carousel.h:187
int round_lv
Definition carousel.h:236
int tx_slot
Definition carousel.h:210
bool on
Definition carousel.h:182
int stale_rounds
Definition carousel.h:244
int done_in_round
Definition carousel.h:249
uint8_t polled_base
Definition carousel.h:242
uint8_t next_blk_id
Definition carousel.h:207
bool idle
Definition carousel.h:138
uint32_t idle_backoff_ms
Definition carousel.h:176
uint8_t m_k
Definition carousel.h:161
bool waited
Definition carousel.h:190
double loss_est
Definition carousel.h:231
int s_prev_lv
Definition carousel.h:198
uint8_t m_id
Definition carousel.h:159
float snr_ema
Definition carousel.h:146
uint8_t rbase
Definition carousel.h:248
uint8_t mk
Definition carousel.h:155
uint32_t polls
Definition carousel.h:230
const char * failed
Definition carousel.h:245
bool peer_level_known
Definition carousel.h:219
uint32_t deliver_seq
Definition carousel.h:170
double polled_loss
Definition carousel.h:232
bool round_fresh
Definition carousel.h:243
bool tx_busy
Definition carousel.h:150
bool idle_poll
Definition carousel.h:175
int ok_lv
Definition carousel.h:200
int nsb
Definition carousel.h:206
bool fell_back
Definition carousel.h:202
int snr_level
Definition carousel.h:140
int overruns
Definition carousel.h:168
bool rx_late
Definition carousel.h:197
int max_level
Definition carousel.h:141
uint8_t req_mk
Definition carousel.h:194
bool sent_round
Definition carousel.h:188
bool rx_tail
Definition carousel.h:237
bool pat_waiting
Definition carousel.h:214
uint64_t s_tx_end
Definition carousel.h:196
int phase
Definition carousel.h:153
bool rx_break
Definition carousel.h:250
bool snr_valid
Definition carousel.h:147
uint8_t floor_blk
Definition carousel.h:217
uint64_t plan_not_before
Definition carousel.h:172
int rx_data_lv
Definition carousel.h:220
int nmlog
Definition carousel.h:157
int plan
Definition carousel.h:163
uint8_t poll_id
Definition carousel.h:233
int piece
Definition carousel.h:169
bool offered
Definition carousel.h:166
bool ctl_deaf
Definition carousel.h:143
uint32_t m_d
Definition carousel.h:160
car_io_t io
Definition carousel.h:136
bool peer_has_data
Definition carousel.h:221
uint32_t seq_at_ask
Definition carousel.h:171
uint8_t peer_hi
Definition carousel.h:241
bool s_asked_new
Definition carousel.h:199
uint64_t last_carrier_ms
Definition carousel.h:149
int last_lv
Definition carousel.h:173
uint32_t p
Definition carousel.h:186
uint8_t rx_mk
Definition carousel.h:195
int peer_snr_level
Definition carousel.h:218
bool floor_streaming
Definition carousel.h:252
int m_state
Definition carousel.h:162
int tx_level
Definition carousel.h:208
uint64_t kd_allowed
Definition carousel.h:167
bool status_seen
Definition carousel.h:238
int floor_patterns
Definition carousel.h:251
bool s_answered
Definition carousel.h:165
int silent_polls
Definition carousel.h:239