蓝牙bluetooth之二-源码分布

来源:互联网 发布:linux下xampp mysql 编辑:程序博客网 时间:2024/06/08 06:20

安卓6.0下源码分布情况如下:

1.核心服务

frameworks/base/services/core/java/com/android/server/BluetoothBluetoothManagerService.java  BluetoothService.java 

2. application & framework

各种profile所在的目录

packages/apps/Bluetooth/src/com/android/bluetooth/a2dp/                        btservice/                   hfp/                         IObexConnectionHandler.java  ObexServerSockets.java       pbap/                        SignedLongLong.javaavrcp/                       gatt/                        hfpclient/                   map/                         opp/                         sap/                         util/BluetoothObexTransport.java  hdp/                         hid/                         ObexRejectServer.java        pan/                         sdp/                         Utils.java
比如hfpclient profile目录的内容如下:
packages/apps/Bluetooth/src/com/android/bluetooth/hfpclient/HeadsetClientHalConstants.java  HeadsetClientService.java  HeadsetClientStateMachine.java
基本上每个profile的命名方式和此类似,都有statemachine和service两个类来管理profile的状态并提供服务。

各种profile对应的jni

packages/apps/Bluetooth/jni/Android.mk                                          com_android_bluetooth_btservice_AdapterService.cpp  com_android_bluetooth_hfp.cppcom_android_bluetooth_a2dp.cpp                      com_android_bluetooth_gatt.cpp                      com_android_bluetooth_hid.cppcom_android_bluetooth_a2dp_sink.cpp                 com_android_bluetooth.h                             com_android_bluetooth_pan.cppcom_android_bluetooth_avrcp_controller.cpp          com_android_bluetooth_hdp.cpp                       com_android_bluetooth_sdp.cppcom_android_bluetooth_avrcp.cpp                     com_android_bluetooth_hfpclient.cpp                 

蓝牙各种服务

packages/apps/Bluetooth/src/com/android/bluetooth/btservice/AbstractionLayer.java   AdapterProperties.java  AdapterState.java       Config.java             ProfileService.java     AdapterApp.java         AdapterService.java     BondStateMachine.java   JniCallbacks.java       RemoteDevices.java      

framework框架层

/frameworks/base/core/java/android/bluetooth/BluetoothA2dp.java                 BluetoothHeadset.java                 IBluetoothGattServerCallback.aidlBluetoothA2dpSink.java             BluetoothHealthAppConfiguration.aidl  IBluetoothHeadset.aidlBluetoothActivityEnergyInfo.aidl   BluetoothHealthAppConfiguration.java  IBluetoothHeadsetClient.aidlBluetoothActivityEnergyInfo.java   BluetoothHealthCallback.java          IBluetoothHeadsetPhone.aidlBluetoothAdapter.java              BluetoothHealth.java                  IBluetoothHealth.aidlBluetoothAssignedNumbers.java      BluetoothInputDevice.java             IBluetoothHealthCallback.aidlBluetoothAudioConfig.aidl          BluetoothInputStream.java             IBluetoothInputDevice.aidlBluetoothAudioConfig.java          BluetoothManager.java                 IBluetoothManager.aidlBluetoothAvrcpController.java      BluetoothMap.java                     IBluetoothManagerCallback.aidlBluetoothAvrcp.java                BluetoothMasInstance.java             IBluetoothMap.aidlBluetoothClass.java                BluetoothOutputStream.java            IBluetoothPan.aidlBluetoothDevice.aidl               BluetoothPan.java                     IBluetoothPbap.aidlBluetoothDevice.java               BluetoothPbap.java                    IBluetoothProfileServiceConnection.aidlBluetoothDevicePicker.java         BluetoothProfile.java                 IBluetoothSap.aidlBluetoothGattCallback.java         BluetoothSap.java                     IBluetoothStateChangeCallback.aidlBluetoothGattCallbackWrapper.java  BluetoothServerSocket.java            leBluetoothGattCharacteristic.java   BluetoothSocket.java                  package.htmlBluetoothGattDescriptor.java       BluetoothUuid.java                    SdpMasRecord.javaBluetoothGatt.java                 IBluetoothA2dp.aidl                   SdpMnsRecord.javaBluetoothGattServerCallback.java   IBluetoothA2dpSink.aidl               SdpOppOpsRecord.javaBluetoothGattServer.java           IBluetooth.aidl                       SdpPseRecord.javaBluetoothGattService.java          IBluetoothAvrcpController.aidl        SdpRecord.javaBluetoothHeadsetClientCall.aidl    IBluetoothCallback.aidl               SdpSapsRecord.javaBluetoothHeadsetClientCall.java    IBluetoothGatt.aidlBluetoothHeadsetClient.java        IBluetoothGattCallback.aidl

蓝牙设置apk

系统默认自带

packages/apps/Settings/src/com/android/settings/bluetooth/BluetoothDevicePreference.java     BluetoothNameDialogFragment.java  BluetoothPermissionRequest.java    DevicePickerActivity.java    DockService.java                      Utf8ByteLengthFilter.javaBluetoothDiscoverableEnabler.java  BluetoothPairingDialog.java       BluetoothProgressCategory.java     DevicePickerFragment.java    LocalBluetoothPreferences.java        Utils.javaBluetoothDiscoveryReceiver.java    BluetoothPairingRequest.java      BluetoothSettings.java             DeviceProfilesSettings.java  RequestPermissionActivity.javaBluetoothEnabler.java              BluetoothPermissionActivity.java  DeviceListPreferenceFragment.java  DockEventReceiver.java       RequestPermissionHelperActivity.java

BT HAL层

hardware/libhardware/include/hardwarebt_av.h            bt_gatt_client.h  bt_gatt_server.h  bt_hf_client.h  bt_hh.h  bt_mce.h  bt_rc.h   bt_sock.hbt_common_types.h  bt_gatt.h         bt_gatt_types.h   bt_hf.h         bt_hl.h  bt_pan.h  bt_sdp.h

新的安卓不再使用legacy目录下的HAL的代码

BT协议栈

system/bt/Android.mk     bta     btif          conf    doc     gki  include  MODULE_LICENSE_APACHE2  osi      stack  tools  utilsaudio_a2dp_hw  btcore  CleanSpec.mk  device  embdrv  hci  main     NOTICE                  profile  test   udrv   vnd

厂商扩展层

hardware/broadcom/libbtAndroid.mk  conf  gen-buildcfg.sh  include  src  vnd_buildcfg.mk

linux kernel说明

google和博通写了bluedroid而弃用了linux的bluez,内核通蓝牙相关的只有tty和器件的驱动,相对而言kernel角色基本不重要了,没有和协议栈有关系的了。

蓝牙测试

使用bdt进行信令测试,调试时需要使用非信令测试



协议栈层调试btsnoop工具


1 0