Merge #1005 into sdk602patch0626 from refs/changes/1005/head 1006/target/2
author胡传军 <1224667075@qq.com>
Tue, 24 Sep 2024 09:00:17 +0000 (09:00 +0000)
committersnickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Tue, 24 Sep 2024 09:00:17 +0000 (09:00 +0000)
Code review from 胡传军

* refs/changes/1005/head: (13 commits squashed)

  - 修复同步实时运动数据存在的BUG

  - 蓝牙文件取消传输修改

  - 电话bug综合修复

  - 电话bug综合修复(补)

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into 0626

  - 修复电话死机问题

  - 修复蓝牙通话死机问题

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into 0626

  - 修复天气json数据异常导致的死机问题,更改sos协议,更改语言切换逻辑

  - 修复天气json数据异常导致的死机问题(补)

  - Mp3文件传输重写

  - 修复自定义表盘ID不能对应问题

  - 修复站立目标设置没生效bug

Signed-off-by: aliyun8003852482 <1224667075@qq.com>
Reviewed-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Merged-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/1005
21 files changed:
code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/fd230app/nativeui/goal/src/goalmodel.cpp
code/sdk/application/wearable/fd230app/nativeui/languagecode/LanguageInit.cpp
code/sdk/application/wearable/fd230app/nativeui/languagecode/LanguageInit.h
code/sdk/application/wearable/fd230app/nativeui/languagecode/include/LanguageSwitchModel.h
code/sdk/application/wearable/fd230app/nativeui/languagecode/include/LanguageSwitchView.h
code/sdk/application/wearable/fd230app/nativeui/languagecode/src/LanguageSwitchModel.cpp
code/sdk/application/wearable/fd230app/nativeui/languagecode/src/LanguageSwitchPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/languagecode/src/LanguageSwitchView.cpp
code/sdk/application/wearable/fd230app/nativeui/phone/include/phoneaddressmodel.h
code/sdk/application/wearable/fd230app/nativeui/phone/src/phoneaddressmodel.cpp
code/sdk/application/wearable/fd230app/nativeui/phoneservice/src/PhoneAudio.cpp
code/sdk/application/wearable/fd230app/nativeui/set_dial/src/SetDialModel.cpp
code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h
code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.h
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c
code/sdk/application/wearable/service/msg_center/include/notify/transmitting.h
code/sdk/application/wearable/service/msg_center/src/notify/transmitting.cpp
code/sdk/drivers/peripheral/utils/custom_utils.c

index 0d0d069..0bdcea9 100644 (file)
@@ -530,7 +530,7 @@ namespace OHOS
                 DialModelCharge::GetInstance()->UpdatechargeStatus(1);
             }
             /*开机读取天气历史数据*/
-            read_jsonHistory_weather();
+          
             C_ScheduleDataReadFromFile();
             mmi_sleep_mode_switch_read();
         }
index 0e9878a..2ec1188 100644 (file)
@@ -116,7 +116,7 @@ namespace OHOS
    char standstr[20];
    char *GoalModel::getstandgoal()
    {
-      int standdata = ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DURATION);
+      int standdata = ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STANDUP_TIMES);
       memset((void *)standstr, 0, 20);
       sprintf_s(standstr, 20, "/%d", standdata);
       return standstr;
index e13c6f5..67e7ca5 100644 (file)
@@ -225,7 +225,7 @@ namespace OHOS
     }
 
     // 切换语言功能
-    bool language::ChangeLanguage(uint32_t currentLanguageId)
+    bool language::ChangeLanguage(int32_t currentLanguageId)
     {
 
         if (!FontGlobalManager::GetInstance() || !UIFont::GetInstance())
index 4b87d47..c64d9e6 100644 (file)
@@ -67,7 +67,7 @@ namespace OHOS
         ~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);
     };
index 9181f0c..7421211 100644 (file)
@@ -26,6 +26,28 @@ namespace OHOS
         
         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();
@@ -33,6 +55,8 @@ namespace OHOS
         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};
     };
 
 }
index 51d15f3..865bce9 100644 (file)
@@ -34,12 +34,18 @@ namespace OHOS
         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);
 
         
@@ -56,7 +62,7 @@ namespace OHOS
         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};                                   // 语言列表
