Преглед изворни кода

1、消除所有警告
2、将所有编译警告设定为错误,防止后续再陆续引入隐患代码

guohui пре 2 година
родитељ
комит
3dd2b28a25

+ 2 - 2
pro/CMakeLists.txt

@@ -84,8 +84,8 @@ set(PDU_SRC_LIST
 	)
 
 set(NO_WARNNING_FLAGS "-Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable")
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NO_WARNNING_FLAGS}")
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NO_WARNNING_FLAGS}")
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NO_WARNNING_FLAGS} -Werror")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NO_WARNNING_FLAGS} -Werror")
 #set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
 #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
 #target_link_options(my_target PRIVATE "-s")

+ 1 - 1
pro/config/cfg.h

@@ -17,7 +17,7 @@
 
 
 //define KEY_PARAS_IN_FILE		//mask it mean store paras in database
-#define USE_WEBAPP
+//#define USE_WEBAPP
 
 #define USER_MAX            50
 

+ 30 - 22
pro/mongoose/mongoose.c

@@ -2270,35 +2270,43 @@ void mg_http_reply(struct mg_connection *c, int code, const char *headers,
                    const char *fmt, ...) {
   va_list ap;
   size_t len;
-  if (c==NULL)
-  {
-    return;
-  }
-// mg_printf(c, "HTTP/1.1 %d %s\r\n%sContent-Length:            \r\n\r\n", code,
- //           mg_http_status_code_str(code), headers == NULL ? "" : headers);
-mg_printf(c, "HTTP/1.1 %d %s\r\n"
-  "Content-Type: text/html\n"
-  "Content-Length: %d\n"
-  "Connection: Keep-Alive\n"
-  "Keep-Alive: timeout=30, max=396\n" 
-  "X-Content-Type-0ptions: nosniff\n"
-  "X-Frame-0ptions:: SAMEORIGIN\n"
-  "X-Xss-Protection: 1: mode=block\n"
-  "Accept-Ranges: bytes\n"
-  "Vary: Accept-Encoding\n\n"
-  "%s\n", code, mg_http_status_code_str(code),strlen(fmt == NULL ? "" : fmt), fmt == NULL ? "" : fmt);
-
+  mg_printf(c, "HTTP/1.1 %d %s\r\n%sContent-Length:            \r\n\r\n", code,
+            mg_http_status_code_str(code), headers == NULL ? "" : headers);
   len = c->send.len;
-  va_start(ap, fmt == NULL ? "" : fmt);
-  mg_vxprintf(mg_pfn_iobuf, &c->send, fmt == NULL ? "" : fmt, &ap);
+  va_start(ap, fmt);
+  mg_vxprintf(mg_pfn_iobuf, &c->send, fmt, &ap);
   va_end(ap);
-  /*if (c->send.len > 16) {
+  if (c->send.len > 16) {
     size_t n = mg_snprintf((char *) &c->send.buf[len - 15], 11, "%-10lu",
                            (unsigned long) (c->send.len - len));
     c->send.buf[len - 15 + n] = ' ';  // Change ending 0 to space
-  }*/
+  }
   c->is_resp = 0;
 }
+void mg_http_reply2(struct mg_connection *c, int code, const char *headers,
+                   const char *fmt, ...) {
+    va_list ap;
+    size_t len;
+    if (c==NULL) return;
+
+    mg_printf(c, "HTTP/1.1 %d %s\r\n"
+    "Content-Type: text/html\n"
+    "Content-Length: %d\n"
+    "Connection: Keep-Alive\n"
+    "Keep-Alive: timeout=30, max=396\n" 
+    "X-Content-Type-0ptions: nosniff\n"
+    "X-Frame-0ptions:: SAMEORIGIN\n"
+    "X-Xss-Protection: 1: mode=block\n"
+    "Accept-Ranges: bytes\n"
+    "Vary: Accept-Encoding\n\n"
+    "%s\n", code, mg_http_status_code_str(code),strlen(fmt == NULL ? "" : fmt), fmt == NULL ? "" : fmt);
+
+    len = c->send.len;
+    va_start(ap, fmt);
+    mg_vxprintf(mg_pfn_iobuf, &c->send, fmt?fmt:"", &ap);
+    va_end(ap);
+    c->is_resp = 0;
+}
 
 static void http_cb(struct mg_connection *, int, void *);
 static void restore_http_cb(struct mg_connection *c) {

+ 3 - 0
pro/mongoose/mongoose.h

@@ -2284,6 +2284,9 @@ void mg_http_serve_file(struct mg_connection *, struct mg_http_message *hm,
                         const char *path, const struct mg_http_serve_opts *);
 void mg_http_reply(struct mg_connection *, int status_code, const char *headers,
                    const char *body_fmt, ...);
+void mg_http_reply2(struct mg_connection *c, int code, const char *headers,
+                   const char *body_fmt, ...);
+
 struct mg_str *mg_http_get_header(struct mg_http_message *, const char *name);
 struct mg_str mg_http_var(struct mg_str buf, struct mg_str name);
 int mg_http_get_var(const struct mg_str *, const char *name, char *, size_t);

+ 0 - 4
pro/src/app.c

@@ -1867,10 +1867,6 @@ int _global_device_manage_init(GlobalDeviceManager* _globalDeviceManager)
     else
         log_d("get sensor info ok.");
 
-    //查询数据库获取传感器信息 
-
-    //保存配置
-    paras_save();    
 
     //创建modbus采集线程 继电器控制线程
     #if(OS_HANDWARE==1)

+ 68 - 90
pro/src/appweb_handle.c

@@ -73,6 +73,7 @@ static char* g_product_pwr_type_str[] = {
 };
 static int webSetCallback(void);
 
+
 static int http_reply(void *conn, int status, char *ack)
 {
      int r=0;
@@ -86,8 +87,7 @@ static int http_reply(void *conn, int status, char *ack)
     httpFinalize(s);
 #else
     mg_stream_t *s=(mg_stream_t*)conn;
-   // mg_http_reply(s->c, status, "", "%s", ack);
-    mg_http_reply(s->c, status, "",  ack);
+    mg_http_reply2(s->c, status, "",  ack);
 #endif
 
     return r;
@@ -187,7 +187,7 @@ static void *web_thread(void *arg)
     
     if ((c = mg_http_listen(&mgr, listen_addr, http_mg_cb, NULL)) == NULL) {
         MG_ERROR(("cannot listen on %s. use http://address:port or :port\n", listen_addr));
-        return -1;
+        return NULL;
     }
     webSetCallback();
     printf("_____mgHandle.cnt: %d, rootdir: %s\n", mh->cnt, mh->rootDir);
@@ -212,11 +212,11 @@ void* update_thread(void* arg)
     struct tm* t ;
     struct timeval tv;
     struct timezone tz ;
-    char* upgrade_msg = NULL ;
-    char* ack_str = NULL ;
+    char* json_str = NULL ;
      GlobalPowerInfo _powerInfo;
     GlobalPowerManger* _globalPowerMangerTemp = NULL ;
-    _OverAllPwrAckInfo _over_all_pwr_back_info; //设备电源信息
+    _OverAllPwrAckInfo allInfo; //设备电源信息
+    _OverChnPwrAckInfo chInfo;
     GlobalDeviceManager* gdm= &__globalDeviceManage;
     GlobalDeviceManager* gdm2=&__globalDeviceManage2;
 	
@@ -233,70 +233,70 @@ void* update_thread(void* arg)
                     gdm->_global_device_info->product_pwr_type==SmartPDU_Tree_AC_One)
                 {
                     //三相
-
-                    _OverAllPwrAckInfo _over_all_pwr_back_info_L1;
-                    _OverAllPwrAckInfo _over_all_pwr_back_info_L2;
-                    _OverAllPwrAckInfo _over_all_pwr_back_info_L3;
+                    _OverAllPwrAckInfo l1,l2,l3;
                     if (cur_dev_addr == 0)
                     {
                         pthread_mutex_lock(&__globalDeviceManage._power_update); 
-                        dev_search_latest_t_ac_power_statistic_info(0, 0, &_over_all_pwr_back_info_L1, gdm);
-                        dev_search_latest_t_ac_power_statistic_info(0, 1, &_over_all_pwr_back_info_L2, gdm);
-                        dev_search_latest_t_ac_power_statistic_info(0, 2, &_over_all_pwr_back_info_L3, gdm);
+                        dev_search_latest_t_ac_power_statistic_info(0, 0, &l1, gdm);
+                        dev_search_latest_t_ac_power_statistic_info(0, 1, &l2, gdm);
+                        dev_search_latest_t_ac_power_statistic_info(0, 2, &l3, gdm);
                         pthread_mutex_unlock(&__globalDeviceManage._power_update);
                     }
                     else
                     {
                         cascade_lock();
-                        dev_search_latest_t_ac_power_statistic_info(0, 0, &_over_all_pwr_back_info_L1, gdm2);
-                        dev_search_latest_t_ac_power_statistic_info(0, 1, &_over_all_pwr_back_info_L2, gdm2);
-                        dev_search_latest_t_ac_power_statistic_info(0, 2, &_over_all_pwr_back_info_L3, gdm2);
+                        dev_search_latest_t_ac_power_statistic_info(0, 0, &l1, gdm2);
+                        dev_search_latest_t_ac_power_statistic_info(0, 1, &l2, gdm2);
+                        dev_search_latest_t_ac_power_statistic_info(0, 2, &l3, gdm2);
                         cascade_unlock();
                     }
-                    ack_str = over_all_pwr_monitor_Tree_AC_to_json(&_over_all_pwr_back_info_L1, &_over_all_pwr_back_info_L2, &_over_all_pwr_back_info_L3);
+                    json_str = over_all_pwr_monitor_Tree_AC_to_json(&l1, &l2, &l3);
 
-                    websocket_send(ack_str, strlen(ack_str));
-                    cJSON_free((void*)ack_str);
+                    websocket_send(json_str, strlen(json_str));
+                    cJSON_free((void*)json_str);
                 }
                 else
                 {
                     if(cur_dev_addr==0) {
                         pthread_mutex_lock(&__globalDeviceManage._power_update); 
-                        dev_search_latest_power_statistic_info(gdm);
+                        dev_search_latest_power_statistic_info(gdm, &allInfo);
                         pthread_mutex_unlock(&__globalDeviceManage._power_update);
                     }
                     else {
                         cascade_lock();
-                        dev_search_latest_power_statistic_info(gdm2);
-                        cascade_unlock();
+                        dev_search_latest_power_statistic_info(gdm2, &allInfo);
+                        cascade_unlock();  
                     }
+                    json_str = ws_over_status_ack_to_json(0, &allInfo);
+
+                    websocket_send(json_str, strlen(json_str));
+                    cJSON_free(json_str);
                 }                
             }
             //推送通道信息
             //else if(gdm->view_page==2)
             {
-                _OverChnPwrAckInfo _over_chn_pwr_back_info;
-                INIT_LIST_HEAD(&_over_chn_pwr_back_info.list);
+                INIT_LIST_HEAD(&chInfo.list);
 
                 if(cur_dev_addr==0) {
                     pthread_mutex_lock(&__globalDeviceManage._power_update); 
-                    dev_search_latest_power_All_info(gdm,&_over_chn_pwr_back_info);
+                    dev_search_latest_power_All_info(gdm,&chInfo);
                     pthread_mutex_unlock(&__globalDeviceManage._power_update);
                 }
                 else {
                     cascade_lock();
-                    dev_search_latest_power_All_info(gdm2,&_over_chn_pwr_back_info);
+                    dev_search_latest_power_All_info(gdm2,&chInfo);
                     cascade_unlock();
                 }
 
-                upgrade_msg = ws_chn_status_ack_to_json(1,&_over_chn_pwr_back_info);
-                websocket_send(upgrade_msg, strlen(upgrade_msg));
+                json_str = ws_chn_status_ack_to_json(1,&chInfo);
+                websocket_send(json_str, strlen(json_str));
                  
                 //释放资源,一定要记得释放json字符串!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-                cJSON_free((void*)upgrade_msg);
+                cJSON_free((void*)json_str);
                 //释放资源,一定要记得释放json字符串!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                 _OverChnPwrAckInfo *node,*next;
-                list_for_each_entry_safe(node, next, &_over_chn_pwr_back_info.list, list)
+                list_for_each_entry_safe(node, next, &chInfo.list, list)
                 {
                     list_del(&node->list);
                     free(node);
@@ -304,9 +304,9 @@ void* update_thread(void* arg)
             }
             //else if (gdm->view_page==3)
             {
-                upgrade_msg =ws_sensor_status_ack_to_json(&__globalDeviceManage._globalSensorManger);
-                websocket_send(upgrade_msg, strlen(upgrade_msg));
-                cJSON_free((void*)upgrade_msg);
+                json_str =ws_sensor_status_ack_to_json(&__globalDeviceManage._globalSensorManger);
+                websocket_send(json_str, strlen(json_str));
+                cJSON_free((void*)json_str);
             }            
             //usleep(400*1000);
            // pthread_mutex_unlock(&Websocketlock); 
@@ -356,7 +356,7 @@ static void changeLanguages(void* conn)
 #else
     mg_stream_t *s=(mg_stream_t*)conn;
     struct mg_http_message *msg=s->ev_data;
-    rx_body_buf = msg->body.ptr;
+    rx_body_buf = (char*)msg->body.ptr;
 #endif
     json_to_switch_language(rx_body_buf);
     dev_update_device_genera_info(__globalDeviceManage.db,__globalDeviceManage._global_device_info);
@@ -460,7 +460,7 @@ static void loginOutFunc(void* conn)
 #else
     mg_stream_t *s=(mg_stream_t*)conn;
     struct mg_http_message *msg=s->ev_data;
-    rx_body_buf = msg->body.ptr;
+    rx_body_buf = (char*)msg->body.ptr;
 #endif
 
     //转换json参数
@@ -525,7 +525,7 @@ static void overallStatusMonitoring(void* conn)
 #else
     mg_stream_t *s=(mg_stream_t*)conn;
     struct mg_http_message *msg=s->ev_data;
-    rx_body_buf = msg->body.ptr;
+    rx_body_buf = (char*)msg->body.ptr;
 #endif
 
     //转换json参数
@@ -566,7 +566,10 @@ static void overallStatusMonitoring(void* conn)
             if(r) {
                 goto quit;
             }
-            cascade_get(&_over_all_pwr_back_info);
+            //cascade_get_all(&_over_all_pwr_back_info);
+
+            //ack_str = over_all_pwr_monitor_to_json(0,&_over_all_pwr_back_info);
+            goto quit;
         }
         else {
             GlobalPowerInfo __globalPowerInfo;
@@ -618,8 +621,8 @@ static void overallStatusMonitoring(void* conn)
             #endif
             
             }
