|
SPSP
Simple publish-subscribe protocol. Connects low power IoT clients to MQTT.
|
Go to the documentation of this file.
16 #include "spsp/espnow_adapter_if.hpp"
20 namespace SPSP::LocalLayers::ESPNOW
29 class Adapter :
public IAdapter
60 AdapterRecvCb m_recvCb =
nullptr;
61 AdapterSendCb m_sendCb =
nullptr;
74 Adapter(
const std::string& ifname);
89 void setRecvCb(AdapterRecvCb cb) noexcept { m_recvCb = cb; }
96 AdapterRecvCb
getRecvCb() const noexcept {
return m_recvCb; }
103 void setSendCb(AdapterSendCb cb) noexcept { m_sendCb = cb; }
110 AdapterSendCb
getSendCb() const noexcept {
return m_sendCb; }
void attachSocketFilter()
Attaches BPF filter to the socket.
void addPeer(const LocalAddrT &peer)
Adds peer to peer list.
void setRecvCb(AdapterRecvCb cb) noexcept
Sets receive callback.
void processIEEE80211RawAction(const uint8_t *data, size_t len, int rssi)
Processes incoming raw IEEE 802.11 action frame.
void handlerThread()
Function of thread handling incoming packets.
void processIEEE80211RawAck(const uint8_t *data, size_t len, int rssi)
Processes incoming raw IEEE 802.11 acknowledgement.
ESP-NOW IEEE802.11 structures including radiotap.
AdapterSendCb getSendCb() const noexcept
Gets send callback.
void send(const LocalAddrT &dst, const std::string &data)
Sends local message.
LocalAddrT m_localAddr
Cached local MAC address.
~Adapter()
Destroys the adapter.
EventFD m_eventFd
Epoll event file descriptor.
void setSendCb(AdapterSendCb cb) noexcept
Sets send callback.
Wrapper of event file descriptor.
Parsed fields from radiotap header.
AdapterRecvCb getRecvCb() const noexcept
Gets receive callback.
void removePeer(const LocalAddrT &peer)
Removes peer from peer list.
std::thread m_thread
Handler thread.
Types for ESPNOW classes.
Local layer address container for MAC address.
int m_epollFd
Epoll file descriptor.
Adapter()
Constructs a new ESP-NOW adapter.
bool parseRadiotap(const uint8_t *data, size_t len, IEEE80211::RadiotapParsedFields &rpf)
Parses radiotap header of IEEE 802.11 frame.
void processIEEE80211RawPacket(const uint8_t *data, size_t len)
Processes incoming raw IEEE 802.11 packet.