Skip to content

Commit 00db39e

Browse files
committed
component/bt: make A2DP source and sink task size configurable through menuconfig
1. use different set of parameters for A2DP source/sink tasks 2. make the task stack size configurable through menuconfig
1 parent 1c3dd23 commit 00db39e

File tree

5 files changed

+37
-17
lines changed

5 files changed

+37
-17
lines changed

components/bt/Kconfig

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,16 @@ config A2DP_SRC_ENABLE
130130
bool "SOURCE"
131131
endchoice
132132

133+
config A2DP_SINK_TASK_STACK_SIZE
134+
int "A2DP sink (audio stream decoding) task stack size"
135+
depends on A2DP_ENABLE && A2DP_SINK_ENABLE
136+
default 2048
137+
138+
config A2DP_SOURCE_TASK_STACK_SIZE
139+
int "A2DP source (audio stream encoding) task stack size"
140+
depends on A2DP_ENABLE && A2DP_SRC_ENABLE
141+
default 2048
142+
133143
config BT_SPP_ENABLED
134144
bool "SPP"
135145
depends on CLASSIC_BT_ENABLED

components/bt/bluedroid/api/include/esp_a2dp_api.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,8 @@ esp_err_t esp_a2d_register_callback(esp_a2d_cb_t callback);
176176
/**
177177
* @brief Register A2DP sink data output function; For now the output is PCM data stream decoded
178178
* from SBC format. This function should be called only after esp_bluedroid_enable()
179-
* completes successfully, used only by A2DP sink.
179+
* completes successfully, used only by A2DP sink. The callback is invoked in the context
180+
* of A2DP sink task whose stack size is configurable through menuconfig
180181
*
181182
* @param[in] callback: A2DP sink data callback function
182183
*
@@ -291,7 +292,8 @@ esp_err_t esp_a2d_source_deinit(void);
291292
/**
292293
* @brief Register A2DP source data input function; For now the input is PCM data stream.
293294
* This function should be called only after esp_bluedroid_enable() completes
294-
* successfully
295+
* successfully. The callback is invoked in the context of A2DP source task whose
296+
* stack size is configurable through menuconfig
295297
*
296298
* @param[in] callback: A2DP source data callback function
297299
*

components/bt/bluedroid/btc/profile/std/a2dp/btc_a2dp_sink.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -232,21 +232,21 @@ bool btc_a2dp_sink_startup(void)
232232

233233
APPL_TRACE_EVENT("## A2DP SINK START MEDIA THREAD ##");
234234

235-
btc_aa_snk_queue_set = xQueueCreateSet(BTC_MEDIA_TASK_QUEUE_SET_LEN);
235+
btc_aa_snk_queue_set = xQueueCreateSet(BTC_A2DP_SINK_TASK_QUEUE_SET_LEN);
236236
configASSERT(btc_aa_snk_queue_set);
237-
btc_aa_snk_data_queue = xQueueCreate(BTC_MEDIA_DATA_QUEUE_LEN, sizeof(int32_t));
237+
btc_aa_snk_data_queue = xQueueCreate(BTC_A2DP_SINK_DATA_QUEUE_LEN, sizeof(int32_t));
238238
configASSERT(btc_aa_snk_data_queue);
239239
xQueueAddToSet(btc_aa_snk_data_queue, btc_aa_snk_queue_set);
240240

241-
btc_aa_snk_ctrl_queue = xQueueCreate(BTC_MEDIA_CTRL_QUEUE_LEN, sizeof(void *));
241+
btc_aa_snk_ctrl_queue = xQueueCreate(BTC_A2DP_SINK_CTRL_QUEUE_LEN, sizeof(void *));
242242
configASSERT(btc_aa_snk_ctrl_queue);
243243
xQueueAddToSet(btc_aa_snk_ctrl_queue, btc_aa_snk_queue_set);
244244

245245
if (!btc_aa_snk_data_queue || !btc_aa_snk_ctrl_queue || !btc_aa_snk_queue_set ) {
246246
goto error_exit;
247247
}
248248

249-
xTaskCreatePinnedToCore(btc_a2dp_sink_task_handler, BTC_MEDIA_TASK_NAME, BTC_MEDIA_TASK_STACK_SIZE, NULL, BTC_MEDIA_TASK_PRIO, &btc_aa_snk_task_hdl, BTC_MEDIA_TASK_PINNED_TO_CORE);
249+
xTaskCreatePinnedToCore(btc_a2dp_sink_task_handler, BTC_A2DP_SINK_TASK_NAME, BTC_A2DP_SINK_TASK_STACK_SIZE, NULL, BTC_A2DP_SINK_TASK_PRIO, &btc_aa_snk_task_hdl, BTC_A2DP_SINK_TASK_PINNED_TO_CORE);
250250
if (btc_aa_snk_task_hdl == NULL) {
251251
goto error_exit;
252252
}

components/bt/bluedroid/btc/profile/std/a2dp/btc_a2dp_source.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -307,21 +307,21 @@ bool btc_a2dp_source_startup(void)
307307

308308
APPL_TRACE_EVENT("## A2DP SOURCE START MEDIA THREAD ##");
309309

310-
btc_aa_src_queue_set = xQueueCreateSet(BTC_MEDIA_TASK_QUEUE_SET_LEN);
310+
btc_aa_src_queue_set = xQueueCreateSet(BTC_A2DP_SOURCE_TASK_QUEUE_SET_LEN);
311311
configASSERT(btc_aa_src_queue_set);
312-
btc_aa_src_data_queue = xQueueCreate(BTC_MEDIA_DATA_QUEUE_LEN, sizeof(void *));
312+
btc_aa_src_data_queue = xQueueCreate(BTC_A2DP_SOURCE_DATA_QUEUE_LEN, sizeof(void *));
313313
configASSERT(btc_aa_src_data_queue);
314314
xQueueAddToSet(btc_aa_src_data_queue, btc_aa_src_queue_set);
315315

316-
btc_aa_src_ctrl_queue = xQueueCreate(BTC_MEDIA_CTRL_QUEUE_LEN, sizeof(void *));
316+
btc_aa_src_ctrl_queue = xQueueCreate(BTC_A2DP_SOURCE_CTRL_QUEUE_LEN, sizeof(void *));
317317
configASSERT(btc_aa_src_ctrl_queue);
318318
xQueueAddToSet(btc_aa_src_ctrl_queue, btc_aa_src_queue_set);
319319

320320
if (!btc_aa_src_data_queue || !btc_aa_src_ctrl_queue || !btc_aa_src_queue_set ) {
321321
goto error_exit;
322322
}
323323

324-
xTaskCreatePinnedToCore(btc_a2dp_source_task_handler, BTC_MEDIA_TASK_NAME, BTC_MEDIA_TASK_STACK_SIZE, NULL, BTC_MEDIA_TASK_PRIO, &btc_aa_src_task_hdl, BTC_MEDIA_TASK_PINNED_TO_CORE);
324+
xTaskCreatePinnedToCore(btc_a2dp_source_task_handler, BTC_A2DP_SOURCE_TASK_NAME, BTC_A2DP_SOURCE_TASK_STACK_SIZE, NULL, BTC_A2DP_SOURCE_TASK_PRIO, &btc_aa_src_task_hdl, BTC_A2DP_SOURCE_TASK_PINNED_TO_CORE);
325325
if (btc_aa_src_task_hdl == NULL) {
326326
goto error_exit;
327327
}

components/bt/bluedroid/osi/include/thread.h

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,21 @@ typedef enum {
8383
#define BTC_TASK_PRIO (configMAX_PRIORITIES - 6)
8484
#define BTC_TASK_QUEUE_LEN 60
8585

86-
#define BTC_MEDIA_TASK_PINNED_TO_CORE (TASK_PINNED_TO_CORE)
87-
#define BTC_MEDIA_TASK_STACK_SIZE (2048 + BT_TASK_EXTRA_STACK_SIZE)
88-
#define BTC_MEDIA_TASK_NAME "BtcMediaT"
89-
#define BTC_MEDIA_TASK_PRIO (configMAX_PRIORITIES - 3)
90-
#define BTC_MEDIA_DATA_QUEUE_LEN (3)
91-
#define BTC_MEDIA_CTRL_QUEUE_LEN (5)
92-
#define BTC_MEDIA_TASK_QUEUE_SET_LEN (BTC_MEDIA_DATA_QUEUE_LEN + BTC_MEDIA_CTRL_QUEUE_LEN)
86+
#define BTC_A2DP_SINK_TASK_PINNED_TO_CORE (TASK_PINNED_TO_CORE)
87+
#define BTC_A2DP_SINK_TASK_STACK_SIZE (CONFIG_A2DP_SINK_TASK_STACK_SIZE + BT_TASK_EXTRA_STACK_SIZE) // by menuconfig
88+
#define BTC_A2DP_SINK_TASK_NAME "BtA2dSinkT"
89+
#define BTC_A2DP_SINK_TASK_PRIO (configMAX_PRIORITIES - 3)
90+
#define BTC_A2DP_SINK_DATA_QUEUE_LEN (3)
91+
#define BTC_A2DP_SINK_CTRL_QUEUE_LEN (5)
92+
#define BTC_A2DP_SINK_TASK_QUEUE_SET_LEN (BTC_A2DP_SINK_DATA_QUEUE_LEN + BTC_A2DP_SINK_CTRL_QUEUE_LEN)
93+
94+
#define BTC_A2DP_SOURCE_TASK_PINNED_TO_CORE (TASK_PINNED_TO_CORE)
95+
#define BTC_A2DP_SOURCE_TASK_STACK_SIZE (CONFIG_A2DP_SOURCE_TASK_STACK_SIZE + BT_TASK_EXTRA_STACK_SIZE) // by menuconfig
96+
#define BTC_A2DP_SOURCE_TASK_NAME "BtA2dSourceT"
97+
#define BTC_A2DP_SOURCE_TASK_PRIO (configMAX_PRIORITIES - 3)
98+
#define BTC_A2DP_SOURCE_DATA_QUEUE_LEN (3)
99+
#define BTC_A2DP_SOURCE_CTRL_QUEUE_LEN (5)
100+
#define BTC_A2DP_SOURCE_TASK_QUEUE_SET_LEN (BTC_A2DP_SOURCE_DATA_QUEUE_LEN + BTC_A2DP_SOURCE_CTRL_QUEUE_LEN)
93101

94102
#define TASK_POST_NON_BLOCKING (0)
95103
#define TASK_POST_BLOCKING (portMAX_DELAY)

0 commit comments

Comments
 (0)