mp3文件传输修复
authorhcj <1224667075@qq.com>
Fri, 11 Oct 2024 02:30:36 +0000 (10:30 +0800)
committerhcj <1224667075@qq.com>
Fri, 11 Oct 2024 02:30:36 +0000 (10:30 +0800)
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c

index 431af41..b505a84 100644 (file)
@@ -87,7 +87,7 @@ typedef struct
 //根据特征值分开组合读取的数据,并处理\r
 static ble_read_data handle_l[MAX_HANDLE_NUM]={0};\r
 \r
-errcode_t cancel_recv_file(ble_read_data *buffer_handle);\r
+errcode_t cancel_recv_file(void);\r
 \r
 \r
 uint8_t ble_dial_file_count=0;\r
@@ -3787,7 +3787,7 @@ static void aboutDeviceCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *tota
     bluetooth_get_local_addr(&addr[0],6);\r
     char mac_data[24];\r
     memset(mac_data,0,24);\r
-    sprintf(mac_data,"%x:%x:%x:%x:%x:%x",addr[5],addr[4],addr[3],addr[2],addr[1],addr[0]);\r
+    sprintf(mac_data,"%02X:%02X:%02X:%02X:%02X:%02X",addr[5],addr[4],addr[3],addr[2],addr[1],addr[0]);\r
     cJSON_AddStringToObject(dataJSON, "macAddress",mac_data);\r
 \r
     char *json_format = cJSON_PrintUnformatted(dataJSON);\r
@@ -4127,7 +4127,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(buffer_handle);\r
+        cancel_recv_file();\r
 \r
     }else\r
     {\r
@@ -5896,7 +5896,6 @@ void Send_Sleep_Bin_Data(uint8_t day, uint16_t num)
     {\r
         ble_data_type type_={0x01,0x4b,0,1,1};\r
         send_big_data(type_,NULL,0);\r
-\r
         //send_big_data(1,NULL,0,0,1,1,0x4b,1);\r
         return;\r
     }\r
@@ -6690,28 +6689,27 @@ static void  ble_transfer_Timer_CallBack(int data)
         {\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
+        if(ble_read_timer_p)\r
         {\r
-\r
-            if (ble_read_timer_p->file_recv_stat.file!=NULL)\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
-                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
-\r
-            ble_read_timer_p=NULL;\r
 \r
-            ble_reply_cmd(FILE_RECV_REPLY_STAT_CMD,0);//接收失败\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
@@ -7033,7 +7031,7 @@ errcode_t decode_mp3_json(ble_read_data *buffer_handle)
         }\r
         cJSON_Delete(root);\r
 \r
-        printf("  ota_type= %d, ota_name=%s, ota_size=%d \n",\r
+        printf("  MP3_type= %d, MP3_name=%s, MP3_size=%d \n",\r
             buffer_handle->file_recv_stat.file_type,\r
             buffer_handle->file_recv_stat.file_name,\r
             buffer_handle->file_recv_stat.file_size\r
@@ -7712,7 +7710,7 @@ errcode_t check_header(msg_header_t *header )
 }\r
 \r
 \r
-errcode_t cancel_recv_file(ble_read_data *buffer_handle)\r
+errcode_t cancel_recv_file(void)\r
 {\r
     if(BR_TRANSFER_timer)\r
     {\r
@@ -7722,35 +7720,38 @@ errcode_t cancel_recv_file(ble_read_data *buffer_handle)
         BR_TRANSFER_timer = NULL;\r
     }\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
+    // 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
-        \r
-    ble_read_timer_p->receive_file_flag = 0;\r
-    if (ble_read_timer_p->file_recv_stat.recv_file_stat != 2) //已经下载完毕的文件,没有必要cancel了。\r
+    if(ble_read_timer_p)\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
+        ble_read_timer_p->receive_file_flag = 0;\r
+        if (ble_read_timer_p->file_recv_stat.recv_file_stat != 2) //已经下载完毕的文件,没有必要cancel了。\r
         {\r
-            free(ble_read_timer_p->file_recv_stat.file_name);\r
-            ble_read_timer_p->file_recv_stat.file_name=NULL;\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
-        ble_read_timer_p->file_recv_stat.recv_file_stat = -1;\r
-        ble_read_timer_p=NULL;\r
     }\r
+    \r
     CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
 \r
     return ERRCODE_SUCC;\r
@@ -7814,19 +7815,30 @@ static errcode_t create_mp3_name(char* path,char*dir_path ,char* file_name)
     sprintf_s(path,256,"%s/",dir_path);\r
     uint16_t path_len=strlen(path);\r
 \r
+\r
     if(strstr(file_name,".mp3"))\r
     {\r
+        //"光-陈粒.128.mp3"\r
+        printf("%s\r\n",file_name);\r
         int len=strlen(file_name)-strlen(".mp3");\r
         for(int i=0;i<len;i++)\r
         {\r
+            uint8_t Uintdata=0;\r
             char UintBUF[3]={0};\r
-            sprintf(UintBUF,"%02X",file_name[i]);\r
+            //sprintf(UintBUF,"%02X",file_name[i]);\r
+            memcpy_s((void*)&Uintdata,1,(void*)&file_name[i],1);\r
+            sprintf(UintBUF,"%02X",Uintdata);\r
+            printf("%s\r\n",UintBUF);\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
+    else\r
+    {\r
+        sprintf_s(path,256,"%s/%s",dir_path,file_name);\r
+    }\r
     return ERRCODE_FAIL;\r
     \r
 }\r
@@ -7866,11 +7878,12 @@ errcode_t handle_recv_file(ble_read_data *buffer_handle,uint8_t *data, uint16_t
         {\r
             char musicpath[64]={0};\r
             get_music_path(musicpath,64);\r
+            //"/user/userdata/music"\r
             char filepath[256]={0};\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
+            printf("filepath %s\r\n",filepath);\r
         }\r
         else\r
         {\r
@@ -8274,6 +8287,8 @@ void free_ble_data_Event(void)//以防断开蓝牙没有释放数据类型
     recvBigDataBufState = false;\r
     sendbigDataBufState = false;\r
 \r
+    cancel_recv_file();\r
+\r
     for (int i = 0 ; i < MAX_HANDLE_NUM ; i++)\r
     {\r
         if (handle_l[i].data != NULL)\r