skip to content
==> include/mesh/abi/peer_sizes.h <==
1/* @ajax/mesh-abi-peer-sizes: Peer frame body sizes and limits.
2 *
3 * Part of alpha-c-mesh, a C port of alpha-rust-mesh (README.md says from where). */
4#ifndef MESH_ABI_PEER_SIZES_H
5#define MESH_ABI_PEER_SIZES_H
6
7#include <stdbool.h>
8#include <stddef.h>
9#include <stdint.h>
10#include "mesh/abi/base.h"
11
12#define MESH_F_PERF_MAX (16 << 10)
13#define MESH_VIEW_REQ_BYTES (4 + MESH_NAME_BYTES + 8)
14#define MESH_VIEW_HEAD (4 * 6)
15#define MESH_F_VIEW_CHUNK (1 << 20)
16/* A blob frame's body, at most (a blob is at most JOB_PAYLOAD_MAX). */
17#define MESH_F_BLOB_MAX (MESH_JOB_PAYLOAD_MAX  + 64)
18/* A job item's payload (`job_payload`), at most. */
19#define MESH_JOB_PAYLOAD_MAX ((uint32_t)(1 << 20))
20/* A job frame's head (after the type byte): u32 len. */
21#define MESH_JOB_HEAD 4
22#define MESH_F_JOB_MAX (8 << 20)
23#define MESH_JOIN_BYTES (8 * 4 + 32 + 16 + 32 + 2 * 4)
24#define MESH_HELLO_BYTES (4 + 4 + MESH_NAME_BYTES + 4 + 4 + 4 + MESH_MAX_SYSTEMS  + 8)
25#define MESH_ROUND_HEAD (4 + 4 + 8)
26#define MESH_BEAT_HEAD (8 + 4 + 4 + 8 * 5 + 4 * 5)
27#define MESH_BEAT_REASON_MAX 160
28/* F_BEAT's per-program move outcomes: at most this many, each this long. */
29#define MESH_BEAT_MOVES_MAX (MESH_PROG_SLOTS)
30#define MESH_BEAT_MOVE_BYTES (MESH_NAME_BYTES + 8 + 4 + 4)
31#define MESH_BEAT_LEADER 1u
32#define MESH_VOTE_REQ_BYTES (4 + 8 + 8 + 8)
33#define MESH_VOTE_BYTES (4 + 8 + 4)
34#define MESH_STATE_HEAD (8 + 4)
35#define MESH_F_STATE_MAX (1 << 20)
36#define MESH_ACK_BYTES (8 + 8 + 8)
37#define MESH_CTL_HEAD (4 + 4)
38#define MESH_F_CTL_MAX 4096
39#define MESH_CTL_REPLY_HEAD (4 + 4 + 4)
40#define MESH_F_CTL_REPLY_MAX (64 << 10)
41#define MESH_IMAGE_REQ_HEAD (4 + MESH_NAME_BYTES + 8 + 4)
42#define MESH_IMAGE_HEAD (4 + 8 + 4 + 4 + 4 + 4)
43#define MESH_F_PLACE_MAX (64 << 10)
44#define MESH_F_INPUT_MAX 256
45#define MESH_F_LOAD_MAX (4 << 20)
46#define MESH_F_REASON_MAX 256
47
48/* The Rust const asserts that only involve this package. */
49_Static_assert(MESH_JOB_HEAD == 4, "JOB_HEAD == 4");
50_Static_assert(MESH_F_BLOB_MAX <= MESH_F_JOB_MAX, "F_BLOB_MAX <= F_JOB_MAX");
51
52#endif