增加OTA传输中的进度条 249/2 249/head
authorhcj <1224667075@qq.com>
Tue, 11 Jun 2024 01:55:14 +0000 (09:55 +0800)
committerhcj <1224667075@qq.com>
Tue, 11 Jun 2024 01:55:14 +0000 (09:55 +0800)
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h
code/sdk/application/wearable/service/msg_center/src/notify/transmitting.cpp

index e125148..2dbc96b 100644 (file)
@@ -5260,6 +5260,10 @@ errcode_t decode_dial_info(ble_read_data *buffer_handle)
     buffer_handle->file_recv_stat.lrcvalue = 0;\r
     buffer_handle->receive_file_flag = 0;\r
 \r
+     //进入特殊UI\r
+    TRANSMIT_DATA=TRANS_DIAL_TRANSMITTING;\r
+    CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+\r
     free(filename);\r
     return ERRCODE_SUCC;\r
 \r
@@ -5396,6 +5400,11 @@ void decode_file_checksum(ble_read_data *buffer_handle)
             {\r
                 case 1: //ota\r
                     do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_STARTOTA,NULL,0);\r
+                   \r
+                    TRANSMIT_DATA=TRANS_OTA_SUCC;\r
+                    CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+                    \r
+\r
                     break;\r
                 case 2://mp3\r
 \r
@@ -5403,18 +5412,66 @@ void decode_file_checksum(ble_read_data *buffer_handle)
                 case 3://dial\r
                     //TODO: 设置成当前下载的表盘\r
                     if (install_dial() == ERRCODE_SUCC)\r
+                    {\r
+                        \r
+                        TRANSMIT_DATA= TRANS_DIAL_SUCC;\r
+                        CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+\r
                         ble_reply_cmd(DIAL_INSTALL_REPY_CMD,1);\r
+                    }\r
                     else\r
+                    {\r
+                        TRANSMIT_DATA= TRANS_DIAL_FAIL;\r
+                        CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+\r
                         ble_reply_cmd(DIAL_INSTALL_REPY_CMD,0);\r
+\r
+                    }\r
+                        \r
                     break;\r
                 default:\r
                     break;\r
             }\r
         }else{\r
-            ble_reply_cmd(FILE_CHECKSUM_RECV_CMD,2);           \r
+            ble_reply_cmd(FILE_CHECKSUM_RECV_CMD,2);\r
+            switch (buffer_handle->file_recv_stat.file_type)\r
+            {\r
+             case 1: //ota\r
+                    TRANSMIT_DATA=TRANS_OTA_FAIL;\r
+                    CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+                    break;\r
+            case 2://mp3\r
+\r
+                    break;\r
+            case 3://dial\r
+                    TRANSMIT_DATA= TRANS_DIAL_FAIL;\r
+                    CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+                    ble_reply_cmd(DIAL_INSTALL_REPY_CMD,0);   \r
+                    break;\r
+                default:\r
+                    break;\r
+            }\r
+\r
         }\r
     }else{\r
         ble_reply_cmd(FILE_CHECKSUM_RECV_CMD,0);\r
+        switch (buffer_handle->file_recv_stat.file_type)\r
+        {\r
+            case 1: //ota\r
+                TRANSMIT_DATA=TRANS_OTA_FAIL;\r
+                CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+                break;\r
+        case 2://mp3\r
+\r
+                break;\r
+        case 3://dial\r
+                TRANSMIT_DATA= TRANS_DIAL_FAIL;\r
+                CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+                ble_reply_cmd(DIAL_INSTALL_REPY_CMD,0);   \r
+                break;\r
+            default:\r
+                break;\r
+        }\r
     }\r
    \r
 }\r
@@ -5539,6 +5596,18 @@ errcode_t cancel_recv_file(ble_read_data *buffer_handle)
     return ERRCODE_SUCC;\r
 }\r
 \r
