Loading system/stack/btm/btm_dev.c +37 −3 Original line number Diff line number Diff line Loading @@ -226,21 +226,55 @@ tBTM_SEC_DEV_REC *btm_sec_alloc_dev (BD_ADDR bd_addr) tBTM_SEC_DEV_REC *p_dev_rec = NULL; tBTM_INQ_INFO *p_inq_info; int i; DEV_CLASS old_cod; int i_new_entry = BTM_SEC_MAX_DEVICE_RECORDS; int i_old_entry = BTM_SEC_MAX_DEVICE_RECORDS; BTM_TRACE_EVENT ("btm_sec_alloc_dev"); for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++) { /* look for old entry where device details are present */ if (!(btm_cb.sec_dev_rec[i].sec_flags & BTM_SEC_IN_USE) && (!memcmp (btm_cb.sec_dev_rec[i].bd_addr, bd_addr, BD_ADDR_LEN))) { i_old_entry = i; BTM_TRACE_EVENT ("btm_sec_alloc_dev old device found"); break; } } for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++) { if (!(btm_cb.sec_dev_rec[i].sec_flags & BTM_SEC_IN_USE)) { p_dev_rec = &btm_cb.sec_dev_rec[i]; i_new_entry = i; break; } } if (!p_dev_rec) if (i_new_entry == BTM_SEC_MAX_DEVICE_RECORDS) { p_dev_rec = btm_find_oldest_dev(); } else { /* if the old device entry not present go with new entry */ if(i_old_entry == BTM_SEC_MAX_DEVICE_RECORDS) { p_dev_rec = &btm_cb.sec_dev_rec[i_new_entry]; } else { p_dev_rec = &btm_cb.sec_dev_rec[i_old_entry]; memcpy (old_cod, p_dev_rec->dev_class, DEV_CLASS_LEN); } } memset (p_dev_rec, 0, sizeof (tBTM_SEC_DEV_REC)); /* Retain the old COD for device */ if(i_old_entry != BTM_SEC_MAX_DEVICE_RECORDS) { BTM_TRACE_EVENT ("btm_sec_alloc_dev restoring cod "); memcpy (p_dev_rec->dev_class, old_cod, DEV_CLASS_LEN); } p_dev_rec->sec_flags = BTM_SEC_IN_USE; /* Check with the BT manager if details about remote device are known */ Loading Loading
system/stack/btm/btm_dev.c +37 −3 Original line number Diff line number Diff line Loading @@ -226,21 +226,55 @@ tBTM_SEC_DEV_REC *btm_sec_alloc_dev (BD_ADDR bd_addr) tBTM_SEC_DEV_REC *p_dev_rec = NULL; tBTM_INQ_INFO *p_inq_info; int i; DEV_CLASS old_cod; int i_new_entry = BTM_SEC_MAX_DEVICE_RECORDS; int i_old_entry = BTM_SEC_MAX_DEVICE_RECORDS; BTM_TRACE_EVENT ("btm_sec_alloc_dev"); for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++) { /* look for old entry where device details are present */ if (!(btm_cb.sec_dev_rec[i].sec_flags & BTM_SEC_IN_USE) && (!memcmp (btm_cb.sec_dev_rec[i].bd_addr, bd_addr, BD_ADDR_LEN))) { i_old_entry = i; BTM_TRACE_EVENT ("btm_sec_alloc_dev old device found"); break; } } for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++) { if (!(btm_cb.sec_dev_rec[i].sec_flags & BTM_SEC_IN_USE)) { p_dev_rec = &btm_cb.sec_dev_rec[i]; i_new_entry = i; break; } } if (!p_dev_rec) if (i_new_entry == BTM_SEC_MAX_DEVICE_RECORDS) { p_dev_rec = btm_find_oldest_dev(); } else { /* if the old device entry not present go with new entry */ if(i_old_entry == BTM_SEC_MAX_DEVICE_RECORDS) { p_dev_rec = &btm_cb.sec_dev_rec[i_new_entry]; } else { p_dev_rec = &btm_cb.sec_dev_rec[i_old_entry]; memcpy (old_cod, p_dev_rec->dev_class, DEV_CLASS_LEN); } } memset (p_dev_rec, 0, sizeof (tBTM_SEC_DEV_REC)); /* Retain the old COD for device */ if(i_old_entry != BTM_SEC_MAX_DEVICE_RECORDS) { BTM_TRACE_EVENT ("btm_sec_alloc_dev restoring cod "); memcpy (p_dev_rec->dev_class, old_cod, DEV_CLASS_LEN); } p_dev_rec->sec_flags = BTM_SEC_IN_USE; /* Check with the BT manager if details about remote device are known */ Loading