增加手表端文件接收超时判断 501/1 501/head 502/target/1 503/target/1
authorhcj <1224667075@qq.com>
Thu, 11 Jul 2024 06:55:29 +0000 (14:55 +0800)
committerhcj <1224667075@qq.com>
Thu, 11 Jul 2024 06:55:29 +0000 (14:55 +0800)
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c

index 972a7bd..35692e0 100644 (file)
@@ -57,6 +57,8 @@ static bool ANCSBigBufFlag = 0;//ANCS多包数据flag
 static uint16_t data_len = 0;\r
 ble_recv_data_info_t ble_recv_data;\r
 static uint8_t TRANSMIT_DATA;\r
+static osTimerId_t BR_TRANSFER_timer=NULL;\r
+\r
 #if 1\r
 #include "app_msg_manager.h"\r
 #include "app_tx_process.h"\r
@@ -6048,6 +6050,36 @@ errcode_t cancel_recv_file(ble_read_data *buffer_handle)
     return ERRCODE_SUCC;\r
 }\r
 \r
+static uint8_t timer_flie_type=0;\r
+static uint32_t timer_flie_flag=0;\r
+static void  ble_transfer_Timer_CallBack(int data)\r
+{\r
+    timer_flie_flag--;\r
+\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
+        CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+        if(BR_TRANSFER_timer)\r
+        {\r
+            osTimerStop(BR_TRANSFER_timer);\r
+            osTimerDelete(BR_TRANSFER_timer);\r
+            BR_TRANSFER_timer = NULL;\r
+        }\r
+\r
+    }\r
+}\r
 uint8_t OTA_FILE_value=0;\r
 \r
 uint8_t get_OTA_recv_value()\r
@@ -6149,6 +6181,29 @@ errcode_t handle_recv_file(ble_read_data *buffer_handle,uint8_t *data, uint16_t
         }\r
         buffer_handle->file_recv_stat.recv_file_stat = 1;\r
         OTA_FILE_value=0;\r
+        ////////////////创建文件传输超时定时器//////////////////\r
+        uint32_t tick;\r
+        osStatus_t retTimer;\r
+        if(BR_TRANSFER_timer!=NULL)\r
+        {\r
+            osTimerDelete(BR_TRANSFER_timer);\r
+            BR_TRANSFER_timer = NULL;\r
+        }\r
+        timer_flie_type=buffer_handle->file_recv_stat.file_type;\r
+        timer_flie_flag=3;\r
+\r
+        BR_TRANSFER_timer = osTimerNew((osTimerFunc_t)ble_transfer_Timer_CallBack, osTimerPeriodic, NULL, NULL);\r
+        tick =1000;// osMs2Tick(1000);\r
+        retTimer = osTimerStart(BR_TRANSFER_timer, tick);\r
+        if (retTimer != osOK && BR_TRANSFER_timer != NULL) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"StartCallTimer osTimerStart failed, ret = %lx!!", retTimer);\r
+            osTimerDelete(BR_TRANSFER_timer);\r
+            BR_TRANSFER_timer = NULL;\r
+            return ERRCODE_FAIL;\r
+        }\r
+        ///////////////////////////////////////////////////////////\r
+\r
+\r
     }\r
 \r
     if (buffer_handle->file_recv_stat.file == NULL)\r
@@ -6160,6 +6215,8 @@ errcode_t handle_recv_file(ble_read_data *buffer_handle,uint8_t *data, uint16_t
     size_t writtensize = fwrite(data,1,event_size,buffer_handle->file_recv_stat.file);\r
     if(writtensize == event_size)\r
     {\r
+        timer_flie_flag=10;\r
+\r
         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
@@ -6188,6 +6245,13 @@ 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(BR_TRANSFER_timer)\r
+        {\r
+            osTimerStop(BR_TRANSFER_timer);\r
+            osTimerDelete(BR_TRANSFER_timer);\r
+            BR_TRANSFER_timer = NULL;\r
+        }\r
+\r
        \r
         ble_reply_cmd(FILE_RECV_REPLY_STAT_CMD,1);//接收成功\r
     }\r