blob: 0d2a90be114c6c1cfe0b9ae94dce31b7b92697ba (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#ifndef G4U_RETRANSMIT_H
#define G4U_RETRANSMIT_H
#include <pthread.h>
#include <stdbool.h>
struct ack_map_node {
unsigned char dst_addr[6];
unsigned char* packet;
int packet_size;
int retries_left;
struct ack_map_node* next;
};
struct ack_map {
struct ack_map_node* top;
};
struct retransmitter {
pthread_t thread_id;
int sock;
int device_index;
struct ack_map messages;
bool quit;
};
struct retransmitter* start_retransmit_thread(int sock, int device_index);
void send_until_acked(struct retransmitter* retransmitter, const unsigned char dst_addr[6], const unsigned char* packet, int packet_size);
void handle_ack(struct retransmitter* retransmitter);
void free_retransmitter(struct retransmitter* retransmitter);
#endif /* G4U_RETRANSMIT_H */
|