修改能量mute

This commit is contained in:
FlyM 2026-03-23 14:20:03 +08:00
parent 1a0d74bdfe
commit bcdf1af495
16 changed files with 33423 additions and 33272 deletions

View File

@ -1,5 +1,14 @@
#include "kt.h" #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) 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_up(KT_CFG_MUTE_PIN, 0);
gpio_set_pull_down(KT_CFG_MUTE_PIN, 0); gpio_set_pull_down(KT_CFG_MUTE_PIN, 0);
gpio_set_direction(KT_CFG_MUTE_PIN, 0); gpio_set_direction(KT_CFG_MUTE_PIN, 0);
gpio_set_output_value(KT_CFG_MUTE_PIN, 0);
PA_MUTE(); PA_MUTE();
// b led pin // b led pin
gpio_set_pull_up(KT_CFG_B_LED_PIN, 0); 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) void kt_init(void)
{ {
printf("kt_init\n"); printf("kt_init\n");
kt_auto_mute_pa_init();
start_led_timer();
//gpio_set_output_value(KT_CFG_MUTE_PIN, 1);
} }

View File

@ -18,8 +18,11 @@
#define KT_CFG_R_LED_OFF() gpio_set_output_value(KT_CFG_R_LED_PIN, 0) #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 KT_CFG_MUTE_PIN IO_PORTB_00
#define PA_MUTE() gpio_set_output_value(KT_CFG_MUTE_PIN, 0) #define PA_MUTE() do { printf("[<"); gpio_set_output_value(KT_CFG_MUTE_PIN, 0); } while(0)
#define PA_UNMUTE() gpio_set_output_value(KT_CFG_MUTE_PIN, 1) #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_LINEIN 0
//#define KT_CFG_AUX_IDX_LP 1 //#define KT_CFG_AUX_IDX_LP 1
@ -37,6 +40,16 @@
#define KT_EQ_IDX_LP 3 #define KT_EQ_IDX_LP 3
//#define KT_EQ_IDX_NORMAL 4 //#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_eq_switch_to(u8 eq_idx);
void kt_boot_init(void); void kt_boot_init(void);

View File

