Loading system/btif/include/btif_config.h +6 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,9 @@ #ifndef BTIF_CONFIG_H #define BTIF_CONFIG_H #include "data_types.h" #include "bt_types.h" #ifdef __cplusplus #include <stdint.h> extern "C" { Loading Loading @@ -71,6 +74,9 @@ int btif_config_enum(btif_config_enum_callback cb, void* user_data); int btif_config_save(); void btif_config_flush(); BOOLEAN btif_get_address_type(const BD_ADDR bd_addr, int *p_addr_type); BOOLEAN btif_get_device_type(const BD_ADDR bd_addr, int *p_device_type); #ifdef __cplusplus } #endif Loading system/btif/include/btif_gatt_util.h +0 −2 Original line number Diff line number Diff line Loading @@ -37,7 +37,5 @@ uint16_t get_uuid16(tBT_UUID *p_uuid); void btif_gatt_check_encrypted_link(BD_ADDR bd_addr); BOOLEAN btif_get_device_type(BD_ADDR bd_addr, int *addr_type, int *device_type); #endif system/btif/src/btif_config.c +44 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,8 @@ #define LOG_TAG "btif_config" #include <hardware/bluetooth.h> #include "data_types.h" #include "bd.h" #include "btif_api.h" #include "btif_config.h" #include "btif_config_util.h" Loading Loading @@ -362,6 +364,46 @@ void btif_config_flush() save_cfg(); unlock_slot(&slot_lock); } /******************************************************************************* * Device information *******************************************************************************/ BOOLEAN btif_get_device_type(const BD_ADDR bd_addr, int *p_device_type) { if (p_device_type == NULL) return FALSE; bt_bdaddr_t bda; bdcpy(bda.address, bd_addr); char bd_addr_str[18] = {0}; bd2str(&bda, &bd_addr_str); if (!btif_config_get_int("Remote", bd_addr_str, "DevType", p_device_type)) return FALSE; ALOGD("%s: Device [%s] type %d", __FUNCTION__, bd_addr_str, *p_device_type); return TRUE; } BOOLEAN btif_get_address_type(const BD_ADDR bd_addr, int *p_addr_type) { if (p_addr_type == NULL) return FALSE; bt_bdaddr_t bda; bdcpy(bda.address, bd_addr); char bd_addr_str[18] = {0}; bd2str(&bda, &bd_addr_str); if (!btif_config_get_int("Remote", bd_addr_str, "AddrType", p_addr_type)) return FALSE; ALOGD("%s: Device [%s] address type %d", __FUNCTION__, bd_addr_str, *p_addr_type); return TRUE; } ///////////////////////////////////////////////////////////////////////////////////////////// static inline short alloc_node(cfg_node* p, short grow) { Loading Loading @@ -944,4 +986,6 @@ static void cfg_test_read() // debug("after removed, btif_config_get ret:%d, Remote devices, 00:22:5F:97:56:04 Class Delete:%s", ret, class); // debug("out"); } #endif system/btif/src/btif_dm.c +40 −7 Original line number Diff line number Diff line Loading @@ -801,10 +801,15 @@ static void btif_dm_pin_req_evt(tBTA_DM_PIN_REQ *p_pin_req) bt_bdname_t bd_name; UINT32 cod; bt_pin_code_t pin_code; int dev_type; /* Remote properties update */ if (!btif_get_device_type(p_pin_req->bd_addr, &dev_type)) { dev_type = BT_DEVICE_TYPE_BREDR; } btif_update_remote_properties(p_pin_req->bd_addr, p_pin_req->bd_name, p_pin_req->dev_class, BT_DEVICE_TYPE_BREDR); p_pin_req->dev_class, (tBT_DEVICE_TYPE) dev_type); bdcpy(bd_addr.address, p_pin_req->bd_addr); memcpy(bd_name.name, p_pin_req->bd_name, BD_NAME_LEN); Loading Loading @@ -881,12 +886,17 @@ static void btif_dm_ssp_cfm_req_evt(tBTA_DM_SP_CFM_REQ *p_ssp_cfm_req) bt_bdname_t bd_name; UINT32 cod; BOOLEAN is_incoming = !(pairing_cb.state == BT_BOND_STATE_BONDING); int dev_type; BTIF_TRACE_DEBUG("%s", __FUNCTION__); /* Remote properties update */ if (!btif_get_device_type(p_ssp_cfm_req->bd_addr, &dev_type)) { dev_type = BT_DEVICE_TYPE_BREDR; } btif_update_remote_properties(p_ssp_cfm_req->bd_addr, p_ssp_cfm_req->bd_name, p_ssp_cfm_req->dev_class, BT_DEVICE_TYPE_BREDR); p_ssp_cfm_req->dev_class, (tBT_DEVICE_TYPE) dev_type); bdcpy(bd_addr.address, p_ssp_cfm_req->bd_addr); memcpy(bd_name.name, p_ssp_cfm_req->bd_name, BD_NAME_LEN); Loading Loading @@ -944,12 +954,17 @@ static void btif_dm_ssp_key_notif_evt(tBTA_DM_SP_KEY_NOTIF *p_ssp_key_notif) bt_bdaddr_t bd_addr; bt_bdname_t bd_name; UINT32 cod; int dev_type; BTIF_TRACE_DEBUG("%s", __FUNCTION__); /* Remote properties update */ if (!btif_get_device_type(p_ssp_key_notif->bd_addr, &dev_type)) { dev_type = BT_DEVICE_TYPE_BREDR; } btif_update_remote_properties(p_ssp_key_notif->bd_addr, p_ssp_key_notif->bd_name, p_ssp_key_notif->dev_class, BT_DEVICE_TYPE_BREDR); p_ssp_key_notif->dev_class, (tBT_DEVICE_TYPE) dev_type); bdcpy(bd_addr.address, p_ssp_key_notif->bd_addr); memcpy(bd_name.name, p_ssp_key_notif->bd_name, BD_NAME_LEN); Loading Loading @@ -2753,12 +2768,17 @@ static void btif_dm_ble_key_notif_evt(tBTA_DM_SP_KEY_NOTIF *p_ssp_key_notif) bt_bdaddr_t bd_addr; bt_bdname_t bd_name; UINT32 cod; int dev_type; BTIF_TRACE_DEBUG("%s", __FUNCTION__); /* Remote name update */ btif_update_remote_properties(p_ssp_key_notif->bd_addr , p_ssp_key_notif->bd_name, NULL, BT_DEVICE_TYPE_BLE); if (!btif_get_device_type(p_ssp_key_notif->bd_addr, &dev_type)) { dev_type = BT_DEVICE_TYPE_BLE; } btif_dm_update_ble_remote_properties(p_ssp_key_notif->bd_addr , p_ssp_key_notif->bd_name, (tBT_DEVICE_TYPE) dev_type); bdcpy(bd_addr.address, p_ssp_key_notif->bd_addr); memcpy(bd_name.name, p_ssp_key_notif->bd_name, BD_NAME_LEN); Loading Loading @@ -2948,6 +2968,8 @@ void btif_dm_ble_sec_req_evt(tBTA_DM_BLE_SEC_REQ *p_ble_req) bt_bdaddr_t bd_addr; bt_bdname_t bd_name; UINT32 cod; int dev_type; BTIF_TRACE_DEBUG("%s", __FUNCTION__); if (pairing_cb.state == BT_BOND_STATE_BONDING) Loading @@ -2957,7 +2979,12 @@ void btif_dm_ble_sec_req_evt(tBTA_DM_BLE_SEC_REQ *p_ble_req) } /* Remote name update */ btif_update_remote_properties(p_ble_req->bd_addr,p_ble_req->bd_name,NULL,BT_DEVICE_TYPE_BLE); if (!btif_get_device_type(p_ble_req->bd_addr, &dev_type)) { dev_type = BT_DEVICE_TYPE_BLE; } btif_dm_update_ble_remote_properties(p_ble_req->bd_addr, p_ble_req->bd_name, (tBT_DEVICE_TYPE) dev_type); bdcpy(bd_addr.address, p_ble_req->bd_addr); memcpy(bd_name.name, p_ble_req->bd_name, BD_NAME_LEN); Loading Loading @@ -2990,9 +3017,15 @@ static void btif_dm_ble_passkey_req_evt(tBTA_DM_PIN_REQ *p_pin_req) bt_bdaddr_t bd_addr; bt_bdname_t bd_name; UINT32 cod; int dev_type; /* Remote name update */ btif_update_remote_properties(p_pin_req->bd_addr,p_pin_req->bd_name,NULL,BT_DEVICE_TYPE_BLE); if (!btif_get_device_type(p_pin_req->bd_addr, &dev_type)) { dev_type = BT_DEVICE_TYPE_BLE; } btif_dm_update_ble_remote_properties(p_pin_req->bd_addr,p_pin_req->bd_name, (tBT_DEVICE_TYPE) dev_type); bdcpy(bd_addr.address, p_pin_req->bd_addr); memcpy(bd_name.name, p_pin_req->bd_name, BD_NAME_LEN); Loading system/btif/src/btif_gatt_client.c +5 −2 Original line number Diff line number Diff line Loading @@ -1113,9 +1113,12 @@ static void btgattc_handle_event(uint16_t event, char* p_param) int device_type = 0; tBTA_GATT_TRANSPORT transport = BTA_GATT_TRANSPORT_LE; if (btif_get_device_type(p_cb->bd_addr.address, &addr_type, &device_type) == TRUE && device_type != BT_DEVICE_TYPE_BREDR) if (btif_get_address_type(p_cb->bd_addr.address, &addr_type) && btif_get_device_type(p_cb->bd_addr.address, &device_type) && device_type != BT_DEVICE_TYPE_BREDR) { BTA_DmAddBleDevice(p_cb->bd_addr.address, addr_type, device_type); } // Mark background connections if (!p_cb->is_direct) Loading Loading
system/btif/include/btif_config.h +6 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,9 @@ #ifndef BTIF_CONFIG_H #define BTIF_CONFIG_H #include "data_types.h" #include "bt_types.h" #ifdef __cplusplus #include <stdint.h> extern "C" { Loading Loading @@ -71,6 +74,9 @@ int btif_config_enum(btif_config_enum_callback cb, void* user_data); int btif_config_save(); void btif_config_flush(); BOOLEAN btif_get_address_type(const BD_ADDR bd_addr, int *p_addr_type); BOOLEAN btif_get_device_type(const BD_ADDR bd_addr, int *p_device_type); #ifdef __cplusplus } #endif Loading
system/btif/include/btif_gatt_util.h +0 −2 Original line number Diff line number Diff line Loading @@ -37,7 +37,5 @@ uint16_t get_uuid16(tBT_UUID *p_uuid); void btif_gatt_check_encrypted_link(BD_ADDR bd_addr); BOOLEAN btif_get_device_type(BD_ADDR bd_addr, int *addr_type, int *device_type); #endif
system/btif/src/btif_config.c +44 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,8 @@ #define LOG_TAG "btif_config" #include <hardware/bluetooth.h> #include "data_types.h" #include "bd.h" #include "btif_api.h" #include "btif_config.h" #include "btif_config_util.h" Loading Loading @@ -362,6 +364,46 @@ void btif_config_flush() save_cfg(); unlock_slot(&slot_lock); } /******************************************************************************* * Device information *******************************************************************************/ BOOLEAN btif_get_device_type(const BD_ADDR bd_addr, int *p_device_type) { if (p_device_type == NULL) return FALSE; bt_bdaddr_t bda; bdcpy(bda.address, bd_addr); char bd_addr_str[18] = {0}; bd2str(&bda, &bd_addr_str); if (!btif_config_get_int("Remote", bd_addr_str, "DevType", p_device_type)) return FALSE; ALOGD("%s: Device [%s] type %d", __FUNCTION__, bd_addr_str, *p_device_type); return TRUE; } BOOLEAN btif_get_address_type(const BD_ADDR bd_addr, int *p_addr_type) { if (p_addr_type == NULL) return FALSE; bt_bdaddr_t bda; bdcpy(bda.address, bd_addr); char bd_addr_str[18] = {0}; bd2str(&bda, &bd_addr_str); if (!btif_config_get_int("Remote", bd_addr_str, "AddrType", p_addr_type)) return FALSE; ALOGD("%s: Device [%s] address type %d", __FUNCTION__, bd_addr_str, *p_addr_type); return TRUE; } ///////////////////////////////////////////////////////////////////////////////////////////// static inline short alloc_node(cfg_node* p, short grow) { Loading Loading @@ -944,4 +986,6 @@ static void cfg_test_read() // debug("after removed, btif_config_get ret:%d, Remote devices, 00:22:5F:97:56:04 Class Delete:%s", ret, class); // debug("out"); } #endif
system/btif/src/btif_dm.c +40 −7 Original line number Diff line number Diff line Loading @@ -801,10 +801,15 @@ static void btif_dm_pin_req_evt(tBTA_DM_PIN_REQ *p_pin_req) bt_bdname_t bd_name; UINT32 cod; bt_pin_code_t pin_code; int dev_type; /* Remote properties update */ if (!btif_get_device_type(p_pin_req->bd_addr, &dev_type)) { dev_type = BT_DEVICE_TYPE_BREDR; } btif_update_remote_properties(p_pin_req->bd_addr, p_pin_req->bd_name, p_pin_req->dev_class, BT_DEVICE_TYPE_BREDR); p_pin_req->dev_class, (tBT_DEVICE_TYPE) dev_type); bdcpy(bd_addr.address, p_pin_req->bd_addr); memcpy(bd_name.name, p_pin_req->bd_name, BD_NAME_LEN); Loading Loading @@ -881,12 +886,17 @@ static void btif_dm_ssp_cfm_req_evt(tBTA_DM_SP_CFM_REQ *p_ssp_cfm_req) bt_bdname_t bd_name; UINT32 cod; BOOLEAN is_incoming = !(pairing_cb.state == BT_BOND_STATE_BONDING); int dev_type; BTIF_TRACE_DEBUG("%s", __FUNCTION__); /* Remote properties update */ if (!btif_get_device_type(p_ssp_cfm_req->bd_addr, &dev_type)) { dev_type = BT_DEVICE_TYPE_BREDR; } btif_update_remote_properties(p_ssp_cfm_req->bd_addr, p_ssp_cfm_req->bd_name, p_ssp_cfm_req->dev_class, BT_DEVICE_TYPE_BREDR); p_ssp_cfm_req->dev_class, (tBT_DEVICE_TYPE) dev_type); bdcpy(bd_addr.address, p_ssp_cfm_req->bd_addr); memcpy(bd_name.name, p_ssp_cfm_req->bd_name, BD_NAME_LEN); Loading Loading @@ -944,12 +954,17 @@ static void btif_dm_ssp_key_notif_evt(tBTA_DM_SP_KEY_NOTIF *p_ssp_key_notif) bt_bdaddr_t bd_addr; bt_bdname_t bd_name; UINT32 cod; int dev_type; BTIF_TRACE_DEBUG("%s", __FUNCTION__); /* Remote properties update */ if (!btif_get_device_type(p_ssp_key_notif->bd_addr, &dev_type)) { dev_type = BT_DEVICE_TYPE_BREDR; } btif_update_remote_properties(p_ssp_key_notif->bd_addr, p_ssp_key_notif->bd_name, p_ssp_key_notif->dev_class, BT_DEVICE_TYPE_BREDR); p_ssp_key_notif->dev_class, (tBT_DEVICE_TYPE) dev_type); bdcpy(bd_addr.address, p_ssp_key_notif->bd_addr); memcpy(bd_name.name, p_ssp_key_notif->bd_name, BD_NAME_LEN); Loading Loading @@ -2753,12 +2768,17 @@ static void btif_dm_ble_key_notif_evt(tBTA_DM_SP_KEY_NOTIF *p_ssp_key_notif) bt_bdaddr_t bd_addr; bt_bdname_t bd_name; UINT32 cod; int dev_type; BTIF_TRACE_DEBUG("%s", __FUNCTION__); /* Remote name update */ btif_update_remote_properties(p_ssp_key_notif->bd_addr , p_ssp_key_notif->bd_name, NULL, BT_DEVICE_TYPE_BLE); if (!btif_get_device_type(p_ssp_key_notif->bd_addr, &dev_type)) { dev_type = BT_DEVICE_TYPE_BLE; } btif_dm_update_ble_remote_properties(p_ssp_key_notif->bd_addr , p_ssp_key_notif->bd_name, (tBT_DEVICE_TYPE) dev_type); bdcpy(bd_addr.address, p_ssp_key_notif->bd_addr); memcpy(bd_name.name, p_ssp_key_notif->bd_name, BD_NAME_LEN); Loading Loading @@ -2948,6 +2968,8 @@ void btif_dm_ble_sec_req_evt(tBTA_DM_BLE_SEC_REQ *p_ble_req) bt_bdaddr_t bd_addr; bt_bdname_t bd_name; UINT32 cod; int dev_type; BTIF_TRACE_DEBUG("%s", __FUNCTION__); if (pairing_cb.state == BT_BOND_STATE_BONDING) Loading @@ -2957,7 +2979,12 @@ void btif_dm_ble_sec_req_evt(tBTA_DM_BLE_SEC_REQ *p_ble_req) } /* Remote name update */ btif_update_remote_properties(p_ble_req->bd_addr,p_ble_req->bd_name,NULL,BT_DEVICE_TYPE_BLE); if (!btif_get_device_type(p_ble_req->bd_addr, &dev_type)) { dev_type = BT_DEVICE_TYPE_BLE; } btif_dm_update_ble_remote_properties(p_ble_req->bd_addr, p_ble_req->bd_name, (tBT_DEVICE_TYPE) dev_type); bdcpy(bd_addr.address, p_ble_req->bd_addr); memcpy(bd_name.name, p_ble_req->bd_name, BD_NAME_LEN); Loading Loading @@ -2990,9 +3017,15 @@ static void btif_dm_ble_passkey_req_evt(tBTA_DM_PIN_REQ *p_pin_req) bt_bdaddr_t bd_addr; bt_bdname_t bd_name; UINT32 cod; int dev_type; /* Remote name update */ btif_update_remote_properties(p_pin_req->bd_addr,p_pin_req->bd_name,NULL,BT_DEVICE_TYPE_BLE); if (!btif_get_device_type(p_pin_req->bd_addr, &dev_type)) { dev_type = BT_DEVICE_TYPE_BLE; } btif_dm_update_ble_remote_properties(p_pin_req->bd_addr,p_pin_req->bd_name, (tBT_DEVICE_TYPE) dev_type); bdcpy(bd_addr.address, p_pin_req->bd_addr); memcpy(bd_name.name, p_pin_req->bd_name, BD_NAME_LEN); Loading
system/btif/src/btif_gatt_client.c +5 −2 Original line number Diff line number Diff line Loading @@ -1113,9 +1113,12 @@ static void btgattc_handle_event(uint16_t event, char* p_param) int device_type = 0; tBTA_GATT_TRANSPORT transport = BTA_GATT_TRANSPORT_LE; if (btif_get_device_type(p_cb->bd_addr.address, &addr_type, &device_type) == TRUE && device_type != BT_DEVICE_TYPE_BREDR) if (btif_get_address_type(p_cb->bd_addr.address, &addr_type) && btif_get_device_type(p_cb->bd_addr.address, &device_type) && device_type != BT_DEVICE_TYPE_BREDR) { BTA_DmAddBleDevice(p_cb->bd_addr.address, addr_type, device_type); } // Mark background connections if (!p_cb->is_direct) Loading