]> granicus.if.org Git - esp-idf/commitdiff
component/bt: clean up profile call/callback handlers
authorwangmengyang <wangmengyang@espressif.com>
Wed, 8 Mar 2017 13:08:11 +0000 (21:08 +0800)
committerwangmengyang <wangmengyang@espressif.com>
Wed, 8 Mar 2017 13:08:11 +0000 (21:08 +0800)
1. remove the empty function btc_gap_bt_cb_handler();
2. separate the a2dp profile call/callback handers

components/bt/bluedroid/api/esp_a2dp_api.c
components/bt/bluedroid/btc/core/btc_task.c
components/bt/bluedroid/btc/profile/std/a2dp/btc_avk.c
components/bt/bluedroid/btc/profile/std/avrc/btc_avrc.c
components/bt/bluedroid/btc/profile/std/gap/btc_gap_bt.c
components/bt/bluedroid/btc/profile/std/include/btc_av.h
components/bt/bluedroid/btc/profile/std/include/btc_avrc.h
components/bt/bluedroid/btc/profile/std/include/btc_gap_bt.h

index aa3c5b13e8f470f06f41b39cbb63734c683d30db..a3f71fcaf01791eab6e00709f9b560b5950cc1f5 100644 (file)
@@ -96,18 +96,13 @@ esp_err_t esp_a2d_sink_disconnect(esp_bd_addr_t remote_bda)
     }
         
     bt_status_t stat;
-    btc_av_args_t arg;
     btc_msg_t msg;
     
     msg.sig = BTC_SIG_API_CALL;
     msg.pid = BTC_PID_A2DP;
-    msg.act = BTC_AV_DISCONNECT_REQ_EVT;
+    msg.act = BTC_AV_SINK_API_DISCONNECT_EVT;
 
-    memset(&arg, 0, sizeof(btc_av_args_t));
-    
-    // CHECK_BTAV_INIT(); // todo: move this function
-    memcpy(&(arg.disconnect), remote_bda, sizeof(bt_bdaddr_t));
     /* Switch to BTC context */
-    stat = btc_transfer_context(&msg, &arg, sizeof(btc_av_args_t), NULL);
+    stat = btc_transfer_context(&msg, NULL, 0, NULL);
     return (stat == BT_STATUS_SUCCESS) ? ESP_OK : ESP_FAIL;
 }
