Ver código fonte

1、添加升级接口
2、微调配置导入导出接口

guohui 1 ano atrás
pai
commit
6e19ecb5c4

+ 4 - 25
pro/src/app.c

@@ -142,9 +142,11 @@ static int upgrade_proc(char *path, Modbus_Manger *mm)
 }
 
 
-int power_upgrade(char *path, Modbus_Manger *mm)
+int power_upgrade(char *path)
 {
     int r;
+    GlobalDeviceManager *dm=&__globalDeviceManage;
+    Modbus_Manger *mm=&dm->_globalRelaySampManger;
 
     thread_stop(THREAD_ID_SNMP);
     thread_stop(THREAD_ID_POWER);
@@ -157,27 +159,6 @@ int power_upgrade(char *path, Modbus_Manger *mm)
     return r;
 }
 
-//#define UPG_TEST
-void upg_test(void)
-{
-    int r;
-    Modbus_Manger mm;
-    GlobalDeviceManager *dm=&__globalDeviceManage;
-    #define UPG_FILE  "/root/dl/fw.upg"
-
-#ifdef UPG_TEST
-    r = g_modbus_init(&mm,
-                        INTERL_MODBUS_PORT,
-                        INTERL_MODBUS_BAUD,
-                        MASTER_MODE,
-                        0,
-                        "relay",1);
-
-    upgrade_proc(UPG_FILE, &mm);
-    exit(0);
-#endif
-}
-
 
 static void* power_thread(void* arg)
 {
@@ -1137,7 +1118,7 @@ static void* power_thread(void* arg)
         //延时
         //usleep(samp_time*1000);
     }
-    free_hash_table(_globalDeviceManager->alarmTab);
+    
     log_e("Error!!!!!!!!!!!!!!Thread End");
     pthread_exit(NULL);
 }
@@ -2069,8 +2050,6 @@ int app_init(void)
     int nTac_chn=0;
     GlobalDeviceManager* _globalDeviceManager=&__globalDeviceManage;
 
-    upg_test();
-
     INIT_LIST_HEAD(&_GlobalUserLoginInfo.list);
     INIT_LIST_HEAD(&_globalDeviceManager->_globalPowerManger.list);
     INIT_LIST_HEAD(&_globalDeviceManager->_globalPowerManger.list_Tree_AC);

+ 16 - 10
pro/src/appweb_handle.c

@@ -268,9 +268,11 @@ static int file_io(void *conn, int ftype, int io, char *buf)
             if(io==FILE_IMPORT) {
                 r = upload_file(conn, path);
                 if(r==0) {
+                    //thread_stop(THREAD_ID_POWER);
                     r = paras_serv_xport(path, PARAS_IMPORT);
                     file_remove(path);
                     if(r==0) exit(0);
+                    //thread_start2(THREAD_ID_POWER);
                 }
             }
             else {
@@ -5658,21 +5660,25 @@ static void controlBoardUpgrade(void *conn)
     struct mg_http_message *hm=s->ev_data;
 
     if(strstr(hm->uri.buf, "listCbQuery")) {
+        board_info_t info;
 
+        //get_board_info(&info);
+        ack_str = board_to_json(&info);
+        http_reply(conn, 200, ack_str);
+        cJSON_free(ack_str);
     }
     else if(strstr(hm->uri.buf, "type=importData")) {
+        char path[100];
 
+        sprintf(path, "%s/%s", DOWN_FOLDER, "fw.upg");
+        r = upload_file(conn, path);
+        if(r==0) {
+            printf("_____ power upgrade now ...\n");
+            extern int power_upgrade(char *path);
+            power_upgrade(path);
+            file_remove(path);
+        }
     }
-
-#if 0
-    sprintf(path, "%s/%s", DOWN_FOLDER, "power.bin");
-    r = upload_file(conn, path);
-    if(r==0) {
-        printf("_____ power upgrade now ...\n");
-        //power_upgrade(path);
-        //file_remove(path);
-    }
-#endif
 }
 
 

+ 9 - 1
pro/src/common.h

@@ -714,7 +714,6 @@ enum {
     MQTT_PLAT_MAX
 };
 
