working example of callback with date passing inside and outside for using

This commit is contained in:
Dmitry Borisenko
2020-08-25 01:55:43 +03:00
parent ce7c550410
commit c11983003b
3 changed files with 14 additions and 18 deletions

View File

@@ -1,7 +1,6 @@
#pragma once #pragma once
#include <Arduino.h> #include <Arduino.h>
#include <stdint.h> #include <stdint.h>
#include <functional> #include <functional>
// Декларируем тип - сигнатуру метода , который мы готовы принять в данном случае это // Декларируем тип - сигнатуру метода , который мы готовы принять в данном случае это
@@ -21,13 +20,7 @@ class AsyncActions {
public: public:
AsyncActions(); AsyncActions();
void loop(); void loop();
void setCallback(AsyncActionCb cb);
void setCallback(AsyncActionCb cb) { //передаем внутрь класса функцию любую void функцию без агрументов void setCallback(AsyncParamActionCb pcb);
_cb = cb;
}
void setCallback(AsyncParamActionCb cb) { //передаем внутрь класса функцию любую void функцию с аргументами
_pcb = cb;
}
}; };
extern AsyncActions* async; extern AsyncActions* async;

View File

@@ -5,6 +5,7 @@ AsyncActions::AsyncActions(){};
void AsyncActions::loop() { void AsyncActions::loop() {
count++; count++;
if (count > 5000) { if (count > 5000) {
// Проверяем что переменная содержит указатель - не пустая не null // Проверяем что переменная содержит указатель - не пустая не null
// и непосредственно вызываем то, на что это указывает // и непосредственно вызываем то, на что это указывает
// просто пишем имя - без () - это указатель на фунецию. // просто пишем имя - без () - это указатель на фунецию.
@@ -18,9 +19,9 @@ void AsyncActions::loop() {
if (_pcb) { if (_pcb) {
if (_pcb("SomeTextValue")) { if (_pcb("SomeTextValue")) {
Serial.print("Got true!"); Serial.println("Got true!");
} else { } else {
Serial.print("Got false!"); Serial.println("Got false!");
} }
} }
@@ -28,5 +29,13 @@ void AsyncActions::loop() {
} }
} }
//передаем внутрь класса функцию любую void функцию без агрументов
void AsyncActions::setCallback(AsyncActionCb cb) {
_cb = cb;
}
//передаем внутрь класса функцию любую void функцию с аргументами
void AsyncActions::setCallback(AsyncParamActionCb pcb) {
_pcb = pcb;
}
AsyncActions* async; AsyncActions* async;

View File

@@ -77,19 +77,13 @@ void setup() {
async = new AsyncActions(); async = new AsyncActions();
//async->setCallback([&](void*) {
//
//
//});
async->setCallback([]() { async->setCallback([]() {
Serial.println("123"); Serial.println("123");
}); });
async->setCallback([](const String str) { async->setCallback([](const String str) {
Serial.println(str); Serial.println(str);
return true;
return false;
}); });
} }