Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2405a42a authored by Jack He's avatar Jack He
Browse files

Clean-up BTIF profile queue on profile shutdown

* Add btif_profile_cleanup(uuid) method to remove pending connection
  requests for individual UUIDs
* Call the above method in each profile's clean-up method
* Add unit tests for btif_profile_queue

Bug: 63790458
Test: make, unit tests, pair and connect car kits
Change-Id: I28288c295b7ca0259b2112c11b4e5a81d6f2e33c
Merged-In: I28288c295b7ca0259b2112c11b4e5a81d6f2e33c
(cherry picked from commit d366807102bce97e494e83570d757ebcb6a33b3c)
parent b650e0d8
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -119,3 +119,25 @@ cc_test {
    ],
    cflags: ["-DBUILDCFG"],
}

// btif profile queue unit tests for target
// ========================================================
cc_test {
    name: "net_test_btif_profile_queue",
    defaults: ["fluoride_defaults"],
    include_dirs: btifCommonIncludes,
    srcs: [
      "src/btif_profile_queue.cc",
      "test/btif_profile_queue_test.cc"
    ],
    shared_libs: [
        "liblog",
        "libhardware",
        "libcutils",
    ],
    static_libs: [
        "libbluetooth-types",
        "libosi",
    ],
    cflags: ["-DBUILDCFG"],
}
+1 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ typedef bt_status_t (*btif_connect_cb_t)(bt_bdaddr_t* bda, uint16_t uuid);

bt_status_t btif_queue_connect(uint16_t uuid, const bt_bdaddr_t* bda,
                               btif_connect_cb_t connect_cb);
void btif_queue_cleanup(uint16_t uuid);
void btif_queue_advance();
bt_status_t btif_queue_connect_next(void);
void btif_queue_release();
+2 −0
Original line number Diff line number Diff line
@@ -1419,6 +1419,7 @@ static void cleanup(int service_uuid) {
static void cleanup_src(void) {
  BTIF_TRACE_EVENT("%s", __func__);

  btif_queue_cleanup(UUID_SERVCLASS_AUDIO_SOURCE);
  if (bt_av_src_callbacks) {
    bt_av_src_callbacks = NULL;
    if (bt_av_sink_callbacks == NULL) cleanup(BTA_A2DP_SOURCE_SERVICE_ID);
@@ -1428,6 +1429,7 @@ static void cleanup_src(void) {
static void cleanup_sink(void) {
  BTIF_TRACE_EVENT("%s", __func__);

  btif_queue_cleanup(UUID_SERVCLASS_AUDIO_SINK);
  if (bt_av_sink_callbacks) {
    bt_av_sink_callbacks = NULL;
    if (bt_av_src_callbacks == NULL) cleanup(BTA_A2DP_SINK_SERVICE_ID);
+1 −0
Original line number Diff line number Diff line
@@ -1493,6 +1493,7 @@ bool btif_hf_call_terminated_recently() {
static void cleanup(void) {
  BTIF_TRACE_EVENT("%s", __func__);

  btif_queue_cleanup(UUID_SERVCLASS_AG_HANDSFREE);
  if (bt_hf_callbacks) {
#if (defined(BTIF_HF_SERVICES) && (BTIF_HF_SERVICES & BTA_HFP_SERVICE_MASK))
    btif_disable_service(BTA_HFP_SERVICE_ID);
+1 −0
Original line number Diff line number Diff line
@@ -708,6 +708,7 @@ static bt_status_t request_last_voice_tag_number(const bt_bdaddr_t* bd_addr) {
static void cleanup(void) {
  BTIF_TRACE_EVENT("%s", __func__);

  btif_queue_cleanup(UUID_SERVCLASS_HF_HANDSFREE);
  if (bt_hf_client_callbacks) {
    btif_disable_service(BTA_HFP_HS_SERVICE_ID);
    bt_hf_client_callbacks = NULL;
Loading