1
9
10
11
12
13
14
15
17
18
20
21
22
23
24
25
26
30
31
35
36
41
42
46
47
48
52
53
58
59
60
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/* ... */
#ifndef ESPNOW_EXAMPLE_H
#define ESPNOW_EXAMPLE_H
#if CONFIG_ESPNOW_WIFI_MODE_STATION
#define ESPNOW_WIFI_MODE WIFI_MODE_STA
#define ESPNOW_WIFI_IF ESP_IF_WIFI_STA/* ... */
#else
#define ESPNOW_WIFI_MODE WIFI_MODE_AP
#define ESPNOW_WIFI_IF ESP_IF_WIFI_AP/* ... */
#endif
#define ESPNOW_QUEUE_SIZE 6
#define IS_BROADCAST_ADDR(addr) (memcmp(addr, s_example_broadcast_mac, ESP_NOW_ETH_ALEN) == 0)
typedef enum {
EXAMPLE_ESPNOW_SEND_CB,
EXAMPLE_ESPNOW_RECV_CB,
}{ ... } example_espnow_event_id_t;
typedef struct {
uint8_t mac_addr[ESP_NOW_ETH_ALEN];
esp_now_send_status_t status;
}{ ... } example_espnow_event_send_cb_t;
typedef struct {
uint8_t mac_addr[ESP_NOW_ETH_ALEN];
uint8_t *data;
int data_len;
}{ ... } example_espnow_event_recv_cb_t;
typedef union {
example_espnow_event_send_cb_t send_cb;
example_espnow_event_recv_cb_t recv_cb;
}{ ... } example_espnow_event_info_t;
typedef struct {
example_espnow_event_id_t id;
example_espnow_event_info_t info;
}{ ... } example_espnow_event_t;
enum {
EXAMPLE_ESPNOW_DATA_BROADCAST,
EXAMPLE_ESPNOW_DATA_UNICAST,
EXAMPLE_ESPNOW_DATA_MAX,
}{ ... };
typedef struct {
uint8_t type;
uint8_t state;
uint16_t seq_num;
uint16_t crc;
uint32_t magic;
uint8_t payload[0];
}{ ... } __attribute__((packed)) example_espnow_data_t;
typedef struct {
bool unicast;
bool broadcast;
uint8_t state;
uint32_t magic;
uint16_t count;
uint16_t delay;
int len;
uint8_t *buffer;
uint8_t dest_mac[ESP_NOW_ETH_ALEN];
}{ ... } example_espnow_send_param_t;
/* ... */
#endif