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

修改升级、新增传感器bug

guohui 1 год назад
Родитель
Сommit
790c9119ed

Разница между файлами не показана из-за своего большого размера
+ 1 - 1
cust_data/web/unique/css/chunk-16e5c171.d50e6f1c.css


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
cust_data/web/unique/css/chunk-0b4212ba.955ef71c.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
cust_data/web/unique/css/chunk-77e87b90.4f0d4eef.css


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
cust_data/web/unique/css/chunk-b09b311a.78201288.css


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
cust_data/web/unique/index.html


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
cust_data/web/unique/js/app.a83caccd.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
cust_data/web/unique/js/chunk-16e5c171.3d7205d8.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
cust_data/web/unique/js/chunk-58b4ce12.709de4bb.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
cust_data/web/unique/js/chunk-0b4212ba.dffc0bab.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
cust_data/web/unique/js/chunk-77e87b90.841a843e.js


+ 44 - 27
pro/src/appweb_handle.c

@@ -2417,18 +2417,15 @@ static void sensorStatusMonitoring(void* conn)
     else if(strcmp(_over_all_sensor_request.type,"add")==0) //正常跑过
     {
         log_d("start add handle.");
-        int wrong_param=0;
+        int r,wrong_param=0,new_flag=0;
+        GlobalSensorManger* _globalSensorMangerTemp=NULL;
+
         #ifdef IN_INDEX_MAP
             char index_map[4]=IN_INDEX_MAP;
         #else 
             char index_map[4]={0,1,3,2};
         #endif
 
-        GlobalSensorManger* _globalSensorMangerTemp = (GlobalSensorManger*)malloc(sizeof(GlobalSensorManger));
-        //清空数据
-        memset(_globalSensorMangerTemp, 0, sizeof(GlobalSensorManger));
-        //填充数据
-        _globalSensorMangerTemp->product_id = __globalDeviceManage._globalDevInfo.product.id ;
 
         int nmaxID=0;
         lock_s_hold(LOCK_ID_SENSOR);
@@ -2438,40 +2435,39 @@ static void sensorStatusMonitoring(void* conn)
         {
             if (_over_all_sensor_request.cgqtd)
             {
-
                 if (strcmp(_over_all_sensor_request.cgqtd, "RS485") == 0 && node->sensor_interface_type == 1)
                 {
                     if (strtol(_over_all_sensor_request.sensorAddr, NULL, 10) == node->sensor_addr)
                     {
-                        wrong_param = 1;
+                        _globalSensorMangerTemp = node;
                     }
                 }
                 if (strcmp(_over_all_sensor_request.cgqtd, "IN1") == 0 && node->sensor_interface_type == 2)
                 {
                     if (index_map[0] == node->sensor_addr)
                     {
-                        wrong_param = 1;
+                        _globalSensorMangerTemp = node;
                     }
                 }
                 if (strcmp(_over_all_sensor_request.cgqtd, "IN2") == 0 && node->sensor_interface_type == 2)
                 {
                     if (index_map[1] == node->sensor_addr)
                     {
-                        wrong_param = 1;
+                        _globalSensorMangerTemp = node;
                     }
                 }
                 if (strcmp(_over_all_sensor_request.cgqtd, "IN3") == 0 && node->sensor_interface_type == 2)
                 {
                     if (index_map[2] == node->sensor_addr)
                     {
-                        wrong_param = 1;
+                        _globalSensorMangerTemp = node;
                     }
                 }
                 if (strcmp(_over_all_sensor_request.cgqtd, "IN4") == 0 && node->sensor_interface_type == 2)
                 {
                     if (index_map[3] == node->sensor_addr)
                     {
-                        wrong_param = 1;
+                        _globalSensorMangerTemp = node;
                     }
                 }
             }
@@ -2483,7 +2479,17 @@ static void sensorStatusMonitoring(void* conn)
         }
         lock_s_release(LOCK_ID_SENSOR);
 
-        _globalSensorMangerTemp->sensor_id = nmaxID+1;
+        if(_globalSensorMangerTemp==NULL) {
+            _globalSensorMangerTemp = (GlobalSensorManger*)malloc(sizeof(GlobalSensorManger));
+            if(_globalSensorMangerTemp==NULL) {
+                log_e("___ malloc failed\n");
+                return;
+            }
+            new_flag = 1;
+            memset(_globalSensorMangerTemp, 0, sizeof(GlobalSensorManger));
+            _globalSensorMangerTemp->product_id = __globalDeviceManage._globalDevInfo.product.id ;
+            _globalSensorMangerTemp->sensor_id = nmaxID+1;
+        }
         strcpy( _globalSensorMangerTemp->sensor_name,_over_all_sensor_request.sensorName);
 
         if(_over_all_sensor_request.sensorType && strlen(_over_all_sensor_request.sensorType)) {
@@ -2492,9 +2498,9 @@ static void sensorStatusMonitoring(void* conn)
         else {
             wrong_param = 1;
         }
+
         if (_over_all_sensor_request.cgqtd)
         {
-
             if (strcmp(_over_all_sensor_request.cgqtd, "RS485") == 0)
             {
                 _globalSensorMangerTemp->sensor_interface_type = 1;
@@ -2569,20 +2575,31 @@ static void sensorStatusMonitoring(void* conn)
             case SENSOR_TYPE_LEAK:          _globalSensorMangerTemp->sensor_val_count = 1 ;break; //双头温度传感器 1个值
             default:break;
         }
-        //插入数据库
-        if(dev_insert_sensor_genera_manage(__globalDeviceManage.db,_globalSensorMangerTemp)!=0)
-        {
-            log_e("dev insert error.");
-        }
-        //全局接口体中也需要添加相关参数
-        lock_s_hold(LOCK_ID_SENSOR);
-        list_add_tail(&_globalSensorMangerTemp->list,&__globalDeviceManage._globalSensorManger.list);
-        lock_s_release(LOCK_ID_SENSOR);
+        
+        if(new_flag) {
+            if(dev_insert_sensor_genera_manage(__globalDeviceManage.db,_globalSensorMangerTemp)!=0)
+            {
+                log_e("dev insert error.");
+            }
+            //全局接口体中也需要添加相关参数
+            lock_s_hold(LOCK_ID_SENSOR);
+            list_add_tail(&_globalSensorMangerTemp->list,&__globalDeviceManage._globalSensorManger.list);
+            lock_s_release(LOCK_ID_SENSOR);
 
-        char temp[100];
-       // sprintf(temp,"$新增$|$传感器$|%d",_over_all_sensor_request.sensorId);
-        sprintf(temp,"Add sensor %d",_over_all_sensor_request.sensorId);
-        dev_insert_alarm_ctrl(__globalDeviceManage.db,__globalDeviceManage._globalDevInfo.product.id, ALARM_TYPE_OPRATION, temp);
+            char temp[100];
+            //sprintf(temp,"$新增$|$传感器$|%d",_over_all_sensor_request.sensorId);
+            sprintf(temp,"Add sensor %d",_over_all_sensor_request.sensorId);
+            dev_insert_alarm_ctrl(__globalDeviceManage.db,__globalDeviceManage._globalDevInfo.product.id, ALARM_TYPE_OPRATION, temp);
+        }
+        else {
+            r = dev_update_sensor_genera_manage(__globalDeviceManage.db,
+                                                __globalDeviceManage._globalDevInfo.product.id,
+                                                _globalSensorMangerTemp->sensor_id,
+                                                _globalSensorMangerTemp);
+            if(r) {
+                log_e("dev_update_sensor_genera_manage error.");
+            }
+        }
 
         ack_str = ctrl_sts_ack_to_json();
     }

+ 2 - 0
pro/src/common.h

@@ -129,6 +129,8 @@ enum
     SENSOR_TYPE_TEMP        = 8,  //温度传感器
     SENSOR_TYPE_TEMP_DOUBLE = 9,  //双温度传感器
     SENSOR_TYPE_PRESS       = 10, //压力传感器
+
+    SENSOR_TYPE_MAX,
 };
 
 enum {

+ 113 - 7
pro/src/json_handle.c

@@ -3003,7 +3003,7 @@ char* over_all_sensor_info_to_json(_OverSensorBackInfo* _over_all_sensor_back_in
         cJSON_AddStringToObject(data_filed,"temperatureValue2",temp);
 
         //add leak sensor 
-        sprintf(temp,"%d",_temp->leakStatus);
+        sprintf(temp,"%d",!_temp->leakStatus);
         cJSON_AddStringToObject(data_filed,"leakageStatus",temp);
 
         cJSON_AddNumberToObject(data_filed, "waterImmersionState",_temp->waterImmersionState);
@@ -3705,15 +3705,121 @@ char* alarm_sensor_threshold_to_json(GlobalSensorManger* _globalSensorManger)
     {
         switch (_globalSensorMangerTemp->sensor_type)
         {
+        case SENSOR_TYPE_TEMP:
+        {
+            data_filed = cJSON_CreateObject();
+            sprintf(temp, "%d", _globalSensorMangerTemp->sensor_status);
+            cJSON_AddStringToObject(data_filed, "connectionStatus", temp);
+            
+            cJSON_AddStringToObject(data_filed, "sensorName", _globalSensorMangerTemp->sensor_name);
+            sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
+            cJSON_AddStringToObject(data_filed, "sensorId", temp);
+            cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
+            if (SENSOR_TYPE_TEMP_DOUBLE == _globalSensorMangerTemp->sensor_type)
+            {
+                sprintf(temp, "%s%d", language_temperature[__globalDeviceManage._globalDevInfo.product.language], 1);
+                cJSON_AddStringToObject(data_filed, "thresholdType", temp);
+            }
+            else
+            {
+                cJSON_AddStringToObject(data_filed, "thresholdType", language_temperature[__globalDeviceManage._globalDevInfo.product.language]);
+            }
+            sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold);
+            cJSON_AddStringToObject(data_filed, "thresholdUpperValue", temp);
+            sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold);
+            cJSON_AddStringToObject(data_filed, "thresholdDownValue", temp);
+            if (_globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+            {
+                cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Closetemp);
+            }
+            else
+                cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Alarmtemp);
+            if (_globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+            {
+                cJSON_AddStringToObject(data_filed, "thresholdDownAction", Closetemp);
+            }
+            else
+                cJSON_AddStringToObject(data_filed, "thresholdDownAction", Alarmtemp);
+
+            char *pCHlist;
+            char *pCHListSave;
+            char sensor_para[512];
+            if (strlen(_globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl_para) > 0)
+            {
+                strcpy(sensor_para, _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl_para);
+                cJSON_AddStringToObject(data_filed, "thresholdUpperChanel", _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl_para);
+                 memset(subTemp, 0, sizeof(subTemp));
+                pCHlist = strtok_r(sensor_para, ",", &pCHListSave);
+                // 其他版本功能
+                while (pCHlist != NULL)
+                {
+                    GlobalPowerManger *_globalPowerMangerTemp = NULL;
+                    list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
+                    {
+                        if (_globalPowerMangerTemp == NULL)
+                            break;
+                        if (atoi(pCHlist) == _globalPowerMangerTemp->product_ch_id)
+                        {
+                            if (strlen(subTemp) <= 0)
+                            {
+                                sprintf(temp, "%s", _globalPowerMangerTemp->product_ch_name);
+                            }
+                            else
+                            {
+                                sprintf(temp, ",%s", _globalPowerMangerTemp->product_ch_name);
+                            }
+                            strcat(subTemp, temp);
+                            break;
+                        }
+                    }
+                    pCHlist = strtok_r(NULL, ",", &pCHListSave);
+                }
+                cJSON_AddStringToObject(data_filed, "thresholdUpperChanelName", subTemp);
+            }
+            if (strlen(_globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl_para) > 0)
+            {
+                cJSON_AddStringToObject(data_filed, "thresholdDownChanel", _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl_para);
+                memset(subTemp, 0, sizeof(subTemp));
+                strcpy(sensor_para, _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl_para);
+                pCHlist = strtok_r(sensor_para, ",", &pCHListSave);
+                // 其他版本功能
+                while (pCHlist != NULL)
+                {
+                    GlobalPowerManger *_globalPowerMangerTemp = NULL;
+                    list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
+                    {
+                        if (_globalPowerMangerTemp == NULL)
+                            break;
+                        if (atoi(pCHlist) == _globalPowerMangerTemp->product_ch_id)
+                        {
+                            if (strlen(subTemp) <= 0)
+                            {
+                                sprintf(temp, "%s", _globalPowerMangerTemp->product_ch_name);
+                            }
+                            else
+                            {
+                                sprintf(temp, ",%s", _globalPowerMangerTemp->product_ch_name);
+                            }
+                            strcat(subTemp, temp);
+                            break;
+                        }
+                    }
+                    pCHlist = strtok_r(NULL, ",", &pCHListSave);
+                }
+                cJSON_AddStringToObject(data_filed, "thresholdDownChanelName", subTemp);
+            }
+            cJSON_AddItemToObject(data_root_array, "data", data_filed);
+        }
+        break;
+
         case SENSOR_TYPE_TEMP_HUMI:
         case SENSOR_TYPE_TEMP_DOUBLE:
-        case SENSOR_TYPE_TEMP:
         {
             data_filed = cJSON_CreateObject();
             sprintf(temp, "%d", _globalSensorMangerTemp->sensor_status);
             cJSON_AddStringToObject(data_filed, "connectionStatus", temp);
             
-            cJSON_AddStringToObject(data_filed, "sensorName", language_sensor_name[langID][(int)_globalSensorMangerTemp->sensor_type]);
+            cJSON_AddStringToObject(data_filed, "sensorName", _globalSensorMangerTemp->sensor_name);
             sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
             cJSON_AddStringToObject(data_filed, "sensorId", temp);
             cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
@@ -3816,7 +3922,7 @@ char* alarm_sensor_threshold_to_json(GlobalSensorManger* _globalSensorManger)
             data_filed = cJSON_CreateObject();
             sprintf(temp, "%d", _globalSensorMangerTemp->sensor_status);
             cJSON_AddStringToObject(data_filed, "connectionStatus", temp);
-            cJSON_AddStringToObject(data_filed, "sensorName", language_sensor_name[langID][(int)_globalSensorMangerTemp->sensor_type]);
+            cJSON_AddStringToObject(data_filed, "sensorName", _globalSensorMangerTemp->sensor_name);
             sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
             cJSON_AddStringToObject(data_filed, "sensorId", temp);
             cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
@@ -3924,7 +4030,7 @@ char* alarm_sensor_threshold_to_json(GlobalSensorManger* _globalSensorManger)
         case SENSOR_TYPE_LEAK:
             data_filed = cJSON_CreateObject();
             cJSON_AddStringToObject(data_filed, "connectionStatus", "");
-            cJSON_AddStringToObject(data_filed, "sensorName", language_sensor_name[langID][(int)_globalSensorMangerTemp->sensor_type]);
+            cJSON_AddStringToObject(data_filed, "sensorName", _globalSensorMangerTemp->sensor_name);
             sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
             cJSON_AddStringToObject(data_filed, "sensorId", temp);
             cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
@@ -3938,7 +4044,7 @@ char* alarm_sensor_threshold_to_json(GlobalSensorManger* _globalSensorManger)
             data_filed = cJSON_CreateObject();
             sprintf(temp, "%d", _globalSensorMangerTemp->sensor_status);
             cJSON_AddStringToObject(data_filed, "connectionStatus", temp);
-            cJSON_AddStringToObject(data_filed, "sensorName", language_sensor_name[langID][(int)_globalSensorMangerTemp->sensor_type]);
+            cJSON_AddStringToObject(data_filed, "sensorName", _globalSensorMangerTemp->sensor_name);
             sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
             cJSON_AddStringToObject(data_filed, "sensorId", temp);
             cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
@@ -4035,7 +4141,7 @@ char* alarm_sensor_threshold_to_json(GlobalSensorManger* _globalSensorManger)
             data_filed = cJSON_CreateObject();
             cJSON_AddNumberToObject(data_filed, "connectionStatus", _globalSensorMangerTemp->sensor_status);
             // cJSON_AddNumberToObject(data_filed,"connectionStatus",_globalSensorMangerTemp->sensor_status);
-            cJSON_AddStringToObject(data_filed, "sensorName", language_sensor_name[langID][(int)_globalSensorMangerTemp->sensor_type]);
+            cJSON_AddStringToObject(data_filed, "sensorName", _globalSensorMangerTemp->sensor_name);
             sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
             cJSON_AddStringToObject(data_filed, "sensorId", temp);
             cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);

+ 56 - 28
pro/src/language_common.c

@@ -1,4 +1,5 @@
 #include "language_common.h"
+#include "common.h"
 
 const char language_root_name[LANG_MAX][LANG_STR_SIZE] = 
 {
@@ -1040,7 +1041,7 @@ const char language_sensor_access[LANG_MAX][LANG_STR_SIZE] =
     "ドアアクセス",
 } ;
 
-const char* language_sensor_name[LANG_MAX][8] = 
+const char* language_sensor_name[LANG_MAX][20] = 
 {
     {
         "温湿度传感器",
@@ -1049,30 +1050,39 @@ const char* language_sensor_name[LANG_MAX][8] =
         "门禁传感器",
         "气体传感器",
         "气压传感器",
-        "空调传感器",
-        "温度传感器",
+        "空条传感器",
+        "泄漏传感器",
+        "单温度传感器",
+        "双温度传感器",
+        "压力传感器",
     },
 
     {
         "Temperature and humidity sensor",
         "Smoke sensor",
-        "Water Leak Sensor",
-        "Access Control Sensor",
-        "Gas Sensor",
-        "Pressure Sensor",
-        "Air Conditioner Infrared Sensor",
-        "Temperature sensor",
+        "Water leak sensor",
+        "Access control sensor",
+        "Gas sensor",
+        "Air pressure sensor",
+        "Air conditioner infrared sensor",
+        "Leakage sensor",
+        "Single temperature sensor",
+        "Double temperature sensor",
+        "Pressure sensor",
     },
     
     {
         "Датчик температуры и влажности",
-        "Датчик дыма",
-        "Датчик воды",
-        "Датчик доступа",
-        "Датчик подачи газа",
+        "Датчики дыма",
+        "Сенсор утечки",
+        "Сенсоры контроля доступа",
+        "Газовые датчики",
         "Датчик давления",
         "Инфракрасный датчик кондиционера",
-        "Датчик температуры",
+        "Сенсор утечки",
+        "Однотемпературный датчик",
+        "Двойной температурный датчик",
+        "Датчик давления",
     },
 
     {
@@ -1081,9 +1091,12 @@ const char* language_sensor_name[LANG_MAX][8] =
         "Sensor de fuga de agua",
         "Sensores de control de acceso",
         "Sensores de gas",
-        "Sensor de presión",
+        "Sensor de presión atmosférica",
         "Sensor infrarrojo del aire acondicionado",
-        "Sensor de temperatura",
+        "Sensor de fuga",
+        "Sensor de temperatura único",
+        "Sensor de temperatura doble",
+        "Sensor de presión",
     },
 
     {
@@ -1092,9 +1105,12 @@ const char* language_sensor_name[LANG_MAX][8] =
         "Sensor de fugas de água",
         "Sensor de controlo de acesso",
         "Sensor de gás",
-        "Sensor de Pressão",
+        "Sensor de pressão do ar",
         "Sensor infravermelho de ar condicionado",
-        "Sensor de temperatura",
+        "Sensor de fugas",
+        "Sensor de temperatura único",
+        "Sensor de temperatura dupla",
+        "Sensor de pressão",
     },
 
     {
@@ -1103,9 +1119,12 @@ const char* language_sensor_name[LANG_MAX][8] =
         "Wasserlecksensor",
         "Zutrittskontrollsensor",
         "Gassensor",
+        "Luftdrucksensor",
+        "Infrarotsensor der Klimaanlage",
+        "Lecksensor",
+        "Einzeltemperatursensor",
+        "Doppelter Temperatursensor",
         "Drucksensor",
-        "Infrarotsensor für Klimaanlagen",
-        "Temperatursensor",
     },
 
     {
@@ -1113,21 +1132,27 @@ const char* language_sensor_name[LANG_MAX][8] =
         "Capteur de fumée",
         "Capteur de fuite d'eau",
         "Capteur de contrôle d'accès",
-        "capteur de gaz",
-        "capteur de pression",
+        "Capteur de gaz",
+        "Capteur de pression atmosphérique",
         "Capteur infrarouge pour climatisation",
-        "Capteur de température",
+        "Capteur de fuite",
+        "Capteur de température unique",
+        "Double capteur de température",
+        "Capteur de pression",
     },
 
     {
         "Sensore di temperatura e umidità",
         "Sensore di fumo",
-        "Sensore di perdite d'acqua",
+        "Sensore di perdita d'acqua",
         "Sensore di controllo accessi",
         "Sensore di gas",
-        "Sensore di pressione",
+        "Sensore di pressione dell'aria",
         "Sensore infrarosso del condizionatore d'aria",
-        "Sensore di temperatura",
+        "Sensore di perdita",
+        "Sensore di temperatura singolo",
+        "Sensore a doppia temperatura",
+        "Sensore di pressione",
     },
 
     {
@@ -1136,9 +1161,12 @@ const char* language_sensor_name[LANG_MAX][8] =
         "漏水センサー",
         "ゲートセンサ",
         "ガスセンサ",
-        "圧力センサー",
+        "気圧センサー",
         "エアコン赤外線センサー",
-        "温度センサー",
+        "漏洩センサ",
+        "単温度センサー",
+        "二重温度センサー",
+        "圧力センサー",
     },
 };
 

+ 1 - 1
pro/src/language_common.h

@@ -163,7 +163,7 @@ extern const char language_exceed[LANG_MAX][LANG_STR_SIZE];
 extern const char language_sensor_smoke[LANG_MAX][LANG_STR_SIZE];
 extern const char language_sensor_access[LANG_MAX][LANG_STR_SIZE];
 
-extern const char* language_sensor_name[LANG_MAX][8];
+extern const char* language_sensor_name[LANG_MAX][20];
 
 extern const char language_Operation_Tips_Success[LANG_MAX][LANG_STR_SIZE] ;
 extern const char language_Operation_Tips_Failure[LANG_MAX][LANG_STR_SIZE] ;

+ 5 - 3
pro/src/upg.c

@@ -495,6 +495,7 @@ typedef union {
 		uint16_t        size;
 		uint32_t        partition;
 		uint32_t		version;
+		char            md5[32];
 	}hdr;
 	uint8_t				padd[128];
 }fw_hdr_t;
@@ -516,22 +517,23 @@ static void print_md5(char *s, char *m)
     }
     printf("\n");
 }
