1#ifndef _PAINLESS_MESH_PLUGIN_HPP_
2#define _PAINLESS_MESH_PLUGIN_HPP_
54 from = jsonObj[
"from"];
55 dest = jsonObj[
"dest"];
56 type = jsonObj[
"type"];
60 JsonObject
addTo(JsonObject&& jsonObj)
const {
61 jsonObj[
"from"] =
from;
62 jsonObj[
"dest"] =
dest;
63 jsonObj[
"routing"] =
static_cast<int>(
routing);
64 jsonObj[
"type"] =
type;
79 from = jsonObj[
"from"];
80 type = jsonObj[
"type"];
84 JsonObject
addTo(JsonObject&& jsonObj)
const {
85 jsonObj[
"from"] =
from;
86 jsonObj[
"routing"] =
static_cast<int>(
routing);
87 jsonObj[
"type"] =
type;
131 load = jsonObj[
"load"] | 0;
135 if (jsonObj[
"peerBridges"].is<JsonArray>()) {
136 JsonArray peers = jsonObj[
"peerBridges"];
137 for (JsonVariant peer : peers) {
143 JsonObject
addTo(JsonObject&& jsonObj)
const {
146 jsonObj[
"role"] =
role;
147 jsonObj[
"load"] =
load;
151 JsonArray peers = jsonObj[
"peerBridges"].to<JsonArray>();
159#if ARDUINOJSON_VERSION_MAJOR < 7
162 size_t peerArraySize = JSON_ARRAY_SIZE(
peerBridges.size()) +
185 void stop(Scheduler* scheduler =
nullptr) {
198 Task* current = scheduler ? scheduler->getCurrentTask() :
nullptr;
200 if (current !=
nullptr && it->get() == current) {
210 (*it)->setCallback(NULL);
219 "~PackageHandler(): Always call PackageHandler::stop(scheduler) "
220 "before calling this destructor");
235 if (i > 0)
return true;
243 uint32_t) {
return function(var); };
255 std::shared_ptr<Task>
addTask(Scheduler& scheduler,
unsigned long aInterval,
257 std::function<
void()> aCallback) {
261 if (task.use_count() == 1 && !task->isEnabled()) {
262 task->set(aInterval, aIterations, aCallback, NULL, NULL);
265 if (aInterval > 0 && aIterations == TASK_ONCE) {
266 task->enableDelayed();
274 std::shared_ptr<Task> task =
275 std::make_shared<Task>(aInterval, aIterations, aCallback);
276 scheduler.addTask((*task));
279 if (aInterval > 0 && aIterations == TASK_ONCE) {
280 task->enableDelayed();
288 std::shared_ptr<Task>
addTask(Scheduler& scheduler,
289 std::function<
void()> aCallback) {
290 return this->
addTask(scheduler, 0, TASK_ONCE, aCallback);
296 if (it->first !=
nullptr &&
297 it->first->getCurrentTask() == it->second.get()) {
301 it->second->disable();
302 it->second->setCallback(NULL);
Definition callback.hpp:57
Definition plugin.hpp:117
int noJsonFields
Definition plugin.hpp:124
BridgeCoordinationPackage(JsonObject jsonObj)
Definition plugin.hpp:128
size_t jsonObjectSize() const
Definition plugin.hpp:160
BridgeCoordinationPackage()
Definition plugin.hpp:126
JsonObject addTo(JsonObject &&jsonObj) const
Definition plugin.hpp:143
std::vector< uint32_t > peerBridges
Definition plugin.hpp:121
TSTRING role
Definition plugin.hpp:120
uint8_t priority
Definition plugin.hpp:119
uint8_t load
Definition plugin.hpp:122
uint32_t timestamp
Definition plugin.hpp:123
JsonObject addTo(JsonObject &&jsonObj) const
Definition plugin.hpp:84
BroadcastPackage(int type)
Definition plugin.hpp:76
int noJsonFields
Definition plugin.hpp:74
router::Type routing
Definition plugin.hpp:72
int type
Definition plugin.hpp:73
uint32_t from
Definition plugin.hpp:71
BroadcastPackage(JsonObject jsonObj)
Definition plugin.hpp:78
NeighbourPackage(JsonObject jsonObj)
Definition plugin.hpp:98
NeighbourPackage(int type)
Definition plugin.hpp:94
Definition plugin.hpp:178
~PackageHandler()
Definition plugin.hpp:216
bool sendPackage(const protocol::PackageInterface *pkg)
Definition plugin.hpp:223
void reclaimQuarantinedTasks()
Definition plugin.hpp:294
std::shared_ptr< Task > addTask(Scheduler &scheduler, unsigned long aInterval, long aIterations, std::function< void()> aCallback)
Definition plugin.hpp:255
std::list< std::pair< Scheduler *, std::shared_ptr< Task > > > quarantinedTasks
Definition plugin.hpp:312
void onPackage(int type, std::function< bool(protocol::Variant &)> function)
Definition plugin.hpp:241
std::shared_ptr< Task > addTask(Scheduler &scheduler, std::function< void()> aCallback)
Definition plugin.hpp:288
callback::MeshPackageCallbackList< T > callbackList
Definition plugin.hpp:307
std::list< std::shared_ptr< Task > > taskList
Definition plugin.hpp:308
void stop(Scheduler *scheduler=nullptr)
Definition plugin.hpp:185
uint32_t dest
Definition plugin.hpp:46
int type
Definition plugin.hpp:48
int noJsonFields
Definition plugin.hpp:49
SinglePackage(JsonObject jsonObj)
Definition plugin.hpp:53
SinglePackage(int type)
Definition plugin.hpp:51
router::Type routing
Definition plugin.hpp:47
JsonObject addTo(JsonObject &&jsonObj) const
Definition plugin.hpp:60
uint32_t from
Definition plugin.hpp:45
Definition protocol.hpp:76
Definition protocol.hpp:481
String TSTRING
Definition configuration.hpp:132
@ ERROR
Definition logger.hpp:19
Type
Definition protocol.hpp:30
@ NEIGHBOUR
Definition protocol.hpp:30
@ SINGLE
Definition protocol.hpp:30
@ BROADCAST
Definition protocol.hpp:30
bool send(T &package, std::shared_ptr< U > conn, bool priority=false)
Definition router.hpp:65
size_t broadcast(protocol::Variant &variant, const layout::Layout< T > &layout, uint32_t exclude)
Definition router.hpp:161
painlessmesh::logger::LogClass Log
Definition wifi.cpp:2