Mercury Modem
Mercury ARQ/Broadcast modem
Loading...
Searching...
No Matches
arq_timing.h
Go to the documentation of this file.
1/* HERMES Modem — ARQ Timing: instrumentation context and record API
2 *
3 * Copyright (C) 2025 Rhizomatica
4 * Author: Rafael Diniz <rafael@riseup.net>
5 *
6 * SPDX-License-Identifier: GPL-3.0-or-later
7 */
8
9#ifndef ARQ_TIMING_H_
10#define ARQ_TIMING_H_
11
12#include <stdint.h>
13
14/* ======================================================================
15 * Timing context: a session's cumulative counters (the UI's bytes
16 * transmitted / received, and the [TMG] disconnect totals).
17 * ====================================================================== */
18
19typedef struct
20{
21 uint64_t tx_bytes; /* bytes the carousel took from the application */
22 uint64_t rx_bytes; /* bytes it delivered to the application */
23 uint64_t frames_tx; /* carousel frames keyed */
24 uint64_t frames_rx; /* frames decoded from the peer */
25 uint64_t data_rx_ms; /* when the last bytes were delivered */
27
28/* ======================================================================
29 * API
30 * ====================================================================== */
31
34
37void arq_timing_record_car_tx(arq_timing_ctx_t *ctx, int bytes);
38void arq_timing_record_car_rx(arq_timing_ctx_t *ctx, int bytes);
39
42
44void arq_timing_record_disconnect(arq_timing_ctx_t *ctx, const char *reason);
45
46#endif /* ARQ_TIMING_H_ */
void arq_timing_init(arq_timing_ctx_t *ctx)
Zero-initialise a timing context at session start.
Definition arq_timing.c:35
void arq_timing_record_connect(arq_timing_ctx_t *ctx, int mode)
Record session connected; logs [TMG] connect.
Definition arq_timing.c:55
void arq_timing_record_car_rx(arq_timing_ctx_t *ctx, int bytes)
Definition arq_timing.c:47
void arq_timing_record_disconnect(arq_timing_ctx_t *ctx, const char *reason)
Record session disconnected; logs [TMG] disconnect and session totals.
Definition arq_timing.c:61
void arq_timing_record_car_tx(arq_timing_ctx_t *ctx, int bytes)
Bytes the carousel took from the application to send, or delivered to it; logs [TMG] car_tx / car_rx.
Definition arq_timing.c:40
int mode
Definition carousel.c:2330
Definition arq_timing.h:20
uint64_t frames_tx
Definition arq_timing.h:23
uint64_t frames_rx
Definition arq_timing.h:24
uint64_t tx_bytes
Definition arq_timing.h:21
uint64_t data_rx_ms
Definition arq_timing.h:25
uint64_t rx_bytes
Definition arq_timing.h:22