Просмотр исходного кода

修改传感器阈值的语言切换bug

guohui лет назад: 2
Родитель
Сommit
57e2274861
9 измененных файлов с 90 добавлено и 39 удалено
  1. 8 0
      pro/src/app.c
  2. 15 4
      pro/src/appweb_handle.c
  3. 7 5
      pro/src/json_handle.c
  4. 2 2
      pro/src/language_common.c
  5. 16 9
      pro/src/mqtt.c
  6. 3 1
      pro/src/sqlite_handle.c
  7. 3 0
      pro/src/sys.c
  8. 26 15
      pro/src/thread.c
  9. 10 3
      pro/src/thread.h

+ 8 - 0
pro/src/app.c

@@ -1729,6 +1729,14 @@ int _global_device_manage_init(GlobalDeviceManager* _globalDeviceManager)
     }
     log_i("database %s open ok.\n", path);
 
+#ifndef USE_INI
+    if(dev_get_device_info(_globalDeviceManager->db,&_globalDeviceManager->_globalDevInfo)!=0)
+    {
+        log_e("get device info error.\n");
+        return -1 ;
+    }
+    log_i("get device info ok.\n");
+#endif
 
     if(_globalDeviceManager->_globalDevInfo.product.pwr_type == SmartPDU_AC ||
         _globalDeviceManager->_globalDevInfo.product.pwr_type == SmartPDU_DC)       // single AC

+ 15 - 4
pro/src/appweb_handle.c

@@ -275,8 +275,11 @@ static void changeLanguages(void* conn)
     char* rx_body_buf=(char*)hm->body.buf;
 
     json_to_switch_language(rx_body_buf);
-    //dev_update_device_genera_info(__globalDeviceManage.db,&__globalDeviceManage._globalDevInfo);
+#ifdef USE_INI
     paras_save();
+#else
+    dev_update_device_genera_info(__globalDeviceManage.db,&__globalDeviceManage._globalDevInfo);
+#endif
     ack_str = ctrl_sts_ack_to_json();
     http_reply(conn, 200, ack_str);
     cJSON_free((void*)ack_str);
@@ -1880,10 +1883,9 @@ static void sensorStatusMonitoring(void* conn)
             //基本信息
             _overSensorBackInfoTemp->sensorId = _globalSensorManagerTemp->sensor_id;
             strcpy(_overSensorBackInfoTemp->sensorName,language_sensor_name[__globalDeviceManage._globalDevInfo.product.language][(int)_globalSensorManagerTemp->sensor_type]);
-            //strcpy(_overSensorBackInfoTemp->sensorName,_globalSensorManagerTemp->sensor_name);
+            
             _overSensorBackInfoTemp->sensorType = _globalSensorManagerTemp->sensor_type;
             memcpy(&_overSensorBackInfoTemp->comSlogan,&_globalSensorManagerTemp->sensor_port_name,sizeof(_overSensorBackInfoTemp->comSlogan));
-            //strcpy(_overSensorBackInfoTemp->comSlogan,_globalSensorManagerTemp->sensor_port_name);
 
             //485独有
             _overSensorBackInfoTemp->connectionStatus = _globalSensorManagerTemp->sensor_status;
@@ -2344,6 +2346,7 @@ static void sensorStatusMonitoring(void* conn)
             // 基本信息
             _overSensorBackInfoTemp->sensorId = _globalSensorMangerSTemp->sensor_id;
             strcpy(_overSensorBackInfoTemp->sensorName,language_sensor_name[__globalDeviceManage._globalDevInfo.product.language][(int)_globalSensorMangerSTemp->sensor_type]);
+            
             _overSensorBackInfoTemp->sensorType = _globalSensorMangerSTemp->sensor_type;
             strcpy(_overSensorBackInfoTemp->comSlogan, _globalSensorMangerSTemp->sensor_port_name);
             // 485独有
@@ -3428,8 +3431,11 @@ static void communicationManagement(void *conn)
         ///////////////////////////////////////////////////////////////////////////////
         r = cascade_set_modbus(info);
         if(r==0) {
-            //dev_update_device_modus_info(__globalDeviceManage.db,devInfo);
+        #ifdef USE_INI
             paras_save();
+        #else
+            dev_update_device_modus_info(__globalDeviceManage.db,devInfo);
+        #endif
         }
         char buff[256];
         if (!info->mode)
