diff options
Diffstat (limited to 'src/retransmit.h')
-rw-r--r-- | src/retransmit.h | 32 |
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 | |||
7 | struct 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 | |||
15 | struct ack_map { | ||
16 | struct ack_map_node* top; | ||
17 | }; | ||
18 | |||
19 | struct retransmitter { | ||
20 | pthread_t thread_id; | ||
21 | int sock; | ||
22 | int device_index; | ||
23 | struct ack_map messages; | ||
24 | bool quit; | ||
25 | }; | ||
26 | |||
27 | struct retransmitter* start_retransmit_thread(int sock, int device_index); | ||
28 | void send_until_acked(struct retransmitter* retransmitter, const unsigned char dst_addr[6], const unsigned char* packet, int packet_size); | ||
29 | void handle_ack(struct retransmitter* retransmitter); | ||
30 | void free_retransmitter(struct retransmitter* retransmitter); | ||
31 | |||
32 | #endif /* G4U_RETRANSMIT_H */ | ||