index 17936789ffd528630b99bb4e47d15d0574d77995..735ee3ab014bf259d45884d3efc4b7e13ba4b5f0 100644 (file)
@@ -40,7 +40,7 @@ static btc_func_t profile_tab[BTC_PID_NUM] = {
     [BTC_PID_GATTS]     = {btc_gatts_call_handler,      btc_gatts_cb_handler    },
     [BTC_PID_GATTC]     = {btc_gattc_call_handler,      btc_gattc_cb_handler    },
     [BTC_PID_GAP_BLE]   = {btc_gap_ble_call_handler,    btc_gap_ble_cb_handler  },
-    [BTC_PID_GAP_BT]    = {btc_gap_bt_call_handler,     btc_gap_bt_cb_handler   },
+    [BTC_PID_GAP_BT]    = {btc_gap_bt_call_handler,     NULL                    },
     [BTC_PID_SDP]       = {NULL, NULL},
     [BTC_PID_BLE_HID]   = {NULL, NULL},
     [BTC_PID_BT_HID]    = {NULL, NULL},
@@ -49,8 +49,8 @@ static btc_func_t profile_tab[BTC_PID_NUM] = {
     [BTC_PID_BLUFI]     = {btc_blufi_call_handler,      btc_blufi_cb_handler    },
     [BTC_PID_DM_SEC]    = {NULL,                        btc_dm_sec_cb_handler   },
     [BTC_PID_PRF_QUE]   = {btc_profile_queue_handler,   NULL                    },
-    [BTC_PID_A2DP]      = {btc_a2dp_evt_handler,        btc_a2dp_evt_handler    },
-    [BTC_PID_AVRC]      = {btc_avrc_evt_handler,        NULL                    }
+    [BTC_PID_A2DP]      = {btc_a2dp_call_handler,       btc_a2dp_cb_handler     },
+    [BTC_PID_AVRC]      = {btc_avrc_call_handler,       NULL                    }
 };
 
 /*****************************************************************************
index f67a2ea3a27d2878924a89e0271d8e876006ad96..3517469c2a488173f3582b6a7d52e09a44edf772 100644 (file)
@@ -89,15 +89,11 @@ static btc_av_cb_t btc_av_cb = {0};
 static TIMER_LIST_ENT tle_av_open_on_rc;
 
 /* both interface and media task needs to be ready to alloc incoming request */
-#define CHECK_BTAV_INIT() if (btc_av_cb.sm_handle == NULL)\
-{\
-     LOG_WARN("%s: BTAV not initialized\n", __FUNCTION__);\
-     return ESP_ERR_INVALID_STATE;\
-}\
-else\
-{\
-     LOG_INFO("%s\n", __FUNCTION__);\
-}
+#define CHECK_BTAV_INIT() do \
+{ \
+    assert (btc_av_cb.sm_handle != NULL); \
+} while (0)
+
 
 /* Helper macro to avoid code duplication in the state machine handlers */
 #define CHECK_RC_EVENT(e, d) \
@@ -865,7 +861,7 @@ static void bte_av_callback(tBTA_AV_EVT event, tBTA_AV *p_data)
     msg.sig = BTC_SIG_API_CB;
     msg.pid = BTC_PID_A2DP;
     msg.act = (uint8_t) event;
-    stat = btc_transfer_context(&msg, (btc_av_args_t *)p_data, sizeof(tBTA_AV), btc_av_event_deep_copy);
+    stat = btc_transfer_context(&msg, p_data, sizeof(tBTA_AV), btc_av_event_deep_copy);
 
     if (stat) {
         LOG_ERROR("%s transfer failed\n", __func__);
@@ -923,7 +919,7 @@ static void bte_av_media_callback(tBTA_AV_EVT event, tBTA_AV_MEDIA *p_data)
 **
 *******************************************************************************/
 
-bt_status_t btc_av_init()
+bt_status_t btc_av_init(void)
 {
     if (btc_av_cb.sm_handle == NULL) {
         if (!btc_a2dp_start_media_task()) {
@@ -956,11 +952,9 @@ bt_status_t btc_av_init()
 *******************************************************************************/
 bt_status_t btc_a2d_sink_init(void)
 {
-    LOG_INFO("%s()\n", __func__);
+    LOG_DEBUG("%s()\n", __func__);
 
-    bt_status_t status = btc_av_init();
-
-    return status;
+    return btc_av_init();
 }
 
 /*******************************************************************************
@@ -987,7 +981,7 @@ static bt_status_t connect_int(bt_bdaddr_t *bd_addr, uint16_t uuid)
 
 bt_status_t btc_a2d_sink_connect(bt_bdaddr_t* remote_bda)
 {
-    LOG_INFO("%s\n", __FUNCTION__);
+    LOG_DEBUG("%s\n", __FUNCTION__);
     CHECK_BTAV_INIT();
 
     return btc_queue_connect(UUID_SERVCLASS_AUDIO_SINK, remote_bda, connect_int);
@@ -1204,32 +1198,41 @@ void btc_av_clear_remote_suspend_flag(void)
     btc_av_cb.flags &= ~BTC_AV_FLAG_REMOTE_SUSPEND;
 }
 
-void btc_a2dp_evt_handler(btc_msg_t *msg)
+void btc_a2dp_call_handler(btc_msg_t *msg)
 {
-    if (msg->act < BTC_AV_MAX_SM_EVT) {
+    btc_av_args_t *arg = (btc_av_args_t *)(msg->arg);
+    switch (msg->act) {
+    case BTC_AV_SINK_CONFIG_REQ_EVT: {
         btc_sm_dispatch(btc_av_cb.sm_handle, msg->act, (void *)(msg->arg));
-    } else {
-        btc_av_args_t *arg = (btc_av_args_t *)(msg->arg);
-        switch (msg->act) {
-        case BTC_AV_SINK_API_INIT_EVT: {
-            btc_a2d_sink_init();
-            // todo: callback to application
-            break;
-        }
-        case BTC_AV_SINK_API_DEINIT_EVT: {
-            btc_a2d_sink_deinit();
-            // todo: callback to application
-            break;
-        }
-        case BTC_AV_SINK_API_CONNECT_EVT: {
-            btc_a2d_sink_connect(&arg->connect);
-            // todo: callback to application
-            break;
-        }
-        default:
-            LOG_WARN("%s : unhandled event: %d\n", __FUNCTION__, msg->act);
-        }
+        break;
+    }
+    case BTC_AV_SINK_API_INIT_EVT: {
+        btc_a2d_sink_init();
+        // todo: callback to application
+        break;
+    }
+    case BTC_AV_SINK_API_DEINIT_EVT: {
+        btc_a2d_sink_deinit();
+        // todo: callback to application
+        break;
+    }
+    case BTC_AV_SINK_API_CONNECT_EVT: {
+        btc_a2d_sink_connect(&arg->connect);
+        // todo: callback to application
+        break;
     }
+    case BTC_AV_SINK_API_DISCONNECT_EVT: {
+        CHECK_BTAV_INIT();
+        btc_sm_dispatch(btc_av_cb.sm_handle, BTC_AV_DISCONNECT_REQ_EVT, NULL);
+        break;
+    }
+    default:
+        LOG_WARN("%s : unhandled event: %d\n", __FUNCTION__, msg->act);
+    }
+}
 
+void btc_a2dp_cb_handler(btc_msg_t *msg)
+{
+    btc_sm_dispatch(btc_av_cb.sm_handle, msg->act, (void *)(msg->arg));
     btc_av_event_free_data(msg->act, msg->arg);
 }
index 97c7ae852355f393e1200db3c37079853589d782..397c51c4bd22d88eafb20c78407f937416fc7009 100644 (file)
@@ -441,7 +441,7 @@ static bt_status_t btc_avrc_ct_send_passthrough_cmd(uint8_t tl, uint8_t key_code
     return status;
 }
 
-void btc_avrc_evt_handler(btc_msg_t *msg)
+void btc_avrc_call_handler(btc_msg_t *msg)
 {
     btc_avrc_args_t *arg = (btc_avrc_args_t *)(msg->arg);
     switch (msg->act) {
index 7ef239ffb2d571c647972ece9e85c581957f8592..d5f508b081da47f9b412fdb746871f85d2e3533f 100644 (file)
@@ -85,8 +85,3 @@ void btc_gap_bt_call_handler(btc_msg_t *msg)
     }
     btc_gap_bt_arg_deep_free(msg);
 }
-
-void btc_gap_bt_cb_handler(btc_msg_t *msg)
-{
-    // todo
-}
index 8459623facb5ac5692d327cf1a105ea36b271c37..4813e4788fee636bab53caccf7f813b04b35fa57 100644 (file)
@@ -43,32 +43,30 @@ typedef enum {
     BTC_AV_STOP_STREAM_REQ_EVT,
     BTC_AV_SUSPEND_STREAM_REQ_EVT,
     BTC_AV_SINK_CONFIG_REQ_EVT,
-    BTC_AV_MAX_SM_EVT
 } btc_av_sm_event_t;
 
 typedef enum {
-    BTC_AV_SINK_API_INIT_EVT = BTC_AV_MAX_SM_EVT + 1,
+    BTC_AV_SINK_API_INIT_EVT = 0,
     BTC_AV_SINK_API_DEINIT_EVT,
     BTC_AV_SINK_API_CONNECT_EVT,
+    BTC_AV_SINK_API_DISCONNECT_EVT
 } btc_av_act_t;
 
 /* btc_av_args_t */
 typedef union {
-    // BTC_AV_SINK_CONFIG_REQ_EVT
+    // BTC_AV_SINK_CONFIG_REQ_EVT -- internal event
     esp_a2d_mcc_t mcc;
-    // BTC_AV_DISCONNECT_REQ_EVT
-    bt_bdaddr_t disconnect;
     // BTC_AV_SINK_API_CONNECT_EVT
     bt_bdaddr_t connect;
-    // Event set--tBTA_AV_EVT
-    tBTA_AV data;
 } btc_av_args_t;
 
 /*******************************************************************************
 **  BTC AV API
 ********************************************************************************/
 
-void btc_a2dp_evt_handler(btc_msg_t *msg);
+void btc_a2dp_call_handler(btc_msg_t *msg);
+
+void btc_a2dp_cb_handler(btc_msg_t *msg);
 
 /*******************************************************************************
 **
index 5d91dde2f5f3280966ae4ae93c6000bad6a5d542..b9efb9db3443f4205cc7269dea39e7a3f5d0267c 100644 (file)
@@ -69,6 +69,6 @@ BOOLEAN btc_rc_get_connected_peer(BD_ADDR peer_addr);
 /*******************************************************************************
 **  BTC AVRC API
 ********************************************************************************/
-void btc_avrc_evt_handler(btc_msg_t *msg);
+void btc_avrc_call_handler(btc_msg_t *msg);
 
 #endif /* __BTC_AVRC_H__ */
index 3eff89967755cd1273a238d94b14b32eacc5db6d..6c74522b27e10cc07e8659031bae0a5715df9467 100644 (file)
@@ -38,7 +38,6 @@ typedef union {
 } btc_gap_bt_args_t;
 
 void btc_gap_bt_call_handler(btc_msg_t *msg);
-void btc_gap_bt_cb_handler(btc_msg_t *msg);
 
 void btc_gap_bt_arg_deep_copy(btc_msg_t *msg, void *p_dest, void *p_src);