@@ -4669,12 +4675,14 @@ static void equipmentMintenance(void *conn)
     if(strcmp(_Over_equipment_mintenance.type,"listSbRestartQuery")==0 || strcmp(_Over_equipment_mintenance.type,"listSbWhQuery")==0)
     {
         // 查询设备总体参数
+    #ifndef USE_INI
        if (dev_get_device_info(__globalDeviceManage.db,&__globalDeviceManage._globalDevInfo) != 0)
         {
             log_e("get device info error.\n");
             http_reply(conn, 400, NULL);
             return;
         }
+    #endif
 
         _over_back_sts_info.product_name = __globalDeviceManage._globalDevInfo.product.name;
         _over_back_sts_info.product_number = __globalDeviceManage._globalDevInfo.product.number;
@@ -4737,12 +4745,15 @@ static void equipmentMintenance(void *conn)
     }else if(strcmp(_Over_equipment_mintenance.type,"listKgSbQuery")==0)    // part of device infomation 
     {
         _OverBackBreakerInfo breaker_info;
+    #ifndef USE_INI
         if (dev_get_device_info(__globalDeviceManage.db,&__globalDeviceManage._globalDevInfo) != 0)
         {
             log_e("get device info error.\n");
             http_reply(conn, 400, NULL);
             return;
         }
+    #endif
+
         printf("get listKgSbQuery infomation!!!\n");
         breaker_info.product_id = __globalDeviceManage._globalDevInfo.product.id;
         breaker_info.product_name = __globalDeviceManage._globalDevInfo.product.name;

+ 7 - 5
pro/src/json_handle.c

@@ -2861,6 +2861,7 @@ char *ws_sensor_status_ack_to_json(GlobalSensorManger *_globalSensorManger)
         // 基本信息
         _overSensorBackInfoTemp->sensorId = _globalSensorManagerTemp->sensor_id;
         strcpy(_overSensorBackInfoTemp->sensorName,language_sensor_name[__globalDeviceManage._globalDevInfo.product.language][(int)_globalSensorManagerTemp->sensor_type]);
+        
         _overSensorBackInfoTemp->sensorType = _globalSensorManagerTemp->sensor_type;
         memcpy(&_overSensorBackInfoTemp->comSlogan, &_globalSensorManagerTemp->sensor_port_name, sizeof(_overSensorBackInfoTemp->comSlogan));
         // strcpy(_overSensorBackInfoTemp->comSlogan,_globalSensorManagerTemp->sensor_port_name);
@@ -3424,7 +3425,7 @@ char* alarm_sensor_threshold_to_json(GlobalSensorManger* _globalSensorManger)
     // language_alarm_ctrl_CloseCH[__globalDeviceManage._globalDevInfo.product.language]
 
 
-    //循环添加数据
+    int langID=__globalDeviceManage._globalDevInfo.product.language;
     list_for_each_entry(_globalSensorMangerTemp, &_globalSensorManger->list, list)
     {
         switch (_globalSensorMangerTemp->sensor_type)
@@ -3434,7 +3435,8 @@ char* alarm_sensor_threshold_to_json(GlobalSensorManger* _globalSensorManger)
             data_filed = cJSON_CreateObject();
             sprintf(temp, "%d", _globalSensorMangerTemp->sensor_status);
             cJSON_AddStringToObject(data_filed, "connectionStatus", temp);
-            cJSON_AddStringToObject(data_filed, "sensorName", _globalSensorMangerTemp->sensor_name);
+            
+            cJSON_AddStringToObject(data_filed, "sensorName", language_sensor_name[langID][(int)_globalSensorMangerTemp->sensor_type]);
             sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
             cJSON_AddStringToObject(data_filed, "sensorId", temp);
             cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
@@ -3537,7 +3539,7 @@ char* alarm_sensor_threshold_to_json(GlobalSensorManger* _globalSensorManger)
             data_filed = cJSON_CreateObject();
             sprintf(temp, "%d", _globalSensorMangerTemp->sensor_status);
             cJSON_AddStringToObject(data_filed, "connectionStatus", temp);
-            cJSON_AddStringToObject(data_filed, "sensorName", _globalSensorMangerTemp->sensor_name);
+            cJSON_AddStringToObject(data_filed, "sensorName", language_sensor_name[langID][(int)_globalSensorMangerTemp->sensor_type]);
             sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
             cJSON_AddStringToObject(data_filed, "sensorId", temp);
             cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
@@ -3643,7 +3645,7 @@ char* alarm_sensor_threshold_to_json(GlobalSensorManger* _globalSensorManger)
         case SENSOR_TYPE_DOOR:
             data_filed = cJSON_CreateObject();
             cJSON_AddStringToObject(data_filed, "connectionStatus", "");
-            cJSON_AddStringToObject(data_filed, "sensorName", _globalSensorMangerTemp->sensor_name);
+            cJSON_AddStringToObject(data_filed, "sensorName", language_sensor_name[langID][(int)_globalSensorMangerTemp->sensor_type]);
             sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
             cJSON_AddStringToObject(data_filed, "sensorId", temp);
             cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
@@ -3658,7 +3660,7 @@ char* alarm_sensor_threshold_to_json(GlobalSensorManger* _globalSensorManger)
             data_filed = cJSON_CreateObject();
             cJSON_AddNumberToObject(data_filed, "connectionStatus", _globalSensorMangerTemp->sensor_status);
             // cJSON_AddNumberToObject(data_filed,"connectionStatus",_globalSensorMangerTemp->sensor_status);
-            cJSON_AddStringToObject(data_filed, "sensorName", _globalSensorMangerTemp->sensor_name);
+            cJSON_AddStringToObject(data_filed, "sensorName", language_sensor_name[langID][(int)_globalSensorMangerTemp->sensor_type]);
             sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
             cJSON_AddStringToObject(data_filed, "sensorId", temp);
             cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);

+ 2 - 2
pro/src/language_common.c

@@ -67,14 +67,14 @@ const char language_power_channel_sts_monitor[LANGUAGE_TYPE][LANGUAGE_SIZE] =
 const char language_power_switch_sts_monitor[LANGUAGE_TYPE][LANGUAGE_SIZE] =
 {
     "开关状态监控",
-    "Device swith monitor",
+    "Circuit breaker monitor",
     "Монитор коммутатора оборудования",
     " "
 };
 const char language_power_history_search[LANGUAGE_TYPE][LANGUAGE_SIZE] =
 {
     "历史记录查询",
-    "Sensor status history",
+    "Device history",
     "График энергопотребления",
     " "
 };

+ 16 - 9
pro/src/mqtt.c

@@ -910,15 +910,16 @@ static uint32_t get_serv(char *json)
         if(thread_is_running(THREAD_ID_TELNET)) {
             BSET(flag, SERV_TELNET);
         }
+#endif
 
-        if(thread_is_running(SERV_SNMP_V1)) {
+        if(sys_is_running("snmpd")) {
             BSET(flag, SERV_NTP);
         }
 
-        if(thread_is_running(SERV_SNMP_V1)) {
+        if(thread_is_running(THREAD_ID_NTP)) {
             BSET(flag, SERV_NTP);
         }
-#endif
+
     }
 
     return flag;
@@ -927,28 +928,34 @@ static int set_serv(uint32_t flag)
 {
     if(BGET(flag,SERV_NTP)) {
         if(!thread_is_running(THREAD_ID_NTP)) {
-
+            //thread_stop(THREAD_ID_NTP);
         }
     }
     else {
-
+        if(thread_is_running(THREAD_ID_NTP)) {
+            thread_stop(THREAD_ID_NTP);
+        }
     }
 
     if(BGET(flag,SERV_SMTP)) {
-
+        if(!thread_is_running(THREAD_ID_SMTP)) {
+            //thread_stop(THREAD_ID_SMTP);
+        }
     }
     else {
-        
+        if(thread_is_running(THREAD_ID_SMTP)) {
+            thread_stop(THREAD_ID_SMTP);
+        }
     }
 
-    if(BGET(flag,SERV_MESG)) {
+    if(BGET(flag,SERV_MQTT)) {
 
     }
     else {
         
     }
 
-    if(BGET(flag,SERV_MQTT)) {
+    if(BGET(flag,SERV_MESG)) {
 
     }
     else {

+ 3 - 1
pro/src/sqlite_handle.c

@@ -2172,7 +2172,9 @@ int dev_get_sensor_manage_info(sqlite3 *db,int product_id,GlobalSensorManger* _g
         _globalSensorMangerTemp->sensor_type = atoi(pResult[i*ncolumn+2]);
         _globalSensorMangerTemp->sensor_interface_type = atoi(pResult[i*ncolumn+3]);
 
-        strcpy(_globalSensorMangerTemp->sensor_name,pResult[i*ncolumn+4]);
+        //strcpy(_globalSensorMangerTemp->sensor_name,pResult[i*ncolumn+4]);
+        strcpy(_globalSensorMangerTemp->sensor_name,language_sensor_name[__globalDeviceManage._globalDevInfo.product.language][(int)_globalSensorMangerTemp->sensor_type]);
+
         strcpy(_globalSensorMangerTemp->sensor_port_name,pResult[i*ncolumn+5]);
         if( _globalSensorMangerTemp->sensor_interface_type==1)
         {

+ 3 - 0
pro/src/sys.c

@@ -1207,7 +1207,10 @@ int sys_init(void)
     //userShellInit();
     initLogger();
     lock_s_init();
+    
+#ifdef USE_INI
     paras_init();
+#endif
     
     thread_start(THREAD_ID_POLLING, polling_thread, NULL, 4*MB, 0);
 

+ 26 - 15
pro/src/thread.c

@@ -1,17 +1,28 @@
 #include "thread.h"
 
-static thread_handle_t myThdHandles[THREAD_ID_MAX]={0};
+static thread_attr_t thdAttrs[THREAD_ID_MAX]={0};
+static thread_handle_t thdHandles[THREAD_ID_MAX]={0};
 
 
-int thread_start(int id, thread_fn fn, void *arg, int stksize, int prio)
+int thread_reg(int id, thread_attr_t *attr)
+{
+    if(id<0 || id>=THREAD_ID_MAX || !attr) {
+        return -1;
+    }
+    thdAttrs[id] = *attr;
+    return 0;
+}
+
+
+int thread_start(int id, thread_fn fn, void *arg, int stksz, int prio)
 {
     int r;
     pthread_attr_t attr;
 
-    if(id>=THREAD_ID_MAX) {
-        return -1;        
+    if(id<0 || id>=THREAD_ID_MAX) {
+        return -1;
     }
-    thread_handle_t *h=&myThdHandles[id];
+    thread_handle_t *h=&thdHandles[id];
 
     h->arg  = arg;
     h->quit = 0;
@@ -23,17 +34,17 @@ int thread_start(int id, thread_fn fn, void *arg, int stksize, int prio)
     }
 
 #if 0
-    h->stk = malloc(stksize);
+    h->stk = malloc(stksz);
     if(h->stk) {
-        r = pthread_attr_setstack(h->stk, stksize);
+        r = pthread_attr_setstack(h->stk, stksz);
         if(r) {
             printf("____ thread %d attr setstack failed\n", id);
         }
     }
     else {
-        r = pthread_attr_setstacksize(&attr, stksize);
+        r = pthread_attr_setstacksize(&attr, stksz);
         if(r) {
-            printf("____ thread %d attr setstacksize %d failed\n", id, stksize);
+            printf("____ thread %d attr setstacksize %d failed\n", id, stksz);
         }
     }
 #endif
@@ -57,10 +68,10 @@ int thread_start(int id, thread_fn fn, void *arg, int stksize, int prio)
 
 int thread_stop(int id)
 {
-    if(id>=THREAD_ID_MAX) {
+    if(id<0 || id>=THREAD_ID_MAX) {
         return -1;
     }
-    thread_handle_t *h=&myThdHandles[id];
+    thread_handle_t *h=&thdHandles[id];
 
     h->quit = 1;
     pthread_join(h->tid, NULL);
@@ -87,23 +98,23 @@ int thread_stop_all(void)
 
 int thread_is_running(int id)
 {
-    if(id>=THREAD_ID_MAX) {
+    if(id<0 || id>=THREAD_ID_MAX) {
         return 0;
     }
     
-    thread_handle_t *h=&myThdHandles[id];
+    thread_handle_t *h=&thdHandles[id];
     return h->running;
 }
 
 
-int thread_start_simp(thread_fn fn, void *arg, int stksize)
+int thread_start_simp(thread_fn fn, void *arg, int stksz)
 {
     int r;
     pthread_t tid;
     pthread_attr_t attr;
 
     pthread_attr_init(&attr);
-    pthread_attr_setstacksize(&attr, stksize);
+    pthread_attr_setstacksize(&attr, stksz);
     
     r = pthread_create(&tid, &attr, fn, arg);
     pthread_attr_destroy(&attr);

+ 10 - 3
pro/src/thread.h

@@ -35,6 +35,14 @@ enum {
 
 typedef void *(*thread_fn)(void *arg);
 
+
+typedef struct {
+    thread_fn  fn;
+    void       *arg;
+    int        stksz;
+    int        prio;
+}thread_attr_t;
+
 typedef struct {
     pthread_t  tid;
     int        quit;
@@ -44,13 +52,12 @@ typedef struct {
     void       *stk;
 }thread_handle_t;
 
-
-int thread_start(int id, thread_fn fn, void *arg, int stksize, int prio);
+int thread_start(int id, thread_fn fn, void *arg, int stksz, int prio);
 int thread_stop(int id);
 int thread_stop_all(void);
 
 int thread_is_running(int id);
-int thread_start_simp(thread_fn fn, void *arg, int stksize);
+int thread_start_simp(thread_fn fn, void *arg, int stksz);
 int thread_print_stacksize(void);
 
 #ifdef __cplusplus