#ifndef _APP_MUSIC_H #define _APP_MUSIC_H #include "system/includes.h" #include "app_config.h" #include "server/audio_server.h" #ifdef CONFIG_RESUME_LOCAL_PLAY_FILE #ifdef CONFIG_APE_DEC_ENABLE #define BREAKPOINT_DATA_LEN 2040 #elif defined CONFIG_FLAC_DEC_ENABLE #define BREAKPOINT_DATA_LEN 688 #elif defined CONFIG_M4A_DEC_ENABLE #define BREAKPOINT_DATA_LEN 536 #endif #ifndef BREAKPOINT_DATA_LEN #define BREAKPOINT_DATA_LEN 32 #endif #endif struct music_dec_ops { int (*switch_dir)(int fsel_mode); int (*switch_file)(int fsel_mode); int (*dec_file)(void *file, int, void *, int); int (*dec_play_pause)(u8 notify); int (*dec_breakpoint)(int); int (*dec_stop)(int); int (*dec_volume)(int); int (*dec_progress)(int); int (*dec_seek)(int); int (*dec_status)(int); }; struct net_breakpoint { u32 fptr; u16 url_len; char *url; const char *ai_name; struct audio_dec_breakpoint dec_bp; }; struct local_breakpoint { #ifdef CONFIG_RESUME_LOCAL_PLAY_FILE u32 sclust; u32 fsize; u8 data[BREAKPOINT_DATA_LEN]; #endif struct audio_dec_breakpoint local_bp; }; enum { PICTURE_DET_EXIT_MODE = 0, PICTURE_DET_ENTER_MODE = 1, }; enum { NET_MUSIC_MODE = 0, //网络播放模式,包括云识别还有绘本识别 BT_MUSIC_MODE, //蓝牙播放模式,包括媒体播放和打电话 LOCAL_MUSIC_MODE, //本地flash播放 SDCARD0_MUSIC_MODE, //sd0播放 SDCARD1_MUSIC_MODE, //sd1播放 UDISK0_MUSIC_MODE, //usb1.1-u盘播放 UDISK1_MUSIC_MODE, //usb2.0-u盘播放 AUX_MUSIC_MODE, //LINEIN播放模式 FM_MUSIC_MODE, //FM电台播放 SDCARD_MUSIC_MODE = SDCARD0_MUSIC_MODE, //兼容旧版sd卡播放 UDISK_MUSIC_MODE = UDISK0_MUSIC_MODE, //兼容旧版u盘播放 }; enum { LOOP_PLAY_MODE = 0, //循环播放模式 SINGLE_PLAY_MODE, //单曲播放模式 RANDOM_PLAY_MODE, //随机播放模式 }; #ifdef CONFIG_UI_ENABLE enum { UI_MSG_LAST_SONG = 1, //上一首 UI_MSG_PAUSE_START, //播放开 UI_MSG_PAUSE_STOP, //播放关 UI_MSG_NEXT_SONG, //下一首 UI_MSG_SET_VOLUME, //设置音量 UI_MSG_SONG_NAME, //显示歌曲名字 UI_MSG_SD_LOG, //SA卡图标状态 UI_MSG_POWER_LOG, //电池电量 UI_MSG_ALL_TIME, //播放总时间 UI_MSG_CURRENT_TIME, //当前播放时间 UI_MSG_STARTUP_LOG, //开机图片显示 UI_MSG_UPDATE, //ui升级 UI_MSG_SHOW_PERSENT, //ui显示百分比 UI_MSG_UPGRADE_FAIL, //ui升级失败 }; #endif //CONFIG_UI_ENABLE typedef enum { /*01*/ APP_LOCAL_PROMPT_POWER_ON = 1, //开机提示音 /*02*/ APP_LOCAL_PROMPT_POWER_OFF, //关机提示音 /*03*/ APP_LOCAL_PROMPT_PLAY_DOMAIN_MUSIC, //领域播放:儿歌 /*04*/ APP_LOCAL_PROMPT_PLAY_DOMAIN_STORY, //领域播放:故事 /*05*/ APP_LOCAL_PROMPT_PLAY_DOMAIN_SINOLOGY, //领域播放:国学 /*06*/ APP_LOCAL_PROMPT_PLAY_DOMAIN_ENGLISH, //领域播放:英语 /*07*/ APP_LOCAL_PROMPT_BT_OPEN, //打开蓝牙 /*08*/ APP_LOCAL_PROMPT_BT_CLOSE, //关闭蓝牙 /*09*/ APP_LOCAL_PROMPT_BT_CONNECTED, //蓝牙连接成功 /*10*/ APP_LOCAL_PROMPT_BT_DISCONNECT, //蓝牙断开连接 /*11*/ APP_LOCAL_PROMPT_WIFI_CONNECTING, //wifi正在连接 /*12*/ APP_LOCAL_PROMPT_WIFI_CONNECT_SUCCESS, //wifi连接成功 /*13*/ APP_LOCAL_PROMPT_WIFI_CONNECT_FAIL, //wifi连接失败 /*14*/ APP_LOCAL_PROMPT_WIFI_DISCONNECT, //wifi断开连接 /*15*/ APP_LOCAL_PROMPT_WIFI_CONFIG_START, //进入配网模式 /*16*/ APP_LOCAL_PROMPT_WIFI_CONFIG_INFO_RECV, //配网信息接收成功 /*17*/ APP_LOCAL_PROMPT_WIFI_FIRST_CONFIG, //提示进行第一次配网 /*18*/ APP_LOCAL_PROMPT_WIFI_CONFIG_TIMEOUT, //配网超时 /*19*/ APP_LOCAL_PROMPT_LIGHT_OPEN, //打开灯光 /*20*/ APP_LOCAL_PROMPT_LIGHT_CLOSE, //关闭灯光 /*21*/ APP_LOCAL_PROMPT_AI_ASR_FAIL, //服务器暂未连接成功,云端识别请求失败 /*22*/ APP_LOCAL_PROMPT_AI_TRANSLATE_FAIL, //服务器暂未连接成功,翻译请求失败 /*23*/ APP_LOCAL_PROMPT_AI_PICTURE_FAIL, //服务器暂未连接成功,绘本请求失败 /*24*/ APP_LOCAL_PROMPT_SEND_MESSAGE_FAIL, //服务器暂未连接成功,留言发送失败 /*25*/ APP_LOCAL_PROMPT_RECV_NEW_MESSAGE, //接收到新的留言信息 /*26*/ APP_LOCAL_PROMPT_MESSAGE_TOO_SHORT, //发送的留言过短 /*27*/ APP_LOCAL_PROMPT_MESSAGE_EMPTY, //没有新的留言信息 /*28*/ APP_LOCAL_PROMPT_LOW_BATTERY_LEVEL, //电池电量不足 /*29*/ APP_LOCAL_PROMPT_LOW_BATTERY_SHUTDOWN, //低电关机 /*30*/ APP_LOCAL_PROMPT_ENTER_AI_TRANSLATE_MODE,//进入翻译模式 /*31*/ APP_LOCAL_PROMPT_ENTER_AI_ASR_MODE, //进入云端识别模式 /*32*/ APP_LOCAL_PROMPT_ENTER_AI_PICTURE_MODE, //进入绘本识别模式 /*33*/ APP_LOCAL_PROMPT_EXIT_AI_PICTURE_MODE, //退出绘本识别模式 /*34*/ APP_LOCAL_PROMPT_PICTURE_RECOGNIZE_FAIL, //绘本识别失败 /*35*/ APP_LOCAL_PROMPT_SERVER_CONNECTED, //服务器连接成功 /*36*/ APP_LOCAL_PROMPT_SERVER_DISCONNECT, //服务器连接断开 /*37*/ APP_LOCAL_PROMPT_ASR_EMPTY, //ASR识别结果为空,提示再说一遍 /*38*/ APP_LOCAL_PROMPT_KWS_ENABLE, //打开打断唤醒功能 /*39*/ APP_LOCAL_PROMPT_KWS_DISABLE, //关闭打断唤醒功能 /*40*/ APP_LOCAL_PROMPT_REVERB_ENABLE, //进入混响模式 /*41*/ APP_LOCAL_PROMPT_REVERB_DISABLE, //退出混响模式 /*42*/ APP_LOCAL_PROMPT_ENTER_NETWORK_MODE, //进入网络媒体播放模式 /*43*/ APP_LOCAL_PROMPT_ENTER_FLASH_MUSIC_MODE, //进入FLASH音乐播放模式 /*44*/ APP_LOCAL_PROMPT_ENTER_SDCARD_MUSIC_MODE,//进入SD卡音乐播放模式 /*45*/ APP_LOCAL_PROMPT_ENTER_UDISK_MUSIC_MODE, //进入U盘音乐播放模式 /*46*/ APP_LOCAL_PROMPT_ENTER_FM_MUSIC_MODE, //进入FM音乐播放模式 /*47*/ APP_LOCAL_PROMPT_PHONE_RING, //来电提示 /*48*/ APP_LOCAL_PROMPT_AI_LISTEN_START, //开始云端识别 /*49*/ APP_LOCAL_PROMPT_AI_LISTEN_STOP, //结束云端识别 /*50*/ APP_LOCAL_PROMPT_VOLUME_SET, //设置音量 /*51*/ APP_LOCAL_PROMPT_VOLUME_FULL, //音量已经设置最大值 /*52*/ APP_LOCAL_PROMPT_DEVICE_BIND_SUCCESS, //设备绑定成功 /*53*/ APP_LOCAL_PROMPT_DEVICE_BIND_FAIL, //设备绑定失败 /*54*/ APP_LOCAL_PROMPT_DEVICE_UNBIND_DEFAULT, //设备解绑 /*55*/ APP_LOCAL_PROMPT_DEVICE_UNBIND_SUCCESS, //设备解绑成功 /*56*/ APP_LOCAL_PROMPT_DEVICE_UNBIND_FAIL, //设备解绑失败 /*57*/ APP_LOCAL_PROMPT_DEVICE_INFO_RESTORE, //恢复出厂设置 /*58*/ APP_LOCAL_PROMPT_DEVICE_RESTART, //设备重启 /*59*/ APP_LOCAL_PROMPT_OTA_UPGRADE_START, //OTA升级开始 /*60*/ APP_LOCAL_PROMPT_OTA_UPGRADE_SUCCESS, //OTA升级成功 /*61*/ APP_LOCAL_PROMPT_OTA_UPGRADE_FAIL, //OTA升级失败 /*62*/ APP_LOCAL_PROMPT_ALARM, //闹铃 /*63*/ APP_LOCAL_PROMPT_SCHEDULE, //时刻表 /*64*/ APP_LOCAL_PROMPT_ENTER_AUX_MUSIC_MODE, //进入AUX音乐播放模式 /*65*/ APP_LOCAL_PROMPT_FORMAT_NOT_SUPPORT, //播放器不支持的媒体格式 /*66*/ APP_LOCAL_PROMPT_SEEK_UNSUPPORTED, //不支持快进快退的本地提示音 /*67*/ APP_LOCAL_PROMPT_ENTER_BT_EMITTER_MODE, //进入蓝牙发射器模式 /*68*/ APP_LOCAL_PROMPT_EXIT_BT_EMITTER_MODE, //退出蓝牙发射器模式 /****/ APP_LOCAL_PROMPT_NUMM, } APP_LOCAL_PROMPT_TYPE_E; struct app_music_hdl { #ifdef CONFIG_NET_ENABLE u8 rec_again : 1; u8 net_connected : 1; u8 picture_det_mode : 1; u8 wifi_config_state : 1; u8 ai_connected : 1; u8 upgrading : 1; u8 wait_download_suspend : 1; u8 wechat_flag : 1; u8 listening : 2; u8 play_tts : 1; u8 reconnecting : 1; u8 net_cfg_fail : 1; u8 net_connected_frist : 1; u8 _net_dhcp_ready : 1; u8 reserve : 1; u8 voice_mode; u8 wechat_url_num; u16 wait_download; u16 coexistence_timer; u16 cancel_dns_timer; int download_ready; void *net_file; void *save_url; const char *url; const char *ai_name; struct server *ai_server; struct net_breakpoint net_bp; struct list_head wechat_list; #endif u8 mode; u8 last_mode; u8 led_mode : 4; u8 last_play_status : 2; u8 force_switch_file : 1; u8 bt_auto_play_another_dev : 1; u8 bt_emitter_enable : 1; u8 led_breath_on : 1; u8 mute : 1; u8 local_play_all : 1; //全盘播放 u8 local_play_mode : 2; u8 last_local_play_mode : 2; u8 play_voice_prompt : 1; u8 bt_music_enable : 1; u8 reverb_enable : 1; u8 wakeup_support : 1; u8 call_flag : 1; u8 bt_connecting : 1; u8 key_disable : 2; u8 light_intensity; u8 battery_per; u8 media_dev_online; //bit0:sd_card bit1:udisk bit2:card_reader bit7:first_dec_success char volume; volatile u8 run_flag; u16 wait_sd; u16 wait_sd1; u16 wait_udisk; u16 wait_udisk1; u16 udisk_upgrade_timer; u16 udisk1_upgrade_timer; int seek_step; int play_time; int save_play_time; int total_time; int save_total_time; int wait_switch_file; void *cmp_file; FILE *local_bp_file; FILE *file; int dec_end_args[4]; void *dec_end_file; void *dec_end_handler; struct vfscan *fscan; struct vfscan *dir_list; struct server *dec_server; struct server *enc_server; struct local_breakpoint lbp; struct audio_dec_breakpoint local_bp; const char *local_path; const struct music_dec_ops *dec_ops; struct server *led_ui; void *spectrum_fft_hdl; void *eq_hdl; void *digital_vol_hdl; void *cache_buf; void *virtual_audio; void *virtual_bass; cbuffer_t save_cbuf; OS_SEM w_sem; OS_SEM r_sem; #ifdef LOAD_SDRAM_PROMPT_PLAY u8 sdram_prompt_dir; u8 sdram_prompt_flag; u8 last_sdram_prompt_flag; u8 sdram_save_dec_type[4]; #endif }; void set_app_music_volume(int volume, u8 mode); int get_app_music_volume(void); int get_app_music_playtime(void); int get_app_music_total_time(void); int get_app_music_light_intensity(void); int get_app_music_battery_power(void); #endif