#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include "arq.h"
#include "arq_timing.h"
Go to the source code of this file.
|
| enum | arq_conn_state_t {
ARQ_CONN_DISCONNECTED = 0
, ARQ_CONN_LISTENING = 1
, ARQ_CONN_CALLING = 2
, ARQ_CONN_ACCEPTING = 3
,
ARQ_CONN_CONNECTED = 4
, ARQ_CONN_DISCONNECTING = 5
, ARQ_CONN__COUNT
} |
| |
| enum | arq_dflow_state_t {
ARQ_DFLOW_IDLE_ISS = 0
, ARQ_DFLOW_DATA_TX = 1
, ARQ_DFLOW_WAIT_ACK = 2
, ARQ_DFLOW_IDLE_IRS = 3
,
ARQ_DFLOW_DATA_RX = 4
, ARQ_DFLOW_ACK_TX = 5
, ARQ_DFLOW_TURN_REQ_TX = 6
, ARQ_DFLOW_TURN_REQ_WAIT = 7
,
ARQ_DFLOW_TURN_ACK_TX = 8
, ARQ_DFLOW_MODE_REQ_TX = 9
, ARQ_DFLOW_MODE_REQ_WAIT = 10
, ARQ_DFLOW_MODE_ACK_TX = 11
,
ARQ_DFLOW_KEEPALIVE_TX = 12
, ARQ_DFLOW_KEEPALIVE_WAIT = 13
, ARQ_DFLOW__COUNT
} |
| |
| enum | arq_role_t { ARQ_ROLE_NONE = 0
, ARQ_ROLE_CALLER = 1
, ARQ_ROLE_CALLEE = 2
} |
| |
| enum | arq_event_id_t {
ARQ_EV_APP_LISTEN = 0
, ARQ_EV_APP_STOP_LISTEN = 1
, ARQ_EV_APP_CONNECT = 2
, ARQ_EV_APP_DISCONNECT = 3
,
ARQ_EV_APP_DATA_READY = 4
, ARQ_EV_RX_CALL = 5
, ARQ_EV_RX_ACCEPT = 6
, ARQ_EV_RX_ACK = 7
,
ARQ_EV_RX_DATA = 8
, ARQ_EV_RX_DISCONNECT = 9
, ARQ_EV_RX_TURN_REQ = 10
, ARQ_EV_RX_TURN_ACK = 11
,
ARQ_EV_RX_MODE_REQ = 12
, ARQ_EV_RX_MODE_ACK = 13
, ARQ_EV_RX_KEEPALIVE = 14
, ARQ_EV_RX_KEEPALIVE_ACK = 15
,
ARQ_EV_TIMER_RETRY = 16
, ARQ_EV_TIMER_TIMEOUT = 17
, ARQ_EV_TIMER_ACK = 18
, ARQ_EV_TIMER_PEER_BACKLOG = 19
,
ARQ_EV_TIMER_KEEPALIVE = 20
, ARQ_EV_TX_STARTED = 21
, ARQ_EV_TX_COMPLETE = 22
, ARQ_EV__COUNT
} |
| |
◆ arq_conn_state_t
| Enumerator |
|---|
| ARQ_CONN_DISCONNECTED | |
| ARQ_CONN_LISTENING | |
| ARQ_CONN_CALLING | |
| ARQ_CONN_ACCEPTING | |
| ARQ_CONN_CONNECTED | |
| ARQ_CONN_DISCONNECTING | |
| ARQ_CONN__COUNT | |
◆ arq_dflow_state_t
| Enumerator |
|---|
| ARQ_DFLOW_IDLE_ISS | |
| ARQ_DFLOW_DATA_TX | |
| ARQ_DFLOW_WAIT_ACK | |
| ARQ_DFLOW_IDLE_IRS | |
| ARQ_DFLOW_DATA_RX | |
| ARQ_DFLOW_ACK_TX | |
| ARQ_DFLOW_TURN_REQ_TX | |
| ARQ_DFLOW_TURN_REQ_WAIT | |
| ARQ_DFLOW_TURN_ACK_TX | |
| ARQ_DFLOW_MODE_REQ_TX | |
| ARQ_DFLOW_MODE_REQ_WAIT | |
| ARQ_DFLOW_MODE_ACK_TX | |
| ARQ_DFLOW_KEEPALIVE_TX | |
| ARQ_DFLOW_KEEPALIVE_WAIT | |
| ARQ_DFLOW__COUNT | |
◆ arq_event_id_t
| Enumerator |
|---|
| ARQ_EV_APP_LISTEN | |
| ARQ_EV_APP_STOP_LISTEN | |
| ARQ_EV_APP_CONNECT | |
| ARQ_EV_APP_DISCONNECT | |
| ARQ_EV_APP_DATA_READY | |
| ARQ_EV_RX_CALL | |
| ARQ_EV_RX_ACCEPT | |
| ARQ_EV_RX_ACK | |
| ARQ_EV_RX_DATA | |
| ARQ_EV_RX_DISCONNECT | |
| ARQ_EV_RX_TURN_REQ | |
| ARQ_EV_RX_TURN_ACK | |
| ARQ_EV_RX_MODE_REQ | |
| ARQ_EV_RX_MODE_ACK | |
| ARQ_EV_RX_KEEPALIVE | |
| ARQ_EV_RX_KEEPALIVE_ACK | |
| ARQ_EV_TIMER_RETRY | |
| ARQ_EV_TIMER_TIMEOUT | |
| ARQ_EV_TIMER_ACK | |
| ARQ_EV_TIMER_PEER_BACKLOG | |
| ARQ_EV_TIMER_KEEPALIVE | |
| ARQ_EV_TX_STARTED | |
| ARQ_EV_TX_COMPLETE | |
| ARQ_EV__COUNT | |
◆ arq_role_t
| Enumerator |
|---|
| ARQ_ROLE_NONE | |
| ARQ_ROLE_CALLER | |
| ARQ_ROLE_CALLEE | |
◆ arq_conn_state_name()
Human-readable name for a connection state (for log output).
◆ arq_dflow_state_name()
Human-readable name for a data-flow state (for log output).
◆ arq_event_name()
Human-readable name for an event (for log output).
◆ arq_fsm_dispatch()
Dispatch an event through both FSM levels.
Runs transition logic, calls action callbacks, and updates deadlines. Must be called from the single ARQ event-loop thread (no locking inside).
- Parameters
-
| sess | Active session. |
| event | Event to process. |
◆ arq_fsm_init()
Initialise a session structure to DISCONNECTED state.
- Parameters
-
| sess | Session to initialise. |
◆ arq_fsm_set_callbacks()
Register FSM action callbacks (call once before first dispatch).
◆ arq_fsm_set_timing()
Register timing context for recording (call once at init).
- Parameters
-
◆ arq_fsm_timeout_ms()
| int arq_fsm_timeout_ms |
( |
const arq_session_t * |
sess, |
|
|
uint64_t |
now |
|
) |
| |
Return milliseconds until the next deadline, or INT_MAX if idle.
Used by the event loop's blocking wait to set a poll timeout.
- Parameters
-
| sess | Active session. |
| now | Current monotonic time in milliseconds. |
- Returns
- Milliseconds to wait (0 = fire immediately, INT_MAX = no deadline).