本文适用范围:
ADK23.3~
问题/功能描述:
LE Audio Auracast在高通最新平台上的如何实现
正文:
在上一篇博文中介绍了如何实现广播应用的.侧重在开发调试功能的实现,而在实际产品应用中是无法如此操作.本文目的就是如何将就如何用更加友好的UI交互方式实现广播功能来,并就此延申介绍.
一. 添加相关UI事件实现自动扫描添加广播功能
大体过程就是按键触发启动定时广播扫描,定时结束后将周围所有广播信号按照信号强度排列选取其中信号值最高的广播加入.也可以在这里指定过滤机制按照名字或者id进行筛选
以下是代码展示
1)创建接受消息task
2)处理UI事件,发起扫描广播动作,并将前面task注册为接受回传消息接口
3)消息接受处理,主要使用到2个消息
LE_BROADCAST_MANAGER_SELF_SCAN_DISCOVERED_SOURCE_IND
扫描收到的新广播后返回消息,过滤处理在这里添加
LE_BROADCAST_MANAGER_SELF_SCAN_STATUS_IND
扫描事件状态改变消息,这里主要用到一个扫描超时状态,超时后进入匹配加入广播操作
二. 固定广播收发组合模式
使用预置参数方式固定广播ID.默认ADK中支持MIB key对广播参数做默认设置,其中包含常用的广播名称,广播ID,广播加密还有广播数据包配置等.结合使用对组合式的产品可谓如鱼得水.省去了扫描过程简化整个流程.可以直接拿ID配网.
MIB KEY具体定义在ps_key_map.h中查看.
PS_KEY_USB_DONGLE_MODE USR17 usb dongle mode
PS_KEY_BROADCAST_SRC_NAME USR83 broadcast source name
PS_KEY_BROADCAST_SRC_CODE USR84 broadcast encryption code
PS_KEY_BROADCAST_SRC_ADV_CONFIG USR85 broadcast source advertising
PS_KEY_BROADCAST_SRC_AUDIO_CONFIG USR86 broadcast source audio config
PS_KEY_BROADCAST_ID USR87 broadcast ID
subsys7_psflash.htf中对各个KEY具体用法有解释
USR17 = [ 00 03 ] USB发射模式设置.第一个字节表示音频发送模式0高品质 1 游戏模式低延时 2 广播模式,第二位表示传输模式1 BR/EDR 2 LE audio 3 双模
USR83 = [ 41 75 72 61 63 61 73 74 ] 广播名字,总长30字节,默认是Auracasr
USR84 = [ 31 32 33 34 35 36 37 38 39 40 41 42 ] 广播加密密钥,长度4-16字符
USR85 = [ 00 00 80 00 C0 00 01 00 00 02 01 01 00 04 58 01 78 01 14 00]广播参数设置,项目较多参看BapBroadcastSrcAdvParams结构体说明
USR86 = [ 04 01 00 64 00 14 00 02 00 02 00 01 00 00 00 04 00 00 00 04 00 00 08 00 00 00 27 10 00 00 4E 20]广播音频参数设置
USR87 = [ 00 11 22 33 ]广播ID设定,共4个字节第一位默认为0,最长可以为6位16进制数字字符串,
DISABLE_DONGLE_MODE_FROM_PSKEY
按照自己需求配置对应key后,开机运行后就会依照设定开启广播.
三. 进一步拓展组网方式和效率
1.使用手机广播助理协助蓝牙设备组网操作,优点是最快捷方便,不需额外操作.限制是当下支持LE Audio手机型号偏少.
2.音箱添加显示屏幕,通过按键选择.优点更加自由模式,限制是需要修改代码支持GUI ,工作量相对要求大.
四.后记
作为一个收发广播功能,ADK在这块应用完整度有待提升.所以想要使用,都是需要自行完善.这个过程需要切合自身产品功能来设计高效的人机交互模式.
五 . FAQ
1.多设备加入网络需要怎么操作?
发射端广播启动后,其他设备可以随时加入网络,广播信息在持续定时的循环广播发送
2.广播网络中能不能同步控制和音量调节?
不可以的,只能调节本地音量
3.广播中音频可以支持什么格式?
不支持高码率编码,目前使用的是SBC/AAC
4.代码是否可以提供?
可以线下联系技术人员
5.为什么广播连接成功后没有提示?
因为这个不是一般意义上的配对,只是单向接受到广播数据.
评论
EthanChu
4 天前