协议bug修复,增加MP3目录获取(解析MP3还有问题)
authorhcj <1224667075@qq.com>
Tue, 2 Jul 2024 09:35:41 +0000 (17:35 +0800)
committerhcj <1224667075@qq.com>
Tue, 2 Jul 2024 09:35:41 +0000 (17:35 +0800)
code/sdk/application/wearable/fd230app/nativeui/phone/src/PhoneDirView.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.h
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c

index 454b38e..5ab5893 100644 (file)
@@ -106,7 +106,7 @@ namespace OHOS
             label1_phone_name = new UILabel();\r
         }\r
         label1_phone_name->SetPosition(173, 53);         // widget's left position and top position\r
-        label1_phone_name->Resize(120, 35);          // widget's width and height\r
+        label1_phone_name->Resize(120, 55);          // widget's width and height\r
         label1_phone_name->SetViewId("label1");// Set style\r
         label1_phone_name->SetStyle(STYLE_TEXT_FONT, 50);\r
 \r
@@ -185,8 +185,8 @@ namespace OHOS
     {\r
         if(strcmp("container_one_page",idstr)==0)\r
         {\r
-            // container_->SetVisible(true);\r
-            // container_one_page->SetVisible(false);\r
+            container_->SetVisible(true);\r
+            container_one_page->SetVisible(false);\r
             return;\r
 \r
         }\r
index db85d49..6f7d3b8 100644 (file)
@@ -82,15 +82,82 @@ void ble_set_ai_Answer_str(char *buf)
 {
     OHOS::AiVoiceModel::GetInstance().SetaiAnswerStrStr(std::string(buf));
 }
-      
+
+// {
+// "type":3, 
+// "list":[
+// {
+// "uid":3758,
+// "name":"plate_3758.bin",
+// "size":129600
+// },
+// {
+// "uid":3759,
+// "name":"plate_3759.bin",
+// "size":129600
+// }
+// ]
+// }
+// 注:MP3文件目录格式
+// {
+// "type":2, 
+// "list": [
+// {
+// "uid":2461,         //指定唯一编号,便于APP发送编号删除文件
+// "name":"夜曲.mp3",
+// "size":3894464,
+// "artist":"周杰伦",
+// "dur":223000                //歌曲时长,单位毫秒
+// },
+// {
+// "uid":2465,         //指定唯一编号,便于APP发送编号删除文件
+// "name":"告白气球.mp3",
+// "size":3894464,
+// "artist":"周杰伦",
+// "dur":223000                //歌曲时长,单位毫秒
+// }
+// ]
+// }
+// Tag_Trailer_t Mp3Trailer;
+
+// void Tag_GetTrailer( FILE *fp)
+// {
+// // Get Header
+//     fseek(fp,-128,SEEK_END);
+//     fread(Mp3Trailer.Header,3,1,fp);
+//     // Get Title
+//     fseek(fp,-125,SEEK_END);
+//     fread(Mp3Trailer.Title,30,1,fp);
+//     // Get Artist
+//     fseek(fp,-95,SEEK_END);
+//     fread(Mp3Trailer.Artist,30,1,fp);
+//     // Get Album
+//     fseek(fp,-65,SEEK_END);
+//     fread(Mp3Trailer.Album,30,1,fp);
+//     // Get Year
+//     fseek(fp,-35,SEEK_END);
+//     fread(Mp3Trailer.Year,4,1,fp);
+//     // Get Comment
+//     fseek(fp,-31,SEEK_END);
+//     fread(Mp3Trailer.Comment,30,1,fp);
+//     // Get Cenre
+//     fseek(fp,-1,SEEK_END);
+//     fread(Mp3Trailer.Cenre,1,1,fp);
+// }
+
+
 
 char * dir_to_json_buf_malloc_(uint8_t type)
 {
     char dir_path[128]={0};
+    type=2;
     switch (type)
     {
-        case 0x43: //同步步数历史数据
-            sprintf_s(dir_path,64,"%s","user/userdata/music");
+        case 2: //
+            sprintf_s(dir_path,64,"%s","user/music");
+            break;
+        case 3: //
+            sprintf_s(dir_path,64,"%s","user/userdata/dial");
             break;
         default:
             break;
@@ -101,6 +168,7 @@ char * dir_to_json_buf_malloc_(uint8_t type)
     struct DIR *dir;
     struct dirent *ent;
     uint32_t file_size=0;
+    uint8_t file_index=1;
     if ((dir = opendir(dir_path)) != NULL)
     {
         while ((ent = readdir(dir)) != NULL)
@@ -114,54 +182,40 @@ char * dir_to_json_buf_malloc_(uint8_t type)
 
                 if (ent->d_type == DT_REG || ent->d_type == DT_UNKNOWN ) // 普通文件
                 {
-                   
-                    //*file_size=ent->d_reclen;
-                    // char file_path[128]={0};
-                    // sprintf_s(file_path,128,"%s/%s",TAR_PATH,ent->d_name);
+                    char file_path[128]={0};
+                    sprintf_s(file_path,128,"%s/%s","user/music",ent->d_name);
                     
-                    // FILE * fp = fopen(file_path,"rb+");
-                    // if(fp==NULL)
-                    // {
-                    //     printf(" fopen fail %s\r\n",file_path);
-                    //     return NULL;
-                    // }
-                    // if (fp != NULL)
-                    // {
-                    //     fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
-                    //     file_size = ftell(fp);       // 获取当前文件指针位置,即文件大小
-                    //     fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
-                    // }
-                    // fclose(fp);
-
-                    // cJSON* itemJSON = cJSON_CreateObject();
-
-                    // cJSON_AddNumberToObject(itemJSON,"index",file_index);
-                    // cJSON_AddNumberToObject(itemJSON,"count",file_count);
-
-                    // cJSON_AddNumberToObject(itemJSON,"crc",crc);
-
-                    // cJSON_AddStringToObject(itemJSON,"name",fileName.c_str());
-                    // cJSON_AddNumberToObject(itemJSON,"size",file_size);
-
-                    // char *json_format = cJSON_PrintUnformatted(itemJSON);
-                 
-                    // int pSize = cJSON_GetArraySize(dataJSON);
-                    // printf("文件数据:%s\r\n",json_format);
-                    // cJSON_Delete(dataJSON);
-                    // file_index++;
+                    FILE * fp = fopen(file_path,"rb+");
+                    if(fp==NULL)
+                    {
+                        printf(" fopen fail %s\r\n",file_path);
+                        return NULL;
+                    }
+                    if (fp != NULL)
+                    {
+                        fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
+                        file_size = ftell(fp);       // 获取当前文件指针位置,即文件大小
+                        fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
+                    }
+                    //Tag_GetTrailer(fp);
 
-                    // return json_format;
+                    fclose(fp);
 
-                    //cJSON_AddItemReferenceToArray(data_arryJSON,itemJSON);
+                    cJSON* itemJSON = cJSON_CreateObject();
+                    cJSON_AddNumberToObject(itemJSON,"uid",file_index);
+                    cJSON_AddStringToObject(itemJSON,"name",fileName.c_str());
+                    cJSON_AddNumberToObject(itemJSON,"size",file_size);
+                    cJSON_AddStringToObject(itemJSON,"artist", "未知");
+                    cJSON_AddStringToObject(itemJSON,"dur", "未知");
+                    cJSON_AddItemReferenceToArray(data_arryJSON,itemJSON);
+                    file_index++;
 
                 }
                 else if (ent->d_type == DT_DIR) // 目录
                 {
                     continue;
                 }
-
             }
-
         }
         closedir(dir);
     }
@@ -169,7 +223,16 @@ char * dir_to_json_buf_malloc_(uint8_t type)
     {
          printf("opendir fail\r\n");
     }
-    return NULL;
+    cJSON_AddNumberToObject(dataJSON,"type",2);
+
+    cJSON_AddItemToObject(dataJSON,"list",data_arryJSON);
+
+    char *json_format = cJSON_PrintUnformatted(dataJSON);
+   
+    int pSize = cJSON_GetArraySize(dataJSON);
+     cJSON_Delete(dataJSON);
+    printf("mp3 :%s\r\n",json_format);
+    return json_format;
 }
 
 