+            ack_str = over_all_pwr_monitor_to_json(0,&_over_all_pwr_back_info);
         }
-        ack_str = over_all_pwr_monitor_to_json(0,&_over_all_pwr_back_info);
     }
     //打开所有开关
     else if(strcmp(_over_all_sts_monitor.type,"open")==0)
@@ -972,7 +975,7 @@ static void channelStatusMonitoring(void* conn)
 #else
     mg_stream_t *s=(mg_stream_t*)conn;
     struct mg_http_message *msg=s->ev_data;
-    rx_body_buf = msg->body.ptr;
+    rx_body_buf=(char*)msg->body.ptr;
 #endif
 
     //转换json参数
@@ -1029,7 +1032,7 @@ static void channelStatusMonitoring(void* conn)
             if(r) {
                 goto quit;
             }
-            cascade_get(&_over_chn_pwr_back_info);
+            cascade_get_ch(&_over_chn_pwr_back_info);
         }
         else {
             if(product_chn_id==0)
@@ -1078,19 +1081,15 @@ static void channelStatusMonitoring(void* conn)
                     list_add_tail(&_overChnPwrBackInfoTemp->list,&_over_chn_pwr_back_info.list);                
                 }
             }
-        }
 
-        //参数转换json
-        ack_str = over_chn_pwr_monitor_to_json(&_over_chn_pwr_back_info);
-        //释放资源
-        _OverChnPwrAckInfo* node;
-        _OverChnPwrAckInfo*  next;
-        list_for_each_entry_safe(node, next, &_over_chn_pwr_back_info.list, list)
-        {
-            list_del(&node->list);
-            free(node);
+            ack_str = over_chn_pwr_monitor_to_json(&_over_chn_pwr_back_info);
+            _OverChnPwrAckInfo *node,*next;
+            list_for_each_entry_safe(node, next, &_over_chn_pwr_back_info.list, list)
+            {
+                list_del(&node->list);
+                free(node);
+            }
         }
-
     }
     else if(strcmp(_over_chn_pwr_request.type,"open")==0)//通道开
     {
@@ -1497,7 +1496,7 @@ static void sensorStatusMonitoring(void* conn)
 #else
     mg_stream_t *s=(mg_stream_t*)conn;
     struct mg_http_message *msg=s->ev_data;
-    rx_body_buf = msg->body.ptr;
+    rx_body_buf=(char*)msg->body.ptr;
 #endif
     //转换json参数
     cjson = json_to_sensor_manage(rx_body_buf,&_over_all_sensor_request);
@@ -1602,16 +1601,8 @@ static void sensorStatusMonitoring(void* conn)
     else if(strcmp(_over_all_sensor_request.type,"delete")==0)
     {
         log_d("start delete handle.");
-        int sensor_id_temp = 0 ;
-        if(_over_all_sensor_request.sensorId!=NULL)
-        {
-            sensor_id_temp = strtol(_over_all_sensor_request.sensorId,NULL,10);
-        }    
-        else
-        {
-            sensor_id_temp = 0 ;
-        }
-
+        int sensor_id_temp = _over_all_sensor_request.sensorId;
+        
         if(dev_delete_sensor_manage(__globalDeviceManage.db, 1,sensor_id_temp)!=0)
         {
             log_e("sensor delete failed.");
@@ -1635,15 +1626,8 @@ static void sensorStatusMonitoring(void* conn)
     else if(strcmp(_over_all_sensor_request.type,"update")==0)
     {
         log_d("start update handle.");
-        int sensor_id_temp = 0 ;
-        if(_over_all_sensor_request.sensorId!=NULL)
-        {
-            sensor_id_temp = _over_all_sensor_request.sensorId;
-        }
-        else
-        {
-            sensor_id_temp = 0;
-        }
+        int sensor_id_temp = _over_all_sensor_request.sensorId;
+       
         GlobalSensorManger *node = NULL;
         GlobalSensorManger *next = NULL;
         list_for_each_entry_safe(node, next, &__globalDeviceManage._globalSensorManger.list, list)
@@ -1762,14 +1746,8 @@ static void sensorStatusMonitoring(void* conn)
         memset(_globalSensorMangerTemp, 0, sizeof(GlobalSensorManger));
         //填充数据
         _globalSensorMangerTemp->product_id = __globalDeviceManage._global_device_info->product_id ;
-        if(_over_all_sensor_request.sensorId!=NULL)
-        {
-            _globalSensorMangerTemp->sensor_id = strtol(_over_all_sensor_request.sensorId,NULL,10);
-        }    
-        else
-        {
-             _globalSensorMangerTemp->sensor_id = 0 ;
-        }
+        _globalSensorMangerTemp->sensor_id = _over_all_sensor_request.sensorId;
+        
         _globalSensorMangerTemp->sensor_type = strtol(_over_all_sensor_request.sensorType,NULL,10);
         strcpy( _globalSensorMangerTemp->sensor_name,_over_all_sensor_request.sensorName);
         strcpy(_globalSensorMangerTemp->sensor_port_name,_over_all_sensor_request.comSlogan);
@@ -1982,7 +1960,7 @@ static void alarmProtect(void *conn)
 #else
     mg_stream_t *s=(mg_stream_t*)conn;
     struct mg_http_message *msg=s->ev_data;
-    rx_body_buf = msg->body.ptr;
+    rx_body_buf=(char*)msg->body.ptr;
 #endif
 
     memset(&_alarm_request_info, 0, sizeof(_alarm_request_info));
@@ -2259,7 +2237,7 @@ static void logInformation(void *conn)
 #else
     mg_stream_t *s=(mg_stream_t*)conn;
     struct mg_http_message *msg=s->ev_data;
-    rx_body_buf = msg->body.ptr;
+    rx_body_buf=(char*)msg->body.ptr;
 #endif
     
     memset(&__logInformationRequestInfo,0,sizeof(_LogInformationRequestInfo));
@@ -2454,7 +2432,7 @@ static void communicationManagement(void *conn)
 #else
     mg_stream_t *s=(mg_stream_t*)conn;
     struct mg_http_message *msg=s->ev_data;
-    rx_body_buf = msg->body.ptr;
+    rx_body_buf=(char*)msg->body.ptr;
 #endif
 
     //转换json参数
@@ -2501,7 +2479,7 @@ static void communicationManagement(void *conn)
             r = sys_set_net(info, ipv);
             //print_net("set", info);
             if(r==0) {
-                paras_save();
+                //paras_save();
                 ack_str = ctrl_sts_ack_to_json(); 
             }
         }
@@ -2524,7 +2502,6 @@ static void communicationManagement(void *conn)
         ///////////////////////////////////////////////////////////////////////////////
         r = cascade_set_modbus(info);
         if(r==0) {
-            paras_save();
             dev_update_device_modus_info(__globalDeviceManage.db,devInfo);
         }
         
@@ -2554,7 +2531,7 @@ static void serviceManagement(void *conn)
 #else
     mg_stream_t *s=(mg_stream_t*)conn;
     struct mg_http_message *msg=s->ev_data;
-    rx_body_buf = msg->body.ptr;
+    rx_body_buf = (char*)msg->body.ptr;
 #endif
 
     //转换json参数
@@ -2810,7 +2787,8 @@ static void serviceManagement(void *conn)
                     log_e("___ new_data calloc failed!\n");
                     break;
                 }
-				memset(new_data, 0, sizeof(new_data));
+				memset(new_data, 0, sizeof(_PowerDSManage_t));
+
                 strcpy(new_data->ds_date, current_date);
                 strcpy(new_data->ds_time, _serviceManageRequestInfo._ds_info.channelTime);
                 new_data->set_stats = atoi(_serviceManageRequestInfo._ds_info.setStatus);
@@ -3094,7 +3072,7 @@ static void serviceManagement(void *conn)
                                 if (atoi(pCHlist) == _globalPowerMangerTemp->product_ch_id)
                                 {
                                     log_d("switch ctrl:%d,%d", _globalPowerMangerTemp->product_saddr, _globalPowerMangerTemp->product_ch_addr);
-                                    pAddrCtrl[_globalPowerMangerTemp->product_saddr] |= 1 << (_globalPowerMangerTemp->product_ch_addr - 1);
+                                    pAddrCtrl[(int)_globalPowerMangerTemp->product_saddr] |= 1 << (_globalPowerMangerTemp->product_ch_addr - 1);
                                     break;
                                 }
                             }
@@ -3192,7 +3170,7 @@ static void serviceManagement(void *conn)
                                 if (atoi(pCHlist) == _globalPowerMangerTemp->product_ch_id)
                                 {
                                     log_d("switch ctrl:%d,%d", _globalPowerMangerTemp->product_saddr, _globalPowerMangerTemp->product_ch_addr);
-                                    pAddrCtrl[_globalPowerMangerTemp->product_saddr] |= 1 << (_globalPowerMangerTemp->product_ch_addr-1);
+                                    pAddrCtrl[(int)_globalPowerMangerTemp->product_saddr] |= 1 << (_globalPowerMangerTemp->product_ch_addr-1);
                                     break;
                                 }
                             }
