Android Bluetooth 移植(上)

转载 2012年03月23日 18:53:55

原文链接地址:http://source.android.com/porting/bluetooth.html#androidBluetoothPorting

本文涵盖以下方面

·         移植

·        编译

·        疑难解答

·        工具

·        支持特性

 

Android 的蓝牙协议栈使用BlueZ实现来对GAP, SDP以及RFCOMM等应用规范的支持,并获得了SIG认证。由于Bluez使用GPL授权, 所以Android 框架通过D-BUS IPC来与bluez的用户空间代码交互以避免使用未经授权的代码。

Android 在应用框架framework中实现HSP和HFP(v1.5)规范,并且与电话应用(Phone App)配合紧密。

下图展示了蓝牙软件栈面向库的视图,在它下面是面向进程的视图。

图1 面向库的视图

图中使用实线的块是在android中实现的,而虚线的部分则由合作伙伴具体定制。

图2 面向进程的视图(基于1.0版本)

移植

BlueZ兼容bluetooth 2.1, 支持任意基于蓝牙2.1的芯片组, 并且后向兼容早期的版本。移植中有两个与芯片的结合点:

·        UART 驱动

·        蓝牙电源开关

UART 驱动

BlueZ内核子系统通过守护进程hciattach 与特定硬件的UART驱动进行绑定。

以MSM7201A为例,参考drivers/serial/msm_serial.c。你可能还需要编辑init.rc 中hciattach 的命令行选项。

蓝牙电源开关

Android V1.0与之前的版本采用不同的方式控制蓝牙芯片的电源开关。

1.0: Android 框架向/sys/modules/board_[PLATFORM]/parameters/bluetooth_power_on 写0或1.

Post 1.0: Android 框架使用linux中 rfkill 的API。

可以参考 arch/arm/mach-msm/board-trout-rfkill.c。

编译

为了使能Android的蓝牙功能,在编译时需要在 BoardConfig.mk中加入

BOARD_HAVE_BLUETOOTH := true

 

疑难解答

调试

在开始时,可以通过读log(adb logcat)并寻找蓝牙相关的 ERRROR 和 WARNING 信息来调试你的蓝牙实现, Bluez中也包含了一些十分有用的调试工具。下面按照推荐顺序提供了一些例子。

hciconfig -a                 #print BT chipset address and features. Useful to check if you can communicatewith your BT chipset.

hcidump -XVt                 #print live HCI UART traffic.

hcitool scan                 #scan for local devices. Useful to check if RX/TX works.

l2ping ADDRESS         #ping another BT device. Useful to check if RX/TX works.

sdptool records ADDRESS # request theSDP records of another BT device.

后台进程的Log

后台进程hcid (STDOUT)和 hciattach (STDERR)的log默认输出到/dev/null。可以编辑 init.rc 和 init.PLATFORM.rc 来使这些进程在 logwrapper下运行,从而将输出重定向到logcat.

hciconfig -a 和 hcitool

当使用你自己编译的system.img时, 如果 hciconfig -a 可以正常工作但hcitool 却不能正确扫描, 可以尝试为蓝牙芯片组安装固件。目前的开源代码库中并不提供该固件, 但是你可以通过使用 adb pull 然后 adb push从早期的T-MobileG1中获取 (位于 /etc/firmware/brf6300.bin).

工具

BlueZ 提供了一套丰富的基于命令行的工具用于调试与并与蓝牙子系统进行交互,其中包括:

·        hciconfig

·        hcitool

·        hcidump

·        sdptool

·        dbus-send

·        dbus-monitor


相关文章推荐

android bluetooth蓝牙移植

前段时间移植神念系统需要使用到bluetooth功能,现将移植过程中碰到的问题简要列一下,备忘而已。 1、内核增加配置 make menuconfig -> Networking suppor...

android bluetooth 移植相关注意事项

android bluetooth 移植相关注意事项 标签: androidlinuxbluedroid brcmap6330 2013-10-12 20:15 11877人阅...

android bluetooth 移植相关注意事项

bluedroid的通用架构框图: 由上图可知,bluedroid包含如下的核心组件: Bluetooth core stack libra...

android bluetooth 移植相关注意事项

bluedroid的通用架构框图: 由上图可知,bluedroid包含如下的核心组件: Bluetooth core stack library ...

Android Bluetooth 移植(下)

支持特性 下面这一节总结了Android各个release版本所支持得蓝牙特性的变化情况,并对未来可能支持的特性做了一个粗略的展望。 Android 1.0 release 平台特性(Platf...

和菜鸟一起学android4.0.3源码之bluetooth移植心得

http://blog.csdn.net/eastmoon502136/article/details/7846796 近几周一直在移植bluetooth和wifi,看书的时间也没,也没有时间思考一...

和菜鸟一起学android4.0.3源码之bluetooth移植心得

近几周一直在移植bluetooth和wifi,看书的时间也没,也没有时间思考一些问题,总结一些移植碰到的困难之类的。前天,终于蓝牙也可以传输文件,通过a2dp播放音乐了,wifi也可以扫描到网络,并可...

android-bluetooth移植碰到的问题

前段时间移植神念系统需要使用到bluetooth功能,现将移植过程中碰到的问题简要列一下,备忘而已。 1、内核增加配置 make menuconfig -> Networking suppor...

android bluetooth 移植相关注意事项

网址:http://blog.csdn.net/yuanzhangmei1/article/details/25053729 bluedroid的通用架构框图: ...

bluetooth开发(一)------Bluez工具的编译与移植

最近处理的事太多了,只能先写一些实践比较强的文章,理论的理解与阐述等有时间再写吧。 这一片主要是介绍Bluez工具的编译与移植,主要目的是测试内核驱动蓝牙模块是否正常。有些内容会涉及到公司产品,只能等...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Bluetooth 移植(上)
举报原因:
原因补充:

(最多只允许输入30个字)