@@ -519,8 +582,8 @@ void ble_get_sleep_remind(msg_get_sleep_param_info_t *data)
     printf("开始时间:%d\r\n",data->bedtime_min);
     
     uint32_t wakettime= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_GET_UP);
-    data->waketime_hour=bedtime>>16;
-    data->waketime_min=bedtime&0x00ff;
+    data->waketime_hour=wakettime>>16;
+    data->waketime_min=wakettime&0x00ff;
     printf("结束时间:%d\r\n",data->waketime_hour);
     printf("结束时间:%d\r\n",data->waketime_min);
        
index af82ebc..e8ca311 100644 (file)
@@ -261,6 +261,23 @@ void ble_set_ai_Question_str(char *buf);
 
 void ble_set_ai_Answer_str(char *buf);
 
+/////////////////////////////MP3相关/////////////////////////
+
+typedef struct Tag_Trailer
+{
+char Header[3];
+char Title[30];
+char Artist[30];
+char Album[30];
+char Year[4];
+char Comment[30];
+char Cenre[1];
+}Tag_Trailer_t;
+
+char * dir_to_json_buf_malloc_(uint8_t type);
+
+char * dir_to_json_buf_malloc_(uint8_t type);
+
 #ifdef __cplusplus
 #if __cplusplus
 }
