12#include <esp_idf_version.h>
26static constexpr size_t MAX_ESP_NOW_SEND_QUEUE_SIZE = 16;
27static constexpr size_t MAX_ESP_NOW_RECEIVE_QUEUE_SIZE = 16;
53 bool operator==(
const uint8_t *other)
const {
return memcmp(this->address, other, ESP_NOW_ETH_ALEN) == 0; }
94 void setup()
override;
104 this->
peers_.push_back(peer);
107 esp_err_t
add_peer(
const uint8_t *peer);
109 esp_err_t
del_peer(
const uint8_t *peer);
132 esp_err_t
send(
const uint8_t *peer_address,
const std::vector<uint8_t> &payload,
134 return this->
send(peer_address, payload.data(), payload.size(), callback);
136 esp_err_t
send(
const uint8_t *peer_address,
const uint8_t *payload,
size_t size,
148 friend void on_data_received(
const esp_now_recv_info_t *info,
const uint8_t *data,
int size);
149#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 5, 0)
Handler interface for receiving broadcasted ESPNow packets Components should inherit from this class ...
virtual bool on_broadcasted(const ESPNowRecvInfo &info, const uint8_t *data, uint8_t size)=0
Called when a broadcasted ESPNow packet is received.
ESPNowSendPacket * current_send_packet_
esp_err_t send(const uint8_t *peer_address, const std::vector< uint8_t > &payload, const send_callback_t &callback=nullptr)
Queue a packet to be sent to a specific peer address.
LockFreeQueue< ESPNowSendPacket, MAX_ESP_NOW_SEND_QUEUE_SIZE > send_packet_queue_
void add_peer(peer_address_t address)
std::vector< ESPNowUnknownPeerHandler * > unknown_peer_handlers_
void apply_wifi_channel()
EventPool< ESPNowSendPacket, MAX_ESP_NOW_SEND_QUEUE_SIZE > send_packet_pool_
std::vector< ESPNowPeer > peers_
friend void on_send_report(const esp_now_send_info_t *info, esp_now_send_status_t status)
std::vector< ESPNowBroadcastedHandler * > broadcasted_handlers_
void set_auto_add_peer(bool value)
friend void on_data_received(const esp_now_recv_info_t *info, const uint8_t *data, int size)
void set_wifi_channel(uint8_t channel)
friend void on_send_report(const uint8_t *mac_addr, esp_now_send_status_t status)
EventPool< ESPNowPacket, MAX_ESP_NOW_RECEIVE_QUEUE_SIZE > receive_packet_pool_
void set_enable_on_boot(bool enable_on_boot)
esp_err_t del_peer(const uint8_t *peer)
void register_unknown_peer_handler(ESPNowUnknownPeerHandler *handler)
void dump_config() override
std::vector< ESPNowReceivedPacketHandler * > received_handlers_
LockFreeQueue< ESPNowPacket, MAX_ESP_NOW_RECEIVE_QUEUE_SIZE > receive_packet_queue_
uint8_t get_wifi_channel()
void register_broadcasted_handler(ESPNowBroadcastedHandler *handler)
float get_setup_priority() const override
uint8_t own_address_[ESP_NOW_ETH_ALEN]
void register_received_handler(ESPNowReceivedPacketHandler *handler)
Handler interface for receiving ESPNow packets Components should inherit from this class to handle in...
virtual bool on_received(const ESPNowRecvInfo &info, const uint8_t *data, uint8_t size)=0
Called when an ESPNow packet is received.
Handler interface for receiving ESPNow packets from unknown peers Components should inherit from this...
virtual bool on_unknown_peer(const ESPNowRecvInfo &info, const uint8_t *data, uint8_t size)=0
Called when an ESPNow packet is received from an unknown peer.
@ ESPNOW_STATE_ENABLED
ESPNOW is enabled.
@ ESPNOW_STATE_OFF
Nothing has been initialized yet.
@ ESPNOW_STATE_DISABLED
ESPNOW is disabled.
std::array< uint8_t, ESP_NOW_ETH_ALEN > peer_address_t
ESPNowComponent * global_esp_now
void esp_now_send_status_t status
std::function< void(esp_err_t)> send_callback_t
const float LATE
For components that should be initialized at the very end of the setup process.
bool operator==(const uint8_t *other) const
bool operator==(const ESPNowPeer &other) const
uint8_t address[ESP_NOW_ETH_ALEN]