84 uint8_t payload[1280];
267 void (*send_tx_frame)(
int packet_type,
int mode,
268 size_t frame_size,
const uint8_t *frame,
269 int burst_remaining);
274 void (*notify_connected)(
const char *remote_call,
const char *local_call);
279 void (*notify_pending)(
const char *remote_call,
const char *local_call);
282 void (*notify_cancelpending)(void);
286 void (*notify_disconnected)(
bool to_no_client);
289 void (*deliver_rx_data)(
const uint8_t *data,
size_t len);
292 int (*tx_backlog)(void);
295 int (*tx_read)(uint8_t *buf,
size_t len);
298 void (*send_buffer_status)(
int backlog_bytes);
304 bool (*channel_busy)(void);
312 void (*set_crc_seed)(uint16_t seed);
#define CALLSIGN_MAX_SIZE
Definition arq.h:24
arq_event_id_t
Definition arq_fsm.h:41
@ ARQ_EV_TX_STARTED
Definition arq_fsm.h:59
@ ARQ_EV_TIMER_ACK
Definition arq_fsm.h:56
@ ARQ_EV_TX_COMPLETE
Definition arq_fsm.h:60
@ ARQ_EV_TIMER_RETRY
Definition arq_fsm.h:55
@ ARQ_EV_RX_PATTERN
Definition arq_fsm.h:65
@ ARQ_EV_APP_DATA_READY
Definition arq_fsm.h:47
@ ARQ_EV_RX_ACCEPT
Definition arq_fsm.h:51
@ ARQ_EV_APP_DISCONNECT
Definition arq_fsm.h:46
@ ARQ_EV_RX_CALL
Definition arq_fsm.h:50
@ ARQ_EV_RX_DISCONNECT
Definition arq_fsm.h:52
@ ARQ_EV_APP_STOP_LISTEN
Definition arq_fsm.h:44
@ ARQ_EV_RX_CAROUSEL
Definition arq_fsm.h:63
@ ARQ_EV_TIMER_CAROUSEL
Definition arq_fsm.h:64
@ ARQ_EV_APP_CONNECT
Definition arq_fsm.h:45
@ ARQ_EV__COUNT
Definition arq_fsm.h:67
@ ARQ_EV_APP_LISTEN
Definition arq_fsm.h:43
bool arq_fsm_expect_pattern(const arq_session_t *sess, uint64_t now)
Whether a pattern can arrive now (the modem's detector runs only then).
Definition arq_fsm.c:438
void arq_fsm_release(arq_session_t *sess)
Definition arq_fsm.c:110
void arq_fsm_init(arq_session_t *sess)
Initialise a session structure to DISCONNECTED state.
Definition arq_fsm.c:96
const char * arq_conn_state_name(arq_conn_state_t s)
Human-readable name for a connection state (for log output).
Definition arq_fsm.c:34
void arq_fsm_set_callbacks(const arq_fsm_callbacks_t *cbs)
Register FSM action callbacks (call once before first dispatch).
Definition arq_fsm.c:82
arq_conn_state_t
Definition arq_fsm.h:26
@ ARQ_CONN_DISCONNECTED
Definition arq_fsm.h:27
@ ARQ_CONN_LISTENING
Definition arq_fsm.h:28
@ ARQ_CONN_CONNECTED
Definition arq_fsm.h:31
@ ARQ_CONN_ACCEPTING
Definition arq_fsm.h:30
@ ARQ_CONN_CALLING
Definition arq_fsm.h:29
@ ARQ_CONN__COUNT
Definition arq_fsm.h:33
@ ARQ_CONN_DISCONNECTING
Definition arq_fsm.h:32
int arq_fsm_timeout_ms(const arq_session_t *sess, uint64_t now)
Return milliseconds until the next deadline, or INT_MAX if idle.
Definition arq_fsm.c:116
int arq_call_carrier(const arq_session_t *sess)
The carrier the next CALL goes out on: the control mode for the first ARQ_CALL_FAST_SLOTS,...
Definition arq_fsm.c:246
void arq_fsm_dispatch(arq_session_t *sess, const arq_event_t *event)
Dispatch an event through both FSM levels.
Definition arq_fsm.c:1532
const char * arq_event_name(arq_event_id_t ev)
Human-readable name for an event (for log output).
Definition arq_fsm.c:48
void arq_fsm_set_timing(arq_timing_ctx_t *timing)
Register timing context for recording (call once at init).
Definition arq_fsm.c:87
static void send_pattern(car_t *c, int kind)
Definition carousel.c:1459
int mode
Definition carousel.c:2330
ARQ event with all possible payload fields.
Definition arq_fsm.h:77
bool pattern_break
Definition arq_fsm.h:104
uint16_t car_called_crc
Definition arq_fsm.h:95
bool from_control
Definition arq_fsm.h:92
size_t payload_len
Definition arq_fsm.h:86
bool abort
Definition arq_fsm.h:108
uint8_t session_id
Definition arq_fsm.h:82
uint16_t car_nonce
Definition arq_fsm.h:94
uint32_t rx_age_ms
Definition arq_fsm.h:101
int mode
Definition arq_fsm.h:83
int car_level
Definition arq_fsm.h:93
float rx_snr
Definition arq_fsm.h:99
arq_event_id_t id
Definition arq_fsm.h:78
car_t * car
Definition arq_fsm.h:233
uint64_t nav_busy_until_ms
Definition arq_fsm.h:168
bool accept_fallback
Definition arq_fsm.h:202
bool ctl_floor_at_stop
Definition arq_fsm.h:245
uint64_t last_rx_sync_ms
Definition arq_fsm.h:164
bool car_active
Definition arq_fsm.h:234
uint8_t disc_defer_count
Definition arq_fsm.h:169
uint8_t session_id
Definition arq_fsm.h:132
bool pending_connect
Definition arq_fsm.h:221
bool pending_disconnect_notify
Definition arq_fsm.h:216
uint64_t last_rx_ms
Definition arq_fsm.h:228
uint16_t car_nonce
Definition arq_fsm.h:239
int call_rx_mode
Definition arq_fsm.h:135
bool car_session
Definition arq_fsm.h:235
bool host_released
Definition arq_fsm.h:174
bool deferred_listen_off
Definition arq_fsm.h:214
bool accept_tx_pending
Definition arq_fsm.h:207
bool tx_active
Definition arq_fsm.h:171
uint16_t crc_seed
Definition arq_fsm.h:238
int tx_retries_left
Definition arq_fsm.h:153
int call_carrier
Definition arq_fsm.h:134
int local_snr_x10
Definition arq_fsm.h:185
int car_tx_level
Definition arq_fsm.h:242
bool listen_enabled
Definition arq_fsm.h:196
uint64_t car_last_rx_ms
Definition arq_fsm.h:247
uint64_t last_tx_end_ms
Definition arq_fsm.h:173
uint64_t state_enter_ms
Definition arq_fsm.h:158
bool disconnect_sent
Definition arq_fsm.h:217
int call_sends_done
Definition arq_fsm.h:133
int peer_tx_mode
Definition arq_fsm.h:148
int car_rx_level
Definition arq_fsm.h:240
int payload_mode
Definition arq_fsm.h:142
uint64_t disconnect_deadline_ms
Definition arq_fsm.h:224
int initial_payload_mode
Definition arq_fsm.h:145
arq_event_id_t deadline_event
Definition arq_fsm.h:251
bool car_ending
Definition arq_fsm.h:236
bool car_ctl_deaf
Definition arq_fsm.h:243
uint64_t rx_frame_busy_until_ms
Definition arq_fsm.h:167
arq_conn_state_t conn_state
Definition arq_fsm.h:129
int control_mode
Definition arq_fsm.h:144
bool pending_disconnect
Definition arq_fsm.h:220
int pending_burst_frames
Definition arq_fsm.h:189
bool car_peer_ctl_deaf
Definition arq_fsm.h:244
uint64_t deadline_ms
Definition arq_fsm.h:250
int tx_inflight_bytes
Definition arq_fsm.h:188
bool pending_disconnect_reply
Definition arq_fsm.h:218
uint64_t car_end_deadline_ms
Definition arq_fsm.h:237
Definition arq_timing.h:20
Definition carousel.h:135