From 7fe86917d75785f33992b172e5241744a0f80e17 Mon Sep 17 00:00:00 2001 From: Pavlin Radoslavov Date: Thu, 8 Jun 2017 15:22:52 -0700 Subject: [PATCH] Ignore the Class Of Device if the value is invalid If a Bluetooth Device is dual-mode and is discoverable as both a Classic and a LE device, ignore unknown "zero" values triggered by the LE advertisements. Otherwise, those could overwrite a valid (previously discovered) Class Of Device. Bug: 37615863 Test: Manual with LG HBS1100 headset Change-Id: I5a0f6ef56248b41d973b850a5542475e45e0312d (cherry picked from commit a052757882927c042399d614bc298f9704ce07a3) --- btif/src/btif_dm.cc | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/btif/src/btif_dm.cc b/btif/src/btif_dm.cc index 511d30722..f5c2c8876 100644 --- a/btif/src/btif_dm.cc +++ b/btif/src/btif_dm.cc @@ -1243,7 +1243,6 @@ static void btif_dm_search_devices_evt(uint16_t event, char* p_param) { case BTA_DM_INQ_RES_EVT: { /* inquiry result */ - uint32_t cod; bt_bdname_t bdname; bt_bdaddr_t bdaddr; uint8_t remote_name_len; @@ -1258,13 +1257,6 @@ static void btif_dm_search_devices_evt(uint16_t event, char* p_param) { p_search_data->inq_res.device_type); bdname.name[0] = 0; - cod = devclass2uint(p_search_data->inq_res.dev_class); - - if (cod == 0) { - LOG_DEBUG(LOG_TAG, "%s cod is 0, set as unclassified", __func__); - cod = COD_UNCLASSIFIED; - } - if (!check_eir_remote_name(p_search_data, bdname.name, &remote_name_len)) check_cached_remote_name(p_search_data, bdname.name, &remote_name_len); @@ -1300,10 +1292,15 @@ static void btif_dm_search_devices_evt(uint16_t event, char* p_param) { } /* DEV_CLASS */ - BTIF_STORAGE_FILL_PROPERTY(&properties[num_properties], - BT_PROPERTY_CLASS_OF_DEVICE, sizeof(cod), - &cod); - num_properties++; + uint32_t cod = devclass2uint(p_search_data->inq_res.dev_class); + BTIF_TRACE_DEBUG("%s cod is 0x%06x", __func__, cod); + if (cod != 0) { + BTIF_STORAGE_FILL_PROPERTY(&properties[num_properties], + BT_PROPERTY_CLASS_OF_DEVICE, sizeof(cod), + &cod); + num_properties++; + } + /* DEV_TYPE */ /* FixMe: Assumption is that bluetooth.h and BTE enums match */ -- 2.11.0