#include #include #include "Globals.h" #include "NodeContext.h" #include "NetworkManager.h" #include "ClusterManager.h" #include "ApiServer.h" #include "TaskManager.h" // Services #include "NodeService.h" #include "NetworkService.h" #include "ClusterService.h" #include "TaskService.h" #include "NeoPixelService.h" #ifndef NEOPIXEL_PIN #define NEOPIXEL_PIN 2 #endif #ifndef NEOPIXEL_COUNT #define NEOPIXEL_COUNT 16 #endif #ifndef NEOPIXEL_TYPE #define NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800) #endif NodeContext ctx({ {"app", "neopixel"}, {"device", "light"}, {"pixels", String(NEOPIXEL_COUNT)}, {"pin", String(NEOPIXEL_PIN)} }); NetworkManager network(ctx); TaskManager taskManager(ctx); ClusterManager cluster(ctx, taskManager); ApiServer apiServer(ctx, taskManager, ctx.config.api_server_port); // Create services NodeService nodeService(ctx); NetworkService networkService(network); ClusterService clusterService(ctx); TaskService taskService(taskManager); NeoPixelService neoPixelService(taskManager, NEOPIXEL_COUNT, NEOPIXEL_PIN, NEOPIXEL_TYPE); void setup() { Serial.begin(115200); // Setup WiFi first network.setupWiFi(); // Initialize and start all tasks taskManager.initialize(); // Register services and start API server apiServer.addService(nodeService); apiServer.addService(networkService); apiServer.addService(clusterService); apiServer.addService(taskService); apiServer.addService(neoPixelService); apiServer.begin(); // Print initial task status taskManager.printTaskStatus(); } void loop() { taskManager.execute(); yield(); }