Преглед на файлове

add macros add tags (use cjson lib)

balbekova преди 5 години
родител
ревизия
e2059de619
променени са 2 файла, в които са добавени 34 реда и са изтрити 335 реда
  1. 27 335
      modules/HTTP_Server/web_params_api.c
  2. 7 0
      modules/HTTP_Server/web_params_api.h

+ 27 - 335
modules/HTTP_Server/web_params_api.c

@@ -10,21 +10,22 @@
  *******************************************************************************
  */
 
+#include "common_config.h"
 #include "stm32f4xx.h"
 #include "web_params_api.h"
-#if defined HARDWARE_BT6707 || HARDWARE_BT6709
+#if defined HTTP_SERVER_ENABLE
 #include "http_server.h"
-#elif defined HARDWARE_BT6703
+#elif defined SSL_SERVER_ENABLE
 #include "my_ssl_server.h"
 #endif
 #include "parameters.h"
 #include "snmp_api.h"
 #include "trap_api.h"
 #include "settings_api.h"
-#include "common_config.h"
 #include "snmp.h"
 #include "log.h"
 #include "hal.h"
+#include "cJSON.h"
 
 #include "FreeRTOS.h"
 #include "task.h"
@@ -54,113 +55,24 @@ char *HTTP_GetParamsPage(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t le
     (void)lenBufIn;
     (void)reqNum;
 
+    cJSON *monitor_param = NULL;
+
     memset(bufOut, 0, SEND_BUF_MAX_LEN);
 
     // Headers для поддержки saffari
     strcpy(bufOut, "HTTP/1.0 200 OK\r\nContent-Type:text/html\r\n\r\n");
 
-    // Параметры UPS
-
-    GetInputVoltageStr(str, &len);
-    strcat(bufOut, "{\"AC\":\"");
-    strncat(bufOut, str, len);
-
-    GetOutputVoltageStr(str, &len);
-    strcat(bufOut, "\",\"DC\":\"");
-    strncat(bufOut, str, len);
-
-    GetInputFreqStr(str, &len);
-    strcat(bufOut, "\",\"in_freq\":\"");
-    strncat(bufOut, str, len);
-
-    GetOutputFreqStr(str, &len);
-    strcat(bufOut, "\",\"out_freq\":\"");
-    strncat(bufOut, str, len);
-
-    GetPowerStr(str, &len);
-    strcat(bufOut, "\",\"pwr\":\"");
-    strncat(bufOut, str, len);
-
-    GetBatCapacityStr(str, &len);
-    strcat(bufOut, "\",\"bat_rem_cap\":\"");
-    strncat(bufOut, str, len);
-
-    GetInternalTempStr(str, &len);
-    strcat(bufOut, "\",\"inner_temp\":\"");
-    strncat(bufOut, str, len);
-
-    GetRuntimeStr(str, &len);
-    strcat(bufOut, "\",\"bat_time_left\":\"");
-    strncat(bufOut, str, len);
-
-#ifdef HARDWARE_BT6709
-
-    GetInputCurrentStr(str, &len);
-    strcat(bufOut, "\",\"in_cur\":\"");
-    strncat(bufOut, str, len);
-
-    GetOutputCurrentStr(str, &len);
-    strcat(bufOut, "\",\"out_cur\":\"");
-    strncat(bufOut, str, len);
-
-    GetVoltageAKBtStr(str, &len);
-    strcat(bufOut, "\",\"bat_volt\":\"");
-    strncat(bufOut, str, len);
-
-    GetCapacityNominalAKBStr(str, &len);
-    strcat(bufOut, "\",\"bat_cap\":\"");
-    strncat(bufOut, str, len);
-
-    GetDataNextChangeAKBStrRU(str, &len);
-    strcat(bufOut, "\",\"bat_exp\":\"");
-    strncat(bufOut, str, len);
-
-#endif
-
-#ifndef HARDWARE_BT6709
-
-    GetDINStatusStr(str, &len, 0);
-    strcat(bufOut, "\",\"di1\":\"");
-    strncat(bufOut, str, len);
-
-    GetDOUTStatusStr(str, &len, 0);
-    strcat(bufOut, "\",\"ro1\":\"");
-    strncat(bufOut, str, len);
-
-    GetDOUTStatusStr(str, &len, 1);
-    strcat(bufOut, "\",\"ro2\":\"");
-    strncat(bufOut, str, len);
-
-#if defined HARDWARE_BT6707
-    GetDOUTStatusStr(str, &len, 2);
-    strcat(bufOut, "\",\"ro3\":\"");
-    strncat(bufOut, str, len);
-#endif
-#endif
-
-    // Дополнительные параметры
-
-    // Мониторинг
-    // load_monitor (нагрузка, 0 - норма, 1 - fail)
-    // temp_monitor (внутренняя температура, 0 - норма, 1 - fail)
-    // connect_monitor (связь с UPSом, 0 - норма, 1 - fail)
-
-    GetAlarmMonitorStr(str, &len);
-    strcat(bufOut, "\",\"m_alarm\":\"");
-    strncat(bufOut, str, len);
-
-    GetAlarmStr(str, &len);
-    strcat(bufOut, "\",\"u_alarm\":\"");
-    strncat(bufOut, str, len);
-
-    // Признак изменения сетевых настроек
-    GetWebReinitFlag(str, &len);
-    strcat(bufOut, "\",\"netsettings_changed\":\"");
-    strncat(bufOut, str, len);
-
-    strncat(bufOut, "\"}", 2);
+    monitor_param = cJSON_CreateObject();
+#define XJSON_PARAMS_TAG(tag, get_param) JSON_ADD_TAG(tag, get_param, monitor_param);
+		WEB_PARAMS_TAGS_TABLE
+#undef XJSON_PARAMS_TAG
+    if(cJSON_PrintPreallocated(monitor_param, bufOut, SEND_BUF_MAX_LEN, 0)) {
+        *lenBufOut = strlen(bufOut);
+    } else {
+        *lenBufOut = 0;
+    }
+    cJSON_Delete(monitor_param);
 
-    *lenBufOut = strlen(bufOut);
     return bufOut;
 }
 
