|
SPSP
Simple publish-subscribe protocol. Connects low power IoT clients to MQTT.
|
Go to the documentation of this file.
18 #include "spsp/espnow_adapter_if.hpp"
26 namespace SPSP::LocalLayers::ESPNOW
28 static constexpr
int SIGNAL_MIN = INT_MIN;
37 static constexpr uint8_t MAX_PEER_NUM = 15;
WiFi interface for ESP-NOW.
ESP-NOW packet structures.
ESP-NOW packet serializer and deserializer.
BridgeConnInfoInternal(BridgeConnInfoRTC brRTC)
Construct a new object from retained RTC version.
BridgeConnInfoInternal m_bestBridge
Bridge with best signal.
void sendCb(const LocalAddrT dst, bool delivered)
Send callback for underlaying ESP-NOW adapter.
std::mutex m_mutex
Mutex to prevent race conditions.
const Config m_conf
Configuration.
SerDes m_serdes
Packet serializer/deserializer.
BridgeConnInfoRTC toRTC()
Convert internal info to RTC version.
~ESPNOW()
Destroys ESP-NOW layer object.
Local and far layers for SPSP.
ESPNOW(IAdapter &adapter, WiFi::IESPNOW &wifi, const Config &conf)
Constructs a new ESP-NOW layer object.
uint8_t getBucketIdFromLocalAddr(const LocalAddrT &addr) const
Calculates bucket id from LocalAddrT object.
bool connectToBridge(BridgeConnInfoRTC *rtndBr=nullptr, BridgeConnInfoRTC *connBr=nullptr)
Connects to the bridge.
std::array< std::mutex, MAX_PEER_NUM > m_sendingMutexes
Container for mutex of being-sent messages.
Requirements of ESP-NOW from WiFi instance.
bool send(const LocalMessageT &msg)
Sends the message to given node.
uint8_t ch
Wireless channel.
Internal bridge connection info.
bool empty()
Whether bridge info doesn't contain any meaningful bridge.
WiFi::IESPNOW & m_wifi
WiFi instance.
void recvCb(const LocalAddrT src, std::string data, int rssi)
Receive callback for underlaying ESP-NOW adapter.
Serializer and deserializer of ESP-NOW packets.
void receive(const LocalMessageT &msg, int rssi)
Receive message handler.
RTC memory enabled bridge connection info.
void sendRaw(const LocalAddrT &dst, const std::string &data)
Sends raw packet to the underlaying library.
Interface for platform-dependent ESP-NOW adapter.
Types for ESPNOW classes.
Local layer address container for MAC address.
uint8_t ch
Wireless channel.
Local message representation.
std::array< std::promise< bool >, MAX_PEER_NUM > m_sendingPromises
Container for promises of being-sent messages.
Interface for local layer.
IAdapter & m_adapter
Low level ESP-NOW adapter.
BridgeConnInfoInternal()
Construct a new empty object.
Local layer address container for MAC address.
std::mutex m_bestBridgeMutex
Mutex for modifying m_bestBridge* attributes.