1、bluetooth.cc enable执行打开蓝牙
static int enable(bool start_restricted) {
LOG_INFO(LOG_TAG, "%s: start restricted = %d", __func__, start_restricted);
restricted_mode = start_restricted;
if (!interface_ready()) return BT_STATUS_NOT_READY;
//异步启动协议栈
stack_manager_get_interface()->start_up_stack_async();
return BT_STATUS_SUCCESS;
}
stack_manager线程中加入启动协议栈的事件event_start_up_stack
static void start_up_stack_async(void) {
thread_post(management_thread, event_start_up_stack, NULL);
}
2、启动协议栈
static void event_start_up_stack(UNUSED_ATTR void* context) {
if (stack_is_running) {
LOG_INFO(LOG_TAG, "%s stack already brought up", __func__);
return;
}
ensure_stack_is_initialized();
LOG_INFO(LOG_TAG, "%s is bringing up the stack", __func__);
future_t* local_hack_future = future_new();
hack_future = local_hack_future;
// Include this for now to put btif config into a shutdown-able state
module_start_up(get_module(BTIF_CONFIG_MODULE));
//enable协议栈
bte_main_enable();
if (future_await(local_hack_future) != FUTURE_SUCCE