Kaynağa Gözat

修改部分字符的翻译
继续整理ui代码

guohui 1 yıl önce
ebeveyn
işleme
4e9bd30bb7

+ 56 - 56
pro/src/json_handle.c

@@ -152,7 +152,7 @@ char* log_info_to_json(const char* token)
     //添加结果
     cJSON_AddStringToObject(root, "token", token);
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root); 
     //释放资源
@@ -170,7 +170,7 @@ char* log_LoginFailedinfo_to_json()
     // 添加基本键值对
     cJSON_AddNumberToObject(root, "code", 201); 
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "用户名或者登录密码不正确!");
+    cJSON_AddStringToObject(root, "msg", language_login_wrong_param[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root); 
     //释放资源
@@ -189,7 +189,7 @@ char* log_AthFailedinfo_to_json()
     // 添加基本键值对
     cJSON_AddNumberToObject(root, "code", 401); 
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "获取用户账户异常");
+    cJSON_AddStringToObject(root, "msg", language_login_query_failed[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root); 
     //释放资源
@@ -205,7 +205,7 @@ char* user_info_to_json(void)
     // 创建 JSON 对象
     cJSON* root = cJSON_CreateObject();   
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");        
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);        
     // 添加基本键值对
     cJSON_AddNumberToObject(root, "code", 200); 
     //添加permissions 数组
@@ -293,7 +293,7 @@ char* user_routers_info_to_json(void)
     // 创建 JSON 对象
     cJSON* root = cJSON_CreateObject();   
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");        
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);        
     // 添加基本键值对
     cJSON_AddNumberToObject(root, "code", 200); 
     //data区
@@ -1189,7 +1189,7 @@ char* json_to_system_config_info(int tls)
     if(logo.buf) free(logo.buf);
 
     cJSON_AddItemToObject(root,"data",data_field);
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
 
     str = cJSON_Print(root);
     cJSON_Delete(root);
@@ -1276,7 +1276,7 @@ char* over_all_monitor_to_json(_OverBackStsInfo* _over_back_sts_info)
     cJSON_AddItemToObject(root, "data", data_root_array);
 
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -1335,7 +1335,7 @@ char* over_breaker_product_list_info_to_json(GlobalDeviceManager *dm, _OverBackB
             }
             cJSON_AddItemToObject(root, "data", root_array);
         }
-        cJSON_AddStringToObject(root, "msg", "操作成功");
+        cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
 
         str = cJSON_Print(root);
 
@@ -1452,7 +1452,7 @@ char* over_product_list_info_to_json(GlobalDeviceManager *dm, _OverBackStsInfo*
             }
             cJSON_AddItemToObject(root, "data", root_array);
         }
-        cJSON_AddStringToObject(root, "msg", "操作成功");
+        cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
 
         str = cJSON_Print(root);
 
@@ -1543,7 +1543,7 @@ char* upgrade_to_json(void)
     cJSON_AddItemToArray(array, data_field);
     cJSON_AddItemToObject(root, "data", array);
 
-    cJSON_AddStringToObject(root, "msg", language_Operation_Tips_Success[__globalDeviceManage._globalDevInfo.product.language]);    
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);    
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -1601,7 +1601,7 @@ char* board_to_json(handle_t l, int is_ws)
 
         cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
         cJSON_AddStringToObject(root, "type", "controlBoardUpgrade");
-        cJSON_AddStringToObject(root, "message", "操作成功");
+        cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
         cJSON_AddBoolToObject(root, "success",true);
     }
     else {
@@ -1683,7 +1683,7 @@ char* vendor_info_to_json(GlobalDeviceInfo *dev)
         }
         cJSON_AddItemToObject(root,"data",root_array);
     }
-    cJSON_AddStringToObject(root, "msg", "操作成功");    
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);    
     
     str = cJSON_Print(root);
     cJSON_Delete(root);
@@ -1827,7 +1827,7 @@ char* ctrl_sts_ack_to_json(void)
     // 添加基本键值对
     cJSON_AddNumberToObject(root, "code", 200);       
     //添加结果
