修复安装表盘死机问题 1283/1 1283/head
authorhcj <1224667075@qq.com>
Tue, 29 Oct 2024 03:49:30 +0000 (11:49 +0800)
committerhcj <1224667075@qq.com>
Tue, 29 Oct 2024 03:49:30 +0000 (11:49 +0800)
code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c

index 134023b..4be9771 100644 (file)
@@ -947,11 +947,18 @@ void ble_save_dial_custom(msg_recv_custom_dial_info_t *data)
     #endif
 }
 
+void ble_set_dial_by_id_(uint16_t id)
+{
+    #ifdef FD230
+     OHOS::SetDialModel::GetInstance().UpdateDialSetting(id);
+    #endif
+   
+}
 void ble_set_dial_by_id(uint16_t id)
 {
  #ifdef FD230
-    OHOS::SetDialModel::GetInstance().UpdateDialSetting(id);
-    svr_ble_read_data_value_updata_noyify();
+     GraphicService::GetInstance()->PostGraphicEvent(
+                std::bind(ble_set_dial_by_id_ ,id));
 #endif
 }
 
@@ -975,6 +982,8 @@ uint16_t ble_get_dial_id(void)
 #endif
 }
 
+
+
 bool ble_is_dial_install_by_id(uint16_t id)
 {
 #ifdef FD230
@@ -993,6 +1002,13 @@ int ble_get_dial_num(void)
 #endif
 }
 
+void ble_delete_dial_(uint16_t id)
+{
+    #ifdef FD230
+    OHOS::SetDialModel::GetInstance().UninstallDial(id);
+    #endif
+}
+
 bool ble_delete_dial(uint16_t id)
 {
 
@@ -1000,7 +1016,23 @@ bool ble_delete_dial(uint16_t id)
     if(id==OHOS::SetDialModel::GetInstance().GetCurrentDialID())
     return false;
     else
-    return OHOS::SetDialModel::GetInstance().UninstallDial(id);
+    {
+        switch (id) {
+        case OHOS::DEFAULT_DIAL_ID:
+        case OHOS::MAX_DEFAULT_DIAL_ID:
+        case OHOS::DEFAULT_DIAL_ID_0:
+        case OHOS::DEFAULT_DIAL_ID_1:
+        case OHOS::DEFAULT_DIAL_ID_2:
+        case OHOS::DEFAULT_DIAL_ID_3:
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+                        "UninstallDial: Default dial %d cannot be uninstalled", id);
+        return false;
+        }
+        GraphicService::GetInstance()->PostGraphicEvent(
+                std::bind(ble_delete_dial_,id));
+        return true;
+    }
+    
 #else
     return false;
 #endif
@@ -1024,11 +1056,19 @@ bool dial_file_save(void )
 #endif
 }
 
+void install_Register_dial_( char * name,uint16_t id)
+{
+    #ifdef FD230
+    OHOS::SetDialModel::GetInstance().RegisterDial(id,name,0);
+    #endif
+
+}
 void install_Register_dial( char * name,uint16_t id)
 {
-#ifdef FD230
-    return OHOS::SetDialModel::GetInstance().RegisterDial(id,name,0);
-#endif
+    GraphicService::GetInstance()->PostGraphicEvent(
+                std::bind(install_Register_dial_,name ,id));
+    return ;
+
 }
 
 
index 03cec80..32b7862 100644 (file)
@@ -108,6 +108,13 @@ static uint8_t timer_flie_type=0;
 static uint32_t timer_flie_flag=0;\r
 ble_read_data* ble_read_timer_p=NULL;\r
 \r
+#ifdef  SINGLE_USER_PARTITION\r
+#define UP_DATE_FWPKG_PATH    "/user/update/update.fwpkg"  \r
+                    \r
+#else\r
+#define UP_DATE_FWPKG_PATH   "/update/update.fwpkg"\r
+#endif\r
+\r
 \r
 //MP3文件重命名\r
 static errcode_t create_mp3_name(char* path,char*dir_path ,char* file_name)\r
