Made proper response structure for network scan

This commit is contained in:
Niklas Jensen
2026-01-30 19:19:15 +01:00
committed by nikguin04
parent bce9041f1f
commit bdee1d0e04
3 changed files with 20 additions and 11 deletions
+1
View File
@@ -364,6 +364,7 @@ esp_err_t WebServer::sendOkProto(httpd_req_t* req) { return sendProto(req, 200,
esp_err_t WebServer::sendProto(httpd_req_t* req, int status, const uint8_t* data, size_t len) {
httpd_resp_set_status(req, status == 200 ? "200 OK"
: status == 202 ? "202 Accepted"
: status == 400 ? "400 Bad Request"
: status == 404 ? "404 Not Found"
: status == 500 ? "500 Internal Server Error"
+11 -4
View File
@@ -47,15 +47,21 @@ esp_err_t WiFiService::handleScan(httpd_req_t *request) {
WiFi.scanDelete();
WiFi.scanNetworks(true);
}
httpd_resp_set_status(request, "202 Accepted");
return httpd_resp_send(request, nullptr, 0);
// Return 202 with empty_message payload (no pointer fields to encode)
api_Response response = api_Response_init_zero;
response.status_code = 202;
response.which_payload = api_Response_empty_message_tag;
return WebServer::sendProto(request, 202, response, api_Response_fields);
}
esp_err_t WiFiService::getNetworks(httpd_req_t *request) {
int numNetworks = WiFi.scanComplete();
if (numNetworks == -1) {
httpd_resp_set_status(request, "202 Accepted");
return httpd_resp_send(request, nullptr, 0);
// Scan in progress - return 202 with empty_message payload
api_Response response = api_Response_init_zero;
response.status_code = 202;
response.which_payload = api_Response_empty_message_tag;
return WebServer::sendProto(request, 202, response, api_Response_fields);
} else if (numNetworks < -1) {
return handleScan(request);
}
@@ -75,6 +81,7 @@ esp_err_t WiFiService::getNetworks(httpd_req_t *request) {
}
api_Response response = api_Response_init_zero;
response.status_code = 200;
response.which_payload = api_Response_wifi_network_list_tag;
response.payload.wifi_network_list.networks = networks;
response.payload.wifi_network_list.networks_count = count;