-
 typedef struct {
     int                 id;    		                    //id
     int                 plat;                           //0: emqx   1: aliyun
@@ -1001,6 +1000,15 @@ typedef struct {
     int     triggered;
 }timer_data_t;
 
+typedef struct {
+    char name[32];
+    char ver[32];
+    char date[32];
+    int  dev_id;
+    int  brd_id;
+    int  channels;
+    int  status;
+}board_info_t;
 
 typedef struct breaker_switch_sta{     
     uint16_t status;

+ 2 - 2
pro/src/dflt.c

@@ -70,9 +70,9 @@ mqtt_info_t DFLT_MQTT={
         .id = 0,
         .plat = MQTT_PLAT_EMQX,
         .mode = 0,
-        .cid = "",
+        .cid = "emqx_123456",
         .proto = "mqtts",
-        .name  = "server1",
+        .name  = "1",
         .server = "gaae4d7b.ala.cn-hangzhou.emqxsl.cn",
         .port = "8883",
         .cert = "-----BEGIN CERTIFICATE-----\r\n"

+ 11 - 9
pro/src/json_handle.c

@@ -1502,7 +1502,8 @@ char* upgrade_to_json(void)
     return str;
 }
 
-char* ctrlboard_to_json(void)
+
+char* board_to_json(board_info_t *info)
 {
     char* str = NULL;
     char *p,temp[200];
@@ -1516,16 +1517,17 @@ char* ctrlboard_to_json(void)
     cJSON* array = cJSON_CreateArray();
     cJSON* data_field = cJSON_CreateObject();
 
-#if 0
-    sprintf(temp,"%d",prod->id);
+    cJSON_AddStringToObject(data_field,"productName",info->name);
+    sprintf(temp,"%d",info->dev_id);
     cJSON_AddStringToObject(data_field,"productId",temp);
-    cJSON_AddStringToObject(data_field,"productName",prod->name);
-    cJSON_AddStringToObject(data_field,"productNumber",prod->name);
-    cJSON_AddStringToObject(data_field,"productChNumber",prod->name);
-    cJSON_AddStringToObject(data_field,"productVersion",prod->name);
-    cJSON_AddStringToObject(data_field,"upgradeDate",prod->name);
+    sprintf(temp,"%d",info->brd_id);
+    cJSON_AddStringToObject(data_field,"productNumber",temp);
+    sprintf(temp,"%d",info->channels);
+    cJSON_AddStringToObject(data_field,"productChNumber",temp);
+    cJSON_AddStringToObject(data_field,"productVersion",info->ver);
+    cJSON_AddStringToObject(data_field,"upgradeDate",info->date);
+    sprintf(temp,"%d",info->status);
     cJSON_AddStringToObject(data_field,"status",prod->name);
-#endif
 
     cJSON_AddItemToArray(array, data_field);
     cJSON_AddItemToObject(root, "data", array);

+ 2 - 1
pro/src/json_handle.h

@@ -359,6 +359,7 @@ typedef struct
 {
     int   idx;
     int   mode;
+    char* sid;
     char* name;
     char* server;
     char* port;
@@ -651,6 +652,6 @@ char* over_all_breaker_chn_info_to_json(_OverBreakerChnInfo* _over_all_breaker_b
 char* over_all_breaker_switch_info_to_json(_OverBreakerSwitchInfo* _over_all_breaker_switch_info,int nWSType);
 char *breaker_status_ack_to_json(GlobalDeviceManager *gm,int slave);
 char* upgrade_to_json(void);
-char* ctrlboard_to_json(void);
+char* board_to_json(board_info_t *info);
 #endif
 

Diferenças do arquivo suprimidas por serem muito extensas
+ 339 - 301
pro/src/paras.c


+ 3 - 11
pro/src/sqlite_handle.c

@@ -1582,7 +1582,7 @@ int dev_get_power_manage_info(sqlite3 *db,int product_id,int product_addr,int pr
     return 0;
 }
 
-int dev_get_power_manage_info2(sqlite3 *db,int product_id,int product_ch_id,GlobalPowerManger* _globalPowerChnManger)
+int dev_get_power_manage_info2(sqlite3 *db,int product_ch_id,GlobalPowerManger* _globalPowerChnManger)
 {
     int res = 0 ;
     int rowIndex = 1 ;
@@ -5469,11 +5469,7 @@ int dev_log_xport(int type, time_t from, time_t to, char *path)
     }
 
     l = xlist_init(&lc);
-    r = db_exec(dm->db, TAB_ID_ALARM_INFO, IO_EXPORT, from, to, l);
-    if(r) {
-        xlist_free(l);
-        return -1;
-    }
+    db_exec(dm->db, TAB_ID_ALARM_INFO, IO_EXPORT, from, to, l);
 
     fp = fopen(path, "wt");
     if(!fp) {
@@ -5562,11 +5558,7 @@ int dev_power_xport(time_t from, time_t to, char *path)
     }
 
     l = xlist_init(&lc);
-    r = db_exec(dm->db, tab_id, IO_EXPORT, from, to, l);
-    if(r) {
-        xlist_free(l);
-        return -1;
-    }
+    db_exec(dm->db, tab_id, IO_EXPORT, from, to, l);
 
     fp = fopen(path, "wt");
     if(!fp) {

+ 1 - 1
pro/src/sqlite_handle.h

@@ -54,7 +54,7 @@ int dev_check_power_manage_info(sqlite3 *db, int cnt);
 int dev_insert_power_manage_info(sqlite3 *db,int product_id,int product_ch_id,GlobalPowerManger* _globalPowerChnManger);
 int dev_get_power_info(sqlite3 *db,GlobalPowerManger* pm);
 int dev_get_power_manage_info(sqlite3 *db,int product_id,int product_addr,int product_ch_id,GlobalPowerManger* _globalPowerChnManger);
-int dev_get_power_manage_info2(sqlite3 *db,int product_id,int product_ch_id,GlobalPowerManger* _globalPowerChnManger);
+int dev_get_power_manage_info2(sqlite3 *db,int product_ch_id,GlobalPowerManger* _globalPowerChnManger);
 int dev_get_power_manage_info_by_ID(sqlite3 *db,int product_id,int product_addr,int product_ch_id,GlobalPowerManger* _globalPowerChnManger);
 
 int dev_get_ac_power_info(sqlite3 *db,GlobalTreeACManager* pm);

+ 10 - 10
pro/src/switch_ctrl.c

@@ -1043,15 +1043,15 @@ int g_switch_set_all_single_threshold(void* manger,int ntype,int saddr,char chn,
         case AC_SINGLE_B_TYPE:
         {
             ret = g_switch_set_ac_single_threshold(manger, saddr, (chn - 1), _global_over_manager);
-            if (_globalPowerMangerTemp->global_over_manager.product_vol_upper_enable == 1)
+            if (_global_over_manager->product_vol_upper_enable == 1)
                 sts |= ENABLE_V_UP;
-            if (_globalPowerMangerTemp->global_over_manager.product_vol_lower_enable == 1)
+            if (_global_over_manager->product_vol_lower_enable == 1)
                 sts |= ENABLE_V_DOWN;
-            if (_globalPowerMangerTemp->global_over_manager.product_cur_upper_enable == 1)
+            if (_global_over_manager->product_cur_upper_enable == 1)
                 sts |= ENABLE_A_UP;
-            if (_globalPowerMangerTemp->global_over_manager.product_pwr_upper_enable == 1)
+            if (_global_over_manager->product_pwr_upper_enable == 1)
                 sts |= ENABLE_W_UP;
-            if (_globalPowerMangerTemp->global_over_manager.product_pwrcon_upper_enable == 1)
+            if (_global_over_manager->product_pwrcon_upper_enable == 1)
                 sts |= ENABLE_P_UP;
             ret = g_switch_set_ac_alarm_ctrl(manger, saddr, (chn - 1), _global_over_manager);
             return g_switch_set_ac_single_s_chn_ctrl(manger, saddr, (chn - 1), sts);
@@ -1106,15 +1106,15 @@ int g_switch_set_all_single_threshold(void* manger,int ntype,int saddr,char chn,
             {
                 log_e("Threshold AlarmCtrl Set Error=%s", modbus_strerror(errno));
             }
-            if (_globalPowerMangerTemp->global_over_manager.product_vol_upper_enable == 1)
+            if (_global_over_manager->product_vol_upper_enable == 1)
                 sts |= ENABLE_TAC_V_UP;
-            if (_globalPowerMangerTemp->global_over_manager.product_vol_lower_enable == 1)
+            if (_global_over_manager->product_vol_lower_enable == 1)
                 sts |= ENABLE_TAC_V_DOWN;
-            if (_globalPowerMangerTemp->global_over_manager.product_cur_upper_enable == 1)
+            if (_global_over_manager->product_cur_upper_enable == 1)
                 sts |= ENABLE_TAC_A_UP;
-            if (_globalPowerMangerTemp->global_over_manager.product_pwr_upper_enable == 1)
+            if (_global_over_manager->product_pwr_upper_enable == 1)
                 sts |= ENABLE_TAC_W_UP;
-            if (_globalPowerMangerTemp->global_over_manager.product_pwrcon_upper_enable == 1)
+            if (_global_over_manager->product_pwrcon_upper_enable == 1)
                 sts |= ENABLE_TAC_P_UP;
             if (__globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One)
             {

+ 14 - 0
pro/src/thread.c

@@ -36,6 +36,20 @@ int thread_start(int id, thread_fn fn, void *arg)
 }
 
 
+int thread_start2(int id)
+{
+    if(id<0 || id>=THREAD_ID_MAX) {
+        return -1;
+    }
+    thread_attr_t *attr=&thdAttrs[id];
+    if(!attr->fn) {
+        return -1;
+    }
+
+    return thread_startEx(id, attr->name, attr->fn, attr->arg, attr->stksz, attr->prio);
+}
+
+
 int thread_restart(int id)
 {
     if(id<0 || id>=THREAD_ID_MAX) {

+ 1 - 0
pro/src/thread.h

@@ -57,6 +57,7 @@ typedef struct {
 
 
 int thread_start(int id, thread_fn fn, void *arg);
+int thread_start2(int id);
 int thread_restart(int id);
 int thread_startEx(int id, const char *name, thread_fn fn, void *arg, int stksz, int prio);
 int thread_stop(int id);