24#define CALLSIGN_MAX_SIZE 16
26#define ARQ_BANDWIDTH_NARROW_HZ 500
27#define ARQ_BANDWIDTH_FULL_HZ 2300
28#define ARQ_BANDWIDTH_TACTICAL_HZ 2750
35#define PACKET_ARQ_CONTROL 0x00
36#define PACKET_ARQ_DATA 0x01
37#define PACKET_ARQ_CALL 0x02
38#define PACKET_BROADCAST_CONTROL 0x03
39#define PACKET_BROADCAST_PAYLOAD 0x04
107int arq_init(
size_t frame_size,
int mode);
#define CALLSIGN_MAX_SIZE
Definition arq.h:24
void arq_set_retry_slots(int slots)
Set runtime retry slot counts.
Definition arq.c:860
int arq_effective_bandwidth_hz(void)
Get the effective ARQ bandwidth cap in Hz used for mode gating.
Definition arq.c:274
int arq_submit_tcp_cmd(const arq_cmd_msg_t *cmd)
Submit parsed control command from TCP bridge to ARQ.
Definition arq.c:838
bool arq_handle_incoming_cq_frame(uint8_t *data, size_t frame_size)
Handle incoming compact CQ frame and emit host-side CQFRAME notification.
Definition arq.c:515
arq_info arq_conn
Definition arq.c:42
int arq_init(size_t frame_size, int mode)
Initialize ARQ subsystem.
Definition arq.c:645
int arq_submit_tcp_payload(const uint8_t *data, size_t len)
Submit payload bytes from TCP bridge to ARQ.
Definition arq.c:844
void arq_update_link_metrics(int sync, float snr, int rx_status, bool frame_decoded)
Feed decoder/link metrics into ARQ adaptation.
Definition arq.c:796
void arq_handle_incoming_frame(uint8_t *data, size_t frame_size, float rx_snr)
Handle incoming regular ARQ control/data frame.
Definition arq.c:546
int arq_get_speed_level(void)
Get current ARQ speed level (gear).
Definition arq.c:779
bool arq_get_runtime_snapshot(arq_runtime_snapshot_t *snapshot)
Copy ARQ runtime snapshot.
Definition arq.c:820
void clear_connection_data()
Clear legacy ARQ connection state and buffers.
Definition arq.c:850
void arq_post_event(int event)
Post an FSM event to ARQ.
Definition arq.c:757
bool arq_wait_dequeue_action(arq_action_t *action, int timeout_ms)
Wait for next modem action.
Definition arq.c:814
arq_action_type_t
Action types emitted by ARQ for modem worker execution.
Definition arq.h:66
@ ARQ_ACTION_TX_PAYLOAD
Definition arq.h:69
@ ARQ_ACTION_TX_CONTROL
Definition arq.h:68
@ ARQ_ACTION_NONE
Definition arq.h:67
@ ARQ_ACTION_MODE_SWITCH
Definition arq.h:70
void arq_notify_cq_tx_started(void)
Emit VARA-style async status for an outgoing CQFRAME transmission.
Definition arq.c:534
int arq_get_preferred_rx_mode(void)
Get ARQ-preferred receive mode for modem.
Definition arq.c:782
void arq_set_active_modem_mode(int mode, size_t frame_size)
Inform ARQ of modem mode/frame size actually active in modem.
Definition arq.c:785
bool arq_handle_incoming_connect_frame(uint8_t *data, size_t frame_size)
Handle incoming compressed CALL/ACCEPT frame.
Definition arq.c:469
void arq_notify_cq_tx_complete(void)
Definition arq.c:540
bool arq_try_dequeue_action(arq_action_t *action)
Try to dequeue next modem action without blocking.
Definition arq.c:808
void reset_arq_info(arq_info *arq_conn)
Reset external arq_info structure.
Definition arq.c:882
void callee_accept_connection()
Trigger callee-side accept flow in compatibility path.
Definition arq.c:897
void call_remote()
Trigger outgoing call attempt using current ARQ addresses.
Definition arq.c:896
fsm_handle arq_fsm
Definition arq.c:43
void arq_shutdown()
Shut down ARQ workers and release ARQ resources.
Definition arq.c:726
int arq_get_payload_mode(void)
Get active ARQ payload mode.
Definition arq.c:780
void arq_tick_1hz(void)
Execute 1 Hz ARQ maintenance tick.
Definition arq.c:755
bool arq_is_link_connected(void)
Check whether ARQ link is connected.
Definition arq.c:759
int arq_get_tx_backlog_bytes(void)
Get pending outbound payload backlog.
Definition arq.c:778
int arq_queue_data(const uint8_t *data, size_t len)
Queue outbound payload bytes for ARQ transmission.
Definition arq.c:764
int arq_reported_bandwidth_hz(void)
Get the configured ARQ bandwidth token to report to VARA clients.
Definition arq.c:282
int arq_get_preferred_tx_mode(void)
Get ARQ-preferred transmit mode for modem.
Definition arq.c:783
bool arq_bandwidth_allows_mode(int mode)
Check whether the current ARQ bandwidth cap allows a modem mode.
Definition arq.c:287
int arq_get_control_mode(void)
Get active ARQ control mode.
Definition arq.c:781
Single modem action item popped by modem TX worker.
Definition arq.h:75
size_t frame_size
Definition arq.h:78
int mode
Definition arq.h:77
arq_action_type_t type
Definition arq.h:76
Definition arq_events.h:60
Runtime ARQ connection and mode state shared across modules.
Definition arq.h:50
int bw
Definition arq.h:57
bool encryption
Definition arq.h:54
int session_bw
Definition arq.h:58
size_t frame_size
Definition arq.h:60
int retry_slots
Definition arq.h:59
bool listen
Definition arq.h:56
int mode
Definition arq.h:61
int TRX
Definition arq.h:51
int call_burst_size
Definition arq.h:55
Snapshot of current ARQ runtime state for telemetry/decision making.
Definition arq.h:83
int tx_backlog_bytes
Definition arq.h:87
bool initialized
Definition arq.h:84
int speed_level
Definition arq.h:88
int trx
Definition arq.h:86
int peer_tx_mode
Definition arq.h:90
int preferred_rx_mode
Definition arq.h:92
int payload_mode
Definition arq.h:89
int control_mode
Definition arq.h:91
int preferred_tx_mode
Definition arq.h:93
uint64_t tx_bytes
Definition arq.h:94
uint64_t rx_bytes
Definition arq.h:95
bool connected
Definition arq.h:85
Thread-safe finite-state machine wrapper.
Definition fsm.h:59