From 485c896740883007dbee7a0a937ba6563d15e7d3 Mon Sep 17 00:00:00 2001 From: baohongde Date: Wed, 31 Oct 2018 17:11:54 +0800 Subject: [PATCH] components/bt: Combine A2DP sink task and A2DP source task into btc task --- components/bt/bluedroid/btc/core/btc_task.c | 8 +++---- .../btc/profile/std/a2dp/btc_a2dp_sink.c | 18 +++------------- .../btc/profile/std/a2dp/btc_a2dp_source.c | 21 +++++++------------ 3 files changed, 14 insertions(+), 33 deletions(-) diff --git a/components/bt/bluedroid/btc/core/btc_task.c b/components/bt/bluedroid/btc/core/btc_task.c index e77f5ac4b9..72866dc3c5 100644 --- a/components/bt/bluedroid/btc/core/btc_task.c +++ b/components/bt/bluedroid/btc/core/btc_task.c @@ -55,7 +55,7 @@ #define BTC_TASK_NAME "btcT" #define BTC_TASK_PRIO (BT_TASK_MAX_PRIORITIES - 6) -static osi_thread_t *btc_thread; +osi_thread_t *btc_thread; static const btc_func_t profile_tab[BTC_PID_NUM] = { [BTC_PID_MAIN_INIT] = {btc_main_call_handler, NULL }, @@ -135,7 +135,7 @@ static bt_status_t btc_task_post(btc_msg_t *msg, osi_thread_blocking_t blocking) memcpy(lmsg, msg, sizeof(btc_msg_t)); - if (osi_thread_post(btc_thread, btc_thread_handler, lmsg, 0, blocking) == false) { + if (osi_thread_post(btc_thread, btc_thread_handler, lmsg, 2, blocking) == false) { return BT_STATUS_BUSY; } @@ -262,7 +262,7 @@ static void btc_deinit_mem(void) { int btc_init(void) { - btc_thread = osi_thread_create("BTC_TASK", BTC_TASK_STACK_SIZE, BTC_TASK_PRIO, BTC_TASK_PINNED_TO_CORE, 1); + btc_thread = osi_thread_create("BTC_TASK", BTC_TASK_STACK_SIZE, BTC_TASK_PRIO, BTC_TASK_PINNED_TO_CORE, 3); if (btc_thread == NULL) { return BT_STATUS_NOMEM; } @@ -297,7 +297,7 @@ void btc_deinit(void) bool btc_check_queue_is_congest(void) { - if (osi_thread_queue_wait_size(btc_thread, 0) >= QUEUE_CONGEST_SIZE) { + if (osi_thread_queue_wait_size(btc_thread, 2) >= QUEUE_CONGEST_SIZE) { return true; } diff --git a/components/bt/bluedroid/btc/profile/std/a2dp/btc_a2dp_sink.c b/components/bt/bluedroid/btc/profile/std/a2dp/btc_a2dp_sink.c index ad1f5558b6..f1d51d80e3 100644 --- a/components/bt/bluedroid/btc/profile/std/a2dp/btc_a2dp_sink.c +++ b/components/bt/bluedroid/btc/profile/std/a2dp/btc_a2dp_sink.c @@ -45,12 +45,7 @@ #if (BTC_AV_SINK_INCLUDED == TRUE) -/* Macro */ -#define BTC_A2DP_SINK_TASK_PINNED_TO_CORE (TASK_PINNED_TO_CORE) -#define BTC_A2DP_SINK_TASK_STACK_SIZE (A2DP_SINK_TASK_STACK_SIZE + BT_TASK_EXTRA_STACK_SIZE) // by menuconfig -#define BTC_A2DP_SINK_TASK_NAME "BtA2dSinkT" -#define BTC_A2DP_SINK_TASK_PRIO (BT_TASK_MAX_PRIORITIES - 3) - +extern osi_thread_t *btc_thread; /***************************************************************************** ** Constants @@ -242,10 +237,7 @@ bool btc_a2dp_sink_startup(void) APPL_TRACE_EVENT("## A2DP SINK START MEDIA THREAD ##"); - a2dp_sink_local_param.btc_aa_snk_task_hdl = osi_thread_create(BTC_A2DP_SINK_TASK_NAME, BTC_A2DP_SINK_TASK_STACK_SIZE, BTC_A2DP_SINK_TASK_PRIO, BTC_A2DP_SINK_TASK_PINNED_TO_CORE, 2); - if (a2dp_sink_local_param.btc_aa_snk_task_hdl == NULL) { - goto error_exit; - } + a2dp_sink_local_param.btc_aa_snk_task_hdl = btc_thread; if (btc_a2dp_sink_ctrl_post(BTC_MEDIA_TASK_SINK_INIT, NULL) == false) { goto error_exit; @@ -257,10 +249,7 @@ bool btc_a2dp_sink_startup(void) error_exit:; APPL_TRACE_ERROR("%s unable to start up media thread\n", __func__); - if (a2dp_sink_local_param.btc_aa_snk_task_hdl != NULL) { - osi_thread_free(a2dp_sink_local_param.btc_aa_snk_task_hdl); - a2dp_sink_local_param.btc_aa_snk_task_hdl = NULL; - } + a2dp_sink_local_param.btc_aa_snk_task_hdl = NULL; #if A2D_DYNAMIC_MEMORY == TRUE osi_free(a2dp_sink_local_param_ptr); @@ -282,7 +271,6 @@ void btc_a2dp_sink_shutdown(void) future_await(a2dp_sink_local_param.btc_a2dp_sink_future); a2dp_sink_local_param.btc_a2dp_sink_future = NULL; - osi_thread_free(a2dp_sink_local_param.btc_aa_snk_task_hdl); a2dp_sink_local_param.btc_aa_snk_task_hdl = NULL; #if A2D_DYNAMIC_MEMORY == TRUE diff --git a/components/bt/bluedroid/btc/profile/std/a2dp/btc_a2dp_source.c b/components/bt/bluedroid/btc/profile/std/a2dp/btc_a2dp_source.c index 430d6f5fff..3591901002 100644 --- a/components/bt/bluedroid/btc/profile/std/a2dp/btc_a2dp_source.c +++ b/components/bt/bluedroid/btc/profile/std/a2dp/btc_a2dp_source.c @@ -50,12 +50,7 @@ #if BTC_AV_SRC_INCLUDED -/* Macro */ -#define BTC_A2DP_SOURCE_TASK_PINNED_TO_CORE (TASK_PINNED_TO_CORE) -#define BTC_A2DP_SOURCE_TASK_STACK_SIZE (A2DP_SOURCE_TASK_STACK_SIZE + BT_TASK_EXTRA_STACK_SIZE) // by menuconfig -#define BTC_A2DP_SOURCE_TASK_NAME "BtA2dSourceT" -#define BTC_A2DP_SOURCE_TASK_PRIO (BT_TASK_MAX_PRIORITIES - 3) - +extern osi_thread_t *btc_thread; /***************************************************************************** ** Constants @@ -243,18 +238,18 @@ bool btc_a2dp_source_is_task_shutting_down(void) return btc_a2dp_source_state == BTC_A2DP_SOURCE_STATE_SHUTTING_DOWN; } -static void btc_a2dp_source_ctrl_post(uint32_t sig, void *param) +static bool btc_a2dp_source_ctrl_post(uint32_t sig, void *param) { a2dp_src_task_evt_t *evt = (a2dp_src_task_evt_t *)osi_malloc(sizeof(a2dp_src_task_evt_t)); if (evt == NULL) { - return; + return false; } evt->sig = sig; evt->param = param; - osi_thread_post(a2dp_source_local_param.btc_aa_src_task_hdl, btc_a2dp_source_ctrl_handler, evt, 0, OSI_THREAD_BLOCKING); + return osi_thread_post(a2dp_source_local_param.btc_aa_src_task_hdl, btc_a2dp_source_ctrl_handler, evt, 0, OSI_THREAD_BLOCKING); } static void btc_a2dp_source_ctrl_handler(void *arg) @@ -318,19 +313,18 @@ bool btc_a2dp_source_startup(void) APPL_TRACE_EVENT("## A2DP SOURCE START MEDIA THREAD ##"); - a2dp_source_local_param.btc_aa_src_task_hdl = osi_thread_create(BTC_A2DP_SOURCE_TASK_NAME, BTC_A2DP_SOURCE_TASK_STACK_SIZE, BTC_A2DP_SOURCE_TASK_PRIO, BTC_A2DP_SOURCE_TASK_PINNED_TO_CORE, 2); - if (a2dp_source_local_param.btc_aa_src_task_hdl == NULL) { + a2dp_source_local_param.btc_aa_src_task_hdl = btc_thread; + + if (btc_a2dp_source_ctrl_post(BTC_MEDIA_TASK_INIT, NULL) == false) { goto error_exit; } - btc_a2dp_source_ctrl_post(BTC_MEDIA_TASK_INIT, NULL); APPL_TRACE_EVENT("## A2DP SOURCE MEDIA THREAD STARTED ##\n"); return true; error_exit:; APPL_TRACE_ERROR("%s unable to start up media thread\n", __func__); - osi_thread_free(a2dp_source_local_param.btc_aa_src_task_hdl); a2dp_source_local_param.btc_aa_src_task_hdl = NULL; #if A2D_DYNAMIC_MEMORY == TRUE @@ -353,7 +347,6 @@ void btc_a2dp_source_shutdown(void) future_await(a2dp_source_local_param.btc_a2dp_source_future); a2dp_source_local_param.btc_a2dp_source_future = NULL; - osi_thread_free(a2dp_source_local_param.btc_aa_src_task_hdl); a2dp_source_local_param.btc_aa_src_task_hdl = NULL; #if A2D_DYNAMIC_MEMORY == TRUE