#include "WifiScanService.h" #include WifiScanService::WifiScanService(NetworkManager& networkManager) : networkManager(networkManager) {} void WifiScanService::registerEndpoints(ApiServer& api) { // POST /api/wifi/scan - Start WiFi scan api.addEndpoint("/api/wifi/scan", HTTP_POST, [this](AsyncWebServerRequest* request) { this->handleScanRequest(request); }, std::vector{}); // GET /api/wifi - Get all access points api.addEndpoint("/api/wifi", HTTP_GET, [this](AsyncWebServerRequest* request) { this->handleGetAccessPoints(request); }, std::vector{}); } void WifiScanService::handleScanRequest(AsyncWebServerRequest* request) { networkManager.scanWifi(); AsyncResponseStream *response = request->beginResponseStream("application/json"); JsonDocument doc; doc["status"] = "scanning"; doc["message"] = "WiFi scan started"; serializeJson(doc, *response); request->send(response); } void WifiScanService::handleGetAccessPoints(AsyncWebServerRequest* request) { auto accessPoints = networkManager.getAccessPoints(); JsonDocument doc; doc["access_points"].to(); for (const auto& ap : accessPoints) { JsonObject apObj = doc["access_points"].add(); apObj["ssid"] = ap.ssid; apObj["rssi"] = ap.rssi; apObj["channel"] = ap.channel; apObj["encryption_type"] = ap.encryptionType; apObj["hidden"] = ap.isHidden; // Convert BSSID to string char bssid[18]; sprintf(bssid, "%02X:%02X:%02X:%02X:%02X:%02X", ap.bssid[0], ap.bssid[1], ap.bssid[2], ap.bssid[3], ap.bssid[4], ap.bssid[5]); apObj["bssid"] = bssid; } AsyncResponseStream *response = request->beginResponseStream("application/json"); serializeJson(doc, *response); request->send(response); }