index f91965c..4139825 100644 (file)
@@ -2143,6 +2143,9 @@ void GetWeatherCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,ui
     // printf("GetWeatherCmd:len:%d data:%s\r\n",len,data);\r
        if(Check_CRC(data,len,crcvalue))\r
        {\r
+        // uint32_t y=(0xff00);\r
+        // uint32_t x =(0xff00& 0Xff00)>>16;\r
+        // printf("GetWeatherCmd %u\r\n",x);\r
         uint8_t check = 1;\r
         jsonCheck_weather(data,&check);\r
         sendBuf[17] = check;\r
@@ -3997,8 +4000,8 @@ static void GetAiRecordCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *tota
         FILE *fp=fopen(file_name,"rb+");\r
         \r
         printf("GetAiRecordCmd size %d\r\n",file_size);\r
-        uint16_t pack=file_size/num+1;\r
-        uint8_t pack_id=1;\r
+        uint32_t pack=file_size/num+1;\r
+        uint32_t pack_id=1;\r
         if(fp==NULL)\r
         {\r
             printf("fopen fail %s\r\n",file_name);\r
@@ -4012,7 +4015,7 @@ static void GetAiRecordCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *tota
             \r
             send_big_data(1,data,read_size,file_size,pack_id,pack,0x34,1);\r
             pack_id++;\r
-            msleep(20);\r
+            msleep(10);\r
 \r
         } while (read_size==num);\r
         free(data);\r
@@ -4239,7 +4242,7 @@ static void Send_json_Data_Cmd(uint8_t day,uint16_t pack_size,uint8_t id)
                 json_format=struct_to_json_buf_malloc_Alarm();\r
                 break;\r
             case 0x21:\r
-                json_format=NULL;\r
+                json_format=dir_to_json_buf_malloc_(day);\r
                 break;\r
 \r
             default:\r
@@ -4566,9 +4569,6 @@ void type2AE3Data(ble_read_data *buffer_handle,uint8_t *cmd_buf ,uint8_t *data,u
         case REVOKE_CURR_FILE_TRANS_CMD://撤销文件传输\r
             RemoveFileCmd(buffer_handle,cmd,data,datalen,totaldata,crcvalue);\r
             break;\r
-        case GET_SPECIF_TYPE_FILE_CMD://获取指定类型文件目录 \r
-            GetFileTypeCmd(data,datalen); //\r
-            break;\r
         case DELETE_SPECIF_TYPE_FILE_CMD://删除指定类型的所有文件\r
             DeleteFileTypeCmd(cmd,data,datalen,totaldata,crcvalue);\r
             break;\r
@@ -4666,6 +4666,7 @@ void type2AE3Data(ble_read_data *buffer_handle,uint8_t *cmd_buf ,uint8_t *data,u
         case APP_GET_AI_PCM_DATA_CMD:\r
             GetAiRecordCmd(cmd,data,datalen,totaldata,crcvalue);\r
             break;\r
+        case GET_SPECIF_TYPE_FILE_CMD://获取指定类型文件目录 \r
         case AI_IS_READ_DATA_CMD:\r
         case SYN_HEART_HISTORY_DATA_CMD://同步心率历史数据\r
             //heartDataCmd(cmd,data,datalen,totaldata,crcvalue);\r
@@ -4834,12 +4835,12 @@ bool Read_Health_BIN_file_buf_send_bin_Data(uint8_t day, uint16_t num,uint16_t i
     buf = (char *)ym_malloc(sizeof(char)*num+1);\r
     if(buf==NULL)return false;\r
 \r
-    uint16_t pack=1;\r
+    uint32_t pack=1;\r
     if(file_size%num==0)\r
     pack=data_len/num;\r
     else\r
     pack=data_len/num+1;\r
-    uint8_t pack_id=1;\r
+    uint32_t pack_id=1;\r
     uint32_t read_size=0;\r
     do\r
     {\r
@@ -5842,8 +5843,8 @@ bool Read_tar_file_buf_send_Data(uint16_t pack_size,uint8_t id)
     \r
     printf("Read_tar_file_buf_send_Data size %d\r\n",file_size);\r
 \r
-    uint16_t pack=file_size/pack_size+1;\r
-    uint8_t pack_id=1;\r
+    uint32_t pack=file_size/pack_size+1;\r
+    uint32_t pack_id=1;\r
     if(fp==NULL)\r
     {\r
         printf("fopen fail %s\r\n",file_name);\r