diff options
| author | Hemant Gupta <hemantg@codeaurora.org> | 2015-08-18 16:22:06 +0530 |
|---|---|---|
| committer | Linux Build Service Account <lnxbuild@localhost> | 2015-10-06 03:21:51 -0600 |
| commit | 257929ac3b056223e9bbf057363ed8b1a43bbd79 (patch) | |
| tree | e271e09e72c77302664f2c040ab793c070b2737e /device | |
| parent | 7548c0e3b73d40cf7e058121e55197379a4c131b (diff) | |
| download | android_system_bt-257929ac3b056223e9bbf057363ed8b1a43bbd79.tar.gz android_system_bt-257929ac3b056223e9bbf057363ed8b1a43bbd79.tar.bz2 android_system_bt-257929ac3b056223e9bbf057363ed8b1a43bbd79.zip | |
HID: Disable sniff for some particluar remote devices
This patch disables sniff on hid link for certain remote devices in
presence of SCO/esCO to prevent IOT issues of ACL disconnection on
HID link.
Change-Id: Ia9fe1d8f5578b55c0e708e8791c5c37c3dbc48ff
Diffstat (limited to 'device')
| -rw-r--r-- | device/include/interop.h | 8 | ||||
| -rw-r--r-- | device/include/interop_database.h | 3 | ||||
| -rw-r--r-- | device/src/interop.c | 3 |
3 files changed, 13 insertions, 1 deletions
diff --git a/device/include/interop.h b/device/include/interop.h index 69b62d752..2c50bf0ef 100644 --- a/device/include/interop.h +++ b/device/include/interop.h @@ -47,6 +47,14 @@ typedef enum { // To avoid degrading the user experience with those devices, authentication request // is not requested explictly. INTEROP_DISABLE_AUTH_FOR_HID_POINTING, + + // Some HID devices have problematic behaviour where when hid link is in Sniff + // and DUT is in Slave role for SCO link ( not eSCO) any solution cannot maintain + // the link as SCO scheduling over a short period will overlap with Sniff link due to + // slave drift. + // To avoid degrading the user experience with those devices, sniff is disabled from + // link policy when sco is active, and enabled when sco is disabled. + INTEROP_DISABLE_SNIFF_DURING_SCO, } interop_feature_t; // Check if a given |addr| matches a known interoperability workaround as identified diff --git a/device/include/interop_database.h b/device/include/interop_database.h index 38a2d1145..8837b92b4 100644 --- a/device/include/interop_database.h +++ b/device/include/interop_database.h @@ -94,4 +94,7 @@ static const interop_name_t interop_name_database[] = { static const interop_manufacturer_t interop_manufctr_database[] = { // Apple Devices {76, INTEROP_DISABLE_SDP_AFTER_PAIRING}, + + // Apple Devices + {76, INTEROP_DISABLE_SNIFF_DURING_SCO}, }; diff --git a/device/src/interop.c b/device/src/interop.c index 6036a1107..e3713eb02 100644 --- a/device/src/interop.c +++ b/device/src/interop.c @@ -33,6 +33,7 @@ static const char* interop_feature_string(const interop_feature_t feature) { CASE_RETURN_STR(INTEROP_AUTO_RETRY_PAIRING) CASE_RETURN_STR(INTEROP_DISABLE_SDP_AFTER_PAIRING) CASE_RETURN_STR(INTEROP_DISABLE_AUTH_FOR_HID_POINTING) + CASE_RETURN_STR(INTEROP_DISABLE_SNIFF_DURING_SCO) } return "UNKNOWN"; @@ -85,7 +86,7 @@ bool interop_manufacturer_match(const interop_feature_t feature, uint16_t manufa if (feature == interop_manufctr_database[i].feature && manufacturer == interop_manufctr_database[i].manufacturer) { char bdstr[20] = {0}; - LOG_WARN("%s() Device with manufacturer id: %d is a match for interop manufacturer" + LOG_WARN("%s() Device with manufacturer id: %d is a match for interop manufacturer " "workaround %s", __func__, manufacturer, interop_feature_string(feature)); return true; } |
