Loading...
Searching...
No Matches
ESPNOW_types.h
Go to the documentation of this file.
1#ifndef ESPNOW_TYPES_H
2#define ESPNOW_TYPES_H
5#include <stdint.h>
6#include <string.h>
9
11#define DATARATE_1Mbps 0x02
12#define DATARATE_2Mbps 0x04
13#define DATARATE_6Mbps 0x0c
14#define DATARATE_9Mbps 0x12
15#define DATARATE_12Mbps 0x18
16#define DATARATE_18Mbps 0x24
17#define DATARATE_24Mbps 0x30
18#define DATARATE_36Mbps 0x48
19#define DATARATE_48Mbps 0x60
20#define DATARATE_54Mbps 0x6c
21
22#define CHANNEL_freq_1 2412
23#define CHANNEL_freq_2 2417
24#define CHANNEL_freq_3 2422
25#define CHANNEL_freq_4 2427
26#define CHANNEL_freq_5 2432
27#define CHANNEL_freq_6 2437
28#define CHANNEL_freq_7 2442
29#define CHANNEL_freq_8 2447
30#define CHANNEL_freq_9 2452
31#define CHANNEL_freq_10 2457
32#define CHANNEL_freq_11 2462
33#define CHANNEL_freq_12 2467
34#define CHANNEL_freq_13 2472
35#define CHANNEL_freq_14 2484
36
37#define WLAN_LEN 24
38#define ACTIONFRAME_HEADER_LEN 8
39#define VENDORSPECIFIC_CONTENT_LEN 7
40
42 uint8_t version;
43 uint8_t pad;
44 uint16_t length;
45 uint32_t present;
46 uint8_t flags;
47 uint8_t datarate;
48 uint16_t channel_freq;
50
51 //Default values for ESPNOW
53 this->version = 0;
54 this->pad = 0;
55 this->length = sizeof(IEEE80211_radiotap);
56 this->present = 0x0000000e;
57 this->flags = 0x10;
58 this->datarate = DATARATE_6Mbps;
59 this->channel_freq = CHANNEL_freq_1;
60 this->channel_flags_quarter = 0x00c0;
61 }
62} __attribute__((__packed__));
63
64
66 uint8_t elementID;
67 uint8_t length;
68 uint8_t OUI[3];
69 uint8_t type;
70 uint8_t version;
71 uint8_t payload[250];
72
73 //Default values for ESPNOW
75 this->elementID = 0xdd;
76 this->OUI[0] = 0x18;
77 this->OUI[1] = 0xfe;
78 this->OUI[2] = 0x34;
79 this->type = 0x04;
80 this->version = 0x01;
81 }
82
83 void set_length(int payload_length) {this->length = static_cast<uint8_t>(payload_length + 5);}
84} __attribute__((__packed__));
85
86
89 uint8_t OUI[3];
90 uint8_t unknown_bytes[4];
92
93 //Default values for ESPNOW
95 this->category_code = 0x7f;
96 this->OUI[0] = 0x18;
97 this->OUI[1] = 0xfe;
98 this->OUI[2] = 0x34;
99 bzero(this->unknown_bytes, 4);
100 }
101} __attribute__((__packed__));
102
103
105 uint8_t type;
106 uint8_t flags;
107 uint16_t duration;
108 uint8_t da[6];
109 uint8_t sa[6];
110 uint8_t bssid[6];
111 uint16_t seq;
113 uint32_t fcs;
114
115 //Default values for ESPNOW
117 this->type = 0xd0;
118 this->flags = 0x00;
119 this->duration = 0x0000; //Will be recalculated by the hardware...
120 this->seq = 0x0280;
121 this->fcs = 0x00000000; //Will be recalculated by the hardware...
122 }
123} __attribute__((__packed__));
124
129
130
133
134 void set_channel(uint16_t channel_freq);
135 void set_datarate(uint8_t datarate);
136
137
139 void set_src_mac(uint8_t my_mac[6]) override;
140 void set_dst_mac(uint8_t dst_mac[6]) override;
141
142 int toBytes(uint8_t *bytes, int max_len) override;
143 uint8_t* get_payload_ptr() override;
144 int get_payload_len() override;
145 void set_payload_len(int len) override;
146
147 uint8_t* get_src_mac_FromRaw(uint8_t *raw_bytes, int len) override;
148 int get_payload_len_FromRaw(uint8_t *raw_bytes, int len) override;
149 uint8_t* get_payload_FromRaw(uint8_t *raw_bytes, int len) override;
153 static int get_radiotap_len_FromRaw(uint8_t *raw_bytes, int len);
154
156
158
159#endif
uint16_t channel_freq
Definition ESPNOW_types.h:6
#define DATARATE_6Mbps
Definition ESPNOW_types.h:13
#define CHANNEL_freq_1
Definition ESPNOW_types.h:22
ESPNOW_packet __attribute__
uint8_t datarate
Definition ESPNOW_types.h:5
uint8_t dst_mac[6]
Definition ETHERNET_types.h:0
Definition ESPNOW_types.h:125
struct IEEE80211_wlan wlan
Definition ESPNOW_types.h:127
struct IEEE80211_radiotap radiotap
Definition ESPNOW_types.h:126
Definition ESPNOW_types.h:131
void set_payload_len(int len) override
Definition ESPNOW_types.cpp:45
void set_dst_mac(uint8_t dst_mac[6]) override
Definition ESPNOW_types.cpp:19
int get_payload_len() override
Definition ESPNOW_types.cpp:41
void set_channel(uint16_t channel_freq)
Definition ESPNOW_types.cpp:6
int get_payload_len_FromRaw(uint8_t *raw_bytes, int len) override
Definition ESPNOW_types.cpp:64
uint8_t * get_payload_FromRaw(uint8_t *raw_bytes, int len) override
Definition ESPNOW_types.cpp:72
uint8_t * get_payload_ptr() override
Definition ESPNOW_types.cpp:37
void set_src_mac(uint8_t my_mac[6]) override
Definition ESPNOW_types.cpp:15
uint8_t * get_src_mac_FromRaw(uint8_t *raw_bytes, int len) override
Definition ESPNOW_types.cpp:56
static int get_radiotap_len_FromRaw(uint8_t *raw_bytes, int len)
Definition ESPNOW_types.cpp:51
void set_datarate(uint8_t datarate)
Definition ESPNOW_types.cpp:10
struct ESPNOW_data data
Definition ESPNOW_types.h:132
int toBytes(uint8_t *bytes, int max_len) override
Definition ESPNOW_types.cpp:25
Definition ESPNOW_types.h:87
struct IEEE80211_vendorspecific content
Definition ESPNOW_types.h:91
IEEE80211_actionframe()
Definition ESPNOW_types.h:94
uint8_t unknown_bytes[4]
Definition ESPNOW_types.h:90
uint8_t OUI[3]
Definition ESPNOW_types.h:89
uint8_t category_code
Definition ESPNOW_types.h:88
Definition ESPNOW_types.h:41
uint8_t flags
Definition ESPNOW_types.h:46
uint16_t length
Definition ESPNOW_types.h:44
uint16_t channel_freq
Definition ESPNOW_types.h:48
uint8_t pad
Definition ESPNOW_types.h:43
uint8_t version
Definition ESPNOW_types.h:42
uint16_t channel_flags_quarter
Definition ESPNOW_types.h:49
uint8_t datarate
Definition ESPNOW_types.h:47
IEEE80211_radiotap()
Definition ESPNOW_types.h:52
uint32_t present
Definition ESPNOW_types.h:45
Definition ESPNOW_types.h:65
void set_length(int payload_length)
Definition ESPNOW_types.h:83
uint8_t payload[250]
Definition ESPNOW_types.h:71
uint8_t elementID
Definition ESPNOW_types.h:66
uint8_t length
Definition ESPNOW_types.h:67
IEEE80211_vendorspecific()
Definition ESPNOW_types.h:74
uint8_t version
Definition ESPNOW_types.h:70
uint8_t OUI[3]
Definition ESPNOW_types.h:68
uint8_t type
Definition ESPNOW_types.h:69
Definition ESPNOW_types.h:104
uint8_t sa[6]
Definition ESPNOW_types.h:109
uint8_t flags
Definition ESPNOW_types.h:106
uint16_t seq
Definition ESPNOW_types.h:111
IEEE80211_wlan()
Definition ESPNOW_types.h:116
uint8_t bssid[6]
Definition ESPNOW_types.h:110
struct IEEE80211_actionframe actionframe
Definition ESPNOW_types.h:112
uint16_t duration
Definition ESPNOW_types.h:107
uint32_t fcs
Definition ESPNOW_types.h:113
uint8_t type
Definition ESPNOW_types.h:105
uint8_t da[6]
Definition ESPNOW_types.h:108
Definition Link_types.h:4