1.1. 蓝牙相关代码目录:
buildroot/package/aml_brcm_bsa:博通模组厂商提供的代码包,主要是mk file和config.in文件
vendor/broadcom/brcm-bsa:以上代码包实际所包含的代码所在
rokid_br_external/package/btflinger:蓝牙的service的代码包,主要是mk file和config.in文件,相关启动脚本
robot/services/btflinger:以下代码包实际所包含的代码所在
├── api 接口文件
│ ├── bluetooth_msgque.c
│ └── btflinger_api.c
├── include 接口相关头文件
│ ├── bluetooth_msgque.h
│ └── btflinger_api.h
├── src service源代码,启动脚本。 源代码暂时不开放,只提供bin文件
│ ├── bsa_server_service_ctl.sh
│ ├── btflinger
│ └── bt_service_ctl.sh
└── test 模块测试文件,接口的调用方法可以参考此文件
└── bluetooth_test.c
1.2. 更新代码后如果发生编译通不过或者运行时错误的情况:
- 删掉 output/banban_m_a113/build/aml_brcm_bsa-0107_00.26.00/
- 删掉 output/banban_m_a113/build/btflinger/
- 再重新make
1.3. 如果模组相同,只是迁移平台:
将相关代码目录直接覆盖过去即可:
buildroot/package/aml_brcm_bsa
vendor/broadcom/brcm-bsa
rokid_br_external/package/btflinger
robot/services/btflinger
1.4. 如果模组切换,则还需要增加的步骤:
修改robot/services/btflinger/src/bsa_server_service_ctl.sh
将红框处的路径修改成新的模组固件的路径即可
注意:目前只支持在博通的模组间切换,如果是非博通的模组目前暂时不支持。
1.5. 如果厂商需要定义自己的 BLE 的 UUID:
修改rokid_br_external/configs/rokid_common_packages.frag文件
1.6. 如何确认蓝牙服务已经正常:
ADB shell中敲入以下命令:
- systemctl stop btflinger
- btflinger(此时会有log出现,可以检查是否出错)
重新开一个adb shell窗口,敲入:
bluetooth_test
然后会有列表显示出来,可以选择各个接口进行验证(需要和 应用开发--> C/C++ ---> 蓝牙)章节联系起来一起理解,分析
Exa(测试BLE是否正常):
在bluetooth_test中,选择:
- ble
- ble rsp
- 手机上用BLEdebuger软件搜,能搜到my bt ble test device这个设备,点进去,会看见3个服务。选择第3个服务,点进去,选择write, 填入字符
- bluetooth_test界面会打印出收到的字符。如果和填入的字符匹配,就证明BLE服务层没有问题。