MusicPlayerModel &operator=(const MusicPlayerModel &) = delete;
private:
- std::string musicPlayPath = "/user/userdata/music/"; /*音乐播放路径*/
+ std::string musicPlayPath = "/user/userdata/music"; /*音乐播放路径*/
};
}
#include "musicplayer/include/MusicPlayerModel.h"
#include "wearable_log.h"
-
+#include "player/include/PlayersModel.h"
namespace OHOS
{
MusicPlayerModel::MusicPlayerModel() {}
/*获取音乐播放路径*/
std::string MusicPlayerModel::GetMusicPlayPath(void)
{
- return musicPlayPath;
+
+ return PlayersModel::GetInstance()->GetMusicPlayPath();
}
}
${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include/common
${ROOT_DIR}/application/wearable/fd230app/nativeui/set_dial/include
${ROOT_DIR}/application/wearable/fd230app/nativeui/aivoice/include
+${ROOT_DIR}/application/wearable/fd230app/nativeui/alarm/include
+${ROOT_DIR}/application/wearable/fd230app/nativeui/musicplayer/include
-
-
+#/home/hcj/FD230/code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmClockModel.h
+#/home/hcj/FD230/code/sdk/middleware/services/media/foundation/player/interfaces/kits/player.h
+#/home/hcj/FD230/code/sdk/middleware/services/gui/uikit/surface/interfaces/kits/surface.h
+# ${ROOT_DIR}/middleware/services/media/foundation/player/interfaces/kits
+# ${ROOT_DIR}/middleware/services/gui/uikit/surface/interfaces/kits
)
set(SOURCES
#include "AiVoiceModel.h"
#include "SleepModel.h"
#include "BluetoothModel.h"
+#include "MusicPlayerModel.h"
+
//#include "AlarmClockModel.h"
#ifdef __cplusplus
#if __cplusplus
#include <dirent.h>
#include <ppg_service.h>
+#define before_file_day 30
+
+void get_music_path(char *buf,uint8_t max_len)
+{
+ std::string path= OHOS::MusicPlayerModel::GetInstance().GetMusicPlayPath();
+ memcpy_s(buf,max_len,path.c_str(),path.length());
+}
+
//在此处实现,给UI回复消息。
void ble_app_reply(bool data)
{
OHOS::AiVoiceModel::GetInstance().SetUserQuestionStr(std::string(buf));
}
-void ble_set_ai_Answer_str(char *buf)
+void ble_set_ai_Answer_str(char *buf,uint8_t type)
{
- OHOS::AiVoiceModel::GetInstance().SetAiAnswerStrStr(std::string(buf));
+ OHOS::AiVoiceModel::GetInstance().SetAiAnswerStrStr(std::string(buf),type);
}
char* ble_get_ai_audio_path_str(void)
switch (type)
{
case 2: //
- sprintf_s(dir_path,64,"%s","user/music");
+ get_music_path(dir_path,128);
break;
case 3: //
sprintf_s(dir_path,64,"%s","user/userdata/dial");
if (ent->d_type == DT_REG || ent->d_type == DT_UNKNOWN ) // 普通文件
{
char file_path[128]={0};
- sprintf_s(file_path,128,"%s/%s","user/music",ent->d_name);
+ sprintf_s(file_path,128,"%s/%s",dir_path,ent->d_name);
FILE * fp = fopen(file_path,"rb+");
if(fp==NULL)
struct DIR *dir;
struct dirent *ent;
- std::string fileName = ent->d_name;
+
uint32_t offset=0;
uint8_t sleep_count=1;
{
while ((ent = readdir(dir)) != NULL)
{
+ std::string fileName = ent->d_name;
if (fileName != "." && fileName != "..")
{
struct DIR *dir;
struct dirent *ent;
- std::string fileName = ent->d_name;
+
uint8_t file_count=0;
if ((dir = opendir(dir_path)) != NULL)
{
while ((ent = readdir(dir)) != NULL)
{
+ std::string fileName = ent->d_name;
if (fileName != "." && fileName != "..")
{
}
-#define CWM_HISTORY_DATA_PATH "/user/userdata/goal/step_"
+#define CWM_HISTORY_DATA_PATH "/user/userdata/goal/step/step_"
+
+#define CWM_HISTORY_DATA_CALORIES_PATH "/user/userdata/goal/calories/calories_"
+
+#define CWM_HISTORY_DATA_DISTANCE_PATH "/user/userdata/goal/distance/distance_"
+
+#define CWM_HISTORY_STAND_DATA_PATH "/user/userdata/goal/stand/stand_"
+
+#define CWM_HISTORY_DATA_FAT_PATH "/user/userdata/goal/fat/fat_"
+
+
+#define GOAL_DATA_CONFIG_DIR_STEP "/user/userdata/goal/step"
+
+#define GOAL_DATA_CONFIG_DIR_DISTANCE "/user/userdata/goal/distance"
+
+#define GOAL_DATA_CONFIG_DIR_STAND "/user/userdata/goal/stand"
+
+#define GOAL_DATA_CONFIG_DIR_FAT "/user/userdata/goal/fat"
+
+#define GOAL_DATA_CONFIG_DIR_CALORIES "/user/userdata/goal/calories"
+
+
+
+void delete_before_file(uint8_t type)
+{
+ time_t currtime;
+ struct tm *timeinfo;
+ time(&currtime);
+ timeinfo = localtime(&currtime);
+
+ int y=timeinfo->tm_year+ 1900;
+ int m=timeinfo->tm_mon+1;
+ int d=timeinfo->tm_mday;
+
+ printf("delete_before_file now day%d %d %d\r\n ",y,m,d);
+
+ char path_[64]={0};
+
+ switch (type)
+ {
+ case 0x43: //同步步数历史数据
+ sprintf_s(path_,64,"%s",GOAL_DATA_CONFIG_DIR_STEP);
+ break;
+ case 0x44://同步燃脂时间数据
+ sprintf_s(path_,64,"%s",GOAL_DATA_CONFIG_DIR_FAT);
+ break;
+ case 0x45://同步站立历史数据
+ sprintf_s(path_,64,"%s",GOAL_DATA_CONFIG_DIR_STAND);
+ break;
+ case 0x46://同步卡路里历史数据
+ sprintf_s(path_,64,"%s",GOAL_DATA_CONFIG_DIR_CALORIES);
+ break;
+ case 0x47://同步距离历史数据
+ sprintf_s(path_,64,"%s",GOAL_DATA_CONFIG_DIR_DISTANCE);
+ break;
+ default:
+ break;
+ }
+
+
+ struct DIR *dir;
+ struct dirent *ent;
+
+
+ if ((dir = opendir(path_)) != NULL)
+ {
+ while ((ent = readdir(dir)) != NULL)
+ {
+ std::string fileName = ent->d_name;
+ if (fileName != "." && fileName != "..")
+ {
+
+ if (ent->d_type == DT_REG || ent->d_type == DT_UNKNOWN ) // 普通文件
+ {
+ int flag=0;
+ printf("%s\r\n",fileName.c_str());
+ int y_;
+ int m_;
+ int d_;
-#define CWM_HISTORY_DATA_CALORIES_PATH "/user/userdata/goal/calories_"
+ for(int i=0;i<fileName.length();i++)
+ {
+ int data=0;
+
+ data=atoi(fileName.c_str()+i);
+ if(data>0)
+ {
+
+ if(flag==0)
+ {
+ i=i+4;
+ printf("data %d\r\n",data);
+ y_=y-data;
+ flag++;
+ }
+ else if (flag==1)
+ {
+ i=i+2;
+ printf("data %d\r\n",data);
+ m_=m-data;
+ flag++;
+ }
+ else if (flag==2)
+ {
+ i=i+2;
+ printf("data %d\r\n",data);
+ d_=d-data;
+ flag++;
+ }
+
+
+ }
+ }
+
+ if((y_*24+m_)*30+d_>before_file_day)
+ {
+ char path_remove[64]={0};
+ sprintf_s(path_remove,64,"%s/%s",path_,fileName.c_str());
+ remove(path_remove);
+ printf("succ remove %s\r\n ",path_remove);
+ }
+ else
+ {
+ printf("is 30d %d\r\n ",(y_*24+m_)*30+d_);
+ }
+
+ }
+ }
+ else if (ent->d_type == DT_DIR) // 目录
+ {
+ continue;
+ }
+ }
+ }
+ else
+ {
+
+ return ;
+ }
+ closedir(dir);
-#define CWM_HISTORY_DATA_DISTANCE_PATH "/user/userdata/goal/distance_"
-#define CWM_HISTORY_STAND_DATA_PATH "/user/userdata/goal/stand_"
-#define CWM_HISTORY_DATA_FAT_PATH "/user/userdata/goal/fat_"
+
+}
char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
{
}
+
+
+
void ble_set_sleep_remind(msg_get_sleep_param_info_t data)
{
OHOS::ConfigModel *p_ConfigModel = OHOS::ConfigModel::GetInstance();
/////////////////////////////AI相关/////////////////////////
void ble_set_ai_Question_str(char *buf);
-void ble_set_ai_Answer_str(char *buf);
+void ble_set_ai_Answer_str(char *buf,uint8_t type);
char* ble_get_ai_audio_path_str(void);
void ble_app_reply(bool data);
+
/////////////////////////////MP3相关/////////////////////////
typedef struct Tag_Trailer
char * dir_to_json_buf_malloc_(uint8_t type);
+void get_music_path(char *buf,uint8_t max_len);
/////////////////////数据同步////////////////////////////
////////////////////////////////////////
void SendDtfmStrNumberToCat1(char ch); //ble发送单个字符到CAT1 DTMF功能
+void delete_before_file(uint8_t type);
+
#ifdef __cplusplus
#if __cplusplus
}
{\r
bond = 0x01;//手表未和任何手机绑定过\r
//未配过使能一键双联\r
- errcode_t ret = gap_ble_set_ctkd_enable(true);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_set_ctkd_enable ret = %x", ret);\r
- set_ctkd_flag(true);\r
-\r
+ \r
\r
\r
value[17] = bond;//\r
buf[0] = DEVICEBIND ;\r
buf[1] = devnamelen;//设备名称长度 0不显示\r
memcpy(buf+2,devname,devnamelen);\r
+\r
+ if(strcmp("iPhone",(char *)devname)==0)\r
+ {\r
+ errcode_t ret = gap_ble_set_ctkd_enable(true);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "iPhone gap_ble_set_ctkd_enable ret = %x", ret);\r
+ set_ctkd_flag(true);\r
+ }\r
+ \r
CustomEventPublish(TOPIC_EVENT_DEVICE_BIND,(uint8_t *)buf,devnamelen+2);\r
if(devname)\r
{ \r
if(result == 0)\r
{\r
//已经配对就关闭一键双连\r
- errcode_t ret = gap_ble_set_ctkd_enable(true);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_set_ctkd_enable ret = %x", ret);\r
- set_ctkd_flag(false);\r
+ // errcode_t ret = gap_ble_set_ctkd_enable(true);\r
+ // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_set_ctkd_enable ret = %x", ret);\r
+ // set_ctkd_flag(false);\r
+ \r
+ // if(strcmp("iPhone",devname)==0)\r
+ // {\r
+ // errcode_t ret = gap_ble_set_ctkd_enable(true);\r
+ // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_set_ctkd_enable ret = %x", ret);\r
+ // set_ctkd_flag(true);\r
+ // }\r
\r
printf("phone_addr:%02x-%02x-%02x-%02x-%02x-%02x type:%d ",phone_addr.addr[0],phone_addr.addr[1],phone_addr.addr[2],\r
phone_addr.addr[3],phone_addr.addr[4],phone_addr.addr[5],phone_addr.type);\r
if(buf[offset]==1)\r
{\r
offset++;\r
+ if(offset>=len)break;\r
uint16_t txt_len;\r
memcpy_s(&txt_len,2,&buf[offset],2);\r
\r
offset+=2;\r
+ if(offset>=len)break;\r
+\r
char txt_buf[256]={0};\r
memcpy_s(txt_buf,256,&buf[offset],txt_len);\r
printf("binCheck_AI Question txtbuf:%s %d\r\n",txt_buf,txt_len);\r
if(buf[offset]==2)\r
{\r
offset++;\r
+ if(offset>=len)break;\r
+\r
uint16_t txt_len;\r
memcpy_s(&txt_len,2,&buf[offset],2);\r
\r
offset+=2;\r
+ if(offset>=len)break;\r
\r
if(txt_len>=AI_TXT_BUF_MAX_LEN)\r
txt_len=AI_TXT_BUF_MAX_LEN;\r
if(txt_buf==NULL)\r
{\r
printf("binCheck_AI txtbuf malloc fail\r\n");\r
- ble_set_ai_Answer_str("手表缓存不足");\r
+ ble_set_ai_Answer_str("手表缓存不足",0);\r
return 0;\r
}\r
\r
memcpy_s((char *)txt_buf,1024*3,&buf[offset],txt_len);\r
\r
printf("binCheck_AI txtbuf Answer %s %d\r\n",txt_buf,txt_len);\r
- ble_set_ai_Answer_str(txt_buf);\r
+ ble_set_ai_Answer_str(txt_buf,2);\r
free(txt_buf);\r
\r
offset+=txt_len;\r
if(offset>=len)break;\r
if(buf[offset]==0)\r
{\r
+ offset++;\r
+ if(offset>=len)break;\r
+\r
+ uint16_t txt_len;\r
+ memcpy_s(&txt_len,2,&buf[offset],2);\r
+\r
+ offset+=2;\r
+ if(offset>=len)break;\r
+\r
+ char error_buf[256]={0};\r
+ memcpy_s(error_buf,256,&buf[offset],txt_len);\r
+ printf("binCheck_AI Question txtbuf:%s %d\r\n",error_buf,txt_len);\r
+ ble_set_ai_Answer_str(error_buf,0);\r
+\r
printf("AI 解析失败\r\n");\r
+\r
+ }\r
+ if(offset>=len)break;\r
+\r
+ if(buf[offset]==3)\r
+ {\r
+ offset++;\r
+ if(offset>=len)break;\r
+\r
+ uint16_t txt_len;\r
+ memcpy_s(&txt_len,2,&buf[offset],2);\r
+\r
+ offset+=2;\r
+ if(offset>=len)break;\r
+\r
+ char error_buf[256]={0};\r
+ memcpy_s(error_buf,256,&buf[offset],txt_len);\r
+ printf("binCheck_AI Question txtbuf:%s %d\r\n",error_buf,txt_len);\r
+ ble_set_ai_Answer_str(error_buf,3);\r
+\r
+ printf("AI 解析失败\r\n");\r
+\r
+ }\r
+ if(offset>=len)break;\r
+\r
+ if(buf[offset]==4)\r
+ {\r
+ offset++;\r
+ if(offset>=len)\r
+ {\r
+ ble_set_ai_Answer_str("",4);\r
+ break;\r
+ }\r
+\r
+ uint16_t txt_len;\r
+ memcpy_s(&txt_len,2,&buf[offset],2);\r
+\r
+ offset+=2;\r
+ if(offset>=len)break;\r
+\r
+ char error_buf[256]={0};\r
+ memcpy_s(error_buf,256,&buf[offset],txt_len);\r
+ printf("binCheck_AI Question txtbuf:%s %d\r\n",error_buf,txt_len);\r
+ ble_set_ai_Answer_str(error_buf,4);\r
+\r
+ printf("AI 解析失败\r\n");\r
+\r
}\r
- \r
if(offset>=len)break;\r
offset++;\r
}\r
\r
cJSON* ota_name_json = cJSON_GetObjectItem(root, "name");\r
if ( ota_name_json != NULL && cJSON_IsString(ota_name_json)) {\r
- uint32_t filenamelen=strlen(ota_name_json->valuestring);\r
+ uint32_t filenamelen=strlen(ota_name_json->valuestring)+1;\r
if (filenamelen > 0 && filenamelen < 255)\r
{\r
buffer_handle->file_recv_stat.file_name = malloc(filenamelen);\r
\r
cJSON* ota_name_json = cJSON_GetObjectItem(root, "name");\r
if ( ota_name_json != NULL && cJSON_IsString(ota_name_json)) {\r
- uint32_t filenamelen=strlen(ota_name_json->valuestring);\r
+ uint32_t filenamelen=strlen(ota_name_json->valuestring)+1;\r
+\r
if (filenamelen > 0 && filenamelen < 255)\r
{\r
buffer_handle->file_recv_stat.file_name = malloc(filenamelen);\r
if (buffer_handle->file_recv_stat.file_name!=NULL)\r
+ {\r
+ memset_s(buffer_handle->file_recv_stat.file_name,filenamelen,0,filenamelen);\r
memcpy_s(buffer_handle->file_recv_stat.file_name,filenamelen,ota_name_json->valuestring,filenamelen);\r
+ }\r
+ \r
//下载完成再在 cancel download 里 free filename\r
}else{\r
buffer_handle->file_recv_stat.file_name = NULL;\r
break;\r
case 2://mp3\r
\r
- \r
+ ble_reply_cmd(DIAL_INSTALL_REPY_CMD,1);\r
+\r
break;\r
case 3://dial\r
//TODO: 设置成当前下载的表盘\r
buffer_handle->file_recv_stat.file = fopen("/update/update.fwpkg","w+");\r
printf("create file /update/update.fwpkg %X\n",buffer_handle->file_recv_stat.file);\r
\r
- }else{\r
+ }\r
+ else if (buffer_handle->file_recv_stat.file_type == 2)\r
+ {\r
+ char musicpath[64]={0};\r
+ get_music_path(musicpath,64);\r
+ char filepath[256]={0};\r
+ sprintf_s(filepath,256,"%s/%s",musicpath,buffer_handle->file_recv_stat.file_name);\r
+ buffer_handle->file_recv_stat.file = fopen(filepath,"w+");\r
+ printf("%s\r\n",filepath);\r
+ }\r
+ else\r
+ {\r
char filepath[128]={0};\r
if (get_file_recv_file_path(buffer_handle->file_recv_stat.file_name,strlen(buffer_handle->file_recv_stat.file_name),filepath,sizeof(filepath)) == ERRCODE_SUCC)\r
{\r
}\r
if (buffer_handle->file_recv_stat.file == NULL)\r
{\r
- printf("6185 buffer_handle->file_recv_stat.file \n");\r
+ printf("6185 buffer_handle->file_recv_stat.file NULL\n");\r
return ERRCODE_FAIL;\r
}\r
buffer_handle->file_recv_stat.recv_file_stat = 1;\r
-#define CWM_HISTORY_DATA_PATH "/user/userdata/goal/step_"
+#define CWM_HISTORY_DATA_PATH "/user/userdata/goal/step/step_"
-#define CWM_HISTORY_DATA_CALORIES_PATH "/user/userdata/goal/calories_"
+#define CWM_HISTORY_DATA_CALORIES_PATH "/user/userdata/goal/calories/calories_"
-#define CWM_HISTORY_DATA_DISTANCE_PATH "/user/userdata/goal/distance_"
+#define CWM_HISTORY_DATA_DISTANCE_PATH "/user/userdata/goal/distance/distance_"
-#define CWM_HISTORY_DATA_FAT_PATH "/user/userdata/goal/fat_"
+#define CWM_HISTORY_STAND_DATA_PATH "/user/userdata/goal/stand/stand_"
+
+#define CWM_HISTORY_DATA_FAT_PATH "/user/userdata/goal/fat/fat_"
#define GOAL_DATA_CONFIG_DIR "/user/userdata/goal"
+#define GOAL_DATA_CONFIG_DIR_STEP "/user/userdata/goal/step"
+
+#define GOAL_DATA_CONFIG_DIR_DISTANCE "/user/userdata/goal/distance"
+
+#define GOAL_DATA_CONFIG_DIR_STAND "/user/userdata/goal/stand"
+
+#define GOAL_DATA_CONFIG_DIR_FAT "/user/userdata/goal/fat"
+
+#define GOAL_DATA_CONFIG_DIR_CALORIES "/user/userdata/goal/calories"
void CWM_OS_saveData_history(void* new_data,void *history ,uint32_t len,uint8_t type){
return ; // Failed to create folder
}
}
+
+ if (stat(GOAL_DATA_CONFIG_DIR_STEP, &info) != 0)
+ {
+ if (mkdir(GOAL_DATA_CONFIG_DIR_STEP, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+ {
+ return ; // Failed to create folder
+ }
+ }
+
+ if (stat(GOAL_DATA_CONFIG_DIR_DISTANCE, &info) != 0)
+ {
+ if (mkdir(GOAL_DATA_CONFIG_DIR_DISTANCE, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+ {
+ return ; // Failed to create folder
+ }
+ }
+
+ if (stat(GOAL_DATA_CONFIG_DIR_STAND, &info) != 0)
+ {
+ if (mkdir(GOAL_DATA_CONFIG_DIR_STAND, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+ {
+ return ; // Failed to create folder
+ }
+ }
+
+ if (stat(GOAL_DATA_CONFIG_DIR_FAT, &info) != 0)
+ {
+ if (mkdir(GOAL_DATA_CONFIG_DIR_FAT, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+ {
+ return ; // Failed to create folder
+ }
+ }
+
+ if (stat(GOAL_DATA_CONFIG_DIR_CALORIES, &info) != 0)
+ {
+ if (mkdir(GOAL_DATA_CONFIG_DIR_CALORIES, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+ {
+ return ; // Failed to create folder
+ }
+ }
+
+
+
char path_[64]={0};
char timeday[12] = {0};
uapi_get_YYMMDD_Time(timeday, '_');
case CYWEE_DATA_FAT:
sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_FAT_PATH,timeday);
i_data_16= *(uint16_t*)new_data-*(uint16_t*)history;//新数据减去旧数据,作为这一个小时的值
-
+
break;
default:
fclose(fp);
}
-#define CWM_HISTORY_STAND_DATA_PATH "/user/userdata/goal/stand_"
void CWM_OS_saveData_STAND_history(uint8_t *falg,uint32_t len){
if(*falg)
return ; // Failed to create folder
}
}
-
+
+ if (stat(GOAL_DATA_CONFIG_DIR_STAND, &info) != 0)
+ {
+ if (mkdir(GOAL_DATA_CONFIG_DIR_STAND, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+ {
+ return ; // Failed to create folder
+ }
+ }
char path_[64]={0};
char timeday[12] = {0};