蓝牙dongle热插拔方案

蓝牙dongle热插拔方案


蓝牙部分:
BluetoothManagerService初始化时创建一个线程,在线程中
通过epoll监控/dev/bus/usb设备节点
|
|
V
执行脚本finddevpath,找到在/sys/bus/usb/devices
下生成的节点目录
|
|
V
如果目录下uevent中的DEVNAME和/dev/bus/usb中产生的设备节点相同
|
|
V
读取找到的目录中的idProduct、idVendor
|
|
V
根据vid、pid判断是哪家厂商的芯片(rtk、mtk、bcm)
|
|
V
启动kill_btapk服务,关闭当前蓝牙进程,重新启动蓝牙
(重新通过属性konka.bt.driver加载蓝牙动态库)

Audio部分:
AudioPolicyManagerBase.cpp(hardware\libhardware_legacy\audio)
中initCheck函数初始化一个线程,
检测蓝牙驱动的变化
|
|
V
实现a2dp库的加载(DetectHALLoad_thread)
|
|
V
加载动态库reLoadHwModule

猜你喜欢

转载自blog.csdn.net/mcsbary/article/details/88652731