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

继续解配置导入/出的bug

guohui 1 год назад
Родитель
Сommit
980fec4bca
6 измененных файлов с 207 добавлено и 111 удалено
  1. 25 18
      pro/src/appweb_handle.c
  2. 1 1
      pro/src/common.h
  3. 82 80
      pro/src/paras.c
  4. 97 9
      pro/src/sqlite_handle.c
  5. 1 0
      pro/src/sqlite_handle.h
  6. 1 3
      pro/src/sys.c

+ 25 - 18
pro/src/appweb_handle.c

@@ -38,7 +38,6 @@ enum {
 
 
     FILE_LOGO,
     FILE_LOGO,
     FILE_HOST_FW,
     FILE_HOST_FW,
-    FILE_POWER_FW,
 };
 };
 
 
 
 
@@ -392,20 +391,6 @@ static int file_io(void *conn, int ftype, int io, char *buf)
         }
         }
         break;
         break;
 
 
-        case FILE_POWER_FW:
-        {
-            if(io==FILE_IMPORT) {
-                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);
-                }
-            }
-        }
-        break;
-
         default:
         default:
         return -1;
         return -1;
     }
     }
@@ -414,8 +399,6 @@ static int file_io(void *conn, int ftype, int io, char *buf)
 }
 }
 /////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////
 
 
-
-
 static void http_mg_cb(struct mg_connection *c, int ev, void *ev_data)
 static void http_mg_cb(struct mg_connection *c, int ev, void *ev_data)
 {
 {
     int i,j,flag=0;
     int i,j,flag=0;
@@ -3878,7 +3861,7 @@ static void serviceManagement(void *conn)
             }
             }
 
 
             for(int i=0; i<MAIL_RECV_MAX; i++) {
             for(int i=0; i<MAIL_RECV_MAX; i++) {
-                recv[i].idx = i;
+                recv[i].id = i;
                 if(info->recvAccount[i]) {
                 if(info->recvAccount[i]) {
                     recv[i].use = 1;
                     recv[i].use = 1;
                     strcpy(recv[i].account, info->recvAccount[i]);
                     strcpy(recv[i].account, info->recvAccount[i]);
@@ -5667,6 +5650,29 @@ static void equipmentMintenanceExport(void *conn)
     }
     }
 }
 }
 
 
+static void controlBoardUpgrade(void *conn)
+{
+    int r = -1 ;
+    char* ack_str=NULL ;
+    mg_stream_t *s=(mg_stream_t*)conn;
+    struct mg_http_message *hm=s->ev_data;
+
+    if(strstr(hm->uri.buf, "listCbQuery")) {
+
+    }
+
+#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
+}
+
+
 static int webSetCallback(void)
 static int webSetCallback(void)
 {
 {
 	httpAddCallback("/login", loginFunc);//登录
 	httpAddCallback("/login", loginFunc);//登录
@@ -5687,6 +5693,7 @@ static int webSetCallback(void)
     httpAddCallback("/pdu/equipmentMintenance", equipmentMintenance);//设备维护 
     httpAddCallback("/pdu/equipmentMintenance", equipmentMintenance);//设备维护 
     httpAddCallback("/pdu/equipmentMintenanceUpload", equipmentMintenanceUpload); //固件升级
     httpAddCallback("/pdu/equipmentMintenanceUpload", equipmentMintenanceUpload); //固件升级
     httpAddCallback("/pdu/equipmentMintenanceExport", equipmentMintenanceExport);
     httpAddCallback("/pdu/equipmentMintenanceExport", equipmentMintenanceExport);
+    httpAddCallback("/pdu/controlBoardUpgrade", controlBoardUpgrade);
     
     
     return 0;
     return 0;
 }
 }

+ 1 - 1
pro/src/common.h

@@ -684,7 +684,7 @@ typedef struct
 //MAIL管理
 //MAIL管理
 typedef struct
 typedef struct
 {
 {
-    int                 idx;
+    int                 id;
     int                 use;
     int                 use;
     char                account[64];
     char                account[64];
 }mail_recv_t;
 }mail_recv_t;

+ 82 - 80
pro/src/paras.c

@@ -178,6 +178,7 @@ static int ini_read(dictionary *dic, char *key, void *val, int len, int type)
         }
         }
     }
     }
     else if(type==TYPE_STR) {
     else if(type==TYPE_STR) {
+        ((char*)val)[0] = 0;
         char *p = (char*)iniparser_getstring(dic, key, NULL);
         char *p = (char*)iniparser_getstring(dic, key, NULL);
         if(p) {
         if(p) {
             int xlen=strlen(p);
             int xlen=strlen(p);
@@ -738,14 +739,10 @@ static int proc_ntp(char *path, int op, NTPManager *ntp)
             r = ini_rw(dic, "ntp:tzone",   &pntp->tzone,     sizeof(pntp->tzone),      TYPE_INT, op); if(r) goto quit;
             r = ini_rw(dic, "ntp:tzone",   &pntp->tzone,     sizeof(pntp->tzone),      TYPE_INT, op); if(r) goto quit;
             r = ini_rw(dic, "ntp:time",    pntp->time,       sizeof(pntp->time),       TYPE_STR, op); if(r) goto quit;
             r = ini_rw(dic, "ntp:time",    pntp->time,       sizeof(pntp->time),       TYPE_STR, op); if(r) goto quit;
 
 
-            pntp->time[0] = 0;
-            pntp->weekday = 0;
             pntp->product_id = 0;
             pntp->product_id = 0;
-            r = proc_ntp(path, PARAS_CHECK, pntp);
-            if(r==0) {
-                //r = dev_clear_table(dm->db, TAB_ID_NTP);  if(r) goto quit;
-                r = dev_update_ntp_info(dm->db, 0, pntp);
-            }
+            r = proc_ntp(path, PARAS_CHECK, pntp);      if(r) goto quit;
+            //r = dev_clear_table(dm->db, TAB_ID_NTP);  if(r) goto quit;
+            r = dev_update_ntp_info(dm->db, 0, pntp);
         }
         }
         break;
         break;
 
 
@@ -802,7 +799,7 @@ static int proc_snmp(char *path, int op, SNMPManager *snmp)
                     r = -1; 
                     r = -1; 
                 }
                 }
 
 
