41 lines
1.5 KiB
C++
41 lines
1.5 KiB
C++
#include <Arduino.h>
|
|
#include "Globals.h"
|
|
#include "NodeContext.h"
|
|
#include "NetworkManager.h"
|
|
#include "ClusterManager.h"
|
|
#include "RestApiServer.h"
|
|
|
|
NodeContext ctx;
|
|
NetworkManager network(ctx);
|
|
ClusterManager cluster(ctx);
|
|
RestApiServer apiServer(ctx);
|
|
|
|
Task tSendDiscovery(TaskIntervals::SEND_DISCOVERY, TASK_FOREVER, [](){ cluster.sendDiscovery(); });
|
|
Task tListenForDiscovery(TaskIntervals::LISTEN_FOR_DISCOVERY, TASK_FOREVER, [](){ cluster.listenForDiscovery(); });
|
|
Task tUpdateStatus(TaskIntervals::UPDATE_STATUS, TASK_FOREVER, [](){ cluster.updateAllNodeStatuses(); cluster.removeDeadNodes(); });
|
|
Task tPrintMemberList(TaskIntervals::PRINT_MEMBER_LIST, TASK_FOREVER, [](){ cluster.printMemberList(); });
|
|
Task tHeartbeat(TaskIntervals::HEARTBEAT, TASK_FOREVER, [](){ cluster.heartbeatTaskCallback(); });
|
|
Task tUpdateAllMembersInfo(TaskIntervals::UPDATE_ALL_MEMBERS_INFO, TASK_FOREVER, [](){ cluster.updateAllMembersInfoTaskCallback(); });
|
|
|
|
void setup() {
|
|
network.setupWiFi();
|
|
ctx.scheduler->init();
|
|
ctx.scheduler->addTask(tSendDiscovery);
|
|
ctx.scheduler->addTask(tListenForDiscovery);
|
|
ctx.scheduler->addTask(tUpdateStatus);
|
|
ctx.scheduler->addTask(tPrintMemberList);
|
|
ctx.scheduler->addTask(tHeartbeat);
|
|
ctx.scheduler->addTask(tUpdateAllMembersInfo);
|
|
tSendDiscovery.enable();
|
|
tListenForDiscovery.enable();
|
|
tUpdateStatus.enable();
|
|
tPrintMemberList.enable();
|
|
tHeartbeat.enable();
|
|
tUpdateAllMembersInfo.enable();
|
|
apiServer.begin();
|
|
}
|
|
|
|
void loop() {
|
|
ctx.scheduler->execute();
|
|
}
|