2017-07-24 294 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);