@@ -474,6 +481,62 @@ void send_big_data(ble_data_type type,char *data, uint16 datalen)
 }\r
 \r
 \r
+bool is_free_ota_update(uint32_t size)\r
+{\r
+    uint64_t free_size=0;\r
+    int i;\r
+    struct statfs file_buf = {0};\r
+    FILE *fp=NULL;\r
+    fp=fopen(UP_DATE_FWPKG_PATH,"rb+");\r
+    if(fp)\r
+    {\r
+        fclose(fp);\r
+        remove(UP_DATE_FWPKG_PATH);\r
+    }\r
+\r
+#ifdef SINGLE_USER_PARTITION\r
+    static const char * const g_volume_names[1] = { "/user/"};\r
+        for (i = 0; i < 1; i++) {\r
+#else\r
+    static const char * const g_volume_names[4] = {"/system/", "/update/", "/music/", "/user/"};\r
+        for (i = 0; i < 4; i++) {\r
+#endif\r
+          \r
+            /* 获取文件系统状态 */\r
+            if (statfs(g_volume_names[i], &file_buf) != 0) {\r
+                return false ;\r
+            }\r
+\r
+            #ifdef SINGLE_USER_PARTITION\r
+             if(strcmp("/user/",g_volume_names[i])==0)\r
+            {\r
+                free_size= ((uint64_t)(file_buf.f_bfree * file_buf.f_bsize));\r
+                //  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"free_size :%ld\r\n",free_size);\r
+                  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"free_size :%lu\r\n",free_size);\r
+            }\r
+            int need_size=size*1.5;\r
+            if(need_size>free_size)\r
+            {\r
+                return false;\r
+            }\r
+            else\r
+            {\r
+                  return true;\r
+            }\r
+            #else\r
+            //单分区不考虑是否足够空间\r
+                return true;\r
+            #endif\r
+#ifdef SINGLE_USER_PARTITION\r
+        }\r
+#else\r
+    }\r
+#endif\r
+    return false;\r
+}\r
+\r
+\r
+\r
 //发送训练状态[app发起的运动]\r
 void sendtraningstatedata(uint8_t state ,uint16_t time)\r
 {\r
@@ -3956,7 +4019,7 @@ static void GetSDSpaceCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *total
             {\r
                 free_size= ((uint64_t)(file_buf.f_bfree * file_buf.f_bsize));\r
                 //  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"free_size :%ld\r\n",free_size);\r
-                  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"free_size :%lu\r\n",free_size);\r
+                  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"free_size :%lu\r\n",free_size);\r
             }\r
         }\r
         if(sdFlag == 1)// 1获取失败 2 获取成功 \r
@@ -6851,13 +6914,10 @@ errcode_t decode_ota_data(ble_read_data *buffer_handle,uint8_t *data,uint16_t da
                 buffer_handle->file_recv_stat.lrcvalue = 0;\r
                 if (buffer_handle->file_recv_stat.file_type == 1)\r
                 {\r
-#ifdef  SINGLE_USER_PARTITION\r
-                    buffer_handle->file_recv_stat.file = fopen("/user/update/update.fwpkg","w+");\r
-                      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"create file /user/update/update.fwpkg %X\n",buffer_handle->file_recv_stat.file);\r
-#else\r
-                    buffer_handle->file_recv_stat.file = fopen("/update/update.fwpkg","w+");\r
-                      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"create file /update/update.fwpkg %X\n",buffer_handle->file_recv_stat.file);\r
-#endif\r
+\r
+                    buffer_handle->file_recv_stat.file = fopen(UP_DATE_FWPKG_PATH,"w+");\r
+                    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"create file %s %X\n",UP_DATE_FWPKG_PATH,buffer_handle->file_recv_stat.file);\r
+\r
 \r
                 }\r
                 else if (buffer_handle->file_recv_stat.file_type == 2)\r
