]> granicus.if.org Git - esp-idf/commitdiff
component/bt: make A2DP sink task size configurable through menuconfig
authorwangmengyang <wangmengyang@espressif.com>
Mon, 5 Feb 2018 11:47:58 +0000 (19:47 +0800)
committerwangmengyang <wangmengyang@espressif.com>
Mon, 5 Feb 2018 11:47:58 +0000 (19:47 +0800)
1. make the A2DP sink task stack size configurable through menuconfig

# Conflicts:
# components/bt/Kconfig
# components/bt/bluedroid/api/include/esp_a2dp_api.h
# components/bt/bluedroid/btc/profile/std/a2dp/btc_a2dp_sink.c
# components/bt/bluedroid/btc/profile/std/a2dp/btc_a2dp_source.c
# components/bt/bluedroid/osi/include/thread.h

components/bt/Kconfig
components/bt/bluedroid/api/include/esp_a2dp_api.h
components/bt/bluedroid/btc/profile/std/a2dp/btc_media_task.c
components/bt/bluedroid/osi/include/thread.h

index 8a4f5248f0e0e68e012cc8fdf2680ea4f59220ac..302064dca6af1fcdeeef253f4c7c510410f78d33 100644 (file)
@@ -113,6 +113,13 @@ config CLASSIC_BT_ENABLED
     help
         For now this option needs "SMP_ENABLE" to be set to yes
 
+config A2DP_SINK_TASK_STACK_SIZE
+    int "A2DP sink (audio stream decoding) task stack size"
+    depends on CLASSIC_BT_ENABLED
+    default 2048
+    help
+        This affects the stack size of A2DP sink task which invokes the data callback function.
+
 config GATTS_ENABLE
     bool "Include GATT server module(GATTS)"
     depends on BLUEDROID_ENABLED
index 7f6868dde14a0edae1a0dc5c379e16cb48493d43..332bbdae0677fda81a11116f16f199384e1e0368 100644 (file)
@@ -138,9 +138,10 @@ esp_err_t esp_a2d_register_callback(esp_a2d_cb_t callback);
 
 /**
  * @brief           Register A2DP sink data output function; For now the output is PCM data stream decoded
- *                  from SBC format. This function should be called only after esp_bluedroid_enable() 
- *                  completes successfully
- *                  
+ *                  from SBC format. This function should be called only after esp_bluedroid_enable()
+ *                  completes successfully, used only by A2DP sink. The callback is invoked in the context
+ *                  of A2DP sink task whose stack size is configurable through menuconfig
+ *
  * @param[in]       callback: A2DP data callback function
  *
  * @return
index 1b6db63c4757c46c602ca82011e0ad03768f0ac3..94e77cd717c50aa56f512f588f23e1715dd654ec 100644 (file)
@@ -272,13 +272,13 @@ bool btc_a2dp_start_media_task(void)
 
     APPL_TRACE_EVENT("## A2DP START MEDIA THREAD ##");
 
-    xBtcMediaQueueSet = xQueueCreateSet(BTC_MEDIA_TASK_QUEUE_SET_LEN);
+    xBtcMediaQueueSet = xQueueCreateSet(BTC_A2DP_SINK_TASK_QUEUE_SET_LEN);
     configASSERT(xBtcMediaQueueSet);
-    xBtcMediaDataQueue = xQueueCreate(BTC_MEDIA_DATA_QUEUE_LEN, sizeof(void *));
+    xBtcMediaDataQueue = xQueueCreate(BTC_A2DP_SINK_DATA_QUEUE_LEN, sizeof(void *));
     configASSERT(xBtcMediaDataQueue);
     xQueueAddToSet(xBtcMediaDataQueue, xBtcMediaQueueSet);
 
-    xBtcMediaCtrlQueue = xQueueCreate(BTC_MEDIA_CTRL_QUEUE_LEN, sizeof(void *));
+    xBtcMediaCtrlQueue = xQueueCreate(BTC_A2DP_SINK_CTRL_QUEUE_LEN, sizeof(void *));
     configASSERT(xBtcMediaCtrlQueue);
     xQueueAddToSet(xBtcMediaCtrlQueue, xBtcMediaQueueSet);
 
@@ -286,7 +286,7 @@ bool btc_a2dp_start_media_task(void)
         goto error_exit;
     }
 
-    xTaskCreatePinnedToCore(btc_media_task_handler, "BtcMediaT\n", 2048, NULL, configMAX_PRIORITIES - 3, &xBtcMediaTaskHandle, 0);
+    xTaskCreatePinnedToCore(btc_media_task_handler, BTC_A2DP_SINK_TASK_NAME, BTC_A2DP_SINK_TASK_STACK_SIZE, NULL, BTC_A2DP_SINK_TASK_PRIO, &xBtcMediaTaskHandle, BTC_A2DP_SINK_TASK_PINNED_TO_CORE);
     if (xBtcMediaTaskHandle == NULL) {
         goto error_exit;
     }
index 9ac5da6bd98f5b44b7528b4a92665f8749f15c97..f9b29dcfda581944b2b5d22ef76693d1580af1b8 100644 (file)
@@ -83,13 +83,14 @@ typedef enum {
 #define BTC_TASK_PRIO                   (configMAX_PRIORITIES - 6)
 #define BTC_TASK_QUEUE_LEN              60
 
-#define BTC_MEDIA_TASK_PINNED_TO_CORE   (TASK_PINNED_TO_CORE)
-#define BTC_MEDIA_TASK_STACK_SIZE       (CONFIG_BTC_TASK_STACK_SIZE + BT_TASK_EXTRA_STACK_SIZE)
-#define BTC_MEDIA_TASK_NAME             "BtcMediaT"
-#define BTC_MEDIA_TASK_PRIO             (configMAX_PRIORITIES - 3)
-#define BTC_MEDIA_DATA_QUEUE_LEN        (1)
-#define BTC_MEDIA_CTRL_QUEUE_LEN        (5)
-#define BTC_MEDIA_TASK_QUEUE_SET_LEN    (BTC_MEDIA_DATA_QUEUE_LEN + BTC_MEDIA_CTRL_QUEUE_LEN)
+#define BTC_A2DP_SINK_TASK_PINNED_TO_CORE     (TASK_PINNED_TO_CORE)
+#define BTC_A2DP_SINK_TASK_STACK_SIZE         (CONFIG_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               (configMAX_PRIORITIES - 3)
+#define BTC_A2DP_SINK_DATA_QUEUE_LEN          (1)
+#define BTC_A2DP_SINK_CTRL_QUEUE_LEN          (5)
+#define BTC_A2DP_SINK_TASK_QUEUE_SET_LEN      (BTC_A2DP_SINK_DATA_QUEUE_LEN + BTC_A2DP_SINK_CTRL_QUEUE_LEN)
+
 
 #define TASK_POST_NON_BLOCKING          (0)
 #define TASK_POST_BLOCKING              (portMAX_DELAY)