@@ -3280,7 +3258,7 @@ static void systemManagent(void *conn)
 #else
     mg_stream_t *s=(mg_stream_t*)conn;
     struct mg_http_message *msg=s->ev_data;
-    rx_body_buf = msg->body.ptr;
+    rx_body_buf = (char*)msg->body.ptr;
 #endif
 
     //转换json参数
@@ -3446,7 +3424,7 @@ static void equipmentMintenance(void *conn)
 #else
     mg_stream_t *s=(mg_stream_t*)conn;
     struct mg_http_message *msg=s->ev_data;
-    rx_body_buf = msg->body.ptr;
+    rx_body_buf = (char*)msg->body.ptr;
 #endif
 
     //转换json参数

+ 16 - 8
pro/src/cascade.c

@@ -1226,7 +1226,14 @@ int cascade_request(cmd_data_t *cmd)
 }
 
 
-int cascade_get(_OverChnPwrAckInfo *chInfo)
+int cascade_get_all(_OverAllPwrAckInfo *all)
+{
+
+    return 0;
+}
+
+
+int cascade_get_ch(_OverChnPwrAckInfo *ch)
 {
     GlobalPowerManger *tmp=NULL;
     GlobalTreeACManager *tmp3=NULL;
@@ -1235,9 +1242,7 @@ int cascade_get(_OverChnPwrAckInfo *chInfo)
 
     list_for_each_entry(tmp, &dm2->_globalPowerManger.list, list)
     {
-        if (tmp->product_ch_type==TREE_AC_TYPE)
-        {
-            
+        if (tmp->product_ch_type==TREE_AC_TYPE){
             int nStatus=-1;//-1则状态不变,0、1则是子状态
             //判断是否三相单输出情况下
             if(tmp->product_ch_type==TREE_AC_TYPE) {
@@ -1293,13 +1298,14 @@ int cascade_get(_OverChnPwrAckInfo *chInfo)
                 }else {
                     pch->status = tmp->_PowerInfo.status;
                 }
-                list_add_tail(&pch->list, &chInfo->list);
+
+                
+                list_add_tail(&pch->list, &ch->list);
             }
         }
         else {
             pch = (_OverChnPwrAckInfo *)malloc(sizeof(_OverChnPwrAckInfo));
-            if (pch == NULL)
-            {
+            if (pch == NULL) {
                 log_e("_overChnPwrBackInfoTemp malloc err.");
                 return -1;
             }
@@ -1318,7 +1324,9 @@ int cascade_get(_OverChnPwrAckInfo *chInfo)
             pch->factor = tmp->_PowerInfo.factor;
             pch->product_ch_start_delay = tmp->product_ch_start_delay;
             pch->product_ch_stop_delay = tmp->product_ch_stop_delay;
-            list_add_tail(&pch->list, &chInfo->list);
+            
+            
+            list_add_tail(&pch->list, &ch->list);
         }
     }
 

+ 8 - 1
pro/src/cascade.h

@@ -140,6 +140,11 @@ typedef struct {
     uint16_t        stop_delay;
 }channel_info_t;
 
+typedef struct {
+    product_info_t  prod;
+    
+}overall_info_t;
+
 typedef struct {
     uint8_t         cnt;
     product_info_t  prod;
@@ -211,7 +216,9 @@ extern int cur_dev_addr;
 int cascade_init(void);
 int cascade_reinit(void);
 int cascade_request(cmd_data_t *cmd);
-int cascade_get(_OverChnPwrAckInfo *chInfo);
+int cascade_get_all(_OverAllPwrAckInfo *all);
+int cascade_get_ch(_OverChnPwrAckInfo *ch);
+
 
 int cascade_get_dlist(dev_list_t *dl);
 int cascade_free_dlist(dev_list_t *dl);

+ 1 - 0
pro/src/cascade_slave.c

@@ -3,6 +3,7 @@
 #include "list.h"
 #include "switch_ctrl.h"
 #include "cascade.h"
+#include "sqlite_handle.h"
 
 
 

+ 1 - 1
pro/src/common.h

@@ -597,7 +597,7 @@ typedef struct
     int                 roleID;    				//角色ID
     char*               roleName;               //角色名称
     int                 roleLevel; 		        //角色等级
-    int                 roleAuthority; 			//角色权限
+    char*               roleAuthority; 			//角色权限
     int                 roleSort;    		    //显示顺序
     char*               createTime;             //创建时间     
     struct list_head    list;

+ 0 - 4
pro/src/dflt.c

@@ -40,10 +40,6 @@ AllParasInfo DFLT_PARAS={
             .product_relay_ctrl_port = "/dev/ttyAS5",   //表头级联串口对应路径
         },
     },
-
-    .relay = {
-        0
-    },
     
 };
 

+ 33 - 28
pro/src/json_handle.c

@@ -1,4 +1,5 @@
 #include "json_handle.h"
+#include "sqlite_handle.h"
 #include "elog.h"
 #include <string.h>
 #include <time.h>
@@ -976,7 +977,7 @@ char* over_all_monitor_to_json(_OverBackStsInfo* _over_back_sts_info)
     cJSON_AddStringToObject(data_filed,"productPwrType",_over_back_sts_info->productPwrType);
     cJSON_AddStringToObject(data_filed,"productVersion",_over_back_sts_info->productVersion);
 //    cJSON_AddStringToObject(data_filed,"productConsumption",_over_back_sts_info->productConsumption);
-    cJSON_AddStringToObject(data_filed,"productMemory",_over_back_sts_info->productMemory);
+    cJSON_AddNumberToObject(data_filed,"productMemory",_over_back_sts_info->productMemory);
     cJSON_AddStringToObject(data_filed,"occupancyRate",_over_back_sts_info->occupancyRate);
     cJSON_AddStringToObject(data_filed,"productAddr",_over_back_sts_info->productAddr);
     cJSON_AddNumberToObject(data_filed,"productCount",_over_back_sts_info->productCount);
@@ -1303,7 +1304,7 @@ char* over_channel_power_history_to_json(GlobalPowerInfo* _globalPowerInfo,Globa
         cJSON_AddStringToObject(data_filed,"productConsumption",temp);
         sprintf(temp,"%0.3f",__globalPowerInfoTemp->_power_info.factor);                 
         cJSON_AddStringToObject(data_filed,"productPowerFactor",temp);
-        cJSON_AddStringToObject(data_filed,"productChStatus",_globalDeviceInfo->product_id);   
+        cJSON_AddNumberToObject(data_filed,"productChStatus",_globalDeviceInfo->product_id);   
         list_for_each_entry(iterator, &__globalDeviceManage._globalPowerManger.list, list)
         {
             if (iterator->product_id == __globalPowerInfoTemp->product_id && iterator->product_ch_id == __globalPowerInfoTemp->product_ch_id)
@@ -2367,7 +2368,7 @@ char* over_sensor_history_info_to_json(_OverSensorBackInfo* _over_all_sensor_bac
                 }
                 cJSON_AddItemToObject(data,"xAxis",date_time_xAxis_array);
                 cJSON_AddStringToObject(data,"sensorName",_over_all_sensor_back_info->sensorName);
-                cJSON_AddStringToObject(data,"sensorType",_over_all_sensor_back_info->sensorType);
+                cJSON_AddNumberToObject(data,"sensorType",_over_all_sensor_back_info->sensorType);
                 cJSON* type_data_array = cJSON_CreateArray();
                 cJSON* type_data_temp = cJSON_CreateObject();
                 cJSON_AddStringToObject(type_data_temp,"typeName",language_temperature[__globalDeviceManage._global_device_info->product_language]);
@@ -2381,7 +2382,8 @@ char* over_sensor_history_info_to_json(_OverSensorBackInfo* _over_all_sensor_bac
                 cJSON_AddItemToObject(type_data_humi,"ydata",ydate_humi_array);
                 cJSON_AddStringToObject(type_data_humi,"type","1");
                 cJSON_AddItemToArray(type_data_array,type_data_humi);
-                cJSON_AddArrayToObject(data,type_data_array);
+                //cJSON_AddArrayToObject(data,type_data_array);
+                cJSON_AddItemToArray(data,type_data_array);
             }
             else if(_over_all_sensor_back_info->sensorType == SENSOR_TYPE_GAS)
             {
@@ -2391,7 +2393,7 @@ char* over_sensor_history_info_to_json(_OverSensorBackInfo* _over_all_sensor_bac
                 }
                 cJSON_AddItemToObject(data,"xAxis",date_time_xAxis_array);
                 cJSON_AddStringToObject(data,"sensorName",_over_all_sensor_back_info->sensorName);
-                cJSON_AddStringToObject(data,"sensorType",_over_all_sensor_back_info->sensorType);
+                cJSON_AddNumberToObject(data,"sensorType",_over_all_sensor_back_info->sensorType);
                 cJSON* type_data_array = cJSON_CreateArray();
                 cJSON* type_data_gas = cJSON_CreateObject();
                 cJSON_AddStringToObject(type_data_gas,"typeName",language_atmosphere_gas[__globalDeviceManage._global_device_info->product_language]);
@@ -2399,7 +2401,8 @@ char* over_sensor_history_info_to_json(_OverSensorBackInfo* _over_all_sensor_bac
                 cJSON_AddItemToObject(type_data_gas,"ydata",ydate_gas_array);
                 cJSON_AddStringToObject(type_data_gas,"type","0");
                 cJSON_AddItemToArray(type_data_array,type_data_gas);
-                cJSON_AddArrayToObject(data,type_data_array);
+                //cJSON_AddArrayToObject(data,type_data_array);
+                cJSON_AddItemToArray(data,type_data_array);
             }
             else if(_over_all_sensor_back_info->sensorType == SENSOR_TYPE_AIR_PRESS)
             {
@@ -2409,7 +2412,7 @@ char* over_sensor_history_info_to_json(_OverSensorBackInfo* _over_all_sensor_bac
                 }
                 cJSON_AddItemToObject(data,"xAxis",date_time_xAxis_array);
                 cJSON_AddStringToObject(data,"sensorName",_over_all_sensor_back_info->sensorName);
-                cJSON_AddStringToObject(data,"sensorType",_over_all_sensor_back_info->sensorType);
+                cJSON_AddNumberToObject(data,"sensorType",_over_all_sensor_back_info->sensorType);
                 cJSON* type_data_array = cJSON_CreateArray();
                 cJSON* type_data_air = cJSON_CreateObject();
                 cJSON_AddStringToObject(type_data_air,"typeName",language_atmosphere_airflow[__globalDeviceManage._global_device_info->product_language]);
@@ -2423,11 +2426,13 @@ char* over_sensor_history_info_to_json(_OverSensorBackInfo* _over_all_sensor_bac
                 cJSON_AddItemToObject(type_data_press,"ydata",ydate_press_array);
                 cJSON_AddStringToObject(type_data_press,"type","1");
                 cJSON_AddItemToArray(type_data_array,type_data_press);
-                cJSON_AddArrayToObject(data,type_data_array);
+                //cJSON_AddArrayToObject(data,type_data_array);
+                cJSON_AddItemToArray(data,type_data_array);
             }
             sprintf(temp, "%d", _temp->sensorId);
-            cJSON_AddStringToObject(data,"sensorId",temp);
-            cJSON_AddArrayToObject(data_root_array,data);
+            cJSON_AddStringToObject(data,"sensorId",(const char*)temp);
+            //cJSON_AddArrayToObject(data_root_array,data);
+            cJSON_AddItemToArray(data_root_array,data);
         }
     }
     else if(sensor_type == SENSOR_TYPE_LIST)
@@ -4366,24 +4371,24 @@ char* service_userRole_ack_to_json(char* _userName,UserInfo* __UserInfo_t,RoleIn
 void InitHashTable(HashTable *table)
 {
     int nMaxSize=4;
-    insert_Newhash(table,language_alarm_Ch[0],language_alarm_Ch,nMaxSize);
-    insert_Newhash(table,language_alarm_V[0],language_alarm_V,nMaxSize);
-    insert_Newhash(table,language_alarm_A[0],language_alarm_A,nMaxSize);
-    insert_Newhash(table,language_alarm_W[0],language_alarm_W,nMaxSize);
-    insert_Newhash(table,language_alarm_P[0],language_alarm_P,nMaxSize);
-    insert_Newhash(table,language_alarm_Up[0],language_alarm_Up,nMaxSize);
-    insert_Newhash(table,language_alarm_Down[0],language_alarm_Down,nMaxSize);
-    insert_Newhash(table,language_alarm_ctrl_Open[0],language_alarm_ctrl_Open,nMaxSize);
-    insert_Newhash(table,language_alarm_ctrl_Close[0],language_alarm_ctrl_Close,nMaxSize);
-    insert_Newhash(table,language_alarm_Ctrl_ALL[0],language_alarm_Ctrl_ALL,nMaxSize);
-    insert_Newhash(table,language_alarm_connect_ERROR[0],language_alarm_connect_ERROR,nMaxSize);
-    insert_Newhash(table,language_alarm_Init_Success[0],language_alarm_Init_Success,nMaxSize);
-    insert_Newhash(table, language_alarm_NULL_ERROR[0], language_alarm_NULL_ERROR, nMaxSize);
+    insert_Newhash(table,(const char*)language_alarm_Ch[0],language_alarm_Ch,nMaxSize);
+    insert_Newhash(table,(const char*)language_alarm_V[0],language_alarm_V,nMaxSize);
+    insert_Newhash(table,(const char*)language_alarm_A[0],language_alarm_A,nMaxSize);
+    insert_Newhash(table,(const char*)language_alarm_W[0],language_alarm_W,nMaxSize);
+    insert_Newhash(table,(const char*)language_alarm_P[0],language_alarm_P,nMaxSize);
+    insert_Newhash(table,(const char*)language_alarm_Up[0],language_alarm_Up,nMaxSize);
+    insert_Newhash(table,(const char*)language_alarm_Down[0],language_alarm_Down,nMaxSize);
+    insert_Newhash(table,(const char*)language_alarm_ctrl_Open[0],language_alarm_ctrl_Open,nMaxSize);
+    insert_Newhash(table,(const char*)language_alarm_ctrl_Close[0],language_alarm_ctrl_Close,nMaxSize);
+    insert_Newhash(table,(const char*)language_alarm_Ctrl_ALL[0],language_alarm_Ctrl_ALL,nMaxSize);
+    insert_Newhash(table,(const char*)language_alarm_connect_ERROR[0],language_alarm_connect_ERROR,nMaxSize);
+    insert_Newhash(table,(const char*)language_alarm_Init_Success[0],language_alarm_Init_Success,nMaxSize);
+    insert_Newhash(table,(const char*)language_alarm_NULL_ERROR[0], language_alarm_NULL_ERROR, nMaxSize);
     //13
-    insert_Newhash(table, language_temperature[0], language_temperature, nMaxSize);
-    insert_Newhash(table, language_humidity[0], language_humidity, nMaxSize);
-    insert_Newhash(table, language_atmosphere_gas[0], language_atmosphere_gas, nMaxSize);
-    insert_Newhash(table, language_atmosphere_airflow[0], language_atmosphere_airflow, nMaxSize);
-    insert_Newhash(table, language_atmosphere_pressure[0], language_atmosphere_pressure, nMaxSize);
+    insert_Newhash(table,(const char*)language_temperature[0], language_temperature, nMaxSize);
+    insert_Newhash(table,(const char*)language_humidity[0], language_humidity, nMaxSize);
+    insert_Newhash(table,(const char*)language_atmosphere_gas[0], language_atmosphere_gas, nMaxSize);
+    insert_Newhash(table,(const char*)language_atmosphere_airflow[0], language_atmosphere_airflow, nMaxSize);
+    insert_Newhash(table,(const char*)language_atmosphere_pressure[0], language_atmosphere_pressure, nMaxSize);
     //18
 }

+ 2 - 2
pro/src/language_hashmap.c

@@ -20,7 +20,7 @@ HashTable *create_hash_table(int size)
 }  
   
 // 在哈希表中插入键值对  
-void insert_Newhash(HashTable *table, const char *key, char value[][64],int valuelens) 
+void insert_Newhash(HashTable *table, const char *key, const char value[][64],int valuelens) 
 {   
     unsigned int index = _hash(table,key);  
     HashEntry *entry = (HashEntry *)malloc(sizeof(HashEntry));  
@@ -79,7 +79,7 @@ void replace_sequences(char *str, HashTable *table) {
             char *key = strdup(token + 1); // 跳过开头的`$`  
             key[strlen(key) - 1] = '\0'; // 去除结尾的`$`  
             const char *replacement; 
-            HashEntry* pEnty= find_hash(table, key);
+            HashEntry* pEnty= (HashEntry*)find_hash(table, key);
             if (pEnty)
             {
                replacement=pEnty->value[__globalDeviceManage._global_device_info->product_language];  

+ 1 - 1
pro/src/language_hashmap.h

@@ -25,7 +25,7 @@ unsigned int _hash(HashTable *table,const char *key) ;
 HashTable *create_hash_table(int size);
   
 // 在哈希表中插入键值对  
-void insert_Newhash(HashTable *table, const char *key, char value[][64],int valuelens);
+void insert_Newhash(HashTable *table, const char *key, const char value[][64],int valuelens);
   
 // 在哈希表中查找键对应的值  
 const HashEntry*find_hash(HashTable *table, const char *key);

+ 1 - 0
pro/src/lcd_app.c

@@ -1,5 +1,6 @@
 #include "lcd_app.h"
 #include "io.h"
+#include "lcd_drv.h"
 #include <fcntl.h>
 #include <poll.h>
 #include <unistd.h>

+ 1 - 1
pro/src/modbus_handle.c

@@ -32,7 +32,7 @@ int g_modbus_init(void* manger,
                 int delay)
 {
     Modbus_Manger *modbus_manger = (Modbus_Manger *)manger;
-    modbus_manger->port_name = port_name;
+    modbus_manger->port_name = (char*)port_name;
     modbus_manger->baud = baud;
     modbus_manger->type = type;
     modbus_manger->saddr = saddr;

+ 3 - 3
pro/src/paras.c

@@ -30,7 +30,7 @@ static int file_save(char *path, void *buf, int len)
     
     fp = fopen(path, "wb");
     if(!fp) {
-        LOG("file_save, fopen %s failed, %d, %d\n", path);
+        LOG("file_save, fopen %s failed\n", path);
         return -1;
     }
     r = fwrite(buf, 1, len, fp);
@@ -52,7 +52,7 @@ static int file_load(char* path, void* buf, int len)
 
     fp = fopen(path, "rb");
     if (!fp) {
-        LOG("file_load, fopen %s failed, %d, %d\n", path);
+        LOG("file_load, fopen %s failed\n", path);
         return -1;
     }
     r = fread(buf, 1, len, fp);
@@ -161,7 +161,7 @@ int paras_power_set(int saddr, GlobalPowerManger *pm)
     int i,j;
     RelayPowerInfo *rp=&allParas.relay.ch[saddr];
 
-    if(pm) rp->pwr[pm->product_ch_id] = *pm;
+    if(pm) rp->pwr[(int)pm->product_ch_id] = *pm;
     rp->inited = 1;
 
     return 0;

+ 4 - 3
pro/src/pduMIB_form.c

@@ -7,7 +7,8 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
 #include "pduMIB_form.h"
-
+#include "switch_ctrl.h"
+#include "sqlite_handle.h"
 #include "common.h"
 
 /** Initialize the pduChannelTable table by defining its contents and how it's structured */
@@ -745,7 +746,7 @@ pduGroupTable_handler(
        this gives you chance to act on the request in some other way
        if need be. */
 
-    netsnmp_request_info *request;
+    netsnmp_request_info *request=NULL;
     netsnmp_table_request_info *table_info;
     GroupInfo *_GroupInfoTemp = NULL;
     GroupInfo group_list;
@@ -890,7 +891,7 @@ pduGroupTable_handler(
                          if (atoi(pCHlist) == _globalPowerMangerTemp->product_ch_id)
                          {
                             log_d("SNMP Group switch ctrl:%d", _globalPowerMangerTemp->product_ch_id);
-                            pAddrCtrl[_globalPowerMangerTemp->product_saddr] |= 1 << (_globalPowerMangerTemp->product_ch_addr - 1);
+                            pAddrCtrl[(int)_globalPowerMangerTemp->product_saddr] |= 1 << (_globalPowerMangerTemp->product_ch_addr - 1);
                             break;
                          }
                       }

+ 1 - 0
pro/src/pduMIB_scalar.c

@@ -7,6 +7,7 @@
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "pduMIB_scalar.h"
+#include "switch_ctrl.h"
 #include "common.h"
 // #include "common.h"
 

+ 116 - 78
pro/src/sqlite_handle.c

@@ -1,4 +1,6 @@
+#include <math.h>
 #include "sqlite_handle.h"
+#include "websocket_handle.h"
 #include "elog.h"
 #include "time.h"
 #include "paras.h"
@@ -19,7 +21,7 @@ int sqlite_init(sqlite3** db,pthread_mutex_t* pDBMutex, const char* daba_name)
         log_d("DB Mutex init has failed\n");  
         return -1;  
     }  
-    paras_load();       //通过文件加载配置参数
+    //paras_load();       //通过文件加载配置参数
     
     ret = sqlite3_open(daba_name,db);
     if(ret != SQLITE_OK)
@@ -59,7 +61,7 @@ int sqlite_SQL_RUN(sqlite3 *db,const char *select_sql, char ***pResult, int *nro
 {
     int res=0;
     pthread_mutex_lock(&__globalDeviceManage.dbThreadlock);
-    res = sqlite3_get_table(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
+    res = sqlite3_get_table(db, select_sql, pResult, nrow, ncolumn, err_msg);
     pthread_mutex_unlock(&__globalDeviceManage.dbThreadlock);
     return res;
 }
@@ -134,7 +136,7 @@ int dev_update_device_genera_info(sqlite3 *db,GlobalDeviceInfo* _globalDeviceInf
     return paras_save();
 #else
     int res ;
-    char select_sql[256] = {0};
+    char select_sql[2000] = {0};
     char *errorMsg = NULL;
     int nrow = 0;               //满足条件的记录数目
     int ncolumn = 0;            //每条记录包含的字段数据
@@ -152,8 +154,10 @@ int dev_update_device_genera_info(sqlite3 *db,GlobalDeviceInfo* _globalDeviceInf
                     _globalDeviceInfo->product_save_time,
                     _globalDeviceInfo->product_id);
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
-    if(res != SQLITE_OK)
-        return -1 ;  
+    if(res != SQLITE_OK) {
+        log_e("sqlite handle error: %s \n%s", err_msg,select_sql); free(err_msg);
+        return -1 ; 
+    } 
     sqlite3_free_table(pResult);
 #endif
 
@@ -175,7 +179,7 @@ int dev_update_device_modus_info(sqlite3 *db,GlobalDeviceInfo* _globalDeviceInfo
         return -1;
     }
     int res ;
-    char select_sql[256] = {0};
+    char select_sql[2000] = {0};
     char *errorMsg = NULL;
     int nrow = 0;               //满足条件的记录数目
     int ncolumn = 0;            //每条记录包含的字段数据
@@ -189,8 +193,10 @@ int dev_update_device_modus_info(sqlite3 *db,GlobalDeviceInfo* _globalDeviceInfo
         //_globalDeviceInfo->_modbus_info.product_relay_ctrl_port,//只改级联的串口配置,继电器采集和传感器采集端口不变
         _globalDeviceInfo->product_id);
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
-    if(res != SQLITE_OK)
-        return -1 ;  
+    if(res != SQLITE_OK) {
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
+        return -1 ;
+    }
     sqlite3_free_table(pResult);
 #endif
 
@@ -255,7 +261,7 @@ int dev_change_last_Index(sqlite3 *db,int* nIndex,int nDeleteNumber,char* tableN
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
     if(res != SQLITE_OK)
     {
-        log_e("sqlite handle error: %s \n%s", err_msg,select_sql);
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
         return -1 ;  
     }    
     sqlite3_free_table(pResult);
@@ -303,7 +309,7 @@ int dev_insert_power_info(sqlite3 *db,GlobalPowerInfo* _globalPowerChnInfo,int*
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
     if(res != SQLITE_OK)
     {
-        log_e("sqlite handle error: %s \n%s", err_msg,select_sql);
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
         return -1 ; 
     }
          
@@ -475,19 +481,19 @@ int dev_search_latest_power_All_info(GlobalDeviceManager* globalDeviceManger,_Ov
 /// @param db 
 /// @param _globalPowerManger 
 /// @return 
-int dev_search_latest_power_statistic_info(GlobalDeviceManager* globalDeviceManger)
+int dev_search_latest_power_statistic_info(GlobalDeviceManager* globalDeviceManger, _OverAllPwrAckInfo *all)
 {
-    _OverAllPwrAckInfo _over_all_pwr_back_info; //设备电源信息
     GlobalPowerManger* _globalPowerMangerTemp = NULL ;
     char* upgrade_msg = NULL ;
     float fSaveVoltage =0.0f,fSaveFreq =0.0f,fSaveFactor =0.0f;
     float faverageVoltage =0.0f,faverageFreq =0.0f,faverageFactor =0.0f;
     float fDiffVoltage =0.0f,fDiffFreq =0.0f,fDiffFactor =0.0f;
     float fNowVoltage =0.0f,fNowFreq =0.0f,fNowFactor =0.0f;
-    memset(&_over_all_pwr_back_info,0,sizeof(_OverAllPwrAckInfo));
-    _over_all_pwr_back_info.product_name = globalDeviceManger->_global_device_info->product_name;
-    _over_all_pwr_back_info.product_id = globalDeviceManger->_global_device_info->product_id;
-    _over_all_pwr_back_info.product_number = globalDeviceManger->_global_device_info->product_number;
+
+    memset(all,0,sizeof(_OverAllPwrAckInfo));
+    all->product_name = globalDeviceManger->_global_device_info->product_name;
+    all->product_id = globalDeviceManger->_global_device_info->product_id;
+    all->product_number = globalDeviceManger->_global_device_info->product_number;
     int nTempSum=0;
     list_for_each_entry(_globalPowerMangerTemp, &globalDeviceManger->_globalPowerManger.list, list)
     {
@@ -509,7 +515,7 @@ int dev_search_latest_power_statistic_info(GlobalDeviceManager* globalDeviceMang
     nTempSum=0;
     list_for_each_entry(_globalPowerMangerTemp, &globalDeviceManger->_globalPowerManger.list, list)
     {
-        _over_all_pwr_back_info.consumption += _globalPowerMangerTemp->_PowerInfo.consumption ;
+        all->consumption += _globalPowerMangerTemp->_PowerInfo.consumption ;
 
         //有通道电压不为0的才记录在内
         if (_globalPowerMangerTemp->_PowerInfo.voltage <= 0)
@@ -547,22 +553,16 @@ int dev_search_latest_power_statistic_info(GlobalDeviceManager* globalDeviceMang
             }            
         }        
         // 填数据     
-        _over_all_pwr_back_info.current += _globalPowerMangerTemp->_PowerInfo.current ;
-        _over_all_pwr_back_info.power +=  _globalPowerMangerTemp->_PowerInfo.power ;
-        _over_all_pwr_back_info.consumption += _globalPowerMangerTemp->_PowerInfo.consumption ;
+        all->current += _globalPowerMangerTemp->_PowerInfo.current ;
+        all->power +=  _globalPowerMangerTemp->_PowerInfo.power ;
+        all->consumption += _globalPowerMangerTemp->_PowerInfo.consumption ;
         nTempSum++;
     }
-    _over_all_pwr_back_info.voltage = fSaveVoltage ; 
-    _over_all_pwr_back_info.freq =  fSaveFreq ;
-    _over_all_pwr_back_info.factor = fSaveFactor;      
-    _over_all_pwr_back_info.power = _over_all_pwr_back_info.power /1000;
-
-    upgrade_msg = ws_over_status_ack_to_json(0,&_over_all_pwr_back_info);
-
-    websocket_send(upgrade_msg, strlen(upgrade_msg));
-
-    //释放资源,一定要记得释放json字符串
-    free(upgrade_msg);
+    all->voltage = fSaveVoltage ; 
+    all->freq =  fSaveFreq ;
+    all->factor = fSaveFactor;      
+    all->power = all->power/1000;
+    
     return 0;
 }
 #define DEBUG_TEST 0
@@ -576,7 +576,7 @@ int dev_search_latest_power_statistic_info(GlobalDeviceManager* globalDeviceMang
 int dev_search_time_power_info(sqlite3 *db,int product_id,int product_ch_id,int total_type,GlobalPowerInfo* _globalPowerInfo,char* start_time,char* end_time)
 {
     int res ;
-    char select_sql[512] = {0};
+    char select_sql[2000] = {0};
     char *errorMsg = NULL;
     int nrow = 0;               //满足条件的记录数目
     int ncolumn = 0;            //每条记录包含的字段数据
@@ -701,7 +701,7 @@ int dev_search_time_power_info(sqlite3 *db,int product_id,int product_ch_id,int
 int dev_search_time_t_ac_power_info(sqlite3 *db,int product_id,int product_ch_id,int total_type,GlobalPowerInfo* _globalPowerInfo,char* start_time,char* end_time)
 {
     int res ;
-    char select_sql[512] = {0};
+    char select_sql[2000] = {0};
     char *errorMsg = NULL;
     int nrow = 0;               //满足条件的记录数目
     int ncolumn = 0;            //每条记录包含的字段数据
@@ -1047,7 +1047,7 @@ int dev_insert_power_manage_info(sqlite3 *db,int product_id,int product_ch_id,Gl
     return paras_power_set(product_ch_id, _globalPowerChnManger);
 #else
     int res ;
-    char select_sql[512] = {0};
+    char select_sql[2000] = {0};
     char *errorMsg = NULL;
     int nrow = 0;               //满足条件的记录数目
     int ncolumn = 0;            //每条记录包含的字段数据
@@ -1087,8 +1087,10 @@ int dev_insert_power_manage_info(sqlite3 *db,int product_id,int product_ch_id,Gl
                     );
     printf("select_sql:%s\n",select_sql);
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
-    if(res != SQLITE_OK)
-        return -1 ;  
+    if(res != SQLITE_OK) {
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
+        return -1 ;
+    }
     sqlite3_free_table(pResult);
 #endif
 
@@ -1113,7 +1115,7 @@ int dev_get_power_manage_info(sqlite3 *db,int product_id,int product_addr,int pr
     int ncolumn = 0;            //每条记录包含的字段数据
     char** pResult = NULL;  //用来指向sql执行结果的指针
     char* err_msg=NULL;
-    char select_sql[256] = {0};
+    char select_sql[512] = {0};
     sprintf(select_sql,"SELECT* FROM Table_PowerManage WHERE product_id=%d AND product_ch_addr_id=%d and product_ch_addr_ch_id=%d;",product_id,product_addr,product_ch_id);
     res = sqlite3_get_table(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
     if(res != SQLITE_OK)
@@ -1235,8 +1237,10 @@ int dev_insert_t_ac_power_manage_info(sqlite3 *db,int product_id,int product_ch_
                     );
     printf("select_sql:%s\n",select_sql);
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
-    if(res != SQLITE_OK)
-        return -1 ;  
+    if(res != SQLITE_OK) {
+        log_e("sqlite handle error: %s \n%s", err_msg,select_sql); free(err_msg);
+        return -1 ; 
+    } 
     sqlite3_free_table(pResult);
     return 0;
 }
@@ -1255,7 +1259,7 @@ int dev_get_t_ac_power_manage_info(sqlite3 *db,int product_id,int product_addr,i
     int ncolumn = 0;            //每条记录包含的字段数据
     char** pResult = NULL;  //用来指向sql执行结果的指针
     char* err_msg=NULL;
-    char select_sql[256] = {0};
+    char select_sql[512] = {0};
     sprintf(select_sql,"SELECT* FROM Table_PhasePowerManage WHERE product_id=%d AND product_ch_addr_id=%d and product_ch_addr_ch_id=%d and product_ph_id=%d;",product_id,product_addr,product_ch_id,product_ph_id);
     res = sqlite3_get_table(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
     if(res != SQLITE_OK)
@@ -1347,8 +1351,10 @@ int dev_update_t_ac_power_manage_info(sqlite3 *db,GlobalTreeACManager* _globalPo
                     );
     printf("UPDATE_sql:%s\n",select_sql);
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
-    if(res != SQLITE_OK)
-        return -1 ;  
+    if(res != SQLITE_OK) {
+        log_e("sqlite handle error: %s \n%s", err_msg,select_sql); free(err_msg);
+        return -1 ;
+    }
     sqlite3_free_table(pResult);
     return 0;
 }
@@ -1424,6 +1430,7 @@ int dev_update_power_manage_genera_info(sqlite3 *db,int product_id,int product_c
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
     if(res != SQLITE_OK)
     {
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
         return -1 ;  
     }
          
@@ -1474,8 +1481,10 @@ int dev_update_power_manage_over_info(sqlite3 *db,int product_id,int product_ch_
         // log_i(select_sql);
         printf("%s\n",select_sql);
         res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
-        if(res != SQLITE_OK)
-            return -1 ;   
+        if(res != SQLITE_OK) {
+            log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
+            return -1 ;
+        }
  sqlite3_free_table(pResult);
     return 0 ;
 }
@@ -1589,8 +1598,8 @@ int dev_insert_sensor_info(sqlite3 *db,GlobalSensorInfo* _globalSensorInfo,int *
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
     if(res != SQLITE_OK)
     {
-        printf("errmsg  = %s %s\n",err_msg,select_sql);
-         return -1 ;  
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
+        return -1 ;  
     }   
     sqlite3_free_table(pResult);
     *nIndex+=1;
@@ -1785,8 +1794,10 @@ int dev_insert_sensor_genera_manage(sqlite3 *db,GlobalSensorManger* _globalSenso
     log_d(select_sql);
 
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
-    if(res != SQLITE_OK)
-        return -1 ;  
+    if(res != SQLITE_OK) {
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
+        return -1 ;
+    }
     sqlite3_free_table(pResult);
     return 0;
 }
@@ -1821,8 +1832,10 @@ int dev_update_sensor_genera_manage(sqlite3 *db,int product_id,int sensor_id,Glo
             product_id,
             sensor_id);
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
-    if(res != SQLITE_OK)
-        return -1 ; 
+    if(res != SQLITE_OK) {
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
+        return -1 ;
+    }
     sqlite3_free_table(pResult);  
     return 0 ;
 }
@@ -1843,7 +1856,7 @@ int dev_update_sensor_over_manage(sqlite3 *db,int product_id,int sensor_id,Globa
     int ncolumn = 0;            //每条记录包含的字段数据
     char** pResult = NULL;  //用来指向sql执行结果的指针
     char* err_msg=NULL;
-    char select_sql[1024] = {0};
+    char select_sql[2000] = {0};
     sprintf(select_sql, "UPDATE Table_SensorManage SET \
     sensor_val1_u_enable=%d,\
     sensor_val1_u_threshold=%0.2f,\
@@ -1881,8 +1894,10 @@ int dev_update_sensor_over_manage(sqlite3 *db,int product_id,int sensor_id,Globa
             product_id,
             sensor_id);
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
-    if(res != SQLITE_OK)
-        return -1 ;   
+    if(res != SQLITE_OK) {
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
+        return -1 ;
+    }
     sqlite3_free_table(pResult);
     return 0 ;
 }
@@ -1910,8 +1925,10 @@ int dev_insert_alarm_info(sqlite3* db,int product_id,int alarm_type,char* date_t
         product_id,
         alarm_content);
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
-    if(res != SQLITE_OK)
+    if(res != SQLITE_OK) {
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
         return -1 ;   
+    }
     sqlite3_free_table(pResult);
     return 0;
 }
@@ -1995,6 +2012,8 @@ int dev_serarch_all_alarm(sqlite3* db,
         list_add_tail(&_alarmTemp->list, &_alarm_ack_info->list);
     }
     sqlite3_free_table(pResult);
+
+    return 0;
 }
 
 /// @brief 查询告警历史记录
@@ -2134,8 +2153,10 @@ int dev_update_ntp_info(sqlite3 *db, int product_id, NTPManager* _globalNTPInfo)
         _globalNTPInfo->tzone,
         product_id);
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
-    if(res != SQLITE_OK)
-        return -1 ;   
+    if(res != SQLITE_OK) {
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
+        return -1 ;
+    }
     sqlite3_free_table(pResult);
 
     return 0;
@@ -2162,8 +2183,10 @@ int dev_insert_ntp_info(sqlite3 *db,NTPManager* _globalNTPInfo)
         _globalNTPInfo->weekday,
         _globalNTPInfo->tzone);
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
-    if(res != SQLITE_OK)
-        return -1 ;   
+    if(res != SQLITE_OK) {
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
+        return -1 ;
+    }
     sqlite3_free_table(pResult);
     return 0;
 }
@@ -2216,8 +2239,10 @@ int dev_insert_snmp_info(sqlite3 *db, SNMPManager* _globalSNMPInfo)
         _globalSNMPInfo->public,
         _globalSNMPInfo->trapmode);
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
-    if(res != SQLITE_OK)
-        return -1 ;   
+    if(res != SQLITE_OK) {
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
+        return -1 ;
+    }
     sqlite3_free_table(pResult);
     return 0;
 }
@@ -2239,8 +2264,10 @@ int dev_update_snmp_info(sqlite3 *db, int product_id, SNMPManager* _globalSNMPIn
         _globalSNMPInfo->trapmode,
         product_id);
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
-    if(res != SQLITE_OK)
-        return -1 ;   
+    if(res != SQLITE_OK) {
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
+        return -1 ;
+    }
     sqlite3_free_table(pResult);
 
     return 0;
@@ -2366,8 +2393,10 @@ int dev_insert_group_info(sqlite3 *db,GroupInfo* _globalgroupInfo)
         _globalgroupInfo->GroupName,
         _globalgroupInfo->GroupChList);
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
-    if(res != SQLITE_OK)
-        return -1 ;   
+    if(res != SQLITE_OK) {
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
+        return -1 ;
+    }
     sqlite3_free_table(pResult);
     return 0;
 }
@@ -2435,8 +2464,10 @@ int dev_update_user_info(sqlite3 *db, UserInfo* _globaluserInfo)
         _globaluserInfo->userID,
         _globaluserInfo->product_id);
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
-    if(res != SQLITE_OK)
-        return -1 ;   
+    if(res != SQLITE_OK) {
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
+        return -1 ;
+    }
     sqlite3_free_table(pResult);
 
     return 0;
@@ -2463,8 +2494,10 @@ int dev_insert_user_info(sqlite3 *db,UserInfo* _globaluserInfo)
         _globaluserInfo->createTime
         );
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
-    if(res != SQLITE_OK)
-        return -1 ;   
+    if(res != SQLITE_OK) {
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
+        return -1 ;
+    }
     sqlite3_free_table(pResult);
     return 0;
 }
@@ -2558,8 +2591,10 @@ int dev_update_role_info(sqlite3 *db, RoleInfo* _globalRoleInfo)
         _globalRoleInfo->product_id
         );
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
-    if(res != SQLITE_OK)
-        return -1 ;   
+    if(res != SQLITE_OK) {
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
+        return -1 ;
+    }
     sqlite3_free_table(pResult);
 
     return 0;
@@ -2586,8 +2621,11 @@ int dev_insert_role_info(sqlite3 *db,RoleInfo* _globalRoleInfo)
         _globalRoleInfo->createTime
         );
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
-    if(res != SQLITE_OK)
-        return -1 ;   
+    if(res != SQLITE_OK) {
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql); free(err_msg);
+        return -1 ;
+    }
+
     sqlite3_free_table(pResult);
     return 0;
 }
@@ -2674,11 +2712,11 @@ int dev_get_power_ds(sqlite3 *db,GlobalPowerManger* _powerAll,char* dateSelect)
         // 获取ID
         _PowerDSManage_t *new_data = (_PowerDSManage_t *)malloc(sizeof(_PowerDSManage_t));
         // 清空数据
-        memset(new_data, 0, sizeof(new_data));
-        if (!new_data)
-        {
+        if (!new_data) {
             break;
         }
+        memset(new_data, 0, sizeof(_PowerDSManage_t));
+
         int nProduct_id     = atoi(pResult[i * ncolumn + 0]);
         int nProduct_chn    = atoi(pResult[i * ncolumn + 1]);
         strcpy(new_data->ds_date, pResult[i * ncolumn + 2]);
@@ -2730,7 +2768,7 @@ int dev_update_power_ds(sqlite3 *db,int product_id,int nChn,_PowerDSManage_t* _p
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
     if(res != SQLITE_OK)
     {
-        log_e("sqlite handle error: %s \n%s", err_msg,select_sql);
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql);  free(err_msg);
         return -1 ; 
     }         
     sqlite3_free_table(pResult);
@@ -2762,7 +2800,7 @@ int dev_insert_power_ds(sqlite3 *db,int product_id,int nChn,_PowerDSManage_t* _p
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
     if(res != SQLITE_OK)
     {
-        log_e("sqlite handle error: %s \n%s", err_msg,select_sql);
+        log_e("sqlite handle error: %s \n%s\n", err_msg,select_sql);  free(err_msg);
         return -1 ; 
     }         
     sqlite3_free_table(pResult);
@@ -2790,7 +2828,7 @@ int dev_delete_power_ds(sqlite3 *db,int product_id,int nChn,_PowerDSManage_t* _p
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
     if (res != SQLITE_OK)
     {
-        log_e("sqlite handle error: %s \n%s", err_msg, select_sql);
+        log_e("sqlite handle error: %s \n%s\n", err_msg, select_sql); free(err_msg);
         return -1;
     }
     sqlite3_free_table(pResult);

+ 2 - 2
pro/src/sqlite_handle.h

@@ -23,7 +23,7 @@ int dev_insert_power_info(sqlite3 *db,GlobalPowerInfo* _globalPowerChnInfo,int*
 int dev_search_latest_power_info(sqlite3 *db,int product_id,int product_ch_id,GlobalPowerInfo* _globalPowerInfo);
 int dev_search_latest_power_All_info(GlobalDeviceManager* globalDeviceManger,_OverChnPwrAckInfo* __overChnPwrAckInfo);
 
-int dev_search_latest_power_statistic_info(GlobalDeviceManager* globalDeviceManger);
+int dev_search_latest_power_statistic_info(GlobalDeviceManager* globalDeviceManger, _OverAllPwrAckInfo *all);
 int dev_search_latest_t_ac_power_statistic_info(int nCh,int nType,_OverAllPwrAckInfo* __overChnPwrAckInfo,GlobalDeviceManager* globalDeviceManger);
 
 int dev_search_time_power_info(sqlite3 *db,int product_id,int product_ch_id,int total_type,GlobalPowerInfo* _globalPowerInfo,char* start_time,char* end_time);
@@ -120,7 +120,7 @@ int dev_update_role_info(sqlite3 *db, RoleInfo* _globalRoleInfo);
 int dev_insert_role_info(sqlite3 *db,RoleInfo* _globalRoleInfo);
 int dev_get_role_info(sqlite3 *db, RoleInfo* _globalRoleInfo);
 
-//定时器设置
+//锟斤拷时锟斤拷锟斤拷锟斤拷
 int dev_get_power_ds(sqlite3 *db,GlobalPowerManger* _powerAll,char* dateSelect);
 int dev_update_power_ds(sqlite3 *db,int product_id,int nChn,_PowerDSManage_t* _powerDS);
 int dev_insert_power_ds(sqlite3 *db,int product_id,int nChn,_PowerDSManage_t* _powerDS);

+ 34 - 32
pro/src/switch_ctrl.c

@@ -1,4 +1,5 @@
 #include "switch_ctrl.h"
+#include "sqlite_handle.h"
 #include "modbus_handle.h"
 #include "hlw8110_habdle.h"
 
@@ -32,9 +33,9 @@ int g_switch_get_type(void* manger,int saddr, int* type,int* chn,int nPowerType)
         int ret = 0 ;
         unsigned short data_temp[4];
         memset(data_temp,0,sizeof(data_temp));
-        // ret = g_modbus_read_reg(manger,saddr,_SWITCH_TYPE_CHN_INFO,&data_temp);
+        // ret = g_modbus_read_reg(manger,saddr,_SWITCH_TYPE_CHN_INFO,data_temp);
         // if(ret!=TRUE)
-        ret = g_modbus_read_x_reg(manger,saddr,_SWITCH_DCPDU_TYPE_CHN_INFO, 2,&data_temp);
+        ret = g_modbus_read_x_reg(manger,saddr,_SWITCH_DCPDU_TYPE_CHN_INFO, 2, data_temp);
         log_d("ret:%d saddr:%d data:%d,%d.\n",ret,saddr,data_temp[1],data_temp[0]);
         if (ret<=0)
         {
@@ -354,7 +355,7 @@ int g_switch_set_ac_single_b_start_time_delay(void* manger,int saddr,unsigned ch
     if(chn>=4)
         return -1;    
     offset = _SWITCH_AC_SINGLE_B_START_DELAY_TIME+chn*2;    
-    return g_modbus_write_x_reg(manger,saddr,offset,2,&time);
+    return g_modbus_write_x_reg(manger,saddr,offset,2,(unsigned short*)&time);
 }
 
 
@@ -370,7 +371,7 @@ int g_switch_set_ac_single_b_stop_time_delay(void* manger,int saddr,unsigned cha
     if(chn>=4)
         return -1;    
     offset = _SWITCH_AC_SINGLE_B_STOP_DELAY_TIME+chn*2;    
-    return g_modbus_write_x_reg(manger,saddr,offset,2,&time);
+    return g_modbus_write_x_reg(manger,saddr,offset,2,(unsigned short*)&time);
 }
 
 
@@ -384,7 +385,7 @@ int g_switch_set_dc_start_time_delay(void* manger,int saddr,unsigned int time)
     unsigned int offset = 0;   
     offset = _SWITCH_DC_START_DELAY_TIME;
 
-    return g_modbus_write_x_reg(manger,saddr,offset,2,&time) ;
+    return g_modbus_write_x_reg(manger,saddr,offset,2,(unsigned short*)&time) ;
 }
 
 /// @brief 设置直流继电器控制板
@@ -396,7 +397,7 @@ int g_switch_set_dc_stop_time_delay(void* manger,int saddr,unsigned int time)
 {
     unsigned int offset = 0;   
     offset = _SWITCH_DC_STOP_DELAY_TIME;
-    return g_modbus_write_x_reg(manger,saddr,offset,2,&time);
+    return g_modbus_write_x_reg(manger,saddr,offset,2,(unsigned short*)&time);
 }
 
 
@@ -601,7 +602,7 @@ int g_switch_set_ac_single_b_kb_val(void* manger,int saddr,unsigned char chn,Swi
 /// @return 
 int g_switch_set_dc_kb_val(void* manger,int saddr,SwitchKbVal* _kb_val)
 {
-    unsigned int offset = 0;
+    unsigned short offset = 0;
     unsigned short data_temp[8] = {0};
     offset = _SWITCH_DC_KB_VAL;
     data_temp[0] = (unsigned short)_kb_val->voltage_k;
@@ -612,7 +613,7 @@ int g_switch_set_dc_kb_val(void* manger,int saddr,SwitchKbVal* _kb_val)
     data_temp[5] = (unsigned short)((_kb_val->current_k-data_temp[4])*1000);
     data_temp[6] = (unsigned short)_kb_val->current_b;
     data_temp[7] = (unsigned short)((_kb_val->current_b-data_temp[6])*1000);
-    g_modbus_write_reg(manger,saddr,offset,data_temp);
+    g_modbus_write_x_reg(manger,saddr,offset,8, data_temp);
     return 0 ;
 }
 
@@ -943,7 +944,7 @@ int g_switch_set_all_ctrl(void* manger,int ntype,int saddr,unsigned short sts)
 
             nchNum++;
         }
-        return g_switch_set_ac_single_s_ctrl(manger, saddr, &switch_ctrl,nchNum);
+        return g_switch_set_ac_single_s_ctrl(manger, saddr, switch_ctrl,nchNum);
     }
     break;
     case AC_SINGLE_B_TYPE:
@@ -967,7 +968,7 @@ int g_switch_set_all_ctrl(void* manger,int ntype,int saddr,unsigned short sts)
             }
             nchNum++;
         }
-        return g_switch_set_ac_single_b_ctrl(manger,saddr,&switch_ctrl,nchNum);
+        return g_switch_set_ac_single_b_ctrl(manger,saddr,switch_ctrl,nchNum);
     }
     break;
     case DC_OUT_TYPE:
@@ -977,12 +978,12 @@ int g_switch_set_all_ctrl(void* manger,int ntype,int saddr,unsigned short sts)
     break;
     case DCPDU_TYPE:
     {
-        return g_switch_set_dcpdu_ctrl(manger, saddr, &switch_ctrl);
+        return g_switch_set_dcpdu_ctrl(manger, saddr, switch_ctrl);
     }
     break;
     case TREE_AC_TYPE:
     {
-        return g_switch_set_t_ac_ctrl(manger, saddr,&switch_ctrl);
+        return g_switch_set_t_ac_ctrl(manger, saddr,switch_ctrl);
     }
     case AC_MULTI_S_TYPE:
     case AC_MULTI_B_TYPE:
@@ -1119,14 +1120,14 @@ int g_switch_get_dcpdu_out_info(void* manger,int saddr,unsigned char chn,PowerIn
     //获取开关状态
     offset = _SWITCH_DCPDU_STS_INFO;
     memset(data_temp,0,sizeof(data_temp));
-    ret = g_modbus_read_x_reg(manger,saddr,offset, 2,&data_temp);
+    ret = g_modbus_read_x_reg(manger,saddr,offset, 2, data_temp);
     status_temp = (data_temp[1] << 16) + data_temp[0];
     _power->status = (status_temp >> chn) & 0x1;
 
     //获取故障状态
     offset = _SWITCH_DCPDU_STS_ERROR;
     memset(data_temp,0,sizeof(data_temp));
-    ret = g_modbus_read_x_reg(manger,saddr,offset, 2,&data_temp);
+    ret = g_modbus_read_x_reg(manger,saddr,offset, 2, data_temp);
     status_temp = (data_temp[1] << 16) + data_temp[0];
     _warning->w_voltage_up = (status_temp >> chn) & 0x1;
     return ret;
@@ -1221,7 +1222,7 @@ int g_switch_get_dcpdu_all_out_info(void* manger,int saddr,int nNumb,PowerInfo*
     offset = _SWITCH_DCPDU_STS_INFO;
     // 读取寄存器
     memset(data_temp, 0, sizeof(data_temp));
-    ret = g_modbus_read_x_reg(manger, saddr, offset, 2, &data_temp);
+    ret = g_modbus_read_x_reg(manger, saddr, offset, 2, data_temp);
     // 解控制数据
     if (ret < 0)
     {
@@ -1235,7 +1236,7 @@ int g_switch_get_dcpdu_all_out_info(void* manger,int saddr,int nNumb,PowerInfo*
     // 获取故障状态
     offset = _SWITCH_DCPDU_STS_ERROR;
     memset(data_temp, 0, sizeof(data_temp));
-    ret = g_modbus_read_x_reg(manger, saddr, offset, 2, &data_temp);
+    ret = g_modbus_read_x_reg(manger, saddr, offset, 2, data_temp);
     if (ret < 0)
     {
         return ret;
@@ -1276,7 +1277,7 @@ int g_switch_get_dcpdu_start_time_delay(void* manger,int saddr,unsigned int* tim
     unsigned int offset = 0;
     unsigned short data_temp[16];
     offset = _SWITCH_DCPDU_START_DELAY_TIME;
-    int ret = g_modbus_read_x_reg(manger,saddr,offset,16,&data_temp);
+    int ret = g_modbus_read_x_reg(manger,saddr,offset,16,data_temp);
     unsigned int value = 0;
     for(int i = 0; i < 8; i++)
     {
@@ -1292,7 +1293,7 @@ int g_switch_get_dcpdu_stop_time_delay(void* manger,int saddr,unsigned int* time
     unsigned int offset = 0;
     unsigned short data_temp[16];
     offset = _SWITCH_DCPDU_STOP_DELAY_TIME;
-    int ret = g_modbus_read_x_reg(manger,saddr,offset,16,&data_temp);
+    int ret = g_modbus_read_x_reg(manger,saddr,offset,16,data_temp);
     unsigned int value = 0;
     for(int i = 0; i < 8; i++)
     {
@@ -1425,22 +1426,22 @@ int g_switch_get_dcpdu_threshold(void* manger,int saddr,char chn,GlobalOverManag
     unsigned int value = 0;
 
     offset = _SWITCH_DCPDU_MAX_VOL_THRESHOLD + chn;
-    int ret = g_modbus_read_x_reg(manger,saddr,offset,2,&data_temp);
+    int ret = g_modbus_read_x_reg(manger,saddr,offset,2,data_temp);
     value = (data_temp[1] << 16) + data_temp[0];
     _global_over_manager->product_vol_upper_threshold = value / 1000.0;
 
     offset = _SWITCH_DCPDU_MIN_VOL_THRESHOLD + chn;
-    ret = g_modbus_read_x_reg(manger,saddr,offset,2,&data_temp);
+    ret = g_modbus_read_x_reg(manger,saddr,offset,2,data_temp);
     value = (data_temp[1] << 16) + data_temp[0];
     _global_over_manager->product_vol_lower_threshold = value / 1000.0;
     
     offset = _SWITCH_DCPDU_MAX_CUR_THRESHOLD + chn;
-    ret = g_modbus_read_x_reg(manger,saddr,offset,2,&data_temp);
+    ret = g_modbus_read_x_reg(manger,saddr,offset,2,data_temp);
     value = (data_temp[1] << 16) + data_temp[0];
     _global_over_manager->product_cur_upper_threshold = value / 1000.0;
 
     offset = _SWITCH_DCPDU_MIN_CUR_THRESHOLD + chn;
-    ret = g_modbus_read_x_reg(manger,saddr,offset,2,&data_temp);
+    ret = g_modbus_read_x_reg(manger,saddr,offset,2,data_temp);
     value = (data_temp[1] << 16) + data_temp[0];
     _global_over_manager->product_cur_lower_threshold = value / 1000.0;
 
@@ -1547,13 +1548,13 @@ int g_switch_get_t_ac_out_info(void* manger,int saddr,unsigned char chn,PowerInf
     //获取开关状态
     offset = _SWITCH_T_AC_OUT_ENABLE+ chn;
     memset(data_temp,0,sizeof(data_temp));
-    ret = g_modbus_read_x_reg(manger,saddr,offset, 2,&data_temp);
+    ret = g_modbus_read_x_reg(manger,saddr,offset, 2,data_temp);
     _power->status = data_temp[0] & BIT_00;
 
     //获取故障状态
     offset = _SWITCH_T_AC_OUT_ERROR+ chn;
     memset(data_temp,0,sizeof(data_temp));
-    ret = g_modbus_read_x_reg(manger,saddr,offset, 2,&data_temp);
+    ret = g_modbus_read_x_reg(manger,saddr,offset, 2,data_temp);
     _warning->w_voltage_up      = data_temp[0] & ENABLE_TAC_V_UP;
     _warning->w_voltage_down    = data_temp[0] & ENABLE_TAC_V_DOWN;
     _warning->w_current         = data_temp[0] & ENABLE_TAC_A_UP;
@@ -1662,7 +1663,7 @@ int g_switch_get_t_ac_start_time_delay(void* manger,int saddr,unsigned int* time
     unsigned int offset = 0;
     unsigned short data_temp[16];
     offset = _SWITCH_T_AC_START_DELAY_TIME;
-    int ret = g_modbus_read_x_reg(manger,saddr,offset,16,&data_temp);
+    int ret = g_modbus_read_x_reg(manger,saddr,offset,16,data_temp);
     unsigned int value = 0;
     for(int i = 0; i < 8; i++)
     {
@@ -1676,7 +1677,7 @@ int g_switch_get_t_ac_stop_time_delay(void* manger,int saddr,unsigned int* time)
     unsigned int offset = 0;
     unsigned short data_temp[16];
     offset = _SWITCH_T_AC_STOP_DELAY_TIME;
-    int ret = g_modbus_read_x_reg(manger,saddr,offset,16,&data_temp);
+    int ret = g_modbus_read_x_reg(manger,saddr,offset,16,data_temp);
     unsigned int value = 0;
     for(int i = 0; i < 8; i++)
     {
@@ -1693,31 +1694,31 @@ int g_switch_get_t_ac_threshold(void* manger,int saddr,char chn,GlobalOverManage
     unsigned int value = 0;
     float fvalue=0.0;
     offset = _SWITCH_T_AC_MAX_VOL_THRESHOLD + chn;
-    int ret = g_modbus_read_x_reg(manger,saddr,offset,2,&data_temp);
+    int ret = g_modbus_read_x_reg(manger,saddr,offset,2,data_temp);
     value = (data_temp[1] << 16) + data_temp[0];
     fvalue=(float)value;
     _global_over_manager->product_vol_upper_threshold = fvalue / 1000.0;
 
     offset = _SWITCH_T_AC_MIN_VOL_THRESHOLD + chn;
-    ret = g_modbus_read_x_reg(manger,saddr,offset,2,&data_temp);
+    ret = g_modbus_read_x_reg(manger,saddr,offset,2,data_temp);
     value = (data_temp[1] << 16) + data_temp[0];
     fvalue=(float)value;
     _global_over_manager->product_vol_lower_threshold = fvalue / 1000.0;
     
     offset = _SWITCH_T_AC_MAX_CUR_THRESHOLD + chn;
-    ret = g_modbus_read_x_reg(manger,saddr,offset,2,&data_temp);
+    ret = g_modbus_read_x_reg(manger,saddr,offset,2,data_temp);
     value = (data_temp[1] << 16) + data_temp[0];
     fvalue=(float)value;
     _global_over_manager->product_cur_upper_threshold = fvalue / 1000.0;
 
     offset = _SWITCH_T_AC_MAX_PWR_THRESHOLD + chn;
-    ret = g_modbus_read_x_reg(manger,saddr,offset,2,&data_temp);
+    ret = g_modbus_read_x_reg(manger,saddr,offset,2,data_temp);
     value = (data_temp[1] << 16) + data_temp[0];
     fvalue=(float)value;
     _global_over_manager->product_pwr_upper_threshold = fvalue / 1000.0;
 
     offset = _SWITCH_T_AC_MAX_PWRCON_THRESHOLD + chn;
-    ret = g_modbus_read_x_reg(manger,saddr,offset,2,&data_temp);
+    ret = g_modbus_read_x_reg(manger,saddr,offset,2,data_temp);
     value = (data_temp[1] << 16) + data_temp[0];
     fvalue=(float)value;
     _global_over_manager->product_pwrcon_upper_threshold = fvalue / 1000.0;
@@ -1907,7 +1908,7 @@ int g_switch_get_t_ac_in_info(void* manger,int saddr,PowerInfo* _power,PowerWarn
     offset = _SWITCH_T_AC_IN_ERROR;
     //读取寄存器
     memset(data_temp,0,sizeof(data_temp));
-    ret = g_modbus_read_x_reg(manger,saddr,offset, 2,&data_temp); 
+    ret = g_modbus_read_x_reg(manger,saddr,offset, 2,data_temp); 
     //解报警数据
     if (ret<0)
     {
@@ -2276,4 +2277,5 @@ int  ResetChmData()
             break;
     }
 
+    return ret;
 }

+ 11 - 7
pro/src/sys.c

@@ -11,6 +11,7 @@
 #include "upgrade.h"
 #include "paras.h"
 #include "cfg.h"
+#include "sqlite_handle.h"
 
 #if 0
 #define LOGE  log_e
@@ -50,6 +51,8 @@ static int node_free(node_t *nd)
     nd->pbuf = NULL;
     nd->dlen = 0;
     nd->blen = 0;
+
+    return 0;
 }
 
 static int exe_cmd(char *cmd, node_t *nd)
@@ -122,7 +125,7 @@ int sys_set_factory(void)
     char dir[100],tmp[200];
 
     extern GlobalDeviceManager __globalDeviceManage;
-    sqlite_deinit(&__globalDeviceManage.db);
+    sqlite_deinit(__globalDeviceManage.db, &__globalDeviceManage.dbThreadlock);
 
     sys_get_path(dir, "");
     snprintf(tmp, sizeof(tmp),"cp -f %s/%s %s/%s", dir, DATABASE_BAK_NAME, dir, DATABASE_NAME);
@@ -425,7 +428,7 @@ static int set_dhcp(int on)
 
 static int set_dns(int family, const char* iface, char* dns1, char *dns2)
 {
-    int fd;
+    int fd=-1;
     struct ifreq ifr;
     
 #if 0 
@@ -567,7 +570,7 @@ static int file_save(char *path, void *buf, int len)
     
     fp = fopen(path, "w");
     if(!fp) {
-        LOGE("file_save, fopen %s failed, %d, %d\n", path);
+        LOGE("file_save, fopen %s failed\n", path);
         return -1;
     }
     r = fwrite(buf, 1, len, fp);
@@ -590,7 +593,7 @@ static int file_load(char* path, void* buf, int len)
 
     fp = fopen(path, "r");
     if (!fp) {
-        LOGE("file_load, fopen %s failed, %d, %d\n", path);
+        LOGE("file_load, fopen %s failed\n", path);
         return -1;
     }
     r = fread(buf, 1, len, fp);
@@ -619,7 +622,7 @@ typedef struct {
     int  len;
 }nic_t;
 
-static int find_str(char *buf, char *head, char *tail, char *nic)
+static char* find_str(char *buf, char *head, char *tail, char *nic)
 {
     int len;
     char *p,*p1,*p2;
@@ -692,8 +695,10 @@ static int get_ip(char *nbuf, char *token, char *ipaddr)
             }
         }
         ipaddr[cnt] = 0;
-    }
 
+        return 0;
+    }
+    return -1;
 }
 
 static int get_net(NetworkInfo_t *para)
@@ -795,7 +800,6 @@ static int set_net(NetworkInfo_t *para)
     }
 
     return r;
-
 }
 
 //////////////////////////////////////////////////////////////////////////////

+ 14 - 14
pro/src/xlist.c

@@ -83,7 +83,7 @@ static list_node_t* node_from_free(list_t *l, int dlen)
     list_node_t *tmp=NULL;
     dlist_t *dl=&l->free;
     
-    tmp = dl->head;         //从头部开始搜索合适节点
+    tmp = dl->head;         //锟斤拷头锟斤拷锟斤拷始锟斤拷锟斤拷锟斤拷锟绞节碉拷
     while(tmp) {
         if(tmp->data.buf && tmp->data.blen>=dlen) {
             
@@ -127,8 +127,8 @@ static int node_to_free(list_t *l, list_node_t *node)
     list_node_t *tail=NULL;
     dlist_t *dl=&l->free;
     
-    tail = dl->tail;          //新节点加在free列表尾部
-    if(tail==NULL) {          //无节点
+    tail = dl->tail;          //锟铰节碉拷锟斤拷锟絝ree锟叫憋拷尾锟斤拷
+    if(tail==NULL) {          //锟睫节碉拷
         node->prev = NULL;
         node->next = NULL;
         
@@ -228,7 +228,7 @@ static int node_remove(list_t *l, list_node_t *node, int ds)
 }
 static int node_insert(list_t *l, list_node_t *node, int index)
 {
-    list_node_t *xd,*tmp=node;
+    list_node_t *xd=NULL,*tmp=node;
     dlist_t *dl=&l->used;
     
     if(dl->size==0) {
@@ -536,10 +536,10 @@ int xlist_insert(handle_t l, node_t *node, int index)
     }
     
     if (hl->cfg.max>0 && hl->used.size>=hl->cfg.max) {
-        //链表装满时, 根据策略丢数据
-        //如果要插入的位置为末尾, 则丢弃
+        //锟斤拷锟斤拷装锟斤拷时, 锟斤拷锟捷诧拷锟皆讹拷锟斤拷锟斤拷
+        //锟斤拷锟揭�拷锟斤拷锟斤拷位锟斤拷为末尾, 锟斤拷锟斤拷
         if(index<0 || index>=hl->used.size-1) {
-            if(hl->cfg.mode==LIST_FULL_FILO) { //策略为丢新数据时
+            if(hl->cfg.mode==LIST_FULL_FILO) { //锟斤拷锟斤拷为锟斤拷锟斤拷锟斤拷锟斤拷时
                 if (hl->cfg.log) {
                     //LOGW("___list_insert, list full, discard the new data\n");
                 }
@@ -550,10 +550,10 @@ int xlist_insert(handle_t l, node_t *node, int index)
                 //LOGW("___list_insert, list full, discard the old data\n");
             }
             
-            xd = node_get(hl, 0);              //找最老的数据丢
+            xd = node_get(hl, 0);              //锟斤拷锟斤拷锟较碉拷锟斤拷锟捷讹拷
             node_remove(hl, xd, 1);
         }
-        else {  //如果插入位置位于中间, 则需丢最后一个数据
+        else {  //�������λ��λ���м�, ���趪���һ������
             if (hl->cfg.log) {
                 LOGW("___list_insert, insert to the middle, discard the last data\n");
             }
@@ -598,16 +598,16 @@ int xlist_insert_node(handle_t l, list_node_t *lnode, int index)
     }
     
     if (hl->cfg.max>0 && hl->used.size>=hl->cfg.max) {
-        //链表装满时, 根据策略丢数据
-        //如果要插入的位置为末尾, 则丢弃
+        //锟斤拷锟斤拷装锟斤拷时, 锟斤拷锟捷诧拷锟皆讹拷锟斤拷锟斤拷
+        //锟斤拷锟揭�拷锟斤拷锟斤拷位锟斤拷为末尾, 锟斤拷锟斤拷
         if(index<0 || index>=hl->used.size-1) {
-            if(hl->cfg.mode==LIST_FULL_FILO) { //策略为丢新数据时
+            if(hl->cfg.mode==LIST_FULL_FILO) { //锟斤拷锟斤拷为锟斤拷锟斤拷锟斤拷锟斤拷时
                 r = 0; goto quit;
             }
-            xd = node_get(hl, 0);              //找最老的数据丢
+            xd = node_get(hl, 0);              //锟斤拷锟斤拷锟较碉拷锟斤拷锟捷讹拷
             node_remove(hl, xd, 1);
         }
-        else {  //如果插入位置位于中间, 则需丢最后一个数据
+        else {  //�������λ��λ���м�, ���趪���һ������
             xd = node_get(hl, hl->used.size-1);
             node_remove(hl, xd, 1);
         }