feat: services (#2)

This commit is contained in:
2025-09-13 13:45:24 +02:00
parent fe045804cb
commit 12caeb0be6
33 changed files with 3293 additions and 785 deletions

View File

@@ -0,0 +1,16 @@
#pragma once
#include "services/Service.h"
#include "NodeContext.h"
#include <ArduinoJson.h>
class ClusterService : public Service {
public:
ClusterService(NodeContext& ctx);
void registerEndpoints(ApiServer& api) override;
const char* getName() const override { return "Cluster"; }
private:
NodeContext& ctx;
void handleMembersRequest(AsyncWebServerRequest* request);
};

View File

@@ -0,0 +1,22 @@
#pragma once
#include "services/Service.h"
#include "NetworkManager.h"
#include "NodeContext.h"
class NetworkService : public Service {
public:
NetworkService(NetworkManager& networkManager);
void registerEndpoints(ApiServer& api) override;
const char* getName() const override { return "Network"; }
private:
NetworkManager& networkManager;
// WiFi scanning endpoints
void handleWifiScanRequest(AsyncWebServerRequest* request);
void handleGetWifiNetworks(AsyncWebServerRequest* request);
// Network status endpoints
void handleNetworkStatus(AsyncWebServerRequest* request);
void handleSetWifiConfig(AsyncWebServerRequest* request);
};

View File

@@ -0,0 +1,21 @@
#pragma once
#include "services/Service.h"
#include "NodeContext.h"
#include <ArduinoJson.h>
#include <Updater.h>
class NodeService : public Service {
public:
NodeService(NodeContext& ctx);
void registerEndpoints(ApiServer& api) override;
const char* getName() const override { return "Node"; }
private:
NodeContext& ctx;
void handleStatusRequest(AsyncWebServerRequest* request);
void handleUpdateRequest(AsyncWebServerRequest* request);
void handleUpdateUpload(AsyncWebServerRequest* request, const String& filename, size_t index, uint8_t* data, size_t len, bool final);
void handleRestartRequest(AsyncWebServerRequest* request);
void handleCapabilitiesRequest(AsyncWebServerRequest* request);
};

View File

@@ -0,0 +1,9 @@
#pragma once
#include "ApiServer.h"
class Service {
public:
virtual ~Service() = default;
virtual void registerEndpoints(ApiServer& api) = 0;
virtual const char* getName() const = 0;
};

View File

@@ -0,0 +1,17 @@
#pragma once
#include "services/Service.h"
#include "TaskManager.h"
#include <ArduinoJson.h>
class TaskService : public Service {
public:
TaskService(TaskManager& taskManager);
void registerEndpoints(ApiServer& api) override;
const char* getName() const override { return "Task"; }
private:
TaskManager& taskManager;
void handleStatusRequest(AsyncWebServerRequest* request);
void handleControlRequest(AsyncWebServerRequest* request);
};