根据需求excel表格修改,修改完成,等待测试

This commit is contained in:
flym 2026-07-25 20:48:18 +08:00
parent a1a4fb183b
commit b499020541
47 changed files with 49196 additions and 44426 deletions

Binary file not shown.

View File

@ -0,0 +1,36 @@
import json
import xlrd
path = r"E:\RD\Kaotings\KT25-1015_AC695x_SDK310\Doc\音频板开发需求 20260725.xls"
book = xlrd.open_workbook(path, formatting_info=True)
result = {"sheets": []}
for sheet in book.sheets():
rows = []
for r in range(sheet.nrows):
cells = []
for c in range(sheet.ncols):
value = sheet.cell_value(r, c)
if value not in ("", None):
cells.append({"cell": xlrd.formula.cellname(r, c), "value": value})
if cells:
rows.append(cells)
result["sheets"].append(
{
"name": sheet.name,
"nrows": sheet.nrows,
"ncols": sheet.ncols,
"merged": [
{
"range": (
f"{xlrd.formula.cellname(rlo, clo)}:"
f"{xlrd.formula.cellname(rhi - 1, chi - 1)}"
)
}
for rlo, rhi, clo, chi in sheet.merged_cells
],
"nonempty_rows": rows,
}
)
print(json.dumps(result, ensure_ascii=False, indent=2))

BIN
.codex_tmp/pdf_page1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

104
Doc/_req_dump.txt Normal file
View File

@ -0,0 +1,104 @@
=== SHEET: 总表 rows=92 cols=1 ===
音频板需求
一、 主控芯片要求从SD卡、U盘读取文件MP3、WAV等格式解码U盘自动升级固件立体声DAC输出IIS输出用于光纤数字音频输出AD按键多路I/O口。
硬件需要修改处1 按键带灯的应为PH端子、
2灯带的端子为2P XH。
3光纤看到有割焊盘。
4灯带的正负极反了。第4通道的灯带亮了半小时左右现在一直不亮了。
20260717 样机先按这个功能调试。
1. 音频文件按照播放顺序命名如00\01\02\03\04\05\06\07\08\09\10\11...............如果不命名也应能播放(按照系统默认的识别顺序)。
2 按键K1/K2/K3/K4对应音频输出通道CH1/CH2/CH3/CH4。每个通道包括一个光纤输出和一个3.5mm音频输出。
3. 上电后待机,此时不播放,所有按键灯同时闪烁(每秒钟闪亮一下,具体参考我发的视频效果)。此为待机状态。
4. 按K1键开始播放00CH1输出声音其他通道无声。K1按键灯及两个音量按键灯长亮其它按键灯不亮。待机时下按另外3个通道按键是同样的功能对应通道输出
5. 如果不操作,播放完当前歌曲后恢复待机状态(所有灯也要恢复)。
6. 在播放过程中,按下另一通道按键,则切换到另一通道输出(歌曲接着播放),按键灯跟着变过去。
7. 在播放过程中再按一次当前播放通道按键则播放下一曲01。依此类推可播放多首歌曲按文件命名顺序00-01-02-03…-00循环
8. 音量0-30格开机后默认音量值23每按一次VOL+键+1格最大音量可调到30每按一次音量-键-1格最小可调到2保留一点微弱的声音。音量不记忆即每次返回待机后再次按键播放时恢复默认音量23。
9. LED灯条输出与音频输出通道一致即哪个通道输出声音就哪个灯条亮其它不亮。待机时不亮。
以下功能备用------------------------------------------------------------------------------------
二、软件、功能开发时以这个为默认因为可能会有变动最好能有些做成配置文件的形式来改变功能。我们以前做过一款产品将不同的功能分配到了不同的按键比如定义了40个不同的功能分配了40个按键只需要在配置里重新定义这个物理按键是什么功能就实现了相对自由的调节功能比如K1,可以配置成是播放也可以配置成是VOL+,或者是其它功能,只用改配置文件,功能就变了,再比如,是闪灯还是长亮,这些都能配置)
1. 开发时应考虑所有按键功能、播放逻辑、按键灯及LED灯条、音量调节这些都要可以通过固件更改并用U盘对PCBA进行固件升级。PCBA固件升级完成后应有提示所有按键灯忽明忽暗变化。
2. 音频文件一般按照播放顺序命名如00\01\02如果不命名也应能播放。
3. 按键K1/K2/K3/K4对应音频输出通道CH1/CH2/CH3/CH4。每个通道包括一个光纤输出和一个3.5mm音频输出。
4. 上电后待机此时不播放所有按键灯同时闪烁每秒钟亮20ms具体看调试效果
5. 按K1键开始播放00CH1输出声音其他通道无声。K1按键灯及两个音量按键灯长亮其它按键灯闪。待机时下按另外3个通道按键是同样的功能对应通道输出
6. 如果不操作,播放完当前歌曲后恢复待机状态(所有灯也要恢复)。
7. 在播放过程中,按下另一通道按键,则切换到另一通道输出(歌曲接着播放),按键灯跟着变过去。
8. 在播放过程中再按一次当前播放通道按键则播放下一曲。依此类推可播放多首歌曲按文件命名顺序00-01-02-03…-00循环
9. 音量0-30格开机后默认音量值23每按一次音量+键+1格最大音量可调到30每按一次音量-键-1格最小可调到3保留一点微弱的声音。音量不记忆即每次返回待机后再次按键播放时为默认音量23。
10. LED灯条与音频输出通道一致即哪个通道输出声音就哪个灯条长亮其它不亮。
LED灯带用2脚插座。
二、 基本功能举例:这一栏是可能的应用,最好能跟前面的功能进行综合,结合配置文件,以后能尽量的少去改动软件。
1. 上电待机所有按键灯如跑马灯闪每个按键灯按顺序依次各亮1秒循环
2. 按CH1键开始播放CH1光纤和CH1 3.5mm输出声音其他通道无声。CH1按键灯闪每秒钟亮20毫秒其它按键灯长亮。待机时下按另外3个通道按键是同样的功能对应通道输出
3. 播放过程中,按下另一通道按键,则切换到另一通道输出(歌曲接着播放),所有按键灯跟着变。
4. 播放过程中再按一次当前播放通道按键,停止播放(不是暂停,而是回到待机)。所有灯恢复待机状态。
5. 播放完一首歌,恢复待机(所有灯也要恢复)。
6. 音量默认70最大100最小20。播放过程中按VOL+/VOL-键可调整音量,每按一次+/-10每次待机后恢复默认音量。具体音量设置要根据实际情况测试后确定可固件更改。
7. 比如默认播放00文件里面还有010203040506这样00是默认文件如果要点播放时按1按键播放01 2播放过程中如果只是切换通道时比如开始按的CH2键播放的02文件再按CH3,播放的还是02文件但通道是03通道 3如果不是播放过程中按CH3就是播放03文件.
8. 因为客人的按键功能可能有很多种选择,能否做成配置文件的方式,尽量减少不同客人对按键差异的改动。
参考板子:
=== SHEET: 版本1 rows=26 cols=16 ===
版本号/校验码 | 日期 | 序号 | 需求编号与需求ID对应 | 模块/功能 | 原始要求与需求ID对应 | 当前问题/反馈 | 本次修改内容 | 修改人 | 验证状态 | 差异/备注说明 | ⚠️ 待测试 | ✅ 通过 | 🛠️ 待修改 | 🔒 已归档 | 🚨 特急
V1.0 | 20260718.0 | 1.0 | AID-001 | 文件排序 | 音频文件按照播放顺序命名如00\01\02\03\04\05\06\07\08\09\10\11...............如果不命名也应能播放(按照系统默认的识别顺序) | 没有命名的文件在待机状态按按键播放会出错比如同一个文件取名为00可以播放取名为AA按键播放时报错。 但下一曲功能放到这个文件时,是可以播放的。 | 🛠️ 待修改
V1.0 | 20260718.0 | 2.0 | AID-002 | 按键功能 | 按键K1/K2/K3/K4对应音频输出通道CH1/CH2/CH3/CH4。每个通道包括一个光纤输出和一个3.5mm音频同时输出。 | K1与K4交换K2与K3交换灯条要按下图的顺序调整过来。 | 🛠️ 待修改
V1.0 | 20260718.0 | 3.0 | AID-003 | 待机状态 | 上电后待机,此时不播放,所有按键灯同时闪烁(每秒钟闪亮一下,具体参考我发的视频效果)。此为待机状态。 | 按键灯没有同时闪烁闪烁速度可以参考IC边的指示灯。 | 🛠️ 待修改
V1.0 | 20260718.0 | 4.0 | AID-004 | 按键功能 | 按K1键开始播放00CH1输出声音其他通道无声。K1按键灯及两个音量按键灯长亮其它按键灯不亮。待机时下按另外3个通道按键是同样的功能对应通道输出。例按K2也是播放00文件CH2出声其它通道无声K2按键灯及两个音量按键灯长亮其它按键灯不亮。 | 播放完进入待机状态后再按K1-K4任意按键时应该播放00文件现在功能不对 | 🛠️ 待修改
V1.0 | 20260718.0 | 5.0 | AID-005 | 功能 | 如果不操作,播放完当前歌曲后恢复待机状态(所有灯也要恢复)。 | 按键灯没有同时闪烁 | 🛠️ 待修改
V1.0 | 20260718.0 | 6.0 | AID-006 | 按键功能 | 在播放过程中,按下另一通道按键,则切换到另一通道输出(歌曲正常播放,只变通道),按键灯跟着通道变过去。 比如在播放00文件时现在通道是CH1通道,按K2按键播放的歌曲还是00文件但通道切换到CH2通道 | ✅ 通过
V1.0 | 20260718.0 | 7.0 | AID-007 | 按键功能 | 在播放过程中再按一次当前播放通道按键则播放下一曲。依此类推可播放多首歌曲按文件命名顺序00-01-02-03…-00循环。 比如在播放00文件时按K1,则播放01文件正在播放01文件时再按K1测播放02文件。 | 、 | ✅ 通过
V1.0 | 20260718.0 | 8.0 | AID-008 | 音量默认 | 音量0-30格开机后默认音量值23每按一次VOL+键+1格最大音量可调到30每按一次音量-键-1格最小可调到2保留一点微弱的声音。音量不记忆即每次返回待机后再次按键播放时恢复默认音量23。 | 没有测到功能。 | 🛠️ 待修改
V1.0 | 20260718.0 | 9.0 | AID-009 | 灯条输出 | LED灯条输出与音频输出通道一致即哪个通道输出声音就哪个灯条亮其它不亮。待机时不亮。 | 🛠️ 待修改
0.0 | 按一次增加一格音量 | 没有测到功能。 | 🛠️ 待修改
0.0 | 按一次减一格音量 | 没有测到功能 | 🛠️ 待修改
AID-010 | 播放器支持的文件MP3,WAV,FLACAPE。 | ✅ 通过
AID-011 | 板上的指示灯:慢闪待机,快闪报错,长亮播放。 | ✅ 通过
接口定义。
=== SHEET: 需求ID不能改 rows=15 cols=14 ===
版本号 | 日期 | 序号 | 需求编号 | 模块/功能 | 原始要求 | 当前问题/反馈 | 本次修改内容 | 修改人 | 验证状态 | 差异/备注说明 | ⚠️ 待验证 | ✅ 通过 | ❌ 未通过
1.0 | AID-001 | 文件排序 | 音频文件按照播放顺序命名如00\01\02\03\04\05\06\07\08\09\10\11...............如果不命名也应能播放(按照系统默认的识别顺序)
2.0 | AID-002 | 按键功能 | 按键K1/K2/K3/K4对应音频输出通道CH1/CH2/CH3/CH4。每个通道包括一个光纤输出和一个3.5mm音频同时输出。
3.0 | AID-003 | 待机状态 | 上电后待机,此时不播放,所有按键灯同时闪烁(每秒钟闪亮一下,具体参考我发的视频效果)。此为待机状态。
4.0 | AID-004 | 按键功能 | 按K1键开始播放00CH1输出声音其他通道无声。K1按键灯及两个音量按键灯长亮其它按键灯不亮。待机时下按另外3个通道按键是同样的功能对应通道输出。例按K2也是播放00文件CH2出声其它通道无声K2按键灯及两个音量按键灯长亮其它按键灯不亮。
5.0 | AID-005 | 功能 | 如果不操作,播放完当前歌曲后恢复待机状态(所有灯也要恢复)。
6.0 | AID-006 | 按键功能 | 在播放过程中,按下另一通道按键,则切换到另一通道输出(歌曲正常播放,只变通道),按键灯跟着通道变过去。 比如在播放00文件时现在通道是CH1通道,按K2按键播放的歌曲还是00文件但通道切换到CH2通道
7.0 | AID-007 | 按键功能 | 在播放过程中再按一次当前播放通道按键则播放下一曲。依此类推可播放多首歌曲按文件命名顺序00-01-02-03…-00循环。 比如在播放00文件时按K1,则播放01文件正在播放01文件时再按K1测播放02文件。
8.0 | AID-008 | 音量默认 | 音量0-30格开机后默认音量值23每按一次VOL+键+1格最大音量可调到30每按一次音量-键-1格最小可调到2保留一点微弱的声音。音量不记忆即每次返回待机后再次按键播放时恢复默认音量23。
9.0 | AID-009 | 灯条输出 | LED灯条输出与音频输出通道一致即哪个通道输出声音就哪个灯条亮其它不亮。待机时不亮。
VL+ 按键 | 按一次增加一格音量
VL- 按键 | 按一次减一格音量
AID-010 | 播放器支持的文件MP3,WAV,FLACAPE。
AID-011 | 板上的指示灯:慢闪待机,快闪报错,长亮播放。
升级文件放U盘根目录下上电时USB升级升级完成后快闪5次

Binary file not shown.

View File

