summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sarvesh Kalwit <sarveshkalwit@google.com> 2024-06-05 00:14:36 +0000
committer Sarvesh Kalwit <sarveshkalwit@google.com> 2024-06-05 21:47:43 +0000
commit47db68b17a3680a0fd5f174cc9bb8430025c5d68 (patch)
tree766811e0013c00f181b4d9fd2b71fc70b78877a0
parent365a0ed8dbf947da6ab58e059f0766706c7ed7c9 (diff)
libbluetooth: Add BT_STATUS_DEVICE_NOT_FOUND metric
Add granularity to BT_STATUS_FAIL error codes by introducing a new BT_STATUS_DEVICE_NOT_FOUND metric, to be used when an effort to find a device by address or other identifier fails. Bug: 340296381 Test: m -j Flag: Exempt, metrics-only change Change-Id: I22664bfd3e26242803b8b996a813e93011f32d16
-rw-r--r--floss/pandora/floss/floss_enums.py1
-rw-r--r--system/btif/src/btif_hf.cc18
-rw-r--r--system/btif/src/btif_hf_client.cc30
-rw-r--r--system/btif/src/btif_hh.cc20
-rw-r--r--system/btif/src/btif_pan.cc2
-rw-r--r--system/btif/src/btif_rc.cc2
-rw-r--r--system/btif/src/btif_storage.cc4
-rw-r--r--system/include/hardware/bluetooth.h5
8 files changed, 43 insertions, 39 deletions
diff --git a/floss/pandora/floss/floss_enums.py b/floss/pandora/floss/floss_enums.py
index e78d722e9d..c04dd4015d 100644
--- a/floss/pandora/floss/floss_enums.py
+++ b/floss/pandora/floss/floss_enums.py
@@ -134,6 +134,7 @@ class BtStatus(enum.IntEnum):
JNI_THREAD_ATTACH_ERROR = 13
WAKE_LOCK_ERROR = 14
BT_STATUS_TIMEOUT = 15
+ DEVICE_NOT_FOUND = 16
class SocketType(enum.IntEnum):
diff --git a/system/btif/src/btif_hf.cc b/system/btif/src/btif_hf.cc
index b0647b5251..fa37beca5d 100644
--- a/system/btif/src/btif_hf.cc
+++ b/system/btif/src/btif_hf.cc
@@ -924,7 +924,7 @@ bt_status_t HeadsetInterface::Disconnect(RawAddress* bd_addr) {
}
if (!is_connected(bd_addr)) {
log::error("{} is not connected", *bd_addr);
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
}
BTA_AgClose(btif_hf_cb[idx].handle);
return BT_STATUS_SUCCESS;
@@ -964,7 +964,7 @@ bt_status_t HeadsetInterface::DisconnectAudio(RawAddress* bd_addr) {
}
if (!is_connected(bd_addr)) {
log::error("{} is not connected", *bd_addr);
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
}
BTA_AgAudioClose(btif_hf_cb[idx].handle);
return BT_STATUS_SUCCESS;
@@ -1051,7 +1051,7 @@ bt_status_t HeadsetInterface::VolumeControl(bthf_volume_type_t type, int volume,
}
if (!is_connected(bd_addr)) {
log::error("{} is not connected", *bd_addr);
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
}
tBTA_AG_RES_DATA ag_res = {};
ag_res.num = static_cast<uint16_t>(volume);
@@ -1099,7 +1099,7 @@ bt_status_t HeadsetInterface::CopsResponse(const char* cops,
}
if (!is_connected(bd_addr)) {
log::error("{} is not connected", *bd_addr);
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
}
tBTA_AG_RES_DATA ag_res = {};
/* Format the response */
@@ -1122,7 +1122,7 @@ bt_status_t HeadsetInterface::CindResponse(int svc, int num_active,
}
if (!is_connected(bd_addr)) {
log::error("{} is not connected", *bd_addr);
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
}
tBTA_AG_RES_DATA ag_res = {};
// per the errata 2043, call=1 implies atleast one call is in progress
@@ -1151,7 +1151,7 @@ bt_status_t HeadsetInterface::FormattedAtResponse(const char* rsp,
}
if (!is_connected(bd_addr)) {
log::error("{} is not connected", *bd_addr);
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
}
/* Format the response and send */
strncpy(ag_res.str, rsp, BTA_AG_AT_MAX_LEN);
@@ -1169,7 +1169,7 @@ bt_status_t HeadsetInterface::AtResponse(bthf_at_response_t response_code,
}
if (!is_connected(bd_addr)) {
log::error("{} is not connected", *bd_addr);
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
}
send_at_result(
(response_code == BTHF_AT_RESPONSE_OK) ? BTA_AG_OK_DONE : BTA_AG_OK_ERROR,
@@ -1189,7 +1189,7 @@ bt_status_t HeadsetInterface::ClccResponse(
}
if (!is_connected(bd_addr)) {
log::error("{} is not connected", *bd_addr);
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
}
tBTA_AG_RES_DATA ag_res = {};
/* Format the response */
@@ -1563,7 +1563,7 @@ bt_status_t HeadsetInterface::SendBsir(bool value, RawAddress* bd_addr) {
}
if (!is_connected(bd_addr)) {
log::error("{} not connected", *bd_addr);
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
}
tBTA_AG_RES_DATA ag_result = {};
ag_result.state = value;
diff --git a/system/btif/src/btif_hf_client.cc b/system/btif/src/btif_hf_client.cc
index e43e87cbbb..9d9eed1095 100644
--- a/system/btif/src/btif_hf_client.cc
+++ b/system/btif/src/btif_hf_client.cc
@@ -350,7 +350,7 @@ static bt_status_t disconnect(const RawAddress* bd_addr) {
******************************************************************************/
static bt_status_t connect_audio(const RawAddress* bd_addr) {
btif_hf_client_cb_t* cb = btif_hf_client_get_cb_by_bda(*bd_addr);
- if (cb == NULL || !is_connected(cb)) return BT_STATUS_FAIL;
+ if (cb == NULL || !is_connected(cb)) return BT_STATUS_DEVICE_NOT_FOUND;
CHECK_BTHF_CLIENT_SLC_CONNECTED(cb);
@@ -380,7 +380,7 @@ static bt_status_t connect_audio(const RawAddress* bd_addr) {
******************************************************************************/
static bt_status_t disconnect_audio(const RawAddress* bd_addr) {
btif_hf_client_cb_t* cb = btif_hf_client_get_cb_by_bda(*bd_addr);
- if (cb == NULL || !is_connected(cb)) return BT_STATUS_FAIL;
+ if (cb == NULL || !is_connected(cb)) return BT_STATUS_DEVICE_NOT_FOUND;
CHECK_BTHF_CLIENT_SLC_CONNECTED(cb);
@@ -399,7 +399,7 @@ static bt_status_t disconnect_audio(const RawAddress* bd_addr) {
******************************************************************************/
static bt_status_t start_voice_recognition(const RawAddress* bd_addr) {
btif_hf_client_cb_t* cb = btif_hf_client_get_cb_by_bda(*bd_addr);
- if (cb == NULL || !is_connected(cb)) return BT_STATUS_FAIL;
+ if (cb == NULL || !is_connected(cb)) return BT_STATUS_DEVICE_NOT_FOUND;
CHECK_BTHF_CLIENT_SLC_CONNECTED(cb);
@@ -421,7 +421,7 @@ static bt_status_t start_voice_recognition(const RawAddress* bd_addr) {
******************************************************************************/
static bt_status_t stop_voice_recognition(const RawAddress* bd_addr) {
btif_hf_client_cb_t* cb = btif_hf_client_get_cb_by_bda(*bd_addr);
- if (cb == NULL || !is_connected(cb)) return BT_STATUS_FAIL;
+ if (cb == NULL || !is_connected(cb)) return BT_STATUS_DEVICE_NOT_FOUND;
CHECK_BTHF_CLIENT_SLC_CONNECTED(cb);
@@ -444,7 +444,7 @@ static bt_status_t stop_voice_recognition(const RawAddress* bd_addr) {
static bt_status_t volume_control(const RawAddress* bd_addr,
bthf_client_volume_type_t type, int volume) {
btif_hf_client_cb_t* cb = btif_hf_client_get_cb_by_bda(*bd_addr);
- if (cb == NULL || !is_connected(cb)) return BT_STATUS_FAIL;
+ if (cb == NULL || !is_connected(cb)) return BT_STATUS_DEVICE_NOT_FOUND;
CHECK_BTHF_CLIENT_SLC_CONNECTED(cb);
@@ -473,7 +473,7 @@ static bt_status_t volume_control(const RawAddress* bd_addr,
******************************************************************************/
static bt_status_t dial(const RawAddress* bd_addr, const char* number) {
btif_hf_client_cb_t* cb = btif_hf_client_get_cb_by_bda(*bd_addr);
- if (cb == NULL || !is_connected(cb)) return BT_STATUS_FAIL;
+ if (cb == NULL || !is_connected(cb)) return BT_STATUS_DEVICE_NOT_FOUND;
CHECK_BTHF_CLIENT_SLC_CONNECTED(cb);
@@ -496,7 +496,7 @@ static bt_status_t dial(const RawAddress* bd_addr, const char* number) {
******************************************************************************/
static bt_status_t dial_memory(const RawAddress* bd_addr, int location) {
btif_hf_client_cb_t* cb = btif_hf_client_get_cb_by_bda(*bd_addr);
- if (cb == NULL || !is_connected(cb)) return BT_STATUS_FAIL;
+ if (cb == NULL || !is_connected(cb)) return BT_STATUS_DEVICE_NOT_FOUND;
CHECK_BTHF_CLIENT_SLC_CONNECTED(cb);
@@ -517,7 +517,7 @@ static bt_status_t handle_call_action(const RawAddress* bd_addr,
bthf_client_call_action_t action,
int idx) {
btif_hf_client_cb_t* cb = btif_hf_client_get_cb_by_bda(*bd_addr);
- if (cb == NULL || !is_connected(cb)) return BT_STATUS_FAIL;
+ if (cb == NULL || !is_connected(cb)) return BT_STATUS_DEVICE_NOT_FOUND;
CHECK_BTHF_CLIENT_SLC_CONNECTED(cb);
@@ -605,7 +605,7 @@ static bt_status_t handle_call_action(const RawAddress* bd_addr,
******************************************************************************/
static bt_status_t query_current_calls(const RawAddress* bd_addr) {
btif_hf_client_cb_t* cb = btif_hf_client_get_cb_by_bda(*bd_addr);
- if (cb == NULL || !is_connected(cb)) return BT_STATUS_FAIL;
+ if (cb == NULL || !is_connected(cb)) return BT_STATUS_DEVICE_NOT_FOUND;
CHECK_BTHF_CLIENT_SLC_CONNECTED(cb);
@@ -628,7 +628,7 @@ static bt_status_t query_current_calls(const RawAddress* bd_addr) {
******************************************************************************/
static bt_status_t query_current_operator_name(const RawAddress* bd_addr) {
btif_hf_client_cb_t* cb = btif_hf_client_get_cb_by_bda(*bd_addr);
- if (cb == NULL || !is_connected(cb)) return BT_STATUS_FAIL;
+ if (cb == NULL || !is_connected(cb)) return BT_STATUS_DEVICE_NOT_FOUND;
CHECK_BTHF_CLIENT_SLC_CONNECTED(cb);
@@ -647,7 +647,7 @@ static bt_status_t query_current_operator_name(const RawAddress* bd_addr) {
******************************************************************************/
static bt_status_t retrieve_subscriber_info(const RawAddress* bd_addr) {
btif_hf_client_cb_t* cb = btif_hf_client_get_cb_by_bda(*bd_addr);
- if (cb == NULL || !is_connected(cb)) return BT_STATUS_FAIL;
+ if (cb == NULL || !is_connected(cb)) return BT_STATUS_DEVICE_NOT_FOUND;
CHECK_BTHF_CLIENT_SLC_CONNECTED(cb);
@@ -666,7 +666,7 @@ static bt_status_t retrieve_subscriber_info(const RawAddress* bd_addr) {
******************************************************************************/
static bt_status_t send_dtmf(const RawAddress* bd_addr, char code) {
btif_hf_client_cb_t* cb = btif_hf_client_get_cb_by_bda(*bd_addr);
- if (cb == NULL || !is_connected(cb)) return BT_STATUS_FAIL;
+ if (cb == NULL || !is_connected(cb)) return BT_STATUS_DEVICE_NOT_FOUND;
CHECK_BTHF_CLIENT_SLC_CONNECTED(cb);
@@ -685,7 +685,7 @@ static bt_status_t send_dtmf(const RawAddress* bd_addr, char code) {
******************************************************************************/
static bt_status_t request_last_voice_tag_number(const RawAddress* bd_addr) {
btif_hf_client_cb_t* cb = btif_hf_client_get_cb_by_bda(*bd_addr);
- if (cb == NULL || !is_connected(cb)) return BT_STATUS_FAIL;
+ if (cb == NULL || !is_connected(cb)) return BT_STATUS_DEVICE_NOT_FOUND;
CHECK_BTHF_CLIENT_SLC_CONNECTED(cb);
@@ -727,7 +727,7 @@ static void cleanup(void) {
static bt_status_t send_at_cmd(const RawAddress* bd_addr, int cmd, int val1,
int val2, const char* arg) {
btif_hf_client_cb_t* cb = btif_hf_client_get_cb_by_bda(*bd_addr);
- if (cb == NULL || !is_connected(cb)) return BT_STATUS_FAIL;
+ if (cb == NULL || !is_connected(cb)) return BT_STATUS_DEVICE_NOT_FOUND;
CHECK_BTHF_CLIENT_SLC_CONNECTED(cb);
@@ -749,7 +749,7 @@ static bt_status_t send_at_cmd(const RawAddress* bd_addr, int cmd, int val1,
******************************************************************************/
static bt_status_t send_android_at(const RawAddress* bd_addr, const char* arg) {
btif_hf_client_cb_t* cb = btif_hf_client_get_cb_by_bda(*bd_addr);
- if (cb == NULL || !is_connected(cb)) return BT_STATUS_FAIL;
+ if (cb == NULL || !is_connected(cb)) return BT_STATUS_DEVICE_NOT_FOUND;
CHECK_BTHF_CLIENT_SLC_CONNECTED(cb);
diff --git a/system/btif/src/btif_hh.cc b/system/btif/src/btif_hh.cc
index 57e039609e..28a011823c 100644
--- a/system/btif/src/btif_hh.cc
+++ b/system/btif/src/btif_hh.cc
@@ -781,7 +781,7 @@ bt_status_t btif_hh_virtual_unplug(const tAclLinkSpec& link_spec) {
},
link_spec));
}
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
}
}
@@ -1723,7 +1723,7 @@ static bt_status_t virtual_unplug(RawAddress* bd_addr, tBLE_ADDR_TYPE addr_type,
btif_hh_device_t* p_dev = btif_hh_find_dev_by_link_spec(link_spec);
if (!p_dev) {
BTHH_LOG_UNKNOWN_LINK(link_spec);
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
}
btif_transfer_context(btif_hh_handle_evt, BTIF_HH_VUP_REQ_EVT,
(char*)&link_spec, sizeof(tAclLinkSpec), NULL);
@@ -1754,7 +1754,7 @@ static bt_status_t get_idle_time(RawAddress* bd_addr, tBLE_ADDR_TYPE addr_type,
btif_hh_device_t* p_dev = btif_hh_find_connected_dev_by_link_spec(link_spec);
if (p_dev == NULL) {
BTHH_LOG_UNKNOWN_LINK(link_spec);
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
}
BTA_HhGetIdle(p_dev->dev_handle);
@@ -1786,7 +1786,7 @@ static bt_status_t set_idle_time(RawAddress* bd_addr, tBLE_ADDR_TYPE addr_type,
btif_hh_device_t* p_dev = btif_hh_find_connected_dev_by_link_spec(link_spec);
if (p_dev == NULL) {
BTHH_LOG_UNKNOWN_LINK(link_spec);
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
}
BTA_HhSetIdle(p_dev->dev_handle, idle_time);
@@ -1869,7 +1869,7 @@ static bt_status_t get_protocol(RawAddress* bd_addr, tBLE_ADDR_TYPE addr_type,
btif_hh_device_t* p_dev = btif_hh_find_connected_dev_by_link_spec(link_spec);
if (!p_dev) {
BTHH_LOG_UNKNOWN_LINK(link_spec);
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
}
BTA_HhGetProtoMode(p_dev->dev_handle);
@@ -1904,7 +1904,7 @@ static bt_status_t set_protocol(RawAddress* bd_addr, tBLE_ADDR_TYPE addr_type,
p_dev = btif_hh_find_connected_dev_by_link_spec(link_spec);
if (p_dev == NULL) {
BTHH_LOG_UNKNOWN_LINK(link_spec);
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
} else if (protocolMode != BTA_HH_PROTO_RPT_MODE &&
protocolMode != BTA_HH_PROTO_BOOT_MODE) {
log::warn("device proto_mode = {}", proto_mode);
@@ -1945,7 +1945,7 @@ static bt_status_t get_report(RawAddress* bd_addr, tBLE_ADDR_TYPE addr_type,
p_dev = btif_hh_find_connected_dev_by_link_spec(link_spec);
if (p_dev == NULL) {
BTHH_LOG_UNKNOWN_LINK(link_spec);
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
} else if (((int)reportType) <= BTA_HH_RPTT_RESRV ||
((int)reportType) > BTA_HH_RPTT_FEATURE) {
log::error("report type={} not supported", reportType);
@@ -1987,7 +1987,7 @@ static bt_status_t get_report_reply(RawAddress* bd_addr,
btif_hh_device_t* p_dev = btif_hh_find_connected_dev_by_link_spec(link_spec);
if (p_dev == NULL) {
BTHH_LOG_UNKNOWN_LINK(link_spec);
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
}
bta_hh_co_get_rpt_rsp(p_dev->dev_handle, (tBTA_HH_STATUS)status,
@@ -2022,7 +2022,7 @@ static bt_status_t set_report(RawAddress* bd_addr, tBLE_ADDR_TYPE addr_type,
p_dev = btif_hh_find_connected_dev_by_link_spec(link_spec);
if (p_dev == NULL) {
BTHH_LOG_UNKNOWN_LINK(link_spec);
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
} else if (((int)reportType) <= BTA_HH_RPTT_RESRV ||
((int)reportType) > BTA_HH_RPTT_FEATURE) {
log::error("report type={} not supported", reportType);
@@ -2079,7 +2079,7 @@ static bt_status_t send_data(RawAddress* bd_addr, tBLE_ADDR_TYPE addr_type,
btif_hh_device_t* p_dev = btif_hh_find_connected_dev_by_link_spec(link_spec);
if (p_dev == NULL) {
BTHH_LOG_UNKNOWN_LINK(link_spec);
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
} else {
int hex_bytes_filled;
size_t len = (strlen(data) + 1) / 2;
diff --git a/system/btif/src/btif_pan.cc b/system/btif/src/btif_pan.cc
index 0daa7da967..3b8bbbd2b5 100644
--- a/system/btif/src/btif_pan.cc
+++ b/system/btif/src/btif_pan.cc
@@ -246,7 +246,7 @@ static bt_status_t btpan_disconnect(const RawAddress* bd_addr) {
BTA_PanClose(conn->handle);
return BT_STATUS_SUCCESS;
}
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
}
static int pan_pth = -1;
diff --git a/system/btif/src/btif_rc.cc b/system/btif/src/btif_rc.cc
index 3b6e545243..65603f31fb 100644
--- a/system/btif/src/btif_rc.cc
+++ b/system/btif/src/btif_rc.cc
@@ -4678,7 +4678,7 @@ static bt_status_t get_current_metadata_cmd(const RawAddress& bd_addr) {
btif_rc_device_cb_t* p_dev = btif_rc_get_device_by_bda(bd_addr);
if (p_dev == NULL) {
log::error("p_dev NULL");
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
}
const uint32_t* attr_list = get_requested_attributes_list(p_dev);
const uint8_t attr_list_size = get_requested_attributes_list_size(p_dev);
diff --git a/system/btif/src/btif_storage.cc b/system/btif/src/btif_storage.cc
index 60807d0d9a..267136ab81 100644
--- a/system/btif/src/btif_storage.cc
+++ b/system/btif/src/btif_storage.cc
@@ -407,7 +407,7 @@ bt_status_t btif_in_fetch_bonded_device(const std::string& bdstr) {
if ((btif_in_fetch_bonded_ble_device(bdstr, false, NULL) !=
BT_STATUS_SUCCESS) &&
(!bt_linkkey_file_found)) {
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
}
return BT_STATUS_SUCCESS;
}
@@ -1269,7 +1269,7 @@ bt_status_t btif_in_fetch_bonded_ble_device(
if (key_found) return BT_STATUS_SUCCESS;
}
- return BT_STATUS_FAIL;
+ return BT_STATUS_DEVICE_NOT_FOUND;
}
void btif_storage_invoke_addr_type_update(const RawAddress& remote_bd_addr,
diff --git a/system/include/hardware/bluetooth.h b/system/include/hardware/bluetooth.h
index 65b17af292..069eb19c62 100644
--- a/system/include/hardware/bluetooth.h
+++ b/system/include/hardware/bluetooth.h
@@ -107,7 +107,8 @@ typedef enum {
BT_STATUS_JNI_ENVIRONMENT_ERROR,
BT_STATUS_JNI_THREAD_ATTACH_ERROR,
BT_STATUS_WAKELOCK_ERROR,
- BT_STATUS_TIMEOUT
+ BT_STATUS_TIMEOUT,
+ BT_STATUS_DEVICE_NOT_FOUND
} bt_status_t;
inline std::string bt_status_text(const bt_status_t& status) {
@@ -144,6 +145,8 @@ inline std::string bt_status_text(const bt_status_t& status) {
return std::string("wakelock_error");
case BT_STATUS_TIMEOUT:
return std::string("timeout_error");
+ case BT_STATUS_DEVICE_NOT_FOUND:
+ return std::string("device_not_found");
default:
return std::string("UNKNOWN");
}