1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #include "include.h"
- #include "api.h"
- #define TRACE_EN 0
- #if TRACE_EN
- #define TRACE(...) printf(__VA_ARGS__)
- #define TRACE_R(...) print_r(__VA_ARGS__)
- #else
- #define TRACE(...)
- #define TRACE_R(...)
- #endif // TRACE_EN
- //下列是可重定义库中的变量
- //const uint8_t cfg_bt_a2dp_media_discard = 7; //播放音乐过程中,唤出语音助手后恢复音乐时,部分手机有一点杂音,需要丢几帧音乐数据
- const uint8_t cfg_a2dp_sbc_max_bitpool = 39; //设置SBC格式最大码率,默认值为53,可选值24~53(建议不低于39)
- //const uint32_t cfg_a2dp_aac_max_bitrate = 128000; //设置AAC格式最大码率,默认值为0(不限制),可选值128000, 192000, 256000,
- uint16_t cfg_bt_music_normal_latency = 180; //设置蓝牙普通模式延迟,默认值280ms,可选值100~450
- uint16_t cfg_bt_music_low_latency = 60; //设置蓝牙游戏模式延迟,默认值60ms,可选值60~100
- #if BT_A2DP_LHDC_AUDIO_EN || BT_A2DP_LDAC_AUDIO_EN
- const u32 sbc_inbuf_size = 0x10000;
- #endif
- #if !BT_A2DP_RECON_EN
- void a2dp_recon_hook(void)
- {
- }
- #endif
- //将系统音量转换为a2dp_vol
- uint8_t a2dp_vol_reverse(uint vol)
- {
- uint a2dp_vol = (vol * 1280L /VOL_MAX) /10;
- //32段音量时,同步手机音量由98%->100%调整为97%->100%(98%->100%有时会出现同步不了的情况:耳机音量32了,但手机音量97%)
- if(VOL_MAX==32 && a2dp_vol==0x7C) {
- a2dp_vol=0x7B;
- }
- if(a2dp_vol > 0x7f) {
- a2dp_vol = 0x7f;
- }
- return a2dp_vol;
- }
- //将a2dp_vol转换为系统音量级数
- uint8_t a2dp_vol_conver(uint8_t a2dp_vol)
- {
- uint8_t vol_unit = (1280L / VOL_MAX) / 10;
- if (a2dp_vol > 0 && a2dp_vol < vol_unit) {
- a2dp_vol = vol_unit;
- } else if(a2dp_vol >= 127) {
- return VOL_MAX;
- }
- return (a2dp_vol + 1) * VOL_MAX / 128;
- }
- //将系统音量级数转换为a2dp_vol
- uint a2dp_get_vol(void)
- {
- return a2dp_vol_reverse(sys_cb.vol);
- }
- //获取初次连接时蓝牙音量的回调函数
- uint8_t a2dp_vol_get_init_cb(uint8_t vol_feat)
- {
- if(vol_feat & BIT(0)) { //支持音量同步
- return a2dp_get_vol();
- }
- return 0x7f;
- }
- //按键调节音量的回调函数
- uint8_t a2dp_vol_adj_cb(uint8_t a2dp_vol, bool up_flag)
- {
- uint8_t vol_set = a2dp_vol_conver(a2dp_vol);
- if(up_flag) {
- vol_set = bsp_volume_inc(vol_set);
- } else {
- vol_set = bsp_volume_dec(vol_set);
- }
- TRACE("adj_vol: %d(%x)\n", sys_cb.vol, a2dp_vol);
- return a2dp_vol_reverse(vol_set);
- }
- AT(.com_text.a2dp)
- void a2dp_tws_sync_close(void)
- {
- if (!sbc_is_bypass() && !bsp_res_is_playing()) {
- msg_enqueue(EVT_A2DP_SYNC_CLOSE);
- }
- }
|