@@ -179,242 +91,22 @@ char *HTTP_GetSettingsPage(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t
     (void)lenBufIn;
     (void)reqNum;
 
+    cJSON *settings_param = NULL;
+
     /* Headers для поддержки saffari */
     strcpy(bufOut, "HTTP/1.0 200 OK\r\nContent-Type:text/html\r\n\r\n");
 
-    /* SNMP */
-    GetReadCommunity(str, &len);
-    strcat(bufOut, "{\"read_community\":\"");
-    strncat(bufOut, str, len);
-
-    GetWriteCommunity(str, &len);
-    strcat(bufOut, "\",\"write_community\":\"");
-    strncat(bufOut, str, len);
-
-    GetManagerIp(str, &len);
-    strcat(bufOut, "\",\"managerIP\":\"");
-    strncat(bufOut, str, len);
-
-    GetManagerIp2(str, &len);
-    strcat(bufOut, "\",\"managerIP2\":\"");
-    strncat(bufOut, str, len);
-
-    GetManagerIp3(str, &len);
-    strcat(bufOut, "\",\"managerIP3\":\"");
-    strncat(bufOut, str, len);
-
-    GetManagerIp4(str, &len);
-    strcat(bufOut, "\",\"managerIP4\":\"");
-    strncat(bufOut, str, len);
-
-    GetManagerIp5(str, &len);
-    strcat(bufOut, "\",\"managerIP5\":\"");
-    strncat(bufOut, str, len);
-
-#ifndef HARDWARE_BT6709
-    /*Параметры реле и сухих контактов*/
-    GetDINTypeActStr(str, &len, 0);
-    strcat(bufOut, "\",\"di1\":\"");
-    strncat(bufOut, str, len);
-
-    GetROTypeActStr(str, &len, 0);
-    strcat(bufOut, "\",\"ro1\":\"");
-    strncat(bufOut, str, len);
-
-    GetROTypeActStr(str, &len, 1);
-    strcat(bufOut, "\",\"ro2\":\"");
-    strncat(bufOut, str, len);
-
-#if defined HARDWARE_BT6707
-    GetROTypeActStr(str, &len, 2);
-    strcat(bufOut, "\",\"ro3\":\"");
-    strncat(bufOut, str, len);
-#endif
-#endif
-
-    /* WEB */
-    GetIpStr(str, &len);
-    strcat(bufOut, "\",\"ipaddr\":\"");
-    strncat(bufOut, str, len);
-
-    GetGatewayStr(str, &len);
-    strcat(bufOut, "\",\"gw\":\"");
-    strncat(bufOut, str, len);
-
-    GetMaskStr(str, &len);
-    strcat(bufOut, "\",\"mask\":\"");
-    strncat(bufOut, str, len);
-
-    GetDhcpStateStr(str, &len);
-    strcat(bufOut, "\",\"dhcp\":");
-    strncat(bufOut, str, len);
-
-#if defined HARDWARE_BT6707 || HARDWARE_BT6709
-    GetTelnetPortStr(str, &len);
-    strcat(bufOut, ",\"tn_port\":\"");
-    strncat(bufOut, str, len);
-
-    GetTelnetEnableStateStr(str, &len);
-    strcat(bufOut, "\",\"tn_enabled\":");
-    strncat(bufOut, str, len);
-
-#ifdef HARDWARE_BT6709
-    GetSSHPortStr(str, &len);
-    strcat(bufOut, ",\"ssh_port\":\"");
-    strncat(bufOut, str, len);
-
-    GetSSHEnableStateStr(str, &len);
-    strcat(bufOut, "\",\"ssh_enabled\":");
-    strncat(bufOut, str, len);
-#endif // HARDWARE_BT6709
-#endif
-
-#ifdef HARDWARE_BT6703
-    GetAuthEnableStateStr(str, &len);
-    strcat(bufOut, ",\"swauth\":");
-    strncat(bufOut, str, len);
-
-    /* RADIUS */
-    GetRDSIpStr(str, &len);
-    strcat(bufOut, ",\"rs_server\":\"");
-    strncat(bufOut, str, len);
-
-    GetRDSPortStr(str, &len);
-    strcat(bufOut, "\",\"rs_port\":\"");
-    strncat(bufOut, str, len);
-
-    GetRDSPasswordkStr(str, &len);
-    strcat(bufOut, "\",\"rs_pwd\":\"");
-    strncat(bufOut, str, len);
-
-    GetRDSKeyAccesstStr(str, &len);
-    strcat(bufOut, "\",\"rs_key\":\"");
-    strncat(bufOut, str, len);
-
-    GetRDSEnableStateStr(str, &len);
-    strcat(bufOut, "\",\"rs_enabled\":");
-    strncat(bufOut, str, len);
-#endif
-
-#ifdef HARDWARE_BT6709
-    /* White list */
-    const char *white_list_js[] = {
-        ",\"wtl_ip1\":\"",
-        "\",\"wtl_ip2\":\"",
-        "\",\"wtl_ip3\":\"",
-        "\",\"wtl_ip4\":\"",
-        "\",\"wtl_ip5\":\"",
-    };
-    for (uint8_t i = 0; i < MAX_WHITE_LIST; i++) {
-        GetWhiteListSTR(str, &len, i);
-        strcat(bufOut, white_list_js[i]);
-        strncat(bufOut, str, len);
+    settings_param = cJSON_CreateObject();
+#define XJSON_SETTINGS_TAG(tag, get_param) JSON_ADD_TAG(tag, get_param, settings_param);
+		WEB_SETTINGS_TAGS_TABLE
+#undef XJSON_SETTINGS_CREATE
+    if(cJSON_PrintPreallocated(settings_param, bufOut, SEND_BUF_MAX_LEN, 0)) {
+        *lenBufOut = strlen(bufOut);
+    } else {
+        *lenBufOut = 0;
     }
+    cJSON_Delete(settings_param);
 
-    strcat(bufOut, "\"");
-#endif
-
-    /* Параметры даты и времени */
-    GetDateStr(str, &len);
-    strcat(bufOut, ",\"date\":\"");
-    strncat(bufOut, str, len);
-
-    GetTimeStr(str, &len);
-    strcat(bufOut, "\",\"time\":\"");
-    strncat(bufOut, str, len);
-
-    /* Параметры SNTP */
-    GetSntpStateStr(str, &len);
-    strcat(bufOut, "\",\"ntp\":\"");
-    strncat(bufOut, str, len);
-
-    GetSntpServerIpStr(str, &len);
-    strcat(bufOut, "\",\"ntpservip\":\"");
-    strncat(bufOut, str, len);
-
-    GetSntpTimeZoneStr(str, &len);
-    strcat(bufOut, "\",\"utc\":\"");
-    strncat(bufOut, str, len);
-
-    GetUnixTimeStr(str, &len);
-    strcat(bufOut, "\",\"utm\":\"");
-    strncat(bufOut, str, len);
-
-    GetSntpLastDataStr(str, &len);
-    strcat(bufOut, "\",\"lastsynctime\":\"");
-    strncat(bufOut, str, len);
-
-    GetUPSVoltCellMinStr(str, &len);
-    strcat(bufOut, "\",\"ups_cell_min\":\"");
-    strncat(bufOut, str, len);
-
-    GetUPSVoltCellMaxStr(str, &len);
-    strcat(bufOut, "\",\"ups_cell_max\":\"");
-    strncat(bufOut, str, len);
-
-#ifdef HARDWARE_BT6709
-    GetDataSetAKBStr(str, &len);
-    strcat(bufOut, "\",\"bat_prod\":\"");
-    strncat(bufOut, str, len);
-
-    GetLifeTimeAKBStr(str, &len);
-    strcat(bufOut, "\",\"bat_exp\":\"");
-    strncat(bufOut, str, len);
-
-    GetCapacityNominalAKBStr(str, &len);
-    strcat(bufOut, "\",\"bat_cap\":\"");
-    strncat(bufOut, str, len);
-
-    GetVoltageAKBNominalStr(str, &len);
-    strcat(bufOut, "\",\"bat_charge\":\"");
-    strncat(bufOut, str, len);
-
-    GetUPSPowerStr(str, &len);
-    strcat(bufOut, "\",\"ups_max_power\":\"");
-    strncat(bufOut, str, len);
-#endif
-
-#if defined HARDWARE_BT6707 || HARDWARE_BT6709
-    GetVACAlarmHighRangeStr(str, &len);
-    strcat(bufOut, "\",\"mainvolt_high\":\"");
-    strncat(bufOut, str, len);
-
-    GetVACAlarmLowRangeStr(str, &len);
-    strcat(bufOut, "\",\"mainvolt_low\":\"");
-    strncat(bufOut, str, len);
-
-    GetVACAlarmHisteStr(str, &len);
-    strcat(bufOut, "\",\"mainvolt_hist\":\"");
-    strncat(bufOut, str, len);
-#endif
-    GetTemperatureAlarmHighRangeStr(str, &len);
-    strcat(bufOut, "\",\"temp_high\":\"");
-    strncat(bufOut, str, len);
-
-    GetTemperatureAlarmLowRangeStr(str, &len);
-    strcat(bufOut, "\",\"temp_low\":\"");
-    strncat(bufOut, str, len);
-
-    GetTemperatureAlarmHisteStr(str, &len);
-    strcat(bufOut, "\",\"temp_hist\":\"");
-    strncat(bufOut, str, len);
-
-    GetLoadAlarmHighRangeStr(str, &len);
-    strcat(bufOut, "\",\"loadvolt_high\":\"");
-    strncat(bufOut, str, len);
-
-    GetLoadAlarmHisteStr(str, &len);
-    strcat(bufOut, "\",\"loadvolt_hist\":\"");
-    strncat(bufOut, str, len);
-
-    /* Признак изменения сетевых настроек */
-    GetWebReinitFlag(str, &len);
-    strcat(bufOut, "\",\"netsettings_changed\":\"");
-    strncat(bufOut, str, len);
-
-    strncat(bufOut, "\"}", 2);
-
-    *lenBufOut = strlen(bufOut);
     return bufOut;
 }
 

+ 7 - 0
modules/HTTP_Server/web_params_api.h

@@ -16,6 +16,13 @@
 
 #include "stdbool.h"
 
+#define JSON_ADD_TAG(tag, get_param, cjson_param) \
+  do { \
+    memset(str, 0, sizeof(str)); \
+    get_param(str, &len); \
+    cJSON_AddStringToObject(cjson_param, tag, str); \
+  } while (0);
+
 /**
   * @brief  Заполнение JSON строки параметров
   */