14#include <esp_idf_version.h>
19static const uint8_t ESPNOW_BROADCAST_ADDR[ESP_NOW_ETH_ALEN] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
20static const uint8_t ESPNOW_MULTICAST_ADDR[ESP_NOW_ETH_ALEN] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE};
49#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 5, 0)
71 this->init_sent_data_(mac_addr,
status);
80 struct received_data {
82 uint8_t data[ESP_NOW_MAX_DATA_LEN];
100 void init_received_data_(
const esp_now_recv_info_t *
info,
const uint8_t *
data,
int size) {
101 memcpy(this->
packet_.receive.info.src_addr, info->src_addr, ESP_NOW_ETH_ALEN);
102 memcpy(this->
packet_.receive.info.des_addr, info->des_addr, ESP_NOW_ETH_ALEN);
106 this->
packet_.receive.rx_ctrl.rssi = info->rx_ctrl->rssi;
107 this->
packet_.receive.rx_ctrl.timestamp = info->rx_ctrl->timestamp;
109 this->
packet_.receive.info.rx_ctrl =
reinterpret_cast<wifi_pkt_rx_ctrl_t *
>(&this->
packet_.receive.rx_ctrl);
112 void init_sent_data_(
const uint8_t *mac_addr, esp_now_send_status_t
status) {
113 memcpy(this->
packet_.sent.address, mac_addr, ESP_NOW_ETH_ALEN);
122 this->init_data_(peer_address, payload, size);
125 this->init_data_(peer_address, payload, size);
138 this->init_data_(peer_address, payload, size);
142 void load_data(
const uint8_t *peer_address,
const uint8_t *payload,
size_t size) {
143 this->init_data_(peer_address, payload, size);
148 uint8_t
data_[ESP_NOW_MAX_DATA_LEN]{0};
153 void init_data_(
const uint8_t *peer_address,
const uint8_t *payload,
size_t size) {
154 memcpy(this->
address_, peer_address, ESP_NOW_ETH_ALEN);
155 if (size > ESP_NOW_MAX_DATA_LEN) {
ESPNowPacket(const ESPNowPacket &)=delete
esp_now_send_status_t status
void load_sent_data(const uint8_t *mac_addr, esp_now_send_status_t status)
ESPNowPacket & operator=(const ESPNowPacket &)=delete
union esphome::espnow::ESPNowPacket::@82 packet_
void load_received_data(const esp_now_recv_info_t *info, const uint8_t *data, int size)
esp_now_packet_type_t type_
esp_now_packet_type_t type() const
const ESPNowRecvInfo & get_receive_info() const
ESPNowPacket(const uint8_t *mac_addr, esp_now_send_status_t status)
struct esphome::espnow::ESPNowPacket::@82::received_data receive
WifiPacketRxControl rx_ctrl
struct esphome::espnow::ESPNowPacket::@82::sent_data sent
ESPNowPacket(const esp_now_send_info_t *info, esp_now_send_status_t status)
ESPNowPacket(const esp_now_recv_info_t *info, const uint8_t *data, int size)
uint8_t data[ESP_NOW_MAX_DATA_LEN]
void load_data(const uint8_t *peer_address, const uint8_t *payload, size_t size, const send_callback_t &callback)
ESPNowSendPacket & operator=(const ESPNowSendPacket &)=delete
send_callback_t callback_
void load_data(const uint8_t *peer_address, const uint8_t *payload, size_t size)
ESPNowSendPacket(const ESPNowSendPacket &)=delete
uint8_t address_[ESP_NOW_ETH_ALEN]
uint8_t data_[ESP_NOW_MAX_DATA_LEN]
ESPNowSendPacket(const uint8_t *peer_address, const uint8_t *payload, size_t size, const send_callback_t &&callback)
ESPNowSendPacket(const uint8_t *peer_address, const uint8_t *payload, size_t size)
std::function< void(esp_err_t)> send_callback_t
wifi_pkt_rx_ctrl_t * rx_ctrl
Rx control info of ESPNOW packet.
uint8_t des_addr[ESP_NOW_ETH_ALEN]
Destination address of ESPNOW packet.
uint8_t src_addr[ESP_NOW_ETH_ALEN]
Source address of ESPNOW packet.