Add ESP-NOW control

This commit is contained in:
Robert Marshall 2022-08-19 08:01:58 +01:00
parent c7cf91a412
commit 00bcf55c83
2 changed files with 45 additions and 0 deletions

41
src/EspNowControl.cpp Normal file
View file

@ -0,0 +1,41 @@
#ifndef EspNowControl_cpp
#define EspNowControl_cpp
#include <esp_now.h>
#include <WiFi.h>
#include "LedManager.cpp"
class EspNowControl {
typedef struct payload {
int id;
bool on;
float brightness;
unsigned long timer;
} payload;
static LedManager *_leds;
static void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {
payload data;
memcpy(&data, incomingData, sizeof(data));
_leds->setLedProperties(data.id, data.on, data.brightness, data.timer);
}
EspNowControl();
public:
static bool init(LedManager *leds) {
_leds = leds;
WiFi.mode(WIFI_STA);
if (esp_now_init() != ESP_OK)
return false;
esp_now_register_recv_cb(OnDataRecv);
return true;
}
};
#endif

View file

@ -2,10 +2,13 @@
#include "BluetoothLEDCallback.cpp" #include "BluetoothLEDCallback.cpp"
#include "BluetoothLightControl.cpp" #include "BluetoothLightControl.cpp"
#include "BluetoothService.cpp" #include "BluetoothService.cpp"
#include "EspNowControl.cpp"
#include "LedManager.cpp" #include "LedManager.cpp"
#include "TimerManager.cpp" #include "TimerManager.cpp"
#include <Arduino.h> #include <Arduino.h>
LedManager *EspNowControl::_leds = 0; // WTF, C++?
#define FADE_IN_DURATION 500 #define FADE_IN_DURATION 500
#define FADE_OUT_DURATION 1000 #define FADE_OUT_DURATION 1000
@ -52,6 +55,7 @@ void setup() {
_btService.init(); _btService.init();
_btService.start(); _btService.start();
EspNowControl::init(&_leds);
} }
void loop() { void loop() {