-                if(sys_ip_check(psnmp->nmsIP)==IP_ERR) {
+                if(psnmp->version>=1 && sys_ip_check(psnmp->nmsIP)==IP_ERR) {
                     LOGE("___ check snmp, nms ip is invalid\n");
                     LOGE("___ check snmp, nms ip is invalid\n");
                     r = -1;
                     r = -1;
                 }
                 }
@@ -1080,7 +1077,8 @@ static int proc_mqtt(char *path, int op, mqtt_info_t *mqtt)
             memset(pmqtt, 0, sizeof(mqtt_info_t));
             memset(pmqtt, 0, sizeof(mqtt_info_t));
             for(i=0; i<MQTT_SER_MAX; i++) {
             for(i=0; i<MQTT_SER_MAX; i++) {
                 ser = &pmqtt->ser[j];
                 ser = &pmqtt->ser[j];
-                
+
+                ser->id = j;
                 sprintf(token, "mqtt:broker%d.plat", i+1);
                 sprintf(token, "mqtt:broker%d.plat", i+1);
                 r = ini_rw(dic, token, &ser->plat, sizeof(ser->plat), TYPE_INT, op); if(r) goto quit;
                 r = ini_rw(dic, token, &ser->plat, sizeof(ser->plat), TYPE_INT, op); if(r) goto quit;
 
 
@@ -1101,7 +1099,7 @@ static int proc_mqtt(char *path, int op, mqtt_info_t *mqtt)
                 sprintf(token, "mqtt:broker%d.port", i+1);
                 sprintf(token, "mqtt:broker%d.port", i+1);
                 r = ini_rw(dic, token, ser->port, sizeof(ser->port), TYPE_STR, op); if(r) break;
                 r = ini_rw(dic, token, ser->port, sizeof(ser->port), TYPE_STR, op); if(r) break;
 
 
-                sprintf(token, "mqtt:broker%d.clientID", i+1);
+                sprintf(token, "mqtt:broker%d.client_id", i+1);
                 r = ini_rw(dic, token, ser->cid, sizeof(ser->cid), TYPE_STR, op); if(r) break;
                 r = ini_rw(dic, token, ser->cid, sizeof(ser->cid), TYPE_STR, op); if(r) break;
 
 
                 sprintf(token, "mqtt:broker%d.user", i+1);
                 sprintf(token, "mqtt:broker%d.user", i+1);
@@ -1117,15 +1115,12 @@ static int proc_mqtt(char *path, int op, mqtt_info_t *mqtt)
                 j++;
                 j++;
             }
             }
             if(r) {
             if(r) {
-                memset(ser, 0, sizeof(mqtt_server_t));
                 ser->id = -1;
                 ser->id = -1;
             }
             }
 
 
-            r = proc_mqtt(path, PARAS_CHECK, pmqtt);
-            if(r==0) {
-                r = dev_clear_table(dm->db, TAB_ID_MQTT);  if(r) goto quit;
-                r = dev_mqtt_update_info(dm->db, pmqtt);
-            }
+            r = proc_mqtt(path, PARAS_CHECK, pmqtt); if(r) goto quit;
+            r = dev_clear_table(dm->db, TAB_ID_MQTT); if(r) goto quit;
+            r = dev_mqtt_update_info(dm->db, pmqtt);
         }
         }
         break;
         break;
 
 
