]> granicus.if.org Git - esp-idf/commitdiff
component/bt: Change scan mode after connected or disconnected
authorbaohongde <baohongde@espressif.com>
Tue, 15 May 2018 08:35:48 +0000 (16:35 +0800)
committerbot <bot@espressif.com>
Wed, 16 May 2018 10:28:03 +0000 (10:28 +0000)
examples/bluetooth/a2dp_sink/main/bt_app_av.c
examples/bluetooth/a2dp_source/main/main.c

index b1c432c576d884ea4b832db8f3acf20687a6572e..b43456a66377bb4eaae05212169fe80f8b19da66 100644 (file)
@@ -97,6 +97,11 @@ static void bt_av_hdl_a2d_evt(uint16_t event, void *p_param)
         uint8_t *bda = a2d->conn_stat.remote_bda;
         ESP_LOGI(BT_AV_TAG, "A2DP connection state: %s, [%02x:%02x:%02x:%02x:%02x:%02x]",
              m_a2d_conn_state_str[a2d->conn_stat.state], bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]);
+        if (a2d->conn_stat.state == ESP_A2D_CONNECTION_STATE_DISCONNECTED) {
+            esp_bt_gap_set_scan_mode(ESP_BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE);
+        } else if (a2d->conn_stat.state == ESP_A2D_CONNECTION_STATE_CONNECTED){
+            esp_bt_gap_set_scan_mode(ESP_BT_SCAN_MODE_NONE);
+        }
         break;
     }
     case ESP_A2D_AUDIO_STATE_EVT: {
index a03080923a6ee103ed23a63b5b63fa7f7623769e..eb633623014f656c43482dd4b424ad42c1444ccf 100644 (file)
@@ -386,7 +386,7 @@ static void bt_app_av_state_connecting(uint16_t event, void *param)
             ESP_LOGI(BT_AV_TAG, "a2dp connected");
             m_a2d_state =  APP_AV_STATE_CONNECTED;
             m_media_state = APP_AV_MEDIA_STATE_IDLE;
-
+            esp_bt_gap_set_scan_mode(ESP_BT_SCAN_MODE_NONE);
         } else if (a2d->conn_stat.state == ESP_A2D_CONNECTION_STATE_DISCONNECTED) {
             m_a2d_state =  APP_AV_STATE_UNCONNECTED;
         }
@@ -482,6 +482,7 @@ static void bt_app_av_state_connected(uint16_t event, void *param)
         if (a2d->conn_stat.state == ESP_A2D_CONNECTION_STATE_DISCONNECTED) {
             ESP_LOGI(BT_AV_TAG, "a2dp disconnected");
             m_a2d_state = APP_AV_STATE_UNCONNECTED;
+            esp_bt_gap_set_scan_mode(ESP_BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE);
         }
         break;
     }
@@ -515,6 +516,7 @@ static void bt_app_av_state_disconnecting(uint16_t event, void *param)
         if (a2d->conn_stat.state == ESP_A2D_CONNECTION_STATE_DISCONNECTED) {
             ESP_LOGI(BT_AV_TAG, "a2dp disconnected");
             m_a2d_state =  APP_AV_STATE_UNCONNECTED;
+            esp_bt_gap_set_scan_mode(ESP_BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE);
         }
         break;
     }