-    cJSON_AddStringToObject(root, "msg", language_Operation_Tips_Success[__globalDeviceManage._globalDevInfo.product.language]);    
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);    
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -1890,7 +1890,7 @@ char* overall_power_history_to_json(GlobalPowerInfo* _globalPowerInfo,GlobalDevi
     //添加汇总
     cJSON_AddItemToObject(root, "data", data_root_array);
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -1953,7 +1953,7 @@ char* over_channel_power_history_to_json(GlobalPowerInfo* _globalPowerInfo,Globa
     //添加汇总
     cJSON_AddItemToObject(root, "data", data_root_array);
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -2117,12 +2117,12 @@ char* over_all_pwr_monitor_Tree_AC_to_json(_OverAllPwrAckInfo* _over_all_pwr_bac
 
     //添加汇总
     cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
-    cJSON_AddStringToObject(sdata_filed, "msg", "操作成功");
+    cJSON_AddStringToObject(sdata_filed, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
 
     //添加汇总
     cJSON_AddItemToObject(root, "data", sdata_filed);
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
 
     //添加内容
     cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
@@ -2220,7 +2220,7 @@ char* over_all_pwr_monitor_to_json(int phaseType,_OverAllPwrAckInfo* _over_all_p
     //添加汇总
     cJSON_AddItemToObject(root, "data", data_root_array);
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -2296,7 +2296,7 @@ char* over_all_total_info_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info, i
     //添加汇总
     cJSON_AddItemToObject(date_total_info, "data", cjson_data);
     //添加结果
-    cJSON_AddStringToObject(date_total_info, "msg", "操作成功");
+    cJSON_AddStringToObject(date_total_info, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(date_total_info);    
 
@@ -2428,7 +2428,7 @@ int over_init_data_t_ac_to_json(cJSON* pAllJson,cJSON* dataJson[],cJSON* AxisJso
     //添加汇总
     cJSON_AddItemToObject(date_total_info, "data", cjson_data);
     //添加结果
-    cJSON_AddStringToObject(date_total_info, "msg", "操作成功");
+    cJSON_AddStringToObject(date_total_info, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //释放资源
     //cJSON_Delete(date_total_info);
     return 0;
@@ -2535,7 +2535,7 @@ char* over_system_total_monitor_to_json(_OverBackStsInfo* _over_back_system_info
     cJSON_AddItemToObject(root, "data", data_field);
 
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -2604,7 +2604,7 @@ char* over_power_trend_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info)
     //添加汇总
     cJSON_AddItemToObject(date_trend_info, "data", cjson_data);
     //添加结果
-    cJSON_AddStringToObject(date_trend_info, "msg", "操作成功");
+    cJSON_AddStringToObject(date_trend_info, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(date_trend_info);    
 
@@ -2700,7 +2700,7 @@ char* over_chn_pwr_monitor_to_json(_OverChnPwrAckInfo* _over_chn_pwr_back_info)
     //添加汇总
     cJSON_AddItemToObject(root, "data", data_root_array);
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -2828,10 +2828,10 @@ char* over_all_breaker_chn_info_to_json(_OverBreakerChnInfo* _over_all_breaker_b
         // 添加汇总
         cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
         // 添加结果
-        cJSON_AddStringToObject(sdata_filed, "msg", "操作成功");
+        cJSON_AddStringToObject(sdata_filed, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
         cJSON_AddItemToObject(root, "data", sdata_filed);
         // 添加内容
-        cJSON_AddStringToObject(root, "message", "操作成功");
+        cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
         cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
         cJSON_AddBoolToObject(root, "success", true);
         cJSON_AddStringToObject(root, "type", "sensorStatusMonitoring");
@@ -2839,7 +2839,7 @@ char* over_all_breaker_chn_info_to_json(_OverBreakerChnInfo* _over_all_breaker_b
     {
         cJSON_AddItemToObject(root, "data", data_root_array);
         // 添加内容
-        cJSON_AddStringToObject(root, "message", "操作成功");
+        cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     }
     //转换
     str = cJSON_Print(root);    
@@ -2908,7 +2908,7 @@ char* over_all_breaker_switch_info_to_json(_OverBreakerSwitchInfo* _over_all_bre
         // 添加汇总
         cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
         // 添加结果
-        cJSON_AddStringToObject(sdata_filed, "msg", "操作成功");
+        cJSON_AddStringToObject(sdata_filed, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
         cJSON_AddItemToObject(root, "data", sdata_filed);
         // 添加内容
         cJSON_AddStringToObject(root, "message", "提示信息");
@@ -2919,7 +2919,7 @@ char* over_all_breaker_switch_info_to_json(_OverBreakerSwitchInfo* _over_all_bre
     {
         cJSON_AddItemToObject(root, "data", data_root_array);
         // 添加内容
-        cJSON_AddStringToObject(root, "message", "操作成功");
+        cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     }
     
     //转换
@@ -3015,10 +3015,10 @@ char* over_all_sensor_info_to_json(_OverSensorBackInfo* _over_all_sensor_back_in
         // 添加汇总
         cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
         // 添加结果
-        cJSON_AddStringToObject(sdata_filed, "msg", "操作成功");
+        cJSON_AddStringToObject(sdata_filed, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
         cJSON_AddItemToObject(root, "data", sdata_filed);
         // 添加内容
-        cJSON_AddStringToObject(root, "message", "操作成功");
+        cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
         cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
         cJSON_AddBoolToObject(root, "success", true);
         cJSON_AddStringToObject(root, "type", "sensorStatusMonitoring");
@@ -3026,7 +3026,7 @@ char* over_all_sensor_info_to_json(_OverSensorBackInfo* _over_all_sensor_back_in
     {
         cJSON_AddItemToObject(root, "data", data_root_array);
         // 添加内容
-        cJSON_AddStringToObject(root, "message", "操作成功");
+        cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     }
     //转换
     str = cJSON_Print(root);    
@@ -3230,7 +3230,7 @@ char* over_sensor_history_info_to_json(_OverSensorBackInfo* _over_all_sensor_bac
     cJSON* root = cJSON_CreateObject();   
     if(sensor_type == SENSOR_TYPE_VALUE)
     {
-        cJSON_AddStringToObject(root, "msg", "操作成功");
+        cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
         cJSON_AddNumberToObject(root, "code", 200);
         cJSON* data_root_array = cJSON_CreateArray();
         list_for_each_entry(_temp, &_over_all_sensor_back_info->list, list)
@@ -3371,7 +3371,7 @@ char* over_sensor_history_info_to_json(_OverSensorBackInfo* _over_all_sensor_bac
         //添加汇总
         cJSON_AddItemToObject(root, "data", data_root_array);
         //添加结果
-        cJSON_AddStringToObject(root, "msg", "操作成功");
+        cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     }
     //转换
     str = cJSON_Print(root);    
@@ -3428,7 +3428,7 @@ char* alarm_info_to_json(_AlarmAckInfo* _alarm_ack_info,int nAllNumber)
     //添加汇总
     cJSON_AddItemToObject(root, "data", data_root_array);
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -3484,7 +3484,7 @@ char* alarm_type_info_to_json(_AlarmAckInfo* _alarm_ack_info,int nAlarmNum)
     //添加汇总
     cJSON_AddItemToObject(root, "data", data_root_array);
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -3533,7 +3533,7 @@ char* alarm_ctrl_type_info_to_json(_AlarmAckInfo* _alarm_ack_info,int nAlarmNum)
     //添加汇总
     cJSON_AddItemToObject(root, "data", data_root_array);
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -3684,7 +3684,7 @@ char* alarm_power_threshold_to_json(GlobalPowerManger* _globalPowerManger)
     //添加汇总
     cJSON_AddItemToObject(root, "data", data_root_array);
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -4186,7 +4186,7 @@ char* alarm_sensor_threshold_to_json(GlobalSensorManger* _globalSensorManger)
     //添加汇总
     cJSON_AddItemToObject(root, "data", data_root_array);
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -4249,12 +4249,12 @@ char* ws_over_status_ack_to_json(int type,_OverAllPwrAckInfo* _over_all_pwr_back
     //添加汇总
      cJSON_AddItemToObject(sdata_filed, "data", sub_data_root_array);
     //添加结果
-    cJSON_AddStringToObject(sdata_filed, "msg", "操作成功");
+    cJSON_AddStringToObject(sdata_filed, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
 
     //添加汇总
     cJSON_AddItemToObject(root, "data", sdata_filed);
     //添加内容
-    cJSON_AddStringToObject(root, "message", "操作成功");
+    cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
     cJSON_AddBoolToObject(root, "success",true);
     switch (type)
@@ -4356,11 +4356,11 @@ char* ws_chn_status_ack_to_json(int type,_OverChnPwrAckInfo* _over_chn_pwr_back_
     //添加汇总
     cJSON_AddItemToObject(sdata_filed, "data", sub_data_root_array);
     //添加结果
-    cJSON_AddStringToObject(sdata_filed, "msg", "操作成功");
+    cJSON_AddStringToObject(sdata_filed, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //添加汇总
     cJSON_AddItemToObject(root, "data", sdata_filed);
     //添加内容
-    cJSON_AddStringToObject(root, "message", "操作成功");
+    cJSON_AddStringToObject(root, "message", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
     cJSON_AddBoolToObject(root, "success",true);
     switch (type)
@@ -4403,7 +4403,7 @@ char* communication_net_ack_to_json(NetworkInfo_t* _networkInfo_t)
     //添加汇总
     cJSON_AddItemToObject(root, "data", data_root_array);
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -4448,7 +4448,7 @@ char* communication_rs_ack_to_json(ModbusInfo_t* _modbusInfo_t)
     //添加汇总
     cJSON_AddItemToObject(root, "data", data_root_array);
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -4493,7 +4493,7 @@ char* service_ds_ack_to_json(char* chn_name,char* chn_id,_PowerDSManage_t* __pow
     //添加汇总
     cJSON_AddItemToObject(root, "data", data_root_array);
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -4570,7 +4570,7 @@ char* service_ds_all_ack_to_json(char* pDate,char* strName,char* strchID,GlobalP
     //添加汇总
     cJSON_AddItemToObject(root, "data", data_root_array);
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -5427,7 +5427,7 @@ char* service_sx_ack_to_json(int product_id, GlobalPowerManger * __PowerManage_t
     //添加汇总
     cJSON_AddItemToObject(root, "data", data_root_array);
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -5466,7 +5466,7 @@ char* service_ntp_ack_to_json(NTPManager* __NTPManager_t)
     cJSON_AddStringToObject(data_filed,"week", buf);
     cJSON_AddItemToObject(root, "data", data_filed);
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -5532,7 +5532,7 @@ char* service_snmp_ack_to_json(SNMPManager* sm)
     cJSON_AddItemToObject(root, "data", data_filed);
 
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -5589,7 +5589,7 @@ char* service_mail_ack_to_json(mail_info_t* info)
     //添加汇总
     cJSON_AddItemToObject(root, "data", data_filed);
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -5646,7 +5646,7 @@ char* service_mqtt_ack_to_json(mqtt_info_t* info)
     }
 #endif
 
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     str = cJSON_Print(root);    
     cJSON_Delete(root);
     return str;
@@ -5668,7 +5668,7 @@ char* mqtt_status_to_json(int mode)
 
     cJSON_AddItemToObject(root, "data", data_filed);
 
-    cJSON_AddStringToObject(root, "msg", "操作成功");    
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);    
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -5732,7 +5732,7 @@ char* service_group_ack_to_json(GroupInfo* _globalgroupInfo)
     //添加汇总
     cJSON_AddItemToObject(root, "data", data_root_array);
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -5799,7 +5799,7 @@ char* GetRoleNameByID(int _RoleID,RoleInfo* __RoleInfo_t)
         if (_RoleInfoTemp->roleID == _RoleID)
         {
            // nname = _RoleInfoTemp->roleName;
-           nname = malloc(64);
+           nname = malloc(128);
            if (nname != NULL)
            {
                if (_RoleID == 1)
@@ -5933,7 +5933,7 @@ char* service_userQuery_ack_to_json(char* _userName,UserInfo* __UserInfo_t,RoleI
     // 添加基本键值对
     cJSON_AddNumberToObject(root, "code", 200); 
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源
@@ -6012,7 +6012,7 @@ char* service_userRole_ack_to_json(char* _userName,UserInfo* __UserInfo_t,RoleIn
     // 添加基本键值对
     cJSON_AddNumberToObject(root, "code", 200); 
     //添加结果
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     //转换
     str = cJSON_Print(root);    
     //释放资源

+ 116 - 87
pro/src/language_common.c

@@ -1,7 +1,7 @@
 #include "language_common.h"
 #include "common.h"
 
-const char language_root_name[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_root_name[LANG_MAX] = 
 {
     "管理员",
     "Administrator",
@@ -14,7 +14,7 @@ const char language_root_name[LANG_MAX][LANG_STR_SIZE] =
     "管理者",
 };
 
-const char language_nick_name[LANG_MAX][LANG_STR_SIZE] =
+const char* language_nick_name[LANG_MAX] =
 {
     "张三",
     "zhang san",
@@ -27,7 +27,7 @@ const char language_nick_name[LANG_MAX][LANG_STR_SIZE] =
     " "
 };
 
-const char language_user_manage[LANG_MAX][LANG_STR_SIZE] =
+const char* language_user_manage[LANG_MAX] =
 {
     "用户管理",
     "User management",
@@ -40,7 +40,7 @@ const char language_user_manage[LANG_MAX][LANG_STR_SIZE] =
     "ユーザー管理",
 };
 
-const char language_role_manage[LANG_MAX][LANG_STR_SIZE] =
+const char* language_role_manage[LANG_MAX] =
 {
     "角色管理",
     "Role management",
@@ -53,7 +53,7 @@ const char language_role_manage[LANG_MAX][LANG_STR_SIZE] =
     "ロール管理",
 };
 
-const char language_menu_manage[LANG_MAX][LANG_STR_SIZE] =
+const char* language_menu_manage[LANG_MAX] =
 {
     "菜单管理",
     "Menu management",
@@ -66,7 +66,7 @@ const char language_menu_manage[LANG_MAX][LANG_STR_SIZE] =
     "メニュー管理",
 };
 
-const char language_power_monitor[LANG_MAX][LANG_STR_SIZE] =
+const char* language_power_monitor[LANG_MAX] =
 {
     "电源监控",
     "Power monitor",
@@ -79,7 +79,7 @@ const char language_power_monitor[LANG_MAX][LANG_STR_SIZE] =
     "電源監視",
 };
 
-const char language_power_sts_monitor[LANG_MAX][LANG_STR_SIZE] =
+const char* language_power_sts_monitor[LANG_MAX] =
 {
     "总体状态监控",
     "Device monitor",
@@ -92,7 +92,7 @@ const char language_power_sts_monitor[LANG_MAX][LANG_STR_SIZE] =
     "全体の状況の監視",
 };
 
-const char language_power_channel_sts_monitor[LANG_MAX][LANG_STR_SIZE] =
+const char* language_power_channel_sts_monitor[LANG_MAX] =
 {
     "通道状态监控",
     "Device channel monitor",
@@ -105,7 +105,7 @@ const char language_power_channel_sts_monitor[LANG_MAX][LANG_STR_SIZE] =
     "チャンネル状態の監視",
 };
 
-const char language_power_switch_sts_monitor[LANG_MAX][LANG_STR_SIZE] =
+const char* language_power_switch_sts_monitor[LANG_MAX] =
 {
     "开关状态监控",
     "Circuit breaker monitor",
@@ -117,7 +117,7 @@ const char language_power_switch_sts_monitor[LANG_MAX][LANG_STR_SIZE] =
     "Monitoraggio stato dell'interruttore",
     "スイッチ状態の監視",
 };
-const char language_power_history_search[LANG_MAX][LANG_STR_SIZE] =
+const char* language_power_history_search[LANG_MAX] =
 {
     "历史记录查询",
     "Sensor status history",
@@ -130,7 +130,7 @@ const char language_power_history_search[LANG_MAX][LANG_STR_SIZE] =
     "履歴記録の照会",
 };
 
-const char language_sensor_monitoring[LANG_MAX][LANG_STR_SIZE] =
+const char* language_sensor_monitoring[LANG_MAX] =
 {
     "传感器监控",
     "Sensor monitoring",
@@ -143,7 +143,7 @@ const char language_sensor_monitoring[LANG_MAX][LANG_STR_SIZE] =
     "センサー監視",
 };
 
-const char language_sensor_status_monitoring[LANG_MAX][LANG_STR_SIZE] =
+const char* language_sensor_status_monitoring[LANG_MAX] =
 {
     "传感器状态监控",
     "Sensor status monitoring",
@@ -156,7 +156,7 @@ const char language_sensor_status_monitoring[LANG_MAX][LANG_STR_SIZE] =
     "センサー状態の監視",
 };
 
-const char language_sensor_history_search[LANG_MAX][LANG_STR_SIZE] =
+const char* language_sensor_history_search[LANG_MAX] =
 {
     "历史记录查询",
     " Sensor status history",
@@ -169,7 +169,7 @@ const char language_sensor_history_search[LANG_MAX][LANG_STR_SIZE] =
     "履歴記録の照会",
 };
 
-const char language_Alarm_protection[LANG_MAX][LANG_STR_SIZE] =
+const char* language_Alarm_protection[LANG_MAX] =
 {
     "告警保护",
     "Alarm protection",
@@ -182,7 +182,7 @@ const char language_Alarm_protection[LANG_MAX][LANG_STR_SIZE] =
     "アラーム保護",
 };
 
-const char language_Alarm_System[LANG_MAX][LANG_STR_SIZE] =
+const char* language_Alarm_System[LANG_MAX] =
 {
     "系统告警",
     "System alarm",
@@ -195,7 +195,7 @@ const char language_Alarm_System[LANG_MAX][LANG_STR_SIZE] =
     "システムアラーム",
 };
 
-const char language_Alarm_Threshold_rule[LANG_MAX][LANG_STR_SIZE] =
+const char* language_Alarm_Threshold_rule[LANG_MAX] =
 {
     "阈值及规则设置",
     "Threshold and rule settings",
@@ -208,7 +208,7 @@ const char language_Alarm_Threshold_rule[LANG_MAX][LANG_STR_SIZE] =
     "閾値とルールの設定",
 };
 
-const char language_log_information[LANG_MAX][LANG_STR_SIZE] =
+const char* language_log_information[LANG_MAX] =
 {
     "日志信息",
     "log information",
@@ -221,7 +221,7 @@ const char language_log_information[LANG_MAX][LANG_STR_SIZE] =
     "ログ情報",
 };
 
-const char language_log_Alarm[LANG_MAX][LANG_STR_SIZE] =
+const char* language_log_Alarm[LANG_MAX] =
 {
     "告警日志",
     "Alarm log",
@@ -234,7 +234,7 @@ const char language_log_Alarm[LANG_MAX][LANG_STR_SIZE] =
     "アラームログ",
 };
 
-const char language_log_operation[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_log_operation[LANG_MAX] = 
 {
     "操作日志",
     "Operation log",
@@ -247,7 +247,7 @@ const char language_log_operation[LANG_MAX][LANG_STR_SIZE] =
     "操作ログ",
 };
 
-const char language_log_running[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_log_running[LANG_MAX] = 
 {
     "运行日志",
     "Running log",
@@ -260,7 +260,7 @@ const char language_log_running[LANG_MAX][LANG_STR_SIZE] =
     "実行ログ",
 };
 
-const char language_communication_management[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_communication_management[LANG_MAX] = 
 {
     "通信管理",
     "Communication management",
@@ -274,7 +274,7 @@ const char language_communication_management[LANG_MAX][LANG_STR_SIZE] =
 };
 
 
-const char language_net_install[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_net_install[LANG_MAX] = 
 {
     "网口设置",
     "Net opening settings",
@@ -287,7 +287,7 @@ const char language_net_install[LANG_MAX][LANG_STR_SIZE] =
     "ネットワークインターフェイス設定",
 } ;
 
-const char language_RS485_install[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_RS485_install[LANG_MAX] = 
 {
     "RS485设置",
     "RS485 settings",
@@ -300,7 +300,7 @@ const char language_RS485_install[LANG_MAX][LANG_STR_SIZE] =
     "RS485設定",
 } ;
 
-const char language_serve_manage[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_serve_manage[LANG_MAX] = 
 {
     "服务管理",
     "Serve settings",
@@ -314,7 +314,7 @@ const char language_serve_manage[LANG_MAX][LANG_STR_SIZE] =
 } ;
 
 
-const char language_SMTP_install[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_SMTP_install[LANG_MAX] = 
 {
     "SMTP设置",
     "SMTP settings",
@@ -327,7 +327,7 @@ const char language_SMTP_install[LANG_MAX][LANG_STR_SIZE] =
     "SMTP設定",
 } ;
 
-const char language_SNMP_install[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_SNMP_install[LANG_MAX] = 
 {
     "SNMP设置",
     "SNMP settings",
@@ -340,7 +340,7 @@ const char language_SNMP_install[LANG_MAX][LANG_STR_SIZE] =
     "SNMP設定",
 } ;
 
-const char language_SNMP_TRAP_install[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_SNMP_TRAP_install[LANG_MAX] = 
 {
     "SNMP TRAP设置",
     "SNMP settings",
@@ -353,7 +353,7 @@ const char language_SNMP_TRAP_install[LANG_MAX][LANG_STR_SIZE] =
     "SNMP TRAP設定",
 } ;
 
-const char language_MQTT_iot_install[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_MQTT_iot_install[LANG_MAX] = 
 {
     "MQTT物联设置",
     "MQTT settings",
@@ -366,7 +366,7 @@ const char language_MQTT_iot_install[LANG_MAX][LANG_STR_SIZE] =
     "MQTT物联設定",
 } ;
 
-const char language_NTP_install[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_NTP_install[LANG_MAX] = 
 {
     "NTP设置",
     "NTP settings",
@@ -379,7 +379,7 @@ const char language_NTP_install[LANG_MAX][LANG_STR_SIZE] =
     "NTP設定",
 } ;
 
-const char language_Timing_install[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_Timing_install[LANG_MAX] = 
 {
     "定时设置",
     "Timing settings",
@@ -392,7 +392,7 @@ const char language_Timing_install[LANG_MAX][LANG_STR_SIZE] =
     "タイマー設定",
 } ;
 
-const char language_Sequential_setting[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_Sequential_setting[LANG_MAX] = 
 {
     "时序设置",
     "Sequential settings",
@@ -405,7 +405,7 @@ const char language_Sequential_setting[LANG_MAX][LANG_STR_SIZE] =
     "時間シーケンス設定",
 } ;
 
-const char language_Group_setting[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_Group_setting[LANG_MAX] = 
 {
     "分组设置",
     "Group settings",
@@ -418,7 +418,7 @@ const char language_Group_setting[LANG_MAX][LANG_STR_SIZE] =
     "グループ設定",
 } ;
 
-const char language_maintenance_equipment[LANG_MAX][LANG_STR_SIZE] =
+const char* language_maintenance_equipment[LANG_MAX] =
 {
     "设备维护",
     "Maintenance of equipment",
@@ -431,7 +431,7 @@ const char language_maintenance_equipment[LANG_MAX][LANG_STR_SIZE] =
     "デバイス保守",
 } ;
 
-const char language_Device_restart[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_Device_restart[LANG_MAX] = 
 {
     "设备重启",
     "Device restart",
@@ -444,7 +444,7 @@ const char language_Device_restart[LANG_MAX][LANG_STR_SIZE] =
     "デバイス再起動",
 } ;
 
-const char language_firmware_upgrade[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_firmware_upgrade[LANG_MAX] = 
 {
     "固件升级",
     "Return to factory settings",
@@ -457,7 +457,7 @@ const char language_firmware_upgrade[LANG_MAX][LANG_STR_SIZE] =
     "ファームウェア更新",
 } ;
 
-const char language_back_factor_upgrade[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_back_factor_upgrade[LANG_MAX] = 
 {
     "恢复出厂设置",
     "Return to factory settings",
@@ -470,7 +470,7 @@ const char language_back_factor_upgrade[LANG_MAX][LANG_STR_SIZE] =
     "工場出荷時の設定に戻す",
 } ;
 
-const char language_Configure_inport_export[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_Configure_inport_export[LANG_MAX] = 
 {
     "配置导入/导出",
     "Configure import/export",
@@ -483,7 +483,7 @@ const char language_Configure_inport_export[LANG_MAX][LANG_STR_SIZE] =
     "設定のインポート/エクスポート",
 } ;
 
-const char language_after_sales_service[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_after_sales_service[LANG_MAX] = 
 {
     "售后服务",
     "Customizing the logo",
@@ -496,7 +496,7 @@ const char language_after_sales_service[LANG_MAX][LANG_STR_SIZE] =
     "アフターサービス",
 } ;
 
-const char language_about_Equipment[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_about_Equipment[LANG_MAX] = 
 {
     "关于设备",
     "About PDU",
@@ -509,7 +509,7 @@ const char language_about_Equipment[LANG_MAX][LANG_STR_SIZE] =
     "デバイスについて",
 } ;
 
-const char language_temperature[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_temperature[LANG_MAX] = 
 {
     "温度",
     "temperature",
@@ -522,7 +522,7 @@ const char language_temperature[LANG_MAX][LANG_STR_SIZE] =
     "温度",
 } ;
 
-const char language_humidity[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_humidity[LANG_MAX] = 
 {
     "湿度",
     "humidity",
@@ -535,7 +535,7 @@ const char language_humidity[LANG_MAX][LANG_STR_SIZE] =
     "湿度",
 } ;
 
-const char language_atmosphere_gas[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_atmosphere_gas[LANG_MAX] = 
 {
     "气体",
     "gas",
@@ -548,7 +548,7 @@ const char language_atmosphere_gas[LANG_MAX][LANG_STR_SIZE] =
     "ガス",
 } ;
 
-const char language_atmosphere_airflow[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_atmosphere_airflow[LANG_MAX] = 
 {
     "气流",
     "airflow",
@@ -561,7 +561,7 @@ const char language_atmosphere_airflow[LANG_MAX][LANG_STR_SIZE] =
     "気流",
 } ;
 
-const char language_atmosphere_pressure[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_atmosphere_pressure[LANG_MAX] = 
 {
     "气压",
     "atmospheric pressure",
@@ -574,7 +574,7 @@ const char language_atmosphere_pressure[LANG_MAX][LANG_STR_SIZE] =
     "気圧",
 } ;
 
-const char language_log_Power[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_log_Power[LANG_MAX] = 
 {
     "电源日志",
     "Power log",
@@ -587,7 +587,7 @@ const char language_log_Power[LANG_MAX][LANG_STR_SIZE] =
     "電源ログ",
 } ;
 
-const char language_alarm_Type_Power[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_Type_Power[LANG_MAX] = 
 {
     "电源类警告",
     " Power alarm",
@@ -600,7 +600,7 @@ const char language_alarm_Type_Power[LANG_MAX][LANG_STR_SIZE] =
     "電源警告",
 } ;
 
-const char language_alarm_Type_Sensor[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_Type_Sensor[LANG_MAX] = 
 {
     "传感器类警告",
     " Sensor alarm",
@@ -613,7 +613,7 @@ const char language_alarm_Type_Sensor[LANG_MAX][LANG_STR_SIZE] =
     "センサー警告",
 } ;
 
-const char language_alarm_Type_Network[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_Type_Network[LANG_MAX] = 
 {
     "网络告警",
     " Network alarm",
@@ -625,7 +625,7 @@ const char language_alarm_Type_Network[LANG_MAX][LANG_STR_SIZE] =
     "Allarme di rete",
     "ネットワークアラーム",
 } ;
-const char language_opera_log_operation[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_opera_log_operation[LANG_MAX] = 
 {
     "操作日志",
     "Operation log",
@@ -638,7 +638,7 @@ const char language_opera_log_operation[LANG_MAX][LANG_STR_SIZE] =
     "操作ログ",
 };
 
-const char language_run_log_running[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_run_log_running[LANG_MAX] = 
 {
     "运行日志",
     "Running log",
@@ -651,7 +651,7 @@ const char language_run_log_running[LANG_MAX][LANG_STR_SIZE] =
     "実行ログ",
 };
 //============================================================================
-const char language_alarm_Ch[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_Ch[LANG_MAX] = 
 {
     "通道",
     "channel ",
@@ -664,7 +664,7 @@ const char language_alarm_Ch[LANG_MAX][LANG_STR_SIZE] =
     "チャンネル",
 } ;
 
-const char language_alarm_V[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_V[LANG_MAX] = 
 {
     "电压",
     "voltage ",
@@ -677,7 +677,7 @@ const char language_alarm_V[LANG_MAX][LANG_STR_SIZE] =
     "電圧",
 } ;
 
-const char language_alarm_A[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_A[LANG_MAX] = 
 {
     "电流",
     "current ",
@@ -690,7 +690,7 @@ const char language_alarm_A[LANG_MAX][LANG_STR_SIZE] =
     "電流",
 } ;
 
-const char language_alarm_W[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_W[LANG_MAX] = 
 {
     "功率",
     "power ",
@@ -703,7 +703,7 @@ const char language_alarm_W[LANG_MAX][LANG_STR_SIZE] =
     "出力",
 } ;
 
-const char language_alarm_P[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_P[LANG_MAX] = 
 {
     "耗电量",
     "power consumption ",
@@ -716,7 +716,7 @@ const char language_alarm_P[LANG_MAX][LANG_STR_SIZE] =
     "消費電力量",
 } ;
 
-const char language_alarm_Up[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_Up[LANG_MAX] = 
 {
     "超过上限",
     "out of up limit ",
@@ -728,7 +728,7 @@ const char language_alarm_Up[LANG_MAX][LANG_STR_SIZE] =
     "Superare il limite superiore",
     "上限を超える",
 } ;
-const char language_alarm_Down[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_Down[LANG_MAX] = 
 {
     "超过下限",
     "out of down limit ",
@@ -741,7 +741,7 @@ const char language_alarm_Down[LANG_MAX][LANG_STR_SIZE] =
     "下限を超える",
 } ;
 
-const char language_alarm_ctrl_Open[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_ctrl_Open[LANG_MAX] = 
 {
     "开启",
     "OPEN",
@@ -754,7 +754,7 @@ const char language_alarm_ctrl_Open[LANG_MAX][LANG_STR_SIZE] =
     "開く",
 } ;
 
-const char language_alarm_ctrl_Close[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_ctrl_Close[LANG_MAX] = 
 {
     "关闭",
     "CLOSE",
@@ -766,7 +766,7 @@ const char language_alarm_ctrl_Close[LANG_MAX][LANG_STR_SIZE] =
     "Spegnere",
     "閉じる",
 } ;
-const char language_alarm_ctrl_OpenCH[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_ctrl_OpenCH[LANG_MAX] = 
 {
     "开启通道",
     "Open channel  ",
@@ -779,7 +779,7 @@ const char language_alarm_ctrl_OpenCH[LANG_MAX][LANG_STR_SIZE] =
     "チャンネルを開く",
 } ;
 
-const char language_alarm_ctrl_CloseCH[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_ctrl_CloseCH[LANG_MAX] = 
 {
     "关闭通道",
     "Close channel ",
@@ -792,7 +792,7 @@ const char language_alarm_ctrl_CloseCH[LANG_MAX][LANG_STR_SIZE] =
     "チャンネルを閉じる",
 } ;
 
-const char language_alarm_ctrl_Alarm[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_ctrl_Alarm[LANG_MAX] = 
 {
     "仅报警",
     "Alarm only",
@@ -805,7 +805,7 @@ const char language_alarm_ctrl_Alarm[LANG_MAX][LANG_STR_SIZE] =
     "アラームのみ",
 } ;
 
-const char language_alarm_Ctrl_ALL[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_Ctrl_ALL[LANG_MAX] = 
 {
     "所有",
     "all ",
@@ -818,7 +818,7 @@ const char language_alarm_Ctrl_ALL[LANG_MAX][LANG_STR_SIZE] =
     "すべて",
 } ;
 
-const char language_alarm_connect_ERROR[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_connect_ERROR[LANG_MAX] = 
 {
     "连接错误",
     "connect ERROR ",
@@ -830,7 +830,7 @@ const char language_alarm_connect_ERROR[LANG_MAX][LANG_STR_SIZE] =
     "Errore di connessione",
     "接続エラー",
 } ;
-const char language_alarm_Init_Success[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_Init_Success[LANG_MAX] = 
 {
     "初始化成功",
     "INIT SUCCESS ",
@@ -843,7 +843,7 @@ const char language_alarm_Init_Success[LANG_MAX][LANG_STR_SIZE] =
     "初期化成功",
 } ;
 
-const char language_alarm_NULL_ERROR[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_NULL_ERROR[LANG_MAX] = 
 {
     "故障",
     " ERROR! ",
@@ -857,7 +857,7 @@ const char language_alarm_NULL_ERROR[LANG_MAX][LANG_STR_SIZE] =
 } ;
 
 
-const char language_alarm_phase_lose[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_phase_lose[LANG_MAX] = 
 {
     "相位缺失",
     " Phase Loss! ",
@@ -870,7 +870,7 @@ const char language_alarm_phase_lose[LANG_MAX][LANG_STR_SIZE] =
     "位相喪失",
 } ;
 
-const char language_alarm_phaseA_lose[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_phaseA_lose[LANG_MAX] = 
 {
     "相位A缺失",
     " Phase A Loss! ",
@@ -883,7 +883,7 @@ const char language_alarm_phaseA_lose[LANG_MAX][LANG_STR_SIZE] =
     "位相A喪失",
 } ;
 
-const char language_alarm_phaseB_lose[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_phaseB_lose[LANG_MAX] = 
 {
     "相位B缺失",
     " Phase B Loss! ",
@@ -896,7 +896,7 @@ const char language_alarm_phaseB_lose[LANG_MAX][LANG_STR_SIZE] =
     "位相B喪失",
 } ;
 
-const char language_alarm_phaseC_lose[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_phaseC_lose[LANG_MAX] = 
 {
     "相位C缺失",
     " Phase C Loss! ",
@@ -909,7 +909,7 @@ const char language_alarm_phaseC_lose[LANG_MAX][LANG_STR_SIZE] =
     "位相C喪失",
 } ;
 
-const char language_alarm_RS485_master[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_RS485_master[LANG_MAX] = 
 {
     "主机",
     " Master",
@@ -922,7 +922,7 @@ const char language_alarm_RS485_master[LANG_MAX][LANG_STR_SIZE] =
     "ホスト",
 } ;
 
-const char language_alarm_RS485_slave[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_RS485_slave[LANG_MAX] = 
 {
     "从机",
     " Slave",
@@ -935,7 +935,7 @@ const char language_alarm_RS485_slave[LANG_MAX][LANG_STR_SIZE] =
     "スレーブ",
 } ;
 
-const char language_alarm_MAC_changed[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm_MAC_changed[LANG_MAX] = 
 {
     "MAC地址变化",
     "MAC address changed",
@@ -948,7 +948,7 @@ const char language_alarm_MAC_changed[LANG_MAX][LANG_STR_SIZE] =
     "MACアドレス変更",
 } ;
 
-const char language_Role_Super_Admin[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_Role_Super_Admin[LANG_MAX] = 
 {
     "超级管理员",
     " Super Admin",
@@ -961,7 +961,7 @@ const char language_Role_Super_Admin[LANG_MAX][LANG_STR_SIZE] =
     "スーパー管理者",
 } ;
 
-const char language_Role_Admin[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_Role_Admin[LANG_MAX] = 
 {
     "管理员",
     "Administrator",
@@ -974,7 +974,7 @@ const char language_Role_Admin[LANG_MAX][LANG_STR_SIZE] =
     "管理者",
 };
 
-const char language_Role_User[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_Role_User[LANG_MAX] = 
 {
     "用户",
     " User",
@@ -988,7 +988,7 @@ const char language_Role_User[LANG_MAX][LANG_STR_SIZE] =
 } ;
 
 
-const char language_alarm[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_alarm[LANG_MAX] = 
 {
     "报警",
     "Alarm",
@@ -1001,7 +1001,7 @@ const char language_alarm[LANG_MAX][LANG_STR_SIZE] =
     "アラーム",
 } ;
 
-const char language_exceed[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_exceed[LANG_MAX] = 
 {
     "超限",
     "Exceed",
@@ -1015,7 +1015,7 @@ const char language_exceed[LANG_MAX][LANG_STR_SIZE] =
 } ;
 
 
-const char language_sensor_smoke[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_sensor_smoke[LANG_MAX] = 
 {
     "烟雾",
     "Smoke",
@@ -1028,7 +1028,7 @@ const char language_sensor_smoke[LANG_MAX][LANG_STR_SIZE] =
     "煙",
 } ;
 
-const char language_sensor_access[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_sensor_access[LANG_MAX] = 
 {
     "门禁",
     "Access",
@@ -1170,7 +1170,7 @@ const char* language_sensor_name[LANG_MAX][20] =
     },
 };
 
-const char language_Operation_Tips_Success[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_Operation_Success[LANG_MAX] = 
 {
     "操作成功",
     "Operation successful",
@@ -1183,7 +1183,7 @@ const char language_Operation_Tips_Success[LANG_MAX][LANG_STR_SIZE] =
     "操作成功",
 } ;
 
-const char language_Operation_Tips_Failed[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_Operation_Failed[LANG_MAX] = 
 {
     "操作失败",
     "Operation failed",
@@ -1197,7 +1197,7 @@ const char language_Operation_Tips_Failed[LANG_MAX][LANG_STR_SIZE] =
 } ;
 
 
-const char language_upgrade_invalid[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_upgrade_invalid[LANG_MAX] = 
 {
     "无效固件",
     "Invalid firmware",
@@ -1210,7 +1210,7 @@ const char language_upgrade_invalid[LANG_MAX][LANG_STR_SIZE] =
     "無効なファームウェア",
 } ;
 
-const char language_upgrade_busying[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_upgrade_busying[LANG_MAX] = 
 {
     "升级中...",
     "Upgrading...",
@@ -1223,7 +1223,7 @@ const char language_upgrade_busying[LANG_MAX][LANG_STR_SIZE] =
     "アップグレード中…",
 } ;
 
-const char language_upgrade_error[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_upgrade_error[LANG_MAX] = 
 {
     "升级出错",
     "Upgrade error",
@@ -1236,7 +1236,7 @@ const char language_upgrade_error[LANG_MAX][LANG_STR_SIZE] =
     "アップグレードエラー",
 } ;
 
-const char language_sensor_leak[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_sensor_leak[LANG_MAX] = 
 {
     "泄漏",
     "Leak",
@@ -1250,7 +1250,7 @@ const char language_sensor_leak[LANG_MAX][LANG_STR_SIZE] =
 } ;
 
 
-const char language_ctrlboard_upgrade[LANG_MAX][LANG_STR_SIZE] = 
+const char* language_ctrlboard_upgrade[LANG_MAX] = 
 {
     "控制板升级",
     "Control board upgrade",
@@ -1263,3 +1263,32 @@ const char language_ctrlboard_upgrade[LANG_MAX][LANG_STR_SIZE] =
     "ダッシュボードのアップグレード",
 } ;
 
+
+const char* language_login_wrong_param[LANG_MAX]=
+{
+    "用户名或密码不正确",
+    "User name or password is incorrect",
+    "Неверное имя пользователя или пароль",
+    "Nombre de usuario o contraseña incorrecta",
+    "O nome de utilizador ou palavra-passe estão incorrectos",
+    "Benutzername oder Passwort ist falsch",
+    "Nom d'utilisateur ou mot de passe incorrect",
+    "Nome utente o password non corretti",
+    "ユーザー名またはパスワードが正しくありません",
+};
+
+
+const char* language_login_query_failed[LANG_MAX]=
+{
+    "获取用户账户异常",
+    "Abnormal acquisition of user account",
+    "Пользовательский аккаунт получил аномалию",
+    "Acceso anormal a la cuenta de usuario",
+    "Aquisição anormal da conta de utilizador",
+    "Abnormaler Erwerb des Benutzerkontos",
+    "Numéro de compte utilisateur get Anomaly",
+    "Acquisizione anomala dell'account utente",
+    "ユーザーアカウント取得例外",
+};
+
+

+ 90 - 88
pro/src/language_common.h

@@ -4,97 +4,99 @@
 #define LANG_MAX      9
 #define LANG_STR_SIZE 64
 
-extern const char language_root_name[LANG_MAX][LANG_STR_SIZE];
-extern const char language_nick_name[LANG_MAX][LANG_STR_SIZE];
-extern const char language_user_manage[LANG_MAX][LANG_STR_SIZE];
-extern const char language_role_manage[LANG_MAX][LANG_STR_SIZE];
-extern const char language_menu_manage[LANG_MAX][LANG_STR_SIZE];
-extern const char language_power_monitor[LANG_MAX][LANG_STR_SIZE];
-extern const char language_power_sts_monitor[LANG_MAX][LANG_STR_SIZE];
-extern const char language_power_channel_sts_monitor[LANG_MAX][LANG_STR_SIZE];
-extern const char language_power_switch_sts_monitor[LANG_MAX][LANG_STR_SIZE];
-extern const char language_power_history_search[LANG_MAX][LANG_STR_SIZE];
-extern const char language_sensor_monitoring[LANG_MAX][LANG_STR_SIZE];
-extern const char language_sensor_status_monitoring[LANG_MAX][LANG_STR_SIZE];
-extern const char language_sensor_history_search[LANG_MAX][LANG_STR_SIZE];
-extern const char language_Alarm_protection[LANG_MAX][LANG_STR_SIZE];
-extern const char language_Alarm_System[LANG_MAX][LANG_STR_SIZE];
-extern const char language_Alarm_Threshold_rule[LANG_MAX][LANG_STR_SIZE];
-extern const char language_log_information[LANG_MAX][LANG_STR_SIZE];
-extern const char language_log_Alarm[LANG_MAX][LANG_STR_SIZE];
-extern const char language_log_operation[LANG_MAX][LANG_STR_SIZE];
-extern const char language_log_running[LANG_MAX][LANG_STR_SIZE];
-extern const char language_communication_management[LANG_MAX][LANG_STR_SIZE];
-extern const char language_net_install[LANG_MAX][LANG_STR_SIZE];
-extern const char language_RS485_install[LANG_MAX][LANG_STR_SIZE];
-extern const char language_serve_manage[LANG_MAX][LANG_STR_SIZE];
-extern const char language_SMTP_install[LANG_MAX][LANG_STR_SIZE];
-extern const char language_SNMP_install[LANG_MAX][LANG_STR_SIZE];
-extern const char language_SNMP_TRAP_install[LANG_MAX][LANG_STR_SIZE];
-extern const char language_MQTT_iot_install[LANG_MAX][LANG_STR_SIZE];
-extern const char language_NTP_install[LANG_MAX][LANG_STR_SIZE];
-extern const char language_Timing_install[LANG_MAX][LANG_STR_SIZE];
-extern const char language_Sequential_setting[LANG_MAX][LANG_STR_SIZE];
-extern const char language_Group_setting[LANG_MAX][LANG_STR_SIZE];
-extern const char language_maintenance_equipment[LANG_MAX][LANG_STR_SIZE];
-extern const char language_Device_restart[LANG_MAX][LANG_STR_SIZE];
-extern const char language_firmware_upgrade[LANG_MAX][LANG_STR_SIZE];
-extern const char language_ctrlboard_upgrade[LANG_MAX][LANG_STR_SIZE];
-extern const char language_back_factor_upgrade[LANG_MAX][LANG_STR_SIZE];
-extern const char language_Configure_inport_export[LANG_MAX][LANG_STR_SIZE];
-extern const char language_after_sales_service[LANG_MAX][LANG_STR_SIZE];
-extern const char language_about_Equipment[LANG_MAX][LANG_STR_SIZE];
-extern const char language_temperature[LANG_MAX][LANG_STR_SIZE];
-extern const char language_humidity[LANG_MAX][LANG_STR_SIZE];
-extern const char language_atmosphere_gas[LANG_MAX][LANG_STR_SIZE];
-extern const char language_atmosphere_airflow[LANG_MAX][LANG_STR_SIZE];
-extern const char language_atmosphere_pressure[LANG_MAX][LANG_STR_SIZE];
-extern const char language_log_Power[LANG_MAX][LANG_STR_SIZE];
-extern const char language_opera_log_operation[LANG_MAX][LANG_STR_SIZE];
-extern const char language_run_log_running[LANG_MAX][LANG_STR_SIZE];
+extern const char* language_root_name[LANG_MAX];
+extern const char* language_nick_name[LANG_MAX];
+extern const char* language_user_manage[LANG_MAX];
+extern const char* language_role_manage[LANG_MAX];
+extern const char* language_menu_manage[LANG_MAX];
+extern const char* language_power_monitor[LANG_MAX];
+extern const char* language_power_sts_monitor[LANG_MAX];
+extern const char* language_power_channel_sts_monitor[LANG_MAX];
+extern const char* language_power_switch_sts_monitor[LANG_MAX];
+extern const char* language_power_history_search[LANG_MAX];
+extern const char* language_sensor_monitoring[LANG_MAX];
+extern const char* language_sensor_status_monitoring[LANG_MAX];
+extern const char* language_sensor_history_search[LANG_MAX];
+extern const char* language_Alarm_protection[LANG_MAX];
+extern const char* language_Alarm_System[LANG_MAX];
+extern const char* language_Alarm_Threshold_rule[LANG_MAX];
+extern const char* language_log_information[LANG_MAX];
+extern const char* language_log_Alarm[LANG_MAX];
+extern const char* language_log_operation[LANG_MAX];
+extern const char* language_log_running[LANG_MAX];
+extern const char* language_communication_management[LANG_MAX];
+extern const char* language_net_install[LANG_MAX];
+extern const char* language_RS485_install[LANG_MAX];
+extern const char* language_serve_manage[LANG_MAX];
+extern const char* language_SMTP_install[LANG_MAX];
+extern const char* language_SNMP_install[LANG_MAX];
+extern const char* language_SNMP_TRAP_install[LANG_MAX];
+extern const char* language_MQTT_iot_install[LANG_MAX];
+extern const char* language_NTP_install[LANG_MAX];
+extern const char* language_Timing_install[LANG_MAX];
+extern const char* language_Sequential_setting[LANG_MAX];
+extern const char* language_Group_setting[LANG_MAX];
+extern const char* language_maintenance_equipment[LANG_MAX];
+extern const char* language_Device_restart[LANG_MAX];
+extern const char* language_firmware_upgrade[LANG_MAX];
+extern const char* language_ctrlboard_upgrade[LANG_MAX];
+extern const char* language_back_factor_upgrade[LANG_MAX];
+extern const char* language_Configure_inport_export[LANG_MAX];
+extern const char* language_after_sales_service[LANG_MAX];
+extern const char* language_about_Equipment[LANG_MAX];
+extern const char* language_temperature[LANG_MAX];
+extern const char* language_humidity[LANG_MAX];
+extern const char* language_atmosphere_gas[LANG_MAX];
+extern const char* language_atmosphere_airflow[LANG_MAX];
+extern const char* language_atmosphere_pressure[LANG_MAX];
+extern const char* language_log_Power[LANG_MAX];
+extern const char* language_opera_log_operation[LANG_MAX];
+extern const char* language_run_log_running[LANG_MAX];
 //============================================================================
-extern const char language_alarm_Ch[LANG_MAX][LANG_STR_SIZE];
-extern const char language_alarm_V[LANG_MAX][LANG_STR_SIZE];
-extern const char language_alarm_A[LANG_MAX][LANG_STR_SIZE];
-extern const char language_alarm_W[LANG_MAX][LANG_STR_SIZE];
-extern const char language_alarm_P[LANG_MAX][LANG_STR_SIZE];
-extern const char language_alarm_Up[LANG_MAX][LANG_STR_SIZE];
-extern const char language_alarm_Down[LANG_MAX][LANG_STR_SIZE];
-extern const char language_alarm_ctrl_Open[LANG_MAX][LANG_STR_SIZE];
-extern const char language_alarm_ctrl_Close[LANG_MAX][LANG_STR_SIZE];
-extern const char language_alarm_ctrl_OpenCH[LANG_MAX][LANG_STR_SIZE];
-extern const char language_alarm_ctrl_CloseCH[LANG_MAX][LANG_STR_SIZE];
-extern const char language_alarm_ctrl_Alarm[LANG_MAX][LANG_STR_SIZE] ;
-extern const char language_alarm_Ctrl_ALL[LANG_MAX][LANG_STR_SIZE];
-extern const char language_alarm_connect_ERROR[LANG_MAX][LANG_STR_SIZE];
-extern const char language_alarm_Init_Success[LANG_MAX][LANG_STR_SIZE];
-extern const char language_alarm_NULL_ERROR[LANG_MAX][LANG_STR_SIZE];
-extern const char language_alarm_phase_lose[LANG_MAX][LANG_STR_SIZE];
-extern const char language_alarm_phaseA_lose[LANG_MAX][LANG_STR_SIZE] ;
-extern const char language_alarm_phaseB_lose[LANG_MAX][LANG_STR_SIZE] ;
-extern const char language_alarm_phaseC_lose[LANG_MAX][LANG_STR_SIZE] ;
-extern const char language_alarm_RS485_master[LANG_MAX][LANG_STR_SIZE];
-extern const char language_alarm_RS485_slave[LANG_MAX][LANG_STR_SIZE];
-extern const char language_alarm_MAC_changed[LANG_MAX][LANG_STR_SIZE];
+extern const char* language_alarm_Ch[LANG_MAX];
+extern const char* language_alarm_V[LANG_MAX];
+extern const char* language_alarm_A[LANG_MAX];
+extern const char* language_alarm_W[LANG_MAX];
+extern const char* language_alarm_P[LANG_MAX];
+extern const char* language_alarm_Up[LANG_MAX];
+extern const char* language_alarm_Down[LANG_MAX];
+extern const char* language_alarm_ctrl_Open[LANG_MAX];
+extern const char* language_alarm_ctrl_Close[LANG_MAX];
+extern const char* language_alarm_ctrl_OpenCH[LANG_MAX];
+extern const char* language_alarm_ctrl_CloseCH[LANG_MAX];
+extern const char* language_alarm_ctrl_Alarm[LANG_MAX] ;
+extern const char* language_alarm_Ctrl_ALL[LANG_MAX];
+extern const char* language_alarm_connect_ERROR[LANG_MAX];
+extern const char* language_alarm_Init_Success[LANG_MAX];
+extern const char* language_alarm_NULL_ERROR[LANG_MAX];
+extern const char* language_alarm_phase_lose[LANG_MAX];
+extern const char* language_alarm_phaseA_lose[LANG_MAX] ;
+extern const char* language_alarm_phaseB_lose[LANG_MAX] ;
+extern const char* language_alarm_phaseC_lose[LANG_MAX] ;
+extern const char* language_alarm_RS485_master[LANG_MAX];
+extern const char* language_alarm_RS485_slave[LANG_MAX];
+extern const char* language_alarm_MAC_changed[LANG_MAX];
 
-extern const char language_alarm_Type_Power[LANG_MAX][LANG_STR_SIZE] ;
-extern const char language_alarm_Type_Sensor[LANG_MAX][LANG_STR_SIZE] ;
-extern const char language_alarm_Type_Network[LANG_MAX][LANG_STR_SIZE] ;
-extern const char language_alarm[LANG_MAX][LANG_STR_SIZE];
-extern const char language_sensor_leak[LANG_MAX][LANG_STR_SIZE];
+extern const char* language_alarm_Type_Power[LANG_MAX] ;
+extern const char* language_alarm_Type_Sensor[LANG_MAX] ;
+extern const char* language_alarm_Type_Network[LANG_MAX] ;
+extern const char* language_alarm[LANG_MAX];
+extern const char* language_sensor_leak[LANG_MAX];
 
-
-extern const char language_Role_Super_Admin[LANG_MAX][LANG_STR_SIZE];
-extern const char language_Role_Admin[LANG_MAX][LANG_STR_SIZE];
-extern const char language_Role_User[LANG_MAX][LANG_STR_SIZE];
-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_Role_Super_Admin[LANG_MAX];
+extern const char* language_Role_Admin[LANG_MAX];
+extern const char* language_Role_User[LANG_MAX];
+extern const char* language_exceed[LANG_MAX];
+extern const char* language_sensor_smoke[LANG_MAX];
+extern const char* language_sensor_access[LANG_MAX];
 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] ;
-extern const char language_upgrade_invalid[LANG_MAX][LANG_STR_SIZE] ;
-extern const char language_upgrade_busying[LANG_MAX][LANG_STR_SIZE] ;
-extern const char language_upgrade_error[LANG_MAX][LANG_STR_SIZE] ;
+extern const char* language_Operation_Success[LANG_MAX] ;
+extern const char* language_Operation_Failure[LANG_MAX] ;
+extern const char* language_upgrade_invalid[LANG_MAX] ;
+extern const char* language_upgrade_busying[LANG_MAX] ;
+extern const char* language_upgrade_error[LANG_MAX] ;
+
+extern const char* language_login_wrong_param[LANG_MAX];
+extern const char* language_login_query_failed[LANG_MAX];
 
 #endif

+ 3 - 3
pro/src/language_hashmap.c

@@ -39,7 +39,7 @@ HashTable *create_hash_table(int size)
 }  
   
 // 在哈希表中插入键值对  
-int insert_Newhash(HashTable *table, const char *key, const char value[][64],int valuelens) 
+int insert_Newhash(HashTable *table, const char *key, const char **value,int valuelens) 
 {   
     unsigned int index = _hash(table,key);
     
@@ -268,8 +268,8 @@ retry:
     if(r==HASH_REPEAT) goto repeat; else if(r<HASH_REPEAT) goto failed;
 
     //31
-    r = insert_Newhash(table,(const char*)language_alarm_MAC_changed[0], language_alarm_MAC_changed, nMaxSize);
-    if(r==HASH_REPEAT) goto repeat; else if(r<HASH_REPEAT) goto failed;
+    //r = insert_Newhash(table,(const char*)language_alarm_MAC_changed[0], language_alarm_MAC_changed, nMaxSize);
+    //if(r==HASH_REPEAT) goto repeat; else if(r<HASH_REPEAT) goto failed;
 
     r = insert_Newhash(table,(const char*)language_alarm[0], language_alarm_MAC_changed, nMaxSize);
     if(r==HASH_REPEAT) goto repeat; else if(r<HASH_REPEAT) goto failed;

+ 1 - 1
pro/src/language_hashmap.h

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

+ 2 - 2
pro/src/paras.c

@@ -228,11 +228,11 @@ static int proc_prod(dictionary *dic, int op, ProductInfo_t *prod)
     char *token=NULL;
 
     if(op==PARAS_CHECK) {
-        if(prod->language>=4) {
+        if(prod->language>=LANG_ID_MAX) {
             LOGE("___ check product.language %d is wrong\n", prod->language);
             r = -1;
         }
-        if(prod->type>=2) {
+        if(prod->type>=SmartPDU_Tree_AC_One_B) {
             LOGE("___ check product.type %d is wrong\n", prod->type);
             r = -1;
         }

+ 30 - 48
pro/ui/beep.c

@@ -19,10 +19,10 @@
 #define BEEP_OFF_LEVEL          0
 
 static beep_para_t beep_para[BEEP_MODE_MAX]={
-    {50, 100, 10},      //BEEP_MODE_WARN
-    {50, 100, 10},      //BEEP_MODE_ERROR
-    {50, 100, 10},      //BEEP_MODE_EMERG
-    {50, 100, 10},      //BEEP_MODE_FATAL
+    {1000, 1000, 5},        //BEEP_MODE_WARN
+    {500,  500,  10},       //BEEP_MODE_ERROR
+    {200,  200,  25},       //BEEP_MODE_FAULT
+    {50,   50,   -1},       //BEEP_MODE_FATAL
 };
 typedef struct {
     int             io;
@@ -32,35 +32,24 @@ typedef struct {
     int             stop_level;
 }beep_handle_t;
 static beep_handle_t bpHandle={0};
-static uint64_t get_ms(void)
-{
-    struct timeval tv;
-    gettimeofday(&tv, NULL);
-    return (uint64_t)(tv.tv_sec)*1000 + (uint64_t)(tv.tv_usec)/1000;
-}
 
-static void tmr_handler(void *arg, int last)
+static void beep_handler(void *arg, int last)
 {
     beep_handle_t *h=(beep_handle_t*)arg;
     
-    h->cnt++;
-    if(h->cnt%2) {
-        if(h->para.off_ms) {
-            //gpio_set(h->io, BEEP_ON_LEVEL);
-            //timer_setup(h->tmr, h->para.off_ms, 0);
+    if(h->para.on_ms>0 && h->para.off_ms>0) {
+        h->cnt++;
+        if(h->cnt%2) {
+            gpio_set(h->io, BEEP_OFF_LEVEL);
         }
-    }
-    else {
-        if(h->para.on_ms) {
-            //gpio_set(h->io, BEEP_OFF_LEVEL);
-            //timer_setup(h->tmr, h->para.off_ms, 0);
+        else {
+            gpio_set(h->io, BEEP_ON_LEVEL);
         }
     }
-    printf("___cnt: %d, %lld\n", h->cnt, get_ms());
     
     if(last) {
         timer_stop(h->tmr);
-        gpio_set(h->io, h->stop_level);
+        gpio_set(h->io, BEEP_OFF_LEVEL);
     }
 }
 /////////////////////////////////////////////
@@ -71,12 +60,11 @@ int beep_init(void)
     beep_handle_t *h=&bpHandle;
     
     h->io = gpio_init(BEEP_GPIO, GPIO_OUT);
+    h->tmr = timer_init();
     gpio_set(h->io, BEEP_OFF_LEVEL);
     h->tmr = -1;
 
-    //beep_para_t para={1000, 1000, 10};
-    //beep_set_ex(&para);
-
+    //beep_set(BEEP_MODE_FATAL);
     return 0;
 }
 
@@ -86,7 +74,7 @@ int beep_deinit(void)
     beep_handle_t *h=&bpHandle;
     
     gpio_deinit(h->io);
-    timer_stop(h->tmr);
+    timer_deinit(h->tmr);
     h->io = -1;
     h->tmr = -1;
     
@@ -98,48 +86,42 @@ int beep_set(int mode)
 {
     beep_handle_t *h=&bpHandle;
     
-    if(h->tmr!=-1) {
-        timer_stop(h->tmr);
-    }
-    h->cnt = 0;
-    h->para = beep_para[mode];
-    if(h->para.on_ms>0) {
-        h->para.times *=2;
-        h->tmr = timer_start(h->para.on_ms, h->para.off_ms, h->para.times, tmr_handler, h);
-    }
-    
-    return 0;
+    return beep_set_ex(&beep_para[mode]);
 }
 
 
 int beep_set_ex(beep_para_t *para)
 {
+    int r = 0;
     beep_handle_t *h=&bpHandle;
     
-    if(!para) {
+    if(!para || (para->on_ms<=0 && para->off_ms<=0) || para->times==0) {
         return -1;
     }
     
-    if(h->tmr!=-1) {
-        timer_stop(h->tmr);
-    }
-    
     h->cnt = 0;
     h->para = *para;
     if(h->para.on_ms>0) {
-        h->stop_level = BEEP_OFF_LEVEL;
+        gpio_set(h->io, BEEP_ON_LEVEL);
         if(h->para.off_ms>0) {
             h->para.times *= 2;
-            h->tmr = timer_start(h->para.on_ms, h->para.off_ms, h->para.times, tmr_handler, h);
         }
         else {
+            h->para.on_ms *= h->para.times;
             h->para.times = 1;
-            gpio_set(h->io, BEEP_ON_LEVEL);
-            h->tmr = timer_start(h->para.on_ms*para->times, 0, 1, tmr_handler, h);
+        }
+        r = timer_start(h->tmr, h->para.on_ms, h->para.times, beep_handler, h);
+    }
+    else {
+        gpio_set(h->io, BEEP_OFF_LEVEL);
+        if(h->para.off_ms>0) {
+            h->para.off_ms *= h->para.times;
+            h->para.times = 1;
+            r = timer_start(h->tmr, h->para.off_ms, h->para.times, beep_handler, h);
         }
     }
     
-    return 0;
+    return r;
 }
 
 

+ 1 - 2
pro/ui/beep.h

@@ -4,7 +4,7 @@
 enum {
     BEEP_MODE_WARN=0,
     BEEP_MODE_ERROR,
-    BEEP_MODE_EMERG,
+    BEEP_MODE_FAULT,
     BEEP_MODE_FATAL,
     
     BEEP_MODE_MAX,
@@ -18,7 +18,6 @@ typedef struct {
 
 int beep_init(void);
 int beep_deinit(void);
-
 int beep_set(int mode);
 int beep_set_ex(beep_para_t *para);
 

+ 56 - 46
pro/ui/led.c

@@ -25,43 +25,54 @@ static led_info_t led_info[LED_ID_MAX]={
     {LEDR_GPIO, 0, 1},
     {LEDG_GPIO, 0, 1},
 };
-
-
 typedef struct {
     int         io;
-    int         tmr;
     led_para_t  para;
     led_info_t  *info;
     uint32_t    cnt;
-    int         id;
+    int         tmr;
 }led_data_t;
-
 typedef struct {
+    int         tmr;
     led_data_t  data[LED_ID_MAX];
 }led_handle_t;
+
+static led_para_t led_para[LED_MODE_MAX]={
+    {LED_ID_GREEN,  1000,1000, -1, 0},      //LED_MODE_NORMAL
+    {LED_ID_GREEN,  300, 300,  -1, 0},      //LED_MODE_UPGRADING
+    {LED_ID_RED,    1000,1000, 5,  0},      //LED_MODE_WARN,
+    {LED_ID_RED,    500, 500,  10, 0},      //LED_MODE_ERROR,
+    {LED_ID_RED,    200, 200,  25, 0},      //LED_MODE_FAULT
+    {LED_ID_RED,    50,  50,   -1, 0},      //LED_MODE_FATAL
+
+};
 static led_handle_t ledHandle={0};
 
-static void tmr_handler(void *arg, int last)
+static void led_handler(void *arg, int last)
 {
     int level;
     led_data_t *h=(led_data_t*)arg;
     
-    h->cnt++;
-    if(h->cnt%2) {
-        if(h->para.off_ms>0) {
-            gpio_set(h->io, h->info->on_level);
-            timer_setup(h->tmr, h->para.off_ms, 0);
-        }
-    }
-    else {
-        if(h->para.on_ms>0) {
+    if(h->para.on_ms>0 && h->para.off_ms) {
+        h->cnt++;
+        if(h->cnt%2) {
             gpio_set(h->io, h->info->off_level);
-            timer_setup(h->tmr, h->para.on_ms, 0);
+        }
+        else {
+            gpio_set(h->io, h->info->on_level);
         }
     }
     
     if(last) {
         timer_stop(h->tmr);
+        if(h->para.end_on) {
+            gpio_set(h->io, h->info->on_level);
+        }
+        else {
+            gpio_set(h->io, h->info->off_level);
+        }
+
+        led_set(LED_MODE_NORMAL);
     } 
 }
 //////////////////////////////////////////////////
@@ -70,16 +81,16 @@ int led_init(void)
     int i;
     led_handle_t *h=&ledHandle;
     
+    h->tmr = timer_init();
     for(i=0; i<LED_ID_MAX; i++) {
         h->data[i].info = &led_info[i];
+        h->data[i].cnt = 0;
+        h->data[i].tmr = h->tmr;
         h->data[i].io = gpio_init(led_info[i].gpio, GPIO_OUT);
         gpio_set(h->data[i].io, led_info[i].off_level);
-        h->data[i].tmr = -1;
-        h->data[i].cnt = 0;
     }
     
-    //led_para_t para={1000, 1000, 10};
-    //led_set_ex(LED_ID_RED, &para);
+    //led_set(LED_MODE_UPGRADING);
     
     return 0;
 }
@@ -90,12 +101,10 @@ int led_deinit(void)
     int i;
     led_handle_t *h=&ledHandle;
     
+    timer_deinit(h->tmr);
     for(i=0; i<LED_ID_MAX; i++) {
         gpio_deinit(h->data[i].io);
-        timer_stop(h->data[i].tmr);
-        
         h->data[i].io = -1;
-        h->data[i].tmr = -1;
     }
     return 0;
 }
@@ -103,44 +112,45 @@ int led_deinit(void)
 
 int led_set(int mode)
 {
-    return 0;
+    return led_set_ex(&led_para[mode]);
 }
 
 
-int led_set_ex(int led_id, led_para_t *para)
+int led_set_ex(led_para_t *para)
 {
+    int r=0;
     led_handle_t *h=&ledHandle;
     
-    if(!para || para->times==0) {
+    if(!para || (para->on_ms<=0 && para->off_ms<=0) || para->times==0) {
         return -1;
     }
 
-    led_data_t *ld=&h->data[led_id];
-    if(ld->tmr!=-1) {
-        timer_stop(ld->tmr);
-    }
+    led_data_t *ld=&h->data[para->led_id];
     
     ld->cnt = 0;
     ld->para = *para;
-    if(ld->para.on_ms>0 && ld->para.off_ms>0) {
-        ld->para.times *= 2;
+    if(ld->para.on_ms>0) {
+        gpio_set(ld->io, ld->info->on_level);
+        if(ld->para.off_ms>0) {
+            ld->para.times *= 2;
+        }
+        else {
+            ld->para.on_ms *= ld->para.times;
+            ld->para.times = 1;
+        }
+        r = timer_start(h->tmr, ld->para.on_ms, ld->para.times, led_handler, ld);
+    }
+    else {
+        gpio_set(ld->io, ld->info->on_level);
+        if(ld->para.off_ms>0) {
+            ld->para.off_ms *= ld->para.times;
+            ld->para.times = 1;
+            r = timer_start(h->tmr, ld->para.off_ms, ld->para.times, led_handler, ld);
+        }
     }
-    ld->tmr = timer_start(ld->para.on_ms, 0, ld->para.times, tmr_handler, ld);
     
-    return ld->tmr;
+    return r;
 }
 
 
-int led_stop(int h)
-{
-    led_data_t *ld=(led_data_t*)h;
-    
-    if(h==-1) {
-        return -1;
-    }
-    
-    timer_stop(ld->tmr);
-    ld->tmr = -1;
-    return 0;
-}
 

+ 14 - 2
pro/ui/led.h

@@ -9,16 +9,28 @@ enum {
     LED_ID_MAX
 };
 
+enum {
+    LED_MODE_NORMAL=0,
+    LED_MODE_UPGRADING,
+    LED_MODE_WARN,
+    LED_MODE_ERROR,
+    LED_MODE_FAULT,
+    LED_MODE_FATAL,
+    
+    LED_MODE_MAX
+};
+
 typedef struct {
+    int led_id;
     int on_ms;
     int off_ms;
     int times;
+    int end_on;
 }led_para_t;
 
-
 int led_init(void);
 int led_deinit(void);
 int led_set(int mode);
-int led_set_ex(int led_id, led_para_t *para);
+int led_set_ex(led_para_t *para);
 
 #endif

+ 85 - 75
pro/ui/menu.c

@@ -24,26 +24,6 @@
     #define LOGE  printf
 #endif
 
-
-typedef struct {
-    int fd;
-    int tmr;
-    int lang;
-
-    int menu_id;
-    int item_id;
-    int inedit;
-    
-    
-    uint64_t ms;
-    uint16_t uflag;
-    int fliptime;
-}menu_handle_t;
-static int lang_id=LANG_ID_CHINESE;
-//static int lang_id=LANG_ID_ENGLISH;
-static menu_handle_t mnHandle={0};
-
-
 enum {
     MENU_SYSTEM=0,
     MENU_INPUT,
@@ -53,7 +33,6 @@ enum {
 
     MENU_MAX
 };
-
 enum {
     MODBUS_ITEM_ADDR=0,
     MODBUS_ITEM_MODE,
@@ -62,15 +41,38 @@ enum {
 
     MODBUS_ITEM_MAX
 };
-
 enum {
     UFLAG_KEY=(1<<0),
     UFLAG_FLIP=(1<<1),
     UFLAG_TIMER=(1<<2),
 };
 
+typedef struct {
+    int menu_id;
+    int item_id;
+    int item_max;
+}page_data_t;
+typedef struct {
+    int menu_id;
+    int menu_lv;    //level
+    page_data_t page[MENU_MAX];
+}menu_data_t;
+typedef struct {
+    int         fd;
+    int         tmr;
+    int         lang;
+
+    menu_data_t menu;
+    
+    uint64_t    ms;
+    uint16_t    uflag;
+    int         fliptime;
+}menu_handle_t;
+static int lang_id=LANG_ID_CHINESE;
+//static int lang_id=LANG_ID_ENGLISH;
+static menu_handle_t mnHandle={0};
+
 
-#define LEVEL_MAX  3
 static inline GlobalDeviceManager* get_dm(void)
 {
     return &__globalDeviceManage;
@@ -81,7 +83,7 @@ static uint64_t get_ms(void)
     gettimeofday(&tv, NULL);
     return (uint64_t)(tv.tv_sec)*1000 + (uint64_t)(tv.tv_usec)/1000;
 }
-static void tmr_handler(void *arg, int last)
+static void refresh_handler(void *arg, int last)
 {
     menu_handle_t *h=(menu_handle_t*)arg;
     h->uflag |= UFLAG_TIMER;
@@ -95,7 +97,7 @@ static void tmr_start(menu_handle_t *h, int ms)
     if(h->tmr!=-1) {
         timer_stop(h->tmr);
     }
-    h->tmr = timer_start(0, ms, -1, tmr_handler, h);
+    timer_start(h->tmr, ms, -1, refresh_handler, h);
 }
 static void tmr_stop(menu_handle_t *h)
 {
@@ -310,16 +312,16 @@ static int menu_modbus_handle(menu_handle_t *h, ModbusInfo_t *pmb, key_val_t *kv
     switch(kv->key) {
         case KEY_UP:
         {
-            if(h->inedit==1) {
-                if(h->item_id>0) {
-                    h->item_id--;
+            if(h->menu.menu_lv==1) {
+                if(h->menu.page[h->menu.menu_id].item_id>0) {
+                    h->menu.page[h->menu.menu_id].item_id--;
                 }
                 else {
-                    h->item_id = MODBUS_ITEM_QUIT;
+                    h->menu.page[h->menu.menu_id].item_id = MODBUS_ITEM_QUIT;
                 }
             }
             else {
-                if(h->item_id==MODBUS_ITEM_ADDR) {         //addr
+                if(h->menu.page[h->menu.menu_id].item_id==MODBUS_ITEM_ADDR) {         //addr
                     if(pmb->addr<CASCADE_MAX) {
                         pmb->addr++;
                     }
@@ -327,7 +329,7 @@ static int menu_modbus_handle(menu_handle_t *h, ModbusInfo_t *pmb, key_val_t *kv
                         pmb->addr = 1;
                     }
                 }
-                else if(h->item_id==MODBUS_ITEM_MODE) {    //mode
+                else if(h->menu.page[h->menu.menu_id].item_id==MODBUS_ITEM_MODE) {    //mode
                     pmb->mode = !pmb->mode;
                 }
             }
@@ -336,16 +338,16 @@ static int menu_modbus_handle(menu_handle_t *h, ModbusInfo_t *pmb, key_val_t *kv
 
         case KEY_DOWN:
         {
-            if(h->inedit==1) {
-                if(h->item_id<MODBUS_ITEM_QUIT) {
-                    h->item_id++;
+            if(h->menu.menu_lv==1) {
+                if(h->menu.page[h->menu.menu_id].item_id<MODBUS_ITEM_QUIT) {
+                    h->menu.page[h->menu.menu_id].item_id++;
                 }
                 else {
-                    h->item_id = 0;
+                    h->menu.page[h->menu.menu_id].item_id = 0;
                 }
             }
             else {
-                if(h->item_id==MODBUS_ITEM_ADDR) {         //addr
+                if(h->menu.page[h->menu.menu_id].item_id==MODBUS_ITEM_ADDR) {         //addr
                     if(pmb->addr) {
                         pmb->addr--;
                     }
@@ -353,7 +355,7 @@ static int menu_modbus_handle(menu_handle_t *h, ModbusInfo_t *pmb, key_val_t *kv
                         pmb->addr = CASCADE_MAX;
                     }
                 }
-                else if(h->item_id==MODBUS_ITEM_MODE) {    //mode
+                else if(h->menu.page[h->menu.menu_id].item_id==MODBUS_ITEM_MODE) {    //mode
                     pmb->mode = !pmb->mode;
                 }
             }
@@ -362,25 +364,25 @@ static int menu_modbus_handle(menu_handle_t *h, ModbusInfo_t *pmb, key_val_t *kv
 
         case KEY_OK:
         {
-            if(h->inedit==1) {
-                if(h->item_id==MODBUS_ITEM_SAVE || h->item_id==MODBUS_ITEM_QUIT) {         //save
-                    if(h->item_id==MODBUS_ITEM_SAVE) {
+            if(h->menu.menu_lv==1) {
+                if(h->menu.page[h->menu.menu_id].item_id==MODBUS_ITEM_SAVE || h->menu.page[h->menu.menu_id].item_id==MODBUS_ITEM_QUIT) {         //save
+                    if(h->menu.page[h->menu.menu_id].item_id==MODBUS_ITEM_SAVE) {
                         r = cascade_set_modbus(pmb);
                         if(r==0) {
                             r = paras_save();
                         }
                     }
-                    h->inedit = 0;
+                    h->menu.menu_lv = 0;
                     tmr_stop(h);
                 }
                 else {
-                    h->inedit = 2;
+                    h->menu.menu_lv = 2;
                     tmr_start(h, 300);
                 }
             }
             else {
-                if(kv->type==TYPE_LONG) {
-                    h->inedit = 1;
+                if(kv->type==TYPE_SHORT) {
+                    h->menu.menu_lv = 1;
                 }
             }
         }
@@ -399,7 +401,7 @@ static void menu_modbus_paint(menu_handle_t *h, int font1, int font2, int item_h
     static ModbusInfo_t *pmb,mb_cas;
     GlobalDeviceInfo *dev=&dm->_globalDevInfo;
 
-    if(!h->inedit) {
+    if(h->menu.menu_lv) {
         pmb = &mb_cas;
     }
     else {
@@ -413,9 +415,7 @@ static void menu_modbus_paint(menu_handle_t *h, int font1, int font2, int item_h
     
     if(kv->key==-1) {
         flash_cnt++;
-    }    
-    
-    printf("___ inedit: %d, item_id: %d\n", h->inedit, h->item_id);
+    }
 
     lcd_fill(0);
 
@@ -423,8 +423,8 @@ static void menu_modbus_paint(menu_handle_t *h, int font1, int font2, int item_h
     lcd_draw_string(0, 0, LCD_WIDTH, item_h, tmp, font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_CENTER, VERTICAL_CENTER);
 
     font_color = COLOR_WHITE;
-    if(h->inedit && h->item_id==MODBUS_ITEM_ADDR) {
-        if(h->inedit==2) {
+    if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==MODBUS_ITEM_ADDR) {
+        if(h->menu.menu_lv==2) {
             font_color = (flash_cnt%2)?COLOR_WHITE:COLOR_BLACK;
         }
         sprintf(tmp, ">%s:", lang_get_str(h->lang, STR_ID_ADDR));
@@ -437,8 +437,8 @@ static void menu_modbus_paint(menu_handle_t *h, int font1, int font2, int item_h
     lcd_draw_string(LCD_WIDTH/2, item_h, LCD_WIDTH/2, item_h, tmp, font2, font_color, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
 
     font_color = COLOR_WHITE;
-    if(h->inedit && h->item_id==MODBUS_ITEM_MODE) {
-        if(h->inedit==2) {
+    if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==MODBUS_ITEM_MODE) {
+        if(h->menu.menu_lv==2) {
             font_color = (flash_cnt%2)?COLOR_WHITE:COLOR_BLACK;
         }
         sprintf(tmp, ">%s:", lang_get_str(h->lang, STR_ID_MODE));
@@ -451,8 +451,8 @@ static void menu_modbus_paint(menu_handle_t *h, int font1, int font2, int item_h
     lcd_draw_string(LCD_WIDTH/2, item_h*2, LCD_WIDTH/2, item_h, tmp, font2, font_color, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
 
     font_color = COLOR_WHITE;
-    if(h->inedit && h->item_id==MODBUS_ITEM_SAVE) {
-        if(h->inedit==2) {
+    if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==MODBUS_ITEM_SAVE) {
+        if(h->menu.menu_lv==2) {
             font_color = (flash_cnt%2)?COLOR_WHITE:COLOR_BLACK;
         }
         sprintf(tmp, ">%s", lang_get_str(h->lang, STR_ID_SAVE));
@@ -463,8 +463,8 @@ static void menu_modbus_paint(menu_handle_t *h, int font1, int font2, int item_h
     lcd_draw_string(0, item_h*3, LCD_WIDTH/2, item_h, tmp, font2, font_color, COLOR_BLACK, HORIZONTAL_CENTER, VERTICAL_CENTER);
     
     font_color = COLOR_WHITE;
-    if(h->inedit && h->item_id==MODBUS_ITEM_QUIT) {
-        if(h->inedit==2) {
+    if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==MODBUS_ITEM_QUIT) {
+        if(h->menu.menu_lv==2) {
             font_color = (flash_cnt%2)?COLOR_WHITE:COLOR_BLACK;
         }
         sprintf(tmp, ">%s", lang_get_str(h->lang, STR_ID_QUIT));
@@ -480,15 +480,23 @@ static void menu_modbus_paint(menu_handle_t *h, int font1, int font2, int item_h
 
 int menu_init(void)
 {
+    int i;
     menu_handle_t *h=&mnHandle;
     
     memset(h, 0, sizeof(menu_handle_t));
     h->lang = lang_id;
-    h->tmr = -1;
+    h->tmr = timer_init();
     h->ms = get_ms();
     h->uflag = 1;
     h->fliptime = get_dm()->_globalDevInfo.misc.flip_time*1000;
-    
+
+    h->menu.menu_id = 0;
+    h->menu.menu_lv = 0;
+    for(i=0; i<MENU_MAX; i++) {
+        h->menu.page[i].menu_id = i;
+        h->menu.page[i].item_id = 0;
+        h->menu.page[i].item_max = 0;
+    }
     key_init();
     led_init();
     beep_init();
@@ -501,6 +509,8 @@ int menu_deinit(void)
 {
     menu_handle_t *h=&mnHandle;
     
+    timer_deinit(h->tmr);
+
     lcd_deinit();
     key_deinit();
     led_deinit();
@@ -523,7 +533,7 @@ int menu_handle(void)
         case KEY_OK:
         {
             if(kv.type==TYPE_SHORT) {
-                if(h->inedit==0) {
+                if(h->menu.menu_lv==0) {
                     if(lcd_get_angle()==ANGLE_0) {
                         lcd_rotate(ANGLE_180);
                     }
@@ -533,9 +543,9 @@ int menu_handle(void)
                 }
             }
             else {
-                if(h->inedit==0) {
-                    if(h->item_id==MENU_MODBUS) {
-                        h->inedit = 1;
+                if(h->menu.menu_lv==0) {
+                    if(h->menu.menu_id==MENU_MODBUS) {
+                        h->menu.menu_lv = 1;
                     }
                 }
             }
@@ -545,12 +555,12 @@ int menu_handle(void)
 
         case KEY_UP:
         {
-            if(h->inedit==0 && kv.type==TYPE_SHORT) {
-                if(h->menu_id>0) {
-                    h->menu_id--;
+            if(h->menu.menu_lv==0 && kv.type==TYPE_SHORT) {
+                if(h->menu.menu_id>0) {
+                    h->menu.menu_id--;
                 }
                 else {
-                    h->menu_id = MENU_MAX-1;
+                    h->menu.menu_id = MENU_MAX-1;
                 }
             }
             h->uflag = UFLAG_KEY;
@@ -559,12 +569,12 @@ int menu_handle(void)
 
         case KEY_DOWN:
         {
-            if(!h->inedit && kv.type==TYPE_SHORT) {
-                if(h->menu_id<MENU_MAX-1) {
-                    h->menu_id++;
+            if(h->menu.menu_lv==0 && kv.type==TYPE_SHORT) {
+                if(h->menu.menu_id<MENU_MAX-1) {
+                    h->menu.menu_id++;
                 }
                 else {
-                    h->menu_id = 0;
+                    h->menu.menu_id = 0;
                 }
             }
             h->uflag = UFLAG_KEY;
@@ -575,13 +585,13 @@ int menu_handle(void)
         {
 #if 0
             if(h->fliptime>0) {
-                if(h->inedit==0) {
+                if(h->menu.menu_lv==0) {
                     if((get_ms()-h->ms)>=h->fliptime) {
-                        if(h->menu_id<MENU_MAX-1) {
-                            h->menu_id++;
+                        if(h->menu.menu_id<MENU_MAX-1) {
+                            h->menu.menu_id++;
                         }
                         else {
-                            h->menu_id = 0;
+                            h->menu.menu_id = 0;
                         }
                         h->uflag = UFLAG_FLIP;
                         h->ms = get_ms();
@@ -598,7 +608,7 @@ int menu_handle(void)
         return -1;
     }
     
-    switch(h->menu_id) {
+    switch(h->menu.menu_id) {
         case MENU_SYSTEM:
         {
             menu_system_paint(h, font1, font2, item_h);

+ 31 - 18
pro/ui/timer.c

@@ -37,9 +37,9 @@ static int set_time(timer_handle_t *h, int t1, int t2)
     struct itimerspec it;
 
     it.it_value.tv_sec  = t1/1000;                 //��ʱ����ʼ����ʱ��
-    it.it_value.tv_nsec = (t1%1000)*1000;          
+    it.it_value.tv_nsec = (t1%1000)*1000000;          
     it.it_interval.tv_sec  = t2/1000;              //��ʱ�����Ϊ0�룬��ʾֻ����һ��
-    it.it_interval.tv_nsec = (t2%1000)*1000;
+    it.it_interval.tv_nsec = (t2%1000)*1000000;
     r = timer_settime(h->tid, 0, &it, NULL);
     if(r<0) {
         return -1;
@@ -48,7 +48,7 @@ static int set_time(timer_handle_t *h, int t1, int t2)
 }
 
 
-int timer_start(int t1, int t2, int times, timer_fn_t fn, void *arg)
+int timer_init(void)
 {
     int r;
     struct sigevent sev;
@@ -67,21 +67,32 @@ int timer_start(int t1, int t2, int times, timer_fn_t fn, void *arg)
         free(h); return -1;
     }
     h->times = 0;
-    h->times_max = times;
-    h->fn  = fn;
-    h->arg = arg;
+    h->times_max = 0;
+    h->fn  = NULL;
+    h->arg = NULL;
     h->inited = 1;
     
-    r = set_time(h, t1, t2);
-    if(r<0) {
-        timer_delete(h->tid);
-        free(h); return -1;
-    }
     return (int)h;
 }
 
 
-int timer_setup(int h, int t1, int t2)
+int timer_deinit(int h)
+{
+    int r;
+    timer_handle_t *th=(timer_handle_t*)h;
+
+    if(!th || !th->inited) {
+        return -1;
+    }
+    r = timer_delete(th->tid);
+    th->inited = 0;
+    free(th);
+
+    return r;
+}
+
+
+int timer_start(int h, int t, int times, timer_fn_t fn, void *arg)
 {
     int r;
     timer_handle_t *th=(timer_handle_t*)h;
@@ -89,12 +100,17 @@ int timer_setup(int h, int t1, int t2)
     if(!th || !th->inited) {
         return -1;
     }
+    set_time(th, 0, 0);
+
+    th->times = 0;
+    th->times_max = times;
+    th->fn  = fn;
+    th->arg = arg;
     
-    return set_time(th, t1, t2);
+    return set_time(th, 1000, t);
 }
 
 
-
 int timer_stop(int h)
 {
     int r;
@@ -104,10 +120,7 @@ int timer_stop(int h)
         return -1;
     }
     
-    r = timer_delete(th->tid);
-    th->inited = 0;
-    
-    free(th);
+    r = set_time(th, 0, 0);
     return r;
 }
 

+ 4 - 2
pro/ui/timer.h

@@ -4,9 +4,11 @@
 
 typedef void (*timer_fn_t)(void *arg, int last);
 
-int timer_start(int t1, int t2, int times, timer_fn_t fn, void *arg);
+int timer_init(void);
+int timer_deinit(int h);
+
+int timer_start(int h, int t, int times, timer_fn_t fn, void *arg);
 int timer_stop(int h);
-int timer_setup(int h, int t1, int t2);
 
 #endif