index 72e3b28..3a7085b 100644 (file)
@@ -9,6 +9,9 @@
 #include "wearable_log.h"
 #include "languagecode/LanguageInit.h"
 #include "ConfigModel.h"
+#include "NativeAbility.h"
+#include "languagecode/include/LanguageSwitchView.h"
+#include "AppViewIDs.h"
 namespace OHOS
 {
 
@@ -22,6 +25,33 @@ 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
      */
index f7c0190..7c1274f 100644 (file)
@@ -108,19 +108,30 @@ namespace OHOS
         {
             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;
         }
 
index de74878..b7bb644 100644 (file)
@@ -206,6 +206,16 @@ namespace OHOS
         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;
@@ -281,7 +291,15 @@ namespace OHOS
 
         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()
@@ -329,6 +347,8 @@ namespace OHOS
         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
index d569692..4bdf238 100644 (file)
@@ -34,6 +34,16 @@ struct addressbook
     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);
@@ -52,12 +62,23 @@ void free_address();
 
 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
     {
index 4d317e3..d8bfb9d 100644 (file)
@@ -356,6 +356,97 @@ namespace OHOS
         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");
index 7d8de10..fcc491a 100644 (file)
@@ -15,7 +15,7 @@
 #include "audio_errors.h"
 #include "wearable_log.h"
 #include "audio_manager_c_wrapper.h"
-
+#include "CallerLogModel.h"
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -137,8 +137,12 @@ bool PhoneAudioSetMicMute(bool isMute)
     ret = g_amInstance.SetMicrophoneMute(isMute);
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[PhoneAudioSetMicMute] end! ret = %d", ret);
 
-    AudioStreamOutSetMute(isMute);
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioStreamOutSetMute] end! ret = %d", ret);
+    if(OHOS::CallerLogModel::GetInstance()->GetCallSource() == OHOS::CallerLogModel::CallSourceCat1)
+    {
+        AudioStreamOutSetMute(isMute);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioStreamOutSetMute] end! ret = %d", ret);
+    }
+    
 
     return ret;
 }
index 0f9c730..365c179 100644 (file)
@@ -178,7 +178,12 @@ namespace OHOS
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "currentDialID is %d,name is %s", currentDialID, registeredDials[currentDialID].c_str());
         }
-        return currentDialID;
+        uint16_t id=currentDialID;
+        if(currentDialID<=5)
+        {
+            id--;
+        }
+        return id;
     }
     /* 获取所有表盘Id 每个表盘Id 2个字节 拼接为字符串 */
     int SetDialModel::GetAllDialIDs(char *allidStr)