@@ -7015,22 +7075,7 @@ errcode_t decode_ota_json(ble_read_data *buffer_handle)
 \r
     uint8_t *data = buffer_handle->data+sizeof(msg_header_t);\r
     uint16_t datalen = buffer_handle->totalDataLen;\r
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"ota_json_file_save %s\n",data);\r
-\r
-    /**\r
-     *  * OTA文件信息格式\r
-     * {\r
-        "type":1, \r
-        //"name":"MT2523_FOTA.bin",\r
-        "size":3894464,\r
-        "major":0,\r
-        "mid":3,\r
-        "minor":2\r
-        "isForced":1\r
-        }\r
-\r
-        {"isForced":0,"size":254208,"minor":1,"type":1,"major":1,"mid":0}\r
-        */\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"ota_json_file_save %s\n",data);\r
 \r
     cJSON* root = cJSON_Parse((const char *)data);\r
     if(root != NULL)\r
@@ -7060,6 +7105,12 @@ errcode_t decode_ota_json(ble_read_data *buffer_handle)
         if(ota_size_json != NULL && cJSON_IsNumber(ota_size_json))\r
         {\r
             buffer_handle->file_recv_stat.file_size = ota_size_json->valueint;\r
+            if(is_free_ota_update(ota_size_json->valueint))\r
+            {\r
+                TRANSMIT_DATA=TRANS_OTA_FAIL;\r
+                CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+                return ERRCODE_FAIL;\r
+            }\r
         }\r
         cJSON* ota_major_json = cJSON_GetObjectItem(root, "major");\r
         if(ota_major_json != NULL && cJSON_IsNumber(ota_major_json))\r
@@ -7112,16 +7163,7 @@ errcode_t decode_mp3_json(ble_read_data *buffer_handle)
 {\r
     uint8_t *data = buffer_handle->data+sizeof(msg_header_t);\r
     uint16_t datalen = buffer_handle->totalDataLen;\r
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"MP3_file_save %s\n",data);\r
-\r
-    /**\r
-        MP3文件信息格式\r
-        {\r
-        "type":2, \r
-        "name":"夜曲.mp3",\r
-        "size":3894464\r
-        }\r
-        */\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"MP3_file_save %s\n",data);\r
 \r
     cJSON* root = cJSON_Parse((const char *)data);\r
     \r
@@ -7229,10 +7271,8 @@ errcode_t decode_dial_info(ble_read_data *buffer_handle)
         custom_dial_info->time_font);\r
 \r
         ble_save_dial_custom(custom_dial_info);\r
-\r
         ble_dial_file_count=*(data+sizeof(msg_recv_custom_dial_info_t));\r
-\r
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," custom_dial file_count %d\r\n",ble_dial_file_count);\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," custom_dial file_count %d\r\n",ble_dial_file_count);\r
         \r
     }\r
     else\r
@@ -7267,10 +7307,6 @@ errcode_t decode_dial_info(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 = 0;\r
-\r
-     //进入特殊UI\r
-   \r
-\r
     \r
     return ERRCODE_SUCC;\r
 \r
@@ -8123,13 +8159,10 @@ errcode_t handle_recv_file(ble_read_data *buffer_handle,uint8_t *data, uint16_t
         buffer_handle->file_recv_stat.lrcvalue = 0;\r
         if (buffer_handle->file_recv_stat.file_type == 1)\r
         {\r
-#ifdef  SINGLE_USER_PARTITION\r
-            buffer_handle->file_recv_stat.file = fopen("/user/update/update.fwpkg","w+");\r
-              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"create file /user/update/update.fwpkg %X\n",buffer_handle->file_recv_stat.file);\r
-#else\r
-            buffer_handle->file_recv_stat.file = fopen("/update/update.fwpkg","w+");\r
-              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"create file /update/update.fwpkg %X\n",buffer_handle->file_recv_stat.file);\r
-#endif\r
+\r
+            buffer_handle->file_recv_stat.file = fopen(UP_DATE_FWPKG_PATH,"w+");\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"create file %s %X\n",UP_DATE_FWPKG_PATH,buffer_handle->file_recv_stat.file);\r
+\r
         }\r
         else if (buffer_handle->file_recv_stat.file_type == 2)\r
         {\r