|
| const char * | arq_conn_state_name (arq_conn_state_t s) |
| | Human-readable name for a connection state (for log output).
|
| |
| const char * | arq_event_name (arq_event_id_t ev) |
| | Human-readable name for an event (for log output).
|
| |
| static uint16_t | car_seed (const arq_session_t *sess, bool is_caller) |
| |
| static void | car_set_seed (arq_session_t *sess, uint16_t seed) |
| |
| static void | car_connect_callee (arq_session_t *sess, const arq_event_t *ev) |
| |
| void | arq_fsm_set_callbacks (const arq_fsm_callbacks_t *cbs) |
| | Register FSM action callbacks (call once before first dispatch).
|
| |
| void | arq_fsm_set_timing (arq_timing_ctx_t *timing) |
| | Register timing context for recording (call once at init).
|
| |
| void | arq_fsm_init (arq_session_t *sess) |
| | Initialise a session structure to DISCONNECTED state.
|
| |
| void | arq_fsm_release (arq_session_t *sess) |
| |
| int | arq_fsm_timeout_ms (const arq_session_t *sess, uint64_t now) |
| | Return milliseconds until the next deadline, or INT_MAX if idle.
|
| |
| static void | car_stop (arq_session_t *sess) |
| |
| static bool | fsm_connected_carousel (arq_session_t *sess, const arq_event_t *ev) |
| |
| static void | car_begin_disconnect (arq_session_t *sess, uint64_t now) |
| |
| static void | sess_enter (arq_session_t *sess, arq_conn_state_t new_state, uint64_t deadline_ms, arq_event_id_t deadline_event) |
| |
| static void | send_frame (int ptype, int mode, size_t len, const uint8_t *frame, int burst_remaining) |
| |
| static uint64_t | deadline_from_s (float seconds) |
| |
| static uint64_t | retry_deadline_from_s (const arq_session_t *sess, float seconds) |
| |
| static int | session_tx_backlog (const arq_session_t *sess) |
| |
| static int | session_tx_read (arq_session_t *sess, uint8_t *buf, size_t len) |
| |
| 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, then MFSK and the control mode alternately.
|
| |
| static int | accept_level (const arq_session_t *sess) |
| |
| static void | send_call_accept (arq_session_t *sess, bool is_accept) |
| |
| static int | session_ctl_mode (const arq_session_t *sess) |
| |
| static void | send_disconnect_frame (arq_session_t *sess) |
| |
| static bool | peer_is_transmitting (const arq_session_t *sess) |
| |
| static void | enter_idle_after_call (arq_session_t *sess) |
| |
| static void | notify_session_ended (arq_session_t *sess) |
| |
| static void | send_disconnect_reply (arq_session_t *sess) |
| |
| 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).
|
| |
| static void | car_io_keydown (void *ctx, const car_frame_t *fr, int n) |
| |
| static void | car_io_bind_rx (void *ctx, int mode) |
| |
| static void | car_io_pattern (void *ctx, int kind) |
| |
| static bool | car_io_peer_keyed (void *ctx) |
| |
| static size_t | car_io_tx_read (void *ctx, uint8_t *buf, size_t max) |
| |
| static size_t | car_io_tx_pending (void *ctx) |
| |
| static void | car_io_deliver (void *ctx, const uint8_t *buf, size_t len) |
| |
| static void | car_io_tx_confirmed (void *ctx, size_t len) |
| |
| static uint16_t | session_nonce (void) |
| |
| static void | car_io_end (void *ctx) |
| |
| static void | car_io_trace (void *ctx, const char *line) |
| |
| static int | session_max_level (void) |
| |
| static int | session_start_level (float snr_db) |
| |
| static void | car_start (arq_session_t *sess, bool is_caller, uint64_t now) |
| |
| static bool | car_fail_closed (arq_session_t *sess, uint64_t now) |
| |
| static bool | car_disconnect_must_wait (arq_session_t *sess, const arq_event_t *ev, uint64_t now) |
| |
| static bool | car_drained (const arq_session_t *sess) |
| |
| static void | fsm_disconnected (arq_session_t *sess, const arq_event_t *ev) |
| |
| static void | fsm_listening (arq_session_t *sess, const arq_event_t *ev) |
| |
| static void | fsm_calling (arq_session_t *sess, const arq_event_t *ev) |
| |
| static void | fsm_accepting (arq_session_t *sess, const arq_event_t *ev) |
| |
| static void | fire_deferred_connect (arq_session_t *sess) |
| |
| static bool | disconnect_must_wait (arq_session_t *sess) |
| |
| static void | fsm_disconnecting (arq_session_t *sess, const arq_event_t *ev) |
| |
| static void | fsm_connected (arq_session_t *sess, const arq_event_t *ev) |
| |
| static bool | is_session_bound_rx_event (arq_event_id_t id) |
| |
| void | arq_fsm_dispatch (arq_session_t *sess, const arq_event_t *ev) |
| | Dispatch an event through both FSM levels.
|
| |