+
 //md5相同返回0,否则返回1
 static int md5_check(buf_t *fb)
 {
     char *m1,m2[32];
     md5_ctx_t ctx;
     uint8_t i,tmp[16];
-    #define MD5_OFFSET   52
+    fw_hdr_t *hdr=(fw_hdr_t*)fb->buf;
 
     md5_init(&ctx);
-    md5_update(&ctx, (uint8_t*)fb->buf+128, fb->dlen);
+    md5_update(&ctx, (uint8_t*)fb->buf+sizeof(fw_hdr_t), fb->dlen-hdr->hdr.size);
     md5_final(&ctx, tmp);
 
     for (i=0; i<16; i++) {
         byte2char(&m2[i*2], tmp[i]);
     }
-    m1 = fb->buf+MD5_OFFSET;
+    m1 = hdr->hdr.md5;
 
     print_md5("ori md5: ", m1);
     print_md5("cal md5: ", m2);

+ 17 - 4
tools/mb/mb.cpp

@@ -26,6 +26,7 @@ typedef union {
 		uint16_t        size;
 		uint32_t        partition;
 		uint32_t		version;
+		char            md5[32];
 	}hdr;
 	uint8_t				padd[128];
 }fw_hdr_t;
@@ -43,6 +44,10 @@ typedef struct {
 	uint32_t app2_version;					// V1.0.0.0   (1<<24 | 0 << 16 | 0 << 8 | 0)
 	uint32_t app2_rom_addr;					// PROGRAME_APP2 0x0800A400
 	uint32_t app2_partition;				// 1
+	char     md5_1[32];
+	char     md5_2[32];
+	uint32_t app1_len;
+	uint32_t app2_len;
 }fw_info_t;
 
 typedef struct {
@@ -399,9 +404,16 @@ int main(char argc, char *argv[])
 			goto fail;
 		}
 		md5_calc(fwImg.app1.data, fwImg.app1.dlen, md5);