@@ -202,6 +207,11 @@ namespace OHOS
     /* 判断表盘是否存在*/
     bool SetDialModel::IsDialInstalled(uint16_t ID)
     {
+        if(ID<=4)
+        {
+            ID++;
+        }
+
         if (registeredDials.find(ID) != registeredDials.end())
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dial %d is install!", ID);
@@ -216,6 +226,10 @@ namespace OHOS
     /* 删除表盘 */
     bool SetDialModel::UninstallDial(uint16_t ID)
     {
+        if(ID<=4)
+        {
+            ID++;
+        }
         if (registeredDials.find(ID) != registeredDials.end())
         {
             // 默认表盘不删除[日志提醒]
@@ -255,6 +269,11 @@ namespace OHOS
     /*更新表盘*/
     void SetDialModel::UpdateDialSetting(uint16_t ID)
     {
+        if(ID<=4)
+        {
+            ID++;
+        }
+
         if (registeredDials.find(ID) != registeredDials.end())
         {
             std::string dialname = registeredDials[ID]; // 根据ID找到对应的表盘名称
index 266e0ea..31c4003 100644 (file)
@@ -87,7 +87,8 @@ typedef enum {
     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, 
index 25c158c..0fa8049 100644 (file)
@@ -55,6 +55,8 @@
 
 #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);
 
@@ -132,6 +134,7 @@ extern "C"
     static void HandleUpdateDialState(Request *request);
     static void HandleUpdateAlarmInfo(Request *request);
     static void HandleUpdateGoalInfo(Request *request);
+    static void HandleUpdateLanguageInfo(Request *request);
 
     // 消息处理程序项数组(每个消息类型对应一个处理函数,函数名以 Handle 开头)
     MsgHandlerEntry msgHandlers[] = {
@@ -165,6 +168,8 @@ extern "C"
         {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},
@@ -692,6 +697,14 @@ extern "C"
             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
 }
index 965b740..7fe6914 100644 (file)
@@ -85,6 +85,58 @@ extern "C" {
 #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
 
 
@@ -820,10 +872,6 @@ uint16_t ble_get_dial_id(void)
 
    
    uint16_t id= OHOS::SetDialModel::GetInstance().GetCurrentDialID();
-   if(id<=5)
-   {
-    id--;
-   }
    return id;
 #else
     return 0;
@@ -1683,12 +1731,13 @@ void add_addressbookToRead(char *data)
     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)//获取通讯录保存文件地址路径
index 2b12901..9cf6cdb 100644 (file)
@@ -38,6 +38,10 @@ extern "C"
     TRANS_OTA_TRANSMITTING,
     TRANS_OTA_SUCC,
     TRANS_OTA_FAIL,
+
+    TRANS_MP3_TRANSMITTING,
+    TRANS_MP3_SUCC,
+    TRANS_MP3_FAIL,
     
     TRANS_FREE,
     } transmitting_type;
@@ -364,6 +368,14 @@ bool Ble_Set_ScheduleInfo(uint8_t id,uint32_t timetamp_begin,uint32_t timetamp_e
 
 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
 }
index a8b5323..afa0959 100644 (file)
@@ -390,6 +390,14 @@ void send_big_data(ble_data_type type,char *data, uint16 datalen)
         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
@@ -1565,12 +1573,16 @@ static void SetOtherTarget(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *tota
         uint8_t vibratior = data[6];//振动\r
         uint8_t notify = data[7];//通知\r
 \r
-        set_goal_caloriescount(target_kcal);\r
+        \r
         set_goal_discount(target_km);\r
         set_goal_standupcount(target_stand);\r
         set_goal_durationcount(target_fattime);\r
+\r
+        set_goal_caloriescount(target_kcal);\r
+        \r
         set_SilentMode(ring);\r
         set_vibrationremiander(vibratior);\r
+\r
         set_notify_switch(notify);\r
         sendBuf[17] = 1;\r
         sendBuf[18] = Calculate_CRC(sendBuf,18);\r
@@ -2168,42 +2180,130 @@ uint8_t parse_jsonCheck_weather(uint8_t *buf,uint8_t *check)//json 格式解析
         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_humidity= cJSON_GetObjectItem(now_cjson, "humidity");\r
+    if(now_data_humidity)\r
+    {\r
+        humidity=now_data_humidity->valueint;\r
+    }\r
+    cJSON *now_data_windScale=cJSON_GetObjectItem(now_cjson, "windScale");\r
+    if(now_data_windScale)\r
+    {\r
+        windScale=now_data_windScale->valuestring;\r
+    }\r
+    cJSON *now_data_textNight=cJSON_GetObjectItem(now_cjson, "textNight");\r
+    if(now_data_textNight)\r
+    {\r
+        textNight=now_data_textNight->valuestring;\r
+    }\r
+    cJSON *now_data_uvIndex= cJSON_GetObjectItem(now_cjson, "uvIndex");\r
+    if(now_data_uvIndex)\r
+    {\r
+        uvIndex=now_data_uvIndex->valueint;\r
+    }\r
+    cJSON *now_data_temp= cJSON_GetObjectItem(now_cjson, "temp");\r
+    if(now_data_temp)\r
+    {\r
+        temp=now_data_temp->valueint;\r
+    }\r
+    cJSON *now_data_iconNight= cJSON_GetObjectItem(now_cjson, "iconNight");\r
+    if(now_data_iconNight)\r
+    {\r
+        iconNight=now_data_iconNight->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
+        data_=cJSON_GetObjectItem(data,"fxDate");\r
+        if(data_)\r
+        {\r
+           fxDate=data_->valueint;\r
+        }\r
+        \r
+        data_=cJSON_GetObjectItem(data,"textDay");\r
+        if(data_)\r
+        {\r
+           textDay=data_->valuestring;\r
+        }\r
+        data_=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
@@ -2679,6 +2779,64 @@ void APP_send_schedule_Cmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *tota
 \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
@@ -2699,7 +2857,6 @@ void APP_send_sos_Cmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData
        if(Check_CRC(data,len,crcvalue))\r
        {\r
         \r
-        \r
         if(bin_Check_sos(data,len))\r
         {\r
             sendBuf[17] = 1;\r
@@ -4692,8 +4849,53 @@ static void GetAiRecordCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *tota
 \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
@@ -6525,7 +6727,11 @@ errcode_t decode_mp3_json(ble_read_data *buffer_handle)
         buffer_handle->file_recv_stat.received_size = 0;\r
         buffer_handle->file_recv_stat.lrcvalue = 0;\r
         buffer_handle->receive_file_flag = 1;\r
+        TRANSMIT_DATA=TRANS_MP3_TRANSMITTING;\r
+        CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+\r
         return ERRCODE_SUCC;\r
+\r
     }else{\r
         buffer_handle->receive_file_flag = 0;        \r
         return ERRCODE_FAIL;\r
@@ -6880,7 +7086,9 @@ void decode_file_checksum(ble_read_data *buffer_handle)
 \r
                     break;\r
                 case 2://mp3\r
-\r
+                    TRANSMIT_DATA=TRANS_MP3_SUCC;\r
+                    CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+                    \r
                     ble_reply_cmd(DIAL_INSTALL_REPY_CMD,1);\r
                     ble_mp3_list_update();\r
 \r
@@ -6925,6 +7133,8 @@ void decode_file_checksum(ble_read_data *buffer_handle)
                     CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
                     break;\r
             case 2://mp3\r
+                    TRANSMIT_DATA=TRANS_MP3_FAIL;\r
+                    CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
 \r
                     break;\r
             case 3://dial\r
@@ -6946,6 +7156,9 @@ void decode_file_checksum(ble_read_data *buffer_handle)
                 CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
                 break;\r
         case 2://mp3\r
+                TRANSMIT_DATA=TRANS_MP3_FAIL;\r
+                CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+\r
                 break;\r
         case 3://dial\r
                 TRANSMIT_DATA= TRANS_DIAL_FAIL;\r
@@ -7281,6 +7494,29 @@ static errcode_t check_package_same(uint8_t* lastdata,uint8_t *newdata , uint16_
         return ERRCODE_FAIL;\r
     }\r
 }\r
+//MP3文件重命名\r
+static errcode_t create_mp3_name(char* path,char*dir_path ,char* file_name)\r
+{\r
+\r
+    sprintf_s(path,256,"%s/",dir_path);\r
+    uint16_t path_len=strlen(path);\r
+\r
+    if(strstr(file_name,".mp3"))\r
+    {\r
+        int len=strlen(file_name)-strlen(".mp3");\r
+        for(int i=0;i<len;i++)\r
+        {\r
+            char UintBUF[3]={0};\r
+            sprintf(UintBUF,"%02X",file_name[i]);\r
+            memcpy_s(path+path_len,2,UintBUF,2);\r
+            path_len+=2;\r
+        }\r
+        memcpy_s(path+path_len,strlen(".mp3"),".mp3",strlen(".mp3"));\r
+        return ERRCODE_SUCC;\r
+    }\r
+    return ERRCODE_FAIL;\r
+    \r
+}\r
 errcode_t handle_recv_file(ble_read_data *buffer_handle,uint8_t *data, uint16_t event_size)\r
 {\r
 \r
@@ -7318,7 +7554,8 @@ errcode_t handle_recv_file(ble_read_data *buffer_handle,uint8_t *data, uint16_t
             char musicpath[64]={0};\r
             get_music_path(musicpath,64);\r
             char filepath[256]={0};\r
-            sprintf_s(filepath,256,"%s/%s",musicpath,buffer_handle->file_recv_stat.file_name);\r
+            create_mp3_name(filepath,musicpath,buffer_handle->file_recv_stat.file_name);\r
+\r
             buffer_handle->file_recv_stat.file = fopen(filepath,"w+");\r
             printf("%s\r\n",filepath);\r
         }\r
index ab79ce3..c228a94 100644 (file)
@@ -1,24 +1,12 @@
 #ifndef TRANSMITTING_H
 #define TRANSMITTING_H
 #include "components/ui_image_animator.h" 
+#include "bletest.h"
 
 namespace OHOS
 {
     // UIViewGroup *ChargingStatuShow(void);
     // UIView *view_ = nullptr;
-
-    typedef enum transmitting_type_t {
-    TRANS_DIAL_TRANSMITTING,
-    TRANS_DIAL_SUCC,
-    TRANS_DIAL_FAIL,
-
-    TRANS_OTA_TRANSMITTING,
-    TRANS_OTA_SUCC,
-    TRANS_OTA_FAIL,
-    
-    TRANS_FREE,
-    } transmitting_type_t;
-
     UIViewGroup* transmittingShow(void);
     void set_transmittingShow_falg(uint8_t falg);
     void Freetransmitting(void);
index 1341d74..e614e02 100644 (file)
@@ -427,8 +427,127 @@ namespace OHOS
         UIViewGroup_transmitting->Add(downImageAnimatorView);
     }
 
-    
 
+    void creat_down_MP3()
+    {
+        if (Title == nullptr) {
+        Title = new UILabel();
+        }
+        Title->SetPosition(158, 51);         // widget's left position and top position
+        Title->Resize(800, 88);          // widget's width and height
+        Title->SetViewId("label1");// Set style
+        Title->SetStyle(STYLE_TEXT_FONT, 30);
+
+        // Set additional property
+        Title->SetText("音乐传输中");
+        Title->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+        Title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+        Title->SetRollSpeed(0);
+        Title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+        // Add to rootView
+        UIViewGroup_transmitting->Add(Title);
+        Title->SetVisible(true);
+
+
+         if (label_ == nullptr) {
+        label_ = new UILabel();
+        }
+        label_->SetPosition(60, 281);         // widget's left position and top position
+        label_->Resize(345, 101);          // widget's width and height
+        label_->SetViewId("label2");// Set style
+        label_->SetStyle(STYLE_TEXT_FONT, 30);
+
+        // Set additional property
+        label_->SetText("正在传输音乐,请不要做其他操作或关闭手表");
+        label_->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
+        label_->SetTextColor(Color::GetColorFromRGBA(0xAA, 0xAA, 0xAA, 0xff));
+        label_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+        label_->SetRollSpeed(0);
+        label_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+        // Add to rootView
+        UIViewGroup_transmitting->Add(label_);
+        label_->SetVisible(true);
+
+        CreatetransmittingAnimator();
+        // UIViewGroup_transmitting->Add(updatasider);
+       
+        UIViewGroup_transmitting->Add(downImageAnimatorView);
+    }
+
+    void creat_down_MP3_succ()
+    {
+        if (Title == nullptr) {
+        Title = new UILabel();
+        }
+        Title->SetPosition(173, 51);         // widget's left position and top position
+        Title->Resize(800, 88);          // widget's width and height
+        Title->SetViewId("label1");// Set style
+        Title->SetStyle(STYLE_TEXT_FONT, 30);
+
+        // Set additional property
+        Title->SetText("传输成功");
+        Title->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+        Title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+        Title->SetRollSpeed(0);
+        Title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+        // Add to rootView
+        UIViewGroup_transmitting->Add(Title);
+        Title->SetVisible(true);
+
+
+         if (label_ == nullptr) {
+        label_ = new UILabel();
+        }
+        label_->SetPosition(60, 281);         // widget's left position and top position
+        label_->Resize(345, 101);          // widget's width and height
+        label_->SetViewId("label2");// Set style
+        label_->SetStyle(STYLE_TEXT_FONT, 30);
+
+        // Set additional property
+        label_->SetText("音乐传输成功正在校验,请稍等");
+        label_->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
+        label_->SetTextColor(Color::GetColorFromRGBA(0xAA, 0xAA, 0xAA, 0xff));
+        label_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+        label_->SetRollSpeed(0);
+        label_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+
+        
+        if (transmitting_img == nullptr)
+        {
+            transmitting_img = new UIImageView();
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::KUMILOGOImage new fail!");
+        }
+        transmitting_img->SetPosition(193, 150,80, 80);
+        const char *imagesPath = TRANSMITTING_SUCC_PATH;
+        transmitting_img->SetSrc(imagesPath);
+        UIViewGroup_transmitting->Add(transmitting_img);
+
+        uint32_t tick;
+        osStatus_t retTimer;
+        if(transmitting_timer!=NULL)
+        {
+            osTimerStop(transmitting_timer);
+            osTimerDelete(transmitting_timer);
+            transmitting_timer = NULL;
+        }
+        transmitting_timer = osTimerNew((osTimerFunc_t)dialtimerCallBack, osTimerPeriodic, NULL, NULL);
+        tick =2000;// osMs2Tick(1000);
+        retTimer = osTimerStart(transmitting_timer, tick);
+        if (retTimer != osOK && transmitting_timer != NULL) {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"StartCallTimer osTimerStart failed, ret = %lx!!", retTimer);
+            osTimerDelete(transmitting_timer);
+            transmitting_timer = NULL;
+            return ;
+        }
+
+        // Add to rootView
+        UIViewGroup_transmitting->Add(label_);
+        label_->SetVisible(true);
+    }
 
 
 
@@ -563,6 +682,63 @@ namespace OHOS
 
     }
 
+    void creat_down_MP3_fail()
+    {
+        if (Title == nullptr) {
+        Title = new UILabel();
+        }
+        Title->SetPosition(173, 51);         // widget's left position and top position
+        Title->Resize(800, 88);          // widget's width and height
+        Title->SetViewId("label1");// Set style
+        Title->SetStyle(STYLE_TEXT_FONT, 30);
+
+        // Set additional property
+        Title->SetText("传输失败");
+        Title->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+        Title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+        Title->SetRollSpeed(0);
+        Title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+        // Add to rootView
+        UIViewGroup_transmitting->Add(Title);
+        Title->SetVisible(true);
+
+
+         if (label_ == nullptr) {
+        label_ = new UILabel();
+        }
+        label_->SetPosition(60, 281);         // widget's left position and top position
+        label_->Resize(345, 101);          // widget's width and height
+        label_->SetViewId("label2");// Set style
+        label_->SetStyle(STYLE_TEXT_FONT, 30);
+
+        // Set additional property
+        label_->SetText("音乐传输失败,请退出或重新安装");
+        label_->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
+        label_->SetTextColor(Color::GetColorFromRGBA(0xAA, 0xAA, 0xAA, 0xff));
+        label_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+        label_->SetRollSpeed(0);
+        label_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+
+         
+        if (transmitting_img == nullptr)
+        {
+            transmitting_img = new UIImageView();
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemUpdateView::KUMILOGOImage new fail!");
+        }
+        transmitting_img->SetPosition(193, 150,80, 80);
+        const char *imagesPath = TRANSMITTING_FAIL_PATH;
+        transmitting_img->SetSrc(imagesPath);
+        UIViewGroup_transmitting->Add(transmitting_img);
+
+        // Add to rootView
+        UIViewGroup_transmitting->Add(label_);
+        label_->SetVisible(true);
+
+       
+
+    }
 
 
 
@@ -599,6 +775,16 @@ namespace OHOS
              case TRANS_OTA_FAIL:
                 creat_down_OTA_FAIL();
                 break;
+            case TRANS_MP3_TRANSMITTING:
+                creat_down_MP3();
+                break;
+             case TRANS_MP3_SUCC:
+                creat_down_MP3_succ();
+                break;
+             case TRANS_MP3_FAIL:
+                creat_down_MP3_fail();
+                break;
+            
         default:
             break;
         }
@@ -638,7 +824,7 @@ namespace OHOS
     bool transmittingViewEventListener::OnClick(UIView& view, const ClickEvent& event)
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick");
-        if(Transmitting_falg!=TRANS_DIAL_TRANSMITTING && Transmitting_falg!=TRANS_OTA_TRANSMITTING)
+        if(Transmitting_falg!=TRANS_DIAL_TRANSMITTING && Transmitting_falg!=TRANS_OTA_TRANSMITTING && Transmitting_falg!=TRANS_MP3_TRANSMITTING)
         {
             NotificationManager::GetInstance()->StopNotify();
         }
index c2498e0..2571b93 100644 (file)
@@ -384,6 +384,8 @@ void startup_post_init_task(void)
 
     addressbookToRead(NULL);
     up_report_timer();
+    read_jsonHistory_weather();
+
     if ( cm_poweron_cat1_on_bootup_flag() )
     {
         PRINT("PowerOn Cat1 !\r\n");