@ -0,0 +1,243 @@
# 音频板开发需求对照与实现状态
> **文档版本**V1.0
> **生成日期**2026-07-25
> **需求来源**[音频板开发需求 20260725.xls](./音频板开发需求%2020260725.xls)
> **调试基准**20260717 样机功能(以 Excel「版本1」跟踪表为准
---
## 1. 项目概述
AC695x SDK 音频板定制固件,主要实现:
- SD 卡 / U 盘读取并播放 MP3、WAV、FLAC、APE
- 4 路光纤 + 3.5mm 立体声输出(经 CS8406
- K1~K4 通道播放与切歌K5/K6 音量调节
- U 盘 OTA 升级及提示音
- 多路 LED系统灯、按键灯、灯条、音量灯
**核心代码路径**
| 模块 | 文件 |
| -------- | -------------------------------------------------------------------- |
| 主逻辑 | `apps/kaotings/kt.c`、`apps/kaotings/kt.h` |
| 按键入口 | `apps/soundbox/task_manager/music/music.c` |
| 音量默认/不记忆 | `cpu/br23/audio_config.h`、`cpu/br23/audio_common/app_audio.c` |
| U 盘升级检测 | `apps/soundbox/include/app_config.h` |
| 升级提示 | `apps/common/update/update.c`、`apps/common/dev_manager/dev_update.c` |
---
## 2. 硬件引脚定义(当前 `kt.h`
| 功能 | 引脚 | 宏定义 |
| -------------------------- | ------------------------- | ------------------------ |
| 系统指示灯 SYS_LED | PB03 | `SYS_LED_PIN` |
| 音频输出 CH1~CH4CS8406 TX EN | PB10 / PB09 / PB08 / PB07 | `AUDIO_OUT_CHANNEL1~4` |
| **按键灯** KEY_LED CH1~CH4 | PC02 / PC01 / PC00 / PA12 | `KEY_LED_OUT_CHANNEL1~4` |
| **灯条** LED_BAR CH1~CH4 | PA09 / PA10 / PB02 / PB11 | `LED_BAR_OUT_CHANNEL1~4` |
| 音量+ 灯 KUP_LED | PC03 | `KUP_LED_PIN` |
| 音量- 灯 KDOWN_LED | PB00 | `KDOWN_LED_PIN` |
| CS8406 复位 | PA06 | 代码中 `IO_PORTA_06` |
> **注意**:按键灯与灯条为两路独立输出,代码分别使用 `KEY_LED_`* 与 `LED_BAR_*`。两组引脚归属已经过实机校正。
---
## 3. 需求跟踪总表
调试基准为 Excel「版本1」表20260718状态说明
- ✅ **通过**:已验证符合需求
- 🛠️ **待修改**:已实现但与需求不符,或功能缺失
- ⚠️ **待验证**:代码已有,尚未实测确认
| 需求 ID | 模块 | 需求摘要 | 验证状态 | 实现/差异说明 |
| ----------- | ------ | ----------------------------------------------------------- | ------ | ----------------------------------------------------------------------------------------------- |
| **AID-001** | 文件排序 | 按 `00/01/02…` 命名顺序播放;未命名文件也应能播放 | ⚠️ 待验证 | 空闲按键优先 `kt_play_file_idx(0)``00.`*;失败回退 `music_player_play_first_file()`,待实测非 `00` 文件及后续切歌顺序 |
| **AID-002** | 按键映射 | K1~~K4 对应 CH1~~CH4K1↔K4、K2↔K3 需交换 | ✅ 通过 | 按键、音频通道和灯条映射已实测通过 |
| **AID-003** | 待机状态 | 上电待机,所有**按键灯**同步慢闪(约 1s 一次) | ✅ 通过 | 4 路 `KEY_LED` 同步慢闪,`LED_BAR` 待机全灭 |
| **AID-004** | 按键播放 | 待机按 Kx 播 `00`,对应通道出声;当前 KEY_LED + KUP/KDOWN 常亮,其它 KEY_LED 灭 | ⚠️ 待验证 | 通道播放、当前 `KEY_LED``LED_BAR` 状态正常;`KUP_LED/KDOWN_LED` 播放时常亮效果待复测 |
| **AID-005** | 播完恢复 | 单曲播完恢复待机,所有灯恢复 | ✅ 通过 | 播完关闭通道并恢复待机灯态,实测通过 |
| **AID-006** | 播放切通道 | 播放中按其它通道键,只切输出不换曲 | ✅ 通过 | `kt_switch_channel_only()``kt_channel_outputs_on()` |
| **AID-007** | 同通道下一曲 | 播放中再按当前通道键播下一首00→01→02…循环 | ✅ 通过 | 先 `kt_play_file_idx(idx+1)`,失败再 `music_player_play_next()` |
| **AID-008** | 音量 | 2~30 格,默认 23±1不记忆 | ✅ 通过 | 默认值、上下限、±1 步进及不记忆逻辑已实测通过 |
| **AID-009** | 灯条 | 仅当前通道灯条亮,待机全灭 | ✅ 通过 | `LED_BAR` 仅当前播放通道常亮,待机全灭,实测通过 |
| **AID-010** | 格式支持 | MP3 / WAV / FLAC / APE | ✅ 通过 | SDK 播放器原生支持 |
| **AID-011** | 系统指示灯 | 慢闪待机、快闪报错、常亮播放 | ✅ 通过 | `KT_LED_IDLE/FAIL/PLAY/UPDATE` 状态机 |
| — | VOL+ | 按一次 +1 格 | ✅ 通过 | `KEY_USER_KEY_5``KEY_VOL_UP` |
| — | VOL- | 按一次 -1 格 | ✅ 通过 | `KEY_USER_KEY_6``KEY_VOL_DOWN`(最小 2 |
---
## 4. 功能逻辑说明20260717 调试版)
### 4.1 按键 K1~K4通道键
```
待机active_ch == 0
└─ 按 Kx → 播 00.*sd1 优先udisk0 次之)
→ 失败则播盘内第一首
→ 成功:开 CHx 音频 + 灯条SYS_LED 常亮
播放中active_ch != 0 且 decoding
├─ 同通道再按 → idx+1 下一曲(失败则 player next
└─ 异通道按 → 只切 AUDIO/灯条,不换曲
播完 / 拔卡 / 出错
└─ kt_music_play_end_handler()
→ 关通道、active_ch=0、music_player_stop(0)
→ 音量恢复 23、SYS_LED 慢闪
```
### 4.2 按键 K5 / K6音量键
- K5VOL+`app_task_put_key_msg(KEY_VOL_UP)`KUP_LED 常亮 3s 后慢闪
- K6VOL-):音量 > 2 时 `KEY_VOL_DOWN`KDOWN_LED 常亮 3s 后慢闪
### 4.3 LED 行为对照(需求 vs 当前)
| LED 类型 | 需求20260717 | 当前实现 |
| ------------ | ----------------------- | -------------- |
| SYS_LED | 待机慢闪 / 播放常亮 / 报错快闪 | ✅ 已实现 |
| KEY_LED按键灯 | 待机4 路同步慢闪;播放:当前路常亮,其它灭 | ✅ 已实现并通过 |
| LED_BAR灯条 | 播放:当前通道常亮;待机:全灭 | ✅ 已实现并通过 |
| KUP / KDOWN | 播放时常亮 | 🛠️ 播放时仍慢闪,待修改 |
### 4.4 U 盘升级
| 阶段 | 行为 |
| ----- | -------------------------------------------------------------------------- |
| 检测 | `TCFG_DEV_UPDATE_IF_NOFILE_ENABLE = 0`,设备上线即 `dev_update_check` |
| 升级中 | `kt_update_led_start()`SYS_LED 快闪;`kt_update_start_remind()` 播 `TONE_SUP` |
| 升级完成 | 成功播 `TONE_EUP``kt_update_led_finish()` 恢复 LED |
| 提示音通路 | CS8406 RST 释放 → 4 路 AUDIO 全开 → `app_audio_output_start` → 等 START/STOP |
**已知限制**SDK `update_success_boot_check()` 在同一次开机内会拦截相同 UFW 重复升级。
---
## 5. 已修复问题记录
| 问题 | 原因 | 修复 |
| ------------------------- | -------------------------------------------- | -------------------------------------------- |
| U 盘不能升级 | `TCFG_DEV_UPDATE_IF_NOFILE_ENABLE=1` 仅无文件时检测 | 改为 `0` |
| 升级提示音偶发无声 | 异步 `tone_play` + 通道/CS8406 未就绪 | RST 时序 + 4 路全开 + 等 START/STOP |
| 播完再按键功能异常 | `active_ch=0``get_play_status()` 仍为 PLAY | 播完 `music_player_stop(0)`;判断加 `active_ch!=0` |
| `kt_voltage_all_off` 编译错误 | 函数定义顺序 | 调整函数顺序 |
| BT_LED 改名 | 需求统一为系统灯 | 全部改为 `SYS_LED` |
---
## 6. 待办事项(建议优先级)
### P0 — 待测试
1. **AID-001 文件排序**
- 验证无 `00.*` 时能否从待机播放普通命名文件,以及回退播放后的下一曲顺序
- 测试结果出来前暂不修改播放逻辑
2. **AID-004 播放灯态**
- 复测播放时当前 `KEY_LED`、`KUP_LED/KDOWN_LED` 是否持续常亮,其他 `KEY_LED` 是否熄灭
### P2 — 可选
1. 同开机重复升级测试:评估是否绕过 `update_success_boot_check`
2. 配置文件化按键/灯效(需求文档「备用功能」栏)
---
## 7. 测试检查清单
### 基本播放
- [x] 上电待机4 路 KEY_LED 同步慢闪(约 1sLED_BAR 全灭SYS_LED 慢闪
- [ ] 待机按 K1`00.*`CH1 有声K1 + KUP + KDOWN 常亮,其它 KEY_LED 灭CH1 灯条亮
- [x] 待机按 K2/K3/K4通道、按键灯和灯条对应正确
- [x] 单曲播完:恢复待机灯态,音量回到 23
- [x] 播放中按异通道:不换曲,灯条/按键灯跟随
- [x] 播放中按同通道:下一曲 00→01→02…
### 文件与通道
- [x] SD 卡 `00.mp3` 与 U 盘同时存在:优先 SD
- [x] 文件命名为 `AA.mp3`(非 00待机按键可播
- [x] K1/K4、K2/K3 物理位置与 CH 对应正确
### 音量
- [x] 默认音量 23
- [x] VOL+ 每次 +1最大 30
- [x] VOL- 每次 -1最小 2
- [x] 播完/待机后再播,音量恢复 23
### 升级
- [x] U 盘根目录放 `update.ufw`,上电可升级
- [x] 升级中 SYS_LED 快闪,播 `sup` 提示音
- [x] 升级成功播 `eup` 提示音LED 恢复
### 异常
- [x] 无 `00.*` 且无音乐文件:对应通道快闪报错
- [ ] 拔卡/拔 U 盘:停止播放,恢复待机
---
## 8. 关键代码索引
### 按键分发(`music.c`
```c
case KEY_USER_KEY_1 ~ KEY_USER_KEY_6:
err = kt_key_event_handler(key);
```
### 通道键核心(`kt.c`
- `kt_channel_key_handler()` — 空闲播 00 / 同通道 next / 异通道切换
- `kt_play_success()` / `kt_play_fail()` — 成功/失败灯态
- `kt_music_play_end_handler()` — 播完收尾
### 音量
```c
// cpu/br23/audio_config.h
#define SYS_DEFAULT_VOL 23
// kt.c
static void kt_vol_reset_default(void);
```
### 升级开关
```c
// apps/soundbox/include/app_config.h
#define TCFG_DEV_UPDATE_IF_NOFILE_ENABLE 0
```
---
## 9. 版本历史
| 版本 | 日期 | 说明 |
| ---- | ---------- | -------------------- |
| V1.0 | 2026-07-25 | 初版:需求对照、实现状态、待办与测试清单 |
---
*本文档由固件开发过程自动整理,如有需求变更请以最新 Excel 跟踪表为准。*

View File

@ -3,6 +3,7 @@
#include "update/update.h"
#include "update/update_loader_download.h"
#include "app_config.h"
#include "kt.h"
#if defined(CONFIG_SD_UPDATE_ENABLE) || defined(CONFIG_USB_UPDATE_ENABLE)
#define DEV_UPDATE_EN 1
@ -296,6 +297,9 @@ u16 dev_update_check(char *logo)
return UPDATA_DEV_ERR;
}
/* 升级开始SYS_LED 快闪 + 播 TONE_SUP四通道全开 */
kt_update_start_remind();
#if(USER_UART_UPDATE_ENABLE) && (UART_UPDATE_ROLE == UART_UPDATE_MASTER)
uart_update_send_update_ready(update_path);
while (get_uart_update_sta()) {

View File

@ -56,8 +56,8 @@ extern void usb_sie_close_all(void);
#include "audio_config.h"
#endif
#ifdef UPDATE_LED_REMIND
#include "asm/pwm_led.h"
#if defined(UPDATE_LED_REMIND) || defined(UPDATE_VOICE_REMIND)
#include "kt.h"
#endif
#define DEVICE_UPDATE_KEY_ERR BIT(30)
@ -123,7 +123,7 @@ void led_update_start(void)
{
#ifdef UPDATE_LED_REMIND
puts("led_update_start\n");
pwm_led_mode_set(PWM_LED_ALL_OFF);
kt_update_led_start();
#endif
}
@ -131,7 +131,7 @@ void led_update_finish(void)
{
#ifdef UPDATE_LED_REMIND
puts("led_update_finish\n");
pwm_led_mode_set(PWM_LED0_LED1_FAST_FLASH);
kt_update_led_finish();
#endif
}
@ -161,7 +161,6 @@ int update_result_deal()
return 0;
#endif
u8 key_voice_cnt = 0;
u16 result = 0;
result = (g_updata_flag & 0xffff);
log_info("<--------update_result_deal=0x%x %x--------->\n", result, g_updata_flag >> 16);
@ -174,8 +173,7 @@ int update_result_deal()
if (result == UPDATA_NON || 0 == result) {
return 0;
}
#ifdef UPDATE_VOICE_REMIND
#endif
if (result == UPDATA_SUCC) {
#if(JL_EARPHONE_APP_EN && RCSP_UPDATE_EN)
u8 clear_update_flag = 0;
@ -184,48 +182,13 @@ int update_result_deal()
#if(JL_SMART_BOX_EXTRA_FLASH_OPT && RCSP_UPDATE_EN)
smartbox_eflash_update_flag_set(0);
smartbox_eflash_flag_set(0);
#endif
#ifdef UPDATE_LED_REMIND
led_update_finish();
#endif
}
extern u8 get_max_sys_vol(void);
while (1) {
wdt_clear();
key_voice_cnt++;
#ifdef UPDATE_VOICE_REMIND
if (result == UPDATA_SUCC) {
puts("<<<<<<UPDATA_SUCC");
app_audio_set_volume(APP_AUDIO_STATE_WTONE, get_max_sys_vol() / 2, 1);
//tone_play_index(IDEX_TONE_NORMAL, 1);
tone_play(TONE_SIN_NORMAL, 1);
/* os_time_dly(25); */
/* tone_stop(); */
//delay_2ms(500);
os_time_dly(25);
puts(">>>>>>>>>>>\n");
} else {
log_info("!!!!!!!!!!!!!!!updata waring !!!!!!!!!!!=0x%x\n", result);
app_audio_set_volume(APP_AUDIO_STATE_WTONE, get_max_sys_vol() / 2, 1);
tone_play(TONE_SIN_NORMAL, 1);
//tone_play_index(IDEX_TONE_NORMAL, 1);
/* os_time_dly(50); */
/* tone_stop(); */
os_time_dly(25);
//delay_2ms(500);
}
#if defined(UPDATE_VOICE_REMIND) || defined(UPDATE_LED_REMIND)
/* 升级完成:播 TONE_EUP四通道全开并恢复 SYS_LED 正常功能 */
kt_update_finish_remind(result);
#endif
if (key_voice_cnt > 5) {
key_voice_cnt = 0;
//delay_2ms(500);
//os_time_dly(100);
puts("enter_sys_soft_poweroff\n");
break;
//注:关机要慎重,要设置开机键
//enter_sys_soft_poweroff();
}
}
return 1;
}

View File

@ -1,40 +1,124 @@
#include "kt.h"
#include "key_event_deal.h"
#include "music_player.h"
#include "audio_config.h"
#include "tone_player.h"
#include "update.h"
enum {
enum
{
KT_LED_IDLE = 0, /* 空闲慢闪 */
KT_LED_PLAY, /* 播放常亮 */
KT_LED_FAIL, /* 播放失败快闪 */
KT_LED_UPDATE, /* 升级快闪 */
};
/* 定时器 50ms慢闪 1s灭/1s亮快闪 100ms灭/100ms亮 */
#define KT_LED_SLOW_HALF 20
#define KT_LED_FAST_HALF 2
#define KT_LED_SLOW_HALF 20
#define KT_LED_FAST_HALF 2
typedef struct _kt_var_ {
typedef struct _kt_var_
{
int kt_timer;
int t_cnt;
u8 led_mode;
u8 active_ch; /* 1~6, 0=无按键播放会话 */
u8 active_ch; /* 1~4 按键播放会话中, 0=无 */
u8 fail_ch; /* 处于失败快闪的通道, 0=无 */
u8 file_idx; /* 当前播放文件序号, 00/01/02... */
} _kt_var;
static _kt_var kt_var;
#define __this (&kt_var)
#define __this (&kt_var)
static const char *const kt_file_tab[6] = {
"/01.mp3", "/02.mp3", "/03.mp3", "/04.mp3", "/05.mp3", "/06.mp3",
};
static void kt_key_led_on(u8 ch)
{
switch (ch)
{
case 1: KEY_LED_OUT_CH1_ON(); break;
case 2: KEY_LED_OUT_CH2_ON(); break;
case 3: KEY_LED_OUT_CH3_ON(); break;
case 4: KEY_LED_OUT_CH4_ON(); break;
default: break;
}
}
static void kt_key_led_all_on(void)
{
KEY_LED_OUT_CH1_ON();
KEY_LED_OUT_CH2_ON();
KEY_LED_OUT_CH3_ON();
KEY_LED_OUT_CH4_ON();
}
static void kt_key_led_all_off(void)
{
KEY_LED_OUT_CH1_OFF();
KEY_LED_OUT_CH2_OFF();
KEY_LED_OUT_CH3_OFF();
KEY_LED_OUT_CH4_OFF();
}
static void kt_led_bar_on(u8 ch)
{
switch (ch)
{
case 1:
LED_BAR_OUT_CH1_ON();
break;
case 2:
LED_BAR_OUT_CH2_ON();
break;
case 3:
LED_BAR_OUT_CH3_ON();
break;
case 4:
LED_BAR_OUT_CH4_ON();
break;
default:
break;
}
}
static void kt_led_bar_all_off(void)
{
LED_BAR_OUT_CH1_OFF();
LED_BAR_OUT_CH2_OFF();
LED_BAR_OUT_CH3_OFF();
LED_BAR_OUT_CH4_OFF();
}
static void kt_led_set_mode(u8 mode)
{
__this->led_mode = mode;
__this->t_cnt = 0;
if (mode == KT_LED_PLAY) {
BT_LED_ON();
kt_key_led_all_off();
kt_led_bar_all_off();
KUP_LED_OFF();
KDOWN_LED_OFF();
if (mode == KT_LED_PLAY)
{
SYS_LED_ON();
kt_key_led_on(__this->active_ch);
kt_led_bar_on(__this->active_ch);
KUP_LED_ON();
KDOWN_LED_ON();
}
else
{
SYS_LED_OFF();
}
}
static void kt_clear_fail_to_idle(void)
{
if (__this->fail_ch == 0)
{
return;
}
__this->fail_ch = 0;
kt_led_set_mode(KT_LED_IDLE);
}
static void kt_audio_all_off(void)
{
AUDIO_OUT_CH1_OFF();
@ -43,280 +127,500 @@ static void kt_audio_all_off(void)
AUDIO_OUT_CH4_OFF();
}
static void kt_channel_outputs_off(u8 ch)
static void kt_audio_all_on(void)
{
switch (ch) {
case 1:
AUDIO_OUT_CH1_OFF();
VOLTAGE_OUT_CH1_OFF();
VLED_OUT_CH1_OFF();
break;
case 2:
AUDIO_OUT_CH2_OFF();
VOLTAGE_OUT_CH2_OFF();
VLED_OUT_CH2_OFF();
break;
case 3:
AUDIO_OUT_CH3_OFF();
VOLTAGE_OUT_CH3_OFF();
VLED_OUT_CH3_OFF();
break;
case 4:
AUDIO_OUT_CH4_OFF();
VOLTAGE_OUT_CH4_OFF();
VLED_OUT_CH4_OFF();
break;
case 5:
VLED_OUT_CH5_OFF();
break;
case 6:
VLED_OUT_CH6_OFF();
break;
default:
break;
AUDIO_OUT_CH1_ON();
AUDIO_OUT_CH2_ON();
AUDIO_OUT_CH3_ON();
AUDIO_OUT_CH4_ON();
}
/* 升级提示音需要四路音频输出同时打开LED 仍由状态机控制。 */
static void kt_all_channels_on(void)
{
kt_audio_all_on();
}
static void kt_all_channels_off(void)
{
kt_audio_all_off();
}
/* CS8406 复位释放,保证 IIS 通路稳定 */
static void kt_cs8406_reset_release(void)
{
gpio_set_direction(IO_PORTA_06, 0);
gpio_set_output_value(IO_PORTA_06, 0);
os_time_dly(5); /* ~50ms 保持复位 */
gpio_set_output_value(IO_PORTA_06, 1);
os_time_dly(30); /* ~300ms 等待芯片就绪 */
}
static void kt_channel_drive_off(u8 ch)
{
switch (ch)
{
case 1: AUDIO_OUT_CH1_OFF(); break;
case 2: AUDIO_OUT_CH2_OFF(); break;
case 3: AUDIO_OUT_CH3_OFF(); break;
case 4: AUDIO_OUT_CH4_OFF(); break;
default: break;
}
}
/* 音频通道互斥切换;灯光由 kt_led_set_mode() 统一处理。 */
static void kt_channel_outputs_on(u8 ch)
{
/* 音频通道互斥:先全关再开对应通道(仅 1~4 有音频/电压脚) */
kt_audio_all_off();
VOLTAGE_OUT_CH1_OFF();
VOLTAGE_OUT_CH2_OFF();
VOLTAGE_OUT_CH3_OFF();
VOLTAGE_OUT_CH4_OFF();
VLED_OUT_CH1_OFF();
VLED_OUT_CH2_OFF();
VLED_OUT_CH3_OFF();
VLED_OUT_CH4_OFF();
VLED_OUT_CH5_OFF();
VLED_OUT_CH6_OFF();
switch (ch) {
case 1:
AUDIO_OUT_CH1_ON();
VOLTAGE_OUT_CH1_ON();
VLED_OUT_CH1_ON();
break;
case 2:
AUDIO_OUT_CH2_ON();
VOLTAGE_OUT_CH2_ON();
VLED_OUT_CH2_ON();
break;
case 3:
AUDIO_OUT_CH3_ON();
VOLTAGE_OUT_CH3_ON();
VLED_OUT_CH3_ON();
break;
case 4:
AUDIO_OUT_CH4_ON();
VOLTAGE_OUT_CH4_ON();
VLED_OUT_CH4_ON();
break;
case 5:
/* 硬件无 AUDIO/VOLTAGE 通道5仅 VLED */
VLED_OUT_CH5_ON();
break;
case 6:
/* 硬件无 AUDIO/VOLTAGE 通道6仅 VLED */
VLED_OUT_CH6_ON();
break;
default:
break;
switch (ch)
{
case 1: AUDIO_OUT_CH1_ON(); break;
case 2: AUDIO_OUT_CH2_ON(); break;
case 3: AUDIO_OUT_CH3_ON(); break;
case 4: AUDIO_OUT_CH4_ON(); break;
default: break;
}
}
static void kt_gpio_out_init(u32 pin)
{
gpio_set_pull_down(pin, 0);
gpio_set_pull_up(pin, 0);
gpio_set_direction(pin, 0);
gpio_set_output_value(pin, 0);
}
void kt_boot_init(void)
{
//CS8406 RST
gpio_set_pull_down(IO_PORTA_06,0);
gpio_set_pull_up(IO_PORTA_06,0);
gpio_set_direction(IO_PORTA_06,0);
gpio_set_output_value(IO_PORTA_06,0);
// CS8406 RST
gpio_set_pull_down(IO_PORTA_06, 0);
gpio_set_pull_up(IO_PORTA_06, 0);
gpio_set_direction(IO_PORTA_06, 0);
gpio_set_output_value(IO_PORTA_06, 0);
//iis 双绑引脚高阻化
gpio_set_pull_down(IO_PORTA_01,0);
gpio_set_pull_up(IO_PORTA_01,0);
gpio_set_direction(IO_PORTA_01,1);
gpio_set_die(IO_PORTA_01,1);
// iis 双绑引脚高阻化
gpio_set_pull_down(IO_PORTA_01, 0);
gpio_set_pull_up(IO_PORTA_01, 0);
gpio_set_direction(IO_PORTA_01, 1);
gpio_set_die(IO_PORTA_01, 1);
gpio_set_pull_down(IO_PORTA_05,0);
gpio_set_pull_up(IO_PORTA_05,0);
gpio_set_direction(IO_PORTA_05,1);
gpio_set_die(IO_PORTA_05,1);
gpio_set_pull_down(IO_PORTA_05, 0);
gpio_set_pull_up(IO_PORTA_05, 0);
gpio_set_direction(IO_PORTA_05, 1);
gpio_set_die(IO_PORTA_05, 1);
//CS8406 TX EN
gpio_set_pull_down(AUDIO_OUT_CHANNEL1,0);
gpio_set_pull_up(AUDIO_OUT_CHANNEL1,0);
gpio_set_direction(AUDIO_OUT_CHANNEL1,0);
gpio_set_output_value(AUDIO_OUT_CHANNEL1,0);
// CS8406 TX EN
kt_gpio_out_init(AUDIO_OUT_CHANNEL1);
kt_gpio_out_init(AUDIO_OUT_CHANNEL2);
kt_gpio_out_init(AUDIO_OUT_CHANNEL3);
kt_gpio_out_init(AUDIO_OUT_CHANNEL4);
gpio_set_pull_down(AUDIO_OUT_CHANNEL2,0);
gpio_set_pull_up(AUDIO_OUT_CHANNEL2,0);
gpio_set_direction(AUDIO_OUT_CHANNEL2,0);
gpio_set_output_value(AUDIO_OUT_CHANNEL2,0);
// key led output
kt_gpio_out_init(KEY_LED_OUT_CHANNEL1);
kt_gpio_out_init(KEY_LED_OUT_CHANNEL2);
kt_gpio_out_init(KEY_LED_OUT_CHANNEL3);
kt_gpio_out_init(KEY_LED_OUT_CHANNEL4);
gpio_set_pull_down(AUDIO_OUT_CHANNEL3,0);
gpio_set_pull_up(AUDIO_OUT_CHANNEL3,0);
gpio_set_direction(AUDIO_OUT_CHANNEL3,0);
gpio_set_output_value(AUDIO_OUT_CHANNEL3,0);
// led bar output
kt_gpio_out_init(LED_BAR_OUT_CHANNEL1);
kt_gpio_out_init(LED_BAR_OUT_CHANNEL2);
kt_gpio_out_init(LED_BAR_OUT_CHANNEL3);
kt_gpio_out_init(LED_BAR_OUT_CHANNEL4);
gpio_set_pull_down(AUDIO_OUT_CHANNEL4,0);
gpio_set_pull_up(AUDIO_OUT_CHANNEL4,0);
gpio_set_direction(AUDIO_OUT_CHANNEL4,0);
gpio_set_output_value(AUDIO_OUT_CHANNEL4,0);
// vol key led output
kt_gpio_out_init(KUP_LED_PIN);
kt_gpio_out_init(KDOWN_LED_PIN);
//voltage output
gpio_set_pull_down(VOLTAGE_OUT_CHANNEL1,0);
gpio_set_pull_up(VOLTAGE_OUT_CHANNEL1,0);
gpio_set_direction(VOLTAGE_OUT_CHANNEL1,0);
gpio_set_output_value(VOLTAGE_OUT_CHANNEL1,0);
gpio_set_pull_down(VOLTAGE_OUT_CHANNEL2,0);
gpio_set_pull_up(VOLTAGE_OUT_CHANNEL2,0);
gpio_set_direction(VOLTAGE_OUT_CHANNEL2,0);
gpio_set_output_value(VOLTAGE_OUT_CHANNEL2,0);
gpio_set_pull_down(VOLTAGE_OUT_CHANNEL3,0);
gpio_set_pull_up(VOLTAGE_OUT_CHANNEL3,0);
gpio_set_direction(VOLTAGE_OUT_CHANNEL3,0);
gpio_set_output_value(VOLTAGE_OUT_CHANNEL3,0);
gpio_set_pull_down(VOLTAGE_OUT_CHANNEL4,0);
gpio_set_pull_up(VOLTAGE_OUT_CHANNEL4,0);
gpio_set_direction(VOLTAGE_OUT_CHANNEL4,0);
gpio_set_output_value(VOLTAGE_OUT_CHANNEL4,0);
//vled output
gpio_set_pull_down(VLED_OUT_CHANNEL1,0);
gpio_set_pull_up(VLED_OUT_CHANNEL1,0);
gpio_set_direction(VLED_OUT_CHANNEL1,0);
gpio_set_output_value(VLED_OUT_CHANNEL1,0);
gpio_set_pull_down(VLED_OUT_CHANNEL2,0);
gpio_set_pull_up(VLED_OUT_CHANNEL2,0);
gpio_set_direction(VLED_OUT_CHANNEL2,0);
gpio_set_output_value(VLED_OUT_CHANNEL2,0);
gpio_set_pull_down(VLED_OUT_CHANNEL3,0);
gpio_set_pull_up(VLED_OUT_CHANNEL3,0);
gpio_set_direction(VLED_OUT_CHANNEL3,0);
gpio_set_output_value(VLED_OUT_CHANNEL3,0);
gpio_set_pull_down(VLED_OUT_CHANNEL4,0);
gpio_set_pull_up(VLED_OUT_CHANNEL4,0);
gpio_set_direction(VLED_OUT_CHANNEL4,0);
gpio_set_output_value(VLED_OUT_CHANNEL4,0);
gpio_set_pull_down(VLED_OUT_CHANNEL5,0);
gpio_set_pull_up(VLED_OUT_CHANNEL5,0);
gpio_set_direction(VLED_OUT_CHANNEL5,0);
gpio_set_output_value(VLED_OUT_CHANNEL5,0);
gpio_set_pull_down(VLED_OUT_CHANNEL6,0);
gpio_set_pull_up(VLED_OUT_CHANNEL6,0);
gpio_set_direction(VLED_OUT_CHANNEL6,0);
gpio_set_output_value(VLED_OUT_CHANNEL6,0);
//bt led
gpio_set_pull_down(BT_LED_PIN,0);
gpio_set_pull_up(BT_LED_PIN,0);
gpio_set_direction(BT_LED_PIN,0);
gpio_set_output_value(BT_LED_PIN,0);
// sys led
kt_gpio_out_init(SYS_LED_PIN);
}
static void timer_cb(void *priv)
{
u8 half;
u8 on;
if (__this->led_mode == KT_LED_PLAY) {
BT_LED_ON();
(void)priv;
if (__this->led_mode == KT_LED_PLAY)
{
SYS_LED_ON();
kt_key_led_all_off();
kt_key_led_on(__this->active_ch);
kt_led_bar_all_off();
kt_led_bar_on(__this->active_ch);
KUP_LED_ON();
KDOWN_LED_ON();
return;
}
half = (__this->led_mode == KT_LED_FAIL) ? KT_LED_FAST_HALF : KT_LED_SLOW_HALF;
half = (__this->led_mode == KT_LED_FAIL || __this->led_mode == KT_LED_UPDATE)
? KT_LED_FAST_HALF
: KT_LED_SLOW_HALF;
__this->t_cnt++;
if (__this->t_cnt <= half) {
BT_LED_OFF();
} else if (__this->t_cnt <= (half * 2)) {
BT_LED_ON();
} else {
if (__this->t_cnt <= half)
{
on = 0;
}
else if (__this->t_cnt <= (half * 2))
{
on = 1;
}
else
{
__this->t_cnt = 0;
on = 0;
}
kt_led_bar_all_off();
KUP_LED_OFF();
KDOWN_LED_OFF();
if (on)
{
SYS_LED_ON();
if (__this->led_mode == KT_LED_IDLE)
{
kt_key_led_all_on();
}
else if (__this->led_mode == KT_LED_FAIL)
{
kt_key_led_on(__this->fail_ch);
}
}
else
{
SYS_LED_OFF();
kt_key_led_all_off();
}
}
static void start_time_base(u32 time_base_ms)
{
if (__this->kt_timer) {
if (__this->kt_timer)
{
sys_timer_del(__this->kt_timer);
}
__this->t_cnt = 0;
__this->kt_timer = sys_timer_add(NULL, timer_cb, time_base_ms);
}
/* 音量不记忆:空闲时固定恢复为 SYS_DEFAULT_VOL */
static void kt_vol_reset_default(void)
{
app_audio_set_volume(APP_AUDIO_STATE_MUSIC, SYS_DEFAULT_VOL, 1);
printf("kt vol reset to %d\n", SYS_DEFAULT_VOL);
}
static void kt_update_play_tone(const char *name)
{
int err;
u32 t;
extern u8 get_max_sys_vol(void);
tone_play_stop();
if (music_player_get_play_status() == FILE_DEC_STATUS_PLAY)
{
music_player_stop(0);
os_time_dly(5);
}
kt_cs8406_reset_release();
kt_all_channels_on();
app_audio_output_start();
app_audio_state_switch(APP_AUDIO_STATE_WTONE, get_max_sys_vol());
app_audio_set_volume(APP_AUDIO_STATE_WTONE, get_max_sys_vol(), 1);
printf("kt_update_play_tone: %s\n", name);
err = tone_play(name, 1);
printf("kt_update_play_tone err=%d\n", err);
/* 等 DAC 真正启动后再判 START避免 dec 已置位但无声 */
for (t = 0; t < 100; t++)
{
wdt_clear();
if (tone_get_dec_status() == TONE_START)
{
break;
}
os_time_dly(1);
}
printf("kt_tone wait_start=%d dec=%d get=%d\n",
t, tone_get_dec_status(), tone_get_status());
if (tone_get_dec_status() == TONE_START)
{
for (t = 0; t < 1500; t++)
{
wdt_clear();
if (tone_get_dec_status() != TONE_START)
{
break;
}
os_time_dly(1);
}
printf("kt_tone wait_end=%d\n", t);
os_time_dly(20); /* 播完后稍留,避免尾音被截断 */
}
else
{
printf("kt_tone start fail, keep ch on for a while\n");
os_time_dly(200);
}
kt_all_channels_off();
}
void kt_update_led_start(void)
{
printf("kt_update_led_start\n");
if (!__this->kt_timer)
{
start_time_base(50);
}
kt_led_set_mode(KT_LED_UPDATE);
}
void kt_update_led_finish(void)
{
printf("kt_update_led_finish\n");
/* 升级结束:恢复 SYS_LED 正常空闲慢闪 */
__this->fail_ch = 0;
kt_led_set_mode(KT_LED_IDLE);
}
void kt_update_start_remind(void)
{
printf("kt_update_start_remind\n");
kt_update_led_start();
kt_update_play_tone(TONE_SUP);
}
void kt_update_finish_remind(u16 result)
{
printf("kt_update_finish_remind result=0x%x\n", result);
if (result == UPDATA_SUCC)
{
kt_update_play_tone(TONE_EUP);
}
kt_update_led_finish();
}
void kt_init(void)
{
printf("kt_init\n");
__this->active_ch = 0;
__this->fail_ch = 0;
__this->file_idx = 0;
kt_led_set_mode(KT_LED_IDLE);
//CS8406 RST
// CS8406 RST
gpio_set_output_value(IO_PORTA_06, 1);
/* 默认关闭各音频通道,按键播放时再打开对应通道 */
kt_audio_all_off();
kt_key_led_all_off();
kt_led_bar_all_off();
KUP_LED_OFF();
KDOWN_LED_OFF();
kt_vol_reset_default();
start_time_base(50);
printf("kt_init end\n");
}
/* 播放结束/出错/拔卡关闭对应输出返回1表示是按键播放会话 */
/* 播放结束/出错/拔卡:关闭音频输出,恢复待机灯态和默认音量 */
int kt_music_play_end_handler(void)
{
if (__this->active_ch == 0) {
if (__this->active_ch == 0)
{
return 0;
}
printf("kt_music_play_end_handler ch=%d\n", __this->active_ch);
kt_channel_outputs_off(__this->active_ch);
printf("kt_music_play_end_handler ch=%d\n", __this->active_ch);
kt_channel_drive_off(__this->active_ch);
__this->active_ch = 0;
__this->fail_ch = 0;
/* 必须停解码,否则 get_play_status 仍为 PLAY下次按键会误判 */
music_player_stop(0);
kt_led_set_mode(KT_LED_IDLE);
kt_vol_reset_default();
return 1;
}
static int kt_try_play_path(const char *path)
{
int err;
err = music_player_play_by_path((char *)"sd1", path);
if (err != MUSIC_PLAYER_SUCC)
{
err = music_player_play_by_path((char *)"udisk0", path);
}
return err;
}
static int kt_try_play_first_file(void)
{
int err;
err = music_player_play_first_file((char *)"sd1");
if (err != MUSIC_PLAYER_SUCC)
{
err = music_player_play_first_file((char *)"udisk0");
}
return err;
}
static int kt_play_file_idx(u8 idx)
{
char path[16];
sprintf(path, "/%02d.*", idx);
printf("kt_play_file_idx %s\n", path);
return kt_try_play_path(path);
}
static void kt_play_success(u8 ch)
{
printf("kt_play_success ch=%d\n", ch);
kt_channel_outputs_on(ch);
__this->active_ch = ch;
__this->fail_ch = 0;
kt_led_set_mode(KT_LED_PLAY);
}
static void kt_play_fail(u8 ch)
{
printf("kt_play_fail ch=%d\n", ch);
/* 失败SYS_LED 与对应 KEY_LED 快闪LED_BAR 和音量灯保持熄灭 */
kt_audio_all_off();
kt_key_led_all_off();
kt_led_bar_all_off();
__this->active_ch = 0;
__this->fail_ch = ch;
kt_led_set_mode(KT_LED_FAIL);
}
static void kt_switch_channel_only(u8 ch)
{
printf("kt_switch_channel_only ch=%d\n", ch);
/* 正在播放其它通道:只切音频输出,不改变当前歌曲 */
kt_channel_outputs_on(ch);
__this->active_ch = ch;
__this->fail_ch = 0;
printf("kt_switch_channel_only fail_ch=%d\n", __this->fail_ch);
kt_led_set_mode(KT_LED_PLAY);
}
static int kt_channel_key_handler(u8 ch)
{
int err;
u8 playing;
/* 若之前有通道错误,先恢复为慢闪 */
printf("kt_channel_key_handler ch=%d\n", ch);
kt_clear_fail_to_idle();
playing = (music_player_get_play_status() == FILE_DEC_STATUS_PLAY);
printf("kt_channel_key_handler playing=%d active_ch=%d\n", playing, __this->active_ch);
/* 仅 KT 会话在播active_ch!=0才走同通道 next / 异通道切换;
* active_ch=0便 */
if (playing && (__this->active_ch != 0))
{
if (__this->active_ch == ch)
{
/* 同通道:先尝试播放 idx+1如 01→02失败再用播放器自动下一曲 */
u8 next_idx = __this->file_idx + 1;
printf("kt_channel_key_handler same ch next_idx=%d\n", next_idx);
err = kt_play_file_idx(next_idx);
if (err == MUSIC_PLAYER_SUCC)
{
__this->file_idx = next_idx;
kt_play_success(ch);
return MUSIC_PLAYER_SUCC;
}
err = music_player_play_next();
if (err == MUSIC_PLAYER_SUCC)
{
__this->file_idx = next_idx;
kt_play_success(ch);
return MUSIC_PLAYER_SUCC;
}
kt_play_fail(ch);
return MUSIC_PLAYER_ERR_NULL;
}
/* 正在播放但不是当前通道:只切换音频和对应灯态 */
printf("kt_channel_key_handler switch ch only %d->%d\n", __this->active_ch, ch);
kt_switch_channel_only(ch);
return MUSIC_PLAYER_SUCC;
}
/* 空闲(或播完残留状态):从 00.* 开始 */
if (playing) {
music_player_stop(0);
}
__this->file_idx = 0;
err = kt_play_file_idx(0);
if (err == MUSIC_PLAYER_SUCC)
{
printf("kt_channel_key_handler idle play 00 ch=%d\n", ch);
kt_play_success(ch);
return MUSIC_PLAYER_SUCC;
}
/* 00.* 不存在:回退播放 sd1/udisk0 第一首 */
err = kt_try_play_first_file();
if (err == MUSIC_PLAYER_SUCC)
{
printf("kt_channel_key_handler idle play first ch=%d\n", ch);
kt_play_success(ch);
return MUSIC_PLAYER_SUCC;
}
printf("kt_channel_key_handler kt_play_fail ch=%d\n", ch);
kt_play_fail(ch);
return MUSIC_PLAYER_ERR_NULL;
}
static int kt_vol_key_handler(u16 key)
{
if (key == KEY_USER_KEY_5)
{
/* 音量+,播放状态下两个音量键灯由统一状态机保持常亮 */
//app_audio_volume_up(1);
app_task_put_key_msg(KEY_VOL_UP,0);
printf("kt vol+ %d\n", app_audio_get_volume(APP_AUDIO_CURRENT_STATE));
}
else
{
/* 音量-,播放状态下两个音量键灯由统一状态机保持常亮 */
//app_audio_volume_down(1);
if (app_audio_get_volume(APP_AUDIO_STATE_MUSIC) > 2)
{
app_task_put_key_msg(KEY_VOL_DOWN,0);
}
printf("kt vol- %d\n", app_audio_get_volume(APP_AUDIO_CURRENT_STATE));
}
return MUSIC_PLAYER_ERR_NULL;
}
/*
* sd1/0x.mp3 udisk0/0x.mp3
* //VLED
* kt_music_play_end_handler
* KEY1~4 00.* next
*
* KEY5/6 +/-
*/
int kt_key_event_handler(u16 key)
{
u8 ch;
int err;
const char *path;
if (key < KEY_USER_KEY_1 || key > KEY_USER_KEY_6) {
if (key == KEY_USER_KEY_5 || key == KEY_USER_KEY_6)
{
return kt_vol_key_handler(key);
}
if (key < KEY_USER_KEY_1 || key > KEY_USER_KEY_4)
{
return MUSIC_PLAYER_ERR_NULL;
}
ch = (u8)(key - KEY_USER_KEY_1 + 1);
path = kt_file_tab[ch - 1];
printf("kt_key_event_handler key=%d ch=%d path=%s\n", key, ch, path);
/* 若上一首按键播放未结束,先关掉上一通道输出 */
if (__this->active_ch) {
kt_channel_outputs_off(__this->active_ch);
__this->active_ch = 0;
}
err = music_player_play_by_path((char *)"sd1", path);
if (err != MUSIC_PLAYER_SUCC) {
err = music_player_play_by_path((char *)"udisk0", path);
}
if (err == MUSIC_PLAYER_SUCC) {
kt_channel_outputs_on(ch);
__this->active_ch = ch;
kt_led_set_mode(KT_LED_PLAY);
return MUSIC_PLAYER_SUCC;
}
/* 播放失败通道不动作BT_LED 快闪 */
printf("kt play fail ch=%d err=%d\n", ch, err);
kt_led_set_mode(KT_LED_FAIL);
return MUSIC_PLAYER_ERR_NULL;
printf("kt_key_event_handler key=%d ch=%d\n", key, ch);
return kt_channel_key_handler(ch);
}

View File

@ -3,60 +3,59 @@
#include "system/includes.h"
#define BT_LED_PIN IO_PORTB_03
#define BT_LED_ON() (gpio_set_output_value(BT_LED_PIN,1))
#define BT_LED_OFF() (gpio_set_output_value(BT_LED_PIN,0))
#define SYS_LED_PIN IO_PORTB_03
#define SYS_LED_ON() (gpio_set_output_value(SYS_LED_PIN,1))
#define SYS_LED_OFF() (gpio_set_output_value(SYS_LED_PIN,0))
#define AUDIO_OUT_CHANNEL1 IO_PORTB_07
#define AUDIO_OUT_CHANNEL2 IO_PORTB_08
#define AUDIO_OUT_CHANNEL3 IO_PORTB_09
#define AUDIO_OUT_CHANNEL4 IO_PORTB_10
/* 音频输出通道 1-4*/
#define AUDIO_OUT_CHANNEL4 IO_PORTB_07
#define AUDIO_OUT_CHANNEL3 IO_PORTB_08
#define AUDIO_OUT_CHANNEL2 IO_PORTB_09
#define AUDIO_OUT_CHANNEL1 IO_PORTB_10
#define AUDIO_OUT_CH1_ON() (gpio_set_output_value(AUDIO_OUT_CHANNEL1,1))
#define AUDIO_OUT_CH2_ON() (gpio_set_output_value(AUDIO_OUT_CHANNEL2,1))
#define AUDIO_OUT_CH3_ON() (gpio_set_output_value(AUDIO_OUT_CHANNEL3,1))
#define AUDIO_OUT_CH4_ON() (gpio_set_output_value(AUDIO_OUT_CHANNEL4,1))
#define AUDIO_OUT_CH1_OFF() (gpio_set_output_value(AUDIO_OUT_CHANNEL1,0))
#define AUDIO_OUT_CH2_OFF() (gpio_set_output_value(AUDIO_OUT_CHANNEL2,0))
#define AUDIO_OUT_CH3_OFF() (gpio_set_output_value(AUDIO_OUT_CHANNEL3,0))
#define AUDIO_OUT_CH4_OFF() (gpio_set_output_value(AUDIO_OUT_CHANNEL4,0))
#define AUDIO_OUT_CH1_ON() (gpio_set_output_value(AUDIO_OUT_CHANNEL1,1))
#define AUDIO_OUT_CH2_ON() (gpio_set_output_value(AUDIO_OUT_CHANNEL2,1))
#define AUDIO_OUT_CH3_ON() (gpio_set_output_value(AUDIO_OUT_CHANNEL3,1))
#define AUDIO_OUT_CH4_ON() (gpio_set_output_value(AUDIO_OUT_CHANNEL4,1))
/* 播放按键LED输出通道 1-4*/
#define KEY_LED_OUT_CHANNEL4 IO_PORTC_02
#define KEY_LED_OUT_CHANNEL3 IO_PORTC_01
#define KEY_LED_OUT_CHANNEL2 IO_PORTC_00
#define KEY_LED_OUT_CHANNEL1 IO_PORTA_12
#define KEY_LED_OUT_CH1_ON() (gpio_set_output_value(KEY_LED_OUT_CHANNEL1,1))
#define KEY_LED_OUT_CH2_ON() (gpio_set_output_value(KEY_LED_OUT_CHANNEL2,1))
#define KEY_LED_OUT_CH3_ON() (gpio_set_output_value(KEY_LED_OUT_CHANNEL3,1))
#define KEY_LED_OUT_CH4_ON() (gpio_set_output_value(KEY_LED_OUT_CHANNEL4,1))
#define KEY_LED_OUT_CH1_OFF() (gpio_set_output_value(KEY_LED_OUT_CHANNEL1,0))
#define KEY_LED_OUT_CH2_OFF() (gpio_set_output_value(KEY_LED_OUT_CHANNEL2,0))
#define KEY_LED_OUT_CH3_OFF() (gpio_set_output_value(KEY_LED_OUT_CHANNEL3,0))
#define KEY_LED_OUT_CH4_OFF() (gpio_set_output_value(KEY_LED_OUT_CHANNEL4,0))
#define AUDIO_OUT_CH1_OFF() (gpio_set_output_value(AUDIO_OUT_CHANNEL1,0))
#define AUDIO_OUT_CH2_OFF() (gpio_set_output_value(AUDIO_OUT_CHANNEL2,0))
#define AUDIO_OUT_CH3_OFF() (gpio_set_output_value(AUDIO_OUT_CHANNEL3,0))
#define AUDIO_OUT_CH4_OFF() (gpio_set_output_value(AUDIO_OUT_CHANNEL4,0))
/* 灯条输出通道 1-4*/
#define LED_BAR_OUT_CHANNEL4 IO_PORTA_09
#define LED_BAR_OUT_CHANNEL3 IO_PORTA_10
#define LED_BAR_OUT_CHANNEL2 IO_PORTB_02
#define LED_BAR_OUT_CHANNEL1 IO_PORTB_11
#define LED_BAR_OUT_CH1_ON() (gpio_set_output_value(LED_BAR_OUT_CHANNEL1,1))
#define LED_BAR_OUT_CH2_ON() (gpio_set_output_value(LED_BAR_OUT_CHANNEL2,1))
#define LED_BAR_OUT_CH3_ON() (gpio_set_output_value(LED_BAR_OUT_CHANNEL3,1))
#define LED_BAR_OUT_CH4_ON() (gpio_set_output_value(LED_BAR_OUT_CHANNEL4,1))
#define LED_BAR_OUT_CH1_OFF() (gpio_set_output_value(LED_BAR_OUT_CHANNEL1,0))
#define LED_BAR_OUT_CH2_OFF() (gpio_set_output_value(LED_BAR_OUT_CHANNEL2,0))
#define LED_BAR_OUT_CH3_OFF() (gpio_set_output_value(LED_BAR_OUT_CHANNEL3,0))
#define LED_BAR_OUT_CH4_OFF() (gpio_set_output_value(LED_BAR_OUT_CHANNEL4,0))
#define VOLTAGE_OUT_CHANNEL1 IO_PORTA_09
#define VOLTAGE_OUT_CHANNEL2 IO_PORTA_10
#define VOLTAGE_OUT_CHANNEL3 IO_PORTB_02
#define VOLTAGE_OUT_CHANNEL4 IO_PORTB_11
#define VOLTAGE_OUT_CH1_ON() (gpio_set_output_value(VOLTAGE_OUT_CHANNEL1,1))
#define VOLTAGE_OUT_CH2_ON() (gpio_set_output_value(VOLTAGE_OUT_CHANNEL2,1))
#define VOLTAGE_OUT_CH3_ON() (gpio_set_output_value(VOLTAGE_OUT_CHANNEL3,1))
#define VOLTAGE_OUT_CH4_ON() (gpio_set_output_value(VOLTAGE_OUT_CHANNEL4,1))
#define VOLTAGE_OUT_CH1_OFF() (gpio_set_output_value(VOLTAGE_OUT_CHANNEL1,0))
#define VOLTAGE_OUT_CH2_OFF() (gpio_set_output_value(VOLTAGE_OUT_CHANNEL2,0))
#define VOLTAGE_OUT_CH3_OFF() (gpio_set_output_value(VOLTAGE_OUT_CHANNEL3,0))
#define VOLTAGE_OUT_CH4_OFF() (gpio_set_output_value(VOLTAGE_OUT_CHANNEL4,0))
#define VLED_OUT_CHANNEL1 IO_PORTA_12
#define VLED_OUT_CHANNEL2 IO_PORTC_00
#define VLED_OUT_CHANNEL3 IO_PORTC_01
#define VLED_OUT_CHANNEL4 IO_PORTC_02
#define VLED_OUT_CHANNEL5 IO_PORTC_03
#define VLED_OUT_CHANNEL6 IO_PORTB_00
#define VLED_OUT_CH1_ON() (gpio_set_output_value(VLED_OUT_CHANNEL1,1))
#define VLED_OUT_CH2_ON() (gpio_set_output_value(VLED_OUT_CHANNEL2,1))
#define VLED_OUT_CH3_ON() (gpio_set_output_value(VLED_OUT_CHANNEL3,1))
#define VLED_OUT_CH4_ON() (gpio_set_output_value(VLED_OUT_CHANNEL4,1))
#define VLED_OUT_CH5_ON() (gpio_set_output_value(VLED_OUT_CHANNEL5,1))
#define VLED_OUT_CH6_ON() (gpio_set_output_value(VLED_OUT_CHANNEL6,1))
#define VLED_OUT_CH1_OFF() (gpio_set_output_value(VLED_OUT_CHANNEL1,0))
#define VLED_OUT_CH2_OFF() (gpio_set_output_value(VLED_OUT_CHANNEL2,0))
#define VLED_OUT_CH3_OFF() (gpio_set_output_value(VLED_OUT_CHANNEL3,0))
#define VLED_OUT_CH4_OFF() (gpio_set_output_value(VLED_OUT_CHANNEL4,0))
#define VLED_OUT_CH5_OFF() (gpio_set_output_value(VLED_OUT_CHANNEL5,0))
#define VLED_OUT_CH6_OFF() (gpio_set_output_value(VLED_OUT_CHANNEL6,0))
/* 音量按键LED输出通道 2个*/
#define KDOWN_LED_PIN IO_PORTB_00
#define KUP_LED_PIN IO_PORTC_03
#define KDOWN_LED_ON() (gpio_set_output_value(KDOWN_LED_PIN,1))
#define KUP_LED_ON() (gpio_set_output_value(KUP_LED_PIN,1))
#define KDOWN_LED_OFF() (gpio_set_output_value(KDOWN_LED_PIN,0))
#define KUP_LED_OFF() (gpio_set_output_value(KUP_LED_PIN,0))
// tx rst PA6
// tx audio status PA7
@ -65,5 +64,10 @@ int kt_music_play_end_handler(void);
void kt_boot_init(void);
void kt_init(void);
/* SD/U盘升级提示SYS_LED 快闪 + 提示音(四通道全开) */
void kt_update_led_start(void);
void kt_update_led_finish(void);
void kt_update_start_remind(void);
void kt_update_finish_remind(u16 result);
#endif

View File

@ -151,8 +151,8 @@ SD1_PLATFORM_DATA_BEGIN(sd1_data)
#elif (TCFG_SD1_DET_MODE == SD_CLK_DECT)
.detect_io_level = TCFG_SD1_DET_IO_LEVEL,//0低电平检测到卡。 1高电平检测到卡
.detect_func = sdmmc_1_clk_detect,//库函数需要detect_io_level元素作为参数。可以自行重写一个检测函数在线返回1不在线返回0即可。
.power = sd_set_power,//库函数使用SDPG引脚。可以自行重写其他的SD卡电源控制函数传入0关电源。传入1开电源。如果电源硬件已固定不可控则该函数无效可以填NULL
/* .power = NULL, */
//.power = sd_set_power,//库函数使用SDPG引脚。可以自行重写其他的SD卡电源控制函数传入0关电源。传入1开电源。如果电源硬件已固定不可控则该函数无效可以填NULL
.power = NULL, /* */
#else
.detect_func = sdmmc_cmd_detect,
.power = NULL,//cmd检测需要全程供电建议用硬件固定电源。当然可以自行写其他的SD卡电源控制函数传入0关电源。传入1开电源。

View File

@ -42,9 +42,9 @@
//*********************************************************************************//
// UART配置 //
//*********************************************************************************//
#define TCFG_UART0_ENABLE DISABLE_THIS_MOUDLE //串口打印模块使能
#define TCFG_UART0_ENABLE ENABLE_THIS_MOUDLE //串口打印模块使能
#define TCFG_UART0_RX_PORT NO_CONFIG_PORT //串口接收脚配置用于打印可以选择NO_CONFIG_PORT
#define TCFG_UART0_TX_PORT IO_PORT_DP //串口发送脚配置
#define TCFG_UART0_TX_PORT IO_PORTC_04 //串口发送脚配置
#define TCFG_UART0_BAUDRATE 1000000 //串口波特率配置
//*********************************************************************************//
@ -58,7 +58,7 @@
//A组IO: SDA: DM SCL: DP B组IO: SDA: PC4 SCL: PC5
//C组IO: SDA: PB4 SCL: PB6 D组IO: SDA: PA5 SCL: PA6
#define TCHFG_HW_I2C_ENABLE ENABLE_THIS_MOUDLE //硬件IIC使能
#define TCHFG_HW_I2C_ENABLE DISABLE_THIS_MOUDLE //硬件IIC使能
#define TCFG_HW_I2C0_PORTS 'B' //选择第几组硬件引脚
#define TCFG_HW_I2C0_CLK 100000 //硬件IIC波特率
@ -757,9 +757,9 @@ DAC硬件上的连接方式,可选的配置:
#define TCFG_DEC_G729_ENABLE ENABLE
#define TCFG_DEC_MP3_ENABLE ENABLE
#define TCFG_DEC_WMA_ENABLE ENABLE
#define TCFG_DEC_WAV_ENABLE 0
#define TCFG_DEC_FLAC_ENABLE 0
#define TCFG_DEC_APE_ENABLE 0
#define TCFG_DEC_WAV_ENABLE 1
#define TCFG_DEC_FLAC_ENABLE 1
#define TCFG_DEC_APE_ENABLE 1
#define TCFG_DEC_M4A_ENABLE 0
#define TCFG_DEC_ALAC_ENABLE 0
#define TCFG_DEC_AMR_ENABLE 0

View File

@ -14,7 +14,7 @@
#define CONFIG_DEBUG_LIB(x) (x & LIB_DEBUG)
//#define CONFIG_DEBUG_ENABLE
#define CONFIG_DEBUG_ENABLE
#ifndef CONFIG_DEBUG_ENABLE
//#define CONFIG_DEBUG_LITE_ENABLE //轻量级打印开关, 默认关闭
@ -39,7 +39,7 @@
#define TCFG_AEC_ENABLE 1
#define TCFG_DEV_UPDATE_IF_NOFILE_ENABLE 1
#define TCFG_DEV_UPDATE_IF_NOFILE_ENABLE 0 // 0:设备上线立即检查升级;1:仅盘内无音乐文件时才检查
#define TCFG_DEV_MANAGER_ENABLE 1

View File

@ -94,6 +94,9 @@ enum {
#define TONE_RECORD TONE_RES_ROOT_PATH"tone/record.*"
#define TONE_SPDIF TONE_RES_ROOT_PATH"tone/spdif.*"
#define TONE_SUP TONE_RES_ROOT_PATH"tone/sup.*"
#define TONE_EUP TONE_RES_ROOT_PATH"tone/eup.*"
#ifdef CONFIG_CPU_BR18
#undef TONE_POWER_ON
#undef TONE_POWER_OFF

View File

@ -186,7 +186,7 @@ int app_common_key_msg_deal(struct sys_event *event)
break;
case KEY_VOL_UP:
log_info("COMMON KEY_VOL_UP\n");
printf("COMMON KEY_VOL_UP\n");
if (!tone_get_status()) {
app_audio_volume_up(1);
printf("common vol+: %d", app_audio_get_volume(APP_AUDIO_CURRENT_STATE));
@ -206,7 +206,7 @@ int app_common_key_msg_deal(struct sys_event *event)
break;
case KEY_VOL_DOWN:
log_info("COMMON KEY_VOL_DOWN\n");
printf("COMMON KEY_VOL_DOWN\n");
app_audio_volume_down(1);
printf("common vol-: %d", app_audio_get_volume(APP_AUDIO_CURRENT_STATE));
#if (TCFG_DEC2TWS_ENABLE)

View File

@ -662,46 +662,31 @@ static int music_key_event_opr(struct sys_event *event)
}
break;
#endif
case KEY_USER_KEY_1:
printf("KEY_USER_KEY_1\n");
//优先播放sd1/01.mp3其次播放udisk0/01.mp3,并打开音频通道1如果播放失败则不做任何反应
//如果播放成功1-打开VOLTAGE_CHANNEL1,2-打开VLED_OUT_CH1
//播放完成后关闭VOLTAGE_CHANNEL1,VLED_OUT_CH1
err = kt_key_event_handler(KEY_USER_KEY_1);
break;
case KEY_USER_KEY_2:
printf("KEY_USER_KEY_2\n");
//优先播放sd1/02.mp3其次播放udisk0/02.mp3,并打开音频通道2如果播放失败则不做任何反应
//如果播放成功1-打开VOLTAGE_CHANNEL2,2-打开VLED_OUT_CH2
//播放完成后关闭VOLTAGE_CHANNEL2,VLED_OUT_CH2
err = kt_key_event_handler(KEY_USER_KEY_2);
break;
case KEY_USER_KEY_3:
printf("KEY_USER_KEY_3\n");
//优先播放sd1/03.mp3其次播放udisk0/03.mp3,并打开音频通道3如果播放失败则不做任何反应
//如果播放成功1-打开VOLTAGE_CHANNEL3,2-打开VLED_OUT_CH3
//播放完成后关闭VOLTAGE_CHANNEL3,VLED_OUT_CH3
err = kt_key_event_handler(KEY_USER_KEY_3);
break;
case KEY_USER_KEY_4:
printf("KEY_USER_KEY_4\n");
//优先播放sd1/04.mp3其次播放udisk0/04.mp3,并打开音频通道4如果播放失败则不做任何反应
//如果播放成功1-打开VOLTAGE_CHANNEL4,2-打开VLED_OUT_CH4
//播放完成后关闭VOLTAGE_CHANNEL4,VLED_OUT_CH4
err = kt_key_event_handler(KEY_USER_KEY_4);
break;
case KEY_USER_KEY_5:
printf("KEY_USER_KEY_5\n");
//优先播放sd1/05.mp3其次播放udisk0/05.mp3,并打开音频通道5如果播放失败则不做任何反应
//如果播放成功1-打开VOLTAGE_CHANNEL5,2-打开VLED_OUT_CH5
//播放完成后关闭VOLTAGE_CHANNEL5,VLED_OUT_CH5
//改为音量+,可对接KEY_VOL_UP,同时KUP_LED_PIN常亮3秒后进入慢闪
err = kt_key_event_handler(KEY_USER_KEY_5);
break;
case KEY_USER_KEY_6:
printf("KEY_USER_KEY_6\n");
//优先播放sd1/06.mp3其次播放udisk0/06.mp3,并打开音频通道6如果播放失败则不做任何反应
//如果播放成功1-打开VOLTAGE_CHANNEL6,2-打开VLED_OUT_CH6
//播放完成后关闭VOLTAGE_CHANNEL6,VLED_OUT_CH6
//改为音量-,可对接KEY_VOL_DOWN,同时KDOWN_LED_PIN常亮3秒后进入慢闪
err = kt_key_event_handler(KEY_USER_KEY_6);
break;
case KEY_MUSIC_PLAYER_START:

View File

@ -227,7 +227,7 @@ static void poweroff_app_start()
int ret = false;
if (app_var.goto_poweroff_flag) {
UI_SHOW_WINDOW(ID_WINDOW_POWER_OFF);
syscfg_write(CFG_MUSIC_VOL, &app_var.music_volume, 1);
/* 音量不记忆:关机不写 CFG_MUSIC_VOL */
os_taskq_flush();
#if (CONFIG_TWS_POWEROFF_SAME_TIME)

View File

@ -116,30 +116,16 @@ REGISTER_UPDATE_TARGET(audio_update_target) = {
*************************************************************
*/
static void app_audio_volume_save_do(void *priv)
{
//log_info("app_audio_volume_save_do %d\n", __this->save_vol_cnt);
local_irq_disable();
if (++__this->save_vol_cnt >= 5) {
sys_timer_del(__this->save_vol_timer);
__this->save_vol_timer = 0;
__this->save_vol_cnt = 0;
local_irq_enable();
log_info("VOL_SAVE\n");
syscfg_write(CFG_MUSIC_VOL, &app_var.music_volume, 1);
return;
}
local_irq_enable();
}
/*
*************************************************************
*
* audio volume save VM
*
*************************************************************
*/
static void app_audio_volume_change(void)
{
local_irq_disable();
__this->save_vol_cnt = 0;
if (__this->save_vol_timer == 0) {
__this->save_vol_timer = sys_timer_add(NULL, app_audio_volume_save_do, 1000);//要使用软件定时器 中断里不能操作vm
}
local_irq_enable();
}

View File

@ -75,7 +75,7 @@
TCFG_AUDIO_DAC_CONNECT_MODE == DAC_OUTPUT_DUAL_LR_DIFF)
#define MAX_ANA_VOL (21)
#else
#define MAX_ANA_VOL (28)
#define MAX_ANA_VOL (30)
#endif/*TCFG_AUDIO_DAC_CONNECT_MODE*/
#define MAX_COM_VOL (22) // 具体数值应小于联合音量等级的数组大小 (combined_vol_list)
@ -96,7 +96,7 @@
#endif
#define SYS_DEFAULT_VOL 0//SYS_MAX_VOL //(SYS_MAX_VOL/2)
#define SYS_DEFAULT_VOL 23//SYS_MAX_VOL //(SYS_MAX_VOL/2)
#define SYS_DEFAULT_TONE_VOL 18 //(SYS_MAX_VOL)
#define SYS_DEFAULT_SIN_VOL 17

View File

@ -1,26 +1,5 @@
fat_vfs_ops
@ -52,7 +31,19 @@ mp3_decoder
wma_decoder
flac_decoder
ape_decoder
g729_decoder
wav_decoder
cvsd_encoder

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -1,27 +1,6 @@
rem @echo off
@echo *****************************************************************

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -183,17 +183,6 @@ objs/apps/common/config/bt_profile_config.c.o
-r=objs/apps/common/config/bt_profile_config.c.o,adt_profile_support,pl
objs/apps/common/config/ci_transport_uart.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
-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
@ -225,7 +214,6 @@ objs/apps/common/dev_manager/dev_manager.c.o
-r=objs/apps/common/dev_manager/dev_manager.c.o,strlen,l
-r=objs/apps/common/dev_manager/dev_manager.c.o,sprintf,l
-r=objs/apps/common/dev_manager/dev_manager.c.o,fscan_interrupt,l
-r=objs/apps/common/dev_manager/dev_manager.c.o,dev_update_check,l
-r=objs/apps/common/dev_manager/dev_manager.c.o,free,l
-r=objs/apps/common/dev_manager/dev_manager.c.o,dev_manager_set_valid,pl
-r=objs/apps/common/dev_manager/dev_manager.c.o,dev_manager_set_valid_by_logo,pl
@ -272,6 +260,7 @@ objs/apps/common/dev_manager/dev_update.c.o
-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,kt_update_start_remind,l
-r=objs/apps/common/dev_manager/dev_update.c.o,app_active_update_task_init,l
-r=objs/apps/common/dev_manager/dev_update.c.o,update_mode_api_v2,l
-r=objs/apps/common/dev_manager/dev_update.c.o,strlen,l
@ -1522,14 +1511,11 @@ objs/apps/common/update/update.c.o
-r=objs/apps/common/update/update.c.o,log_print,l
-r=objs/apps/common/update/update.c.o,puts,l
-r=objs/apps/common/update/update.c.o,led_update_start,pl
-r=objs/apps/common/update/update.c.o,pwm_led_mode_set,l
-r=objs/apps/common/update/update.c.o,kt_update_led_start,l
-r=objs/apps/common/update/update.c.o,led_update_finish,pl
-r=objs/apps/common/update/update.c.o,kt_update_led_finish,l
-r=objs/apps/common/update/update.c.o,update_result_deal,pl
-r=objs/apps/common/update/update.c.o,wdt_clear,l
-r=objs/apps/common/update/update.c.o,app_audio_set_volume,l
-r=objs/apps/common/update/update.c.o,get_max_sys_vol,l
-r=objs/apps/common/update/update.c.o,tone_play,l
-r=objs/apps/common/update/update.c.o,os_time_dly,l
-r=objs/apps/common/update/update.c.o,kt_update_finish_remind,l
-r=objs/apps/common/update/update.c.o,clr_update_ram_info,pl
-r=objs/apps/common/update/update.c.o,set_loader_start_addr,pl
-r=objs/apps/common/update/update.c.o,update_close_hw,pl
@ -1884,13 +1870,35 @@ objs/apps/kaotings/kt.c.o
-r=objs/apps/kaotings/kt.c.o,gpio_set_direction,l
-r=objs/apps/kaotings/kt.c.o,gpio_set_output_value,l
-r=objs/apps/kaotings/kt.c.o,gpio_set_die,l
-r=objs/apps/kaotings/kt.c.o,kt_update_led_start,pl
-r=objs/apps/kaotings/kt.c.o,printf,l
-r=objs/apps/kaotings/kt.c.o,kt_update_led_finish,pl
-r=objs/apps/kaotings/kt.c.o,kt_update_start_remind,pl
-r=objs/apps/kaotings/kt.c.o,kt_update_finish_remind,pl
-r=objs/apps/kaotings/kt.c.o,kt_init,pl
-r=objs/apps/kaotings/kt.c.o,kt_music_play_end_handler,pl
-r=objs/apps/kaotings/kt.c.o,printf,l
-r=objs/apps/kaotings/kt.c.o,music_player_stop,l
-r=objs/apps/kaotings/kt.c.o,kt_key_event_handler,pl
-r=objs/apps/kaotings/kt.c.o,music_player_play_by_path,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,tone_play_stop,l
-r=objs/apps/kaotings/kt.c.o,music_player_get_play_status,l
-r=objs/apps/kaotings/kt.c.o,os_time_dly,l
-r=objs/apps/kaotings/kt.c.o,app_audio_output_start,l
-r=objs/apps/kaotings/kt.c.o,app_audio_state_switch,l
-r=objs/apps/kaotings/kt.c.o,get_max_sys_vol,l
-r=objs/apps/kaotings/kt.c.o,app_audio_set_volume,l
-r=objs/apps/kaotings/kt.c.o,tone_play,l
-r=objs/apps/kaotings/kt.c.o,wdt_clear,l
-r=objs/apps/kaotings/kt.c.o,tone_get_dec_status,l
-r=objs/apps/kaotings/kt.c.o,tone_get_status,l
-r=objs/apps/kaotings/kt.c.o,app_task_put_key_msg,l
-r=objs/apps/kaotings/kt.c.o,app_audio_get_volume,l
-r=objs/apps/kaotings/kt.c.o,music_player_play_next,l
-r=objs/apps/kaotings/kt.c.o,sprintf,l
-r=objs/apps/kaotings/kt.c.o,music_player_play_by_path,l
-r=objs/apps/kaotings/kt.c.o,music_player_play_first_file,l
-r=objs/apps/kaotings/kt.c.o,puts,l
objs/apps/soundbox/board/br23/board_ac6083a/board_ac6083a.c.o
objs/apps/soundbox/board/br23/board_ac6083a/key_table/adkey_table.c.o
objs/apps/soundbox/board/br23/board_ac6083a/key_table/iokey_table.c.o
@ -1964,6 +1972,7 @@ objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,gSensor_wkupup_enable,pl
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,power_wakeup_index_enable,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,debug_uart_init,pl
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,uart_init,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,get_led_config,pl
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,get_tone_config,pl
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,get_sys_default_vol,pl
@ -1978,6 +1987,7 @@ objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,check_power_on_voltage,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,dev_manager_init,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,power_set_mode,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,gpio_set_die,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,board_set_soft_poweroff,pl
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,spi_get_port,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,gpio_write,l
@ -1989,7 +1999,6 @@ objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,gpio_set_pull_up,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,gpio_set_pull_down,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,gpio_set_direction,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,gpio_set_die,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,gpio_set_dieh,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,P33_CON_SET,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,sdpg_config,l
@ -2002,7 +2011,6 @@ objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,power_keep_dacvdd_en,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,sdmmc_1_clk_detect,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,sdmmc_1_port_init,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,sd_set_power,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,key_driver_init,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,power_wakeup_init,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,status_config,pl
@ -2012,7 +2020,6 @@ objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,adc_data,pl
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,adkey_data,pl
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,otg_data,pl
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,hw_iic_cfg,pl
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,sd_dev_ops,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,usb_dev_ops,l
-r=objs/apps/soundbox/board/br23/board_ac695x_demo/board_ac695x_demo.c.o,mass_storage_ops,l
@ -2130,6 +2137,8 @@ objs/apps/soundbox/common/dev_status.c.o
-r=objs/apps/soundbox/common/dev_status.c.o,printf,l
-r=objs/apps/soundbox/common/dev_status.c.o,dev_manager_add,l
-r=objs/apps/soundbox/common/dev_status.c.o,music_task_dev_online_start,l
-r=objs/apps/soundbox/common/dev_status.c.o,app_check_curr_task,l
-r=objs/apps/soundbox/common/dev_status.c.o,dev_update_check,l
-r=objs/apps/soundbox/common/dev_status.c.o,dev_manager_del,l
-r=objs/apps/soundbox/common/dev_status.c.o,mult_sd_online_mount_before,l
-r=objs/apps/soundbox/common/dev_status.c.o,mult_usb_mount_before,l
@ -3252,7 +3261,6 @@ objs/apps/soundbox/task_manager/power_off/power_off.c.o
-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,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,os_taskq_flush,l
-r=objs/apps/soundbox/task_manager/power_off/power_off.c.o,tone_play_with_callback_by_name,l
-r=objs/apps/soundbox/task_manager/power_off/power_off.c.o,goto_poweroff_first_flag,pl
@ -3554,8 +3562,6 @@ objs/cpu/br23/audio_common/app_audio.c.o
-r=objs/cpu/br23/audio_common/app_audio.c.o,local_irq_disable,l
-r=objs/cpu/br23/audio_common/app_audio.c.o,audio_dac_vol_set,l
-r=objs/cpu/br23/audio_common/app_audio.c.o,local_irq_enable,l
-r=objs/cpu/br23/audio_common/app_audio.c.o,sys_timer_add,l
-r=objs/cpu/br23/audio_common/app_audio.c.o,sys_timer_del,l
-r=objs/cpu/br23/audio_common/app_audio.c.o,audio_update_target,pl
-r=objs/cpu/br23/audio_common/app_audio.c.o,dac_hdl,pl
-r=objs/cpu/br23/audio_common/app_audio.c.o,app_var,l
@ -4673,7 +4679,7 @@ objs/cpu/br23/iic_hw.c.o
-r=objs/cpu/br23/iic_hw.c.o,hw_iic_slave_tx_check_ack,pl
-r=objs/cpu/br23/iic_hw.c.o,iic_disable_for_ota,pl
-r=objs/cpu/br23/iic_hw.c.o,gpio_set_die,l
-r=objs/cpu/br23/iic_hw.c.o,hw_iic_cfg,l
-r=objs/cpu/br23/iic_hw.c.o,hw_iic_cfg,
-r=objs/cpu/br23/iic_hw.c.o,iic_update_target,pl
objs/cpu/br23/iic_slave_test.c.o
objs/cpu/br23/iic_soft.c.o
@ -4854,6 +4860,8 @@ objs/cpu/br23/pwm_led.c.o
-r=objs/cpu/br23/pwm_led.c.o,power_param,l
objs/cpu/br23/setup.c.o
-r=objs/cpu/br23/setup.c.o,cpu_assert_debug,pl
-r=objs/cpu/br23/setup.c.o,log_flush,l
-r=objs/cpu/br23/setup.c.o,local_irq_disable,l
-r=objs/cpu/br23/setup.c.o,timer,pl
-r=objs/cpu/br23/setup.c.o,sys_timer_dump_time,l
-r=objs/cpu/br23/setup.c.o,test_fun,pl
@ -4869,6 +4877,8 @@ objs/cpu/br23/setup.c.o
-r=objs/cpu/br23/setup.c.o,clk_early_init,l
-r=objs/cpu/br23/setup.c.o,port_init,l
-r=objs/cpu/br23/setup.c.o,tick_timer_init,l
-r=objs/cpu/br23/setup.c.o,debug_uart_init,l
-r=objs/cpu/br23/setup.c.o,log_early_init,l
-r=objs/cpu/br23/setup.c.o,printf,l
-r=objs/cpu/br23/setup.c.o,clock_dump,l
-r=objs/cpu/br23/setup.c.o,reset_source_dump,l
@ -4878,7 +4888,6 @@ objs/cpu/br23/setup.c.o
-r=objs/cpu/br23/setup.c.o,debug_init,l
-r=objs/cpu/br23/setup.c.o,sys_timer_init,l
-r=objs/cpu/br23/setup.c.o,__crc16_mutex_init,l
-r=objs/cpu/br23/setup.c.o,p33_soft_reset,l
-r=objs/cpu/br23/setup.c.o,p33_or_1byte,l
-r=objs/cpu/br23/setup.c.o,puts,l
-r=objs/cpu/br23/setup.c.o,power_reset_src,pl
@ -6860,7 +6869,7 @@ include_lib/liba/br23/system.a.llvm.1326370.init.c
-r=include_lib/liba/br23/system.a.llvm.1326370.init.c,late_initcall_begin,
-r=include_lib/liba/br23/system.a.llvm.1326370.init.c,late_initcall_end,
include_lib/liba/br23/system.a.llvm.1390042.puthex.c
-r=include_lib/liba/br23/system.a.llvm.1390042.puthex.c,putchar,l
-r=include_lib/liba/br23/system.a.llvm.1390042.puthex.c,putchar,pl
-r=include_lib/liba/br23/system.a.llvm.1390042.puthex.c,log_output_lock,l
-r=include_lib/liba/br23/system.a.llvm.1390042.puthex.c,log_output_start,l
-r=include_lib/liba/br23/system.a.llvm.1390042.puthex.c,log_putchar,l
@ -6868,16 +6877,16 @@ include_lib/liba/br23/system.a.llvm.1390042.puthex.c
-r=include_lib/liba/br23/system.a.llvm.1390042.puthex.c,log_putbyte,l
-r=include_lib/liba/br23/system.a.llvm.1390042.puthex.c,log_output_unlock,l
-r=include_lib/liba/br23/system.a.llvm.1390042.puthex.c,put_u4hex,pl
-r=include_lib/liba/br23/system.a.llvm.1390042.puthex.c,put_u16hex,l
-r=include_lib/liba/br23/system.a.llvm.1390042.puthex.c,put_u8hex,l
-r=include_lib/liba/br23/system.a.llvm.1390042.puthex.c,put_u32hex,l
-r=include_lib/liba/br23/system.a.llvm.1390042.puthex.c,put_u16hex,pl
-r=include_lib/liba/br23/system.a.llvm.1390042.puthex.c,put_u8hex,pl
-r=include_lib/liba/br23/system.a.llvm.1390042.puthex.c,put_u32hex,pl
-r=include_lib/liba/br23/system.a.llvm.1390042.puthex.c,putbyte,l
-r=include_lib/liba/br23/system.a.llvm.1390042.puthex.c,put_buf,l
-r=include_lib/liba/br23/system.a.llvm.1390042.puthex.c,put_buf,pl
-r=include_lib/liba/br23/system.a.llvm.1390042.puthex.c,log_put_u8hex,l
-r=include_lib/liba/br23/system.a.llvm.1390042.puthex.c,printf_buf,pl
include_lib/liba/br23/system.a.llvm.1397010.printf-stdarg.c
-r=include_lib/liba/br23/system.a.llvm.1397010.printf-stdarg.c,print,pl
-r=include_lib/liba/br23/system.a.llvm.1397010.printf-stdarg.c,puts,l
-r=include_lib/liba/br23/system.a.llvm.1397010.printf-stdarg.c,puts,pl
-r=include_lib/liba/br23/system.a.llvm.1397010.printf-stdarg.c,log_output_lock,l
-r=include_lib/liba/br23/system.a.llvm.1397010.printf-stdarg.c,log_output_start,l
-r=include_lib/liba/br23/system.a.llvm.1397010.printf-stdarg.c,strlen,l
@ -6886,8 +6895,8 @@ include_lib/liba/br23/system.a.llvm.1397010.printf-stdarg.c
-r=include_lib/liba/br23/system.a.llvm.1397010.printf-stdarg.c,log_putbyte,l
-r=include_lib/liba/br23/system.a.llvm.1397010.printf-stdarg.c,log_print_time,l
-r=include_lib/liba/br23/system.a.llvm.1397010.printf-stdarg.c,log_output_unlock,l
-r=include_lib/liba/br23/system.a.llvm.1397010.printf-stdarg.c,printf,l
-r=include_lib/liba/br23/system.a.llvm.1397010.printf-stdarg.c,assert_printf,l
-r=include_lib/liba/br23/system.a.llvm.1397010.printf-stdarg.c,printf,pl
-r=include_lib/liba/br23/system.a.llvm.1397010.printf-stdarg.c,assert_printf,pl
-r=include_lib/liba/br23/system.a.llvm.1397010.printf-stdarg.c,local_irq_disable,l
-r=include_lib/liba/br23/system.a.llvm.1397010.printf-stdarg.c,snprintf,pl
-r=include_lib/liba/br23/system.a.llvm.1397010.printf-stdarg.c,vsnprintf,pl
@ -6903,12 +6912,12 @@ include_lib/liba/br23/system.a.llvm.1425914.log.c
-r=include_lib/liba/br23/system.a.llvm.1425914.log.c,jiffies_msec,l
-r=include_lib/liba/br23/system.a.llvm.1425914.log.c,sprintf,l
-r=include_lib/liba/br23/system.a.llvm.1425914.log.c,log_print_time,pl
-r=include_lib/liba/br23/system.a.llvm.1425914.log.c,log_putbyte,l
-r=include_lib/liba/br23/system.a.llvm.1425914.log.c,log_putbyte,pl
-r=include_lib/liba/br23/system.a.llvm.1425914.log.c,log_output_lock,pl
-r=include_lib/liba/br23/system.a.llvm.1425914.log.c,os_mutex_pend,l
-r=include_lib/liba/br23/system.a.llvm.1425914.log.c,os_mutex_post,l
-r=include_lib/liba/br23/system.a.llvm.1425914.log.c,log_output_unlock,pl
-r=include_lib/liba/br23/system.a.llvm.1425914.log.c,log_print,l
-r=include_lib/liba/br23/system.a.llvm.1425914.log.c,log_print,pl
-r=include_lib/liba/br23/system.a.llvm.1425914.log.c,log_output_start,pl
-r=include_lib/liba/br23/system.a.llvm.1425914.log.c,log_putchar,pl
-r=include_lib/liba/br23/system.a.llvm.1425914.log.c,lbuf_free,l
@ -7673,6 +7682,56 @@ include_lib/liba/br23/media.a.llvm.384520.wma_decoder.c
-r=include_lib/liba/br23/media.a.llvm.384520.wma_decoder.c,wma_mem_ext,
-r=include_lib/liba/br23/media.a.llvm.384520.wma_decoder.c,log_tag_const_d_AUDIO_DECODER,l
-r=include_lib/liba/br23/media.a.llvm.384520.wma_decoder.c,config_decoder_ff_fr_end_return_event_end,l
include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,ape_fast_forward,pl
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,log_print,l
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,local_irq_disable,l
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,local_irq_enable,l
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,ape_fast_rewind,pl
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,ape_decoder_get_play_time,pl
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,ape_decoder_close,pl
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,free,l
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,ape_decoder_init,pl
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,malloc,l
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,printf,l
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,cpu_assert_debug,l
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,get_ape_ops,l
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,p33_soft_reset,l
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,audio_decoder_read_data,l
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,audio_decoder_dual_switch,l
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,audio_decoder_put_output_buff,l
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,audio_decoder_get_input_data_len,l
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,log_tag_const_i_AUDIO_DECODER,l
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,config_ape_dec_use_malloc,l
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,ape_decoder,plx
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,config_asser,l
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,log_tag_const_d_AUDIO_DECODER,l
-r=include_lib/liba/br23/media.a.llvm.443156.ape_decoder.c,config_decoder_ff_fr_end_return_event_end,l
include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,wav_fast_forward,pl
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,log_print,l
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,local_irq_disable,l
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,local_irq_enable,l
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,wav_fast_rewind,pl
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,wav_decoder_get_play_time,pl
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,wav_decoder_close,pl
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,free,l
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,wav_decoder_init,pl
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,malloc,l
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,printf,l
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,cpu_assert_debug,l
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,get_wav_ops,l
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,p33_soft_reset,l
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,audio_decoder_read_data,l
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,audio_decoder_dual_switch,l
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,audio_decoder_put_output_buff,l
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,audio_decoder_get_input_data_len,l
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,log_tag_const_i_AUDIO_DECODER,l
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,config_wav_dec_use_malloc,l
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,wav_decoder,plx
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,config_asser,l
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,log_tag_const_d_AUDIO_DECODER,l
-r=include_lib/liba/br23/media.a.llvm.573812.wav_decoder.c,config_decoder_ff_fr_end_return_event_end,l
include_lib/liba/br23/media.a.llvm.631880.g729_decoder.c
-r=include_lib/liba/br23/media.a.llvm.631880.g729_decoder.c,g729_decoder_init,pl
-r=include_lib/liba/br23/media.a.llvm.631880.g729_decoder.c,get_g729dec_ops,l
@ -7713,6 +7772,31 @@ include_lib/liba/br23/media.a.llvm.649304.mp3_decoder.c
-r=include_lib/liba/br23/media.a.llvm.649304.mp3_decoder.c,log_tag_const_d_AUDIO_DECODER,l
-r=include_lib/liba/br23/media.a.llvm.649304.mp3_decoder.c,config_mp3_dec_speed_mode,l
-r=include_lib/liba/br23/media.a.llvm.649304.mp3_decoder.c,config_decoder_ff_fr_end_return_event_end,l
include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,flac_fast_forward,pl
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,log_print,l
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,local_irq_disable,l
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,local_irq_enable,l
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,flac_fast_rewind,pl
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,flac_decoder_get_play_time,pl
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,flac_decoder_close,pl
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,free,l
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,flac_decoder_init,pl
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,malloc,l
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,printf,l
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,cpu_assert_debug,l
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,get_flac_ops,l
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,p33_soft_reset,l
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,audio_decoder_read_data,l
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,audio_decoder_dual_switch,l
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,audio_decoder_put_output_buff,l
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,audio_decoder_get_input_data_len,l
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,log_tag_const_i_AUDIO_DECODER,l
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,config_flac_dec_use_malloc,l
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,flac_decoder,plx
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,config_asser,l
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,log_tag_const_d_AUDIO_DECODER,l
-r=include_lib/liba/br23/media.a.llvm.708092.flac_decoder.c,config_decoder_ff_fr_end_return_event_end,l
include_lib/liba/br23/media.a.llvm.751856.pcm_decoder.c
-r=include_lib/liba/br23/media.a.llvm.751856.pcm_decoder.c,pcm_decoder_start,pl
-r=include_lib/liba/br23/media.a.llvm.751856.pcm_decoder.c,pcm_decoder_run,pl
@ -9949,6 +10033,150 @@ include_lib/liba/br23/wtg_dec_lib.a.llvm.80412.oper_32b.c
-r=include_lib/liba/br23/wtg_dec_lib.a.llvm.80412.oper_32b.c,L_mult,l
-r=include_lib/liba/br23/wtg_dec_lib.a.llvm.80412.oper_32b.c,mult,l
-r=include_lib/liba/br23/wtg_dec_lib.a.llvm.80412.oper_32b.c,Mpy_32_16,pl
include_lib/liba/br23/wav_dec_lib.a.llvm.22264.testwav.c
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.22264.testwav.c,set_buf,pl
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.22264.testwav.c,file_format_check,l
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.22264.testwav.c,get_wav_ops,pl
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.22264.testwav.c,wf_file_api_fun,l
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.22264.testwav.c,wav_decode,l
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.22264.testwav.c,wav_decoder_ops,pl
include_lib/liba/br23/wav_dec_lib.a.llvm.38452.wavdec_api.c
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.38452.wavdec_api.c,wf_file_api_fun,pl
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.38452.wavdec_api.c,file_format_check,pl
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.38452.wavdec_api.c,wav_decode,pl
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.38452.wavdec_api.c,ima_adpcm_decoder,l
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.38452.wavdec_api.c,ms_adpcm_decoder,l
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.38452.wavdec_api.c,wavpcm_floatdecoder,l
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.38452.wavdec_api.c,wavpcm_decoder,l
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.38452.wavdec_api.c,WAV_MAX_BITRATEV,l
include_lib/liba/br23/wav_dec_lib.a.llvm.64828.msadpcmdec.c
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.64828.msadpcmdec.c,ms_adpcm_decoder,pl
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.64828.msadpcmdec.c,wf_file_api_fun,l
include_lib/liba/br23/wav_dec_lib.a.llvm.324.ima_adpcm.c
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.324.ima_adpcm.c,ima_adpcm_decoder,pl
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.324.ima_adpcm.c,wf_file_api_fun,l
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.324.ima_adpcm.c,wavpcm_decoder,pl
-r=include_lib/liba/br23/wav_dec_lib.a.llvm.324.ima_adpcm.c,wavpcm_floatdecoder,pl
include_lib/liba/br23/flac_dec_lib.a.llvm.906.mtst_flac.c
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.906.mtst_flac.c,flac_decoder_open,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.906.mtst_flac.c,flac_output_data,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.906.mtst_flac.c,str_flac_bp_buf,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.906.mtst_flac.c,renew_flac_bp_buf,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.906.mtst_flac.c,flac_cheak_log,l
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.906.mtst_flac.c,get_flac_ops,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.906.mtst_flac.c,flac_dec_fileStatus,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.906.mtst_flac.c,FLAC_fread,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.906.mtst_flac.c,updata_bitstream,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.906.mtst_flac.c,flac_get_bits,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.906.mtst_flac.c,flac_get_sbits,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.906.mtst_flac.c,flac_skip_bits,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.906.mtst_flac.c,align_flac_get_bits,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.906.mtst_flac.c,flac_init,l
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.906.mtst_flac.c,flac_decode_block,l
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.906.mtst_flac.c,flac_decoder_ops,pl
include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,dsp_oputdata,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,flac_output_data,l
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,dsp_handle,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,flac_av_log2,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,flac_fl1_find,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,find_first_1,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,updata_bitstream,l
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,flac_get_bits,l
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,get_utf8,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,decode_residuals,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,flac_get_sbits,l
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,flac_dec_fileStatus,l
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,decode_subframe_fixed,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,decode_subframe_lpc,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,decode_subframe,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,bswap_32,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,ff_id3v2_match_for_flac,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,flac_cal_id3v2_tag_len,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,flac_header,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,FLAC_fread,l
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,flac_init,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,flac_cheak_log,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,flac_frame_header,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,flac_skip_bits,l
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,get_flac_frstart_pos,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,flac_str_frame,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,bp_str_nframe_info,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,align_flac_get_bits,l
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,flac_decode_block,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,res_fix_tab,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,sample_rate_table,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,sample_size_table,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,blocksize_table,pl
-r=include_lib/liba/br23/flac_dec_lib.a.llvm.29698.flacdec.c,MASK_FULL,pl
include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,ape_decoder_open,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,ape_output_data,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,get_ape_ops,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,ape_dec_fileStatus,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,APE_fseek,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,fill_buf_online,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,str_bp_buf,l
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,fill_buf,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,get_bitbye,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,get_bytes,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,get_le16,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,get_le32,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,url_fseek,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,get_buffer,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,freebuf,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,fread32,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,fread8,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,APE_DEC_INIT,l
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,ape_read_seektab,l
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,ape_decode_block,l
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,renew_bp_buf,l
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.60324.mtst_ape.c,ape_decoder_ops,pl
include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,ff_id3v2_match_for_ape,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,ape_cal_id3v2_tag_len,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,ape_read_header,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,APE_fseek,l
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,freebuf,l
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,get_le32,l
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,get_buffer,l
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,get_le16,l
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,ape_dec_fileStatus,l
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,url_fseek,l
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,init_apeinfo,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,ape_read_seektab,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,str_bp_buf,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,normalize_fread_len,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,fread8_new,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,fill_buf,l
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,range_dec_normalize,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,range_decode_bits,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,range_get_symbol,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,ape_decode_value_fvlow,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,ape_decode_value_fvhigh,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,entropy_decode,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,predictor_decode_mono,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,ape_apply_filters,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,do_apply_filter,l
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,init_frame_decoder,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,fread32,l
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,ape_unpack_mono,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,ape_output_data,l
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,ape_unpack_stereo,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,predictor_decode_stereo,l
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,ape_decode_frame,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,fread8,l
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,renew_bp_buf,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,ape_decode_block,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,APE_DEC_INIT,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,ape_filter_orders,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,ape_filter_fracbits,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,counts_3970,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,counts_diff_3970,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,counts_3980,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,counts_diff_3980,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,K_SUM_MIN_BOUNDARY,pl
-r=include_lib/liba/br23/ape_dec_lib.a.llvm.1104.apedec.c,initial_coeffs,pl
include_lib/liba/br23/bfilterfun_lib.a.llvm.266.B_filter.c
-r=include_lib/liba/br23/bfilterfun_lib.a.llvm.266.B_filter.c,B_iircal,pl
-r=include_lib/liba/br23/bfilterfun_lib.a.llvm.266.B_filter.c,B_comput_correlataionS,pl

File diff suppressed because it is too large Load Diff

Binary file not shown.

67
cpubr23toolsdownload.bat Normal file
View File

@ -0,0 +1,67 @@
rem @echo off
@echo *****************************************************************
@echo SDK BR23
@echo *****************************************************************
@echo %date%
cd %~dp0
set OBJDUMP=C:\JL\pi32\bin\llvm-objdump.exe
set OBJCOPY=C:\JL\pi32\bin\llvm-objcopy.exe
set ELFFILE=sdk.elf
REM %OBJDUMP% -D -address-mask=0x1ffffff -print-dbg %ELFFILE% > sdk.lst
%OBJCOPY% -O binary -j .text %ELFFILE% text.bin
%OBJCOPY% -O binary -j .data %ELFFILE% data.bin
%OBJCOPY% -O binary -j .data_code %ELFFILE% data_code.bin
%OBJCOPY% -O binary -j .overlay_aec %ELFFILE% aeco.bin
%OBJCOPY% -O binary -j .overlay_wav %ELFFILE% wav.bin
%OBJCOPY% -O binary -j .overlay_ape %ELFFILE% ape.bin
%OBJCOPY% -O binary -j .overlay_flac %ELFFILE% flac.bin
%OBJCOPY% -O binary -j .overlay_m4a %ELFFILE% m4a.bin
%OBJCOPY% -O binary -j .overlay_amr %ELFFILE% amr.bin
%OBJCOPY% -O binary -j .overlay_dts %ELFFILE% dts.bin
%OBJCOPY% -O binary -j .overlay_fm %ELFFILE% fmo.bin
%OBJCOPY% -O binary -j .overlay_mp3 %ELFFILE% mp3o.bin
%OBJCOPY% -O binary -j .overlay_wma %ELFFILE% wmao.bin
remove_tailing_zeros -i aeco.bin -o aec.bin -mark ff
remove_tailing_zeros -i fmo.bin -o fm.bin -mark ff
remove_tailing_zeros -i mp3o.bin -o mp3.bin -mark ff
remove_tailing_zeros -i wmao.bin -o wma.bin -mark ff
%OBJDUMP% -section-headers -address-mask=0x1ffffff %ELFFILE%
%OBJDUMP% -t %ELFFILE% > symbol_tbl.txt
copy /b text.bin+data.bin+data_code.bin+aec.bin+wav.bin+ape.bin+flac.bin+m4a.bin+amr.bin+dts.bin+fm.bin+mp3.bin+wma.bin+bank.bin app.bin
del aeco.bin
del wav.bin
del ape.bin
del flac.bin
del m4a.bin
del amr.bin
del dts.bin
del fmo.bin
del mp3o.bin
del wmao.bin
del aec.bin
del fm.bin
del mp3.bin
del wma.bin
del data.bin
del data_code.bin
del text.bin
del *.bc
copy .\effect_file\music_base.bin eq_cfg_hw.bin
download\standard\download.bat

BIN
tone/eup.mp3 Normal file

Binary file not shown.

BIN
tone/eup.wtg Normal file

Binary file not shown.

BIN
tone/sup.mp3 Normal file

Binary file not shown.

BIN
tone/sup.wtg Normal file

Binary file not shown.