int bletest_hci_le_add_resolv_list(uint8_t *local_irk, uint8_t *peer_irk, uint8_t *peer_ident_addr, uint8_t addr_type) { int rc; struct hci_add_dev_to_resolving_list padd; uint8_t buf[BLE_HCI_CMD_HDR_LEN + BLE_HCI_ADD_TO_RESOLV_LIST_LEN]; padd.addr_type = addr_type; memcpy(padd.addr, peer_ident_addr, BLE_DEV_ADDR_LEN); swap_buf(padd.local_irk, local_irk, 16); swap_buf(padd.peer_irk, peer_irk, 16); rc = ble_hs_hci_cmd_build_add_to_resolv_list(&padd, buf, sizeof buf); if (!rc) { rc = ble_hs_hci_cmd_tx_empty_ack(buf); } return rc; }
int ble_hs_pvcy_add_entry(uint8_t *addr, uint8_t addr_type, uint8_t *irk) { struct hci_add_dev_to_resolving_list add; uint8_t buf[BLE_HCI_CMD_HDR_LEN + BLE_HCI_ADD_TO_RESOLV_LIST_LEN]; int rc; add.addr_type = addr_type; memcpy(add.addr, addr, 6); memcpy(add.local_irk, ble_hs_pvcy_irk, 16); memcpy(add.peer_irk, irk, 16); rc = ble_hs_hci_cmd_build_add_to_resolv_list(&add, buf, sizeof(buf)); if (rc != 0) { return rc; } rc = ble_hs_hci_cmd_tx(buf, NULL, 0, NULL); if (rc != 0) { return rc; } return 0; }