-		memcpy(((char*)&fwHdr) + MD5_OFFSET1, md5, sizeof(md5));
-		memcpy(((char*)&fwHdr) + MD5_OFFSET2, md5, sizeof(md5));
+
+		//fwHdr.hdr.size = fwImg.app1.dlen;
+		//memcpy(fwHdr.hdr.md5, md5, sizeof(md5));
+
 		if (fwImg.info.data) {
+			fwInfo.app1_len = fwImg.app1.dlen;
+			fwInfo.app2_len = fwImg.app1.dlen;
+
+			memcpy(fwInfo.md5_1, md5, sizeof(md5));
+			memcpy(fwInfo.md5_2, md5, sizeof(md5));
 			memcpy(fwImg.info.data, &fwInfo, fwImg.info.blen);
 		}
 
@@ -479,10 +491,11 @@ int main(char argc, char *argv[])
 		if (!hFile) {
 			goto fail;
 		}
-
 		
 		md5_calc(fupg.data, fupg.dlen, md5);
-		memcpy(((char*)&fwHdr) + MD5_OFFSET1, md5, sizeof(md5));
+
+		fwHdr.hdr.size = fupg.dlen;
+		memcpy(fwHdr.hdr.md5, md5, sizeof(md5));
 
 		WriteFile(hFile, &fwHdr, sizeof(fwHdr), NULL, NULL);
 		WriteFile(hFile, fupg.data, fupg.dlen, NULL, NULL);