+uint8_t OTA_FILE_value=0;\r
+\r
+uint8_t get_OTA_recv_value()\r
+{\r
+    return OTA_FILE_value;\r
+}\r
+\r
+void Set_OTA_recv_value()\r
+{\r
+    OTA_FILE_value=0;\r
+    return;\r
+}\r
 \r
 errcode_t handle_recv_file(ble_read_data *buffer_handle,uint8_t *data, uint16_t event_size)\r
 {\r
@@ -5572,6 +5641,7 @@ errcode_t handle_recv_file(ble_read_data *buffer_handle,uint8_t *data, uint16_t
             return ERRCODE_FAIL;\r
         }\r
         buffer_handle->file_recv_stat.recv_file_stat = 1;\r
+        OTA_FILE_value=0;\r
     }\r
 \r
     if (buffer_handle->file_recv_stat.file == NULL)\r
@@ -5585,6 +5655,7 @@ errcode_t handle_recv_file(ble_read_data *buffer_handle,uint8_t *data, uint16_t
         buffer_handle->file_recv_stat.lrcvalue = calculate_lrc(data,event_size,buffer_handle->file_recv_stat.lrcvalue);\r
                 buffer_handle->file_recv_stat.received_size += event_size;\r
         printf("handle_recv_file received_size %d\n",buffer_handle->file_recv_stat.received_size);\r
+        OTA_FILE_value= ((float) buffer_handle->file_recv_stat.received_size / (float)buffer_handle->file_recv_stat.file_size) *100;\r
 \r
     }else{\r
         printf("handle_recv_file write file failed! ret %d != %d\n",writtensize,event_size);\r
@@ -5608,11 +5679,7 @@ errcode_t handle_recv_file(ble_read_data *buffer_handle,uint8_t *data, uint16_t
         buffer_handle->receive_file_flag = 0;\r
         printf("handle_recv_file received success \n");\r
 \r
-        if (buffer_handle->file_recv_stat.file_type == 1)\r
-        {\r
-            TRANSMIT_DATA=TRANS_OTA_SUCC;\r
-            CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
-        }\r
+       \r
         ble_reply_cmd(FILE_RECV_REPLY_STAT_CMD,1);//接收成功\r
     }\r
 \r
index 3ec0f3c..acae1d0 100644 (file)
@@ -700,8 +700,9 @@ typedef struct
 
 
         
+uint8_t get_OTA_recv_value(void);
 
-
+void Set_OTA_recv_value(void);
 
 void revBleOldData(uint8_t *buf, uint16_t event_size,uint16_t handle);//协议接收client下发的数据接口
 //02类型的指令数据
index 7e943a1..b76cb6d 100644 (file)
@@ -11,6 +11,7 @@
 #include "custom_utils.h"
 #include "components/ui_slider.h"
 // #include "UiConfig.h"
+#include "bleEvent.h"
 
 namespace OHOS
 {
@@ -105,6 +106,7 @@ namespace OHOS
     }
 
    static  osTimerId_t  transmitting_timer= NULL;
+
    void Freetransmitting(void)
     {
        if (UIViewGroup_transmitting != nullptr) 
@@ -131,11 +133,20 @@ namespace OHOS
             delete downImageAnimatorView;
             downImageAnimatorView = nullptr;
         }
-         if(updatasider)
+        if(updatasider)
         {
             delete updatasider;
             updatasider = nullptr;
         }
+        if(transmitting_timer)
+        {
+            osStatus_t  ret = osTimerDelete(transmitting_timer);
+            if (ret != osOK) {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Disatransmitting_timer failed  ret = %lx!", ret);
+                return;
+            }
+            transmitting_timer = nullptr;
+        }
       
       
         RootView::GetInstance()->Remove(UIViewGroup_transmitting);
@@ -144,7 +155,14 @@ namespace OHOS
         }
     }
     static uint8_t timer_falg_low_power=5;
-  
+
+    void OTATimerCallBack(int data)
+    {
+       updatasider->SetValue(get_OTA_recv_value());
+       RootView::GetInstance()->Invalidate();
+    }
+
+    
 
    void creat_down_OTA()
    {
@@ -198,6 +216,20 @@ namespace OHOS
         const char *imagesPath = TRANSMITTING_OTA_DOWN;
         transmitting_img->SetSrc(imagesPath);
         UIViewGroup_transmitting->Add(transmitting_img);
+
+        uint32_t tick;
+        osStatus_t retTimer;
+        
+        Set_OTA_recv_value();
+        transmitting_timer = osTimerNew((osTimerFunc_t)OTATimerCallBack, osTimerPeriodic, NULL, NULL);
+        tick =500;// 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 ;
+        }
     }