Android 8.1 bluedroid enable

system/bt/btif/src/bluetooth.cc

static int enable(bool start_restricted)

stack_manager_get_interface()->start_up_stack_async();


system/bt/btif/src/stack_manager.cc

static void start_up_stack_async(void)

thread_post(management_thread, event_start_up_stack, NULL);

static void event_start_up_stack(UNUSED_ATTR void* context)

ensure_stack_is_initialized();

init_vnd_Logger();

module_start_up(get_module(BTIF_CONFIG_MODULE));

bte_main_enable();

stack_is_running = true;

btif_thread_post(event_signal_stack_up, NULL);


system/bt/main/bte_main.cc

void bte_main_enable()

module_start_up(get_module(BTSNOOP_MODULE));

BTU_StartUp();


system/bt/stack/btu/btu_init.cc

void BTU_StartUp(void)

bt_workqueue_thread = thread_new(BT_WORKQUEUE_NAME);

thread_set_rt_priority(bt_workqueue_thread, BTU_TASK_RT_PRIORITY);

thread_post(bt_workqueue_thread, btu_task_start_up, NULL);


system/bt/stack/btu/btu_task.cc

void btu_task_start_up(UNUSED_ATTR void* context)

btu_init_core();

BTE_InitStack();

bta_sys_init();

module_init(get_module(BTE_LOGMSG_MODULE));

message_loop_thread_ = thread_new("btu message loop");

thread_set_rt_priority(message_loop_thread_, THREAD_RT_PRIORITY);

thread_post(message_loop_thread_, btu_message_loop_run, nullptr);


system/bt/stack/btu/btu_init.cc

void btu_init_core(void)

btm_init();

l2c_init();

sdp_init();

gatt_init();

SMP_Init();

btm_ble_init();


system/bt/main/bte_init.cc

void BTE_InitStack(void)

RFCOMM_Init();

BNEP_Init();

PAN_Init();

A2DP_Init();

AVRC_Init(); 

GAP_Init();

HID_HostInit(); 

MCA_Init();


system/bt/bta/sys/bta_sys_main.cc

void bta_sys_init(void)

 memset(&bta_sys_cb, 0, sizeof(tBTA_SYS_CB)); 

bta_sys_register(BTA_ID_SYS, &bta_sys_hw_reg);

BTM_RegisterForDeviceStatusNotif((tBTM_DEV_STATUS_CB*)&bta_sys_hw_btm_cback);

bta_ar_init(); 

猜你喜欢

转载自blog.csdn.net/kikyo_yu/article/details/80053837
8.1