p-a-h-a
Member
Приветствую. Пишу класс с отправкой данных по ESP-NOW для ESP8266. Экземпляр класса должен узнать статус доставки ESP-NOW.
Вырезал все лишнее. Осталось то, что не компилируется никак.
Прошу помочь решить мою задачу. PS одновременная отправка разными экземплярами не планируется.
В коде пробую или обратную отдельную статическую функцию вызывать или лямбда функцию (не важно какой вариант заработает. Подстановка в лямбда функцию [this], [&], [variable] не компилируется).
Если раскомментировать любую строчку кода, компилятор выдает ошибку.
Вырезал все лишнее. Осталось то, что не компилируется никак.
Прошу помочь решить мою задачу. PS одновременная отправка разными экземплярами не планируется.
В коде пробую или обратную отдельную статическую функцию вызывать или лямбда функцию (не важно какой вариант заработает. Подстановка в лямбда функцию [this], [&], [variable] не компилируется).
Если раскомментировать любую строчку кода, компилятор выдает ошибку.
Код:
#include <espnow.h>
class device {
public:
device() {
esp_now_register_send_cb(OnDataSent_cb); //ТАК ВЫГЛЯДЯТ ПРИМЕРЫ. Регистрируется калбэк функция
esp_now_register_send_cb([](unsigned char *mac_addr, unsigned char sendStatus_) {//тут лямбда
//device::sendStatus = sendStatus_; //'this' was not captured for this lambda function
//sendStatus = sendStatus_;//'this' was not captured for this lambda function
//this->sendStatus = sendStatus_;//'this' was not captured for this lambda function
//device::staticSendStatus = sendStatus_; //collect2.exe: error: ld returned 1 exit status. Ошибка компиляции для платы Generic ESP8266 Module.
});
}
private:
uint8_t sendStatus;
static uint8_t staticSendStatus;
static void OnDataSent_cb(uint8_t *mac_addr, uint8_t sendStatus_) {
// device::staticSendStatus = sendStatus_;// collect2.exe: error: ld returned 1 exit status. Ошибка компиляции для платы Generic ESP8266 Module.
}
};
void setup() {
device MyDevice;
}
void loop() {}