aura  0.1
 All Data Structures Functions Variables Modules Pages
packetizer.h
1 #ifndef PACKETIZER_H
2 #define PACKETIZER_H
3 #include <stdint.h>
4 #include <stdio.h>
5 
6 #define PACKET_START 0x7f
7 
8 struct __attribute__((packed)) aura_packet8 {
9  uint8_t start;
10  uint8_t cont;
11  uint8_t datalen;
12  uint8_t invdatalen;
13  uint8_t crc8;
14  char data[];
15 };
16 
17 struct aura_packetizer {
18  int endian;
19  uint8_t cont;
20  uint8_t expect_cont;
21 
22  struct aura_node * node;
23 
24  /* Packetizer callbacks */
25 
26  void (*recvcb)(struct aura_buffer *buf, void *arg);
27  void * recvarg;
28 
29  struct aura_buffer * (*packet_packfn)(struct aura_buffer *buf, void *arg);
30  void * packarg;
31 
32  struct aura_buffer * (*packet_unpackfn)(struct aura_buffer *buf, void *arg);
33  void * unpackarg;
34 
35  int state;
36  struct aura_buffer * curbuf;
37 
38  int copied;
39  struct aura_packet8 headerbuf; /* FixMe: ... */
40 };
41 
42 int aura_packetizer_max_overhead();
43 
44 struct aura_packetizer *aura_packetizer_create(struct aura_node *node);
45 
46 void aura_packetizer_destroy(struct aura_packetizer *pkt);
47 
48 void aura_packetizer_set_receive_cb(
49  struct aura_packetizer *pkt,
50  void (*recvcb)(struct aura_buffer *buf, void *arg),
51  void *arg);
52 
53 int aura_packetizer_verify_header(struct aura_packetizer *pkt, struct aura_packet8 *packet);
54 int aura_packetizer_verify_data(struct aura_packetizer *pkt, struct aura_packet8 *packet);
55 void aura_packetizer_encapsulate(struct aura_packetizer *pkt,
56  struct aura_packet8 *packet,
57  size_t len);
58 int aura_packetizer_feed_once(struct aura_packetizer *pkt, const char *data, size_t len);
59 void aura_packetizer_feed(struct aura_packetizer *pkt, const char *data, size_t len);
60 
61 #endif
void __attribute__((noreturn)) aura_panic(struct aura_node *node)
Definition: panic.c:33