Loading...
Searching...
No Matches
Link_manager.h
Go to the documentation of this file.
1#ifndef LINK_MANAGER_H
2#define LINK_MANAGER_H
3
4#include <string>
5#include <thread>
6#ifdef __APPLE__
7#include <net/ndrv.h>
8#endif
9
11
12#define LEN_RAWBYTES_MAX 512
13
15{
16 public:
17 virtual void callback(uint8_t src_mac[6], uint8_t *data, int len) = 0;
18};
19
20
27
28
30{
31public:
32 LINK_manager(Packet_t *packet_p) : mypacket(packet_p) {}
33 LINK_manager(Packet_t *packet_p, const std::string &interface) : LINK_manager(packet_p)
34 {
36 }
37 virtual ~LINK_manager();
38
40 void set_interface(const std::string &interface);
41
42 void start();
43 virtual void stop();
44 void end();
45
46 int send(uint8_t *payload, int len);
47 int send();
48
49 void set_src_mac(uint8_t src_mac[6]);
50 void set_dst_mac(uint8_t dst_mac[6]);
51
53
54protected:
55 int sock_fd = -1;
57 std::string interface;
58
59 pthread_t recv_thd_id;
61 static void *sock_recv_thread(void *p_arg);
62#ifdef __APPLE__
63 struct sockaddr_ndrv sa_ndrv;
64#endif
65};
66
67#endif
uint8_t payload[250]
Definition ESPNOW_types.h:5
uint8_t dst_mac[6]
Definition ETHERNET_types.h:0
uint8_t src_mac[6]
Definition ETHERNET_types.h:1
Definition Link_types.h:4
Definition Link_manager.h:22
int sock_fd
Definition Link_manager.h:23
LINK_manager_callback * obj_link_manager_callback
Definition Link_manager.h:24
Packet_t * mypacket
Definition Link_manager.h:25