修改能量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 "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);
}

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_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);

View File

@ -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

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 蓝牙模式
@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)

View File

@ -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;
}
}

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)
{
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;
}
}

View File

@ -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

View File

@ -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.

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_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