@ -7,12 +7,18 @@
///模式配置表,这里可以配置切换模式的顺序,方案根据需求定义 ///模式配置表,这里可以配置切换模式的顺序,方案根据需求定义
static const u8 app_task_list[] = { static const u8 app_task_list[] = {
#if TCFG_APP_BT_EN #if TCFG_APP_MUSIC_EN
APP_BT_TASK, APP_MUSIC_TASK,
#endif
#if TCFG_APP_LP_EN
APP_LP_TASK,
#endif #endif
#if TCFG_APP_MUSIC_EN #if TCFG_APP_MUSIC_EN
APP_MUSIC_TASK, APP_MUSIC_TASK,
#endif #endif
#if TCFG_APP_BT_EN
APP_BT_TASK,
#endif
#if TCFG_APP_FM_EN #if TCFG_APP_FM_EN
APP_FM_TASK, APP_FM_TASK,
#endif #endif

View File

@ -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 蓝牙模式 /**@brief 蓝牙模式
@param @param
@ -1201,11 +1164,7 @@ void app_bt_task()
int msg[32]; int msg[32];
ui_update_status(STATUS_EXIT_LOWPOWER); 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(); // 初始化变量、时钟、显示(未进行协议栈初始化) bt_task_init(); // 初始化变量、时钟、显示(未进行协议栈初始化)
@ -1290,16 +1249,6 @@ void app_bt_task()
return; 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) if (__this->wait_exit)

View File

@ -304,10 +304,6 @@ void app_linein_task()
int res; int res;
int err = 0; int err = 0;
int msg[32]; int msg[32];
KT_CFG_R_LED_ON();
KT_CFG_B_LED_ON();
#if TCFG_APP_BT_EN #if TCFG_APP_BT_EN
linein_bt_back_flag = get_bt_back_flag(); // 从蓝牙后台返回标志 linein_bt_back_flag = get_bt_back_flag(); // 从蓝牙后台返回标志
set_bt_back_flag(0); set_bt_back_flag(0);
@ -360,8 +356,6 @@ void app_linein_task()
if (app_task_exitting()) if (app_task_exitting())
{ {
linein_task_close(); linein_task_close();
KT_CFG_R_LED_OFF();
KT_CFG_B_LED_OFF();
return; return;
} }
} }

View File

@ -287,8 +287,16 @@ static int lp_sys_event_handler(struct sys_event *event)
else if (event->u.dev.event == DEVICE_EVENT_OUT) else if (event->u.dev.event == DEVICE_EVENT_OUT)
{ {
log_info("lp offline \n"); log_info("lp offline \n");
if (music_app_check())
{
app_task_switch_to(APP_MUSIC_TASK);
}
else
{
app_task_switch_next(); app_task_switch_next();
} }
}
return true; return true;
} }
return false; return false;
@ -328,9 +336,6 @@ void app_lp_task()
int err = 0; int err = 0;
int msg[32]; int msg[32];
KT_CFG_R_LED_ON();
KT_CFG_B_LED_OFF();
#if TCFG_APP_BT_EN #if TCFG_APP_BT_EN
lp_bt_back_flag = get_bt_back_flag(); // 从蓝牙后台返回标志 lp_bt_back_flag = get_bt_back_flag(); // 从蓝牙后台返回标志
set_bt_back_flag(0); set_bt_back_flag(0);
@ -384,8 +389,6 @@ void app_lp_task()
if (app_task_exitting()) if (app_task_exitting())
{ {
lp_task_close(); lp_task_close();
KT_CFG_R_LED_OFF();
KT_CFG_B_LED_OFF();
return; return;
} }
} }

View File

@ -49,13 +49,15 @@
static u8 music_idle_flag = 1; static u8 music_idle_flag = 1;
/// 模式参数结构体 /// 模式参数结构体
struct __music_task_parm { struct __music_task_parm
{
u8 type; u8 type;
int val; int val;
}; };
/// music模式控制结构体 /// music模式控制结构体
struct __music { struct __music
{
struct __music_task_parm task_parm; struct __music_task_parm task_parm;
u16 file_err_counter; // 错误文件统计 u16 file_err_counter; // 错误文件统计
u8 file_play_direct; // 0:下一曲, 1上一曲 u8 file_play_direct; // 0:下一曲, 1上一曲
@ -70,20 +72,21 @@ struct __music music_hdl;
static struct __breakpoint *breakpoint = NULL; static struct __breakpoint *breakpoint = NULL;
static void music_player_play_start(void); static void music_player_play_start(void);
/// 设备提示音使能 /// 设备提示音使能
#define MUSIC_DEVICE_TONE_EN 0 #define MUSIC_DEVICE_TONE_EN 0
#if (MUSIC_DEVICE_TONE_EN) #if (MUSIC_DEVICE_TONE_EN)
struct __dev_tone { struct __dev_tone
{
char *logo; char *logo;
char *phy_logo; char *phy_logo;
char *tone_path; char *tone_path;
u16 index; u16 index;
}; };
enum { enum
{
/// 0x1000起始为了不要跟提示音的IDEX_TONE_重叠了 /// 0x1000起始为了不要跟提示音的IDEX_TONE_重叠了
DEVICE_INDEX_UDISK = 0x1000, DEVICE_INDEX_UDISK = 0x1000,
DEVICE_INDEX_UDISK_REC, 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); static void music_tone_play_end_callback(void *priv, int flag);
int music_device_tone_play(char *logo) int music_device_tone_play(char *logo)
{ {
if (logo == NULL) { if (logo == NULL)
{
return false; return false;
} }
printf("__this->device_tone_dev = %s, logo =%s\n", __this->device_tone_dev, logo); 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)); 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__); log_i("[%s, %d]the same phy dev, no need device tone!!\n", logo, __LINE__);
return false; return false;
} }
for (int i = 0; i < ARRAY_SIZE(device_tone); i++) { for (int i = 0; i < ARRAY_SIZE(device_tone); i++)
if (strcmp(device_tone[i].logo, logo) == 0) { {
if (strcmp(device_tone[i].logo, logo) == 0)
{
log_i("[%s, %d]device_tone play \n", logo, __LINE__); log_i("[%s, %d]device_tone play \n", logo, __LINE__);
memset(__this->device_tone_dev, 0, sizeof(__this->device_tone_dev)); 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)); 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 #endif
#if TCFG_LFN_EN #if TCFG_LFN_EN
static u8 music_file_name[128] = {0}; // 长文件名 static u8 music_file_name[128] = {0}; // 长文件名
u16 music_file_name_len = 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) 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; *is_unicode = 1;
*len = music_file_name_len - 2; *len = music_file_name_len - 2;
return (const char *)(music_file_name + 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; return (const char *)music_file_name;
} }
static void music_set_dev_sync_mode(char *logo, u8 mode) static void music_set_dev_sync_mode(char *logo, u8 mode)
{ {
if (logo) { if (logo)
{
struct imount *mount_hdl = NULL; struct imount *mount_hdl = NULL;
u8 async_mode = mode; u8 async_mode = mode;
if ((!memcmp(logo, "udisk0", strlen("udisk0"))) if ((!memcmp(logo, "udisk0", strlen("udisk0"))) || (!memcmp(logo, "udisk0_rec", strlen("udisk0_rec"))))
|| (!memcmp(logo, "udisk0_rec", strlen("udisk0_rec")))) { {
struct file_dec_hdl *dec = get_file_dec_hdl(); 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)); mount_hdl = dev_manager_get_mount_hdl(dev_manager_find_spec(logo, 0));
if (mount_hdl) { 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 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)
|| 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); dev_ioctl(mount_hdl->dev.fd, IOCTL_SET_ASYNC_MODE, (u32)async_mode);
} else { }
else
{
/// 不指定的解码格式不开启 /// 不指定的解码格式不开启
async_mode = 0; async_mode = 0;
dev_ioctl(mount_hdl->dev.fd, IOCTL_SET_ASYNC_MODE, (u32)async_mode); 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); printf("udisk, set usb ASYNC = %d\n", async_mode);
} }
} }
} else { }
else
{
// 不是udisk, 如果udisk在线 将udisk设置成非AYSNC_MODE // 不是udisk, 如果udisk在线 将udisk设置成非AYSNC_MODE
mount_hdl = dev_manager_get_mount_hdl(dev_manager_find_spec("udisk0", 0)); mount_hdl = dev_manager_get_mount_hdl(dev_manager_find_spec("udisk0", 0));
if (mount_hdl) { if (mount_hdl)
{
async_mode = 0; async_mode = 0;
printf("not udisk, set usb ASYNC = 0\n"); printf("not udisk, set usb ASYNC = 0\n");
dev_ioctl(mount_hdl->dev.fd, IOCTL_SET_ASYNC_MODE, (u32)async_mode); 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 解码成功回调 /**@brief music 解码成功回调
@param priv: parm: @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()); 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)); music_file_name_len = fget_name(music_player_get_file_hdl(), music_file_name, sizeof(music_file_name));
int unicode = 0; 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; unicode = 1;
music_file_name_len -= 2; music_file_name_len -= 2;
log_i("cur file = %s, len = %d, unicode = %d\n", music_file_name + 2, music_file_name_len, unicode); 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("cur file = %s, len = %d, unicode = %d\n", music_file_name, music_file_name_len, unicode);
} }
log_i("\n"); log_i("\n");
/// save breakpoint, 只保存文件信息 /// 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); breakpoint_vm_write(breakpoint, logo);
} }
@ -237,7 +249,6 @@ static void music_player_play_success(void *priv, int parm)
/// smartbox info update /// smartbox info update
SMARTBOX_UPDATE(MUSIC_FUNCTION_MASK, SMARTBOX_UPDATE(MUSIC_FUNCTION_MASK,
BIT(MUSIC_INFO_ATTR_STATUS) | BIT(MUSIC_INFO_ATTR_FILE_NAME) | BIT(MUSIC_INFO_ATTR_FILE_PLAY_MODE)); BIT(MUSIC_INFO_ATTR_STATUS) | BIT(MUSIC_INFO_ATTR_FILE_NAME) | BIT(MUSIC_INFO_ATTR_FILE_PLAY_MODE));
} }
//*----------------------------------------------------------------------------*/ //*----------------------------------------------------------------------------*/
/**@brief music 解码结束回调处理 /**@brief music 解码结束回调处理
@ -282,35 +293,44 @@ static int music_player_scandisk_break(void)
char *logo = NULL; char *logo = NULL;
char *evt_logo = NULL; char *evt_logo = NULL;
app_task_get_msg(msg, ARRAY_SIZE(msg), 0); app_task_get_msg(msg, ARRAY_SIZE(msg), 0);
switch (msg[0]) { switch (msg[0])
{
case APP_MSG_SYS_EVENT: case APP_MSG_SYS_EVENT:
event = (struct sys_event *)(&msg[1]); event = (struct sys_event *)(&msg[1]);
switch (event->type) { switch (event->type)
{
case SYS_DEVICE_EVENT: case SYS_DEVICE_EVENT:
switch ((u32)event->arg) { switch ((u32)event->arg)
{
case DRIVER_EVENT_FROM_SD0: case DRIVER_EVENT_FROM_SD0:
case DRIVER_EVENT_FROM_SD1: case DRIVER_EVENT_FROM_SD1:
case DRIVER_EVENT_FROM_SD2: case DRIVER_EVENT_FROM_SD2:
evt_logo = (char *)event->u.dev.value; evt_logo = (char *)event->u.dev.value;
case DEVICE_EVENT_FROM_OTG: 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"; evt_logo = (char *)"udisk0";
} }
/// 设备上下线底层推出的设备逻辑盘符是跟跟音乐设备一致的(音乐/录音设备, 详细看接口注释) /// 设备上下线底层推出的设备逻辑盘符是跟跟音乐设备一致的(音乐/录音设备, 详细看接口注释)
int str_len = 0; int str_len = 0;
logo = music_player_get_phy_dev(&str_len); 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); 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; __this->scandisk_break = 1;
} }
} else { }
else
{
/// 响应新设备上线 /// 响应新设备上线
__this->scandisk_break = 1; __this->scandisk_break = 1;
} }
if (__this->scandisk_break == 0) { if (__this->scandisk_break == 0)
{
log_i("__func__ = %s DEVICE_EVENT_OUT TODO\n", __FUNCTION__); log_i("__func__ = %s DEVICE_EVENT_OUT TODO\n", __FUNCTION__);
dev_status_event_filter(event); dev_status_event_filter(event);
log_i("__func__ = %s DEVICE_EVENT_OUT OK\n", __FUNCTION__); log_i("__func__ = %s DEVICE_EVENT_OUT OK\n", __FUNCTION__);
@ -319,12 +339,14 @@ static int music_player_scandisk_break(void)
} }
break; break;
case SYS_BT_EVENT: case SYS_BT_EVENT:
if (bt_background_event_handler_filter(event)) { if (bt_background_event_handler_filter(event))
{
__this->scandisk_break = 1; __this->scandisk_break = 1;
} }
break; break;
case SYS_KEY_EVENT: case SYS_KEY_EVENT:
switch (event->u.key.event) { switch (event->u.key.event)
{
case KEY_CHANGE_MODE: case KEY_CHANGE_MODE:
/// 响应切换模式事件 /// 响应切换模式事件
__this->scandisk_break = 1; __this->scandisk_break = 1;
@ -332,7 +354,8 @@ static int music_player_scandisk_break(void)
// 其他按键case 在这里增加 // 其他按键case 在这里增加
} }
/// 因为TWS转发sys_event_notify需要用原始的按键序号 未经过按键表处理, 所以这里要特殊处理 /// 因为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); app_task_put_key_msg(event->u.key.event, (int)event->u.key.value);
printf("key break scan!!"); printf("key break scan!!");
return 1; return 1;
@ -341,12 +364,15 @@ static int music_player_scandisk_break(void)
} }
break; break;
} }
if (__this->scandisk_break) { if (__this->scandisk_break)
{
/// 查询到需要打断的事件, 返回1 并且重新推送一次该事件,跑主循环处理流程 /// 查询到需要打断的事件, 返回1 并且重新推送一次该事件,跑主循环处理流程
sys_event_notify(event); sys_event_notify(event);
printf("scandisk_break!!!!!!\n"); printf("scandisk_break!!!!!!\n");
return 1; return 1;
} else { }
else
{
return 0; return 0;
} }
} }
@ -362,11 +388,13 @@ static void scan_enter(struct __dev *dev)
{ {
#if SD_BAUD_RATE_CHANGE_WHEN_SCAN #if SD_BAUD_RATE_CHANGE_WHEN_SCAN
struct imount *mount_hdl = dev_manager_get_mount_hdl(dev); struct imount *mount_hdl = dev_manager_get_mount_hdl(dev);
if (mount_hdl) { if (mount_hdl)
if ((!memcmp(dev_manager_get_logo(dev), "sd0", strlen("sd0"))) {
|| (!memcmp(dev_manager_get_logo(dev), "sd1", strlen("sd1")))) { 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速度 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); 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 #ifdef SD_BAUD_RATE_CHANGE_WHEN_SCAN
struct imount *mount_hdl = dev_manager_get_mount_hdl(dev); struct imount *mount_hdl = dev_manager_get_mount_hdl(dev);
if (mount_hdl) { if (mount_hdl)
if ((!memcmp(dev_manager_get_logo(dev), "sd0", strlen("sd0"))) {
|| (!memcmp(dev_manager_get_logo(dev), "sd1", strlen("sd1")))) { 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 (SD_BAUD_RATE_CHANGE_WHEN_SCAN > __this->old_speed)
{
dev_ioctl(mount_hdl->dev.fd, IOCTL_SET_SPEED, __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; u32 index = (u32)priv;
char *logo = NULL; 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"); log_error("tone callback task out \n");
return; return;
} }
switch (index) { switch (index)
{
case IDEX_TONE_MUSIC: case IDEX_TONE_MUSIC:
/// 提示音播放结束, 启动播放器播放 /// 提示音播放结束, 启动播放器播放
music_player_play_start(); 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_SD0_REC:
case DEVICE_INDEX_SD1: case DEVICE_INDEX_SD1:
case DEVICE_INDEX_SD1_REC: case DEVICE_INDEX_SD1_REC:
for (int i = 0; i < ARRAY_SIZE(device_tone); i++) { for (int i = 0; i < ARRAY_SIZE(device_tone); i++)
if (index == device_tone[i].index) { {
if (index == device_tone[i].index)
{
logo = device_tone[i].logo; logo = device_tone[i].logo;
break; break;
} }
@ -440,7 +474,6 @@ static void music_tone_play_end_callback(void *priv, int flag)
} }
} }
//*----------------------------------------------------------------------------*/ //*----------------------------------------------------------------------------*/
/**@brief music 模式解码错误处理 /**@brief music 模式解码错误处理
@param err:MUSIC_PLAYER错误码表枚举 @param err:MUSIC_PLAYER错误码表枚举
@ -452,15 +485,18 @@ void music_player_err_deal(int err)
{ {
u16 msg = KEY_NULL; u16 msg = KEY_NULL;
char *logo = 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; /// 清除错误文件累计 __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); log_e("music player err = %d\n", err);
} }
switch (err) { switch (err)
{
case MUSIC_PLAYER_SUCC: case MUSIC_PLAYER_SUCC:
__this->file_err_counter = 0; __this->file_err_counter = 0;
break; break;
@ -471,35 +507,48 @@ void music_player_err_deal(int err)
msg = KEY_MUSIC_PLAYER_QUIT; // 退出音乐模式 msg = KEY_MUSIC_PLAYER_QUIT; // 退出音乐模式
break; break;
case MUSIC_PLAYER_ERR_DECODE_FAIL: 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; __this->file_err_counter = 0;
dev_manager_set_valid_by_logo(music_player_get_dev_cur(), 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; // 没有设备了,退出音乐模式 msg = KEY_MUSIC_PLAYER_QUIT; // 没有设备了,退出音乐模式
} else { }
else
{
msg = KEY_MUSIC_AUTO_NEXT_DEV; /// 所有文件都是错误的, 切换到下一个设备 msg = KEY_MUSIC_AUTO_NEXT_DEV; /// 所有文件都是错误的, 切换到下一个设备
} }
} else { }
else
{
__this->file_err_counter++; __this->file_err_counter++;
if (__this->file_play_direct == 0) { if (__this->file_play_direct == 0)
{
msg = KEY_MUSIC_NEXT; // 播放下一曲 msg = KEY_MUSIC_NEXT; // 播放下一曲
} else { }
else
{
msg = KEY_MUSIC_PREV; // 播放上一曲 msg = KEY_MUSIC_PREV; // 播放上一曲
} }
} }
break; break;
case MUSIC_PLAYER_ERR_DEV_NOFOUND: case MUSIC_PLAYER_ERR_DEV_NOFOUND:
log_e("MUSIC_PLAYER_ERR_DEV_NOFOUND \n"); 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; /// 没有设备在线, 退出音乐模式 msg = KEY_MUSIC_PLAYER_QUIT; /// 没有设备在线, 退出音乐模式
} else { }
else
{
msg = KEY_MUSIC_PLAYER_START; /// 没有找到指定设备, 播放之前的活动设备 msg = KEY_MUSIC_PLAYER_START; /// 没有找到指定设备, 播放之前的活动设备
} }
break; break;
case MUSIC_PLAYER_ERR_FSCAN: case MUSIC_PLAYER_ERR_FSCAN:
/// 需要结合music_player_scandisk_break中处理的标志位处理 /// 需要结合music_player_scandisk_break中处理的标志位处理
if (__this->scandisk_break) { if (__this->scandisk_break)
{
__this->scandisk_break = 0; __this->scandisk_break = 0;
/// 此处不做任何处理, 打断的事件已经重发, 由重发事件执行后续处理 /// 此处不做任何处理, 打断的事件已经重发, 由重发事件执行后续处理
break; break;
@ -508,45 +557,59 @@ void music_player_err_deal(int err)
case MUSIC_PLAYER_ERR_DEV_OFFLINE: case MUSIC_PLAYER_ERR_DEV_OFFLINE:
log_e("MUSIC_PLAYER_ERR_DEV_OFFLINE \n"); log_e("MUSIC_PLAYER_ERR_DEV_OFFLINE \n");
logo = music_player_get_dev_cur(); 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卡顿 music_player_stop(0); // 先停止防止下一步操作VM卡顿
breakpoint_vm_write(breakpoint, logo); 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); /// 将设备设置为无效设备 dev_manager_set_valid_by_logo(logo, 0); /// 将设备设置为无效设备
} else { }
else
{
// 针对读错误, 因为时间推到应用层有延时导致下一个模式判断不正常, 此处需要将设备卸载 // 针对读错误, 因为时间推到应用层有延时导致下一个模式判断不正常, 此处需要将设备卸载
dev_manager_unmount(logo); 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); app_status_handler(APP_STATUS_MUSIC_QUIT);
msg = KEY_MUSIC_PLAYER_QUIT; /// 没有设备在线, 退出音乐模式 msg = KEY_MUSIC_PLAYER_QUIT; /// 没有设备在线, 退出音乐模式
} else { }
else
{
msg = KEY_MUSIC_AUTO_NEXT_DEV; /// 切换设备 msg = KEY_MUSIC_AUTO_NEXT_DEV; /// 切换设备
} }
break; break;
case MUSIC_PLAYER_ERR_FILE_NOFOUND: case MUSIC_PLAYER_ERR_FILE_NOFOUND:
/// 查找文件有扫盘的可能也需要结合music_player_scandisk_break中处理的标志位处理 /// 查找文件有扫盘的可能也需要结合music_player_scandisk_break中处理的标志位处理
if (__this->scandisk_break) { if (__this->scandisk_break)
{
__this->scandisk_break = 0; __this->scandisk_break = 0;
/// 此处不做任何处理, 打断的事件已经重发, 由重发事件执行后续处理 /// 此处不做任何处理, 打断的事件已经重发, 由重发事件执行后续处理
break; break;
} }
case MUSIC_PLAYER_ERR_PARM: case MUSIC_PLAYER_ERR_PARM:
logo = music_player_get_dev_cur(); 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_file_total()) { {
if (music_player_get_file_total())
{
msg = KEY_MUSIC_PLAYER_PLAY_FIRST; /// 有文件,播放第一个文件 msg = KEY_MUSIC_PLAYER_PLAY_FIRST; /// 有文件,播放第一个文件
break; break;
} }
} }
if (dev_manager_get_total(1) == 0) { if (dev_manager_get_total(1) == 0)
{
msg = KEY_MUSIC_PLAYER_QUIT; // 没有设备了,退出音乐模式 msg = KEY_MUSIC_PLAYER_QUIT; // 没有设备了,退出音乐模式
} else { }
else
{
msg = KEY_MUSIC_AUTO_NEXT_DEV; msg = KEY_MUSIC_AUTO_NEXT_DEV;
} }
break; break;
@ -554,7 +617,8 @@ void music_player_err_deal(int err)
msg = KEY_MUSIC_NEXT; // 播放下一曲 msg = KEY_MUSIC_NEXT; // 播放下一曲
break; break;
} }
if (msg != KEY_NULL) { if (msg != KEY_NULL)
{
app_task_put_key_msg(msg, 0); 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]); log_i("music task msg = %d\n", msg[0]);
switch (msg[0]) { switch (msg[0])
{
case KEY_MUSIC_DEVICE_TONE_END: case KEY_MUSIC_DEVICE_TONE_END:
#if (MUSIC_DEVICE_TONE_EN) #if (MUSIC_DEVICE_TONE_EN)
logo = (char *)msg[1]; logo = (char *)msg[1];
log_i("KEY_MUSIC_DEVICE_TONE_END %s\n", logo); log_i("KEY_MUSIC_DEVICE_TONE_END %s\n", logo);
if (logo) { if (logo)
if (true == breakpoint_vm_read(breakpoint, logo)) { {
if (true == breakpoint_vm_read(breakpoint, logo))
{
err = music_player_play_by_breakpoint(logo, breakpoint); err = music_player_play_by_breakpoint(logo, breakpoint);
} else { }
else
{
err = music_player_play_first_file(logo); 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); app_status_handler(APP_STATUS_MUSIC_PLAY);
/// 断点播放活动设备 /// 断点播放活动设备
logo = dev_manager_get_logo(dev_manager_find_active(1)); logo = dev_manager_get_logo(dev_manager_find_active(1));
if (music_player_get_play_status() == FILE_DEC_STATUS_PLAY) { if (music_player_get_play_status() == FILE_DEC_STATUS_PLAY)
if (music_player_get_dev_cur() && logo) { {
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"); log_w("the same dev!!\n");
break; break;
} }
} }
} }
#if (MUSIC_DEVICE_TONE_EN) #if (MUSIC_DEVICE_TONE_EN)
if (music_device_tone_play(logo) == true) { if (music_device_tone_play(logo) == true)
{
break; break;
} }
#endif #endif
if (true == breakpoint_vm_read(breakpoint, logo)) { if (true == breakpoint_vm_read(breakpoint, logo))
{
err = music_player_play_by_breakpoint(logo, breakpoint); err = music_player_play_by_breakpoint(logo, breakpoint);
} else { }
else
{
err = music_player_play_first_file(logo); err = music_player_play_first_file(logo);
} }
break; break;
@ -637,17 +713,22 @@ static int music_key_event_opr(struct sys_event *event)
case KEY_MUSIC_PP: case KEY_MUSIC_PP:
log_i("KEY_MUSIC_PP\n"); log_i("KEY_MUSIC_PP\n");
logo = music_player_get_dev_cur(); 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); music_set_dev_sync_mode(logo, 0);
} else { }
else
{
music_set_dev_sync_mode(logo, 1); music_set_dev_sync_mode(logo, 1);
} }
err = music_player_pp(); 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); app_status_handler(APP_STATUS_MUSIC_PLAY);
ui_update_status(STATUS_MUSIC_PLAY); ui_update_status(STATUS_MUSIC_PLAY);
} else { }
else
{
app_status_handler(APP_STATUS_MUSIC_PP); app_status_handler(APP_STATUS_MUSIC_PP);
ui_update_status(STATUS_MUSIC_PAUSE); ui_update_status(STATUS_MUSIC_PAUSE);
/* tone_play_by_path(tone_table[IDEX_TONE_MAX_VOL],1); */ /* 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); auto_next_dev = ((msg[0] == KEY_MUSIC_AUTO_NEXT_DEV) ? 1 : 0);
logo = music_player_get_dev_next(auto_next_dev); logo = music_player_get_dev_next(auto_next_dev);
printf("next dev = %s\n", logo); printf("next dev = %s\n", logo);
if (logo == NULL) { ///找不到下一个设备,不响应设备切换 if (logo == NULL)
{ /// 找不到下一个设备,不响应设备切换
break; break;
} }
/// 切换设备前先保存一下上一个设备的断点信息,包括文件和解码信息 /// 切换设备前先保存一下上一个设备的断点信息,包括文件和解码信息
if (music_player_get_playing_breakpoint(breakpoint, 1) == true) { if (music_player_get_playing_breakpoint(breakpoint, 1) == true)
{
music_player_stop(0); // 先停止防止下一步操作VM卡顿 music_player_stop(0); // 先停止防止下一步操作VM卡顿
breakpoint_vm_write(breakpoint, music_player_get_dev_cur()); breakpoint_vm_write(breakpoint, music_player_get_dev_cur());
} }
#if (MUSIC_DEVICE_TONE_EN) #if (MUSIC_DEVICE_TONE_EN)
if (music_device_tone_play(logo) == true) { if (music_device_tone_play(logo) == true)
{
break; break;
} }
#endif #endif
if (true == breakpoint_vm_read(breakpoint, logo)) { if (true == breakpoint_vm_read(breakpoint, logo))
{
err = music_player_play_by_breakpoint(logo, breakpoint); err = music_player_play_by_breakpoint(logo, breakpoint);
} else { }
else
{
err = music_player_play_first_file(logo); err = music_player_play_first_file(logo);
} }
break; break;
@ -712,12 +799,16 @@ static int music_key_event_opr(struct sys_event *event)
log_i("KEY_MUSIC_PLAYE_REC_FOLDER_SWITCH\n"); log_i("KEY_MUSIC_PLAYE_REC_FOLDER_SWITCH\n");
#if (TCFG_RECORD_FOLDER_DEV_ENABLE) #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()); 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); err = music_player_play_record_folder(NULL, breakpoint);
} else { }
else
{
err = music_player_play_record_folder(NULL, NULL); err = music_player_play_record_folder(NULL, NULL);
} }
#endif // TCFG_RECORD_FOLDER_DEV_ENABLE #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 err = music_player_play_by_path((char *)"udisk0", "/sin.wav"); /// this is a demo
break; break;
/// 非播放执行类消息 /// 非播放执行类消息
case KEY_MUSIC_FF: case KEY_MUSIC_FF:
log_i("KEY_MUSIC_FF\n"); 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: case KEY_MUSIC_CHANGE_REPEAT:
log_i("KEY_MUSIC_CHANGE_REPEAT\n"); log_i("KEY_MUSIC_CHANGE_REPEAT\n");
mode = music_player_change_repeat_mode(); mode = music_player_change_repeat_mode();
if (mode > 0) { if (mode > 0)
{
UI_SHOW_MENU(MENU_MUSIC_REPEATMODE, 1000, mode, NULL); UI_SHOW_MENU(MENU_MUSIC_REPEATMODE, 1000, mode, NULL);
} }
break; break;
@ -769,7 +860,6 @@ static int music_key_event_opr(struct sys_event *event)
break; break;
} }
/// 错误处理 /// 错误处理
music_player_err_deal(err); music_player_err_deal(err);
/// smartbox info update /// smartbox info update
@ -779,7 +869,6 @@ static int music_key_event_opr(struct sys_event *event)
return ret; return ret;
} }
//*----------------------------------------------------------------------------*/ //*----------------------------------------------------------------------------*/
/**@brief music 设备事件响应接口 /**@brief music 设备事件响应接口
@param @param
@ -792,29 +881,36 @@ static int music_sys_event_handler(struct sys_event *event)
int err = 0; int err = 0;
char *logo = NULL; char *logo = NULL;
char *evt_logo = NULL; char *evt_logo = NULL;
switch (event->type) { switch (event->type)
{
case SYS_KEY_EVENT: case SYS_KEY_EVENT:
return music_key_event_opr(event); return music_key_event_opr(event);
case SYS_DEVICE_EVENT: case SYS_DEVICE_EVENT:
switch ((u32)event->arg) { switch ((u32)event->arg)
{
case DRIVER_EVENT_FROM_SD0: case DRIVER_EVENT_FROM_SD0:
case DRIVER_EVENT_FROM_SD1: case DRIVER_EVENT_FROM_SD1:
case DRIVER_EVENT_FROM_SD2: case DRIVER_EVENT_FROM_SD2:
evt_logo = (char *)event->u.dev.value; evt_logo = (char *)event->u.dev.value;
case DEVICE_EVENT_FROM_OTG: 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"; evt_logo = (char *)"udisk0";
} }
int str_len = 0; int str_len = 0;
logo = music_player_get_phy_dev(&str_len); logo = music_player_get_phy_dev(&str_len);
log_i("evt_logo =%s, logo = %s len =%d\n", evt_logo, logo, 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 (event->u.dev.event == DEVICE_EVENT_OUT)
if (logo == NULL) { {
if (logo == NULL)
{
break; 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); breakpoint_vm_write(breakpoint, logo);
} }
memset(__this->device_tone_dev, 0, sizeof(__this->device_tone_dev)); 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); // 卸载了设备再执行 app_task_put_key_msg(KEY_MUSIC_PLAYER_START, 0); // 卸载了设备再执行
log_i("KEY_MUSIC_PLAYER_START AFTER UMOUNT\n"); log_i("KEY_MUSIC_PLAYER_START AFTER UMOUNT\n");
} }
} else { }
else
{
#if (MUSIC_DEV_ONLINE_START_AFTER_MOUNT_EN == 0) #if (MUSIC_DEV_ONLINE_START_AFTER_MOUNT_EN == 0)
music_task_dev_online_start(); music_task_dev_online_start();
#endif #endif
@ -866,7 +964,8 @@ void music_task_set_parm(u8 type, int val)
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
static void music_player_play_start(void) static void music_player_play_start(void)
{ {
switch (__this->task_parm.type) { switch (__this->task_parm.type)
{
case MUSIC_TASK_START_BY_NORMAL: case MUSIC_TASK_START_BY_NORMAL:
log_i("MUSIC_TASK_START_BY_NORMAL\n"); log_i("MUSIC_TASK_START_BY_NORMAL\n");
app_task_put_key_msg(KEY_MUSIC_PLAYER_START, 0); 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启动播放 /// 提示音播放失败直接推送KEY_MUSIC_PLAYER_START启动播放
} }
//*----------------------------------------------------------------------------*/ //*----------------------------------------------------------------------------*/
/**@brief music 模式新设备上线处理 /**@brief music 模式新设备上线处理
@param @param
@ -894,9 +992,11 @@ void music_task_dev_online_start(void)
{ {
u8 save = 0; u8 save = 0;
char *logo = music_player_get_dev_cur(); 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; save = 1;
// 这里不要直接记忆断点, 解码停了之后再记忆 // 这里不要直接记忆断点, 解码停了之后再记忆
// breakpoint_vm_write(breakpoint, logo); // breakpoint_vm_write(breakpoint, logo);
@ -904,7 +1004,8 @@ void music_task_dev_online_start(void)
} }
/// 停止解码,播放新活动设备 /// 停止解码,播放新活动设备
music_player_stop(1); music_player_stop(1);
if (save && breakpoint) { if (save && breakpoint)
{
breakpoint_vm_write(breakpoint, logo); breakpoint_vm_write(breakpoint, logo);
} }
app_task_put_key_msg(KEY_MUSIC_PLAYER_START, 0); app_task_put_key_msg(KEY_MUSIC_PLAYER_START, 0);
@ -938,7 +1039,6 @@ static void music_task_start()
/// 按键使能 /// 按键使能
sys_key_event_enable(); sys_key_event_enable();
/// 播放器初始化 /// 播放器初始化
struct __player_parm parm = {0}; struct __player_parm parm = {0};
parm.cb = &music_player_callback; parm.cb = &music_player_callback;
@ -964,7 +1064,8 @@ static void music_task_close()
UI_HIDE_CURR_WINDOW(); UI_HIDE_CURR_WINDOW();
tone_play_stop_by_path(tone_table[IDEX_TONE_MUSIC]); // 停止播放提示音 tone_play_stop_by_path(tone_table[IDEX_TONE_MUSIC]); // 停止播放提示音
char *logo = music_player_get_dev_cur(); 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); breakpoint_vm_write(breakpoint, logo);
} }
@ -988,7 +1089,8 @@ static void music_task_close()
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
int music_app_check(void) int music_app_check(void)
{ {
if (dev_manager_get_total(1)) { if (dev_manager_get_total(1))
{
return true; return true;
} }
return false; return false;
@ -1013,10 +1115,12 @@ void app_music_task()
#if TCFG_DEC2TWS_ENABLE #if TCFG_DEC2TWS_ENABLE
extern void set_tws_background_connected_flag(u8 flag); extern void set_tws_background_connected_flag(u8 flag);
extern u8 get_tws_background_connected_flag(); extern u8 get_tws_background_connected_flag();
if (get_tws_background_connected_flag()) { //不播放提示音 if (get_tws_background_connected_flag())
{ // 不播放提示音
music_player_play_start(); music_player_play_start();
set_tws_background_connected_flag(0); set_tws_background_connected_flag(0);
} else }
else
#endif #endif
{ {
// tone_play_with_callback_by_name(tone_table[IDEX_TONE_MUSIC], 1, music_tone_play_end_callback, (void *)IDEX_TONE_MUSIC); // 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); kt_eq_switch_to(KT_EQ_IDX_MUSIC);
while (1)
while (1) { {
app_task_get_msg(msg, ARRAY_SIZE(msg), 1); app_task_get_msg(msg, ARRAY_SIZE(msg), 1);
switch (msg[0]) { switch (msg[0])
{
case APP_MSG_SYS_EVENT: 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])); app_default_event_deal((struct sys_event *)(&msg[1]));
} }
break; break;
default: default:
break; break;
} }
if (app_task_exitting()) { if (app_task_exitting())
{
music_task_close(); music_task_close();
return; return;
} }
@ -1058,10 +1165,6 @@ REGISTER_LP_TARGET(music_lp_target) = {
void app_music_task() void app_music_task()
{ {
} }
#endif #endif

View File

@ -1045,32 +1045,104 @@ REGISTER_LP_TARGET(audio_dec_init_lp_target) = {
#if AUDIO_OUTPUT_AUTOMUTE #if AUDIO_OUTPUT_AUTOMUTE
#include "kt.h" #include "kt.h"
#include "app_task.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) 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 (mute)
{ {
if (app_get_curr_task() == APP_LP_TASK) if (app_get_curr_task() == APP_LP_TASK)
{ {
PA_MUTE(); //PA_MUTE();
} }
else else
{ {
bt_mute_flag++; bt_mute_flag++;
if (bt_mute_flag > 10) if (bt_mute_flag > 10)
{ {
PA_MUTE();
}
}
//PA_MUTE(); //PA_MUTE();
} }
}
}
else else
{ {
PA_UNMUTE(); //PA_UNMUTE();
bt_mute_flag = 0; bt_mute_flag = 0;
} }
#endif
} }
/* #define AUDIO_E_DET_UNMUTE (0x00) */ /* #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.unmute_time_ms = 50;
e_det_param.count_cycle_ms = 10; e_det_param.count_cycle_ms = 10;
#else #else
/* 黑胶空白处喀拉声:提高 mute_energy 使表面噪声被判定为静音并 mute 掉 */ /* 混音输出自动静音:能量检测,低能量时 mute 以减少底噪/杂音(如黑胶空白处喀拉声) */
/* e_det_param.mute_energy = 120; /* 能量阈值:低于此值视为“静音”,配合 mute_time_ms 达成后触发 mute */
e_det_param.mute_energy = 150; e_det_param.unmute_energy = 180; /* 能量阈值:高于此值视为“有声音”,配合 unmute_time_ms 达成后解除 mute */
e_det_param.unmute_energy = 210; e_det_param.mute_time_ms = 150; /* 静音判定时长(ms):持续低能量超过此时间后才执行 mute避免误判 */
e_det_param.mute_time_ms = 30; e_det_param.unmute_time_ms = 15; /* 解除静音时长(ms):持续高能量超过此时间后才 unmute喀拉声随机短促宜设小 */
e_det_param.unmute_time_ms = 20; e_det_param.count_cycle_ms = 5; /* 检测周期(ms):每 5ms 采样一次能量,周期越短响应越快、耗 CPU 略增 */
e_det_param.count_cycle_ms = 5;
*/ /* e_det_param.mute_energy = 240;
e_det_param.mute_energy = 240;
e_det_param.unmute_energy = 300; e_det_param.unmute_energy = 300;
e_det_param.mute_time_ms = 40; e_det_param.mute_time_ms = 40;
e_det_param.unmute_time_ms = 25; 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.mute_energy = 180;
e_det_param.unmute_energy = 240; e_det_param.unmute_energy = 240;
e_det_param.mute_time_ms = 30; e_det_param.mute_time_ms = 30;

Binary file not shown.

View File

@ -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_pull_down,l
-r=objs/apps/kaotings/kt.c.o,gpio_set_direction,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,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,kt_eq_switch_to,pl
-r=objs/apps/kaotings/kt.c.o,eff_file_switch,l -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_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 -r=objs/apps/kaotings/kt.c.o,puts,l
objs/apps/soundbox/task_manager/app_common.c.o 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 -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_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,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,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,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,get_tws_background_connected_flag,l
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,bt_task_start,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_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,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,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_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_app_switch_exit_check,l
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,bt_status_event_filter,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_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_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,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,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,puts,l
-r=objs/apps/soundbox/task_manager/bt/bt.c.o,app_bt_hdl,pl -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_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,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,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,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,set_bt_back_flag,l
-r=objs/apps/soundbox/task_manager/linein/linein.c.o,kt_eq_switch_to,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_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,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,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,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,set_bt_back_flag,l
-r=objs/apps/soundbox/task_manager/lp/lp.c.o,log_print,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,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,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,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,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_start,l
-r=objs/apps/soundbox/task_manager/lp/lp.c.o,lp_volume_pp,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_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,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,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,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,app_get_curr_task,l
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,gpio_set_output_value,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,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_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,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 -r=objs/cpu/br23/audio_dec/audio_dec.c.o,dac_sync_buff,pl
objs/cpu/br23/audio_dec/audio_dec_bt.c.o 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 -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