修改能量mute
This commit is contained in:
parent
1a0d74bdfe
commit
bcdf1af495
@ -1,5 +1,14 @@
|
||||
#include "kt.h"
|
||||
#include "app_task.h"
|
||||
#include "avctp_user.h"
|
||||
|
||||
extern void kt_auto_mute_pa_init(void);
|
||||
|
||||
static u16 led_timer_id = 0;
|
||||
static int led_cnt = 0;
|
||||
|
||||
/* static int mute_test = 0;
|
||||
static u8 mute_test_flag = 0; */
|
||||
|
||||
void kt_boot_init(void)
|
||||
{
|
||||
@ -7,6 +16,7 @@ void kt_boot_init(void)
|
||||
gpio_set_pull_up(KT_CFG_MUTE_PIN, 0);
|
||||
gpio_set_pull_down(KT_CFG_MUTE_PIN, 0);
|
||||
gpio_set_direction(KT_CFG_MUTE_PIN, 0);
|
||||
gpio_set_output_value(KT_CFG_MUTE_PIN, 0);
|
||||
PA_MUTE();
|
||||
// b led pin
|
||||
gpio_set_pull_up(KT_CFG_B_LED_PIN, 0);
|
||||
@ -43,8 +53,87 @@ void kt_eq_switch_to(u8 eq_idx)
|
||||
}
|
||||
}
|
||||
|
||||
static void led_timer_callback(void *priv)
|
||||
{
|
||||
/* mute_test++;
|
||||
if (mute_test > 100)
|
||||
{
|
||||
mute_test = 0;
|
||||
if (mute_test_flag)
|
||||
{
|
||||
PA_MUTE();
|
||||
mute_test_flag = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
PA_UNMUTE();
|
||||
mute_test_flag = 1;
|
||||
}
|
||||
} */
|
||||
|
||||
if (app_get_curr_task() == APP_BT_TASK)
|
||||
{
|
||||
KT_CFG_R_LED_OFF();
|
||||
if (get_bt_connect_status() >= BT_STATUS_CONNECTING)
|
||||
{
|
||||
KT_CFG_B_LED_ON();
|
||||
}
|
||||
else
|
||||
{
|
||||
led_cnt++;
|
||||
if (led_cnt < 4)
|
||||
{
|
||||
KT_CFG_B_LED_ON();
|
||||
}
|
||||
else if (led_cnt < 8)
|
||||
{
|
||||
KT_CFG_B_LED_OFF();
|
||||
}
|
||||
else
|
||||
{
|
||||
led_cnt = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (app_get_curr_task() == APP_MUSIC_TASK)
|
||||
{
|
||||
KT_CFG_R_LED_OFF();
|
||||
led_cnt++;
|
||||
if (led_cnt < 10)
|
||||
{
|
||||
KT_CFG_B_LED_ON();
|
||||
}
|
||||
else if (led_cnt < 20)
|
||||
{
|
||||
KT_CFG_B_LED_OFF();
|
||||
}
|
||||
else
|
||||
{
|
||||
led_cnt = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
KT_CFG_R_LED_ON();
|
||||
KT_CFG_B_LED_OFF();
|
||||
}
|
||||
}
|
||||
static void start_led_timer(void)
|
||||
{
|
||||
if (led_timer_id)
|
||||
{
|
||||
sys_timer_del(led_timer_id);
|
||||
led_timer_id = 0;
|
||||
}
|
||||
|
||||
sys_timer_add(NULL, led_timer_callback, 50);
|
||||
}
|
||||
|
||||
void kt_init(void)
|
||||
{
|
||||
printf("kt_init\n");
|
||||
kt_auto_mute_pa_init();
|
||||
start_led_timer();
|
||||
|
||||
//gpio_set_output_value(KT_CFG_MUTE_PIN, 1);
|
||||
}
|
||||
@ -18,8 +18,11 @@
|
||||
#define KT_CFG_R_LED_OFF() gpio_set_output_value(KT_CFG_R_LED_PIN, 0)
|
||||
|
||||
#define KT_CFG_MUTE_PIN IO_PORTB_00
|
||||
#define PA_MUTE() gpio_set_output_value(KT_CFG_MUTE_PIN, 0)
|
||||
#define PA_UNMUTE() gpio_set_output_value(KT_CFG_MUTE_PIN, 1)
|
||||
#define PA_MUTE() do { printf("[<"); gpio_set_output_value(KT_CFG_MUTE_PIN, 0); } while(0)
|
||||
#define PA_UNMUTE() do { printf(">]"); gpio_set_output_value(KT_CFG_MUTE_PIN, 1); } while(0)
|
||||
|
||||
//#define PA_MUTE()
|
||||
//#define PA_UNMUTE()
|
||||
|
||||
//#define KT_CFG_AUX_IDX_LINEIN 0
|
||||
//#define KT_CFG_AUX_IDX_LP 1
|
||||
@ -37,6 +40,16 @@
|
||||
#define KT_EQ_IDX_LP 3
|
||||
//#define KT_EQ_IDX_NORMAL 4
|
||||
|
||||
typedef struct __PA_MUTE_VAR {
|
||||
u8 mute_flag;
|
||||
u8 unmute_flag;
|
||||
u16 mute_cnt;
|
||||
u16 unmute_cnt;
|
||||
u16 pa_mute_tid;
|
||||
} PA_MUTE_VAR;
|
||||
|
||||
|
||||
|
||||
void kt_eq_switch_to(u8 eq_idx);
|
||||
|
||||
void kt_boot_init(void);
|
||||
|
||||
@ -7,12 +7,18 @@
|
||||
|
||||
///模式配置表,这里可以配置切换模式的顺序,方案根据需求定义
|
||||
static const u8 app_task_list[] = {
|
||||
#if TCFG_APP_BT_EN
|
||||
APP_BT_TASK,
|
||||
#if TCFG_APP_MUSIC_EN
|
||||
APP_MUSIC_TASK,
|
||||
#endif
|
||||
#if TCFG_APP_LP_EN
|
||||
APP_LP_TASK,
|
||||
#endif
|
||||
#if TCFG_APP_MUSIC_EN
|
||||
APP_MUSIC_TASK,
|
||||
#endif
|
||||
#if TCFG_APP_BT_EN
|
||||
APP_BT_TASK,
|
||||
#endif
|
||||
#if TCFG_APP_FM_EN
|
||||
APP_FM_TASK,
|
||||
#endif
|
||||
|
||||
@ -1151,43 +1151,6 @@ static void bt_tone_play_end_callback(void *priv, int flag)
|
||||
}
|
||||
}
|
||||
|
||||
static u16 tim_id = 0;
|
||||
static u8 b_led_flag = 0;
|
||||
|
||||
static void bt_timer_callback(void *priv)
|
||||
{
|
||||
if (get_bt_connect_status() >= BT_STATUS_CONNECTING)
|
||||
{
|
||||
sys_timer_del(tim_id);
|
||||
tim_id = 0;
|
||||
KT_CFG_B_LED_ON();
|
||||
b_led_flag = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (b_led_flag)
|
||||
{
|
||||
KT_CFG_B_LED_OFF();
|
||||
b_led_flag = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
KT_CFG_B_LED_ON();
|
||||
b_led_flag = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void start_bt_timer(void)
|
||||
{
|
||||
if (tim_id)
|
||||
{
|
||||
sys_timer_del(tim_id);
|
||||
tim_id = 0;
|
||||
}
|
||||
tim_id = sys_timer_add(NULL, bt_timer_callback, 300);
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/**@brief 蓝牙模式
|
||||
@param
|
||||
@ -1201,11 +1164,7 @@ void app_bt_task()
|
||||
int msg[32];
|
||||
ui_update_status(STATUS_EXIT_LOWPOWER);
|
||||
|
||||
KT_CFG_R_LED_OFF();
|
||||
KT_CFG_B_LED_ON();
|
||||
b_led_flag = 1;
|
||||
|
||||
start_bt_timer();
|
||||
|
||||
bt_task_init(); // 初始化变量、时钟、显示(未进行协议栈初始化)
|
||||
|
||||
@ -1290,16 +1249,6 @@ void app_bt_task()
|
||||
return;
|
||||
}
|
||||
|
||||
if (tim_id)
|
||||
{
|
||||
sys_timer_del(tim_id);
|
||||
tim_id = 0;
|
||||
KT_CFG_B_LED_OFF();
|
||||
b_led_flag = 0;
|
||||
}
|
||||
KT_CFG_R_LED_OFF();
|
||||
KT_CFG_B_LED_OFF();
|
||||
b_led_flag = 0;
|
||||
}
|
||||
|
||||
if (__this->wait_exit)
|
||||
|
||||
@ -304,10 +304,6 @@ void app_linein_task()
|
||||
int res;
|
||||
int err = 0;
|
||||
int msg[32];
|
||||
|
||||
KT_CFG_R_LED_ON();
|
||||
KT_CFG_B_LED_ON();
|
||||
|
||||
#if TCFG_APP_BT_EN
|
||||
linein_bt_back_flag = get_bt_back_flag(); // 从蓝牙后台返回标志
|
||||
set_bt_back_flag(0);
|
||||
@ -360,8 +356,6 @@ void app_linein_task()
|
||||
if (app_task_exitting())
|
||||
{
|
||||
linein_task_close();
|
||||
KT_CFG_R_LED_OFF();
|
||||
KT_CFG_B_LED_OFF();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@ -287,8 +287,16 @@ static int lp_sys_event_handler(struct sys_event *event)
|
||||
else if (event->u.dev.event == DEVICE_EVENT_OUT)
|
||||
{
|
||||
log_info("lp offline \n");
|
||||
if (music_app_check())
|
||||
{
|
||||
app_task_switch_to(APP_MUSIC_TASK);
|
||||
}
|
||||
else
|
||||
{
|
||||
app_task_switch_next();
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@ -328,9 +336,6 @@ void app_lp_task()
|
||||
int err = 0;
|
||||
int msg[32];
|
||||
|
||||
KT_CFG_R_LED_ON();
|
||||
KT_CFG_B_LED_OFF();
|
||||
|
||||
#if TCFG_APP_BT_EN
|
||||
lp_bt_back_flag = get_bt_back_flag(); // 从蓝牙后台返回标志
|
||||
set_bt_back_flag(0);
|
||||
@ -384,8 +389,6 @@ void app_lp_task()
|
||||
if (app_task_exitting())
|
||||
{
|
||||
lp_task_close();
|
||||
KT_CFG_R_LED_OFF();
|
||||
KT_CFG_B_LED_OFF();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@ -49,13 +49,15 @@
|
||||
static u8 music_idle_flag = 1;
|
||||
|
||||
/// 模式参数结构体
|
||||
struct __music_task_parm {
|
||||
struct __music_task_parm
|
||||
{
|
||||
u8 type;
|
||||
int val;
|
||||
};
|
||||
|
||||
/// music模式控制结构体
|
||||
struct __music {
|
||||
struct __music
|
||||
{
|
||||
struct __music_task_parm task_parm;
|
||||
u16 file_err_counter; // 错误文件统计
|
||||
u8 file_play_direct; // 0:下一曲, 1:上一曲
|
||||
@ -70,20 +72,21 @@ struct __music music_hdl;
|
||||
|
||||
static struct __breakpoint *breakpoint = NULL;
|
||||
|
||||
|
||||
static void music_player_play_start(void);
|
||||
|
||||
/// 设备提示音使能
|
||||
#define MUSIC_DEVICE_TONE_EN 0
|
||||
#if (MUSIC_DEVICE_TONE_EN)
|
||||
struct __dev_tone {
|
||||
struct __dev_tone
|
||||
{
|
||||
char *logo;
|
||||
char *phy_logo;
|
||||
char *tone_path;
|
||||
u16 index;
|
||||
};
|
||||
|
||||
enum {
|
||||
enum
|
||||
{
|
||||
/// 0x1000起始为了不要跟提示音的IDEX_TONE_重叠了
|
||||
DEVICE_INDEX_UDISK = 0x1000,
|
||||
DEVICE_INDEX_UDISK_REC,
|
||||
@ -103,17 +106,21 @@ const struct __dev_tone device_tone[] = {
|
||||
static void music_tone_play_end_callback(void *priv, int flag);
|
||||
int music_device_tone_play(char *logo)
|
||||
{
|
||||
if (logo == NULL) {
|
||||
if (logo == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
printf("__this->device_tone_dev = %s, logo =%s\n", __this->device_tone_dev, logo);
|
||||
char *phy_logo = dev_manager_get_phy_logo(dev_manager_find_spec(logo, 0));
|
||||
if (phy_logo && (strcmp(__this->device_tone_dev, phy_logo) == 0)) {
|
||||
if (phy_logo && (strcmp(__this->device_tone_dev, phy_logo) == 0))
|
||||
{
|
||||
log_i("[%s, %d]the same phy dev, no need device tone!!\n", logo, __LINE__);
|
||||
return false;
|
||||
}
|
||||
for (int i = 0; i < ARRAY_SIZE(device_tone); i++) {
|
||||
if (strcmp(device_tone[i].logo, logo) == 0) {
|
||||
for (int i = 0; i < ARRAY_SIZE(device_tone); i++)
|
||||
{
|
||||
if (strcmp(device_tone[i].logo, logo) == 0)
|
||||
{
|
||||
log_i("[%s, %d]device_tone play \n", logo, __LINE__);
|
||||
memset(__this->device_tone_dev, 0, sizeof(__this->device_tone_dev));
|
||||
memcpy(__this->device_tone_dev, device_tone[i].phy_logo, strlen(device_tone[i].phy_logo));
|
||||
@ -126,8 +133,6 @@ int music_device_tone_play(char *logo)
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if TCFG_LFN_EN
|
||||
static u8 music_file_name[128] = {0}; // 长文件名
|
||||
u16 music_file_name_len = 0;
|
||||
@ -138,7 +143,8 @@ u16 music_file_name_len = 0;
|
||||
|
||||
const char *music_file_get_cur_name(int *len, int *is_unicode)
|
||||
{
|
||||
if (music_file_name[0] == '\\' && music_file_name[1] == 'U') {
|
||||
if (music_file_name[0] == '\\' && music_file_name[1] == 'U')
|
||||
{
|
||||
*is_unicode = 1;
|
||||
*len = music_file_name_len - 2;
|
||||
return (const char *)(music_file_name + 2);
|
||||
@ -148,26 +154,28 @@ const char *music_file_get_cur_name(int *len, int *is_unicode)
|
||||
return (const char *)music_file_name;
|
||||
}
|
||||
|
||||
|
||||
static void music_set_dev_sync_mode(char *logo, u8 mode)
|
||||
{
|
||||
if (logo) {
|
||||
if (logo)
|
||||
{
|
||||
struct imount *mount_hdl = NULL;
|
||||
u8 async_mode = mode;
|
||||
|
||||
if ((!memcmp(logo, "udisk0", strlen("udisk0")))
|
||||
|| (!memcmp(logo, "udisk0_rec", strlen("udisk0_rec")))) {
|
||||
if ((!memcmp(logo, "udisk0", strlen("udisk0"))) || (!memcmp(logo, "udisk0_rec", strlen("udisk0_rec"))))
|
||||
{
|
||||
struct file_dec_hdl *dec = get_file_dec_hdl();
|
||||
if (dec) {
|
||||
if (dec)
|
||||
{
|
||||
mount_hdl = dev_manager_get_mount_hdl(dev_manager_find_spec(logo, 0));
|
||||
if (mount_hdl) {
|
||||
if (dec->file_dec.decoder.dec_ops->coding_type == AUDIO_CODING_APE
|
||||
|| dec->file_dec.decoder.dec_ops->coding_type == AUDIO_CODING_FLAC
|
||||
|| dec->file_dec.decoder.dec_ops->coding_type == AUDIO_CODING_DTS
|
||||
|| dec->file_dec.decoder.dec_ops->coding_type == AUDIO_CODING_WAV) {
|
||||
if (mount_hdl)
|
||||
{
|
||||
if (dec->file_dec.decoder.dec_ops->coding_type == AUDIO_CODING_APE || dec->file_dec.decoder.dec_ops->coding_type == AUDIO_CODING_FLAC || dec->file_dec.decoder.dec_ops->coding_type == AUDIO_CODING_DTS || dec->file_dec.decoder.dec_ops->coding_type == AUDIO_CODING_WAV)
|
||||
{
|
||||
/// 指定解码格式开启该功能
|
||||
dev_ioctl(mount_hdl->dev.fd, IOCTL_SET_ASYNC_MODE, (u32)async_mode);
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
/// 不指定的解码格式不开启
|
||||
async_mode = 0;
|
||||
dev_ioctl(mount_hdl->dev.fd, IOCTL_SET_ASYNC_MODE, (u32)async_mode);
|
||||
@ -175,10 +183,13 @@ static void music_set_dev_sync_mode(char *logo, u8 mode)
|
||||
printf("udisk, set usb ASYNC = %d\n", async_mode);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
// 不是udisk, 如果udisk在线, 将udisk设置成非AYSNC_MODE
|
||||
mount_hdl = dev_manager_get_mount_hdl(dev_manager_find_spec("udisk0", 0));
|
||||
if (mount_hdl) {
|
||||
if (mount_hdl)
|
||||
{
|
||||
async_mode = 0;
|
||||
printf("not udisk, set usb ASYNC = 0\n");
|
||||
dev_ioctl(mount_hdl->dev.fd, IOCTL_SET_ASYNC_MODE, (u32)async_mode);
|
||||
@ -187,7 +198,6 @@ static void music_set_dev_sync_mode(char *logo, u8 mode)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//*----------------------------------------------------------------------------*/
|
||||
/**@brief music 解码成功回调
|
||||
@param priv:私有参数, parm:暂时未用
|
||||
@ -214,19 +224,21 @@ static void music_player_play_success(void *priv, int parm)
|
||||
log_i("file indir = %d\n", music_player_get_fileindir_number());
|
||||
music_file_name_len = fget_name(music_player_get_file_hdl(), music_file_name, sizeof(music_file_name));
|
||||
int unicode = 0;
|
||||
if ((music_file_name[0] == '\\') && (music_file_name[1] == 'U')) {
|
||||
if ((music_file_name[0] == '\\') && (music_file_name[1] == 'U'))
|
||||
{
|
||||
unicode = 1;
|
||||
music_file_name_len -= 2;
|
||||
log_i("cur file = %s, len = %d, unicode = %d\n", music_file_name + 2, music_file_name_len, unicode);
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
log_i("cur file = %s, len = %d, unicode = %d\n", music_file_name, music_file_name_len, unicode);
|
||||
}
|
||||
log_i("\n");
|
||||
|
||||
|
||||
|
||||
/// save breakpoint, 只保存文件信息
|
||||
if (music_player_get_playing_breakpoint(breakpoint, 0) == true) {
|
||||
if (music_player_get_playing_breakpoint(breakpoint, 0) == true)
|
||||
{
|
||||
breakpoint_vm_write(breakpoint, logo);
|
||||
}
|
||||
|
||||
@ -237,7 +249,6 @@ static void music_player_play_success(void *priv, int parm)
|
||||
/// smartbox info update
|
||||
SMARTBOX_UPDATE(MUSIC_FUNCTION_MASK,
|
||||
BIT(MUSIC_INFO_ATTR_STATUS) | BIT(MUSIC_INFO_ATTR_FILE_NAME) | BIT(MUSIC_INFO_ATTR_FILE_PLAY_MODE));
|
||||
|
||||
}
|
||||
//*----------------------------------------------------------------------------*/
|
||||
/**@brief music 解码结束回调处理
|
||||
@ -282,35 +293,44 @@ static int music_player_scandisk_break(void)
|
||||
char *logo = NULL;
|
||||
char *evt_logo = NULL;
|
||||
app_task_get_msg(msg, ARRAY_SIZE(msg), 0);
|
||||
switch (msg[0]) {
|
||||
switch (msg[0])
|
||||
{
|
||||
case APP_MSG_SYS_EVENT:
|
||||
event = (struct sys_event *)(&msg[1]);
|
||||
switch (event->type) {
|
||||
switch (event->type)
|
||||
{
|
||||
case SYS_DEVICE_EVENT:
|
||||
switch ((u32)event->arg) {
|
||||
switch ((u32)event->arg)
|
||||
{
|
||||
case DRIVER_EVENT_FROM_SD0:
|
||||
case DRIVER_EVENT_FROM_SD1:
|
||||
case DRIVER_EVENT_FROM_SD2:
|
||||
evt_logo = (char *)event->u.dev.value;
|
||||
case DEVICE_EVENT_FROM_OTG:
|
||||
if ((u32)event->arg == DEVICE_EVENT_FROM_OTG) {
|
||||
if ((u32)event->arg == DEVICE_EVENT_FROM_OTG)
|
||||
{
|
||||
evt_logo = (char *)"udisk0";
|
||||
}
|
||||
/// 设备上下线底层推出的设备逻辑盘符是跟跟音乐设备一致的(音乐/录音设备, 详细看接口注释)
|
||||
int str_len = 0;
|
||||
logo = music_player_get_phy_dev(&str_len);
|
||||
/// 响应设备插拔打断
|
||||
if (event->u.dev.event == DEVICE_EVENT_OUT) {
|
||||
if (event->u.dev.event == DEVICE_EVENT_OUT)
|
||||
{
|
||||
log_i("__func__ = %s logo=%s evt_logo=%s %d\n", __FUNCTION__, logo, evt_logo, str_len);
|
||||
if (logo && (0 == memcmp(logo, evt_logo, str_len))) {
|
||||
if (logo && (0 == memcmp(logo, evt_logo, str_len)))
|
||||
{
|
||||
/// 相同的设备才响应
|
||||
__this->scandisk_break = 1;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
/// 响应新设备上线
|
||||
__this->scandisk_break = 1;
|
||||
}
|
||||
if (__this->scandisk_break == 0) {
|
||||
if (__this->scandisk_break == 0)
|
||||
{
|
||||
log_i("__func__ = %s DEVICE_EVENT_OUT TODO\n", __FUNCTION__);
|
||||
dev_status_event_filter(event);
|
||||
log_i("__func__ = %s DEVICE_EVENT_OUT OK\n", __FUNCTION__);
|
||||
@ -319,12 +339,14 @@ static int music_player_scandisk_break(void)
|
||||
}
|
||||
break;
|
||||
case SYS_BT_EVENT:
|
||||
if (bt_background_event_handler_filter(event)) {
|
||||
if (bt_background_event_handler_filter(event))
|
||||
{
|
||||
__this->scandisk_break = 1;
|
||||
}
|
||||
break;
|
||||
case SYS_KEY_EVENT:
|
||||
switch (event->u.key.event) {
|
||||
switch (event->u.key.event)
|
||||
{
|
||||
case KEY_CHANGE_MODE:
|
||||
/// 响应切换模式事件
|
||||
__this->scandisk_break = 1;
|
||||
@ -332,7 +354,8 @@ static int music_player_scandisk_break(void)
|
||||
// 其他按键case 在这里增加
|
||||
}
|
||||
/// 因为TWS转发sys_event_notify需要用原始的按键序号, 未经过按键表处理, 所以这里要特殊处理
|
||||
if (__this->scandisk_break) {
|
||||
if (__this->scandisk_break)
|
||||
{
|
||||
app_task_put_key_msg(event->u.key.event, (int)event->u.key.value);
|
||||
printf("key break scan!!");
|
||||
return 1;
|
||||
@ -341,12 +364,15 @@ static int music_player_scandisk_break(void)
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (__this->scandisk_break) {
|
||||
if (__this->scandisk_break)
|
||||
{
|
||||
/// 查询到需要打断的事件, 返回1, 并且重新推送一次该事件,跑主循环处理流程
|
||||
sys_event_notify(event);
|
||||
printf("scandisk_break!!!!!!\n");
|
||||
return 1;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@ -362,11 +388,13 @@ static void scan_enter(struct __dev *dev)
|
||||
{
|
||||
#if SD_BAUD_RATE_CHANGE_WHEN_SCAN
|
||||
struct imount *mount_hdl = dev_manager_get_mount_hdl(dev);
|
||||
if (mount_hdl) {
|
||||
if ((!memcmp(dev_manager_get_logo(dev), "sd0", strlen("sd0")))
|
||||
|| (!memcmp(dev_manager_get_logo(dev), "sd1", strlen("sd1")))) {
|
||||
if (mount_hdl)
|
||||
{
|
||||
if ((!memcmp(dev_manager_get_logo(dev), "sd0", strlen("sd0"))) || (!memcmp(dev_manager_get_logo(dev), "sd1", strlen("sd1"))))
|
||||
{
|
||||
dev_ioctl(mount_hdl->dev.fd, IOCTL_GET_SPEED, (u32)&__this->old_speed); // 获取sd速度
|
||||
if (SD_BAUD_RATE_CHANGE_WHEN_SCAN > __this->old_speed) { //设定速度大于获取的才加速
|
||||
if (SD_BAUD_RATE_CHANGE_WHEN_SCAN > __this->old_speed)
|
||||
{ // 设定速度大于获取的才加速
|
||||
dev_ioctl(mount_hdl->dev.fd, IOCTL_SET_SPEED, SD_BAUD_RATE_CHANGE_WHEN_SCAN);
|
||||
}
|
||||
}
|
||||
@ -379,10 +407,12 @@ static void scan_exit(struct __dev *dev)
|
||||
{
|
||||
#ifdef SD_BAUD_RATE_CHANGE_WHEN_SCAN
|
||||
struct imount *mount_hdl = dev_manager_get_mount_hdl(dev);
|
||||
if (mount_hdl) {
|
||||
if ((!memcmp(dev_manager_get_logo(dev), "sd0", strlen("sd0")))
|
||||
|| (!memcmp(dev_manager_get_logo(dev), "sd1", strlen("sd1")))) {
|
||||
if (SD_BAUD_RATE_CHANGE_WHEN_SCAN > __this->old_speed) {
|
||||
if (mount_hdl)
|
||||
{
|
||||
if ((!memcmp(dev_manager_get_logo(dev), "sd0", strlen("sd0"))) || (!memcmp(dev_manager_get_logo(dev), "sd1", strlen("sd1"))))
|
||||
{
|
||||
if (SD_BAUD_RATE_CHANGE_WHEN_SCAN > __this->old_speed)
|
||||
{
|
||||
dev_ioctl(mount_hdl->dev.fd, IOCTL_SET_SPEED, __this->old_speed); // 恢复原速
|
||||
}
|
||||
}
|
||||
@ -409,12 +439,14 @@ static void music_tone_play_end_callback(void *priv, int flag)
|
||||
u32 index = (u32)priv;
|
||||
char *logo = NULL;
|
||||
|
||||
if (APP_MUSIC_TASK != app_get_curr_task()) {
|
||||
if (APP_MUSIC_TASK != app_get_curr_task())
|
||||
{
|
||||
log_error("tone callback task out \n");
|
||||
return;
|
||||
}
|
||||
|
||||
switch (index) {
|
||||
switch (index)
|
||||
{
|
||||
case IDEX_TONE_MUSIC:
|
||||
/// 提示音播放结束, 启动播放器播放
|
||||
music_player_play_start();
|
||||
@ -426,8 +458,10 @@ static void music_tone_play_end_callback(void *priv, int flag)
|
||||
case DEVICE_INDEX_SD0_REC:
|
||||
case DEVICE_INDEX_SD1:
|
||||
case DEVICE_INDEX_SD1_REC:
|
||||
for (int i = 0; i < ARRAY_SIZE(device_tone); i++) {
|
||||
if (index == device_tone[i].index) {
|
||||
for (int i = 0; i < ARRAY_SIZE(device_tone); i++)
|
||||
{
|
||||
if (index == device_tone[i].index)
|
||||
{
|
||||
logo = device_tone[i].logo;
|
||||
break;
|
||||
}
|
||||
@ -440,7 +474,6 @@ static void music_tone_play_end_callback(void *priv, int flag)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//*----------------------------------------------------------------------------*/
|
||||
/**@brief music 模式解码错误处理
|
||||
@param err:错误码,详细错误码描述请看MUSIC_PLAYER错误码表枚举
|
||||
@ -452,15 +485,18 @@ void music_player_err_deal(int err)
|
||||
{
|
||||
u16 msg = KEY_NULL;
|
||||
char *logo = NULL;
|
||||
if (err != MUSIC_PLAYER_ERR_NULL && err != MUSIC_PLAYER_ERR_DECODE_FAIL) {
|
||||
if (err != MUSIC_PLAYER_ERR_NULL && err != MUSIC_PLAYER_ERR_DECODE_FAIL)
|
||||
{
|
||||
__this->file_err_counter = 0; /// 清除错误文件累计
|
||||
}
|
||||
|
||||
if (err != MUSIC_PLAYER_ERR_NULL && err != MUSIC_PLAYER_SUCC) {
|
||||
if (err != MUSIC_PLAYER_ERR_NULL && err != MUSIC_PLAYER_SUCC)
|
||||
{
|
||||
log_e("music player err = %d\n", err);
|
||||
}
|
||||
|
||||
switch (err) {
|
||||
switch (err)
|
||||
{
|
||||
case MUSIC_PLAYER_SUCC:
|
||||
__this->file_err_counter = 0;
|
||||
break;
|
||||
@ -471,35 +507,48 @@ void music_player_err_deal(int err)
|
||||
msg = KEY_MUSIC_PLAYER_QUIT; // 退出音乐模式
|
||||
break;
|
||||
case MUSIC_PLAYER_ERR_DECODE_FAIL:
|
||||
if (__this->file_err_counter >= music_player_get_file_total()) {
|
||||
if (__this->file_err_counter >= music_player_get_file_total())
|
||||
{
|
||||
__this->file_err_counter = 0;
|
||||
dev_manager_set_valid_by_logo(music_player_get_dev_cur(), 0); /// 将设备设置为无效设备
|
||||
if (dev_manager_get_total(1) == 0) {//参数为1 :获取所有有效设备 参数0:获取所有设备
|
||||
if (dev_manager_get_total(1) == 0)
|
||||
{ // 参数为1 :获取所有有效设备 参数0:获取所有设备
|
||||
msg = KEY_MUSIC_PLAYER_QUIT; // 没有设备了,退出音乐模式
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
msg = KEY_MUSIC_AUTO_NEXT_DEV; /// 所有文件都是错误的, 切换到下一个设备
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
__this->file_err_counter++;
|
||||
if (__this->file_play_direct == 0) {
|
||||
if (__this->file_play_direct == 0)
|
||||
{
|
||||
msg = KEY_MUSIC_NEXT; // 播放下一曲
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
msg = KEY_MUSIC_PREV; // 播放上一曲
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MUSIC_PLAYER_ERR_DEV_NOFOUND:
|
||||
log_e("MUSIC_PLAYER_ERR_DEV_NOFOUND \n");
|
||||
if (dev_manager_get_total(1) == 0) {//参数为1 :获取所有有效设备 参数0:获取所有设备
|
||||
if (dev_manager_get_total(1) == 0)
|
||||
{ // 参数为1 :获取所有有效设备 参数0:获取所有设备
|
||||
msg = KEY_MUSIC_PLAYER_QUIT; /// 没有设备在线, 退出音乐模式
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
msg = KEY_MUSIC_PLAYER_START; /// 没有找到指定设备, 播放之前的活动设备
|
||||
}
|
||||
break;
|
||||
|
||||
case MUSIC_PLAYER_ERR_FSCAN:
|
||||
/// 需要结合music_player_scandisk_break中处理的标志位处理
|
||||
if (__this->scandisk_break) {
|
||||
if (__this->scandisk_break)
|
||||
{
|
||||
__this->scandisk_break = 0;
|
||||
/// 此处不做任何处理, 打断的事件已经重发, 由重发事件执行后续处理
|
||||
break;
|
||||
@ -508,45 +557,59 @@ void music_player_err_deal(int err)
|
||||
case MUSIC_PLAYER_ERR_DEV_OFFLINE:
|
||||
log_e("MUSIC_PLAYER_ERR_DEV_OFFLINE \n");
|
||||
logo = music_player_get_dev_cur();
|
||||
if (dev_manager_online_check_by_logo(logo, 1)) {
|
||||
if (dev_manager_online_check_by_logo(logo, 1))
|
||||
{
|
||||
/// 如果错误失败在线, 并且是播放过程中产生的,先记录下断点
|
||||
if (music_player_get_playing_breakpoint(breakpoint, 1) == true) {
|
||||
if (music_player_get_playing_breakpoint(breakpoint, 1) == true)
|
||||
{
|
||||
music_player_stop(0); // 先停止,防止下一步操作VM卡顿
|
||||
breakpoint_vm_write(breakpoint, logo);
|
||||
}
|
||||
if (err == MUSIC_PLAYER_ERR_FSCAN) {
|
||||
if (err == MUSIC_PLAYER_ERR_FSCAN)
|
||||
{
|
||||
dev_manager_set_valid_by_logo(logo, 0); /// 将设备设置为无效设备
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
// 针对读错误, 因为时间推到应用层有延时导致下一个模式判断不正常, 此处需要将设备卸载
|
||||
dev_manager_unmount(logo);
|
||||
}
|
||||
}
|
||||
if (dev_manager_get_total(1) == 0) {
|
||||
if (dev_manager_get_total(1) == 0)
|
||||
{
|
||||
app_status_handler(APP_STATUS_MUSIC_QUIT);
|
||||
msg = KEY_MUSIC_PLAYER_QUIT; /// 没有设备在线, 退出音乐模式
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
msg = KEY_MUSIC_AUTO_NEXT_DEV; /// 切换设备
|
||||
}
|
||||
break;
|
||||
case MUSIC_PLAYER_ERR_FILE_NOFOUND:
|
||||
/// 查找文件有扫盘的可能,也需要结合music_player_scandisk_break中处理的标志位处理
|
||||
if (__this->scandisk_break) {
|
||||
if (__this->scandisk_break)
|
||||
{
|
||||
__this->scandisk_break = 0;
|
||||
/// 此处不做任何处理, 打断的事件已经重发, 由重发事件执行后续处理
|
||||
break;
|
||||
}
|
||||
case MUSIC_PLAYER_ERR_PARM:
|
||||
logo = music_player_get_dev_cur();
|
||||
if (dev_manager_online_check_by_logo(logo, 1)) {
|
||||
if (music_player_get_file_total()) {
|
||||
if (dev_manager_online_check_by_logo(logo, 1))
|
||||
{
|
||||
if (music_player_get_file_total())
|
||||
{
|
||||
msg = KEY_MUSIC_PLAYER_PLAY_FIRST; /// 有文件,播放第一个文件
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (dev_manager_get_total(1) == 0) {
|
||||
if (dev_manager_get_total(1) == 0)
|
||||
{
|
||||
msg = KEY_MUSIC_PLAYER_QUIT; // 没有设备了,退出音乐模式
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
msg = KEY_MUSIC_AUTO_NEXT_DEV;
|
||||
}
|
||||
break;
|
||||
@ -554,7 +617,8 @@ void music_player_err_deal(int err)
|
||||
msg = KEY_MUSIC_NEXT; // 播放下一曲
|
||||
break;
|
||||
}
|
||||
if (msg != KEY_NULL) {
|
||||
if (msg != KEY_NULL)
|
||||
{
|
||||
app_task_put_key_msg(msg, 0);
|
||||
}
|
||||
}
|
||||
@ -580,15 +644,20 @@ static int music_key_event_opr(struct sys_event *event)
|
||||
|
||||
log_i("music task msg = %d\n", msg[0]);
|
||||
|
||||
switch (msg[0]) {
|
||||
switch (msg[0])
|
||||
{
|
||||
case KEY_MUSIC_DEVICE_TONE_END:
|
||||
#if (MUSIC_DEVICE_TONE_EN)
|
||||
logo = (char *)msg[1];
|
||||
log_i("KEY_MUSIC_DEVICE_TONE_END %s\n", logo);
|
||||
if (logo) {
|
||||
if (true == breakpoint_vm_read(breakpoint, logo)) {
|
||||
if (logo)
|
||||
{
|
||||
if (true == breakpoint_vm_read(breakpoint, logo))
|
||||
{
|
||||
err = music_player_play_by_breakpoint(logo, breakpoint);
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
err = music_player_play_first_file(logo);
|
||||
}
|
||||
}
|
||||
@ -599,23 +668,30 @@ static int music_key_event_opr(struct sys_event *event)
|
||||
app_status_handler(APP_STATUS_MUSIC_PLAY);
|
||||
/// 断点播放活动设备
|
||||
logo = dev_manager_get_logo(dev_manager_find_active(1));
|
||||
if (music_player_get_play_status() == FILE_DEC_STATUS_PLAY) {
|
||||
if (music_player_get_dev_cur() && logo) {
|
||||
if (music_player_get_play_status() == FILE_DEC_STATUS_PLAY)
|
||||
{
|
||||
if (music_player_get_dev_cur() && logo)
|
||||
{
|
||||
/// 播放的设备跟当前活动的设备是同一个设备,不处理
|
||||
if (0 == strcmp(logo, music_player_get_dev_cur())) {
|
||||
if (0 == strcmp(logo, music_player_get_dev_cur()))
|
||||
{
|
||||
log_w("the same dev!!\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#if (MUSIC_DEVICE_TONE_EN)
|
||||
if (music_device_tone_play(logo) == true) {
|
||||
if (music_device_tone_play(logo) == true)
|
||||
{
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
if (true == breakpoint_vm_read(breakpoint, logo)) {
|
||||
if (true == breakpoint_vm_read(breakpoint, logo))
|
||||
{
|
||||
err = music_player_play_by_breakpoint(logo, breakpoint);
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
err = music_player_play_first_file(logo);
|
||||
}
|
||||
break;
|
||||
@ -637,17 +713,22 @@ static int music_key_event_opr(struct sys_event *event)
|
||||
case KEY_MUSIC_PP:
|
||||
log_i("KEY_MUSIC_PP\n");
|
||||
logo = music_player_get_dev_cur();
|
||||
if (music_player_get_play_status() == FILE_DEC_STATUS_PLAY) {
|
||||
if (music_player_get_play_status() == FILE_DEC_STATUS_PLAY)
|
||||
{
|
||||
music_set_dev_sync_mode(logo, 0);
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
music_set_dev_sync_mode(logo, 1);
|
||||
|
||||
}
|
||||
err = music_player_pp();
|
||||
if (music_player_get_play_status() == FILE_DEC_STATUS_PLAY) {
|
||||
if (music_player_get_play_status() == FILE_DEC_STATUS_PLAY)
|
||||
{
|
||||
app_status_handler(APP_STATUS_MUSIC_PLAY);
|
||||
ui_update_status(STATUS_MUSIC_PLAY);
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
app_status_handler(APP_STATUS_MUSIC_PP);
|
||||
ui_update_status(STATUS_MUSIC_PAUSE);
|
||||
/* tone_play_by_path(tone_table[IDEX_TONE_MAX_VOL],1); */
|
||||
@ -689,22 +770,28 @@ static int music_key_event_opr(struct sys_event *event)
|
||||
auto_next_dev = ((msg[0] == KEY_MUSIC_AUTO_NEXT_DEV) ? 1 : 0);
|
||||
logo = music_player_get_dev_next(auto_next_dev);
|
||||
printf("next dev = %s\n", logo);
|
||||
if (logo == NULL) { ///找不到下一个设备,不响应设备切换
|
||||
if (logo == NULL)
|
||||
{ /// 找不到下一个设备,不响应设备切换
|
||||
break;
|
||||
}
|
||||
/// 切换设备前先保存一下上一个设备的断点信息,包括文件和解码信息
|
||||
if (music_player_get_playing_breakpoint(breakpoint, 1) == true) {
|
||||
if (music_player_get_playing_breakpoint(breakpoint, 1) == true)
|
||||
{
|
||||
music_player_stop(0); // 先停止,防止下一步操作VM卡顿
|
||||
breakpoint_vm_write(breakpoint, music_player_get_dev_cur());
|
||||
}
|
||||
#if (MUSIC_DEVICE_TONE_EN)
|
||||
if (music_device_tone_play(logo) == true) {
|
||||
if (music_device_tone_play(logo) == true)
|
||||
{
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
if (true == breakpoint_vm_read(breakpoint, logo)) {
|
||||
if (true == breakpoint_vm_read(breakpoint, logo))
|
||||
{
|
||||
err = music_player_play_by_breakpoint(logo, breakpoint);
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
err = music_player_play_first_file(logo);
|
||||
}
|
||||
break;
|
||||
@ -712,12 +799,16 @@ static int music_key_event_opr(struct sys_event *event)
|
||||
log_i("KEY_MUSIC_PLAYE_REC_FOLDER_SWITCH\n");
|
||||
#if (TCFG_RECORD_FOLDER_DEV_ENABLE)
|
||||
/// 尝试保存断点
|
||||
if (music_player_get_playing_breakpoint(breakpoint, 1) == true) {
|
||||
if (music_player_get_playing_breakpoint(breakpoint, 1) == true)
|
||||
{
|
||||
breakpoint_vm_write(breakpoint, music_player_get_dev_cur());
|
||||
}
|
||||
if (true == breakpoint_vm_read(breakpoint, music_player_get_cur_music_dev())) {
|
||||
if (true == breakpoint_vm_read(breakpoint, music_player_get_cur_music_dev()))
|
||||
{
|
||||
err = music_player_play_record_folder(NULL, breakpoint);
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
err = music_player_play_record_folder(NULL, NULL);
|
||||
}
|
||||
#endif // TCFG_RECORD_FOLDER_DEV_ENABLE
|
||||
@ -737,7 +828,6 @@ static int music_key_event_opr(struct sys_event *event)
|
||||
err = music_player_play_by_path((char *)"udisk0", "/sin.wav"); /// this is a demo
|
||||
break;
|
||||
|
||||
|
||||
/// 非播放执行类消息
|
||||
case KEY_MUSIC_FF:
|
||||
log_i("KEY_MUSIC_FF\n");
|
||||
@ -752,7 +842,8 @@ static int music_key_event_opr(struct sys_event *event)
|
||||
case KEY_MUSIC_CHANGE_REPEAT:
|
||||
log_i("KEY_MUSIC_CHANGE_REPEAT\n");
|
||||
mode = music_player_change_repeat_mode();
|
||||
if (mode > 0) {
|
||||
if (mode > 0)
|
||||
{
|
||||
UI_SHOW_MENU(MENU_MUSIC_REPEATMODE, 1000, mode, NULL);
|
||||
}
|
||||
break;
|
||||
@ -769,7 +860,6 @@ static int music_key_event_opr(struct sys_event *event)
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
/// 错误处理
|
||||
music_player_err_deal(err);
|
||||
/// smartbox info update
|
||||
@ -779,7 +869,6 @@ static int music_key_event_opr(struct sys_event *event)
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
//*----------------------------------------------------------------------------*/
|
||||
/**@brief music 设备事件响应接口
|
||||
@param 无
|
||||
@ -792,29 +881,36 @@ static int music_sys_event_handler(struct sys_event *event)
|
||||
int err = 0;
|
||||
char *logo = NULL;
|
||||
char *evt_logo = NULL;
|
||||
switch (event->type) {
|
||||
switch (event->type)
|
||||
{
|
||||
case SYS_KEY_EVENT:
|
||||
return music_key_event_opr(event);
|
||||
case SYS_DEVICE_EVENT:
|
||||
switch ((u32)event->arg) {
|
||||
switch ((u32)event->arg)
|
||||
{
|
||||
case DRIVER_EVENT_FROM_SD0:
|
||||
case DRIVER_EVENT_FROM_SD1:
|
||||
case DRIVER_EVENT_FROM_SD2:
|
||||
evt_logo = (char *)event->u.dev.value;
|
||||
case DEVICE_EVENT_FROM_OTG:
|
||||
if ((u32)event->arg == DEVICE_EVENT_FROM_OTG) {
|
||||
if ((u32)event->arg == DEVICE_EVENT_FROM_OTG)
|
||||
{
|
||||
evt_logo = (char *)"udisk0";
|
||||
}
|
||||
int str_len = 0;
|
||||
logo = music_player_get_phy_dev(&str_len);
|
||||
log_i("evt_logo =%s, logo = %s len =%d\n", evt_logo, logo, str_len);
|
||||
if (event->u.dev.event == DEVICE_EVENT_OUT) {
|
||||
if (logo == NULL) {
|
||||
if (event->u.dev.event == DEVICE_EVENT_OUT)
|
||||
{
|
||||
if (logo == NULL)
|
||||
{
|
||||
break;
|
||||
}
|
||||
if (logo && (0 == memcmp(logo, evt_logo, str_len))) {
|
||||
if (logo && (0 == memcmp(logo, evt_logo, str_len)))
|
||||
{
|
||||
/// 相同的设备才响应
|
||||
if (music_player_get_playing_breakpoint(breakpoint, 1) == true) {
|
||||
if (music_player_get_playing_breakpoint(breakpoint, 1) == true)
|
||||
{
|
||||
breakpoint_vm_write(breakpoint, logo);
|
||||
}
|
||||
memset(__this->device_tone_dev, 0, sizeof(__this->device_tone_dev));
|
||||
@ -824,7 +920,9 @@ static int music_sys_event_handler(struct sys_event *event)
|
||||
app_task_put_key_msg(KEY_MUSIC_PLAYER_START, 0); // 卸载了设备再执行
|
||||
log_i("KEY_MUSIC_PLAYER_START AFTER UMOUNT\n");
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
#if (MUSIC_DEV_ONLINE_START_AFTER_MOUNT_EN == 0)
|
||||
music_task_dev_online_start();
|
||||
#endif
|
||||
@ -866,7 +964,8 @@ void music_task_set_parm(u8 type, int val)
|
||||
/*----------------------------------------------------------------------------*/
|
||||
static void music_player_play_start(void)
|
||||
{
|
||||
switch (__this->task_parm.type) {
|
||||
switch (__this->task_parm.type)
|
||||
{
|
||||
case MUSIC_TASK_START_BY_NORMAL:
|
||||
log_i("MUSIC_TASK_START_BY_NORMAL\n");
|
||||
app_task_put_key_msg(KEY_MUSIC_PLAYER_START, 0);
|
||||
@ -882,7 +981,6 @@ static void music_player_play_start(void)
|
||||
/// 提示音播放失败,直接推送KEY_MUSIC_PLAYER_START启动播放
|
||||
}
|
||||
|
||||
|
||||
//*----------------------------------------------------------------------------*/
|
||||
/**@brief music 模式新设备上线处理
|
||||
@param 无
|
||||
@ -894,9 +992,11 @@ void music_task_dev_online_start(void)
|
||||
{
|
||||
u8 save = 0;
|
||||
char *logo = music_player_get_dev_cur();
|
||||
if (logo && breakpoint) {
|
||||
if (logo && breakpoint)
|
||||
{
|
||||
/// 新设备上线, 先记录当前设备断点, 然后播放活动设备
|
||||
if (music_player_get_playing_breakpoint(breakpoint, 1) == true) {
|
||||
if (music_player_get_playing_breakpoint(breakpoint, 1) == true)
|
||||
{
|
||||
save = 1;
|
||||
// 这里不要直接记忆断点, 解码停了之后再记忆
|
||||
// breakpoint_vm_write(breakpoint, logo);
|
||||
@ -904,7 +1004,8 @@ void music_task_dev_online_start(void)
|
||||
}
|
||||
/// 停止解码,播放新活动设备
|
||||
music_player_stop(1);
|
||||
if (save && breakpoint) {
|
||||
if (save && breakpoint)
|
||||
{
|
||||
breakpoint_vm_write(breakpoint, logo);
|
||||
}
|
||||
app_task_put_key_msg(KEY_MUSIC_PLAYER_START, 0);
|
||||
@ -938,7 +1039,6 @@ static void music_task_start()
|
||||
/// 按键使能
|
||||
sys_key_event_enable();
|
||||
|
||||
|
||||
/// 播放器初始化
|
||||
struct __player_parm parm = {0};
|
||||
parm.cb = &music_player_callback;
|
||||
@ -964,7 +1064,8 @@ static void music_task_close()
|
||||
UI_HIDE_CURR_WINDOW();
|
||||
tone_play_stop_by_path(tone_table[IDEX_TONE_MUSIC]); // 停止播放提示音
|
||||
char *logo = music_player_get_dev_cur();
|
||||
if (music_player_get_playing_breakpoint(breakpoint, 1) == true) {
|
||||
if (music_player_get_playing_breakpoint(breakpoint, 1) == true)
|
||||
{
|
||||
breakpoint_vm_write(breakpoint, logo);
|
||||
}
|
||||
|
||||
@ -988,7 +1089,8 @@ static void music_task_close()
|
||||
/*----------------------------------------------------------------------------*/
|
||||
int music_app_check(void)
|
||||
{
|
||||
if (dev_manager_get_total(1)) {
|
||||
if (dev_manager_get_total(1))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@ -1013,10 +1115,12 @@ void app_music_task()
|
||||
#if TCFG_DEC2TWS_ENABLE
|
||||
extern void set_tws_background_connected_flag(u8 flag);
|
||||
extern u8 get_tws_background_connected_flag();
|
||||
if (get_tws_background_connected_flag()) { //不播放提示音
|
||||
if (get_tws_background_connected_flag())
|
||||
{ // 不播放提示音
|
||||
music_player_play_start();
|
||||
set_tws_background_connected_flag(0);
|
||||
} else
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
// tone_play_with_callback_by_name(tone_table[IDEX_TONE_MUSIC], 1, music_tone_play_end_callback, (void *)IDEX_TONE_MUSIC);
|
||||
@ -1026,19 +1130,22 @@ void app_music_task()
|
||||
|
||||
kt_eq_switch_to(KT_EQ_IDX_MUSIC);
|
||||
|
||||
|
||||
while (1) {
|
||||
while (1)
|
||||
{
|
||||
app_task_get_msg(msg, ARRAY_SIZE(msg), 1);
|
||||
switch (msg[0]) {
|
||||
switch (msg[0])
|
||||
{
|
||||
case APP_MSG_SYS_EVENT:
|
||||
if (music_sys_event_handler((struct sys_event *)(&msg[1])) == false) {
|
||||
if (music_sys_event_handler((struct sys_event *)(&msg[1])) == false)
|
||||
{
|
||||
app_default_event_deal((struct sys_event *)(&msg[1]));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (app_task_exitting()) {
|
||||
if (app_task_exitting())
|
||||
{
|
||||
music_task_close();
|
||||
return;
|
||||
}
|
||||
@ -1058,10 +1165,6 @@ REGISTER_LP_TARGET(music_lp_target) = {
|
||||
|
||||
void app_music_task()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1045,32 +1045,104 @@ REGISTER_LP_TARGET(audio_dec_init_lp_target) = {
|
||||
#if AUDIO_OUTPUT_AUTOMUTE
|
||||
#include "kt.h"
|
||||
#include "app_task.h"
|
||||
static u8 bt_mute_flag = 0;
|
||||
|
||||
PA_MUTE_VAR pa_mute_var = {0};
|
||||
|
||||
static void pa_mute_timer_callback(void *priv)
|
||||
{
|
||||
// 10ms timer
|
||||
if (pa_mute_var.mute_flag)
|
||||
{
|
||||
printf(">>> 1.\n");
|
||||
pa_mute_var.mute_cnt++;
|
||||
if (pa_mute_var.mute_cnt > 50)
|
||||
{
|
||||
printf(">>> 11\n");
|
||||
pa_mute_var.mute_cnt = 0;
|
||||
pa_mute_var.mute_flag = 0;
|
||||
PA_MUTE();
|
||||
}
|
||||
}
|
||||
|
||||
if (pa_mute_var.unmute_flag)
|
||||
{
|
||||
printf(">>> 2.\n");
|
||||
pa_mute_var.unmute_cnt++;
|
||||
if (pa_mute_var.unmute_cnt > 2)
|
||||
{
|
||||
printf(">>> 22\n");
|
||||
pa_mute_var.unmute_cnt = 0;
|
||||
pa_mute_var.unmute_flag = 0;
|
||||
PA_UNMUTE();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void kt_auto_mute_pa_init(void)
|
||||
{
|
||||
memset(&pa_mute_var, 0, sizeof(PA_MUTE_VAR));
|
||||
if (pa_mute_var.pa_mute_tid)
|
||||
{
|
||||
sys_timer_del(pa_mute_var.pa_mute_tid);
|
||||
pa_mute_var.pa_mute_tid = 0;
|
||||
}
|
||||
pa_mute_var.pa_mute_tid = sys_timer_add(NULL, pa_mute_timer_callback, 10);
|
||||
}
|
||||
|
||||
void audio_mix_out_automute_mute(u8 mute)
|
||||
{
|
||||
printf(">>>>>>>>>>>>>>>>>>>> %s\n", mute ? ("MUTE") : ("UNMUTE"));
|
||||
//printf(">>> %s\n", mute ? ("MUTE") : ("UNMUTE"));
|
||||
if (mute)
|
||||
{
|
||||
printf(">>> mute.\n");
|
||||
if (app_get_curr_task() == APP_LP_TASK)
|
||||
{
|
||||
printf(">>> mute1\n");
|
||||
PA_MUTE();
|
||||
pa_mute_var.mute_flag = 0;
|
||||
pa_mute_var.unmute_flag = 0;
|
||||
pa_mute_var.mute_cnt = 0;
|
||||
pa_mute_var.unmute_cnt = 0;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
printf(">>> mute2\n");
|
||||
//pa_mute_var.mute_cnt = 0;
|
||||
//pa_mute_var.mute_flag = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
printf(">>> unmute.\n");
|
||||
pa_mute_var.mute_cnt = 0;
|
||||
pa_mute_var.mute_flag = 0;
|
||||
pa_mute_var.unmute_cnt = 0;
|
||||
pa_mute_var.unmute_flag = 1;
|
||||
}
|
||||
#if 0
|
||||
if (mute)
|
||||
{
|
||||
if (app_get_curr_task() == APP_LP_TASK)
|
||||
{
|
||||
PA_MUTE();
|
||||
//PA_MUTE();
|
||||
}
|
||||
else
|
||||
{
|
||||
bt_mute_flag++;
|
||||
if (bt_mute_flag > 10)
|
||||
{
|
||||
PA_MUTE();
|
||||
}
|
||||
}
|
||||
|
||||
//PA_MUTE();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
PA_UNMUTE();
|
||||
//PA_UNMUTE();
|
||||
bt_mute_flag = 0;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* #define AUDIO_E_DET_UNMUTE (0x00) */
|
||||
@ -1115,19 +1187,18 @@ void mix_out_automute_open()
|
||||
e_det_param.unmute_time_ms = 50;
|
||||
e_det_param.count_cycle_ms = 10;
|
||||
#else
|
||||
/* 黑胶空白处喀拉声:提高 mute_energy 使表面噪声被判定为静音并 mute 掉 */
|
||||
/*
|
||||
e_det_param.mute_energy = 150;
|
||||
e_det_param.unmute_energy = 210;
|
||||
e_det_param.mute_time_ms = 30;
|
||||
e_det_param.unmute_time_ms = 20;
|
||||
e_det_param.count_cycle_ms = 5;
|
||||
*/
|
||||
e_det_param.mute_energy = 240;
|
||||
/* 混音输出自动静音:能量检测,低能量时 mute 以减少底噪/杂音(如黑胶空白处喀拉声) */
|
||||
e_det_param.mute_energy = 120; /* 能量阈值:低于此值视为“静音”,配合 mute_time_ms 达成后触发 mute */
|
||||
e_det_param.unmute_energy = 180; /* 能量阈值:高于此值视为“有声音”,配合 unmute_time_ms 达成后解除 mute */
|
||||
e_det_param.mute_time_ms = 150; /* 静音判定时长(ms):持续低能量超过此时间后才执行 mute,避免误判 */
|
||||
e_det_param.unmute_time_ms = 15; /* 解除静音时长(ms):持续高能量超过此时间后才 unmute,喀拉声随机短促宜设小 */
|
||||
e_det_param.count_cycle_ms = 5; /* 检测周期(ms):每 5ms 采样一次能量,周期越短响应越快、耗 CPU 略增 */
|
||||
|
||||
/* e_det_param.mute_energy = 240;
|
||||
e_det_param.unmute_energy = 300;
|
||||
e_det_param.mute_time_ms = 40;
|
||||
e_det_param.unmute_time_ms = 25;
|
||||
e_det_param.count_cycle_ms = 5;
|
||||
e_det_param.count_cycle_ms = 5;*/
|
||||
/*e_det_param.mute_energy = 180;
|
||||
e_det_param.unmute_energy = 240;
|
||||
e_det_param.mute_time_ms = 30;
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -2904,9 +2904,14 @@ objs/apps/kaotings/kt.c.o
|
||||
-r=objs/apps/kaotings/kt.c.o,gpio_set_pull_down,l
|
||||
-r=objs/apps/kaotings/kt.c.o,gpio_set_direction,l
|
||||
-r=objs/apps/kaotings/kt.c.o,gpio_set_output_value,l
|
||||
-r=objs/apps/kaotings/kt.c.o,printf,l
|
||||
-r=objs/apps/kaotings/kt.c.o,kt_eq_switch_to,pl
|
||||
-r=objs/apps/kaotings/kt.c.o,eff_file_switch,l
|
||||
-r=objs/apps/kaotings/kt.c.o,kt_init,pl
|
||||
-r=objs/apps/kaotings/kt.c.o,kt_auto_mute_pa_init,l
|
||||
-r=objs/apps/kaotings/kt.c.o,sys_timer_add,l
|
||||
-r=objs/apps/kaotings/kt.c.o,app_get_curr_task,l
|
||||
-r=objs/apps/kaotings/kt.c.o,get_bt_connect_status,l
|
||||
-r=objs/apps/kaotings/kt.c.o,puts,l
|
||||
objs/apps/soundbox/task_manager/app_common.c.o
|
||||
-r=objs/apps/soundbox/task_manager/app_common.c.o,app_common_key_msg_deal,pl
|
||||
@ -3015,7 +3020,6 @@ objs/apps/soundbox/task_manager/bt/bt.c.o
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,app_task_switch_next,l
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,app_bt_task,pl
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,ui_update_status,l
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,gpio_set_output_value,l
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,bt_task_init,l
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,get_tws_background_connected_flag,l
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,bt_task_start,l
|
||||
@ -3023,7 +3027,6 @@ objs/apps/soundbox/task_manager/bt/bt.c.o
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,app_default_event_deal,l
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,app_task_exitting,l
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,bt_task_close,l
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,sys_timer_del,l
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,bt_app_exit_check,pl
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,bt_app_switch_exit_check,l
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,bt_status_event_filter,l
|
||||
@ -3059,8 +3062,6 @@ objs/apps/soundbox/task_manager/bt/bt.c.o
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,bt_hci_event_page_timeout,l
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,bt_hci_event_connection_timeout,l
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,bt_hci_event_connection_exist,l
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,sys_timer_add,l
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,get_bt_connect_status,l
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,app_protocol_sys_event_handler,l
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,puts,l
|
||||
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,app_bt_hdl,pl
|
||||
@ -3381,7 +3382,6 @@ objs/apps/soundbox/task_manager/linein/linein.c.o
|
||||
-r=objs/apps/soundbox/task_manager/linein/linein.c.o,linein_app_check,pl
|
||||
-r=objs/apps/soundbox/task_manager/linein/linein.c.o,linein_is_online,l
|
||||
-r=objs/apps/soundbox/task_manager/linein/linein.c.o,app_linein_task,pl
|
||||
-r=objs/apps/soundbox/task_manager/linein/linein.c.o,gpio_set_output_value,l
|
||||
-r=objs/apps/soundbox/task_manager/linein/linein.c.o,get_bt_back_flag,l
|
||||
-r=objs/apps/soundbox/task_manager/linein/linein.c.o,set_bt_back_flag,l
|
||||
-r=objs/apps/soundbox/task_manager/linein/linein.c.o,kt_eq_switch_to,l
|
||||
@ -3449,7 +3449,6 @@ objs/apps/soundbox/task_manager/lp/lp.c.o
|
||||
-r=objs/apps/soundbox/task_manager/lp/lp.c.o,lp_app_check,pl
|
||||
-r=objs/apps/soundbox/task_manager/lp/lp.c.o,lp_is_online,l
|
||||
-r=objs/apps/soundbox/task_manager/lp/lp.c.o,app_lp_task,pl
|
||||
-r=objs/apps/soundbox/task_manager/lp/lp.c.o,gpio_set_output_value,l
|
||||
-r=objs/apps/soundbox/task_manager/lp/lp.c.o,get_bt_back_flag,l
|
||||
-r=objs/apps/soundbox/task_manager/lp/lp.c.o,set_bt_back_flag,l
|
||||
-r=objs/apps/soundbox/task_manager/lp/lp.c.o,log_print,l
|
||||
@ -3460,6 +3459,8 @@ objs/apps/soundbox/task_manager/lp/lp.c.o
|
||||
-r=objs/apps/soundbox/task_manager/lp/lp.c.o,app_task_exitting,l
|
||||
-r=objs/apps/soundbox/task_manager/lp/lp.c.o,sys_key_event_enable,l
|
||||
-r=objs/apps/soundbox/task_manager/lp/lp.c.o,clock_idle,l
|
||||
-r=objs/apps/soundbox/task_manager/lp/lp.c.o,music_app_check,l
|
||||
-r=objs/apps/soundbox/task_manager/lp/lp.c.o,app_task_switch_to,l
|
||||
-r=objs/apps/soundbox/task_manager/lp/lp.c.o,app_task_switch_next,l
|
||||
-r=objs/apps/soundbox/task_manager/lp/lp.c.o,lp_start,l
|
||||
-r=objs/apps/soundbox/task_manager/lp/lp.c.o,lp_volume_pp,l
|
||||
@ -3988,6 +3989,8 @@ objs/cpu/br23/audio_dec/audio_dec.c.o
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,audio_mixer_stream_resume,l
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,audio_stream_add_list,l
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,app_audio_volume_init,l
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,kt_auto_mute_pa_init,pl
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,sys_timer_add,l
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,audio_mix_out_automute_mute,pl
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,app_get_curr_task,l
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,gpio_set_output_value,l
|
||||
@ -4023,6 +4026,7 @@ objs/cpu/br23/audio_dec/audio_dec.c.o
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,mix_buff,pl
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,audio_phase_inver_hdl,pl
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,audio_dec_init_lp_target,pl
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,pa_mute_var,pl
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,dac_sync_buff,pl
|
||||
objs/cpu/br23/audio_dec/audio_dec_bt.c.o
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec_bt.c.o,a2dp_rx_notice_to_decode,pl
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user