@@ -1138,41 +1133,39 @@ static int proc_mqtt(char *path, int op, mqtt_info_t *mqtt)
 
 
             for(i=0; i<MQTT_SER_MAX; i++) {
             for(i=0; i<MQTT_SER_MAX; i++) {
                 ser = &pmqtt->ser[i];
                 ser = &pmqtt->ser[i];
-                
-                if(ser->mode) {
-                    sprintf(token, "mqtt:broker%d.plat", i+1);
-                    r = ini_rw(dic, token, &ser->plat, sizeof(ser->plat), TYPE_INT, op); if(r) goto quit;
 
 
-                    sprintf(token, "mqtt:broker%d.mode", i+1);
-                    r = ini_rw(dic, token, &ser->mode, sizeof(ser->mode), TYPE_INT, op); if(r) goto quit;
-                    
-            #if 0
-                    sprintf(token, "mqtt:broker%d.proto", i+1);
-                    r = ini_rw(dic, token, ser->proto, TYPE_STR, op); if(r) goto quit;
-            #endif
+                sprintf(token, "mqtt:broker%d.plat", i+1);
+                r = ini_rw(dic, token, &ser->plat, sizeof(ser->plat), TYPE_INT, op); if(r) goto quit;
 
 
-                    sprintf(token, "mqtt:broker%d.name", i+1);
-                    r = ini_rw(dic, token, ser->name, sizeof(ser->name), TYPE_STR, op); if(r) goto quit;
+                sprintf(token, "mqtt:broker%d.mode", i+1);
+                r = ini_rw(dic, token, &ser->mode, sizeof(ser->mode), TYPE_INT, op); if(r) goto quit;
                 
                 
-                    sprintf(token, "mqtt:broker%d.server", i+1);
-                    r = ini_rw(dic, token, ser->server, sizeof(ser->server), TYPE_STR, op); if(r) goto quit;
+        #if 0
+                sprintf(token, "mqtt:broker%d.proto", i+1);
+                r = ini_rw(dic, token, ser->proto, TYPE_STR, op); if(r) goto quit;
+        #endif
 
 
-                    sprintf(token, "mqtt:broker%d.port", i+1);
-                    r = ini_rw(dic, token, ser->port, sizeof(ser->port), TYPE_STR, op); if(r) goto quit;
+                sprintf(token, "mqtt:broker%d.name", i+1);
+                r = ini_rw(dic, token, ser->name, sizeof(ser->name), TYPE_STR, op); if(r) goto quit;
+            
+                sprintf(token, "mqtt:broker%d.server", i+1);
+                r = ini_rw(dic, token, ser->server, sizeof(ser->server), TYPE_STR, op); if(r) goto quit;
 
 
-                    sprintf(token, "mqtt:broker%d.clientID", i+1);
-                    r = ini_rw(dic, token, ser->cid, sizeof(ser->cid), TYPE_STR, op); if(r) goto quit;
+                sprintf(token, "mqtt:broker%d.port", i+1);
+                r = ini_rw(dic, token, ser->port, sizeof(ser->port), TYPE_STR, op); if(r) goto quit;
 
 
-                    sprintf(token, "mqtt:broker%d.user", i+1);
-                    r = ini_rw(dic, token, ser->user, sizeof(ser->user), TYPE_STR, op); if(r) goto quit;
+                sprintf(token, "mqtt:broker%d.client_id", i+1);
+                r = ini_rw(dic, token, ser->cid, sizeof(ser->cid), TYPE_STR, op); if(r) goto quit;
 
 
-                    sprintf(token, "mqtt:broker%d.password", i+1);
-                    r = ini_rw(dic, token, ser->password, sizeof(ser->password), TYPE_STR, op); if(r) goto quit;
+                sprintf(token, "mqtt:broker%d.user", i+1);
+                r = ini_rw(dic, token, ser->user, sizeof(ser->user), TYPE_STR, op); if(r) goto quit;
 
 
-                    sprintf(token, "mqtt:broker%d.cert", i+1);
-                    str_replace(ser->cert, "\r\n", ";;");
-                    r = ini_rw(dic, token, ser->cert, sizeof(ser->cert), TYPE_STR, op); if(r) goto quit;
-                }
+                sprintf(token, "mqtt:broker%d.password", i+1);
+                r = ini_rw(dic, token, ser->password, sizeof(ser->password), TYPE_STR, op); if(r) goto quit;
+
+                sprintf(token, "mqtt:broker%d.cert", i+1);
+                str_replace(ser->cert, "\r\n", ";;");
+                r = ini_rw(dic, token, ser->cert, sizeof(ser->cert), TYPE_STR, op); if(r) goto quit;
             }
             }
             r = ini_dump(path, dic);
             r = ini_dump(path, dic);
         }
         }
