asrt
Automated System Runtime Testing library
Loading...
Searching...
No Matches
param.h
1
11#ifndef ASRTC_PARAM_SERVER_H
12#define ASRTC_PARAM_SERVER_H
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18#include "../asrtl/allocator.h"
19#include "../asrtl/chann.h"
20#include "../asrtl/flat_tree.h"
21#include "../asrtl/param_proto.h"
22
23typedef void ( *asrt_param_ready_ack_cb )( void* ptr, enum asrt_status status );
24
26enum asrt_param_server_pending
27{
28 ASRT_PARAM_SERVER_PENDING_NONE = 0,
29 ASRT_PARAM_SERVER_PENDING_READY_ACK,
30 ASRT_PARAM_SERVER_PENDING_QUERY,
31};
32
38{
39 struct asrt_node node;
40 struct asrt_u8d6msg find_by_key_err_msg;
41 struct asrt_u8d6msg query_err_msg;
42 struct asrt_send_req query_msg;
43 struct asrt_u8d5msg ready_msg;
44
45 struct asrt_flat_tree const* tree; // non-owning; must outlive each test
46 struct asrt_allocator alloc;
47 uint32_t max_msg_size;
48 int ack_received;
49 uint8_t* enc_buff; // allocated on READY_ACK tick, freed on deinit
50 enum asrt_param_server_pending pending;
51 union
52 {
53 uint32_t max_msg_size;
54 asrt_flat_id node_id;
55 } pending_data;
56 asrt_param_ready_ack_cb ack_cb;
57 void* ack_cb_ptr;
58 uint32_t timeout;
59 uint32_t deadline;
60};
61
63enum asrt_status asrt_param_server_init(
64 struct asrt_param_server* param,
65 struct asrt_node* prev,
66 struct asrt_allocator alloc );
67
70void asrt_param_server_set_tree(
71 struct asrt_param_server* param,
72 struct asrt_flat_tree const* tree );
73
76enum asrt_status asrt_param_server_send_ready(
77 struct asrt_param_server* param,
78 asrt_flat_id root_id,
79 uint32_t timeout,
80 asrt_param_ready_ack_cb ack_cb,
81 void* ack_cb_ptr );
82
84void asrt_param_server_deinit( struct asrt_param_server* param );
85
86#ifdef __cplusplus
87}
88#endif
89
90#endif // ASRT_PARAM_SERVER_H
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee ...
Definition: allocator.h:28
node_id maps to blocks[node_id / node_capacity][node_id % node_capacity].
Definition: flat_tree.h:121
A node in a doubly-linked channel chain.
Definition: chann.h:122
Param server module — PARAM channel, controller side.
Definition: param.h:38
An outgoing message request placed in a module's send queue.
Definition: chann.h:64
Definition: chann.h:206
Definition: chann.h:211