mirror of
https://github.com/MrUnknownDE/OpenIris-ESPIDF.git
synced 2026-04-15 04:23:46 +02:00
42 lines
1.6 KiB
C++
42 lines
1.6 KiB
C++
#include "scan_commands.hpp"
|
|
#include "sdkconfig.h"
|
|
|
|
CommandResult scanNetworksCommand(std::shared_ptr<DependencyRegistry> registry)
|
|
{
|
|
#if !CONFIG_GENERAL_ENABLE_WIRELESS
|
|
return CommandResult::getErrorResult("Not supported by current firmware");
|
|
#endif
|
|
auto wifiManager = registry->resolve<WiFiManager>(DependencyType::wifi_manager);
|
|
if (!wifiManager)
|
|
{
|
|
return CommandResult::getErrorResult("Not supported by current firmware");
|
|
}
|
|
|
|
auto networks = wifiManager->ScanNetworks();
|
|
|
|
cJSON *root = cJSON_CreateObject();
|
|
cJSON *networksArray = cJSON_CreateArray();
|
|
cJSON_AddItemToObject(root, "networks", networksArray);
|
|
|
|
for (const auto &network : networks)
|
|
{
|
|
cJSON *networkObject = cJSON_CreateObject();
|
|
cJSON_AddStringToObject(networkObject, "ssid", network.ssid.c_str());
|
|
cJSON_AddNumberToObject(networkObject, "channel", network.channel);
|
|
cJSON_AddNumberToObject(networkObject, "rssi", network.rssi);
|
|
char mac_str[18];
|
|
sprintf(mac_str, "%02x:%02x:%02x:%02x:%02x:%02x",
|
|
network.mac[0], network.mac[1], network.mac[2],
|
|
network.mac[3], network.mac[4], network.mac[5]);
|
|
cJSON_AddStringToObject(networkObject, "mac_address", mac_str);
|
|
cJSON_AddNumberToObject(networkObject, "auth_mode", network.auth_mode);
|
|
cJSON_AddItemToArray(networksArray, networkObject);
|
|
}
|
|
|
|
char *json_string = cJSON_PrintUnformatted(root);
|
|
printf("%s\n", json_string);
|
|
cJSON_Delete(root);
|
|
free(json_string);
|
|
|
|
return CommandResult::getSuccessResult("Networks scanned");
|
|
} |