30constexpr uint8_t
BROADCAST_MAC[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
39 return static_cast<FaceId>(((mac[4] << 8) | mac[5]) + 2);
102 void stop()
override;
111 Error send(
const uint8_t* data,
size_t len)
override;
211 static void onReceive(
const esp_now_recv_info_t* info,
const uint8_t* data,
int len);
212 static void onSend(
const esp_now_send_info_t* info, esp_now_send_status_t status);
215 void handleReceive(
const uint8_t* srcMac,
const uint8_t* data,
size_t len);
219 PeerInfo* findPeerByMac(
const uint8_t* mac);
223 bool running_ =
false;
226 std::array<PeerInfo, ESPNOW_MAX_PEERS> peers_{};
230 static constexpr size_t RX_QUEUE_SIZE = 8;
233 uint8_t data[ESPNOW_MAX_PAYLOAD];
237 std::array<RxPacket, RX_QUEUE_SIZE> rxQueue_{};
238 volatile size_t rxQueueHead_ = 0;
239 volatile size_t rxQueueTail_ = 0;
246 size_t macFilterCount_ = 0;
247 bool macFilterEnabled_ =
false;
~EspNowFace() override
Destructor.
static EspNowFace * instance()
Get the static instance (for callbacks)
static constexpr size_t MAX_MAC_FILTERS
Maximum number of filter MACs.
void stop() override
Stop ESP-NOW.
void setMacFilters(const uint8_t macs[][6], size_t count)
Set multiple MAC address filters.
size_t maxPayloadSize() const override
Get maximum payload size.
bool getMacAddress(FaceId faceId, uint8_t *mac) const
Get MAC address from FaceId.
void clearMacFilters()
Clear MAC address filters.
Error send(const uint8_t *data, size_t len) override
Default send (broadcast)
Error start() override
Initialize and start ESP-NOW.
void processReceiveQueue()
Process receive events.
bool hasMacFilter() const
Check if MAC address filter is enabled.
size_t peerCount() const
Get number of registered peers.
void setMacFilter(const uint8_t *mac)
Set MAC address filter (single MAC)
Error sendTo(FaceId destFace, const uint8_t *data, size_t len) override
Unicast send to a specific Face.
EspNowFace(FaceId faceId=2)
Constructor.
FaceId id() const override
Get Face ID.
void removePeer(FaceId faceId)
Remove a peer.
Error broadcast(const uint8_t *data, size_t len) override
Broadcast send.
FaceId addPeer(const uint8_t *mac)
Add a peer.
NDN Face abstract base class.
uint16_t FaceId
Face identifier.
constexpr uint8_t BROADCAST_MAC[6]
Broadcast MAC address.
FaceId macToFaceId(const uint8_t *mac)
Generate FaceId from MAC address.
constexpr size_t ESPNOW_MAX_PEERS
ESP-NOW maximum number of peers.
constexpr size_t ESPNOW_MAX_PAYLOAD
ESP-NOW maximum payload size (v2.0)
uint8_t mac[6]
MAC address.
uint32_t lastSeen
Last received time (ms)