mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 20:09:14 +03:00
working example of callback with date passing inside and outside for using
This commit is contained in:
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user