#pragma once #ifdef ESP_PLATFORM #include #include #include #include namespace tt::service::espnow { typedef int ReceiverSubscription; constexpr ReceiverSubscription NO_SUBSCRIPTION = -1; enum class Mode { Station, AccessPoint }; struct EspNowConfig { uint8_t masterKey[ESP_NOW_KEY_LEN]; uint8_t address[ESP_NOW_ETH_ALEN]; Mode mode; uint8_t channel; bool longRange; bool encrypt; EspNowConfig( uint8_t masterKey[16], Mode mode, uint8_t channel, bool longRange, bool encrypt ) : mode(mode), channel(channel), longRange(longRange), encrypt(encrypt) { memcpy((void*)this->masterKey, (void*)masterKey, 16); } }; void enable(const EspNowConfig& config); void disable(); bool isEnabled(); bool addPeer(const esp_now_peer_info_t& peer); bool send(const uint8_t* address, const uint8_t* buffer, size_t bufferLength); ReceiverSubscription subscribeReceiver(std::function onReceive); void unsubscribeReceiver(ReceiverSubscription subscription); } #endif // ESP_PLATFORM