diff options
author | Andre Eisenbach <eisenbach@google.com> | 2015-02-05 20:00:45 -0800 |
---|---|---|
committer | Andre Eisenbach <eisenbach@google.com> | 2015-02-06 11:44:05 -0800 |
commit | dfb3b2f2595dc16fe7f576a4b0c2f5e73db0327f (patch) | |
tree | 2070fba49c3fbabe2766f7cf0797d21f63ff8a11 | |
parent | d6f2fa93052c1d9bdf6035ace6b32345013516db (diff) | |
download | bluedroid-dfb3b2f2595dc16fe7f576a4b0c2f5e73db0327f.tar.gz |
Add flag indicating encrypted connections to btif_dm_get_connection_state()lollipop-mr1-dev
Add a check to btif_dm_get_connection_state() to see if the currently
active connection is encrypted.
Bug: 19186961
Change-Id: I27bcc6e296d272ffd17c0bbe97631ffa4df57ccd
-rw-r--r-- | btif/src/btif_dm.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/btif/src/btif_dm.c b/btif/src/btif_dm.c index 1642fb9..4930017 100644 --- a/btif/src/btif_dm.c +++ b/btif/src/btif_dm.c @@ -113,6 +113,9 @@ BOOLEAN blacklistPairingRetries(BD_ADDR bd_addr) #define BOND_TYPE_PERSISTENT 1 #define BOND_TYPE_TEMPORARY 2 +#define ENCRYPTED_BREDR 2 +#define ENCRYPTED_LE 4 + typedef struct { bt_bond_state_t state; @@ -701,13 +704,33 @@ void btif_dm_cb_remove_bond(bt_bdaddr_t *bd_addr) ** Function btif_dm_get_connection_state ** ** Description Returns whether the remote device is currently connected +** and whether encryption is active for the connection ** -** Returns 0 if not connected +** Returns 0 if not connected; 1 if connected and > 1 if connection is +** encrypted ** *******************************************************************************/ uint16_t btif_dm_get_connection_state(const bt_bdaddr_t *bd_addr) { - return BTA_DmGetConnectionState((UINT8 *)bd_addr->address); + uint8_t *bda = (uint8_t*)bd_addr->address; + uint16_t rc = BTA_DmGetConnectionState(bda); + + if (rc != 0) + { + uint8_t flags = 0; + + BTM_GetSecurityFlagsByTransport(bda, &flags, BT_TRANSPORT_BR_EDR); + BTIF_TRACE_DEBUG("%s: security flags (BR/EDR)=0x%02x", __FUNCTION__, flags); + if (flags & BTM_SEC_FLAG_ENCRYPTED) + rc |= ENCRYPTED_BREDR; + + BTM_GetSecurityFlagsByTransport(bda, &flags, BT_TRANSPORT_LE); + BTIF_TRACE_DEBUG("%s: security flags (LE)=0x%02x", __FUNCTION__, flags); + if (flags & BTM_SEC_FLAG_ENCRYPTED) + rc |= ENCRYPTED_LE; + } + + return rc; } /******************************************************************************* |