asrt
Automated System Runtime Testing library
Loading...
Searching...
No Matches
collect.h
1
11#ifndef ASRTC_COLLECT_SERVER_H
12#define ASRTC_COLLECT_SERVER_H
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18#include "../asrtl/allocator.h"
19#include "../asrtl/chann.h"
20#include "../asrtl/collect_proto.h"
21#include "../asrtl/flat_tree.h"
22#include "../asrtl/status.h"
23
24typedef void ( *asrt_collect_ready_ack_cb )( void* ptr, enum asrt_status status );
25
26enum asrt_collect_server_state
27{
28 ASRT_COLLECT_SERVER_IDLE = 0,
29 ASRT_COLLECT_SERVER_READY_SENT,
30 ASRT_COLLECT_SERVER_READY_ACK_RECV,
31 ASRT_COLLECT_SERVER_ACTIVE,
32};
33
35{
36 asrt_flat_id root_id;
37 asrt_collect_ready_ack_cb ack_cb;
38 void* ack_cb_ptr;
39 uint32_t timeout;
40 uint32_t deadline;
41};
42
55{
56 struct asrt_node node;
57
58 struct asrt_u8d2msg err_msg;
59 struct asrt_u8d9msg ready_msg;
60
61 struct asrt_allocator alloc;
62 struct asrt_flat_tree tree;
63 uint32_t tree_block_cap;
64 uint32_t tree_node_cap;
65
66 enum asrt_collect_server_state state;
67 asrt_flat_id next_node_id;
68
69 struct asrt_collect_ready_data cmd;
70};
71
74enum asrt_status asrt_collect_server_init(
75 struct asrt_collect_server* server,
76 struct asrt_node* prev,
77 struct asrt_allocator alloc,
78 uint32_t tree_block_cap,
79 uint32_t tree_node_cap );
80
89enum asrt_status asrt_collect_server_send_ready(
90 struct asrt_collect_server* server,
91 asrt_flat_id root_id,
92 uint32_t timeout,
93 asrt_collect_ready_ack_cb ack_cb,
94 void* ack_cb_ptr );
95
97struct asrt_flat_tree const* asrt_collect_server_tree( struct asrt_collect_server const* server );
98
100void asrt_collect_server_deinit( struct asrt_collect_server* server );
101
102#ifdef __cplusplus
103}
104#endif
105
106#endif // ASRT_COLLECT_SERVER_H
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee ...
Definition: allocator.h:28
Definition: collect.h:35
Controller-side collect server (ASRT_COLL channel).
Definition: collect.h:55
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
Definition: chann.h:196
Definition: chann.h:221