bluetooth 默認名稱

 

 

 

藍牙代碼基本結構分析

http://blog.csdn.net/fuyajun01/article/details/46273331

 

 

 

Android BlueDroid(二):BlueDroid藍牙開啓過程init

http://blog.csdn.net/xubin341719/article/details/40393285

 

 

Settings

BluetoothSettings.java

onResume(updateContent())

updateContent(

mMyDevicePreference.setSummary(res.getString(
                            R.string.bluetooth_is_visible_message,
                            bidiFormatter.unicodeWrap(mLocalAdapter.getName())));

)

 

frameworks/base/packages/settingslib/src/com/android/settingslib/bluetooth

LocalBluetoothAdapter.java

getName()

 

BluetoothAdapter.java

getName()

 

frameworks/base/services/core/java/com/android/server

BluetoothManagerService.java

getName( IBluetooth.getName(); )

 

packages/apps/bluetooth/src/com/android/bluetooth/btservice

AdapterService.java

AdapterServiceBinder.java    extends IBluetooth.stub

getName()

 

AdapterService.java

getName()

 

packages/apps/bluetooth/src/com/android/bluetooth/btservice

AdapterProperties.java

getName(return mName)

 

adapterPropertyChangedCallback(

                    case AbstractionLayer.BT_PROPERTY_BDNAME:
                        mName = new String(val);

)

 

 

packages/apps/bluetooth/jni

com_android_bluetooth_btservice_AdapterService.cpp

