修复全部循环问题

This commit is contained in:
FlyM 2025-08-28 00:29:07 +08:00
parent 9b11b859c2
commit e8c743b7fa
31 changed files with 29627 additions and 29223 deletions

Binary file not shown.

BIN
FW/KT25-0822/jl_isd.fw Normal file

Binary file not shown.

BIN
FW/KT25-0822/update.ufw Normal file

Binary file not shown.

BIN
KT6002_SD.pdf Normal file

Binary file not shown.

View File

@ -367,6 +367,12 @@ code {
</script> </script>
<h1 id="%E5%BC%95%E8%84%9A%E6%8E%92%E5%88%97">引脚排列</h1> <h1 id="%E5%BC%95%E8%84%9A%E6%8E%92%E5%88%97">引脚排列</h1>
<p><img src="./pin" alt="引脚定义"></p> <p><img src="./pin" alt="引脚定义"></p>
<h1 id="%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F">使用注意:</h1>
<pre><code>1. TF卡和SPI Flash只支持一个下单请注意备注。
2. 开机有提示音“咚”。
3. 默认循环方式为不循环,播放一次后结束。
4. BUSY引脚指示当前播放状态低电平为正在播放高电平为未播放也可使用此引脚控制功放的MUTE但需实测是否有呑字现象。
</code></pre>
<h2 id="uart-%E9%80%9A%E8%AE%AF%E5%8D%8F%E8%AE%AE-115200-n-8-1">UART 通讯协议 115200 N 8 1</h2> <h2 id="uart-%E9%80%9A%E8%AE%AF%E5%8D%8F%E8%AE%AE-115200-n-8-1">UART 通讯协议 115200 N 8 1</h2>
<ul> <ul>
<li>发送 <li>发送
@ -443,12 +449,18 @@ code {
<li>0xAB 播放指定曲目(通配符)</li> <li>0xAB 播放指定曲目(通配符)</li>
<li>0xAC 播放指定曲目(带扩展名)</li> <li>0xAC 播放指定曲目(带扩展名)</li>
<li>0xAD 播放指定曲目(数字)</li> <li>0xAD 播放指定曲目(数字)</li>
<li>0xAE 播放循环</li>
<li>0xB0 获取当前磁盘文件总数</li>
<li>0xB1 获取当前磁盘文件夹数量</li>
<li>0xB2 获取当前播放文件夹内文件数量</li>
<li>0xB3 获取当前播放曲目总时间</li>
<li>0xB4 获取当前播放曲目时间</li>
</ul> </ul>
</li> </li>
</ul> </ul>
<h2 id="%E6%8C%87%E4%BB%A4%E8%AF%A6%E8%BF%B0">指令详述</h2> <h2 id="%E6%8C%87%E4%BB%A4%E8%AF%A6%E8%BF%B0">指令详述</h2>
<ul> <ul>
<li>系统复位0xA0/A1/A2/A3/A4/A5/A6/A7/A9/AA <li>播放控制指令0xA0/A1/A2/A3/A4/A5/A6/A7/A9/AA
<table> <table>
<thead> <thead>
<tr> <tr>
@ -470,13 +482,14 @@ code {
</tbody> </tbody>
</table> </table>
</li> </li>
<li>播放/暂停0xC2 <li>播放循环0xAE
<table> <table>
<thead> <thead>
<tr> <tr>
<th>HEAD</th> <th>HEAD</th>
<th>LENGTH</th> <th>LENGTH</th>
<th>CMD</th> <th>CMD</th>
<th>CYCLE</th>
<th>CHK</th> <th>CHK</th>
<th>TAIL</th> <th>TAIL</th>
</tr> </tr>
@ -485,12 +498,16 @@ code {
<tr> <tr>
<td>0x02</td> <td>0x02</td>
<td>1Byte</td> <td>1Byte</td>
<td>0xC2</td> <td>0xAE</td>
<td>1Byte</td>
<td>1Byte</td> <td>1Byte</td>
<td>0x03</td> <td>0x03</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<ul>
<li>CYCLE 0-不循环1-全部循环 2-单曲循环3-文件夹循环4-随机</li>
</ul>
</li> </li>
<li>设置音量0xA8 <li>设置音量0xA8
<table> <table>
@ -583,7 +600,7 @@ code {
<ul> <ul>
<li>STA :名字起始,字符'$'(0x24)。</li> <li>STA :名字起始,字符'$'(0x24)。</li>
<li>END : 名字结束,字符'$'(0x24)。</li> <li>END : 名字结束,字符'$'(0x24)。</li>
<li>NAME :名字字符串,必须写全文件名例如文件名采用8+3格式只识别文件名的前2个字符例如01.mp3和010.mp3是不同的</li> <li>NAME :名字字符串,必须写全文件名例如文件名采用8+3格式例如01.mp3和001.mp3是不同的</li>
<li>文件必须存在否则播放失败</li> <li>文件必须存在否则播放失败</li>
</ul> </ul>
</li> </li>
@ -613,19 +630,17 @@ code {
</tbody> </tbody>
</table> </table>
<ul> <ul>
<li>FHFL组合成以恶搞16bit的整形例如 FH=0x00 FL=0x02 实际上是播放0x0002曲目曲目的顺序号是拷贝进磁盘的顺序</li> <li>FHFL组合成一个16bit的整形例如 FH=0x00 FL=0x02 实际上是播放0x0002曲目曲目的顺序号是拷贝进磁盘的顺序</li>
<li>文件必须存在否则播放失败</li> <li>文件必须存在否则播放失败</li>
</ul> </ul>
</li> </li>
<li>指定文件号播放0xC8 <li>播放信息B0/B1/B2/B3/B4
<table> <table>
<thead> <thead>
<tr> <tr>
<th>HEAD</th> <th>HEAD</th>
<th>LENGTH</th> <th>LENGTH</th>
<th>CMD</th> <th>CMD</th>
<th>NUM</th>
<th>LOOP</th>
<th>CHK</th> <th>CHK</th>
<th>TAIL</th> <th>TAIL</th>
</tr> </tr>
@ -634,8 +649,34 @@ code {
<tr> <tr>
<td>0x02</td> <td>0x02</td>
<td>1Byte</td> <td>1Byte</td>
<td>0xC8</td> <td>0xB0</td>
<td>1-99</td> <td>1Byte</td>
<td>0x03</td>
</tr>
</tbody>
</table>
</li>
<li>ACK:
<table>
<thead>
<tr>
<th>HEAD</th>
<th>LENGTH</th>
<th>CMD</th>
<th>ERR</th>
<th>DH</th>
<th>DL</th>
<th>CHK</th>
<th>TAIL</th>
</tr>
</thead>
<tbody>
<tr>
<td>0x02</td>
<td>1Byte</td>
<td>0xB0</td>
<td>1Byte</td>
<td>1Byte</td>
<td>1Byte</td> <td>1Byte</td>
<td>1Byte</td> <td>1Byte</td>
<td>0x03</td> <td>0x03</td>
@ -643,9 +684,7 @@ code {
</tbody> </tbody>
</table> </table>
<ul> <ul>
<li>NUM 文件名号码。注文件名采用8+3格式只识别文件名的前2个字符例如01.mp3和01月光小夜曲.mp3是相同的月光小夜曲可有可无但前面序号必须有存放文件时需注意。</li> <li>DH,DL: 回复数据组合成一个16bit的整形例如 DH=0x00 DL=0x02 则值是0x0002</li>
<li>LOOP 循环次数0为单曲无限循环</li>
<li>文件必须存在否则播放失败</li>
</ul> </ul>
</li> </li>
</ul> </ul>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 662 KiB

After

Width:  |  Height:  |  Size: 719 KiB

View File

@ -2,6 +2,12 @@
![引脚定义](./pin) ![引脚定义](./pin)
# 使用注意:
1. TF卡和SPI Flash只支持一个下单请注意备注。
2. 开机有提示音“咚”。
3. 默认循环方式为不循环,播放一次后结束。
4. BUSY引脚指示当前播放状态低电平为正在播放高电平为未播放也可使用此引脚控制功放的MUTE但需实测是否有呑字现象。
## UART 通讯协议 115200 N 8 1 ## UART 通讯协议 115200 N 8 1
- 发送 - 发送
| head | length | CMD | DATA | XOR | tail | | head | length | CMD | DATA | XOR | tail |
@ -33,15 +39,22 @@
- 0xAB 播放指定曲目(通配符) - 0xAB 播放指定曲目(通配符)
- 0xAC 播放指定曲目(带扩展名) - 0xAC 播放指定曲目(带扩展名)
- 0xAD 播放指定曲目(数字) - 0xAD 播放指定曲目(数字)
- 0xAE 播放循环
- 0xB0 获取当前磁盘文件总数
- 0xB1 获取当前磁盘文件夹数量
- 0xB2 获取当前播放文件夹内文件数量
- 0xB3 获取当前播放曲目总时间
- 0xB4 获取当前播放曲目时间
## 指令详述 ## 指令详述
- 系统复位0xA0/A1/A2/A3/A4/A5/A6/A7/A9/AA - 播放控制指令0xA0/A1/A2/A3/A4/A5/A6/A7/A9/AA
| HEAD | LENGTH | CMD | CHK | TAIL | | HEAD | LENGTH | CMD | CHK | TAIL |
|------|--------|--------|-------|------| |------|--------|--------|-------|------|
| 0x02 | 1Byte | 0xA0 | 1Byte | 0x03 | | 0x02 | 1Byte | 0xA0 | 1Byte | 0x03 |
- 播放/暂停0xC2 - 播放循环0xAE
| HEAD | LENGTH | CMD | CHK | TAIL | | HEAD | LENGTH | CMD | CYCLE | CHK | TAIL |
|------|--------|--------|-------|------| |------|--------|--------|--------|------|------|
| 0x02 | 1Byte | 0xC2 | 1Byte | 0x03 | | 0x02 | 1Byte | 0xAE | 1Byte |1Byte | 0x03 |
- CYCLE 0-不循环1-全部循环 2-单曲循环3-文件夹循环4-随机
- 设置音量0xA8 - 设置音量0xA8
| HEAD | LENGTH | CMD | VOLUME | CHK | TAIL | | HEAD | LENGTH | CMD | VOLUME | CHK | TAIL |
|------|--------|--------|---------------|------|------| |------|--------|--------|---------------|------|------|
@ -61,21 +74,23 @@
| 0x02 | 1Byte | 0xAC | '$' | 'abc.mp3' | '$' | 1Byte| 0x03 | | 0x02 | 1Byte | 0xAC | '$' | 'abc.mp3' | '$' | 1Byte| 0x03 |
- STA :名字起始,字符'$'(0x24)。 - STA :名字起始,字符'$'(0x24)。
- END : 名字结束,字符'$'(0x24)。 - END : 名字结束,字符'$'(0x24)。
- NAME :名字字符串,必须写全文件名例如文件名采用8+3格式只识别文件名的前2个字符例如01.mp3和010.mp3是不同的 - NAME :名字字符串,必须写全文件名例如文件名采用8+3格式例如01.mp3和001.mp3是不同的
- 文件必须存在否则播放失败 - 文件必须存在否则播放失败
- 播放指定曲目(文件号)AD - 播放指定曲目(文件号)AD
| HEAD | LENGTH | CMD | FH | FL | CHK | TAIL | | HEAD | LENGTH | CMD | FH | FL | CHK | TAIL |
|------|--------|--------|----------|------------|-------|------| |------|--------|--------|----------|------------|-------|------|
| 0x02 | 1Byte | 0xAD | 1Byte | 1Byte | 1Byte | 0x03 | | 0x02 | 1Byte | 0xAD | 1Byte | 1Byte | 1Byte | 0x03 |
- FHFL组合成以恶搞16bit的整形例如 FH=0x00 FL=0x02 实际上是播放0x0002曲目曲目的顺序号是拷贝进磁盘的顺序 - FHFL组合成一个16bit的整形例如 FH=0x00 FL=0x02 实际上是播放0x0002曲目曲目的顺序号是拷贝进磁盘的顺序
- 文件必须存在否则播放失败
- 指定文件号播放0xC8
| HEAD | LENGTH | CMD | NUM | LOOP | CHK | TAIL |
|------|--------|--------|-----------|-----------|------|------|
| 0x02 | 1Byte | 0xC8 | 1-99 | 1Byte | 1Byte| 0x03 |
- NUM 文件名号码。注文件名采用8+3格式只识别文件名的前2个字符例如01.mp3和01月光小夜曲.mp3是相同的月光小夜曲可有可无但前面序号必须有存放文件时需注意。
- LOOP 循环次数0为单曲无限循环
- 文件必须存在否则播放失败 - 文件必须存在否则播放失败
- 播放信息B0/B1/B2/B3/B4
| HEAD | LENGTH | CMD | CHK | TAIL |
|------|--------|--------|-------|------|
| 0x02 | 1Byte | 0xB0 | 1Byte | 0x03 |
- ACK:
| HEAD | LENGTH | CMD | ERR | DH | DL | CHK | TAIL |
|------|--------|--------|-------|-------|------|-------|------|
| 0x02 | 1Byte | 0xB0 | 1Byte | 1Byte | 1Byte| 1Byte | 0x03 |
- DH,DL: 回复数据组合成一个16bit的整形例如 DH=0x00 DL=0x02 则值是0x0002
## 附录1校验 ## 附录1校验
- 校验方式为校验和计算方式为数据累计和取反加1的方式 - 校验方式为校验和计算方式为数据累计和取反加1的方式
- 举例发送系统复位指令A00x02 0x02 0xA0 CheckSum 0x03 - 举例发送系统复位指令A00x02 0x02 0xA0 CheckSum 0x03

Binary file not shown.

Before

Width:  |  Height:  |  Size: 305 KiB

After

Width:  |  Height:  |  Size: 329 KiB

View File

@ -3,6 +3,7 @@
#include "app_config.h" #include "app_config.h"
#include "audio_enc.h" #include "audio_enc.h"
#include "app_main.h" #include "app_main.h"
#include "kt.h"
#define LOG_TAG_CONST APP_MUSIC #define LOG_TAG_CONST APP_MUSIC
#define LOG_TAG "[APP_MUSIC]" #define LOG_TAG "[APP_MUSIC]"
@ -169,20 +170,30 @@ int music_player_end_deal(int parm)
else else
{ {
/// 正常结束,自动下一曲 /// 正常结束,自动下一曲
printf("......app_var.cycle_mode : %d \n", app_var.cycle_mode);
#if (MUSIC_PLAYER_CYCLE_ALL_DEV_EN) #if (MUSIC_PLAYER_CYCLE_ALL_DEV_EN)
u32 cur_file = music_player_get_file_cur(); u32 cur_file = music_player_get_file_cur();
if ((music_player_get_record_play_status() == false) && (app_var.cycle_mode == FCYCLE_ALL) && (cur_file >= music_player_get_file_total()) && (dev_manager_get_total(1) > 1)) if ((music_player_get_record_play_status() == false) && (app_var.cycle_mode == FCYCLE_ALL) && (cur_file >= music_player_get_file_total()) && (dev_manager_get_total(1) > 1))
{ {
printf("......music_player_play_first_file 1 \n");
char *logo = music_player_get_dev_flit("_rec", 1); char *logo = music_player_get_dev_flit("_rec", 1);
if (logo) if (logo)
{ {
printf("......music_player_play_first_file 2 \n");
err = music_player_play_first_file(logo); err = music_player_play_first_file(logo);
break; break;
} }
} }
printf("......music_player_play_auto_next 1 \n");
#endif /*MUSIC_PLAYER_CYCLE_ALL_DEV_EN*/ #endif /*MUSIC_PLAYER_CYCLE_ALL_DEV_EN*/
//err = music_player_play_auto_next(); printf("......kt_get_cycle() : %d \n", kt_get_cycle());
if (kt_get_cycle() != FCYCLE_ONE && kt_get_cycle() != FCYCLE_LIST)
{
printf("......music_player_play_auto_next 2\n");
err = music_player_play_auto_next();
}
} }
printf("......music_player_end_deal 1 \n");
break; break;
/// 解码器产生的错误, 文件损坏等 /// 解码器产生的错误, 文件损坏等
case AUDIO_PLAY_EVENT_ERR: case AUDIO_PLAY_EVENT_ERR:
@ -985,6 +996,7 @@ int music_player_play_next(void)
@note @note
*/ */
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
static u8 first_start = 0;
int music_player_play_first_file(char *logo) int music_player_play_first_file(char *logo)
{ {
if (logo == NULL) if (logo == NULL)
@ -1016,6 +1028,14 @@ int music_player_play_first_file(char *logo)
{ {
return MUSIC_PLAYER_ERR_FILE_NOFOUND; return MUSIC_PLAYER_ERR_FILE_NOFOUND;
} }
if (first_start == 0)
{
first_start = 1;
dev_manager_set_active(__this->dev);
return MUSIC_PLAYER_SUCC;
//return MUSIC_PLAYER_ERR_FILE_NOFOUND;
}
/// start decoder /// start decoder
int err = music_player_decode_start(__this->file, 0); int err = music_player_decode_start(__this->file, 0);
if (err == MUSIC_PLAYER_SUCC) if (err == MUSIC_PLAYER_SUCC)
@ -1083,32 +1103,38 @@ int music_player_play_last_file(char *logo)
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
int music_player_play_auto_next(void) int music_player_play_auto_next(void)
{ {
printf("......cycle : %d ,music_player_play_auto_next 1 \n", kt_get_cycle());
/// close player first /// close player first
music_player_stop(0); music_player_stop(0);
/// get dev, 检查设备是否有掉线 /// get dev, 检查设备是否有掉线
if (dev_manager_online_check(__this->dev, 1) == 0) if (dev_manager_online_check(__this->dev, 1) == 0)
{ {
printf("......music_player_play_auto_next 2 \n");
return MUSIC_PLAYER_ERR_DEV_OFFLINE; return MUSIC_PLAYER_ERR_DEV_OFFLINE;
} }
/// 不需要重新找设备、扫盘 /// 不需要重新找设备、扫盘
if (__this->fsn == NULL) if (__this->fsn == NULL)
{ {
printf("......music_player_play_auto_next 3 \n");
return MUSIC_PLAYER_ERR_FSCAN; return MUSIC_PLAYER_ERR_FSCAN;
} }
/// get file /// get file
__this->file = file_manager_select(__this->dev, __this->fsn, FSEL_AUTO_FILE, 0, __this->parm.scan_cb); /// 选择自动下一曲 __this->file = file_manager_select(__this->dev, __this->fsn, FSEL_AUTO_FILE, 0, __this->parm.scan_cb); /// 选择自动下一曲
if (__this->file == NULL) if (__this->file == NULL)
{ {
printf("......music_player_play_auto_next 4 \n");
return MUSIC_PLAYER_ERR_FILE_NOFOUND; return MUSIC_PLAYER_ERR_FILE_NOFOUND;
} }
/// start decoder /// start decoder
int err = music_player_decode_start(__this->file, 0); int err = music_player_decode_start(__this->file, 0);
if (err == MUSIC_PLAYER_SUCC) if (err == MUSIC_PLAYER_SUCC)
{ {
printf("......music_player_play_auto_next 5 \n");
/// 选定新设备播放成功后,需要激活当前设备 /// 选定新设备播放成功后,需要激活当前设备
dev_manager_set_active(__this->dev); dev_manager_set_active(__this->dev);
log_i("[%s %d] ok\n", __FUNCTION__, __LINE__); log_i("[%s %d] ok\n", __FUNCTION__, __LINE__);
} }
printf("......music_player_play_auto_next 6 \n");
return err; return err;
} }
//*----------------------------------------------------------------------------*/ //*----------------------------------------------------------------------------*/

View File

@ -2,19 +2,31 @@
#include "app_task.h" #include "app_task.h"
#include "music_player.h" #include "music_player.h"
typedef struct _kt_var_
{
int tid;
struct
{
u8 play_mode; //0:none,1:num,2:name,3:fullname
u8 play_num;
char play_name[32];
u8 cycle_mode;
}play_status;
u16 tid; } _kt_var;
static _kt_var kt_var;
#define __this (&kt_var)
void kt_busy_ctl_init(void) void kt_busy_ctl_init(void)
{ {
/* pa ctl-mute*/ /* pa ctl-mute*/
//gpio_set_direction(KT_PAMUTE_PORT, 0); // gpio_set_direction(KT_PAMUTE_PORT, 0);
//gpio_set_pull_up(KT_PAMUTE_PORT, 0); // gpio_set_pull_up(KT_PAMUTE_PORT, 0);
//gpio_set_pull_down(KT_PAMUTE_PORT, 0); // gpio_set_pull_down(KT_PAMUTE_PORT, 0);
//gpio_set_hd(KT_PAMUTE_PORT, 1); // gpio_set_hd(KT_PAMUTE_PORT, 1);
//gpio_set_output_value(KT_PAMUTE_PORT, 1); // gpio_set_output_value(KT_PAMUTE_PORT, 1);
gpio_set_direction(KT_BUSY_PORT, 0); gpio_set_direction(KT_BUSY_PORT, 0);
gpio_set_pull_up(KT_BUSY_PORT, 0); gpio_set_pull_up(KT_BUSY_PORT, 0);
@ -26,6 +38,7 @@ void kt_busy_ctl_init(void)
void timer_cb(void *arg) void timer_cb(void *arg)
{ {
#if 0
if (app_get_curr_task() == APP_MUSIC_TASK) if (app_get_curr_task() == APP_MUSIC_TASK)
{ {
if (music_player_get_play_status() == FILE_DEC_STATUS_PLAY) if (music_player_get_play_status() == FILE_DEC_STATUS_PLAY)
@ -41,21 +54,70 @@ void timer_cb(void *arg)
{ {
gpio_set_output_value(KT_BUSY_PORT, 1); gpio_set_output_value(KT_BUSY_PORT, 1);
} }
#endif
} }
void start_timer(void) void start_timer(void)
{ {
if (tid) if (__this->tid)
{ {
sys_timer_del(tid); sys_timer_del(__this->tid);
} }
tid = sys_timer_add(NULL,timer_cb, 50); __this->tid = sys_timer_add(NULL, timer_cb, 50);
} }
u8 kt_get_cycle(void)
{
return __this->play_status.cycle_mode;
}
void kt_change_cycle(u8 cycle)
{
__this->play_status.cycle_mode = cycle;
if (cycle != FCYCLE_ONE)
{
memset(&__this->play_status, 0, sizeof(__this->play_status));
}
}
void kt_set_last_play(u8 mode, u8 num, char *name)
{
printf("kt_set_last_play mode = %d, num = %d, name = %s\n", mode, num, name);
__this->play_status.play_mode = mode;
if (mode == 1)
{
printf("kt_set_last_play num = %d\n", num);
__this->play_status.play_num = num;
}
else
{
printf("kt_set_last_play name = %s\n", name);
memset(__this->play_status.play_name, 0, sizeof(__this->play_status.play_name));
strcpy(__this->play_status.play_name, name);
printf("kt_set_last_play play_name = %s\n", __this->play_status.play_name);
}
}
void kt_get_last_play(u8 *mode, u8 *num, char *name)
{
*mode = __this->play_status.play_mode;
printf("kt_get_last_play mode = %d\n", *mode);
if (__this->play_status.play_mode == 1)
{
*num = __this->play_status.play_num;
printf("kt_get_last_play num = %d\n", *num);
}
else
{
strcpy(name, __this->play_status.play_name);
printf("kt_get_last_play name = %s\n", name);
}
}
void kt_init(void) void kt_init(void)
{ {
kt_busy_ctl_init(); memset(&__this->play_status, 0, sizeof(__this->play_status));
//kt_busy_ctl_init();
kt_uart_init(); kt_uart_init();
start_timer(); start_timer();
} }

View File

@ -9,6 +9,8 @@
#define KT_UART_RX_PORT IO_PORTB_07 #define KT_UART_RX_PORT IO_PORTB_07
#define KT_BUSY_PORT IO_PORTA_04 #define KT_BUSY_PORT IO_PORTA_04
#define PA_MUTE() (gpio_set_output_value(IO_PORTA_04,1))
#define PA_UNMUTE() (gpio_set_output_value(IO_PORTA_04,0))
typedef struct typedef struct
{ {
@ -41,13 +43,25 @@ typedef struct
#define KT_CMD_VOL_SET 0xA8 #define KT_CMD_VOL_SET 0xA8
#define KT_CMD_VOL_MUTE 0xA9 #define KT_CMD_VOL_MUTE 0xA9
#define KT_CMD_VOL_UNMUTE 0xAA #define KT_CMD_VOL_UNMUTE 0xAA
#define KT_CMD_CYCLE 0xAE
#define KT_CMD_PLAY_NAME 0xAB #define KT_CMD_PLAY_NAME 0xAB
#define KT_CMD_PLAY_FULL_NAME 0xAC #define KT_CMD_PLAY_FULL_NAME 0xAC
#define KT_CMD_PLAY_NUM 0xAD #define KT_CMD_PLAY_NUM 0xAD
#define KT_CMD_GET_FILE_NUM 0xB0
#define KT_CMD_GET_DIR_NUM 0xB1
#define KT_CMD_GET_DIR_FILE_NUM 0xB2
#define KT_CMD_GET_PLAY_TOTAL_TIME 0xB3
#define KT_CMD_GET_PLAY_CUR_TIME 0xB4
void kt_uart_init(void); void kt_uart_init(void);
void kt_uart_event(void); void kt_uart_event(void);
void kt_init(void); void kt_init(void);
void kt_change_cycle(u8 cycle);
u8 kt_get_cycle(void);
void kt_set_last_play(u8 mode, u8 num, char *name);
void kt_get_last_play(u8 *mode, u8 *num, char *name);
#endif #endif

View File

@ -87,25 +87,58 @@ static void uart_ack(u8 cmd, u8 err)
uart_bus->write(tx_buf,index); uart_bus->write(tx_buf,index);
} }
static void uart_ack_d16(u8 cmd, u8 err,u16 data)
{
if (uart_bus == NULL)
{
return;
}
printf("tx_data cmd:%x err:%d \r\n", cmd, err);
u8 tx_buf[32] = {0};
int index = 0;
tx_buf[index++] = 0x02;
tx_buf[index++] = 0x04;
tx_buf[index++] = cmd;
tx_buf[index++] = err;
tx_buf[index++] = (u8)(data >> 8);
tx_buf[index++] = (u8)(data & 0xFF);
u8 x = tx_buf[1];
x = x ^ tx_buf[2];
x = x ^ tx_buf[3];
tx_buf[index++] = x;
tx_buf[index++] = 0x03;
uart_bus->write(tx_buf,index);
}
char str_play_name[32]; char str_play_name[32];
char str_play_name_full[32]; char str_play_name_full[32];
static void uart_process(tRxPacket *pack) static void uart_process(tRxPacket *pack)
{ {
if ((pack->buf[0] != 0x02) || (pack->buf[pack->leng - 1] != 0x03)) if ((pack->buf[0] != 0x02) || (pack->buf[pack->leng - 1] != 0x03))
{ {
printf("data err head = %d tail = %d \n", pack->buf[0], pack->buf[pack->leng - 1]);
return; return;
} }
if (pack->buf[1] != pack->leng - 2) if (pack->buf[1] != pack->leng - 2)
{ {
printf("data err length = %d \n", pack->buf[1]);
uart_ack(pack->buf[2], KT_ERR_LENGTH); uart_ack(pack->buf[2], KT_ERR_LENGTH);
return; return;
} }
u8 xor = pack->buf[1]; u8 xor = pack->buf[1];
if (pack->buf[pack->leng - 2] != 0xFF) if (pack->buf[pack->leng - 2] != 0xFF)
{ {
printf("need xor check \n");
for (int i = 0; i < pack->buf[1] - 2; i++) for (int i = 0; i < pack->buf[1] - 2; i++)
{ {
xor = xor ^ pack->buf[2 + i]; xor = xor ^ pack->buf[2 + i];
@ -120,6 +153,7 @@ static void uart_process(tRxPacket *pack)
if (pack->buf[2] == KT_CMD_PLAY) if (pack->buf[2] == KT_CMD_PLAY)
{ {
printf("KT_CMD_PLAY \n");
int sta = music_player_get_play_status(); int sta = music_player_get_play_status();
if (sta == FILE_DEC_STATUS_STOP) if (sta == FILE_DEC_STATUS_STOP)
{ {
@ -137,6 +171,7 @@ static void uart_process(tRxPacket *pack)
} }
else if (pack->buf[2] == KT_CMD_PAUSE) else if (pack->buf[2] == KT_CMD_PAUSE)
{ {
printf("KT_CMD_PAUSE \n");
int sta = music_player_get_play_status(); int sta = music_player_get_play_status();
if ((sta == FILE_DEC_STATUS_PLAY) || (sta == FILE_DEC_STATUS_WAIT_PLAY)) if ((sta == FILE_DEC_STATUS_PLAY) || (sta == FILE_DEC_STATUS_WAIT_PLAY))
{ {
@ -147,6 +182,7 @@ static void uart_process(tRxPacket *pack)
} }
else if (pack->buf[2] == KT_CMD_PP) else if (pack->buf[2] == KT_CMD_PP)
{ {
printf("KT_CMD_PP \n");
int sta = music_player_get_play_status(); int sta = music_player_get_play_status();
if (sta == FILE_DEC_STATUS_STOP) if (sta == FILE_DEC_STATUS_STOP)
{ {
@ -161,31 +197,37 @@ static void uart_process(tRxPacket *pack)
} }
else if (pack->buf[2] == KT_CMD_NEXT) else if (pack->buf[2] == KT_CMD_NEXT)
{ {
printf("KT_CMD_NEXT \n");
app_task_put_key_msg(KEY_MUSIC_NEXT,0); app_task_put_key_msg(KEY_MUSIC_NEXT,0);
uart_ack(pack->buf[2], KT_OK); uart_ack(pack->buf[2], KT_OK);
} }
else if (pack->buf[2] == KT_CMD_PREV) else if (pack->buf[2] == KT_CMD_PREV)
{ {
printf("KT_CMD_PREV \n");
app_task_put_key_msg(KEY_MUSIC_PREV,0); app_task_put_key_msg(KEY_MUSIC_PREV,0);
uart_ack(pack->buf[2], KT_OK); uart_ack(pack->buf[2], KT_OK);
} }
else if (pack->buf[2] == KT_CMD_STOP) else if (pack->buf[2] == KT_CMD_STOP)
{ {
app_task_put_key_msg(KEY_MUSIC_PLAYER_END,0); printf("KT_CMD_STOP \n");
app_task_put_key_msg(KEY_USER_PLAY_STOP,0);
uart_ack(pack->buf[2], KT_OK); uart_ack(pack->buf[2], KT_OK);
} }
else if (pack->buf[2] == KT_CMD_VOL_UP) else if (pack->buf[2] == KT_CMD_VOL_UP)
{ {
printf("KT_CMD_VOL_UP \n");
app_task_put_key_msg(KEY_VOL_UP,0); app_task_put_key_msg(KEY_VOL_UP,0);
uart_ack(pack->buf[2], KT_OK); uart_ack(pack->buf[2], KT_OK);
} }
else if (pack->buf[2] == KT_CMD_VOL_DOWN) else if (pack->buf[2] == KT_CMD_VOL_DOWN)
{ {
printf("KT_CMD_VOL_DOWN \n");
app_task_put_key_msg(KEY_VOL_DOWN,0); app_task_put_key_msg(KEY_VOL_DOWN,0);
uart_ack(pack->buf[2], KT_OK); uart_ack(pack->buf[2], KT_OK);
} }
else if (pack->buf[2] == KT_CMD_VOL_SET) else if (pack->buf[2] == KT_CMD_VOL_SET)
{ {
printf("KT_CMD_VOL_SET \n");
app_audio_set_volume(APP_AUDIO_STATE_MUSIC, (s8)(pack->buf[3]), 1); app_audio_set_volume(APP_AUDIO_STATE_MUSIC, (s8)(pack->buf[3]), 1);
uart_ack(pack->buf[2], KT_OK); uart_ack(pack->buf[2], KT_OK);
} }
@ -195,6 +237,7 @@ static void uart_process(tRxPacket *pack)
//KT_PA_MUTE(); //KT_PA_MUTE();
kt_sys_mute = 1; kt_sys_mute = 1;
//KT_PA_MUTE(); //KT_PA_MUTE();
app_audio_mute(0);
uart_ack(pack->buf[2], KT_OK); uart_ack(pack->buf[2], KT_OK);
} }
else if (pack->buf[2] == KT_CMD_VOL_UNMUTE) else if (pack->buf[2] == KT_CMD_VOL_UNMUTE)
@ -202,10 +245,12 @@ static void uart_process(tRxPacket *pack)
printf("KT_CMD_VOL_UNMUTE \n"); printf("KT_CMD_VOL_UNMUTE \n");
kt_sys_mute = 0; kt_sys_mute = 0;
//KT_PA_UNMUTE(); //KT_PA_UNMUTE();
app_audio_mute(1);
uart_ack(pack->buf[2], KT_OK); uart_ack(pack->buf[2], KT_OK);
} }
else if (pack->buf[2] == KT_CMD_PLAY_NAME) //0xAB else if (pack->buf[2] == KT_CMD_PLAY_NAME) //0xAB
{ {
printf("KT_CMD_PLAY_NAME \n");
if (pack->buf[3] == '$') if (pack->buf[3] == '$')
{ {
//char temp[32]; //char temp[32];
@ -244,6 +289,7 @@ static void uart_process(tRxPacket *pack)
} }
else if (pack->buf[2] == KT_CMD_PLAY_FULL_NAME) //0xAC else if (pack->buf[2] == KT_CMD_PLAY_FULL_NAME) //0xAC
{ {
printf("KT_CMD_PLAY_FULL_NAME \n");
if (pack->buf[3] == '$') if (pack->buf[3] == '$')
{ {
//char temp[32]; //char temp[32];
@ -282,6 +328,7 @@ static void uart_process(tRxPacket *pack)
} }
else if (pack->buf[2] == KT_CMD_PLAY_NUM) //0xAD else if (pack->buf[2] == KT_CMD_PLAY_NUM) //0xAD
{ {
printf("KT_CMD_PLAY_NUM \n");
u16 num = 0; u16 num = 0;
num = pack->buf[3]; num = pack->buf[3];
num = num << 8; num = num << 8;
@ -290,8 +337,55 @@ static void uart_process(tRxPacket *pack)
app_task_put_key_msg(KEY_USER_PLAY_NUM, num); //test demo app_task_put_key_msg(KEY_USER_PLAY_NUM, num); //test demo
uart_ack(pack->buf[2], KT_OK); uart_ack(pack->buf[2], KT_OK);
} }
else if (pack->buf[2] == KT_CMD_CYCLE)
{
printf("KT_CMD_CYCLE \n");
app_task_put_key_msg(KEY_USER_PLAY_CYCLE, pack->buf[3]);
uart_ack(pack->buf[2], KT_OK);
}
else if (pack->buf[2] == KT_CMD_GET_FILE_NUM) //文件数量
{
printf("KT_CMD_GET_FILE_NUM \n");
u16 num = 0;
num = music_player_get_file_total();
printf("num = %d\n", num);
uart_ack_d16(pack->buf[2], KT_OK, num);
}
else if (pack->buf[2] == KT_CMD_GET_DIR_NUM) //文件夹数量
{
printf("KT_CMD_GET_DIR_NUM \n");
u16 num = 0;
num = music_player_get_dir_total();
printf("num = %d\n", num);
uart_ack_d16(pack->buf[2], KT_OK, num);
}
else if (pack->buf[2] == KT_CMD_GET_DIR_FILE_NUM) //当前文件夹文件数量
{
printf("KT_CMD_GET_DIR_FILE_NUM \n");
u16 num = 0;
num = music_player_get_fileindir_number();
printf("num = %d\n", num);
uart_ack_d16(pack->buf[2], KT_OK, num);
}
else if (pack->buf[2] == KT_CMD_GET_PLAY_TOTAL_TIME) //播放总时间
{
printf("KT_CMD_GET_PLAY_TOTAL_TIME \n");
u16 num = 0;
num = music_player_get_dec_total_time();
printf("num = %d\n", num);
uart_ack_d16(pack->buf[2], KT_OK, num);
}
else if (pack->buf[2] == KT_CMD_GET_PLAY_CUR_TIME) //播放当前时间
{
printf("KT_CMD_GET_PLAY_CUR_TIME \n");
u16 num = 0;
num = music_player_get_dec_cur_time();
printf("num = %d\n", num);
uart_ack_d16(pack->buf[2], KT_OK, num);
}
else else
{ {
printf("KT_CMD_UNCMD \n");
uart_ack(pack->buf[2], KT_ERR_UNCMD); uart_ack(pack->buf[2], KT_ERR_UNCMD);
} }
} }

View File

@ -46,7 +46,7 @@
#define TCFG_UART0_RX_PORT NO_CONFIG_PORT //串口接收脚配置用于打印可以选择NO_CONFIG_PORT #define TCFG_UART0_RX_PORT NO_CONFIG_PORT //串口接收脚配置用于打印可以选择NO_CONFIG_PORT
#if 1 #if 1
#define TCFG_UART0_TX_PORT IO_PORTA_05 //串口发送脚配置 #define TCFG_UART0_TX_PORT IO_PORT_DP //串口发送脚配置
#define TCFG_UART0_BAUDRATE 115200 //串口波特率配置 #define TCFG_UART0_BAUDRATE 115200 //串口波特率配置
#else #else
#define TCFG_UART0_TX_PORT IO_PORTA_05 //串口发送脚配置 #define TCFG_UART0_TX_PORT IO_PORTA_05 //串口发送脚配置
@ -74,7 +74,7 @@
//*********************************************************************************// //*********************************************************************************//
// 硬件SPI 配置 // // 硬件SPI 配置 //
//*********************************************************************************// //*********************************************************************************//
#define TCFG_HW_SPI1_ENABLE ENABLE_THIS_MOUDLE #define TCFG_HW_SPI1_ENABLE DISABLE_THIS_MOUDLE
//A组IO: DI: PB2 DO: PB1 CLK: PB0 //A组IO: DI: PB2 DO: PB1 CLK: PB0
//B组IO: DI: PC3 DO: PC5 CLK: PC4 //B组IO: DI: PC3 DO: PC5 CLK: PC4
#define TCFG_HW_SPI1_PORT 'B' #define TCFG_HW_SPI1_PORT 'B'
@ -93,7 +93,7 @@
//*********************************************************************************// //*********************************************************************************//
// FLASH 配置 // // FLASH 配置 //
//*********************************************************************************// //*********************************************************************************//
#define TCFG_NORFLASH_DEV_ENABLE ENABLE_THIS_MOUDLE //需要关闭SD0 #define TCFG_NORFLASH_DEV_ENABLE DISABLE_THIS_MOUDLE //需要关闭SD0
#define TCFG_FLASH_DEV_SPI_HW_NUM 1// 1: SPI1 2: SPI2 #define TCFG_FLASH_DEV_SPI_HW_NUM 1// 1: SPI1 2: SPI2
#define TCFG_FLASH_DEV_SPI_CS_PORT IO_PORTC_03 #define TCFG_FLASH_DEV_SPI_CS_PORT IO_PORTC_03
@ -126,7 +126,7 @@
//A组IO: CMD:PC4 CLK:PC5 DAT0:PC3 //D组IO: CMD:PB2 CLK:PB0 DAT0:PB3 //A组IO: CMD:PC4 CLK:PC5 DAT0:PC3 //D组IO: CMD:PB2 CLK:PB0 DAT0:PB3
//B组IO: CMD:PB6 CLK:PB7 DAT0:PB5 //E组IO: CMD:PA4 CLK:PC5 DAT0:DM //B组IO: CMD:PB6 CLK:PB7 DAT0:PB5 //E组IO: CMD:PA4 CLK:PC5 DAT0:DM
//C组IO: CMD:PA4 CLK:PA2 DAT0:PA3 //F组IO: CMD:PB6 CLK:PB7 DAT0:PB4 //C组IO: CMD:PA4 CLK:PA2 DAT0:PA3 //F组IO: CMD:PB6 CLK:PB7 DAT0:PB4
#define TCFG_SD0_ENABLE DISABLE_THIS_MOUDLE #define TCFG_SD0_ENABLE ENABLE_THIS_MOUDLE
#define TCFG_SD0_PORTS 'A' #define TCFG_SD0_PORTS 'A'
#define TCFG_SD0_DAT_MODE 1//AC696x不支持4线模式 #define TCFG_SD0_DAT_MODE 1//AC696x不支持4线模式
#define TCFG_SD0_DET_MODE SD_CLK_DECT #define TCFG_SD0_DET_MODE SD_CLK_DECT
@ -249,13 +249,13 @@
//必须从小到大填电阻没有则同VDDIO,填0x3ffL //必须从小到大填电阻没有则同VDDIO,填0x3ffL
#define TCFG_ADKEY_AD0 (0) //0R #define TCFG_ADKEY_AD0 (0) //0R
#define TCFG_ADKEY_AD1 (0x3ffL * 10 / (10 + R_UP)) //3k #define TCFG_ADKEY_AD1 (0x3ffL * 47 / (47 + R_UP)) //3k
#define TCFG_ADKEY_AD2 (0x3ffL * 22 / (22 + R_UP)) //6.2k #define TCFG_ADKEY_AD2 (0x3ffL * 100 / (100 + R_UP)) //6.2k
#define TCFG_ADKEY_AD3 (0x3ffL * 47 / (47 + R_UP)) //9.1k #define TCFG_ADKEY_AD3 (0x3ffL * 220 / (220 + R_UP)) //9.1k
#define TCFG_ADKEY_AD4 (0x3ffL * 68 / (68 + R_UP)) //15k #define TCFG_ADKEY_AD4 (0x3ffL * 470 / (470 + R_UP)) //15k
#define TCFG_ADKEY_AD5 (0x3ffL * 100 / (100 + R_UP)) //24k #define TCFG_ADKEY_AD5 (0x3ffL) //24k
#define TCFG_ADKEY_AD6 (0x3ffL * 150 / (150 + R_UP)) //33k #define TCFG_ADKEY_AD6 (0x3ffL) //33k
#define TCFG_ADKEY_AD7 (0x3ffL * 240 / (240 + R_UP)) //51k #define TCFG_ADKEY_AD7 (0x3ffL) //51k
#define TCFG_ADKEY_AD8 (0x3ffL) //100k #define TCFG_ADKEY_AD8 (0x3ffL) //100k
#define TCFG_ADKEY_AD9 (0x3ffL) #define TCFG_ADKEY_AD9 (0x3ffL)
#define TCFG_ADKEY_VDDIO (0x3ffL) #define TCFG_ADKEY_VDDIO (0x3ffL)
@ -419,7 +419,7 @@ DAC硬件上的连接方式,可选的配置:
#define AUDIO_OUTPUT_WAY AUDIO_OUTPUT_WAY_DAC #define AUDIO_OUTPUT_WAY AUDIO_OUTPUT_WAY_DAC
#define LINEIN_INPUT_WAY LINEIN_INPUT_WAY_ANALOG #define LINEIN_INPUT_WAY LINEIN_INPUT_WAY_ANALOG
#define AUDIO_OUTPUT_AUTOMUTE 0//ENABLE #define AUDIO_OUTPUT_AUTOMUTE 1//ENABLE
/* /*
* *
* *

View File

@ -133,28 +133,28 @@ const u16 linein_key_ad_table[KEY_AD_NUM_MAX][KEY_EVENT_MAX] = {
const u16 music_key_ad_table[KEY_AD_NUM_MAX][KEY_EVENT_MAX] = { const u16 music_key_ad_table[KEY_AD_NUM_MAX][KEY_EVENT_MAX] = {
//单击 //长按 //hold //抬起 //双击 //三击 //单击 //长按 //hold //抬起 //双击 //三击
[0] = { [0] = {
KEY_CHANGE_MODE, KEY_POWEROFF, KEY_POWEROFF_HOLD, KEY_NULL, KEY_NULL, KEY_NULL KEY_MUSIC_PP, KEY_POWEROFF, KEY_POWEROFF_HOLD, KEY_NULL, KEY_NULL, KEY_NULL
}, },
[1] = { [1] = {
KEY_MUSIC_CHANGE_REPEAT, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL KEY_VOL_DOWN, KEY_VOL_DOWN, KEY_VOL_DOWN, KEY_NULL, KEY_NULL, KEY_NULL
}, },
[2] = { [2] = {
KEY_MUSIC_PP, KEY_MUSIC_CHANGE_DEV, KEY_NULL, KEY_NULL, KEY_EQ_MODE, KEY_NULL KEY_VOL_UP, KEY_VOL_UP, KEY_VOL_UP, KEY_NULL, KEY_NULL, KEY_NULL
}, },
[3] = { [3] = {
KEY_MUSIC_PLAYE_NEXT_FOLDER, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL KEY_MUSIC_PREV, KEY_VOL_DOWN, KEY_VOL_DOWN, KEY_NULL, KEY_NULL, KEY_NULL
}, },
[4] = { [4] = {
KEY_MUSIC_PREV, KEY_VOL_DOWN, KEY_VOL_DOWN, KEY_NULL, KEY_NULL, KEY_NULL KEY_MUSIC_NEXT, KEY_VOL_UP, KEY_VOL_UP, KEY_NULL, KEY_NULL, KEY_NULL
}, },
[5] = { [5] = {
KEY_MUSIC_PLAYE_PREV_FOLDER, KEY_NULL, KEY_MUSIC_FR, KEY_NULL, KEY_NULL, KEY_NULL KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL
}, },
[6] = { [6] = {
KEY_MUSIC_NEXT, KEY_VOL_UP, KEY_VOL_UP, KEY_NULL, KEY_REVERB_OPEN, KEY_NULL KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL
}, },
[7] = { [7] = {
KEY_MUSIC_PLAYE_REC_FOLDER_SWITCH, KEY_NULL, KEY_MUSIC_FF, KEY_NULL, KEY_NULL, KEY_NULL KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL
}, },
[8] = { [8] = {
KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL

View File

@ -96,16 +96,28 @@ static void app_init()
do_platform_initcall(); do_platform_initcall();
board_init(); board_init();
//mute/busy HiZ
gpio_set_pull_down(IO_PORTA_02,0);
gpio_set_pull_up(IO_PORTA_02,0);
gpio_set_die(IO_PORTA_02,1);
gpio_set_direction(IO_PORTA_02,1);
//mute
gpio_set_pull_down(IO_PORTA_04,0);
gpio_set_pull_up(IO_PORTA_04,0);
gpio_set_direction(IO_PORTA_04,0);
gpio_set_output_value(IO_PORTA_04,1);
gpio_set_pull_down(IO_PORTC_02,0); gpio_set_pull_down(IO_PORTC_02,0);
gpio_set_pull_up(IO_PORTC_02,0); gpio_set_pull_up(IO_PORTC_02,0);
gpio_set_die(IO_PORTC_02,1); gpio_set_die(IO_PORTC_02,1);
gpio_set_direction(IO_PORTC_02,1); gpio_set_direction(IO_PORTC_02,1);
gpio_set_pull_down(IO_PORTA_02,0);
gpio_set_pull_up(IO_PORTA_02,0);
gpio_set_die(IO_PORTA_02,1); gpio_set_pull_down(IO_PORTA_01,0);
gpio_set_direction(IO_PORTA_02,1); gpio_set_pull_up(IO_PORTA_01,0);
gpio_set_die(IO_PORTA_01,1);
gpio_set_direction(IO_PORTA_01,1);
do_initcall(); do_initcall();

View File

@ -14,7 +14,7 @@
#define CONFIG_DEBUG_LIB(x) (x & LIB_DEBUG) #define CONFIG_DEBUG_LIB(x) (x & LIB_DEBUG)
#define CONFIG_DEBUG_ENABLE //#define CONFIG_DEBUG_ENABLE
#ifndef CONFIG_DEBUG_ENABLE #ifndef CONFIG_DEBUG_ENABLE
//#define CONFIG_DEBUG_LITE_ENABLE //轻量级打印开关, 默认关闭 //#define CONFIG_DEBUG_LITE_ENABLE //轻量级打印开关, 默认关闭

View File

@ -178,6 +178,8 @@ enum {
KEY_USER_PLAY_NUM, KEY_USER_PLAY_NUM,
KEY_USER_PLAY_NAME, KEY_USER_PLAY_NAME,
KEY_USER_PLAY_FULL_NAME, KEY_USER_PLAY_FULL_NAME,
KEY_USER_PLAY_CYCLE,
KEY_USER_PLAY_STOP,
KEY_IR_NUM_0, //中间不允许插入 KEY_IR_NUM_0, //中间不允许插入
KEY_IR_NUM_1, KEY_IR_NUM_1,

View File

@ -18,6 +18,7 @@
#include "common/dev_status.h" #include "common/dev_status.h"
#include "clock_cfg.h" #include "clock_cfg.h"
#include "system/fs/fs.h" #include "system/fs/fs.h"
#include "kt.h"
/************************************************************* /*************************************************************
music模式按键处理和事件处理 music模式按键处理和事件处理
@ -430,7 +431,7 @@ void music_player_err_deal(int err)
} }
else else
{ {
//msg = KEY_MUSIC_AUTO_NEXT_DEV; /// 所有文件都是错误的, 切换到下一个设备 // msg = KEY_MUSIC_AUTO_NEXT_DEV; /// 所有文件都是错误的, 切换到下一个设备
} }
} }
else else
@ -438,11 +439,11 @@ void music_player_err_deal(int err)
__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;
@ -454,7 +455,7 @@ void music_player_err_deal(int err)
} }
else else
{ {
//msg = KEY_MUSIC_PLAYER_START; /// 没有找到指定设备, 播放之前的活动设备 // msg = KEY_MUSIC_PLAYER_START; /// 没有找到指定设备, 播放之前的活动设备
} }
break; break;
@ -493,7 +494,7 @@ void music_player_err_deal(int err)
} }
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:
@ -510,7 +511,7 @@ void music_player_err_deal(int err)
{ {
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;
} }
} }
@ -521,7 +522,7 @@ void music_player_err_deal(int err)
} }
else else
{ {
//msg = KEY_MUSIC_AUTO_NEXT_DEV; // msg = KEY_MUSIC_AUTO_NEXT_DEV;
} }
break; break;
} }
@ -595,14 +596,14 @@ static int music_key_event_opr(struct sys_event *event)
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;
case KEY_USER_PLAY_NUM: case KEY_USER_PLAY_NUM:
printf("KEY_USER_PLAY_NUM = %d !!\n", msg[1]); printf("KEY_USER_PLAY_NUM = %d !!\n", msg[1]);
@ -610,8 +611,12 @@ static int music_key_event_opr(struct sys_event *event)
// sprintf(str, "/%03d.*", msg[1]); // sprintf(str, "/%03d.*", msg[1]);
// printf("%s \n", str); // printf("%s \n", str);
// err = music_player_play_by_path((char *)"fat_nor", str); // err = music_player_play_by_path((char *)"fat_nor", str);
err = music_player_play_by_number((char *)"fat_nor", msg[1]); err = music_player_play_by_number((char *)"sd0", msg[1]);
printf("err = %d\n", err); printf("err = %d\n", err);
if (kt_get_cycle() == FCYCLE_ONE)
{
kt_set_last_play(1, msg[1], NULL);
}
break; break;
case KEY_USER_PLAY_NAME: case KEY_USER_PLAY_NAME:
printf("KEY_USER_PLAY_NAME !!\n"); printf("KEY_USER_PLAY_NAME !!\n");
@ -624,16 +629,37 @@ static int music_key_event_opr(struct sys_event *event)
strcat(str, ".*"); strcat(str, ".*");
// strcat(play_name,".*") // strcat(play_name,".*")
printf("%s \n", str); printf("%s \n", str);
err = music_player_play_by_path((char *)"fat_nor", str); err = music_player_play_by_path((char *)"sd0", str);
printf("err = %d\n", err); printf("err = %d\n", err);
if (kt_get_cycle() == FCYCLE_ONE)
{
kt_set_last_play(2, 0, str);
}
break; break;
case KEY_USER_PLAY_FULL_NAME: case KEY_USER_PLAY_FULL_NAME:
printf("KEY_USER_PLAY_FULL_NAME !!\n"); printf("KEY_USER_PLAY_FULL_NAME !!\n");
play_name = (char *)msg[1]; play_name = (char *)msg[1];
printf("%s \n", play_name); printf("%s \n", play_name);
err = music_player_play_by_path((char *)"fat_nor", play_name); err = music_player_play_by_path((char *)"sd0", play_name);
printf("err = %d\n", err); printf("err = %d\n", err);
if (kt_get_cycle() == FCYCLE_ONE)
{
kt_set_last_play(3, 0, play_name);
}
break;
case KEY_USER_PLAY_CYCLE:
printf("KEY_USER_PLAY_CYCLE !!\n");
if (msg[1] < FCYCLE_MAX)
{
kt_change_cycle(msg[1]);
music_player_set_repeat_mode(msg[1]);
}
break;
case KEY_USER_PLAY_STOP:
printf("KEY_USER_PLAY_STOP !!\n");
//err = music_player_end_deal(msg[1]);
music_player_stop(0);
break; break;
/// 播放器退出处理 /// 播放器退出处理
case KEY_MUSIC_PLAYER_QUIT: case KEY_MUSIC_PLAYER_QUIT:
@ -644,6 +670,29 @@ static int music_key_event_opr(struct sys_event *event)
case KEY_MUSIC_PLAYER_END: case KEY_MUSIC_PLAYER_END:
printf("KEY_MUSIC_PLAYER_END\n"); printf("KEY_MUSIC_PLAYER_END\n");
err = music_player_end_deal(msg[1]); err = music_player_end_deal(msg[1]);
if (kt_get_cycle() == FCYCLE_ONE)
{
u8 mode, num;
char name[32];
kt_get_last_play(&mode, &num, name);
printf("mode = %d, num = %d, name = %s\n", mode, num, name);
if (mode == 0)
{
printf("noting to do\n");
}
else if (mode == 1)
{
printf("play by number\n");
err = music_player_play_by_number((char *)"sd0", num);
printf("err = %d\n", err);
}
else
{
printf("play by path\n");
err = music_player_play_by_path((char *)"sd0", name);
printf("err = %d\n", err);
}
}
break; break;
/// 播放执行类消息 /// 播放执行类消息
case KEY_MUSIC_PP: case KEY_MUSIC_PP:
@ -986,18 +1035,29 @@ int music_app_check(void)
@note @note
*/ */
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
//static u8 first_start = 0;
void app_music_task() void app_music_task()
{ {
int res; int res;
int msg[32]; int msg[32];
music_task_start(); music_task_start();
//first_start = 1;
#if (MUSIC_DEVICE_TONE_EN) #if (MUSIC_DEVICE_TONE_EN)
music_player_play_start(); music_player_play_start();
#else #else
// 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);
#endif #endif
music_player_set_repeat_mode(FCYCLE_ONE); //music_player_set_repeat_mode(FCYCLE_ONE);
kt_change_cycle(FCYCLE_LIST);
//dev_manager_set_active_by_logo("sd0");
//dev_manager_set_valid_by_logo("sd0", 1);
app_task_put_key_msg(KEY_MUSIC_PLAYER_START, 0);
while (1) while (1)
{ {

View File

@ -55,20 +55,20 @@ extern void mix_out_automute_open();
extern void mix_out_automute_close(); extern void mix_out_automute_close();
#endif #endif
#define AUDIO_CODEC_SUPPORT_SYNC 1 // 同步 #define AUDIO_CODEC_SUPPORT_SYNC 1 // 同步
#if (RECORDER_MIX_EN) #if (RECORDER_MIX_EN)
#define MAX_SRC_NUMBER 4 // 最大支持src个数 #define MAX_SRC_NUMBER 4 // 最大支持src个数
#else #else
#define MAX_SRC_NUMBER 3 // 最大支持src个数 #define MAX_SRC_NUMBER 3 // 最大支持src个数
#endif/*RECORDER_MIX_EN*/ #endif /*RECORDER_MIX_EN*/
#define AUDIO_DECODE_TASK_WAKEUP_TIME 0 // 解码定时唤醒 // ms #define AUDIO_DECODE_TASK_WAKEUP_TIME 0 // 解码定时唤醒 // ms
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
struct audio_decoder_task decode_task = {0}; struct audio_decoder_task decode_task = {0};
struct audio_mixer mixer = {0}; struct audio_mixer mixer = {0};
/*struct audio_stream_dac_out *dac_last = NULL;*/ /*struct audio_stream_dac_out *dac_last = NULL;*/
static u8 audio_dec_inited = 0; static u8 audio_dec_inited = 0;
@ -79,12 +79,12 @@ struct audio_eq_drc *mix_eq_drc = NULL;
struct prevent_task_fill *prevent_fill = NULL; struct prevent_task_fill *prevent_fill = NULL;
#endif #endif
u8 audio_src_hw_filt[SRC_FILT_POINTS * SRC_CHI * 2 * MAX_SRC_NUMBER]; u8 audio_src_hw_filt[SRC_FILT_POINTS * SRC_CHI * 2 * MAX_SRC_NUMBER];
s16 mix_buff[AUDIO_MIXER_LEN / 2] SEC(.dec_mix_buff); s16 mix_buff[AUDIO_MIXER_LEN / 2] SEC(.dec_mix_buff);
#if (RECORDER_MIX_EN) #if (RECORDER_MIX_EN)
struct audio_mixer recorder_mixer = {0}; struct audio_mixer recorder_mixer = {0};
s16 recorder_mix_buff[AUDIO_MIXER_LEN / 2] SEC(.dec_mix_buff); s16 recorder_mix_buff[AUDIO_MIXER_LEN / 2] SEC(.dec_mix_buff);
#endif/*RECORDER_MIX_EN*/ #endif /*RECORDER_MIX_EN*/
#if (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_DAC) #if (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_DAC)
#if AUDIO_CODEC_SUPPORT_SYNC #if AUDIO_CODEC_SUPPORT_SYNC
@ -97,11 +97,9 @@ vocal_remove_hdl *mix_vocal_remove_hdl = NULL;
void *vocal_remove_open(u8 ch_num); void *vocal_remove_open(u8 ch_num);
#endif #endif
extern const int config_mixer_en; extern const int config_mixer_en;
#define AUDIO_DEC_MIXER_EN config_mixer_en #define AUDIO_DEC_MIXER_EN config_mixer_en
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
void *mix_out_eq_drc_open(u16 sample_rate, u8 ch_num); void *mix_out_eq_drc_open(u16 sample_rate, u8 ch_num);
@ -123,7 +121,8 @@ int audio_dac_energy_get(void)
{ {
#if AUDIO_OUTPUT_AUTOMUTE #if AUDIO_OUTPUT_AUTOMUTE
int audio_energy_detect_energy_get(void *_hdl, u8 ch); int audio_energy_detect_energy_get(void *_hdl, u8 ch);
if (mix_out_automute_hdl) { if (mix_out_automute_hdl)
{
return audio_energy_detect_energy_get(mix_out_automute_hdl, BIT(0)); return audio_energy_detect_energy_get(mix_out_automute_hdl, BIT(0));
} }
@ -193,7 +192,7 @@ void audio_dac_sync_src_deal(int in_rate, int out_rate)
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
static void audio_decoder_wakeup_timer(void *priv) static void audio_decoder_wakeup_timer(void *priv)
{ {
//putchar('k'); // putchar('k');
audio_resume_all_decoder(); audio_resume_all_decoder();
} }
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
@ -205,7 +204,8 @@ static void audio_decoder_wakeup_timer(void *priv)
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
int audio_decoder_task_add_probe(struct audio_decoder_task *task) int audio_decoder_task_add_probe(struct audio_decoder_task *task)
{ {
if (task->wakeup_timer == 0) { if (task->wakeup_timer == 0)
{
task->wakeup_timer = sys_hi_timer_add(NULL, audio_decoder_wakeup_timer, AUDIO_DECODE_TASK_WAKEUP_TIME); task->wakeup_timer = sys_hi_timer_add(NULL, audio_decoder_wakeup_timer, AUDIO_DECODE_TASK_WAKEUP_TIME);
log_i("audio_decoder_task_add_probe:%d\n", task->wakeup_timer); log_i("audio_decoder_task_add_probe:%d\n", task->wakeup_timer);
} }
@ -221,11 +221,13 @@ int audio_decoder_task_add_probe(struct audio_decoder_task *task)
int audio_decoder_task_del_probe(struct audio_decoder_task *task) int audio_decoder_task_del_probe(struct audio_decoder_task *task)
{ {
log_i("audio_decoder_task_del_probe\n"); log_i("audio_decoder_task_del_probe\n");
if (audio_decoder_task_wait_state(task) > 0) { if (audio_decoder_task_wait_state(task) > 0)
{
/*解码任务列表还有任务*/ /*解码任务列表还有任务*/
return 0; return 0;
} }
if (task->wakeup_timer) { if (task->wakeup_timer)
{
log_i("audio_decoder_task_del_probe:%d\n", task->wakeup_timer); log_i("audio_decoder_task_del_probe:%d\n", task->wakeup_timer);
sys_hi_timer_del(task->wakeup_timer); sys_hi_timer_del(task->wakeup_timer);
task->wakeup_timer = 0; task->wakeup_timer = 0;
@ -241,13 +243,14 @@ int audio_decoder_task_del_probe(struct audio_decoder_task *task)
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
int audio_decoder_wakeup_modify(int msecs) int audio_decoder_wakeup_modify(int msecs)
{ {
if (decode_task.wakeup_timer) { if (decode_task.wakeup_timer)
{
sys_hi_timer_modify(decode_task.wakeup_timer, msecs); sys_hi_timer_modify(decode_task.wakeup_timer, msecs);
} }
return 0; return 0;
} }
#endif/*AUDIO_DECODE_TASK_WAKEUP_TIME*/ #endif /*AUDIO_DECODE_TASK_WAKEUP_TIME*/
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
/**@brief 各模式主解码open /**@brief 各模式主解码open
@ -266,7 +269,6 @@ void audio_mode_main_dec_open(u32 state)
#endif #endif
} }
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
/**@brief 获取输出默认采样率 /**@brief 获取输出默认采样率
@param @param
@ -309,12 +311,14 @@ u32 audio_output_nor_rate(void)
u32 audio_output_rate(int input_rate) u32 audio_output_rate(int input_rate)
{ {
u32 out_rate = audio_output_nor_rate(); u32 out_rate = audio_output_nor_rate();
if (out_rate) { if (out_rate)
{
return out_rate; return out_rate;
} }
#if (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_BT) #if (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_BT)
if (bt_user_priv_var.emitter_or_receiver == BT_EMITTER_EN) { if (bt_user_priv_var.emitter_or_receiver == BT_EMITTER_EN)
{
y_printf("+++ \n"); y_printf("+++ \n");
return audio_sbc_enc_get_rate(); return audio_sbc_enc_get_rate();
} }
@ -323,11 +327,12 @@ u32 audio_output_rate(int input_rate)
#endif #endif
#if (TCFG_REVERB_ENABLE || TCFG_MIC_EFFECT_ENABLE) #if (TCFG_REVERB_ENABLE || TCFG_MIC_EFFECT_ENABLE)
if (input_rate > 48000) { if (input_rate > 48000)
{
return 48000; return 48000;
} }
#endif #endif
return app_audio_output_samplerate_select(input_rate, 1); return app_audio_output_samplerate_select(input_rate, 1);
} }
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
@ -342,22 +347,26 @@ u32 audio_output_channel_num(void)
#if AUDIO_OUTPUT_INCLUDE_DAC #if AUDIO_OUTPUT_INCLUDE_DAC
#if (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_BT) #if (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_BT)
if (bt_user_priv_var.emitter_or_receiver == BT_EMITTER_EN) { if (bt_user_priv_var.emitter_or_receiver == BT_EMITTER_EN)
{
return audio_sbc_enc_get_channel_num(); return audio_sbc_enc_get_channel_num();
} }
#endif #endif
/*根据DAC输出的方式选择输出的声道*/ /*根据DAC输出的方式选择输出的声道*/
u8 dac_connect_mode = app_audio_output_mode_get(); u8 dac_connect_mode = app_audio_output_mode_get();
if (dac_connect_mode == DAC_OUTPUT_LR || dac_connect_mode == DAC_OUTPUT_DUAL_LR_DIFF) { if (dac_connect_mode == DAC_OUTPUT_LR || dac_connect_mode == DAC_OUTPUT_DUAL_LR_DIFF)
{
return 2; return 2;
} else { }
else
{
return 1; return 1;
} }
#elif (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_FM) #elif (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_FM)
return 2; return 2;
#else #else
return 2; return 2;
#endif #endif
} }
@ -366,8 +375,10 @@ u32 audio_output_channel_type(void)
#if AUDIO_OUTPUT_INCLUDE_DAC #if AUDIO_OUTPUT_INCLUDE_DAC
#if (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_BT) #if (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_BT)
if (bt_user_priv_var.emitter_or_receiver == BT_EMITTER_EN) { if (bt_user_priv_var.emitter_or_receiver == BT_EMITTER_EN)
if (audio_sbc_enc_get_channel_num() == 2) { {
if (audio_sbc_enc_get_channel_num() == 2)
{
return AUDIO_CH_LR; return AUDIO_CH_LR;
} }
return AUDIO_CH_DIFF; return AUDIO_CH_DIFF;
@ -375,20 +386,27 @@ u32 audio_output_channel_type(void)
#endif #endif
/*根据DAC输出的方式选择输出的声道*/ /*根据DAC输出的方式选择输出的声道*/
u8 dac_connect_mode = app_audio_output_mode_get(); u8 dac_connect_mode = app_audio_output_mode_get();
if (dac_connect_mode == DAC_OUTPUT_LR || dac_connect_mode == DAC_OUTPUT_DUAL_LR_DIFF) { if (dac_connect_mode == DAC_OUTPUT_LR || dac_connect_mode == DAC_OUTPUT_DUAL_LR_DIFF)
{
return AUDIO_CH_LR; return AUDIO_CH_LR;
} else if (dac_connect_mode == DAC_OUTPUT_MONO_L) { }
else if (dac_connect_mode == DAC_OUTPUT_MONO_L)
{
return AUDIO_CH_L; return AUDIO_CH_L;
} else if (dac_connect_mode == DAC_OUTPUT_MONO_R) { }
else if (dac_connect_mode == DAC_OUTPUT_MONO_R)
{
return AUDIO_CH_R; return AUDIO_CH_R;
} else { }
else
{
return AUDIO_CH_DIFF; return AUDIO_CH_DIFF;
} }
#elif (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_FM) #elif (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_FM)
return AUDIO_CH_LR; return AUDIO_CH_LR;
#else #else
return AUDIO_CH_LR; return AUDIO_CH_LR;
#endif #endif
} }
@ -402,14 +420,14 @@ u32 audio_output_channel_type(void)
int audio_output_set_start_volume(u8 state) int audio_output_set_start_volume(u8 state)
{ {
s16 vol_max = get_max_sys_vol(); s16 vol_max = get_max_sys_vol();
if (state == APP_AUDIO_STATE_CALL) { if (state == APP_AUDIO_STATE_CALL)
{
vol_max = app_var.aec_dac_gain; vol_max = app_var.aec_dac_gain;
} }
app_audio_state_switch(state, vol_max); app_audio_state_switch(state, vol_max);
return 0; return 0;
} }
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
/**@brief 开始音频输出 /**@brief 开始音频输出
@param sample_rate: @param sample_rate:
@ -421,11 +439,13 @@ int audio_output_set_start_volume(u8 state)
u8 audio_output_flag = 0; u8 audio_output_flag = 0;
int audio_output_start(u32 sample_rate, u8 reset_rate) int audio_output_start(u32 sample_rate, u8 reset_rate)
{ {
if (reset_rate) { if (reset_rate)
{
app_audio_output_samplerate_set(sample_rate); app_audio_output_samplerate_set(sample_rate);
} }
if (audio_output_flag) { if (audio_output_flag)
{
return 0; return 0;
} }
@ -461,14 +481,15 @@ void audio_output_stop(void)
*/ */
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
struct audio_src_handle *audio_hw_resample_open(void *priv, struct audio_src_handle *audio_hw_resample_open(void *priv,
int (*output_handler)(void *, void *, int), int (*output_handler)(void *, void *, int),
u8 channel, u8 channel,
u16 input_sample_rate, u16 input_sample_rate,
u16 output_sample_rate) u16 output_sample_rate)
{ {
struct audio_src_handle *hdl; struct audio_src_handle *hdl;
hdl = zalloc(sizeof(struct audio_src_handle)); hdl = zalloc(sizeof(struct audio_src_handle));
if (hdl) { if (hdl)
{
audio_hw_src_open(hdl, channel, SRC_TYPE_RESAMPLE); audio_hw_src_open(hdl, channel, SRC_TYPE_RESAMPLE);
audio_hw_src_set_rate(hdl, input_sample_rate, output_sample_rate); audio_hw_src_set_rate(hdl, input_sample_rate, output_sample_rate);
audio_src_set_output_handler(hdl, priv, output_handler); audio_src_set_output_handler(hdl, priv, output_handler);
@ -486,14 +507,14 @@ struct audio_src_handle *audio_hw_resample_open(void *priv,
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
void audio_hw_resample_close(struct audio_src_handle *hdl) void audio_hw_resample_close(struct audio_src_handle *hdl)
{ {
if (hdl) { if (hdl)
{
audio_hw_src_stop(hdl); audio_hw_src_stop(hdl);
audio_hw_src_close(hdl); audio_hw_src_close(hdl);
free(hdl); free(hdl);
} }
} }
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
/**@brief mixer事件处理 /**@brief mixer事件处理
@param *mixer: @param *mixer:
@ -504,14 +525,17 @@ void audio_hw_resample_close(struct audio_src_handle *hdl)
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
static void mixer_event_handler(struct audio_mixer *mixer, int event) static void mixer_event_handler(struct audio_mixer *mixer, int event)
{ {
switch (event) { switch (event)
{
case MIXER_EVENT_OPEN: case MIXER_EVENT_OPEN:
if (audio_mixer_get_ch_num(mixer) >= 1) { if (audio_mixer_get_ch_num(mixer) >= 1)
{
clock_add_set(DEC_MIX_CLK); clock_add_set(DEC_MIX_CLK);
} }
break; break;
case MIXER_EVENT_CLOSE: case MIXER_EVENT_CLOSE:
if (audio_mixer_get_ch_num(mixer) == 0) { if (audio_mixer_get_ch_num(mixer) == 0)
{
clock_remove_set(DEC_MIX_CLK); clock_remove_set(DEC_MIX_CLK);
} }
@ -527,7 +551,6 @@ static void mixer_event_handler(struct audio_mixer *mixer, int event)
#endif #endif
break; break;
} }
} }
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
/**@brief 检测mixer采样率支持 /**@brief 检测mixer采样率支持
@ -539,7 +562,8 @@ static void mixer_event_handler(struct audio_mixer *mixer, int event)
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
static u32 audio_mixer_check_sr(struct audio_mixer *mixer, u32 sr) static u32 audio_mixer_check_sr(struct audio_mixer *mixer, u32 sr)
{ {
return audio_output_rate(sr);; return audio_output_rate(sr);
;
} }
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
@ -553,7 +577,6 @@ static void audio_last_out_stream_resume(void *p)
{ {
} }
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
/**@brief 音频解码初始化 /**@brief 音频解码初始化
@param @param
@ -568,36 +591,38 @@ int audio_dec_init()
printf("audio_dec_init\n"); printf("audio_dec_init\n");
err = audio_decoder_task_create(&decode_task, "audio_dec"); err = audio_decoder_task_create(&decode_task, "audio_dec");
#if (TCFG_PREVENT_TASK_FILL) #if (TCFG_PREVENT_TASK_FILL)
prevent_fill = prevent_task_fill_create("prevent"); prevent_fill = prevent_task_fill_create("prevent");
if (prevent_fill) { if (prevent_fill)
{
decode_task.prevent_fill = prevent_task_fill_ch_open(prevent_fill, 20); decode_task.prevent_fill = prevent_task_fill_ch_open(prevent_fill, 20);
} }
#endif #endif
app_audio_output_init(); app_audio_output_init();
/*硬件SRC模块滤波器buffer设置可根据最大使用数量设置整体buffer*/ /*硬件SRC模块滤波器buffer设置可根据最大使用数量设置整体buffer*/
audio_src_base_filt_init(audio_src_hw_filt, sizeof(audio_src_hw_filt)); audio_src_base_filt_init(audio_src_hw_filt, sizeof(audio_src_hw_filt));
if (!AUDIO_DEC_MIXER_EN) { if (!AUDIO_DEC_MIXER_EN)
{
goto __mixer_init_end; goto __mixer_init_end;
} }
audio_mixer_open(&mixer); audio_mixer_open(&mixer);
audio_mixer_set_event_handler(&mixer, mixer_event_handler); audio_mixer_set_event_handler(&mixer, mixer_event_handler);
audio_mixer_set_check_sr_handler(&mixer, audio_mixer_check_sr); audio_mixer_set_check_sr_handler(&mixer, audio_mixer_check_sr);
if (config_mixer_en) { if (config_mixer_en)
{
/*初始化mix_buf的长度*/ /*初始化mix_buf的长度*/
audio_mixer_set_output_buf(&mixer, mix_buff, sizeof(mix_buff)); audio_mixer_set_output_buf(&mixer, mix_buff, sizeof(mix_buff));
} }
u8 ch_num = audio_output_channel_num(); u8 ch_num = audio_output_channel_num();
audio_mixer_set_channel_num(&mixer, ch_num); audio_mixer_set_channel_num(&mixer, ch_num);
u32 sr = audio_output_nor_rate(); u32 sr = audio_output_nor_rate();
if (sr) { if (sr)
{
// 固定采样率输出 // 固定采样率输出
audio_mixer_set_sample_rate(&mixer, MIXER_SR_SPEC, sr); audio_mixer_set_sample_rate(&mixer, MIXER_SR_SPEC, sr);
} }
@ -618,13 +643,15 @@ int audio_dec_init()
u8 entry_cnt = 0; u8 entry_cnt = 0;
entries[entry_cnt++] = &mixer.entry; entries[entry_cnt++] = &mixer.entry;
#if TCFG_EQ_ENABLE && TCFG_AUDIO_OUT_EQ_ENABLE #if TCFG_EQ_ENABLE && TCFG_AUDIO_OUT_EQ_ENABLE
if (mix_eq_drc) { if (mix_eq_drc)
{
entries[entry_cnt++] = &mix_eq_drc->entry; entries[entry_cnt++] = &mix_eq_drc->entry;
} }
#endif #endif
#if AUDIO_VOCAL_REMOVE_EN #if AUDIO_VOCAL_REMOVE_EN
if (mix_vocal_remove_hdl) { if (mix_vocal_remove_hdl)
{
entries[entry_cnt++] = &mix_vocal_remove_hdl->entry; entries[entry_cnt++] = &mix_vocal_remove_hdl->entry;
} }
#endif #endif
@ -646,7 +673,6 @@ int audio_dec_init()
entry_cnt++; entry_cnt++;
#endif #endif
#if (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_IIS) #if (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_IIS)
audio_dig_vol_param iis_digvol_last_param = { audio_dig_vol_param iis_digvol_last_param = {
.vol_start = app_var.music_volume, .vol_start = app_var.music_volume,
@ -666,12 +692,12 @@ int audio_dec_init()
entries[entry_cnt++] = iis_entries_start; entries[entry_cnt++] = iis_entries_start;
entries[entry_cnt++] = iis_digvol_last_entry; entries[entry_cnt++] = iis_digvol_last_entry;
entries[entry_cnt++] = iis_last_entry; entries[entry_cnt++] = iis_last_entry;
for (int i = 0; i < entry_cnt - 1; i++) { for (int i = 0; i < entry_cnt - 1; i++)
{
audio_stream_add_entry(entries[i], entries[i + 1]); audio_stream_add_entry(entries[i], entries[i + 1]);
} }
#endif #endif
#if (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_DONGLE) #if (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_DONGLE)
/* #if 1 */ /* #if 1 */
{ {
@ -694,7 +720,8 @@ int audio_dec_init()
entries[entry_cnt++] = dongle_entries_start; entries[entry_cnt++] = dongle_entries_start;
entries[entry_cnt++] = dongle_digvol_last_entry; entries[entry_cnt++] = dongle_digvol_last_entry;
entries[entry_cnt++] = &dongle_emitter.mix_ch.entry; entries[entry_cnt++] = &dongle_emitter.mix_ch.entry;
for (int i = 0; i < entry_cnt - 1; i++) { for (int i = 0; i < entry_cnt - 1; i++)
{
audio_stream_add_entry(entries[i], entries[i + 1]); audio_stream_add_entry(entries[i], entries[i + 1]);
} }
#endif #endif
@ -721,7 +748,7 @@ __mixer_init_end:
#if (RECORDER_MIX_EN) #if (RECORDER_MIX_EN)
recorder_mix_init(&recorder_mixer, recorder_mix_buff, sizeof(recorder_mix_buff)); recorder_mix_init(&recorder_mixer, recorder_mix_buff, sizeof(recorder_mix_buff));
#endif//RECORDER_MIX_EN #endif // RECORDER_MIX_EN
app_audio_volume_init(); app_audio_volume_init();
audio_output_set_start_volume(APP_AUDIO_STATE_MUSIC); audio_output_set_start_volume(APP_AUDIO_STATE_MUSIC);
@ -738,14 +765,9 @@ __mixer_init_end:
audio_dec_inited = 1; audio_dec_inited = 1;
return err; return err;
} }
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
/**@brief 音频解码初始化判断 /**@brief 音频解码初始化判断
@param @param
@ -756,7 +778,8 @@ __mixer_init_end:
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
static u8 audio_dec_init_complete() static u8 audio_dec_init_complete()
{ {
if (!audio_dec_inited) { if (!audio_dec_inited)
{
return 0; return 0;
} }
@ -767,7 +790,6 @@ REGISTER_LP_TARGET(audio_dec_init_lp_target) = {
.is_idle = audio_dec_init_complete, .is_idle = audio_dec_init_complete,
}; };
struct drc_ch high_bass_drc = {0}; struct drc_ch high_bass_drc = {0};
static int high_bass_th = 0; static int high_bass_th = 0;
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
@ -781,15 +803,18 @@ static int high_bass_th = 0;
int high_bass_drc_set_filter_info(int th) int high_bass_drc_set_filter_info(int th)
{ {
/* int th = 0; // -60 ~ 0 db */ /* int th = 0; // -60 ~ 0 db */
if (th < -60) { if (th < -60)
{
th = -60; th = -60;
} }
if (th > 0) { if (th > 0)
{
th = 0; th = 0;
} }
local_irq_disable(); local_irq_disable();
high_bass_th = th; high_bass_th = th;
if (mix_eq_drc && mix_eq_drc->drc) { if (mix_eq_drc && mix_eq_drc->drc)
{
mix_eq_drc->drc->updata = 1; mix_eq_drc->drc->updata = 1;
} }
local_irq_enable(); local_irq_enable();
@ -806,7 +831,7 @@ int high_bass_drc_set_filter_info(int th)
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
int high_bass_drc_get_filter_info(struct audio_drc *drc, struct audio_drc_filter_info *info) int high_bass_drc_get_filter_info(struct audio_drc *drc, struct audio_drc_filter_info *info)
{ {
int th = high_bass_th;//-60 ~0db int th = high_bass_th; //-60 ~0db
int threshold = round(pow(10.0, th / 20.0) * 32768); // 0db:32768, -60db:33 int threshold = round(pow(10.0, th / 20.0) * 32768); // 0db:32768, -60db:33
high_bass_drc.nband = 1; high_bass_drc.nband = 1;
@ -846,7 +871,8 @@ void *mix_out_eq_drc_open(u16 sample_rate, u8 ch_num)
#endif #endif
log_i("=====sr %d, ch_num %d\n", sample_rate, ch_num); log_i("=====sr %d, ch_num %d\n", sample_rate, ch_num);
if (effect_parm.eq_en) { if (effect_parm.eq_en)
{
effect_parm.async_en = 1; effect_parm.async_en = 1;
effect_parm.out_32bit = 1; effect_parm.out_32bit = 1;
effect_parm.online_en = 0; effect_parm.online_en = 0;
@ -864,7 +890,8 @@ void *mix_out_eq_drc_open(u16 sample_rate, u8 ch_num)
eq_drc = audio_eq_drc_open(&effect_parm); eq_drc = audio_eq_drc_open(&effect_parm);
clock_add(EQ_CLK); clock_add(EQ_CLK);
if (effect_parm.drc_en) { if (effect_parm.drc_en)
{
clock_add(EQ_DRC_CLK); clock_add(EQ_DRC_CLK);
} }
#endif #endif
@ -884,7 +911,8 @@ void mix_out_eq_drc_close(struct audio_eq_drc *eq_drc)
{ {
#if TCFG_EQ_ENABLE #if TCFG_EQ_ENABLE
#if TCFG_AUDIO_OUT_EQ_ENABLE #if TCFG_AUDIO_OUT_EQ_ENABLE
if (eq_drc) { if (eq_drc)
{
audio_eq_drc_close(eq_drc); audio_eq_drc_close(eq_drc);
eq_drc = NULL; eq_drc = NULL;
clock_remove(EQ_CLK); clock_remove(EQ_CLK);
@ -911,7 +939,8 @@ void mix_out_eq_drc_close(struct audio_eq_drc *eq_drc)
void mix_out_high_bass(u32 cmd, struct high_bass *hb) void mix_out_high_bass(u32 cmd, struct high_bass *hb)
{ {
if (mix_eq_drc) { if (mix_eq_drc)
{
audio_eq_drc_parm_update(mix_eq_drc, cmd, (void *)hb); audio_eq_drc_parm_update(mix_eq_drc, cmd, (void *)hb);
} }
} }
@ -925,16 +954,26 @@ void mix_out_high_bass(u32 cmd, struct high_bass *hb)
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
void mix_out_high_bass_dis(u32 cmd, u8 dis) void mix_out_high_bass_dis(u32 cmd, u8 dis)
{ {
if (mix_eq_drc) { if (mix_eq_drc)
{
audio_eq_drc_parm_update(mix_eq_drc, cmd, (void *)dis); audio_eq_drc_parm_update(mix_eq_drc, cmd, (void *)dis);
} }
} }
#if AUDIO_OUTPUT_AUTOMUTE #if AUDIO_OUTPUT_AUTOMUTE
#include "kt.h"
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)
{
PA_MUTE();
}
else
{
PA_UNMUTE();
}
} }
/* #define AUDIO_E_DET_UNMUTE (0x00) */ /* #define AUDIO_E_DET_UNMUTE (0x00) */
@ -942,7 +981,8 @@ void audio_mix_out_automute_mute(u8 mute)
void mix_out_automute_handler(u8 event, u8 ch) void mix_out_automute_handler(u8 event, u8 ch)
{ {
printf(">>>> ch:%d %s\n", ch, event ? ("MUTE") : ("UNMUTE")); printf(">>>> ch:%d %s\n", ch, event ? ("MUTE") : ("UNMUTE"));
if (ch == app_audio_output_channel_get()) { if (ch == app_audio_output_channel_get())
{
audio_mix_out_automute_mute(event); audio_mix_out_automute_mute(event);
} }
} }
@ -950,7 +990,8 @@ void mix_out_automute_handler(u8 event, u8 ch)
void mix_out_automute_skip(u8 skip) void mix_out_automute_skip(u8 skip)
{ {
u8 mute = !skip; u8 mute = !skip;
if (mix_out_automute_hdl) { if (mix_out_automute_hdl)
{
audio_energy_detect_skip(mix_out_automute_hdl, 0xFFFF, skip); audio_energy_detect_skip(mix_out_automute_hdl, 0xFFFF, skip);
audio_mix_out_automute_mute(mute); audio_mix_out_automute_mute(mute);
} }
@ -958,7 +999,8 @@ void mix_out_automute_skip(u8 skip)
void mix_out_automute_open() void mix_out_automute_open()
{ {
if (mix_out_automute_hdl) { if (mix_out_automute_hdl)
{
printf("mix_out_automute is already open !\n"); printf("mix_out_automute is already open !\n");
return; return;
} }
@ -978,11 +1020,12 @@ void mix_out_automute_open()
void mix_out_automute_close() void mix_out_automute_close()
{ {
if (mix_out_automute_hdl) { if (mix_out_automute_hdl)
{
audio_energy_detect_close(mix_out_automute_hdl); audio_energy_detect_close(mix_out_automute_hdl);
} }
} }
#endif //#if AUDIO_OUTPUT_AUTOMUTE #endif // #if AUDIO_OUTPUT_AUTOMUTE
#if AUDIO_VOCAL_REMOVE_EN #if AUDIO_VOCAL_REMOVE_EN
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
@ -1009,11 +1052,11 @@ void *vocal_remove_open(u8 ch_num)
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
void vocal_remove_close() void vocal_remove_close()
{ {
if (mix_vocal_remove_hdl) { if (mix_vocal_remove_hdl)
{
audio_vocal_remove_close(mix_vocal_remove_hdl); audio_vocal_remove_close(mix_vocal_remove_hdl);
mix_vocal_remove_hdl = NULL; mix_vocal_remove_hdl = NULL;
} }
} }
#endif #endif

View File

@ -4,12 +4,6 @@ fat_sdfile_fat_ops
sdfile_vfs_ops sdfile_vfs_ops
nor_fs_vfs_ops
nor_sdfile_vfs_ops
nor_rec_fs_vfs_ops
pcm_decoder pcm_decoder

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -156,6 +156,17 @@ objs/apps/common/config/bt_profile_config.c.o
-r=objs/apps/common/config/bt_profile_config.c.o,a2dp_mutual_support,pl -r=objs/apps/common/config/bt_profile_config.c.o,a2dp_mutual_support,pl
objs/apps/common/config/ci_transport_uart.c.o objs/apps/common/config/ci_transport_uart.c.o
objs/apps/common/debug/debug.c.o objs/apps/common/debug/debug.c.o
-r=objs/apps/common/debug/debug.c.o,putchar,pl
-r=objs/apps/common/debug/debug.c.o,puts,pl
-r=objs/apps/common/debug/debug.c.o,printf,pl
-r=objs/apps/common/debug/debug.c.o,put_buf,pl
-r=objs/apps/common/debug/debug.c.o,put_u8hex,pl
-r=objs/apps/common/debug/debug.c.o,put_u16hex,pl
-r=objs/apps/common/debug/debug.c.o,put_u32hex,pl
-r=objs/apps/common/debug/debug.c.o,log_print,pl
-r=objs/apps/common/debug/debug.c.o,log_putbyte,pl
-r=objs/apps/common/debug/debug.c.o,assert_printf,pl
-r=objs/apps/common/debug/debug.c.o,cpu_assert_debug,l
objs/apps/common/debug/debug_lite.c.o objs/apps/common/debug/debug_lite.c.o
-r=objs/apps/common/debug/debug_lite.c.o,puts_lite,pl -r=objs/apps/common/debug/debug_lite.c.o,puts_lite,pl
-r=objs/apps/common/debug/debug_lite.c.o,put_buf_lite,pl -r=objs/apps/common/debug/debug_lite.c.o,put_buf_lite,pl
@ -230,7 +241,16 @@ objs/apps/common/dev_manager/dev_update.c.o
-r=objs/apps/common/dev_manager/dev_update.c.o,dev_update_check,pl -r=objs/apps/common/dev_manager/dev_update.c.o,dev_update_check,pl
-r=objs/apps/common/dev_manager/dev_update.c.o,update_success_boot_check,l -r=objs/apps/common/dev_manager/dev_update.c.o,update_success_boot_check,l
-r=objs/apps/common/dev_manager/dev_update.c.o,dev_manager_find_spec,l -r=objs/apps/common/dev_manager/dev_update.c.o,dev_manager_find_spec,l
-r=objs/apps/common/dev_manager/dev_update.c.o,strcmp,l
-r=objs/apps/common/dev_manager/dev_update.c.o,printf,l
-r=objs/apps/common/dev_manager/dev_update.c.o,sprintf,l
-r=objs/apps/common/dev_manager/dev_update.c.o,dev_manager_get_root_path,l
-r=objs/apps/common/dev_manager/dev_update.c.o,fopen,l
-r=objs/apps/common/dev_manager/dev_update.c.o,storage_update_loader_download_init_with_file_hdl,l
-r=objs/apps/common/dev_manager/dev_update.c.o,update_mode_api,l
-r=objs/apps/common/dev_manager/dev_update.c.o,chip_reset,
-r=objs/apps/common/dev_manager/dev_update.c.o,puts,l -r=objs/apps/common/dev_manager/dev_update.c.o,puts,l
-r=objs/apps/common/dev_manager/dev_update.c.o,updata_file_name,l
objs/apps/common/device/detection.c.o objs/apps/common/device/detection.c.o
-r=objs/apps/common/device/detection.c.o,vdet_check,pl -r=objs/apps/common/device/detection.c.o,vdet_check,pl
-r=objs/apps/common/device/detection.c.o,adc_get_value,l -r=objs/apps/common/device/detection.c.o,adc_get_value,l
@ -262,47 +282,6 @@ objs/apps/common/device/gSensor/SC7A20.c.o
objs/apps/common/device/gSensor/da230.c.o objs/apps/common/device/gSensor/da230.c.o
objs/apps/common/device/gSensor/gSensor_manage.c.o objs/apps/common/device/gSensor/gSensor_manage.c.o
objs/apps/common/device/norflash/norflash.c.o objs/apps/common/device/norflash/norflash.c.o
-r=objs/apps/common/device/norflash/norflash.c.o,_norflash_init,pl
-r=objs/apps/common/device/norflash/norflash.c.o,log_print,l
-r=objs/apps/common/device/norflash/norflash.c.o,os_mutex_create,
-r=objs/apps/common/device/norflash/norflash.c.o,printf,l
-r=objs/apps/common/device/norflash/norflash.c.o,cpu_assert_debug,l
-r=objs/apps/common/device/norflash/norflash.c.o,chip_reset,
-r=objs/apps/common/device/norflash/norflash.c.o,norflash_enter_4byte_addr,pl
-r=objs/apps/common/device/norflash/norflash.c.o,gpio_write,l
-r=objs/apps/common/device/norflash/norflash.c.o,spi_send_byte,l
-r=objs/apps/common/device/norflash/norflash.c.o,norflash_exit_4byte_addr,pl
-r=objs/apps/common/device/norflash/norflash.c.o,_norflash_open,pl
-r=objs/apps/common/device/norflash/norflash.c.o,os_mutex_pend,l
-r=objs/apps/common/device/norflash/norflash.c.o,gpio_set_die,l
-r=objs/apps/common/device/norflash/norflash.c.o,gpio_set_direction,l
-r=objs/apps/common/device/norflash/norflash.c.o,spi_open,l
-r=objs/apps/common/device/norflash/norflash.c.o,malloc,l
-r=objs/apps/common/device/norflash/norflash.c.o,_norflash_read,pl
-r=objs/apps/common/device/norflash/norflash.c.o,sys_timer_add,l
-r=objs/apps/common/device/norflash/norflash.c.o,os_mutex_post,l
-r=objs/apps/common/device/norflash/norflash.c.o,_norflash_close,pl
-r=objs/apps/common/device/norflash/norflash.c.o,sys_timer_del,l
-r=objs/apps/common/device/norflash/norflash.c.o,_norflash_eraser,pl
-r=objs/apps/common/device/norflash/norflash.c.o,free,l
-r=objs/apps/common/device/norflash/norflash.c.o,spi_close,l
-r=objs/apps/common/device/norflash/norflash.c.o,gpio_set_pull_up,l
-r=objs/apps/common/device/norflash/norflash.c.o,gpio_set_pull_down,l
-r=objs/apps/common/device/norflash/norflash.c.o,spi_set_bit_mode,l
-r=objs/apps/common/device/norflash/norflash.c.o,spi_dma_recv,l
-r=objs/apps/common/device/norflash/norflash.c.o,_norflash_write,pl
-r=objs/apps/common/device/norflash/norflash.c.o,_norflash_ioctl,pl
-r=objs/apps/common/device/norflash/norflash.c.o,strcmp,l
-r=objs/apps/common/device/norflash/norflash.c.o,spi_set_baud,l
-r=objs/apps/common/device/norflash/norflash.c.o,spi_get_baud,l
-r=objs/apps/common/device/norflash/norflash.c.o,spi_recv_byte,l
-r=objs/apps/common/device/norflash/norflash.c.o,spi_dma_send,l
-r=objs/apps/common/device/norflash/norflash.c.o,delay,l
-r=objs/apps/common/device/norflash/norflash.c.o,puts,l
-r=objs/apps/common/device/norflash/norflash.c.o,config_asser,l
-r=objs/apps/common/device/norflash/norflash.c.o,clock_spi_norflash,pl
-r=objs/apps/common/device/norflash/norflash.c.o,norflash_dev_ops,pl
-r=objs/apps/common/device/norflash/norflash.c.o,norfs_dev_ops,pl
objs/apps/common/fat_nor/nor_fs.c.o objs/apps/common/fat_nor/nor_fs.c.o
-r=objs/apps/common/fat_nor/nor_fs.c.o,norfs_mutex_init,pl -r=objs/apps/common/fat_nor/nor_fs.c.o,norfs_mutex_init,pl
-r=objs/apps/common/fat_nor/nor_fs.c.o,os_mutex_create, -r=objs/apps/common/fat_nor/nor_fs.c.o,os_mutex_create,
@ -357,7 +336,7 @@ objs/apps/common/fat_nor/nor_fs.c.o
-r=objs/apps/common/fat_nor/nor_fs.c.o,max_rec_capacity,pl -r=objs/apps/common/fat_nor/nor_fs.c.o,max_rec_capacity,pl
-r=objs/apps/common/fat_nor/nor_fs.c.o,recfs,pl -r=objs/apps/common/fat_nor/nor_fs.c.o,recfs,pl
-r=objs/apps/common/fat_nor/nor_fs.c.o,recfile,pl -r=objs/apps/common/fat_nor/nor_fs.c.o,recfile,pl
-r=objs/apps/common/fat_nor/nor_fs.c.o,nor_fs_vfs_ops,plx -r=objs/apps/common/fat_nor/nor_fs.c.o,nor_fs_vfs_ops,pl
objs/apps/common/fat_nor/phone_rec_fs.c.o objs/apps/common/fat_nor/phone_rec_fs.c.o
-r=objs/apps/common/fat_nor/phone_rec_fs.c.o,phonefs_mutex_init,pl -r=objs/apps/common/fat_nor/phone_rec_fs.c.o,phonefs_mutex_init,pl
-r=objs/apps/common/fat_nor/phone_rec_fs.c.o,os_mutex_create, -r=objs/apps/common/fat_nor/phone_rec_fs.c.o,os_mutex_create,
@ -548,6 +527,8 @@ objs/apps/common/music/music_player.c.o
-r=objs/apps/common/music/music_player.c.o,dev_manager_get_total,l -r=objs/apps/common/music/music_player.c.o,dev_manager_get_total,l
-r=objs/apps/common/music/music_player.c.o,music_player_get_dev_flit,pl -r=objs/apps/common/music/music_player.c.o,music_player_get_dev_flit,pl
-r=objs/apps/common/music/music_player.c.o,music_player_play_first_file,pl -r=objs/apps/common/music/music_player.c.o,music_player_play_first_file,pl
-r=objs/apps/common/music/music_player.c.o,kt_get_cycle,l
-r=objs/apps/common/music/music_player.c.o,music_player_play_auto_next,pl
-r=objs/apps/common/music/music_player.c.o,music_player_decode_start,pl -r=objs/apps/common/music/music_player.c.o,music_player_decode_start,pl
-r=objs/apps/common/music/music_player.c.o,fget_name,l -r=objs/apps/common/music/music_player.c.o,fget_name,l
-r=objs/apps/common/music/music_player.c.o,music_player_get_file_hdl,pl -r=objs/apps/common/music/music_player.c.o,music_player_get_file_hdl,pl
@ -611,7 +592,6 @@ objs/apps/common/music/music_player.c.o
-r=objs/apps/common/music/music_player.c.o,music_player_play_next_cycle_single_dev,pl -r=objs/apps/common/music/music_player.c.o,music_player_play_next_cycle_single_dev,pl
-r=objs/apps/common/music/music_player.c.o,music_player_play_next,pl -r=objs/apps/common/music/music_player.c.o,music_player_play_next,pl
-r=objs/apps/common/music/music_player.c.o,dev_manager_scan_disk,l -r=objs/apps/common/music/music_player.c.o,dev_manager_scan_disk,l
-r=objs/apps/common/music/music_player.c.o,music_player_play_auto_next,pl
-r=objs/apps/common/music/music_player.c.o,music_player_play_folder_prev,pl -r=objs/apps/common/music/music_player.c.o,music_player_play_folder_prev,pl
-r=objs/apps/common/music/music_player.c.o,music_player_play_folder_next,pl -r=objs/apps/common/music/music_player.c.o,music_player_play_folder_next,pl
-r=objs/apps/common/music/music_player.c.o,music_player_play_devcie_prev,pl -r=objs/apps/common/music/music_player.c.o,music_player_play_devcie_prev,pl
@ -651,7 +631,7 @@ objs/apps/common/rec_nor/nor_interface.c.o
-r=objs/apps/common/rec_nor/nor_interface.c.o,recfile_write,l -r=objs/apps/common/rec_nor/nor_interface.c.o,recfile_write,l
-r=objs/apps/common/rec_nor/nor_interface.c.o,recfile_seek,l -r=objs/apps/common/rec_nor/nor_interface.c.o,recfile_seek,l
-r=objs/apps/common/rec_nor/nor_interface.c.o,close_nor_recfile,l -r=objs/apps/common/rec_nor/nor_interface.c.o,close_nor_recfile,l
-r=objs/apps/common/rec_nor/nor_interface.c.o,nor_rec_fs_vfs_ops,plx -r=objs/apps/common/rec_nor/nor_interface.c.o,nor_rec_fs_vfs_ops,pl
objs/apps/common/rec_nor/nor_rec_fs.c.o objs/apps/common/rec_nor/nor_rec_fs.c.o
-r=objs/apps/common/rec_nor/nor_rec_fs.c.o,recfs_mutex_init,pl -r=objs/apps/common/rec_nor/nor_rec_fs.c.o,recfs_mutex_init,pl
-r=objs/apps/common/rec_nor/nor_rec_fs.c.o,os_mutex_create, -r=objs/apps/common/rec_nor/nor_rec_fs.c.o,os_mutex_create,
@ -1231,14 +1211,17 @@ objs/apps/kaotings/kt.c.o
-r=objs/apps/kaotings/kt.c.o,gpio_set_hd,l -r=objs/apps/kaotings/kt.c.o,gpio_set_hd,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,timer_cb,pl -r=objs/apps/kaotings/kt.c.o,timer_cb,pl
-r=objs/apps/kaotings/kt.c.o,app_get_curr_task,l
-r=objs/apps/kaotings/kt.c.o,music_player_get_play_status,l
-r=objs/apps/kaotings/kt.c.o,start_timer,pl -r=objs/apps/kaotings/kt.c.o,start_timer,pl
-r=objs/apps/kaotings/kt.c.o,sys_timer_del,l -r=objs/apps/kaotings/kt.c.o,sys_timer_del,l
-r=objs/apps/kaotings/kt.c.o,sys_timer_add,l -r=objs/apps/kaotings/kt.c.o,sys_timer_add,l
-r=objs/apps/kaotings/kt.c.o,kt_get_cycle,pl
-r=objs/apps/kaotings/kt.c.o,kt_change_cycle,pl
-r=objs/apps/kaotings/kt.c.o,kt_set_last_play,pl
-r=objs/apps/kaotings/kt.c.o,printf,l
-r=objs/apps/kaotings/kt.c.o,strcpy,l
-r=objs/apps/kaotings/kt.c.o,kt_get_last_play,pl
-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_uart_init,l -r=objs/apps/kaotings/kt.c.o,kt_uart_init,l
-r=objs/apps/kaotings/kt.c.o,tid,pl
objs/apps/kaotings/kt_uart.c.o objs/apps/kaotings/kt_uart.c.o
-r=objs/apps/kaotings/kt_uart.c.o,kt_uart_init,pl -r=objs/apps/kaotings/kt_uart.c.o,kt_uart_init,pl
-r=objs/apps/kaotings/kt_uart.c.o,uart_dev_open,l -r=objs/apps/kaotings/kt_uart.c.o,uart_dev_open,l
@ -1248,7 +1231,13 @@ objs/apps/kaotings/kt_uart.c.o
-r=objs/apps/kaotings/kt_uart.c.o,music_player_get_play_status,l -r=objs/apps/kaotings/kt_uart.c.o,music_player_get_play_status,l
-r=objs/apps/kaotings/kt_uart.c.o,app_task_put_key_msg,l -r=objs/apps/kaotings/kt_uart.c.o,app_task_put_key_msg,l
-r=objs/apps/kaotings/kt_uart.c.o,app_audio_set_volume,l -r=objs/apps/kaotings/kt_uart.c.o,app_audio_set_volume,l
-r=objs/apps/kaotings/kt_uart.c.o,app_audio_mute,l
-r=objs/apps/kaotings/kt_uart.c.o,strlen,l -r=objs/apps/kaotings/kt_uart.c.o,strlen,l
-r=objs/apps/kaotings/kt_uart.c.o,music_player_get_file_total,l
-r=objs/apps/kaotings/kt_uart.c.o,music_player_get_dir_total,l
-r=objs/apps/kaotings/kt_uart.c.o,music_player_get_fileindir_number,l
-r=objs/apps/kaotings/kt_uart.c.o,music_player_get_dec_total_time,l
-r=objs/apps/kaotings/kt_uart.c.o,music_player_get_dec_cur_time,l
-r=objs/apps/kaotings/kt_uart.c.o,puts,l -r=objs/apps/kaotings/kt_uart.c.o,puts,l
-r=objs/apps/kaotings/kt_uart.c.o,kt_sys_mute,pl -r=objs/apps/kaotings/kt_uart.c.o,kt_sys_mute,pl
-r=objs/apps/kaotings/kt_uart.c.o,uart_bus,pl -r=objs/apps/kaotings/kt_uart.c.o,uart_bus,pl
@ -1354,6 +1343,7 @@ objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,gpio_set_die,l -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,gpio_set_die,l
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,gpio_set_dieh,l -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,gpio_set_dieh,l
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,P33_CON_SET, -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,P33_CON_SET,
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,sdpg_config,l
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,sleep_exit_callback,pl -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,sleep_exit_callback,pl
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,sleep_enter_callback,pl -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,sleep_enter_callback,pl
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,dac_sniff_power_off,l -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,dac_sniff_power_off,l
@ -1361,6 +1351,8 @@ objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,power_init,l -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,power_init,l
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,power_set_callback,l -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,power_set_callback,l
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,power_keep_dacvdd_en,l -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,power_keep_dacvdd_en,l
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,sdmmc_0_clk_detect,l
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,sdmmc_0_port_init,l
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,key_driver_init,l -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,key_driver_init,l
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,power_wakeup_init,l -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,power_wakeup_init,l
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,status_config,pl -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,status_config,pl
@ -1371,10 +1363,8 @@ objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,otg_data,pl -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,otg_data,pl
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,led7_data,pl -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,led7_data,pl
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,ui_cfg_data,pl -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,ui_cfg_data,pl
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,spi1_p_data,pl -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,sd_dev_ops,l
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,norflash_fat_dev_data,pl
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,usb_dev_ops,l -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,usb_dev_ops,l
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,norflash_dev_ops,l
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,device_table,pl -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,device_table,pl
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,power_param,pl -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,power_param,pl
-r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,port0,pl -r=objs/apps/soundbox/board/br25/board_ac6082_demo/board_ac6082_demo.c.o,port0,pl
@ -1438,6 +1428,7 @@ objs/apps/soundbox/common/init.c.o
-r=objs/apps/soundbox/common/init.c.o,gpio_set_pull_up,l -r=objs/apps/soundbox/common/init.c.o,gpio_set_pull_up,l
-r=objs/apps/soundbox/common/init.c.o,gpio_set_die,l -r=objs/apps/soundbox/common/init.c.o,gpio_set_die,l
-r=objs/apps/soundbox/common/init.c.o,gpio_set_direction,l -r=objs/apps/soundbox/common/init.c.o,gpio_set_direction,l
-r=objs/apps/soundbox/common/init.c.o,gpio_set_output_value,l
-r=objs/apps/soundbox/common/init.c.o,audio_enc_init,l -r=objs/apps/soundbox/common/init.c.o,audio_enc_init,l
-r=objs/apps/soundbox/common/init.c.o,audio_dec_init,l -r=objs/apps/soundbox/common/init.c.o,audio_dec_init,l
-r=objs/apps/soundbox/common/init.c.o,update_result_deal,l -r=objs/apps/soundbox/common/init.c.o,update_result_deal,l
@ -2323,6 +2314,7 @@ objs/apps/soundbox/task_manager/idle/idle.c.o
-r=objs/apps/soundbox/task_manager/idle/idle.c.o,app_default_event_deal,l -r=objs/apps/soundbox/task_manager/idle/idle.c.o,app_default_event_deal,l
-r=objs/apps/soundbox/task_manager/idle/idle.c.o,app_task_exitting,l -r=objs/apps/soundbox/task_manager/idle/idle.c.o,app_task_exitting,l
-r=objs/apps/soundbox/task_manager/idle/idle.c.o,sys_key_event_enable,l -r=objs/apps/soundbox/task_manager/idle/idle.c.o,sys_key_event_enable,l
-r=objs/apps/soundbox/task_manager/idle/idle.c.o,sdx_dev_detect_timer_del,l
-r=objs/apps/soundbox/task_manager/idle/idle.c.o,usb_detect_timer_del,l -r=objs/apps/soundbox/task_manager/idle/idle.c.o,usb_detect_timer_del,l
-r=objs/apps/soundbox/task_manager/idle/idle.c.o,os_time_dly, -r=objs/apps/soundbox/task_manager/idle/idle.c.o,os_time_dly,
-r=objs/apps/soundbox/task_manager/idle/idle.c.o,usb_otg_online,l -r=objs/apps/soundbox/task_manager/idle/idle.c.o,usb_otg_online,l
@ -2333,6 +2325,7 @@ objs/apps/soundbox/task_manager/idle/idle.c.o
-r=objs/apps/soundbox/task_manager/idle/idle.c.o,gpio_set_pull_down,l -r=objs/apps/soundbox/task_manager/idle/idle.c.o,gpio_set_pull_down,l
-r=objs/apps/soundbox/task_manager/idle/idle.c.o,gpio_set_direction,l -r=objs/apps/soundbox/task_manager/idle/idle.c.o,gpio_set_direction,l
-r=objs/apps/soundbox/task_manager/idle/idle.c.o,log_print,l -r=objs/apps/soundbox/task_manager/idle/idle.c.o,log_print,l
-r=objs/apps/soundbox/task_manager/idle/idle.c.o,sdx_dev_detect_timer_add,l
-r=objs/apps/soundbox/task_manager/idle/idle.c.o,usb_detect_timer_add,l -r=objs/apps/soundbox/task_manager/idle/idle.c.o,usb_detect_timer_add,l
-r=objs/apps/soundbox/task_manager/idle/idle.c.o,regs_buf,pl -r=objs/apps/soundbox/task_manager/idle/idle.c.o,regs_buf,pl
-r=objs/apps/soundbox/task_manager/idle/idle.c.o,log_tag_const_i_APP_IDLE,l -r=objs/apps/soundbox/task_manager/idle/idle.c.o,log_tag_const_i_APP_IDLE,l
@ -2358,7 +2351,7 @@ objs/apps/soundbox/task_manager/music/music.c.o
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_task_set_parm,pl -r=objs/apps/soundbox/task_manager/music/music.c.o,music_task_set_parm,pl
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_app_check,pl -r=objs/apps/soundbox/task_manager/music/music.c.o,music_app_check,pl
-r=objs/apps/soundbox/task_manager/music/music.c.o,app_music_task,pl -r=objs/apps/soundbox/task_manager/music/music.c.o,app_music_task,pl
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_set_repeat_mode,l -r=objs/apps/soundbox/task_manager/music/music.c.o,kt_change_cycle,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,app_task_get_msg,l -r=objs/apps/soundbox/task_manager/music/music.c.o,app_task_get_msg,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,app_default_event_deal,l -r=objs/apps/soundbox/task_manager/music/music.c.o,app_default_event_deal,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,app_task_exitting,l -r=objs/apps/soundbox/task_manager/music/music.c.o,app_task_exitting,l
@ -2391,14 +2384,16 @@ objs/apps/soundbox/task_manager/music/music.c.o
-r=objs/apps/soundbox/task_manager/music/music.c.o,dev_manager_find_active,l -r=objs/apps/soundbox/task_manager/music/music.c.o,dev_manager_find_active,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_get_play_status,l -r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_get_play_status,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,strcmp,l -r=objs/apps/soundbox/task_manager/music/music.c.o,strcmp,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,breakpoint_vm_read,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_play_by_breakpoint,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_play_first_file,l -r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_play_first_file,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_play_by_number,l -r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_play_by_number,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,kt_get_cycle,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,kt_set_last_play,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,strcat,l -r=objs/apps/soundbox/task_manager/music/music.c.o,strcat,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_play_by_path,l -r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_play_by_path,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_set_repeat_mode,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,app_task_switch_next,l -r=objs/apps/soundbox/task_manager/music/music.c.o,app_task_switch_next,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_end_deal,l -r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_end_deal,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,kt_get_last_play,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_pp,l -r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_pp,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_play_auto_next,l -r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_play_auto_next,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_play_prev,l -r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_play_prev,l
@ -2406,6 +2401,8 @@ objs/apps/soundbox/task_manager/music/music.c.o
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_play_folder_prev,l -r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_play_folder_prev,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_play_folder_next,l -r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_play_folder_next,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_get_dev_next,l -r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_get_dev_next,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,breakpoint_vm_read,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_play_by_breakpoint,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_play_by_sclust,l -r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_play_by_sclust,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_ff,l -r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_ff,l
-r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_fr,l -r=objs/apps/soundbox/task_manager/music/music.c.o,music_player_fr,l
@ -2452,6 +2449,7 @@ objs/apps/soundbox/task_manager/power_off/power_off.c.o
-r=objs/apps/soundbox/task_manager/power_off/power_off.c.o,app_poweroff_task,pl -r=objs/apps/soundbox/task_manager/power_off/power_off.c.o,app_poweroff_task,pl
-r=objs/apps/soundbox/task_manager/power_off/power_off.c.o,app_task_get_msg,l -r=objs/apps/soundbox/task_manager/power_off/power_off.c.o,app_task_get_msg,l
-r=objs/apps/soundbox/task_manager/power_off/power_off.c.o,poweroff_entry_cbfun,pl -r=objs/apps/soundbox/task_manager/power_off/power_off.c.o,poweroff_entry_cbfun,pl
-r=objs/apps/soundbox/task_manager/power_off/power_off.c.o,sdx_dev_entry_lowpower,l
-r=objs/apps/soundbox/task_manager/power_off/power_off.c.o,get_ui_busy_status,l -r=objs/apps/soundbox/task_manager/power_off/power_off.c.o,get_ui_busy_status,l
-r=objs/apps/soundbox/task_manager/power_off/power_off.c.o,power_set_soft_poweroff,l -r=objs/apps/soundbox/task_manager/power_off/power_off.c.o,power_set_soft_poweroff,l
-r=objs/apps/soundbox/task_manager/power_off/power_off.c.o,syscfg_write,l -r=objs/apps/soundbox/task_manager/power_off/power_off.c.o,syscfg_write,l
@ -2769,6 +2767,7 @@ objs/cpu/br25/audio_common/audio_iis.c.o
objs/cpu/br25/audio_common/audio_link.c.o objs/cpu/br25/audio_common/audio_link.c.o
objs/cpu/br25/audio_dec/audio_dec.c.o objs/cpu/br25/audio_dec/audio_dec.c.o
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_dac_energy_get,pl -r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_dac_energy_get,pl
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_energy_detect_energy_get,l
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_resume_all_decoder,pl -r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_resume_all_decoder,pl
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_decoder_resume_all,l -r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_decoder_resume_all,l
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_src_isr_deal,pl -r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_src_isr_deal,pl
@ -2799,6 +2798,7 @@ objs/cpu/br25/audio_dec/audio_dec.c.o
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_hw_src_close,l -r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_hw_src_close,l
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,free,l -r=objs/cpu/br25/audio_dec/audio_dec.c.o,free,l
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_dec_init,pl -r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_dec_init,pl
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,printf,l
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_decoder_task_create,l -r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_decoder_task_create,l
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,prevent_task_fill_create,l -r=objs/cpu/br25/audio_dec/audio_dec.c.o,prevent_task_fill_create,l
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,prevent_task_fill_ch_open,l -r=objs/cpu/br25/audio_dec/audio_dec.c.o,prevent_task_fill_ch_open,l
@ -2823,10 +2823,23 @@ objs/cpu/br25/audio_dec/audio_dec.c.o
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,mix_out_high_bass,pl -r=objs/cpu/br25/audio_dec/audio_dec.c.o,mix_out_high_bass,pl
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_eq_drc_parm_update,l -r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_eq_drc_parm_update,l
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,mix_out_high_bass_dis,pl -r=objs/cpu/br25/audio_dec/audio_dec.c.o,mix_out_high_bass_dis,pl
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_mix_out_automute_mute,pl
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,gpio_set_output_value,l
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,mix_out_automute_handler,pl
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,app_audio_output_channel_get,l
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,mix_out_automute_skip,pl
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_energy_detect_skip,l
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,mix_out_automute_open,pl
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_energy_detect_open,l
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_energy_detect_entry_get,l
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,mix_out_automute_close,pl
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_energy_detect_close,l
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_mixer_get_ch_num,l -r=objs/cpu/br25/audio_dec/audio_dec.c.o,audio_mixer_get_ch_num,l
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,clock_add_set,l -r=objs/cpu/br25/audio_dec/audio_dec.c.o,clock_add_set,l
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,clock_remove_set,l -r=objs/cpu/br25/audio_dec/audio_dec.c.o,clock_remove_set,l
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,puts,l -r=objs/cpu/br25/audio_dec/audio_dec.c.o,puts,l
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,mix_out_automute_hdl,pl
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,mix_out_automute_entry,pl
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,decode_task,pl -r=objs/cpu/br25/audio_dec/audio_dec.c.o,decode_task,pl
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,mixer,pl -r=objs/cpu/br25/audio_dec/audio_dec.c.o,mixer,pl
-r=objs/cpu/br25/audio_dec/audio_dec.c.o,mix_eq_drc,pl -r=objs/cpu/br25/audio_dec/audio_dec.c.o,mix_eq_drc,pl
@ -2861,6 +2874,7 @@ objs/cpu/br25/audio_dec/audio_dec_bt.c.o
-r=objs/cpu/br25/audio_dec/audio_dec_bt.c.o,esco_dec_open,pl -r=objs/cpu/br25/audio_dec/audio_dec_bt.c.o,esco_dec_open,pl
-r=objs/cpu/br25/audio_dec/audio_dec_bt.c.o,audio_output_channel_num,l -r=objs/cpu/br25/audio_dec/audio_dec_bt.c.o,audio_output_channel_num,l
-r=objs/cpu/br25/audio_dec/audio_dec_bt.c.o,lmp_private_esco_suspend_resume, -r=objs/cpu/br25/audio_dec/audio_dec_bt.c.o,lmp_private_esco_suspend_resume,
-r=objs/cpu/br25/audio_dec/audio_dec_bt.c.o,mix_out_automute_skip,l
-r=objs/cpu/br25/audio_dec/audio_dec_bt.c.o,esco_dec_close,pl -r=objs/cpu/br25/audio_dec/audio_dec_bt.c.o,esco_dec_close,pl
-r=objs/cpu/br25/audio_dec/audio_dec_bt.c.o,bt_audio_is_running,pl -r=objs/cpu/br25/audio_dec/audio_dec_bt.c.o,bt_audio_is_running,pl
-r=objs/cpu/br25/audio_dec/audio_dec_bt.c.o,bt_media_is_running,pl -r=objs/cpu/br25/audio_dec/audio_dec_bt.c.o,bt_media_is_running,pl
@ -3737,8 +3751,7 @@ objs/cpu/br25/pwm_led.c.o
-r=objs/cpu/br25/pwm_led.c.o,request_irq,l -r=objs/cpu/br25/pwm_led.c.o,request_irq,l
objs/cpu/br25/setup.c.o objs/cpu/br25/setup.c.o
-r=objs/cpu/br25/setup.c.o,cpu_assert_debug,pl -r=objs/cpu/br25/setup.c.o,cpu_assert_debug,pl
-r=objs/cpu/br25/setup.c.o,log_flush,l -r=objs/cpu/br25/setup.c.o,chip_reset,
-r=objs/cpu/br25/setup.c.o,local_irq_disable,l
-r=objs/cpu/br25/setup.c.o,timer,pl -r=objs/cpu/br25/setup.c.o,timer,pl
-r=objs/cpu/br25/setup.c.o,sys_timer_dump_time,l -r=objs/cpu/br25/setup.c.o,sys_timer_dump_time,l
-r=objs/cpu/br25/setup.c.o,test_fun,pl -r=objs/cpu/br25/setup.c.o,test_fun,pl
@ -3751,8 +3764,6 @@ objs/cpu/br25/setup.c.o
-r=objs/cpu/br25/setup.c.o,clk_voltage_init,l -r=objs/cpu/br25/setup.c.o,clk_voltage_init,l
-r=objs/cpu/br25/setup.c.o,clk_early_init,l -r=objs/cpu/br25/setup.c.o,clk_early_init,l
-r=objs/cpu/br25/setup.c.o,tick_timer_init,l -r=objs/cpu/br25/setup.c.o,tick_timer_init,l
-r=objs/cpu/br25/setup.c.o,debug_uart_init,l
-r=objs/cpu/br25/setup.c.o,log_early_init,l
-r=objs/cpu/br25/setup.c.o,clock_dump,l -r=objs/cpu/br25/setup.c.o,clock_dump,l
-r=objs/cpu/br25/setup.c.o,reset_source_dump,l -r=objs/cpu/br25/setup.c.o,reset_source_dump,l
-r=objs/cpu/br25/setup.c.o,power_reset_source_dump,l -r=objs/cpu/br25/setup.c.o,power_reset_source_dump,l
@ -3789,7 +3800,7 @@ objs/cpu/br25/spi.c.o
-r=objs/cpu/br25/spi.c.o,gpio_set_pull_up,l -r=objs/cpu/br25/spi.c.o,gpio_set_pull_up,l
-r=objs/cpu/br25/spi.c.o,gpio_set_pull_down,l -r=objs/cpu/br25/spi.c.o,gpio_set_pull_down,l
-r=objs/cpu/br25/spi.c.o,config_asser,l -r=objs/cpu/br25/spi.c.o,config_asser,l
-r=objs/cpu/br25/spi.c.o,spi1_p_data,l -r=objs/cpu/br25/spi.c.o,spi1_p_data,
objs/cpu/br25/spi_test.c.o objs/cpu/br25/spi_test.c.o
objs/cpu/br25/uart_bt_product.c.o objs/cpu/br25/uart_bt_product.c.o
objs/cpu/br25/uart_dev.c.o objs/cpu/br25/uart_dev.c.o
@ -4113,6 +4124,22 @@ include_lib/liba/br25/cpu.a.llvm.245840.timer.c
-r=include_lib/liba/br25/cpu.a.llvm.245840.timer.c,log_tag_const_i_TMR,l -r=include_lib/liba/br25/cpu.a.llvm.245840.timer.c,log_tag_const_i_TMR,l
-r=include_lib/liba/br25/cpu.a.llvm.245840.timer.c,clock_timer,pl -r=include_lib/liba/br25/cpu.a.llvm.245840.timer.c,clock_timer,pl
-r=include_lib/liba/br25/cpu.a.llvm.245840.timer.c,clock_sys_src_use_lrc_hw,l -r=include_lib/liba/br25/cpu.a.llvm.245840.timer.c,clock_sys_src_use_lrc_hw,l
include_lib/liba/br25/cpu.a.llvm.259396.sd.c
-r=include_lib/liba/br25/cpu.a.llvm.259396.sd.c,sdmmc_0_port_init,pl
-r=include_lib/liba/br25/cpu.a.llvm.259396.sd.c,sdmmc_0_io_detect,pl
-r=include_lib/liba/br25/cpu.a.llvm.259396.sd.c,gpio_set_die,l
-r=include_lib/liba/br25/cpu.a.llvm.259396.sd.c,gpio_set_pull_up,l
-r=include_lib/liba/br25/cpu.a.llvm.259396.sd.c,gpio_set_pull_down,l
-r=include_lib/liba/br25/cpu.a.llvm.259396.sd.c,gpio_set_direction,l
-r=include_lib/liba/br25/cpu.a.llvm.259396.sd.c,delay,l
-r=include_lib/liba/br25/cpu.a.llvm.259396.sd.c,gpio_read,l
-r=include_lib/liba/br25/cpu.a.llvm.259396.sd.c,sdmmc_0_clk_detect,pl
-r=include_lib/liba/br25/cpu.a.llvm.259396.sd.c,sdmmc_cmd_detect,pl
-r=include_lib/liba/br25/cpu.a.llvm.259396.sd.c,puts,l
-r=include_lib/liba/br25/cpu.a.llvm.259396.sd.c,gpio_direction_output,l
-r=include_lib/liba/br25/cpu.a.llvm.259396.sd.c,gpio_set_hd,l
-r=include_lib/liba/br25/cpu.a.llvm.259396.sd.c,gpio_direction_input,l
-r=include_lib/liba/br25/cpu.a.llvm.259396.sd.c,gpio_write,l
include_lib/liba/br25/cpu.a.llvm.271980.debug.c include_lib/liba/br25/cpu.a.llvm.271980.debug.c
-r=include_lib/liba/br25/cpu.a.llvm.271980.debug.c,sputchar,pl -r=include_lib/liba/br25/cpu.a.llvm.271980.debug.c,sputchar,pl
-r=include_lib/liba/br25/cpu.a.llvm.271980.debug.c,sput_u32hex,pl -r=include_lib/liba/br25/cpu.a.llvm.271980.debug.c,sput_u32hex,pl
@ -4549,6 +4576,153 @@ include_lib/liba/br25/cpu.a.llvm.672432.pmu_calibrate.c
-r=include_lib/liba/br25/cpu.a.llvm.672432.pmu_calibrate.c,adc_value_to_voltage,l -r=include_lib/liba/br25/cpu.a.llvm.672432.pmu_calibrate.c,adc_value_to_voltage,l
-r=include_lib/liba/br25/cpu.a.llvm.672432.pmu_calibrate.c,local_irq_disable,l -r=include_lib/liba/br25/cpu.a.llvm.672432.pmu_calibrate.c,local_irq_disable,l
-r=include_lib/liba/br25/cpu.a.llvm.672432.pmu_calibrate.c,local_irq_enable,l -r=include_lib/liba/br25/cpu.a.llvm.672432.pmu_calibrate.c,local_irq_enable,l
include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,get_sd0_sd1_mux_index,pl
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,get_cardx_info_p,pl
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,get_sdx_dri_p,pl
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sd_io_source_suspend,pl
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,os_sem_pend,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sys_timeout_del,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,usr_timeout_del,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_stop_card,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_host_sus,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sd_io_source_resume,pl
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_host_res,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,os_sem_post,
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sd_io_suspend,pl
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sd_io_resume,pl
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sd_set_power,pl
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdpg_config,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sd_notify_enable,pl
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_dev_detect_timer_add,pl
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sys_timer_add,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_dev_detect_timer_del,pl
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sys_timer_del,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_dev_entry_lowpower,pl
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,strcmp,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,force_open_sd,pl
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,dev_open,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,force_read_sd,pl
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,dev_bulk_read,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,force_write_sd,pl
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,dev_bulk_write,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,force_operat_sd_test,pl
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,log_print,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,put_buf,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_clk_detect_card,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_set_buad,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_hw_bit_enable,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_cmd_detect_card,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_io_detect_card,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sys_event_notify,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_os_busy_sem_pend,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_hw_init,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_host_close,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,os_sem_create,
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_host_init,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_mdelay,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_init_card,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_read_card_async,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_read_card,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_write_card_async,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_write_card,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sys_timeout_add,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sdx_async_flush,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sd0_sd1_use_the_same_hw,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sd_hdl,pl
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,log_tag_const_i_SD,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,sd_dev_ops,pl
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,log_tag_const_e_SD,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,log_tag_const_d_SD,l
-r=include_lib/liba/br25/cpu.a.llvm.815416.sdx_dev.c,keep_card_at_active_status,l
include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,send_cmd42_lock_unlock_card,pl
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,get_sdx_dri_p,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_send_command,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_send_command_write_data,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_init_card_step1_user_hookfun,pl
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_init_card,pl
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_host_init,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,log_print,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,malloc,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_send_command_read_data,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,free,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_mdelay,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_set_buad,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_host_close,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_read_card,pl
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_os_busy_sem_pend,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,usr_timeout_add,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_send_command_read_data_isr,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,usr_timeout_del,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_read_card_async,pl
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_write_card,pl
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_send_command_write_data_isr,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_write_card_async,pl
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_async_flush,pl
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_stop_card,pl
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_send_detect_cmd,pl
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_send_command_isr,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_os_sem_clr,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_cmd_detect_card,pl
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_os_dect_sem_pend,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_clk_detect_card,pl
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_io_detect_card,pl
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_get_hi_jiffies,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_idle_clk_en,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_4bit_data_io_init,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_4bit_data_io_uinit,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sys_timer_modify,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,sdx_can_operate_mmc_card,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,log_tag_const_e_SD,l
-r=include_lib/liba/br25/cpu.a.llvm.858420.sdx_driver.c,log_tag_const_i_SD,l
include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_get_hi_jiffies,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,jiffies_msec,l
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_mdelay,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,os_time_dly,
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_os_sem_create,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,os_sem_create,
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_os_busy_sem_pend,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,os_sem_pend,l
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,log_print,l
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_os_dect_sem_pend,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_os_sem_post,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,os_sem_post,
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_os_sem_clr,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,os_sem_set,
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_os_sem_del,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,os_sem_del,
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_send_command,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_send_command_read_data,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_send_command_write_data,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_send_command_isr,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_send_command_read_data_isr,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_send_command_write_data_isr,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_isr,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_send_detect_cmd,l
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,usr_timeout_del,l
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sd0_isr,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,get_sd0_sd1_mux_index,l
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,get_sdx_dri_p,l
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sd1_isr,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_set_buad,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,clk_get,l
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_hw_bit_enable,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_hw_bit_disable,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_hw_close,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_hw_init,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_host_init,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,request_irq,l
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_host_close,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_host_sus,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_host_res,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_idle_clk_en,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_4bit_data_io_init,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sdx_4bit_data_io_uinit,pl
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,log_tag_const_e_SD,l
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,sd0_sd1_use_the_same_hw,l
-r=include_lib/liba/br25/cpu.a.llvm.904336.sdx_source.c,clock_sdx,pl
include_lib/liba/br25/cpu.a.llvm.954572.otg.c include_lib/liba/br25/cpu.a.llvm.954572.otg.c
-r=include_lib/liba/br25/cpu.a.llvm.954572.otg.c,usb_otg_online,pl -r=include_lib/liba/br25/cpu.a.llvm.954572.otg.c,usb_otg_online,pl
-r=include_lib/liba/br25/cpu.a.llvm.954572.otg.c,usb_otg_suspend,pl -r=include_lib/liba/br25/cpu.a.llvm.954572.otg.c,usb_otg_suspend,pl
@ -4979,6 +5153,10 @@ include_lib/liba/br25/system.a.llvm.207078.heap_mmu.c
-r=include_lib/liba/br25/system.a.llvm.207078.heap_mmu.c,config_asser,l -r=include_lib/liba/br25/system.a.llvm.207078.heap_mmu.c,config_asser,l
-r=include_lib/liba/br25/system.a.llvm.207078.heap_mmu.c,log_tag_const_d_HEAP_MEM,l -r=include_lib/liba/br25/system.a.llvm.207078.heap_mmu.c,log_tag_const_d_HEAP_MEM,l
-r=include_lib/liba/br25/system.a.llvm.207078.heap_mmu.c,log_tag_const_e_HEAP_MEM,l -r=include_lib/liba/br25/system.a.llvm.207078.heap_mmu.c,log_tag_const_e_HEAP_MEM,l
include_lib/liba/br25/system.a.llvm.236922.common.c
-r=include_lib/liba/br25/system.a.llvm.236922.common.c,jiffies_half_msec,pl
-r=include_lib/liba/br25/system.a.llvm.236922.common.c,jiffies_msec,pl
-r=include_lib/liba/br25/system.a.llvm.236922.common.c,jiffies,l
include_lib/liba/br25/system.a.llvm.244386.memory.c include_lib/liba/br25/system.a.llvm.244386.memory.c
-r=include_lib/liba/br25/system.a.llvm.244386.memory.c,mem_init,pl -r=include_lib/liba/br25/system.a.llvm.244386.memory.c,mem_init,pl
-r=include_lib/liba/br25/system.a.llvm.244386.memory.c,memory_init,l -r=include_lib/liba/br25/system.a.llvm.244386.memory.c,memory_init,l
@ -5277,7 +5455,7 @@ include_lib/liba/br25/system.a.llvm.1320054.sdfile_new.c
-r=include_lib/liba/br25/system.a.llvm.1320054.sdfile_new.c,nor_sdfile_hdl,pl -r=include_lib/liba/br25/system.a.llvm.1320054.sdfile_new.c,nor_sdfile_hdl,pl
-r=include_lib/liba/br25/system.a.llvm.1320054.sdfile_new.c,__initcall_sdfile_init,pl -r=include_lib/liba/br25/system.a.llvm.1320054.sdfile_new.c,__initcall_sdfile_init,pl
-r=include_lib/liba/br25/system.a.llvm.1320054.sdfile_new.c,sdfile_vfs_ops,plx -r=include_lib/liba/br25/system.a.llvm.1320054.sdfile_new.c,sdfile_vfs_ops,plx
-r=include_lib/liba/br25/system.a.llvm.1320054.sdfile_new.c,nor_sdfile_vfs_ops,plx -r=include_lib/liba/br25/system.a.llvm.1320054.sdfile_new.c,nor_sdfile_vfs_ops,pl
-r=include_lib/liba/br25/system.a.llvm.1320054.sdfile_new.c,boot_info,l -r=include_lib/liba/br25/system.a.llvm.1320054.sdfile_new.c,boot_info,l
-r=include_lib/liba/br25/system.a.llvm.1320054.sdfile_new.c,config_asser,l -r=include_lib/liba/br25/system.a.llvm.1320054.sdfile_new.c,config_asser,l
-r=include_lib/liba/br25/system.a.llvm.1320054.sdfile_new.c,SDFILE_VFS_REDUCE_ENABLE,l -r=include_lib/liba/br25/system.a.llvm.1320054.sdfile_new.c,SDFILE_VFS_REDUCE_ENABLE,l
@ -5353,7 +5531,7 @@ include_lib/liba/br25/system.a.llvm.1468034.init.c
-r=include_lib/liba/br25/system.a.llvm.1468034.init.c,late_initcall_begin, -r=include_lib/liba/br25/system.a.llvm.1468034.init.c,late_initcall_begin,
-r=include_lib/liba/br25/system.a.llvm.1468034.init.c,late_initcall_end, -r=include_lib/liba/br25/system.a.llvm.1468034.init.c,late_initcall_end,
include_lib/liba/br25/system.a.llvm.1530946.puthex.c include_lib/liba/br25/system.a.llvm.1530946.puthex.c
-r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,putchar,pl -r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,putchar,l
-r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,log_output_lock,l -r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,log_output_lock,l
-r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,log_output_start,l -r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,log_output_start,l
-r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,log_putchar,l -r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,log_putchar,l
@ -5361,15 +5539,15 @@ include_lib/liba/br25/system.a.llvm.1530946.puthex.c
-r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,log_putbyte,l -r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,log_putbyte,l
-r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,log_output_unlock,l -r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,log_output_unlock,l
-r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,put_u4hex,pl -r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,put_u4hex,pl
-r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,put_u16hex,pl -r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,put_u16hex,l
-r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,put_u8hex,pl -r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,put_u8hex,l
-r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,put_u32hex,pl -r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,put_u32hex,l
-r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,putbyte,l -r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,putbyte,l
-r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,put_buf,pl -r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,put_buf,l
-r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,log_put_u8hex,l -r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,log_put_u8hex,l
-r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,printf_buf,pl -r=include_lib/liba/br25/system.a.llvm.1530946.puthex.c,printf_buf,pl
include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c
-r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,puts,pl -r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,puts,l
-r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,log_output_lock,l -r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,log_output_lock,l
-r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,log_output_start,l -r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,log_output_start,l
-r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,strlen,l -r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,strlen,l
@ -5378,9 +5556,9 @@ include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c
-r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,log_putbyte,l -r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,log_putbyte,l
-r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,log_print_time,l -r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,log_print_time,l
-r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,log_output_unlock,l -r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,log_output_unlock,l
-r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,printf,pl -r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,printf,l
-r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,print, -r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,print,
-r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,assert_printf,pl -r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,assert_printf,l
-r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,local_irq_disable,l -r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,local_irq_disable,l
-r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,sprintf,pl -r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,sprintf,pl
-r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,vprintf,pl -r=include_lib/liba/br25/system.a.llvm.1537914.printf-stdarg.c,vprintf,pl
@ -5393,12 +5571,12 @@ include_lib/liba/br25/system.a.llvm.1554582.log.c
-r=include_lib/liba/br25/system.a.llvm.1554582.log.c,log_print_time,pl -r=include_lib/liba/br25/system.a.llvm.1554582.log.c,log_print_time,pl
-r=include_lib/liba/br25/system.a.llvm.1554582.log.c,jiffies_msec,l -r=include_lib/liba/br25/system.a.llvm.1554582.log.c,jiffies_msec,l
-r=include_lib/liba/br25/system.a.llvm.1554582.log.c,sprintf,l -r=include_lib/liba/br25/system.a.llvm.1554582.log.c,sprintf,l
-r=include_lib/liba/br25/system.a.llvm.1554582.log.c,log_putbyte,pl -r=include_lib/liba/br25/system.a.llvm.1554582.log.c,log_putbyte,l
-r=include_lib/liba/br25/system.a.llvm.1554582.log.c,log_output_lock,pl -r=include_lib/liba/br25/system.a.llvm.1554582.log.c,log_output_lock,pl
-r=include_lib/liba/br25/system.a.llvm.1554582.log.c,os_mutex_pend,l -r=include_lib/liba/br25/system.a.llvm.1554582.log.c,os_mutex_pend,l
-r=include_lib/liba/br25/system.a.llvm.1554582.log.c,os_mutex_post,l -r=include_lib/liba/br25/system.a.llvm.1554582.log.c,os_mutex_post,l
-r=include_lib/liba/br25/system.a.llvm.1554582.log.c,log_output_unlock,pl -r=include_lib/liba/br25/system.a.llvm.1554582.log.c,log_output_unlock,pl
-r=include_lib/liba/br25/system.a.llvm.1554582.log.c,log_print,pl -r=include_lib/liba/br25/system.a.llvm.1554582.log.c,log_print,l
-r=include_lib/liba/br25/system.a.llvm.1554582.log.c,log_output_start,pl -r=include_lib/liba/br25/system.a.llvm.1554582.log.c,log_output_start,pl
-r=include_lib/liba/br25/system.a.llvm.1554582.log.c,log_putchar,pl -r=include_lib/liba/br25/system.a.llvm.1554582.log.c,log_putchar,pl
-r=include_lib/liba/br25/system.a.llvm.1554582.log.c,lbuf_free,l -r=include_lib/liba/br25/system.a.llvm.1554582.log.c,lbuf_free,l
@ -5531,10 +5709,6 @@ include_lib/liba/br25/system.a.llvm.78218.cfg_bin.c
-r=include_lib/liba/br25/system.a.llvm.78218.cfg_bin.c,CRC16,l -r=include_lib/liba/br25/system.a.llvm.78218.cfg_bin.c,CRC16,l
-r=include_lib/liba/br25/system.a.llvm.78218.cfg_bin.c,group_item_table,pl -r=include_lib/liba/br25/system.a.llvm.78218.cfg_bin.c,group_item_table,pl
-r=include_lib/liba/br25/system.a.llvm.78218.cfg_bin.c,cfg_bin,pl -r=include_lib/liba/br25/system.a.llvm.78218.cfg_bin.c,cfg_bin,pl
include_lib/liba/br25/system.a.llvm.236922.common.c
-r=include_lib/liba/br25/system.a.llvm.236922.common.c,jiffies_half_msec,pl
-r=include_lib/liba/br25/system.a.llvm.236922.common.c,jiffies_msec,pl
-r=include_lib/liba/br25/system.a.llvm.236922.common.c,jiffies,l
include_lib/liba/br25/system.a.llvm.298626.ffunicode.c include_lib/liba/br25/system.a.llvm.298626.ffunicode.c
-r=include_lib/liba/br25/system.a.llvm.298626.ffunicode.c,ff_uni2oem,pl -r=include_lib/liba/br25/system.a.llvm.298626.ffunicode.c,ff_uni2oem,pl
-r=include_lib/liba/br25/system.a.llvm.298626.ffunicode.c,ff_oem2uni,pl -r=include_lib/liba/br25/system.a.llvm.298626.ffunicode.c,ff_oem2uni,pl
@ -5760,6 +5934,27 @@ include_lib/liba/br25/media_app.a.llvm.123018.audio_output_dac.c
-r=include_lib/liba/br25/media_app.a.llvm.123018.audio_output_dac.c,dac_hdl,l -r=include_lib/liba/br25/media_app.a.llvm.123018.audio_output_dac.c,dac_hdl,l
-r=include_lib/liba/br25/media_app.a.llvm.123018.audio_output_dac.c,log_tag_const_i_APP_DAC,l -r=include_lib/liba/br25/media_app.a.llvm.123018.audio_output_dac.c,log_tag_const_i_APP_DAC,l
-r=include_lib/liba/br25/media_app.a.llvm.123018.audio_output_dac.c,config_asser,l -r=include_lib/liba/br25/media_app.a.llvm.123018.audio_output_dac.c,config_asser,l
include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,audio_energy_detect_event_handler,pl
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,log_print,l
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,auido_energy_detect_10ms_timer,pl
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,audio_energy_detect_open,pl
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,zalloc,l
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,usr_timer_add,l
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,os_mutex_create,
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,usr_timer_del,l
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,free,l
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,audio_energy_detect_run,pl
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,os_mutex_pend,l
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,os_mutex_post,l
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,audio_energy_detect_close,pl
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,os_mutex_del,
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,audio_energy_detect_skip,pl
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,audio_energy_detect_entry_get,pl
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,audio_energy_detect_sample_rate_update,pl
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,audio_energy_detect_energy_get,pl
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,log_tag_const_i_APP_EDET,l
-r=include_lib/liba/br25/media_app.a.llvm.157622.audio_energy_detect.c,log_tag_const_e_APP_EDET,l
include_lib/liba/br25/media_app.a.llvm.314346.audio_eq_drc_apply.c include_lib/liba/br25/media_app.a.llvm.314346.audio_eq_drc_apply.c
-r=include_lib/liba/br25/media_app.a.llvm.314346.audio_eq_drc_apply.c,audio_dec_eq_open,pl -r=include_lib/liba/br25/media_app.a.llvm.314346.audio_eq_drc_apply.c,audio_dec_eq_open,pl
-r=include_lib/liba/br25/media_app.a.llvm.314346.audio_eq_drc_apply.c,zalloc,l -r=include_lib/liba/br25/media_app.a.llvm.314346.audio_eq_drc_apply.c,zalloc,l

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.