0
0
Fork 0
wireless-proxy-esp32/project_components/wifi_manager/wifi_api_json.c

73 lines
1.5 KiB
C

#include "wifi_api_json.h"
#include "api_json_router.h"
#include "wifi_api.h"
#include "wifi_json_utils.h"
#include <stdio.h>
static int wifi_api_json_get_ap_info(api_json_req_t *req, api_json_resp_t *resp);
static int wifi_api_json_get_scan(api_json_req_t *req, api_json_resp_t *resp);
static int on_json_req(uint16_t cmd, api_json_req_t *req, api_json_resp_t *rsp)
{
wifi_api_json_cmd_t wifi_cmd = cmd;
switch (wifi_cmd) {
case WIFI_API_JSON_GET_AP_INFO:
return wifi_api_json_get_ap_info(req, rsp);
case WIFI_API_JSON_CONNECT:
break;
case WIFI_API_JSON_GET_SCAN:
return wifi_api_json_get_scan(req, rsp);
case UNKNOWN:
default:
break;
}
printf("%d\n", cmd);
return 0;
}
static int wifi_api_json_get_ap_info(api_json_req_t *req, api_json_resp_t *resp)
{
wifi_api_ap_info_t ap_info;
wifi_api_get_ap_info(&ap_info);
resp->json = wifi_api_json_serialize_ap_info(&ap_info);
return 0;
}
static int wifi_api_json_get_scan(api_json_req_t *req, api_json_resp_t *resp)
{
wifi_api_ap_info_t ap_info[20];
uint16_t max_count = 20;
int err;
err = wifi_api_get_scan_list(&max_count, ap_info);
if (err == ESP_ERR_NOT_FINISHED) {
resp->json = wifi_api_json_create_err_rsp(req->json, "Wi-Fi scan busy");
return 1;
}
resp->json = wifi_api_json_serialize_scan_list(ap_info, max_count);
return 0;
}
/* ****
* register module
* */
static int wifi_api_json_init(api_json_module_cfg_t *cfg)
{
cfg->on_req = on_json_req;
cfg->module_id = 1;
return 0;
}
API_JSON_MODULE_REGISTER(0x90, wifi_api_json_init);