DialModelCharge::GetInstance()->UpdatechargeStatus(1);
}
/*开机读取天气历史数据*/
- read_jsonHistory_weather();
+
C_ScheduleDataReadFromFile();
mmi_sleep_mode_switch_read();
}
}
// 切换语言功能
- bool language::ChangeLanguage(uint32_t currentLanguageId)
+ bool language::ChangeLanguage(int32_t currentLanguageId)
{
if (!FontGlobalManager::GetInstance() || !UIFont::GetInstance())
~language();
static language *GetInstance();
bool InitLangues();
- bool ChangeLanguage(uint32_t);
+ bool ChangeLanguage(int32_t);
bool ChangeLanguage(std::string language_code);
bool fileExists(const char *fileName);
};
void SetisFirstTimeStart(bool value);
bool GetisFirstTimeStart(void);
+ void LanguageSwitchViewupdata(uint32_t);
+
+ void set_hint_flag(bool data)
+ {
+ hint_flag=data;
+ }
+
+ bool get_hint_flag()
+ {
+ return hint_flag;
+ }
+
+ int32_t get_hint_code()
+ {
+ return hint_code;
+ }
+
+ void set_hint_code(int32_t data)
+ {
+ hint_code=data;
+ }
+
private:
LanguageSwitchModel();
~LanguageSwitchModel();
const LanguageSwitchModel &operator=(const LanguageSwitchModel &) = delete;
static const uint16_t LANGUAGE_ITEM_MAX = MAX_LANGUAGE; // 语言总数
std::string PreLanguageCode; // 上一次切换的语言
+ bool hint_flag{false};
+ int32_t hint_code{-1};
};
}
UIList *GetLanguageList(void);
void InithintView();
void show_hint_group(std::string code,bool data);
+ void show_hint_group(int32_t code, bool data);
std::string get_hint_id_code()
{
return hint_id_code;
}
+ int32_t get_hint_id()
+ {
+ return hint_id;
+ }
+
UIButton *GetLanguagebutton_cancel(void);
UIButton *button_ensure{nullptr};
UILabel *LanguageSwitchViewhintLabel{nullptr}; // "语言"
std::string hint_id_code;
-
+ int32_t hint_id{-1};
UIScrollView *LanguageSwitchScrollView{nullptr};
UILabelExt *LanguageSwitchViewTitleLabel{nullptr}; // "语言"
UIList *LanguageList{nullptr}; // 语言列表
#include "wearable_log.h"
#include "languagecode/LanguageInit.h"
#include "ConfigModel.h"
+#include "NativeAbility.h"
+#include "languagecode/include/LanguageSwitchView.h"
+#include "AppViewIDs.h"
namespace OHOS
{
return instance;
}
+ void LanguageSwitchModel::LanguageSwitchViewupdata(uint32_t id)
+ {
+ if(is_load_languages(id))
+ {
+ if(LanguageSwitchView::GetInstance())
+ {
+ LanguageSwitchView::GetInstance()->show_hint_group(id,true);
+ }
+ else
+ {
+ set_hint_code(id);
+ set_hint_flag(true);
+ NativeAbility::GetInstance().EnterSlice(VIEW_LANGUAGE_SWITCH);
+ }
+
+ }
+ else
+ {
+ OHOS::language::GetInstance()->ChangeLanguage(id);
+ if(LanguageSwitchView::GetInstance())
+ {
+ NativeAbility::GetInstance().EnterSlice(VIEW_LANGUAGE_SWITCH);
+ }
+
+ }
+ return;
+ }
/*
* @brief: 设置当前语言code
*/
{
uint8_t power_buf[2]={0};
power_buf[0]=3;
- std::string Hint_ID= LanguageSwitchView::GetInstance()->get_hint_id_code();
+ if( LanguageSwitchView::GetInstance()->get_hint_id()!=-1)
+ {
+ int32_t Hint_ID= LanguageSwitchView::GetInstance()->get_hint_id();
+
+ g_planguage->ChangeLanguage(Hint_ID);
+
+ CustomEventPublish(TOPIC_EVENT_DEVICE_BIND,power_buf,2);
+ }
+ else
+ {
+ std::string Hint_ID= LanguageSwitchView::GetInstance()->get_hint_id_code();
- g_planguage->ChangeLanguage(Hint_ID);
+ g_planguage->ChangeLanguage(Hint_ID);
- CustomEventPublish(TOPIC_EVENT_DEVICE_BIND,power_buf,2);
+ CustomEventPublish(TOPIC_EVENT_DEVICE_BIND,power_buf,2);
+ }
+
+
return true;
}
else if(strcmp(view.GetViewId(), "BUTTON_CHECK_NO")==0)
{
-
LanguageSwitchView::GetInstance()->show_hint_group("",false);
-
return true;
}
return;
}
+ void LanguageSwitchView::show_hint_group(int32_t code, bool data)
+ {
+ group->SetVisible(data);
+ RootView::GetInstance()->Invalidate();
+ if (data)
+ {
+ hint_id = code;
+ }
+ return;
+ }
UIButton *LanguageSwitchView::GetLanguagebutton_cancel(void)
{
return button_cancel;
button_cancel->SetOnClickListener(presenter_);
button_ensure->SetOnClickListener(presenter_);
- group->SetVisible(false);
+ if(LanguageSwitchModel::GetInstance().get_hint_flag()==false)
+ {
+ group->SetVisible(false);
+ }
+ else
+ {
+ group->SetVisible(true);
+ LanguageSwitchModel::GetInstance().set_hint_flag(false);
+ }
}
void LanguageSwitchView::OnStart()
RootView::GetInstance()->ClearOnKeyActListener();
FocusManager::GetInstance()->ClearFocus();
ClearAll();
+ LanguageSwitchModel::GetInstance().set_hint_flag(false);
+ LanguageSwitchModel::GetInstance().set_hint_code(-1);
return;
}
}
\ No newline at end of file
uint16_t num=0;
struct Contact Contact_t[20];
};
+
+typedef struct sos_number
+{
+ uint8_t sex;
+ char name[NAME_LEN];
+ char number[NUMBER_LEN];
+}sos_number_t;
+
+extern sos_number_t sos_number_data[3];
+
extern struct addressbook addressbook_t;
void read_addressbook_to_struct(char *buf);
void add_addressbook_by_AT(char *name,char *phone);
+void set_address_number(char *);
+char* get_address_number();
+void SOS_number_save(void);
-void set_address_number(char *);
+void SOS_number_init(void);
-char* get_address_number();
+char* get_sos_number(uint8_t id);
+
+uint8_t get_sos_number_count(void);
+
+uint8_t get_sos_name_and_sex(uint8_t id,char *name);
+
+void sos_number_clean();
+
+bool add_sos_number(uint8_t sex,char *name,char *number);
class phoneaddressbook
{
return address_number;
}
+ #define SOS_NUMBER_PATH "user/userdata/sos_number.bin"
+
+ #define SOS_NUMBER_MAX 3
+
+ sos_number_t sos_number_data[SOS_NUMBER_MAX];
+
+ static uint8_t sos_num = 0;
+
+ void SOS_number_save(void)
+ {
+ FILE *fp=fopen(SOS_NUMBER_PATH,"wb+");
+ if(fp)
+ {
+ for(int i=0;i<sos_num;i++)
+ {
+ // char W_buf[20]={0};
+ // memcpy_s(W_buf,20,sos_dail_buf[i],osal_strlen((const char*)sos_dail_buf[i]));
+ fwrite(&sos_number_data[i],1,sizeof(sos_number_t),fp);
+ }
+ fclose(fp);
+ }
+ }
+
+ void SOS_number_init(void)
+ {
+ FILE *fp=fopen(SOS_NUMBER_PATH,"rb+");
+ if(fp)
+ {
+ int ret=0;
+ int i=0;
+ do
+ {
+ ret=fread(&sos_number_data[i],1,sizeof(sos_number_t),fp);
+ if(ret==sizeof(sos_number_t))
+ {
+ sos_num++;
+ }
+ i++;
+
+ } while (ret==sizeof(sos_number_t));
+
+ fclose(fp);
+ }
+ }
+
+ char* get_sos_number(uint8_t id)
+ {
+ return sos_number_data[id%sos_num].number;
+ }
+
+ uint8_t get_sos_name_and_sex(uint8_t id,char *name)
+ {
+ if(id>sos_num)
+ return 2;
+
+ memcpy_s(name,NAME_LEN,sos_number_data[id].name,osal_strlen(sos_number_data[id].name)+1);
+
+ return sos_number_data[id].sex;
+ }
+
+ void sos_number_clean()
+ {
+ sos_num=0;
+ }
+ bool add_sos_number(uint8_t sex,char *name,char *number)
+ {
+ if(sos_num>=SOS_NUMBER_MAX)
+ {
+ return false;
+ }
+ else
+ {
+ sos_number_data[sos_num].sex=sex;
+ memset(sos_number_data[sos_num].name,0,sizeof(sos_number_data[sos_num].name));
+ memcpy_s(sos_number_data[sos_num].name,NAME_LEN,name,osal_strlen(name)+1);
+
+ memset(sos_number_data[sos_num].number,0,sizeof(sos_number_data[sos_num].number));
+ memcpy_s(sos_number_data[sos_num].number,NUMBER_LEN,number,osal_strlen(number)+1);
+ sos_num++;
+ return true;
+ }
+ }
+
+ uint8_t get_sos_number_count(void)
+ {
+ return sos_num;
+ }
+
+
+
+
phoneaddressbook::phoneaddressbook()
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "phoneaddressbook::phoneaddressbook");
UI_HAND_WATCH_FIRST_PAIRED, //手表已配对:给第一次手表启动用配对成功调用
UI_UPDATE_RECORDPROCESS, //更新录音进度条
UI_UPDATE_PLAYERPROCESS, //处理更新音乐进度条
- UI_UPDATE_GOAL, //更新每日目标
+ UI_UPDATE_GOAL, //更新每日目标
+ UI_UPDATE_LANGUAGE, //更新语言
UI_UPDATE_ALARM_INFO, // set alarm by app
UI_UPDATE_OBU_MESSAGE,
MAX_NUM_HANDLER,
#include "ui_serviceC.h"
+#include "languagecode/include/LanguageSwitchModel.h"
+
extern "C" errcode_t uapi_pm_add_sleep_veto(pm_id_t veto_id);
extern "C" errcode_t uapi_pm_remove_sleep_veto(pm_id_t veto_id);
static void HandleUpdateDialState(Request *request);
static void HandleUpdateAlarmInfo(Request *request);
static void HandleUpdateGoalInfo(Request *request);
+ static void HandleUpdateLanguageInfo(Request *request);
// 消息处理程序项数组(每个消息类型对应一个处理函数,函数名以 Handle 开头)
MsgHandlerEntry msgHandlers[] = {
{UI_UPDATE_RECORDPROCESS, HandleUpdateRecordProcess},
{UI_UPDATE_PLAYERPROCESS, HandleUpdatePlayerProcess},
{UI_UPDATE_GOAL, HandleUpdateGoalInfo},
+ {UI_UPDATE_LANGUAGE, HandleUpdateLanguageInfo},
+
{UI_UPDATE_SLEEP_DATA, HandleUpdateSleep},
{UI_UPDATE_MESSAGE_DATA, HandleUpdateMessage},
{UI_UPDATE_HEARTRATE_DATA, HandleUpdateHeartRate},
std::bind(&OHOS::GoalModel::updata, &OHOS::GoalModel::GetInstance()));
}
+ static void HandleUpdateLanguageInfo(Request *request)
+ {
+ uint32_t id = *((uint32_t *)request->data);
+ GraphicService::GetInstance()->PostGraphicEvent(
+ std::bind(&OHOS::LanguageSwitchModel::LanguageSwitchViewupdata, &OHOS::LanguageSwitchModel::GetInstance(),id));
+ }
+
+
/* -------------------------------------------------------------------------- */
#ifdef __cplusplus
}
#include "ScheduleData.h"
#include "alipay_feature.h"
+
+uint8_t * ble_get_sos_all_data_malloc(uint32_t *len)
+{
+ uint8_t count= OHOS ::get_sos_number_count();
+ if(count==0)
+ return NULL;
+
+ uint8_t *data=(uint8_t *)malloc(1+count*(sizeof(OHOS::sos_number_t)+3));
+ if(data==NULL)
+ {
+ return NULL;
+ }
+ data[0]=count;
+ uint32_t offset=1;
+
+ for(int i=0;i<count;i++)
+ {
+ char name[NAME_LEN]={0};
+ uint8_t sex= OHOS::get_sos_name_and_sex(i,name);
+ char number[NUMBER_LEN]={0};
+ memcpy_s((void *)number,NUMBER_LEN,(void *)OHOS::get_sos_number(i),NUMBER_LEN);
+ data[offset]=sex;
+ offset++;
+ data[offset]=osal_strlen(name);
+ offset++;
+ memcpy_s((void *)&data[offset],NAME_LEN,name,osal_strlen(name));
+ offset+=osal_strlen(name);
+
+ data[offset]=osal_strlen(number);
+ offset++;
+ memcpy_s((void *)&data[offset],NUMBER_LEN,number,osal_strlen(number));
+ offset+=osal_strlen(number);
+
+ printf("sex:%d,name:%d,%s,number:%d,%s\r\n",sex,osal_strlen(name),name,osal_strlen(number),number);
+ }
+ *len=offset;
+
+ return data;
+}
+
+//sos
+void ble_sos_number_clean(void)
+{
+ OHOS::sos_number_clean();
+}
+
+bool ble_add_sos_number(uint8_t sex,char *name,char *number)
+{
+ return OHOS::add_sos_number(sex,name,number);
+}
+
+
#define before_file_day 30
return;
}
+static uint32_t languaage_id=0;
void set_languaage(uint32_t id)
{//OHOS:: language language;
#ifdef FD230
- OHOS::language::GetInstance()->ChangeLanguage(id);
+ languaage_id=id;
+ SendMsgToUIService(UI_UPDATE_LANGUAGE, 0, &languaage_id, sizeof(uint32_t));
#endif
-
}
char *addressbook(void)//获取通讯录保存文件地址路径
void ble_Alipayunbind(void);
+
+///////////////////////////////sos////////////////////////////////////////////
+void ble_sos_number_clean(void);
+
+bool ble_add_sos_number(uint8_t sex,char *name,char *number);
+
+uint8_t* ble_get_sos_all_data_malloc(uint32_t*);
+
#ifdef __cplusplus
#if __cplusplus
}
buf[17 + datalen] = Calculate_CRC_Big((uint8_t *)data, datalen); // 计算CRC\r
}\r
\r
+ printf("data:\r\n");\r
+ \r
+ for(int i=0;i<17 + datalen + 1;i++)\r
+ {\r
+ printf("%x ",buf[i]);\r
+ }\r
+ printf("end\r\n");\r
+\r
// 根据标志位选择发送数据的方式\r
\r
sendDataNow(buf, 17 + datalen + 1); // 判断是否在传输或接收多包数据\r
printf("天气 JSON解析错误\n");\r
return 0;\r
}\r
- int humidity = cJSON_GetObjectItem(now_cjson, "humidity")->valueint;\r
- char * windScale = cJSON_GetObjectItem(now_cjson, "windScale")->valuestring;\r
- char *textNight = cJSON_GetObjectItem(now_cjson, "textNight")->valuestring;\r
- int uvIndex = cJSON_GetObjectItem(now_cjson, "uvIndex")->valueint;\r
- int temp = cJSON_GetObjectItem(now_cjson, "temp")->valueint;\r
- int iconNight = cJSON_GetObjectItem(now_cjson, "iconNight")->valueint;\r
+ int humidity=0;\r
+ char * windScale=NULL;\r
+ char *textNight=NULL;\r
+ int uvIndex=0;\r
+ int temp=0;\r
+ int iconNight=0;\r
\r
+ cJSON *now_data= cJSON_GetObjectItem(now_cjson, "humidity");\r
+ if(now_data)\r
+ {\r
+ humidity=now_data->valueint;\r
+ }\r
+ now_data=cJSON_GetObjectItem(now_cjson, "windScale");\r
+ if(now_data)\r
+ {\r
+ windScale=now_data->valuestring;\r
+ }\r
+ now_data=cJSON_GetObjectItem(now_cjson, "textNight");\r
+ if(now_data)\r
+ {\r
+ textNight=now_data->valuestring;\r
+ }\r
+ now_data= cJSON_GetObjectItem(now_cjson, "uvIndex");\r
+ if(now_data)\r
+ {\r
+ uvIndex=now_data->valueint;\r
+ }\r
+ now_data= cJSON_GetObjectItem(now_cjson, "temp");\r
+ if(now_data)\r
+ {\r
+ temp=now_data->valueint;\r
+ }\r
+ now_data= cJSON_GetObjectItem(now_cjson, "iconNight");\r
+ if(now_data)\r
+ {\r
+ iconNight=now_data->valueint;\r
+ }\r
set_weather_now_data(humidity,windScale,textNight,uvIndex,temp,iconNight);\r
\r
-// "address":\r
-// {"lat":225737664,\r
-// "atm":"1010",\r
-// "city":"深圳",\r
-// "subLocality":"宝安",\r
-// "lon":1138535138},\r
\r
cJSON *address_cjson = cJSON_GetObjectItem(root, "address");\r
- char*city = cJSON_GetObjectItem(address_cjson, "city")->valuestring;\r
- char*subLocality = cJSON_GetObjectItem(address_cjson, "subLocality")->valuestring;\r
- char*atm = cJSON_GetObjectItem(address_cjson, "atm")->valuestring;\r
- int lat = cJSON_GetObjectItem(address_cjson, "lat")->valueint;\r
- int lon = cJSON_GetObjectItem(address_cjson, "lon")->valueint;\r
- set_weather_address_data(lat,atm,city,subLocality,lon);\r
\r
+ char*city=NULL;\r
+ char*subLocality=NULL;\r
+ char*atm=NULL;\r
+ int lat=0;\r
+ int lon=0;\r
+\r
+ cJSON *address_cjson_ = cJSON_GetObjectItem(address_cjson, "city");\r
+ if(address_cjson_)\r
+ {\r
+ city=address_cjson_->valuestring;\r
+ }\r
+ \r
+ \r
+ address_cjson_= cJSON_GetObjectItem(address_cjson, "subLocality");\r
+ if(address_cjson_)\r
+ {\r
+ subLocality=address_cjson_->valuestring;\r
+ } \r
+\r
+ address_cjson_=cJSON_GetObjectItem(address_cjson, "atm");\r
+ if(address_cjson_)\r
+ {\r
+ atm=address_cjson_->valuestring;\r
+ } \r
+ address_cjson_ = cJSON_GetObjectItem(address_cjson, "lat");\r
+ if(address_cjson_)\r
+ {\r
+ lat=address_cjson_->valueint;\r
+ } \r
+\r
+ address_cjson_ = cJSON_GetObjectItem(address_cjson, "lon");\r
+ if(address_cjson_)\r
+ {\r
+ lon=address_cjson_->valueint;\r
+ } \r
+ set_weather_address_data(lat,atm,city,subLocality,lon);\r
cJSON *daily = cJSON_GetObjectItem(root, "daily");\r
+ if(daily==NULL)\r
+ {\r
+ return 0;\r
+ }\r
int count= cJSON_GetArraySize(daily);\r
for(int i=0;i<count;i++)\r
{ \r
//{"tempMin":22,"iconDay":6,"fxDate":1712505600,"textDay":"阵雨","tempMax":29},\r
cJSON *data=cJSON_GetArrayItem(daily,i);\r
- int tempMin=cJSON_GetObjectItem(data,"tempMin")->valueint;\r
- int iconDay=cJSON_GetObjectItem(data,"iconDay")->valueint;\r
- int fxDate=cJSON_GetObjectItem(data,"fxDate")->valueint;\r
- char * textDay=cJSON_GetObjectItem(data,"textDay")->valuestring;\r
- int tempMax=cJSON_GetObjectItem(data,"tempMax")->valueint;\r
\r
+ int tempMin=0;\r
+ int iconDay=0;\r
+ int fxDate=0;\r
+ char * textDay=NULL;\r
+ int tempMax=0;\r
+\r
+\r
+ cJSON *data_=cJSON_GetObjectItem(data,"tempMin");\r
+ if(data_)\r
+ {\r
+ tempMin=data_->valueint;\r
+ }\r
+ \r
+ data_=cJSON_GetObjectItem(data,"iconDay");\r
+ if(data_)\r
+ {\r
+ iconDay=data_->valueint;\r
+ }\r
+ \r
+ cJSON_GetObjectItem(data,"fxDate");\r
+ if(data_)\r
+ {\r
+ fxDate=data_->valueint;\r
+ }\r
+ \r
+ cJSON_GetObjectItem(data,"textDay");\r
+ if(data_)\r
+ {\r
+ textDay=data_->valuestring;\r
+ }\r
+ cJSON_GetObjectItem(data,"tempMax");\r
+ if(data_)\r
+ {\r
+ tempMax=data_->valueint;\r
+ }\r
set_weather_one_data(tempMin,iconDay,fxDate,tempMax,textDay,i);\r
\r
}\r
\r
bool bin_Check_sos(uint8_t *data,uint16_t len)\r
{\r
+ uint8_t SOS_num=data[0];\r
+ uint32_t offset=1;\r
+ char *name=NULL;\r
+ char *number=NULL;\r
+ ble_sos_number_clean();\r
+\r
+ while (SOS_num)\r
+ {\r
+ SOS_num--;\r
+ uint8_t sex=data[offset];\r
+ offset++;\r
+ if(offset>=len)\r
+ break;\r
+ uint8_t name_len=data[offset];\r
+ offset++;\r
+ if(offset>=len)\r
+ break;\r
+ char *name=(char *)malloc(name_len+1);\r
+ if(name==NULL)\r
+ break;\r
+ memset_s(name,255,0,name_len+1);\r
+ memcpy_s(name,255,&data[offset],name_len);\r
+ offset+=name_len;\r
+ if(offset>=len)\r
+ break;\r
+ uint8_t number_len=data[offset];\r
+ offset++;\r
+ if(offset>=len)\r
+ break;\r
+ char *number=(char *)malloc(number_len);\r
+ if(number==NULL)\r
+ break;\r
+ memset_s(number,255,0,number_len+1);\r
+ memcpy_s(number,255,&data[offset],number_len);\r
+ offset+=number_len;\r
+ \r
+ printf("sex:%d,name:%s,number:%s;\r\n",sex,name,number);\r
+\r
+ ble_add_sos_number(sex,name,number);\r
+\r
+ free(number);\r
+ number==NULL;\r
+ free(name);\r
+ name==NULL;\r
+\r
+ if(offset>=len)\r
+ break;\r
+\r
+\r
+ }\r
+ if(number)\r
+ {\r
+ free(number);\r
+ }\r
+ if(name)\r
+ {\r
+ free(name);\r
+ }\r
return true;\r
}\r
\r
if(Check_CRC(data,len,crcvalue))\r
{\r
\r
- \r
if(bin_Check_sos(data,len))\r
{\r
sendBuf[17] = 1;\r
\r
static void GetSOSDataCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totaldata,uint8_t crcvalue)\r
{\r
- ble_data_type type_={0x01,0x36,0,1,1};\r
- send_big_data(type_,NULL,0);\r
+ uint32_t data_len=0;\r
+ uint8_t *bin_data = ble_get_sos_all_data_malloc(&data_len);\r
+ if(bin_data==NULL)\r
+ {\r
+ ble_data_type type_={0x01,0x36,0,1,1};\r
+ send_big_data(type_,NULL,0);\r
+ return;\r
+ }\r
+ uint32_t surplus_len=data_len;\r
+ uint32_t offset=0;\r
+\r
+ uint32_t pack;\r
+ uint16_t pack_size=(ble_nus_max_data_len-18);\r
+ if(pack_size>482)pack_size=482;\r
+\r
+ if(data_len%pack_size==0)\r
+ {\r
+ pack=data_len/pack_size;\r
+ }\r
+ else\r
+ { \r
+ pack=data_len/pack_size+1;\r
+ }\r
+ uint32_t pack_id=1;\r
+ while (surplus_len!=0)\r
+ {\r
+ if(surplus_len>=pack_size)\r
+ {\r
+ surplus_len=surplus_len-pack_size;\r
+\r
+ ble_data_type type_={0x01,0x36,data_len,pack,pack_id};\r
+ send_big_data(type_,(char *)bin_data+offset,pack_size);\r
+ offset+=pack_size;\r
+ }\r
+ else\r
+ {\r
+ \r
+ printf("%d %d %d %d\r\n",data_len,surplus_len,pack_id,pack);\r
+ ble_data_type type_={0x01,0x36,data_len,pack,pack_id};\r
+ send_big_data(type_,(char *)bin_data+offset,surplus_len);\r
+ break;\r
+ }\r
+ pack_id++;\r
+ }\r
+ free(bin_data);\r
+ \r
+ \r
}\r
//AI录音已经就绪\r
static void AiIsReadyCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totaldata,uint8_t crcvalue)\r
addressbookToRead(NULL);
up_report_timer();
+ read_jsonHistory_weather();
+
if ( cm_poweron_cat1_on_bootup_flag() )
{
PRINT("PowerOn Cat1 !\r\n");