about summary refs log tree commit diff stats
path: root/src/retransmit.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/retransmit.h')
-rw-r--r--src/retransmit.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/retransmit.h b/src/retransmit.h new file mode 100644 index 0000000..0d2a90b --- /dev/null +++ b/src/retransmit.h
@@ -0,0 +1,32 @@
1#ifndef G4U_RETRANSMIT_H
2#define G4U_RETRANSMIT_H
3
4#include <pthread.h>
5#include <stdbool.h>
6
7struct ack_map_node {
8 unsigned char dst_addr[6];
9 unsigned char* packet;
10 int packet_size;
11 int retries_left;
12 struct ack_map_node* next;
13};
14
15struct ack_map {
16 struct ack_map_node* top;
17};
18
19struct retransmitter {
20 pthread_t thread_id;
21 int sock;
22 int device_index;
23 struct ack_map messages;
24 bool quit;
25};
26
27struct retransmitter* start_retransmit_thread(int sock, int device_index);
28void send_until_acked(struct retransmitter* retransmitter, const unsigned char dst_addr[6], const unsigned char* packet, int packet_size);
29void handle_ack(struct retransmitter* retransmitter);
30void free_retransmitter(struct retransmitter* retransmitter);
31
32#endif /* G4U_RETRANSMIT_H */