2017-07-24 99 views
0

我试图将gatt连接到不保留绑定信息后连接的BLE服务器设备。在Android上,编程“忘记”服务器绑定密钥相当简单。在linux上,我唯一能想出的办法就是重新手动重启蓝牙服务或物理删除并重新插入我的BLE加密狗。Bluez编程删除单个设备的BLE绑定信息

我理想的是寻找一种方法来从链接到-lbluetooth的程序中删除单个设备的绑定。不太合乎需要的是一个系统调用,它可以在不弹回蓝牙的情况下移除单个设备的绑定。

我还在寻找任何洞察,以了解为什么绑定失败,如果一个,但不是两个设备保留绑定信息。看起来好像重新结合比结合失败更好。

回答

0

有趣的是,我还需要更改我的连接间隔。当我调用hci_open()和hci_le_create_conn()来做到这一点时,我需要删除客户端上的绑定。我希望这可以帮助别人。

dd = hci_open_dev(dev_id); 
if (dd < 0) { 
    perror("Could not open HCI device"); 
    return -1; 
} 

if (hci_le_create_conn(dd, interval, window, initiator_filter, peer_bdaddr_type, 
    bdaddr, own_bdaddr_type, min_interval, max_interval, latency, supervision_timeout, 
    min_ce_length, max_ce_length, &handle, 25000) < 0) { 
    perror("HCI Connection failed!"); 
} else { 
    printf("HCI connection interval updated: handle = %d\n", handle); 
} 

hci_close_dev(dd);