优化BLE,传输处理 1291/1
authorhcj <1224667075@qq.com>
Wed, 30 Oct 2024 02:48:11 +0000 (10:48 +0800)
committerhcj <1224667075@qq.com>
Wed, 30 Oct 2024 02:48:11 +0000 (10:48 +0800)
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c

index 06acce9..ace7633 100644 (file)
@@ -88,8 +88,7 @@ typedef struct
 //LITE_OS_SEC_TEXT_MINOR UINT32 LOS_MemInfoGet(VOID *pool, LOS_MEM_POOL_STATUS *poolStatus)\r
 //根据特征值分开组合读取的数据,并处理\r
 static ble_read_data handle_l[MAX_HANDLE_NUM]={0};\r
-\r
-errcode_t cancel_recv_file(void);\r
+errcode_t cancel_recv_file(uint8_t flag);\r
 \r
 \r
 uint8_t ble_dial_file_count=0;\r
@@ -4251,7 +4250,7 @@ static void RemoveFileCmd(ble_read_data *buffer_handle,uint16_t cmd,uint8_t *dat
         value[18] = Calculate_CRC(value,18);\r
         sendBleData(value,19);\r
 \r
-        cancel_recv_file();\r
+        cancel_recv_file(0);\r
 \r
     }else\r
     {\r
@@ -6815,48 +6814,7 @@ static void  ble_transfer_Timer_CallBack(int data)
 \r
     if(timer_flie_flag==0)\r
     {\r
-        if(timer_flie_type==1)\r
-        {\r
-            TRANSMIT_DATA=TRANS_OTA_FAIL;\r
-        }\r
-        else if (timer_flie_type==3)\r
-        {\r
-            TRANSMIT_DATA=TRANS_DIAL_FAIL;\r
-        }\r
-        else\r
-        {\r
-            TRANSMIT_DATA=TRANS_FREE;\r
-        }\r
-        if(ble_read_timer_p)\r
-        {\r
-            ble_read_timer_p->receive_file_flag = 0;\r
-            if (ble_read_timer_p->file_recv_stat.recv_file_stat != 2) //已经下载完毕的文件,没有必要cancel了。\r
-            {\r
-\r
-                if (ble_read_timer_p->file_recv_stat.file!=NULL)\r
-                {\r
-                    fclose(ble_read_timer_p->file_recv_stat.file);\r
-                    ble_read_timer_p->file_recv_stat.file = NULL;\r
-                }\r
-                if (ble_read_timer_p->file_recv_stat.file_name != NULL)\r
-                {\r
-                    free(ble_read_timer_p->file_recv_stat.file_name);\r
-                    ble_read_timer_p->file_recv_stat.file_name=NULL;\r
-                }\r
-                ble_read_timer_p->file_recv_stat.recv_file_stat = -1;\r
-                ble_read_timer_p=NULL;\r
-            }\r
-        }\r
-        ble_reply_cmd(FILE_RECV_REPLY_STAT_CMD,0);//接收失败\r
-        CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
-\r
-        if(BR_TRANSFER_timer)\r
-        {\r
-            osTimerStop(BR_TRANSFER_timer);\r
-            osTimerDelete(BR_TRANSFER_timer);\r
-            BR_TRANSFER_timer = NULL;\r
-        }\r
-\r
+        cancel_recv_file(1);\r
     }\r
 }\r
 uint8_t OTA_FILE_value=0;\r
@@ -6884,13 +6842,13 @@ errcode_t decode_ota_data(ble_read_data *buffer_handle,uint8_t *data,uint16_t da
         //取消文件传输\r
         if(Check_CRC(data_,datalen,crcvalue))\r
         {\r
-            cancel_recv_file();\r
+            cancel_recv_file(0);\r
             uint8_t replydata= 1;\r
             ble_reply_msgarr(6,0x0B,&replydata,1);\r
         }\r
         else\r
         {\r
-             cancel_recv_file();\r
+             cancel_recv_file(0);\r
             uint8_t replydata= 0;\r
             ble_reply_msgarr(6,0x0B,&replydata,1);\r
         }\r
@@ -8027,7 +7985,7 @@ errcode_t check_header(msg_header_t *header )
 }\r
 \r
 \r
-errcode_t cancel_recv_file(void)\r
+errcode_t cancel_recv_file(uint8_t flag)\r
 {\r
     if(BR_TRANSFER_timer)\r
     {\r
@@ -8036,12 +7994,36 @@ errcode_t cancel_recv_file(void)
         osTimerDelete(BR_TRANSFER_timer);\r
         BR_TRANSFER_timer = NULL;\r
     }\r
-    {\r
-        TRANSMIT_DATA=TRANS_FREE;\r
-    }\r
+\r
     if(ble_read_timer_p)\r
     {\r
+        if(flag)\r
+        {\r
+            if(timer_flie_type==1)\r
+            {\r
+                TRANSMIT_DATA=TRANS_OTA_FAIL;\r
+            }\r
+            else if (timer_flie_type==3)\r
+            {\r
+                TRANSMIT_DATA=TRANS_DIAL_FAIL;\r
+            }\r
+            else if(timer_flie_type==2)\r
+            {\r
+                TRANSMIT_DATA=TRANS_MP3_FAIL;\r
+            }\r
+            else\r
+            {\r
+                TRANSMIT_DATA=TRANS_FREE;\r
+            }\r
+            ble_reply_cmd(FILE_RECV_REPLY_STAT_CMD,0);//接收失败\r
+        }\r
+        else\r
+        {\r
+            TRANSMIT_DATA=TRANS_FREE;\r
+        }\r
+\r
         ble_read_timer_p->receive_file_flag = 0;\r
+\r
         if (ble_read_timer_p->file_recv_stat.recv_file_stat != 2) //已经下载完毕的文件,没有必要cancel了。\r
         {\r
             if (ble_read_timer_p->file_recv_stat.file!=NULL)\r
@@ -8060,7 +8042,15 @@ errcode_t cancel_recv_file(void)
                 remove(filepath);\r
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"filepath %s\r\n",filepath);\r
             }\r
-\r
+            else if (ble_read_timer_p->file_recv_stat.file_type == 3)\r
+            {\r
+                char filepath[128]={0};\r
+                if (get_file_recv_file_path(ble_read_timer_p->file_recv_stat.file_name,strlen(ble_read_timer_p->file_recv_stat.file_name),filepath,sizeof(filepath)) == ERRCODE_SUCC)\r
+                {\r
+                    remove(filepath);\r
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"filepath %s\r\n",filepath);\r
+                }\r
+            }\r
 \r
             if (ble_read_timer_p->file_recv_stat.file_name != NULL)\r
             {\r
@@ -8070,9 +8060,10 @@ errcode_t cancel_recv_file(void)
             ble_read_timer_p->file_recv_stat.recv_file_stat = -1;\r
             ble_read_timer_p=NULL;\r
         }\r
+        CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
     }\r
     \r
-    CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+   \r
 \r
     return ERRCODE_SUCC;\r
 }\r
@@ -8582,7 +8573,7 @@ void free_ble_data_Event(void)//以防断开蓝牙没有释放数据类型
     recvBigDataBufState = false;\r
     sendbigDataBufState = false;\r
 \r
-    cancel_recv_file();\r
+    cancel_recv_file(1);\r
 \r
     for (int i = 0 ; i < MAX_HANDLE_NUM ; i++)\r
     {\r