Browse Source

中配实现网页升级,并处理bug。

liyi 6 months ago
parent
commit
04aeded691

+ 2 - 0
output/t113s/pack_dir/etc/init.d/rc.modules

@@ -330,6 +330,8 @@ if [[ -f "/mnt/UDISK/app/smartMonitor.sh" ]];then
   sh /mnt/UDISK/app/smartMonitor.sh &
   sh /mnt/UDISK/app/smartMonitor.sh &
 fi
 fi
 
 
+/usr/sbin/smartUPG &
+
 # sleep 20
 # sleep 20
 
 
 # led_on
 # led_on

+ 2 - 2
pro/CMakeLists.txt

@@ -337,7 +337,7 @@ set(PDU_SRC_LIST
 
 
 
 
 	add_custom_command(TARGET  memInfo  POST_BUILD
 	add_custom_command(TARGET  memInfo  POST_BUILD
-                   COMMAND mkdir -p ${DST_DIR}/${CHIP}/pack_dir/root/run/app
-                   COMMAND cp -upf  ${SRC_DIR}/memInfo ${DST_DIR}/${CHIP}/pack_dir/root/run/app)
+                   COMMAND mkdir -p ${DST_DIR}/${CHIP}/pack_dir/mnt/UDISK/app
+                   COMMAND cp -upf  ${SRC_DIR}/memInfo ${DST_DIR}/${CHIP}/pack_dir/mnt/UDISK/app)
 
 
 endif()
 endif()

+ 15 - 0
pro/config/cfg.h

@@ -45,6 +45,7 @@
 //#define PRJ_IP_AC_I3_O3
 //#define PRJ_IP_AC_I3_O3
 //#define PRJ_IP_AC_I3_O1
 //#define PRJ_IP_AC_I3_O1
 //#define PRJ_IP_AC_I1_O1
 //#define PRJ_IP_AC_I1_O1
+//#define PRJ_IP_XXXXXXXXXX_AC_I1_O1
 //#define PRJ_IP_YUNNAN_AC_I1_O1
 //#define PRJ_IP_YUNNAN_AC_I1_O1
 //#define PRJ_IP_CHONGQING_AC_I1_O1
 //#define PRJ_IP_CHONGQING_AC_I1_O1
 //#define PRJ_IP_AOSENS_AC_I1_O1
 //#define PRJ_IP_AOSENS_AC_I1_O1
@@ -703,7 +704,21 @@
     #define PROD_POWER_TYPE                     0
     #define PROD_POWER_TYPE                     0
     #define USE_BEEP                            1
     #define USE_BEEP                            1
     #define USE_LED                             1
     #define USE_LED                             1
+    #define BRD_MAX                             1
+#elif (defined PRJ_IP_XXXXXXXXXX_AC_I1_O1)
+
+    #define LANGUAGE                            1
+    #define SMPLE_TIME                          30          //ms
+    #define SAVE_TIME                           60000       //ms
+    #define CASCADE_CNT                         0
 
 
+    #define PHASE_GROUP                         8
+    #define CHANNEL_DELAY                       8
+    #define PROD_POWER_TYPE                     0
+    #define BRD_MAX                             1
+    #define USE_BEEP                            1
+    #define USE_LED                             1
+    #define MONWAY                              1               // 1总检测  2分监分控  3分监不控
 #elif (defined PRJ_IP_YUNNAN_AC_I1_O1)
 #elif (defined PRJ_IP_YUNNAN_AC_I1_O1)
     #define LANGUAGE                            0
     #define LANGUAGE                            0
     #define SMPLE_TIME                          30          //ms
     #define SMPLE_TIME                          30          //ms

+ 4 - 0
pro/src/app.c

@@ -3274,7 +3274,11 @@ static void *recv_handler(void *arg)
     key_t key;
     key_t key;
     int msgid;
     int msgid;
     // 生成键值前确保文件存在
     // 生成键值前确保文件存在
+#if (CHIP_TYPE == CHIP_T113i) 
     const char *path = "/root/run/app/smartPDU_MSGQ";
     const char *path = "/root/run/app/smartPDU_MSGQ";
+#else
+    const char *path = "/mnt/UDISK/app/smartPDU_MSGQ";
+#endif
 
 
     while (args->needInit)
     while (args->needInit)
     {
     {

+ 7 - 6
pro/src/appweb_handle.c

@@ -23,16 +23,17 @@
 #include "broadcast.h"
 #include "broadcast.h"
 #include "radius.h"
 #include "radius.h"
 #include "elog.h"
 #include "elog.h"
+#include "upgrade.h"
 
 
 #define TOTAL_COUNT 60
 #define TOTAL_COUNT 60
 #define FN_MAX  30
 #define FN_MAX  30
 
 
-#ifdef DOWN_FOLDER
-    #if (CHIP_TYPE == CHIP_T113s)
-        #undef DOWN_FOLDER
-        #define DOWN_FOLDER "/mnt/UDISK/dl"
-    #endif
-#endif
+// #ifdef DOWN_FOLDER
+//     #if (CHIP_TYPE == CHIP_T113s)
+//         #undef DOWN_FOLDER
+//         #define DOWN_FOLDER "/mnt/UDISK/dl"
+//     #endif
+// #endif
 
 
 enum {
 enum {
     FILE_IMPORT=0,
     FILE_IMPORT=0,

+ 45 - 11
pro/upgrade/upgrade.c

@@ -183,16 +183,22 @@ static int file_touch(int id)
 {
 {
     int r;
     int r;
     char tmp[200];
     char tmp[200];
-
-    snprintf(tmp, sizeof(tmp), "touch %s/s%d", UPG_FOLDER, id);
+#if (CHIP_TYPE == CHIP_T113i)
+    snprintf(tmp, sizeof(tmp), "touch %s/s%d;sleep 1;sync;", UPG_FOLDER, id);
+#else
+    snprintf(tmp, sizeof(tmp), "touch %s/s%d;sleep 1;sync;sync;", UPG_FOLDER, id);
+#endif
     return system(tmp);       // 使用写入模式创建一个新文件
     return system(tmp);       // 使用写入模式创建一个新文件
 }
 }
 static int file_untouch(int id)
 static int file_untouch(int id)
 {
 {
     int r;
     int r;
     char tmp[200];
     char tmp[200];
-
-    snprintf(tmp, sizeof(tmp), "rm %s/s%d", UPG_FOLDER, id);
+#if (CHIP_TYPE == CHIP_T113i)
+    snprintf(tmp, sizeof(tmp), "rm %s/s%d;sleep 1;sync;", UPG_FOLDER, id);
+#else
+    snprintf(tmp, sizeof(tmp), "rm %s/s%d;sleep 1;sync;sync;", UPG_FOLDER, id);
+#endif
     return system(tmp);       // 使用写入模式创建一个新文件
     return system(tmp);       // 使用写入模式创建一个新文件
 }
 }
 
 
@@ -271,8 +277,11 @@ static int file_cover(char *path)
 {
 {
     int r;
     int r;
     char cmd[200];
     char cmd[200];
-
+#if (CHIP_TYPE == CHIP_T113i) 
     snprintf(cmd, sizeof(cmd), "tar -xpf %s -C / > /dev/null 2>&1", path);
     snprintf(cmd, sizeof(cmd), "tar -xpf %s -C / > /dev/null 2>&1", path);
+#else
+    snprintf(cmd, sizeof(cmd), "tar -zxvf %s  -C  / > /dev/null", path);
+#endif
     r = system(cmd);
     r = system(cmd);
     if(r) {
     if(r) {
         LOGE("%s failed\n", cmd);
         LOGE("%s failed\n", cmd);
@@ -533,7 +542,12 @@ static int is_running(char *prog)
     char buf[20]={0};
     char buf[20]={0};
     char command[200];
     char command[200];
 
 
+#if (CHIP_TYPE == CHIP_T113i) 
     snprintf(command, sizeof(command), "ps -ef | grep -v grep | grep -w -c %s", prog);
     snprintf(command, sizeof(command), "ps -ef | grep -v grep | grep -w -c %s", prog);
+#else
+    snprintf(command, sizeof(command), "ps | grep -v grep | grep -w -c %s", prog);
+#endif
+
 
 
     fp = popen(command, "r");
     fp = popen(command, "r");
     if (fp == NULL) {
     if (fp == NULL) {
@@ -556,12 +570,30 @@ static int app_start(void)
     if(is_running("smartMonitor.sh")) {
     if(is_running("smartMonitor.sh")) {
         return -1;
         return -1;
     }
     }
+#if (CHIP_TYPE == CHIP_T113i) 
     return system("/usr/sbin/smartMonitor.sh &");
     return system("/usr/sbin/smartMonitor.sh &");
+#else
+    return system("sh /mnt/UDISK/app/smartMonitor.sh &");
+#endif
 }
 }
 static int app_stop(void)
 static int app_stop(void)
 {
 {
     LOGD("____ app_stop\n");
     LOGD("____ app_stop\n");
-    return system("killall smartMonitor.sh; /etc/init.d/S90PDUApp stop");
+#if (CHIP_TYPE == CHIP_T113i) 
+    system("killall smartMonitor.sh; /etc/init.d/S90PDUApp stop");
+    ret = system("echo \"V\" > /dev/watchdog");
+    sleep(1);
+    ret = system("echo \"V\" > /dev/watchdog");
+#else
+    LOGD("app_stop  T113 S3\n");
+    int ret = system("killall sh snmpd Qt_Test smartPDU");
+    ret = system("echo \"V\" > /dev/watchdog");
+    sleep(1);
+    ret = system("echo \"V\" > /dev/watchdog");
+    sleep(1);
+    ret = system("echo \"V\" > /dev/watchdog");
+    return ret;
+#endif
 }
 }
 static int sys_reboot(void)
 static int sys_reboot(void)
 {
 {
@@ -661,6 +693,7 @@ static int upg_handle(upg_handle_t *h)
 
 
                 //先检查下载目录是否存在pdupkg文件
                 //先检查下载目录是否存在pdupkg文件
                 snprintf(tmp, sizeof(tmp), "%s/%s", DOWN_FOLDER, UPG_PKG_NAME);
                 snprintf(tmp, sizeof(tmp), "%s/%s", DOWN_FOLDER, UPG_PKG_NAME);
+                printf("%s\n",tmp);
                 if(file_exist(tmp)) {
                 if(file_exist(tmp)) {
                     file_touch(UPGRADE_STEP_DOWN);
                     file_touch(UPGRADE_STEP_DOWN);
                     h->step = UPGRADE_STEP_SPLIT;
                     h->step = UPGRADE_STEP_SPLIT;
@@ -719,7 +752,8 @@ static int upg_handle(upg_handle_t *h)
                 if(r==0) {
                 if(r==0) {
                     file_touch(UPGRADE_STEP_COVER);
                     file_touch(UPGRADE_STEP_COVER);
                     h->step = UPGRADE_STEP_FINISH;
                     h->step = UPGRADE_STEP_FINISH;
-
+                    file_untouch(UPGRADE_STEP_DOWN);
+                    file_untouch(UPGRADE_STEP_SPLIT);
                     sys_reboot();
                     sys_reboot();
                 }
                 }
                 else {
                 else {
@@ -730,12 +764,11 @@ static int upg_handle(upg_handle_t *h)
 
 
                     h->step = UPGRADE_STEP_NONE;
                     h->step = UPGRADE_STEP_NONE;
                     file_untouch(UPGRADE_STEP_COVER);
                     file_untouch(UPGRADE_STEP_COVER);
-                    
+                    file_untouch(UPGRADE_STEP_SPLIT);                   
                     file_restore();
                     file_restore();
                     app_start();
                     app_start();
                 }
                 }
-                file_untouch(UPGRADE_STEP_DOWN);
-                file_untouch(UPGRADE_STEP_SPLIT);
+
             }
             }
             break;
             break;
 
 
@@ -751,8 +784,9 @@ static int upg_handle(upg_handle_t *h)
                 LOGD("___ UPGRADE_STEP_SUCCESS\n");
                 LOGD("___ UPGRADE_STEP_SUCCESS\n");
 
 
                 h->step = UPGRADE_STEP_NONE;
                 h->step = UPGRADE_STEP_NONE;
-                
+#if (CHIP_TYPE == CHIP_T113i) 
                 file_backup();  //启动成功才证明程序有效,可进行备份, 备份成功,删除下载目录中的文件以节省空间
                 file_backup();  //启动成功才证明程序有效,可进行备份, 备份成功,删除下载目录中的文件以节省空间
+#endif
                 file_clear();
                 file_clear();
                 
                 
                 //app_start();
                 //app_start();

+ 17 - 4
pro/upgrade/upgrade.h

@@ -6,10 +6,23 @@
 #define UPG_KEY_PATH    "/tmp"
 #define UPG_KEY_PATH    "/tmp"
 #define UPG_KEY_SN      123
 #define UPG_KEY_SN      123
 
 
-#define RUN_FOLDER      "/root/run"
-#define BAK_FOLDER      "/root/bak"
-#define UPG_FOLDER      "/root/upg"                     //用于存放升级过程文件
-#define DOWN_FOLDER     "/root/dl"                      //网页下载到该目录,然后移到UPG_FOLDER目录
+
+
+#if (CHIP_TYPE == CHIP_T113i)
+
+	#define RUN_FOLDER      "/root/run"
+	#define BAK_FOLDER      "/root/bak"
+	#define UPG_FOLDER      "/root/upg"                     //用于存放升级过程文件
+	#define DOWN_FOLDER     "/root/dl"                      //网页下载到该目录,然后移到UPG_FOLDER目录
+
+#else
+	#define DOWN_FOLDER "/mnt/UDISK/dl"
+	#define BAK_FOLDER  "/mnt/UDISK/bak"
+	#define UPG_FOLDER  "/mnt/UDISK/upg"                     //用于存放升级过程文件
+	#define RUN_FOLDER  "/mnt/UDISK/dl"                      //网页下载到该目录,然后移到UPG_FOLDER目录
+
+#endif
+
 
 
 #define UPG_PKG_NAME    "pdupkg"                        //所有文件需要打包成一个文件,包括文件头,校验码
 #define UPG_PKG_NAME    "pdupkg"                        //所有文件需要打包成一个文件,包括文件头,校验码
 #define UPG_HDR_NAME    "pduhdr"                        //升级头文件
 #define UPG_HDR_NAME    "pduhdr"                        //升级头文件

+ 5 - 0
pub

@@ -63,6 +63,9 @@ PRJS="PRJ_2503_AC_I1_O1_OLED"
 
 
 #PRJS="PRJ_New_Malaysia_AC_I3_O1"
 #PRJS="PRJ_New_Malaysia_AC_I3_O1"
 
 
+#PRJS="PRJ_IP_XXXXXXXXXX_AC_I1_O1"
+
+
 
 
 
 
 fulldir=$(realpath $0)
 fulldir=$(realpath $0)
@@ -218,6 +221,8 @@ function do_copy()
         name=ip_ac_gox001_4_in3_out1_release
         name=ip_ac_gox001_4_in3_out1_release
     elif [ "$1" = "PRJ_IP_AC_I1_O1" ];then  
     elif [ "$1" = "PRJ_IP_AC_I1_O1" ];then  
         name=ip_ac_in1_out1_release
         name=ip_ac_in1_out1_release
+    elif [ "$1" = "PRJ_IP_XXXXXXXXXX_AC_I1_O1" ];then
+        name=ip_ac_xxxxxxxxxx_in1_out1_release
     elif [ "$1" = "PRJ_IP_YUNNAN_AC_I1_O1" ];then
     elif [ "$1" = "PRJ_IP_YUNNAN_AC_I1_O1" ];then
         name=ip_ac_yunnan_in1_out1_release
         name=ip_ac_yunnan_in1_out1_release
     elif [ "$1" = "PRJ_YUNNAN_AC_I1_O1" ];then
     elif [ "$1" = "PRJ_YUNNAN_AC_I1_O1" ];then