classInitNative(

    method_adapterPropertyChangedCallback = env->GetMethodID(jniCallbackClass,
                                                             "adapterPropertyChangedCallback",
                                                             "([I[[B)V");

 

const char *id = (strcmp(value, "1")? BT_STACK_MODULE_ID : BT_STACK_TEST_MODULE_ID);

    err = hw_get_module(id, (hw_module_t const**)&module);

    if (err == 0) {
        hw_device_t* abstraction;
        err = module->methods->open(module, id, &abstraction);
        if (err == 0) {
            bluetooth_module_t* btStack = (bluetooth_module_t *)abstraction;
            sBluetoothInterface = btStack->get_bluetooth_interface();

)

 

adapter_properties_callback(

if (sJniCallbacksObj) {
        callbackEnv->CallVoidMethod(sJniCallbacksObj, method_adapterPropertyChangedCallback, types,
                                    props);
    }

)

 

static bt_callbacks_t sBluetoothCallbacks = {
    sizeof(sBluetoothCallbacks),
    adapter_state_change_callback,
    adapter_properties_callback,
    remote_device_properties_callback,
    device_found_callback,
    discovery_state_changed_callback,
    pin_request_callback,
    ssp_request_callback,
    bond_state_changed_callback,
    acl_state_changed_callback,
    callback_thread_event,
    dut_mode_recv_callback,
    le_test_mode_recv_callback,
    energy_info_recv_callback,
    NULL
};

 

initNative(

 int ret = sBluetoothInterface->init(&sBluetoothCallbacks);

)

 

 

system/bt/btif/src

Bluetooth.c

bt_interface_t bluetoothInterface

init(bt_hal_cbacks = callbacks;)

 stack_manager_get_interface()->init_stack();

 

 

android/system/bt/btif/src/

stack_manager.c

 stack_manager_get_interface( return interface;)

static const stack_manager_t interface = {
  init_stack,
  start_up_stack_async,
  shut_down_stack_async,
  clean_up_stack,

  get_stack_is_running
};

init_stack()

event_init_stack()

btif_init_bluetooth()

 

start_up_stack_async( thread_post(management_thread, event_start_up_stack, NULL); )

event_start_up_stack( bte_main_enable )

 

 

android/system/bt/main/

bte_main.c

bte_main_enable()

 

android/system/bt/stack/btu/

btu_init.c

BTU_StartUp()

 

android/system/bt/stack/btu/

btu_task.c

btu_task_start_up()

 

android/system/bt/btif/src/

btif_core.c

btif_init_bluetooth( btif_transfer_context(btif_jni_associate, 0, NULL, 0, NULL); )

static void btif_jni_associate(UNUSED_ATTR uint16_t event, UNUSED_ATTR char *p_param) {
  BTIF_TRACE_DEBUG("%s Associating thread to JVM", __func__);
  HAL_CBACK(bt_hal_cbacks, thread_evt_cb, ASSOCIATE_JVM); //Bluetooth.c中的callbacks
}

btif_transfer_context( btif_sendmsg )

 

btif_init_ok ( BTA_EnableBluetooth(bte_dm_evt); )

 

 

Btif_dm.c

bte_dm_evt()

btif_dm_upstreams_evt()

 

 

android/system/bt/btif/src/

btif_storage.c

btif_storage_load_bonded_devices()

btif_storage_get_adapter_property()

 

 

 

android/system/bt/btif/src/

Btif_dm.c

btif_dm_get_adapter_property()

 

android/system/bt/btif/src/btif_dm.c:90:#define PROPERTY_PRODUCT_MODEL "ro.product.model"

btif_get_default_local_name( osi_property_get(PROPERTY_PRODUCT_MODEL, prop_model, ""); )

 

 

 

 

 

android/hardware/libhardware/include/hardware/bluetooth.h:34:#define BT_STACK_MODULE_ID "bluetooth"

 

android/hardware/libhardware/include/hardware/bt_sdp.h:19:#include "bluetooth.h"
android/hardware/libhardware/include/hardware/bt_common_types.h:25:#include "bluetooth.h"
android/hardware/xxx/bt/libbt-vendor/src/hardware.c:60:          if (property_set("bluetooth.hciattach", szReqSt) < 0)
android/hardware/xxx/bt/libbt-vendor/src/hardware.c:71:          if (property_set("bluetooth.hciattach", szReqSt) < 0)
android/hardware/xxx/bt/libbt-vendor/src/bt_vendor_xxx.c:94:static const char SERVICE_PROP_NAME[]    = "bluetooth.hsic_ctrl";

 

 

ubuntu-server:~$ grep -rsn "bluetooth_module_t" android/hardware/
android/hardware/libhardware/include/hardware/bluetooth.h:615:typedef bluetooth_device_t bluetooth_module_t;
ubuntu-server:~$ grep -rsn "bluetooth_device_t" android/hardware/
android/hardware/libhardware/include/hardware/bluetooth.h:613:} bluetooth_device_t;
android/hardware/libhardware/include/hardware/bluetooth.h:615:typedef bluetooth_device_t bluetooth_module_t;

 

 

android/system/bt/btif/src/bluetooth.c:596:const bt_interface_t* bluetooth__get_bluetooth_interface ()
 

 

 

-------------------------------------------------------

 

 

 

Bluedroid中btif_default_local_name是沒初始化的,就會檢測BTM_DEF_LOCAL_NAME是否定義了,若定義了,就會使用BTM_DEF_LOCAL_NAME定義的名稱。如果BTM_DEF_LOCAL_NAME沒定義,就會使用PROPERTY_PRODUCT_MODEL(ro.product.model)屬性的定義。

BTM_DEF_LOCAL_NAME在bluedroid中定義如下:

android\external\bluetooth\bluedroid\include\bt_target.h
#ifndef BTM_DEF_LOCAL_NAME
#define BTM_DEF_LOCAL_NAME      ""
#endif
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

但在這之前,就有一個地方定義了BTM_DEF_LOCAL_NAME,所以該處定義不起作用,BTM_DEF_LOCAL_NAME定義在:

Android\device\generic\common\bluetooth\bdroid_buildcfg.h
#define BTM_DEF_LOCAL_NAME   "Android Bluedroid"
  • 1
  • 2
  • 1
  • 2

這也就是爲什麼android默認的藍牙名稱爲”Android Bluedroid”。

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章