From 2ac6d894b8b1177f8b798cf2f242ab66c5953718 Mon Sep 17 00:00:00 2001 From: kerms Date: Wed, 20 Mar 2024 10:37:12 +0800 Subject: [PATCH] feat(wifi) add cmd and module_id to response packet --- project_components/web_server/uri_modules/uri_ws.c | 2 ++ project_components/wifi_manager/wifi_api.h | 10 ++++++++++ project_components/wifi_manager/wifi_api_json.c | 2 +- project_components/wifi_manager/wifi_api_json.h | 9 --------- project_components/wifi_manager/wifi_json_utils.c | 8 ++++++++ 5 files changed, 21 insertions(+), 10 deletions(-) diff --git a/project_components/web_server/uri_modules/uri_ws.c b/project_components/web_server/uri_modules/uri_ws.c index 6313aa6..113d243 100644 --- a/project_components/web_server/uri_modules/uri_ws.c +++ b/project_components/web_server/uri_modules/uri_ws.c @@ -348,6 +348,8 @@ static void send_heartbeat(void *arg) int err; err = httpd_ws_send_frame_async(client_info->hd, client_info->fd, &ws_pkt); if (err) { + ws_rm_fd(client_info->fd); + httpd_sess_trigger_close(client_info->hd, client_info->fd); ESP_LOGE(TAG, "hb send err: %s", esp_err_to_name(err)); } } diff --git a/project_components/wifi_manager/wifi_api.h b/project_components/wifi_manager/wifi_api.h index e72aa46..e8c02e0 100644 --- a/project_components/wifi_manager/wifi_api.h +++ b/project_components/wifi_manager/wifi_api.h @@ -3,6 +3,16 @@ #include +#define WIFI_API_MODULE_ID 1 + +typedef enum wifi_api_json_cmd_t { + UNKNOWN = 0, + WIFI_API_JSON_GET_AP_INFO, + WIFI_API_JSON_CONNECT, + WIFI_API_JSON_GET_SCAN, + WIFI_API_JSON_DISCONNECT, +} wifi_api_json_cmd_t; + typedef struct wifi_api_ap_info_t { ip4_addr_t ip; ip4_addr_t gateway; diff --git a/project_components/wifi_manager/wifi_api_json.c b/project_components/wifi_manager/wifi_api_json.c index a2b2fc5..6754ca5 100644 --- a/project_components/wifi_manager/wifi_api_json.c +++ b/project_components/wifi_manager/wifi_api_json.c @@ -107,7 +107,7 @@ int wifi_api_json_disconnect(api_json_req_t *req) static int wifi_api_json_init(api_json_module_cfg_t *cfg) { cfg->on_req = on_json_req; - cfg->module_id = 1; + cfg->module_id = WIFI_API_MODULE_ID; return 0; } diff --git a/project_components/wifi_manager/wifi_api_json.h b/project_components/wifi_manager/wifi_api_json.h index 26dbdec..2e7a56d 100644 --- a/project_components/wifi_manager/wifi_api_json.h +++ b/project_components/wifi_manager/wifi_api_json.h @@ -1,13 +1,4 @@ #ifndef WIFI_API_JSON_H_GUARD #define WIFI_API_JSON_H_GUARD -typedef enum wifi_api_json_cmd_t { - UNKNOWN = 0, - WIFI_API_JSON_GET_AP_INFO, - WIFI_API_JSON_CONNECT, - WIFI_API_JSON_GET_SCAN, - WIFI_API_JSON_DISCONNECT, - -} wifi_api_json_cmd_t; - #endif //WIFI_API_JSON_H_GUARD \ No newline at end of file diff --git a/project_components/wifi_manager/wifi_json_utils.c b/project_components/wifi_manager/wifi_json_utils.c index 7c8d135..6679d8d 100644 --- a/project_components/wifi_manager/wifi_json_utils.c +++ b/project_components/wifi_manager/wifi_json_utils.c @@ -3,12 +3,19 @@ #include "wifi_json_utils.h" #include "wifi_api.h" +static void wifi_api_json_set_header(cJSON *root, uint16_t cmd) +{ + cJSON_AddNumberToObject(root, "cmd", cmd); + cJSON_AddNumberToObject(root, "module", WIFI_API_MODULE_ID); +} + cJSON *wifi_api_json_serialize_ap_info(wifi_api_ap_info_t *ap_info) { cJSON *root; root = cJSON_CreateObject(); + wifi_api_json_set_header(root, WIFI_API_JSON_GET_AP_INFO); cJSON_AddStringToObject(root, "ip", ip4addr_ntoa(&ap_info->ip)); cJSON_AddStringToObject(root, "gateway", ip4addr_ntoa(&ap_info->gateway)); cJSON_AddStringToObject(root, "netmask", ip4addr_ntoa(&ap_info->netmask)); @@ -30,6 +37,7 @@ cJSON *wifi_api_json_serialize_scan_list(wifi_api_ap_info_t *aps_info, uint16_t char mac_str[18]; root = cJSON_CreateObject(); + wifi_api_json_set_header(root, WIFI_API_JSON_GET_SCAN); cJSON *scan_list = cJSON_AddArrayToObject(root, "scan_list"); for (int i = 0; i < count; ++i) {