SensESP 3.1.1
Universal Signal K sensor toolkit ESP32
Loading...
Searching...
No Matches
app_command_handler.cpp
Go to the documentation of this file.
2
3#include <esp_http_server.h>
4#include <memory>
5
6#include "sensesp_app.h"
7
8namespace sensesp {
9
10void add_scan_wifi_networks_handlers(std::shared_ptr<HTTPServer>& server,
11 std::shared_ptr<Networking>& networking) {
12 auto scan_wifi_networks_handler = std::make_shared<HTTPRequestHandler>(
13 1 << HTTP_POST, "/api/wifi/scan", [networking](httpd_req_t* req) {
14 networking->start_wifi_scan();
15 // Return status code 202 and "SCAN STARTED" message
16 httpd_resp_set_status(req, "202 Accepted");
17 httpd_resp_send(req, "SCAN STARTED", 0);
18 return ESP_OK;
19 });
20
21 server->add_handler(scan_wifi_networks_handler);
22
23 auto scan_results_handler = std::make_shared<HTTPRequestHandler>(
24 1 << HTTP_GET, "/api/wifi/scan-results", [networking](httpd_req_t* req) {
25 std::vector<WiFiNetworkInfo> ssid_list;
26 int16_t result = networking->get_wifi_scan_results(ssid_list);
27 if (result == WIFI_SCAN_RUNNING) {
28 // Return status code 202 and "SCAN RUNNING" message
29 httpd_resp_set_status(req, "202 Accepted");
30 httpd_resp_send(req, "SCAN RUNNING", 0);
31 return ESP_OK;
32 } else if (result == WIFI_SCAN_FAILED) {
33 // Return status code 400 and "SCAN FAILED" message
34 httpd_resp_set_status(req, "400 Bad Request");
35 httpd_resp_send(req, "SCAN FAILED", 0);
36 return ESP_OK;
37 }
38 // Construct a JSON array of the scan results
39 JsonDocument doc;
40 JsonArray networks = doc["networks"].to<JsonArray>();
41 for (auto& ssid_info : ssid_list) {
42 JsonObject network = networks.add<JsonObject>();
43 ssid_info.as_json(network);
44 }
45 String json_str;
46 serializeJson(doc, json_str);
47 httpd_resp_set_type(req, "application/json");
48 httpd_resp_send(req, json_str.c_str(), json_str.length());
49 return ESP_OK;
50 });
51
52 server->add_handler(scan_results_handler);
53}
54
55void add_app_http_command_handlers(std::shared_ptr<HTTPServer>& server,
56 std::shared_ptr<Networking>& networking) {
57 add_scan_wifi_networks_handlers(server, networking);
58}
59
60} // namespace sensesp
void add_scan_wifi_networks_handlers(std::shared_ptr< HTTPServer > &server, std::shared_ptr< Networking > &networking)
void add_app_http_command_handlers(std::shared_ptr< HTTPServer > &server, std::shared_ptr< Networking > &networking)