From c11983003bbb4c05704646a86eb618912e24879f Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Tue, 25 Aug 2020 01:55:43 +0300 Subject: [PATCH] working example of callback with date passing inside and outside for using --- include/Class/AsyncActions.h | 11 ++--------- src/Class/AsyncActions.cpp | 13 +++++++++++-- src/main.cpp | 8 +------- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/include/Class/AsyncActions.h b/include/Class/AsyncActions.h index fe81b186..6d639752 100644 --- a/include/Class/AsyncActions.h +++ b/include/Class/AsyncActions.h @@ -1,7 +1,6 @@ #pragma once #include #include - #include // Декларируем тип - сигнатуру метода , который мы готовы принять в данном случае это @@ -21,13 +20,7 @@ class AsyncActions { public: AsyncActions(); void loop(); - - void setCallback(AsyncActionCb cb) { //передаем внутрь класса функцию любую void функцию без агрументов - _cb = cb; - } - - void setCallback(AsyncParamActionCb cb) { //передаем внутрь класса функцию любую void функцию с аргументами - _pcb = cb; - } + void setCallback(AsyncActionCb cb); + void setCallback(AsyncParamActionCb pcb); }; extern AsyncActions* async; \ No newline at end of file diff --git a/src/Class/AsyncActions.cpp b/src/Class/AsyncActions.cpp index 13705f9f..821152b0 100644 --- a/src/Class/AsyncActions.cpp +++ b/src/Class/AsyncActions.cpp @@ -5,6 +5,7 @@ AsyncActions::AsyncActions(){}; void AsyncActions::loop() { count++; if (count > 5000) { + // Проверяем что переменная содержит указатель - не пустая не null // и непосредственно вызываем то, на что это указывает // просто пишем имя - без () - это указатель на фунецию. @@ -18,9 +19,9 @@ void AsyncActions::loop() { if (_pcb) { if (_pcb("SomeTextValue")) { - Serial.print("Got true!"); + Serial.println("Got true!"); } 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; \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 129e36a1..78f0c39c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -77,19 +77,13 @@ void setup() { async = new AsyncActions(); - //async->setCallback([&](void*) { - // - // - //}); - async->setCallback([]() { Serial.println("123"); }); async->setCallback([](const String str) { Serial.println(str); - - return false; + return true; }); }