call back test class

This commit is contained in:
Dmitry Borisenko
2020-08-25 15:45:06 +03:00
parent c11983003b
commit b1318de1dc
3 changed files with 23 additions and 15 deletions

View File

@@ -8,19 +8,19 @@
// Новый тип мы называем AsynсActionCb - хотя можешь назвать вообще как нравиться а что значит callBack // Новый тип мы называем AsynсActionCb - хотя можешь назвать вообще как нравиться а что значит callBack
typedef std::function<void()> AsyncActionCb; //метод без результата и параметров typedef std::function<void()> AsyncActionCb; //метод без результата и параметров
typedef std::function<bool(const String)> AsyncParamActionCb; //метод без результата и параметров typedef std::function<bool(const String)> AsyncParamActionCb; //метод без результата и параметров
class AsyncActions { class CallBackTest {
private: private:
long count; long count;
AsyncActionCb _cb; AsyncActionCb _cb;
AsyncParamActionCb _pcb; AsyncParamActionCb _pcb;
public: public:
AsyncActions(); CallBackTest();
void loop(); void loop();
void setCallback(AsyncActionCb cb); void setCallback(AsyncActionCb cb);
void setCallback(AsyncParamActionCb pcb); void setCallback(AsyncParamActionCb pcb);
}; };
extern AsyncActions* async; extern CallBackTest* CB;

View File

@@ -1,11 +1,10 @@
#include "Class/AsyncActions.h" #include "Class/CallBackTest.h"
AsyncActions::AsyncActions(){}; CallBackTest::CallBackTest(){};
void AsyncActions::loop() { void CallBackTest::loop() {
count++; count++;
if (count > 5000) { if (count > 5000) {
// Проверяем что переменная содержит указатель - не пустая не null // Проверяем что переменная содержит указатель - не пустая не null
// и непосредственно вызываем то, на что это указывает // и непосредственно вызываем то, на что это указывает
// просто пишем имя - без () - это указатель на фунецию. // просто пишем имя - без () - это указатель на фунецию.
@@ -30,12 +29,21 @@ void AsyncActions::loop() {
} }
//передаем внутрь класса функцию любую void функцию без агрументов //передаем внутрь класса функцию любую void функцию без агрументов
void AsyncActions::setCallback(AsyncActionCb cb) { void CallBackTest::setCallback(AsyncActionCb cb) {
_cb = cb; _cb = cb;
} }
//передаем внутрь класса функцию любую void функцию с аргументами //передаем внутрь класса функцию любую void функцию с аргументами
void AsyncActions::setCallback(AsyncParamActionCb pcb) { void CallBackTest::setCallback(AsyncParamActionCb pcb) {
_pcb = pcb; _pcb = pcb;
} }
AsyncActions* async; CallBackTest* CB;
//CB->setCallback([]() {
// Serial.println("123");
//});
//
//CB->setCallback([](const String str) {
// Serial.println(str);
// return true;
//});

View File

@@ -75,13 +75,13 @@ void setup() {
just_load = false; just_load = false;
initialized = true; initialized = true;
async = new AsyncActions(); CB = new CallBackTest();
async->setCallback([]() { CB->setCallback([]() {
Serial.println("123"); Serial.println("123");
}); });
async->setCallback([](const String str) { CB->setCallback([](const String str) {
Serial.println(str); Serial.println(str);
return true; return true;
}); });