Android 蓝牙移植笔记

在android平台中,经常出现外围设备的移植,其中涉及到比较多模块的修改,比如kernnel, android(hardware, external, package)等模块都可能需求动。


        (1)驱动的添加

                  厂商一般都会给各自的蓝牙器件添加驱动文件(eg:rtk_btusb.c,rtk_btusb.h),添加到drivers/bluetooth/目录即可,如果涉及到uhid模块的话,添加到对应目录即可。

                 接着修改Kconfig,Makefile加入刚才的模块和文件,通常编译生成KO方便android动态库加载


(2)编译模块的添加

                  build/core/product.mk : _product_stash_var_list 添加 BORAD_HAVE_BTUETOOTH_RTK 

                  device/{vendor}/{platform}/BoardConfig.mk:  定义BORAD_HAVE_BTUETOOTH_RTK  := true  ; 

                                                                                             BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR ?=  device/{vendor}/{platform}/bluetooth

                  device/{vendor}/{platform}/{platformName}.mk: 添加hardware层蓝牙厂商libbt-vendor_xxx.so以及bluetooth.xxx.so 动态库的编译

                                                                                                       如:$(call inherit-product, hardware/realtek/bt/firmware/rtl8723a/device-rtl.mk)指定makefie

                                                                                                       编译完之后重写PRODUCT_COPY_FILES ,拷贝frameworks/native/data/etc/android.hardware.bluetooth.xml

                                                                                                       frameworks/native/data/etc/android.hardware.bluetooth_le.xml

        (3)驱动的加载

                  编译完成kernel,hardware,各层的驱动库和动态库之后,修改init.{platformName}.rc脚本来加载驱动 ,修改属主和属组;

                  修改uevent.{platfromName}.rc 修改新增蓝牙设备节点权限

                  在系统安全上下文文件file_contexts添加该节点的设置

                 


蓝牙打印的开启,主要是通过bt_stack.conf 配置来开启对应模块

# Enable BtSnoop logging function
# valid value : true, false
BtSnoopLogOutput=true

# BtSnoop log output file
BtSnoopFileName=/data/data/btsnoop_hci.log

# Preserve existing BtSnoop log before overwriting
BtSnoopSaveLog=true

# Enable trace level reconfiguration function
# Must be present before any TRC_ trace level settings
TraceConf=true

# Trace level configuration
#   BT_TRACE_LEVEL_NONE    0    ( No trace messages to be generated )
#   BT_TRACE_LEVEL_ERROR   1    ( Error condition trace messages )
#   BT_TRACE_LEVEL_WARNING 2    ( Warning condition trace messages )
#   BT_TRACE_LEVEL_API     3    ( API traces )
#   BT_TRACE_LEVEL_EVENT   4    ( Debug messages for events )
#   BT_TRACE_LEVEL_DEBUG   5    ( Full debug messages )
#   BT_TRACE_LEVEL_VERBOSE 6    ( Verbose messages ) - Currently supported for TRC_BTAPP only.
TRC_BTM=5
TRC_HCI=5
TRC_L2CAP=2
TRC_RFCOMM=5
TRC_OBEX=2
TRC_AVCT=2
TRC_AVDT=2
TRC_AVRC=2
TRC_AVDT_SCB=2
TRC_AVDT_CCB=2
TRC_A2D=5
TRC_SDP=5
TRC_GATT=2
TRC_SMP=2
TRC_BTAPP=5
TRC_BTIF=5
配置文件打印控制部分在文件bte_logmsg.c中解析。

你可能感兴趣的:(android,BlueTooth)