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

@@ -7,20 +7,20 @@
// должен быть метод без результата и без параметров.
// Новый тип мы называем AsynсActionCb - хотя можешь назвать вообще как нравиться а что значит callBack
typedef std::function<void()> AsyncActionCb; //метод без результата и параметров
typedef std::function<void()> AsyncActionCb; //метод без результата и параметров
typedef std::function<bool(const String)> AsyncParamActionCb; //метод без результата и параметров
class AsyncActions {
class CallBackTest {
private:
long count;
AsyncActionCb _cb;
AsyncParamActionCb _pcb;
public:
AsyncActions();
CallBackTest();
void loop();
void setCallback(AsyncActionCb cb);
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++;
if (count > 5000) {
// Проверяем что переменная содержит указатель - не пустая не null
// и непосредственно вызываем то, на что это указывает
// просто пишем имя - без () - это указатель на фунецию.
@@ -30,12 +29,21 @@ void AsyncActions::loop() {
}
//передаем внутрь класса функцию любую void функцию без агрументов
void AsyncActions::setCallback(AsyncActionCb cb) {
void CallBackTest::setCallback(AsyncActionCb cb) {
_cb = cb;
}
//передаем внутрь класса функцию любую void функцию с аргументами
void AsyncActions::setCallback(AsyncParamActionCb pcb) {
void CallBackTest::setCallback(AsyncParamActionCb 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;
initialized = true;
async = new AsyncActions();
CB = new CallBackTest();
async->setCallback([]() {
CB->setCallback([]() {
Serial.println("123");
});
async->setCallback([](const String str) {
CB->setCallback([](const String str) {
Serial.println(str);
return true;
});