@@ -1239,8 +1232,8 @@ static int proc_mail(char *path, int op, mail_info_t *mail)
                     }
                     }
 
 
                     if(recv->use==1) {
                     if(recv->use==1) {
-                        if(recv->idx != i) {
-                            LOGE("___ check mail, recv[%d].idx %d mismatch it's index\n", i,recv->idx);
+                        if(recv->id != i) {
+                            LOGE("___ check mail, recv[%d].id %d mismatch it's index\n", i,recv->id);
                             r = -1; 
                             r = -1; 
                         }
                         }
 
 
@@ -1301,6 +1294,8 @@ static int proc_mail(char *path, int op, mail_info_t *mail)
             dic = iniparser_load(path); if(!dic) return -1;
             dic = iniparser_load(path); if(!dic) return -1;
 
 
             memset(pmail, 0, sizeof(mail_info_t));
             memset(pmail, 0, sizeof(mail_info_t));
+            send->id = 0;
+
             r = ini_rw(dic, "mail:send.mode",     &send->mode,    sizeof(send->mode),     TYPE_INT, op); if(r) goto quit;
             r = ini_rw(dic, "mail:send.mode",     &send->mode,    sizeof(send->mode),     TYPE_INT, op); if(r) goto quit;
             r = ini_rw(dic, "mail:send.server",   send->server,   sizeof(send->server),   TYPE_STR, op); if(r) goto quit;
             r = ini_rw(dic, "mail:send.server",   send->server,   sizeof(send->server),   TYPE_STR, op); if(r) goto quit;
             r = ini_rw(dic, "mail:send.port",     send->port,     sizeof(send->port),     TYPE_STR, op); if(r) goto quit;
             r = ini_rw(dic, "mail:send.port",     send->port,     sizeof(send->port),     TYPE_STR, op); if(r) goto quit;
@@ -1312,7 +1307,7 @@ static int proc_mail(char *path, int op, mail_info_t *mail)
             for(i=0; i<MAIL_RECV_MAX; i++) {
             for(i=0; i<MAIL_RECV_MAX; i++) {
                 recv = &pmail->recv[i];
                 recv = &pmail->recv[i];
 
 
-                recv->idx = i;
+                recv->id = i;
                 sprintf(token, "mail:recv%d.use", i+1);
                 sprintf(token, "mail:recv%d.use", i+1);
                 r = ini_rw(dic, token, &recv->use, sizeof(recv->use), TYPE_INT, op); if(r) break;
                 r = ini_rw(dic, token, &recv->use, sizeof(recv->use), TYPE_INT, op); if(r) break;
 
 
@@ -1350,14 +1345,11 @@ static int proc_mail(char *path, int op, mail_info_t *mail)
             for(i=0; i<MAIL_RECV_MAX; i++) {
             for(i=0; i<MAIL_RECV_MAX; i++) {
                 mail_recv_t *recv=&pmail->recv[i];
                 mail_recv_t *recv=&pmail->recv[i];
 
 
-                recv->idx = i;
-                if(recv->use) {
-                    sprintf(token, "mail:recv%d.use", i+1);
-                    r = ini_rw(dic, token, &recv->use, sizeof(recv->use), TYPE_INT, op); if(r) goto quit;
+                sprintf(token, "mail:recv%d.use", i+1);
+                r = ini_rw(dic, token, &recv->use, sizeof(recv->use), TYPE_INT, op); if(r) goto quit;
 
 
-                    sprintf(token, "mail:recv%d.account", i+1);
-                    r = ini_rw(dic, token, recv->account, sizeof(recv->account), TYPE_STR, op); if(r) goto quit;
-                }
+                sprintf(token, "mail:recv%d.account", i+1);
+                r = ini_rw(dic, token, recv->account, sizeof(recv->account), TYPE_STR, op); if(r) goto quit;
             }
             }
             r = ini_dump(path, dic);
             r = ini_dump(path, dic);
         }
         }
@@ -1448,11 +1440,13 @@ static int proc_role(char *path, int op, RoleInfo *role, handle_t l)
             for(x=0; x<2; x++) {
             for(x=0; x<2; x++) {
                 i = 1;
                 i = 1;
                 while(1) {
                 while(1) {
+                    prole->roleID = i;
+
                     sprintf(token, "role:role%d.name", i);
                     sprintf(token, "role:role%d.name", i);
                     r = ini_rw(dic, token, prole->roleName, sizeof(prole->roleName), TYPE_STR, op);    if(r) break;
                     r = ini_rw(dic, token, prole->roleName, sizeof(prole->roleName), TYPE_STR, op);    if(r) break;
 
 
                     sprintf(token, "role:role%d.level", i);
                     sprintf(token, "role:role%d.level", i);
-                    r = ini_rw(dic, token, &prole->roleLevel, sizeof(prole->roleLevel), TYPE_STR, op); if(r) break;
+                    r = ini_rw(dic, token, &prole->roleLevel, sizeof(prole->roleLevel), TYPE_INT, op); if(r) break;
 
 
                     sprintf(token, "role:role%d.auth", i);
                     sprintf(token, "role:role%d.auth", i);
                     r = ini_rw(dic, token, prole->roleAuthority, sizeof(prole->roleAuthority), TYPE_STR, op); if(r) break;
                     r = ini_rw(dic, token, prole->roleAuthority, sizeof(prole->roleAuthority), TYPE_STR, op); if(r) break;
@@ -1578,11 +1572,6 @@ static int proc_user(char *path, int op, UserInfo *user, handle_t l)
                 r = -1; 
                 r = -1; 
             }
             }
 
 
-            //if(puser->roleID>3) {
-            //    LOGE("___ check user, roleID is invalid, correct value is 1/2/3\n");
-            //    r = -1; 
-            //}
-
             if(!puser->createTime[0]) {
             if(!puser->createTime[0]) {
                 LOGE("___ check user, createTime is null\n");
                 LOGE("___ check user, createTime is null\n");
                 r = -1; 
                 r = -1; 
@@ -1633,19 +1622,21 @@ static int proc_user(char *path, int op, UserInfo *user, handle_t l)
             for(x=0; x<2; x++) {
             for(x=0; x<2; x++) {
                 i = 1;
                 i = 1;
                 while(1) {
                 while(1) {
-                    sprintf(token, "role:role%d.name", i);
+                    puser->userID = i;
+
+                    sprintf(token, "user:user%d.name", i);
                     r = ini_rw(dic, token, puser->userName, sizeof(puser->userName), TYPE_STR, op); if(r) break;
                     r = ini_rw(dic, token, puser->userName, sizeof(puser->userName), TYPE_STR, op); if(r) break;
 
 
-                    sprintf(token, "role:role%d.password", i);
+                    sprintf(token, "user:user%d.password", i);
                     r = ini_rw(dic, token, &puser->userPW, sizeof(puser->userPW), TYPE_STR, op); if(r) break;
                     r = ini_rw(dic, token, &puser->userPW, sizeof(puser->userPW), TYPE_STR, op); if(r) break;
 
 
-                    sprintf(token, "role:role%d.nick_name", i);
+                    sprintf(token, "user:user%d.nick_name", i);
                     r = ini_rw(dic, token, puser->nickName, sizeof(puser->nickName), TYPE_STR, op); if(r) break;
                     r = ini_rw(dic, token, puser->nickName, sizeof(puser->nickName), TYPE_STR, op); if(r) break;
 
 
-                    sprintf(token, "role:role%d.role_id", i);
+                    sprintf(token, "user:user%d.role_id", i);
                     r = ini_rw(dic, token, &puser->roleID, sizeof(puser->roleID), TYPE_INT, op); if(r) break;
                     r = ini_rw(dic, token, &puser->roleID, sizeof(puser->roleID), TYPE_INT, op); if(r) break;
 
 
-                    sprintf(token, "role:role%d.time", i);
+                    sprintf(token, "user:user%d.time", i);
                     r = ini_rw(dic, token, puser->createTime, sizeof(puser->createTime), TYPE_STR, op); if(r) break;
                     r = ini_rw(dic, token, puser->createTime, sizeof(puser->createTime), TYPE_STR, op); if(r) break;
 
 
                     if(chk_ok==0) {
                     if(chk_ok==0) {
@@ -1692,19 +1683,19 @@ static int proc_user(char *path, int op, UserInfo *user, handle_t l)
 
 
                 r = proc_user(path, PARAS_CHECK, tmp, NULL); if(r) break;
                 r = proc_user(path, PARAS_CHECK, tmp, NULL); if(r) break;
 
 
-                sprintf(token, "role:role%d.name", i);
+                sprintf(token, "user:user%d.name", i);
                 r = ini_rw(dic, token, tmp->userName, sizeof(tmp->userName), TYPE_STR, op); if(r) break;
                 r = ini_rw(dic, token, tmp->userName, sizeof(tmp->userName), TYPE_STR, op); if(r) break;
 
 
-                sprintf(token, "role:role%d.password", i);
+                sprintf(token, "user:user%d.password", i);
                 r = ini_rw(dic, token, &tmp->userPW, sizeof(tmp->userPW), TYPE_STR, op); if(r) break;
                 r = ini_rw(dic, token, &tmp->userPW, sizeof(tmp->userPW), TYPE_STR, op); if(r) break;
 
 
-                sprintf(token, "role:role%d.nick_name", i);
+                sprintf(token, "user:user%d.nick_name", i);
                 r = ini_rw(dic, token, tmp->nickName, sizeof(tmp->nickName), TYPE_STR, op); if(r) break;
                 r = ini_rw(dic, token, tmp->nickName, sizeof(tmp->nickName), TYPE_STR, op); if(r) break;
 
 
-                sprintf(token, "role:role%d.role_id", i);
+                sprintf(token, "user:user%d.role_id", i);
                 r = ini_rw(dic, token, &tmp->roleID, sizeof(tmp->roleID), TYPE_INT, op); if(r) break;
                 r = ini_rw(dic, token, &tmp->roleID, sizeof(tmp->roleID), TYPE_INT, op); if(r) break;
 
 
-                sprintf(token, "role:role%d.time", i);
+                sprintf(token, "user:user%d.time", i);
                 r = ini_rw(dic, token, tmp->createTime, sizeof(tmp->createTime), TYPE_STR, op); if(r) break;
                 r = ini_rw(dic, token, tmp->createTime, sizeof(tmp->createTime), TYPE_STR, op); if(r) break;
 
 
                 i++;
                 i++;
@@ -2522,24 +2513,25 @@ static int proc_power3(char *path, int op, GlobalTreeACManager *power)
         {
         {
             float f;
             float f;
             int x,chk_ok=0,cnt_ok=0;
             int x,chk_ok=0,cnt_ok=0;
-
+            GlobalPowerManger pwr;
             GlobalTreeACManager *tmp=&power2;
             GlobalTreeACManager *tmp=&power2;
             dic = iniparser_load(path); if(!dic) return -1;
             dic = iniparser_load(path); if(!dic) return -1;
 
 
             memset(tmp, 0, sizeof(GlobalTreeACManager));
             memset(tmp, 0, sizeof(GlobalTreeACManager));
             for(x=0; x<2; x++) {
             for(x=0; x<2; x++) {
-                for(i=1; i<=dm->brdMax; i++) {
+                for(i=1; i<=dm->brdMax*3; i++) {
+                    int channelID = i;
+
                     sprintf(token, "power:channel%d.addr",i);
                     sprintf(token, "power:channel%d.addr",i);
                     r = ini_rw(dic, token, &tmp->product_saddr, sizeof(tmp->product_saddr), TYPE_INT, op); if(r) break;
                     r = ini_rw(dic, token, &tmp->product_saddr, sizeof(tmp->product_saddr), TYPE_INT, op); if(r) break;
 
 
-                    int channelID = i;
                     tmp->product_ph_id = channelID-1;
                     tmp->product_ph_id = channelID-1;
 
 
                     sprintf(token, "power:channel%d.ch_addr",channelID);
                     sprintf(token, "power:channel%d.ch_addr",channelID);
                     r = ini_rw(dic, token, &tmp->product_ch_addr, sizeof(tmp->product_ch_addr), TYPE_INT, op); if(r) break;
                     r = ini_rw(dic, token, &tmp->product_ch_addr, sizeof(tmp->product_ch_addr), TYPE_INT, op); if(r) break;
 
 
-                    //sprintf(token, "power:channel%d.ph_id",channelID);
-                    //r = ini_rw(dic, token, &tmp->product_ph_id, sizeof(tmp->product_ph_id), TYPE_INT, op); if(r) break;
+                    sprintf(token, "power:channel%d.ch_id",channelID);
+                    r = ini_rw(dic, token, &tmp->product_ch_id, sizeof(tmp->product_ch_id), TYPE_INT, op); if(r) break;
 
 
                     sprintf(token, "power:channel%d.ph_type",channelID);
                     sprintf(token, "power:channel%d.ph_type",channelID);
                     r = ini_rw(dic, token, &tmp->product_ph_type, sizeof(tmp->product_ph_type), TYPE_INT, op); if(r) break;
                     r = ini_rw(dic, token, &tmp->product_ph_type, sizeof(tmp->product_ph_type), TYPE_INT, op); if(r) break;
@@ -2551,7 +2543,6 @@ static int proc_power3(char *path, int op, GlobalTreeACManager *power)
                     r = ini_rw(dic, token, &tmp->product_ph_outputStatus, sizeof(tmp->product_ph_outputStatus), TYPE_INT, op); if(r) break;
                     r = ini_rw(dic, token, &tmp->product_ph_outputStatus, sizeof(tmp->product_ph_outputStatus), TYPE_INT, op); if(r) break;
 
 
                     ///////////voltage//////////
                     ///////////voltage//////////
-                    
                     GlobalOverManager *pover=&tmp->global_over_manager;
                     GlobalOverManager *pover=&tmp->global_over_manager;
                     //upper
                     //upper
                     sprintf(token, "power:channel%d.threshold.voltate.up.en",channelID);
                     sprintf(token, "power:channel%d.threshold.voltate.up.en",channelID);
@@ -2623,8 +2614,12 @@ static int proc_power3(char *path, int op, GlobalTreeACManager *power)
                         cnt_ok++;
                         cnt_ok++;
                     }
                     }
                     else {
                     else {
-                        r = dev_update_t_ac_power_manage_info(dm->db, tmp);      if(r) break;
-                        r = dev_update_t_ac_power_manage_over_info(dm->db, tmp); if(r) break;
+                        r = dev_get_power_manage_info2(dm->db, 0, tmp->product_ch_id, &pwr); if(r) break;
+
+                        pwr.global_over_manager = tmp->global_over_manager;
+                        r = dev_update_power_manage_over_info(dm->db, 0, tmp->product_ch_id, &pwr);  if(r) break;
+
+                        r = dev_update_t_ac_power_manage_over_info(dm->db, tmp);    if(r) break;
                     }
                     }
                 }
                 }
 
 
@@ -2643,6 +2638,7 @@ static int proc_power3(char *path, int op, GlobalTreeACManager *power)
 
 
         case PARAS_WRITE:
         case PARAS_WRITE:
         {
         {
+            int channelID=-1;
             GlobalTreeACManager *tmp,*node,*next;
             GlobalTreeACManager *tmp,*node,*next;
 
 
             ppower = &power2;
             ppower = &power2;
@@ -2654,17 +2650,23 @@ static int proc_power3(char *path, int op, GlobalTreeACManager *power)
             list_for_each_entry(tmp, &ppower->list_Tree_AC, list_Tree_AC) {
             list_for_each_entry(tmp, &ppower->list_Tree_AC, list_Tree_AC) {
                 if(!tmp) break;
                 if(!tmp) break;
 
 
-                int channelID = tmp->product_ph_id+1;
+                //if(tmp->product_ph_id%3) continue;
+                //channelID = tmp->product_ph_id/3+1;
+                channelID = tmp->product_ph_id+1;
+
                 r = proc_power3(path, PARAS_CHECK, tmp); if(r) break;
                 r = proc_power3(path, PARAS_CHECK, tmp); if(r) break;
 
 
                 sprintf(token, "power:channel%d.addr",channelID);
                 sprintf(token, "power:channel%d.addr",channelID);
                 r = ini_rw(dic, token, &tmp->product_saddr, sizeof(tmp->product_saddr), TYPE_INT, op); if(r) break;
                 r = ini_rw(dic, token, &tmp->product_saddr, sizeof(tmp->product_saddr), TYPE_INT, op); if(r) break;
 
 
+                sprintf(token, "power:channel%d.ch_id",channelID);
+                r = ini_rw(dic, token, &tmp->product_ch_id, sizeof(tmp->product_ch_id), TYPE_INT, op); if(r) break;
+
                 sprintf(token, "power:channel%d.ch_addr",channelID);
                 sprintf(token, "power:channel%d.ch_addr",channelID);
                 r = ini_rw(dic, token, &tmp->product_ch_addr, sizeof(tmp->product_ch_addr), TYPE_INT, op); if(r) break;
                 r = ini_rw(dic, token, &tmp->product_ch_addr, sizeof(tmp->product_ch_addr), TYPE_INT, op); if(r) break;
 
 
-                sprintf(token, "power:channel%d.ph_id",channelID);
-                r = ini_rw(dic, token, &tmp->product_ph_id, sizeof(tmp->product_ph_id), TYPE_INT, op); if(r) break;
+                //sprintf(token, "power:channel%d.ph_id",channelID);
+                //r = ini_rw(dic, token, &tmp->product_ph_id, sizeof(tmp->product_ph_id), TYPE_INT, op); if(r) break;
 
 
                 sprintf(token, "power:channel%d.ph_type",channelID);
                 sprintf(token, "power:channel%d.ph_type",channelID);
                 r = ini_rw(dic, token, &tmp->product_ph_type, sizeof(tmp->product_ph_type), TYPE_INT, op); if(r) break;
                 r = ini_rw(dic, token, &tmp->product_ph_type, sizeof(tmp->product_ph_type), TYPE_INT, op); if(r) break;

+ 97 - 9
pro/src/sqlite_handle.c

@@ -1580,6 +1580,94 @@ int dev_get_power_manage_info(sqlite3 *db,int product_id,int product_addr,int pr
 
 
     return 0;
     return 0;
 }
 }
+
+int dev_get_power_manage_info2(sqlite3 *db,int product_id,int product_ch_id,GlobalPowerManger* _globalPowerChnManger)
+{
+    int res = 0 ;
+    int rowIndex = 1 ;
+    char *errorMsg = NULL;
+    int nrow = 0;               //满足条件的记录数目
+    int ncolumn = 0;            //每条记录包含的字段数据
+    char** pResult = NULL;  //用来指向sql执行结果的指针
+    char* err_msg=NULL;
+    char select_sql[1024] = {0};
+    sprintf(select_sql,"SELECT* FROM Table_PowerManage WHERE product_ch_id=%d;",product_ch_id);
+    res = sqlite3_get_table(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); sqlite3_free(err_msg);
+        return -2 ;
+    }
+    //提取数据
+    if(nrow==0) {
+        sqlite3_free_table(pResult);
+        return -1 ; 
+    }
+
+    //获取产品ID
+    _globalPowerChnManger->product_id = atoi(pResult[rowIndex*ncolumn+0]); 
+    //获取产品ID
+    _globalPowerChnManger->product_ch_id = atoi(pResult[rowIndex*ncolumn+1]); 
+    //获取通道名称
+    strcpy(_globalPowerChnManger->product_ch_name,pResult[rowIndex*ncolumn+2]);
+    //获取通道类型
+    _globalPowerChnManger->product_ch_type = atoi(pResult[rowIndex*ncolumn+3]);
+    //获取通道状态
+    _globalPowerChnManger->product_ch_status = atoi(pResult[rowIndex*ncolumn+4]);  
+    //获取通道延时
+    _globalPowerChnManger->product_ch_start_delay = atoi(pResult[rowIndex*ncolumn+5]);     
+    //获取通道延时
+    _globalPowerChnManger->product_ch_stop_delay = atoi(pResult[rowIndex*ncolumn+6]);       
+
+    //获取电压超上限使能
+    _globalPowerChnManger->global_over_manager.product_vol_upper_enable = atoi(pResult[rowIndex*ncolumn+7]); 
+    //获取电压上限范围
+    _globalPowerChnManger->global_over_manager.product_vol_upper_threshold = atof(pResult[rowIndex*ncolumn+8]);
+    //获取电压上限超限动作
+    _globalPowerChnManger->global_over_manager.product_vol_over_upper_threshold_ctrl = atoi(pResult[rowIndex*ncolumn+9]);
+    //获取电压上限超限关联参数
+    _globalPowerChnManger->global_over_manager.product_vol_over_upper_threshold_ctrl_para = atoi(pResult[rowIndex*ncolumn+10]);
+    //获取电压超下限使能
+    _globalPowerChnManger->global_over_manager.product_vol_lower_enable = atoi(pResult[rowIndex*ncolumn+11]); 
+    //获取电压下限范围
+    _globalPowerChnManger->global_over_manager.product_vol_lower_threshold = atof(pResult[rowIndex*ncolumn+12]);
+    //获取电压下限超限动作
+    _globalPowerChnManger->global_over_manager.product_vol_over_lower_threshold_ctrl = atoi(pResult[rowIndex*ncolumn+13]); 
+    //超限关联参数
+    _globalPowerChnManger->global_over_manager.product_vol_over_lower_threshold_ctrl_para = atoi(pResult[rowIndex*ncolumn+14]);
+    //获取电流超上限使能
+    _globalPowerChnManger->global_over_manager.product_cur_upper_enable = atoi(pResult[rowIndex*ncolumn+15]); 
+    //获取电流上限范围
+    _globalPowerChnManger->global_over_manager.product_cur_upper_threshold = atof(pResult[rowIndex*ncolumn+16]);
+    //获取电流上限超限动作
+    _globalPowerChnManger->global_over_manager.product_cur_over_upper_threshold_ctrl = atoi(pResult[rowIndex*ncolumn+17]); 
+    //超限关联参数
+    _globalPowerChnManger->global_over_manager.product_cur_over_upper_threshold_ctrl_para = atoi(pResult[rowIndex*ncolumn+18]);
+    //获取功耗超上限使能
+    _globalPowerChnManger->global_over_manager.product_pwr_upper_enable = atoi(pResult[rowIndex*ncolumn+19]); 
+    //获取功耗上限范围
+    _globalPowerChnManger->global_over_manager.product_pwr_upper_threshold = atof(pResult[rowIndex*ncolumn+20]);
+    //获取功耗上限超限动作
+    _globalPowerChnManger->global_over_manager.product_pwr_over_upper_threshold_ctrl = atoi(pResult[rowIndex*ncolumn+21]); 
+    //超限关联参数
+    _globalPowerChnManger->global_over_manager.product_pwr_over_upper_threshold_ctrl_para = atoi(pResult[rowIndex*ncolumn+22]);
+    //获取耗电量超上限使能
+    _globalPowerChnManger->global_over_manager.product_pwrcon_upper_enable = atoi(pResult[rowIndex*ncolumn+23]); 
+    //获取耗电量上限范围
+    _globalPowerChnManger->global_over_manager.product_pwrcon_upper_threshold = atof(pResult[rowIndex*ncolumn+24]);
+    //获取耗电量上限超限动作
+    _globalPowerChnManger->global_over_manager.product_pwrcon_over_upper_threshold_ctrl = atoi(pResult[rowIndex*ncolumn+25]); 
+    //超限关联参数
+    _globalPowerChnManger->global_over_manager.product_pwrcon_over_upper_threshold_ctrl_para = atoi(pResult[rowIndex*ncolumn+26]); 
+    //获取板ID
+    _globalPowerChnManger->product_saddr = atoi(pResult[rowIndex*ncolumn+27]); 
+    //获取板TYPE
+    _globalPowerChnManger->product_ch_addr = atoi(pResult[rowIndex*ncolumn+28]); 
+    sqlite3_free_table(pResult);
+
+    return 0;
+}
+
+
 /// @brief 插入三相通道基本信息
 /// @brief 插入三相通道基本信息
 /// @param db 
 /// @param db 
 /// @param product_id 
 /// @param product_id 
@@ -1647,7 +1735,7 @@ int dev_get_ac_power_info(sqlite3 *db,GlobalTreeACManager* pm)
     char* err_msg=NULL;
     char* err_msg=NULL;
     char select_sql[1024] = {0};
     char select_sql[1024] = {0};
 
 
-    sprintf(select_sql,"SELECT * FROM Table_PhasePowerManage ORDER BY product_ch_addr_ch_id ASC;");
+    sprintf(select_sql,"SELECT * FROM Table_PhasePowerManage ORDER BY product_ph_id ASC;");
     res = sqlite3_get_table(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
     res = sqlite3_get_table(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); sqlite3_free(err_msg);
         log_e("sqlite handle error: %s\n%s\n", err_msg,select_sql); sqlite3_free(err_msg);
@@ -3430,7 +3518,7 @@ int dev_get_user_info(sqlite3 *db, UserInfo* _globaluserInfo)
     char* err_msg=NULL;
     char* err_msg=NULL;
     char select_sql[1024] = {0};
     char select_sql[1024] = {0};
 
 
-    sprintf(select_sql, "SELECT * from Table_Userinfo;");
+    sprintf(select_sql, "SELECT * from Table_Userinfo ORDER BY userID ASC;");
     res = sqlite3_get_table(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
     res = sqlite3_get_table(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); sqlite3_free(err_msg);
         log_e("sqlite handle error: %s\n%s\n", err_msg,select_sql); sqlite3_free(err_msg);
@@ -4427,7 +4515,7 @@ int dev_mail_get(sqlite3 *db, mail_info_t *info)
     table = MAIL_RECVEIVE_TABLE;
     table = MAIL_RECVEIVE_TABLE;
     if(!tab_exists(db, table)) {
     if(!tab_exists(db, table)) {
         sprintf(temp, "CREATE TABLE IF NOT EXISTS %s("
         sprintf(temp, "CREATE TABLE IF NOT EXISTS %s("
-                            "idx INTEGER PRIMARY KEY,"
+                            "id INTEGER PRIMARY KEY,"
                             "use INTEGER,"
                             "use INTEGER,"
                             "account TEXT);", table);
                             "account TEXT);", table);
         r = sqlite3_exec(db, temp, 0, 0, &err_msg);
         r = sqlite3_exec(db, temp, 0, 0, &err_msg);
@@ -4448,7 +4536,7 @@ int dev_mail_get(sqlite3 *db, mail_info_t *info)
     if(info && ncol>0) {
     if(info && ncol>0) {
         mail_recv_t *recv=info->recv;
         mail_recv_t *recv=info->recv;
         for(i=1; i<=nrow; i++) {
         for(i=1; i<=nrow; i++) {
-            recv[i-1].idx = atoi(pResult[i*ncol+0]);
+            recv[i-1].id  = atoi(pResult[i*ncol+0]);
             recv[i-1].use = atoi(pResult[i*ncol+1]);
             recv[i-1].use = atoi(pResult[i*ncol+1]);
             strcpy(recv[i-1].account, pResult[i*ncol+2]);
             strcpy(recv[i-1].account, pResult[i*ncol+2]);
         }
         }
@@ -4575,8 +4663,8 @@ int dev_mail_update_recv(sqlite3 *db, mail_recv_t *recv)
     for(i=0; i<MAIL_RECV_MAX; i++) {
     for(i=0; i<MAIL_RECV_MAX; i++) {
         rcv = &recv[i];
         rcv = &recv[i];
         if(cnt>0) {
         if(cnt>0) {
-            sprintf(temp, "UPDATE %s SET idx=%d, use=%d, account='%s' WHERE idx=%d;", 
-                    table, rcv->idx, rcv->use, rcv->account, rcv->idx);
+            sprintf(temp, "UPDATE %s SET id=%d, use=%d, account='%s' WHERE id=%d;", 
+                    table, rcv->id, rcv->use, rcv->account, rcv->id);
             r = sqlite3_exec(db, temp, NULL, 0, &err_msg);
             r = sqlite3_exec(db, temp, NULL, 0, &err_msg);
             if(r != SQLITE_OK) {
             if(r != SQLITE_OK) {
                 log_e("___dev_mail_update_recv failed, %s, %s\n", temp, err_msg);
                 log_e("___dev_mail_update_recv failed, %s, %s\n", temp, err_msg);
@@ -4589,14 +4677,14 @@ int dev_mail_update_recv(sqlite3 *db, mail_recv_t *recv)
         }
         }
 
 
         if(exist==0) {
         if(exist==0) {
-            sprintf(temp, "INSERT INTO %s (idx,use,account) VALUES (?,?,?);", table);
+            sprintf(temp, "INSERT INTO %s (id,use,account) VALUES (?,?,?);", table);
             r = sqlite3_prepare_v2(db, temp, -1, &stmt, 0);
             r = sqlite3_prepare_v2(db, temp, -1, &stmt, 0);
             if (r != SQLITE_OK) {
             if (r != SQLITE_OK) {
                 log_e("___dev_mail_update_recv, sqlite3_prepare_v2 failed, %s\n", sqlite3_errmsg(db));
                 log_e("___dev_mail_update_recv, sqlite3_prepare_v2 failed, %s\n", sqlite3_errmsg(db));
                 return -1;
                 return -1;
             }
             }
 
 
-            sqlite3_bind_int(stmt,  1, rcv->idx);
+            sqlite3_bind_int(stmt,  1, rcv->id);
             sqlite3_bind_int(stmt,  2, rcv->use);
             sqlite3_bind_int(stmt,  2, rcv->use);
             sqlite3_bind_text(stmt, 3, rcv->account,  -1, NULL);
             sqlite3_bind_text(stmt, 3, rcv->account,  -1, NULL);
 
 
@@ -4732,7 +4820,7 @@ int dev_mqtt_update_ser(sqlite3 *db, mqtt_server_t *ser)
     }
     }
 
 
     if(sys_get_mac(mac, sizeof(mac))==0) {
     if(sys_get_mac(mac, sizeof(mac))==0) {
-        sprintf(ser->cid, "smartPDU_%s", mac);
+        sprintf(ser->cid, "SmartPDU_%s", mac);
     }
     }
 
 
     cnt = get_count(db, table);
     cnt = get_count(db, table);

+ 1 - 0
pro/src/sqlite_handle.h

@@ -54,6 +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_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_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_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_info_by_ID(sqlite3 *db,int product_id,int product_addr,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);
 int dev_get_ac_power_info(sqlite3 *db,GlobalTreeACManager* pm);

+ 1 - 3
pro/src/sys.c

@@ -1250,9 +1250,7 @@ static void send_log_data(struct tm *tm, char *dir)
 #define TMP_DIR  "/tmp/pdu"
 #define TMP_DIR  "/tmp/pdu"
 static int tmp_create(void)
 static int tmp_create(void)
 {
 {
-    char cmd[100];
-    sprintf(cmd, "mkdir -p %s > /dev/null", TMP_DIR);
-    return system(cmd);
+    return mkdir(TMP_DIR, 0777);
 }
 }
 static int tmp_remove(void)
 static int tmp_remove(void)
 {
 {