如果有人可以解釋我遇到的一個問題,我將感謝Raspberry Pi 3模型B充當BLE連接上的中央設備外圍設備。Raspberry Pi3 BLE作爲中央設備每個連接間隔只接收一個數據包 - gatttool/hcitool
首先,我successsfully連接這兩個設備和使用該folllowing hcitool/gatttool命令使中央設備上的通知:
sudo hciconfig hci0 up
sudo gatttool --adapter=hci0 --device=XX:XX:XX:XX:XX:XX --adr_type=random --mtu=23 -I
[][LE]> connect
[][LE]> char-write-req 0x000c 0100
在那之後,我開始接收樹莓PI3模型B於通知,並使用BLE嗅探器,我檢查它收到5個BLE數據包,每個連接間隔有通知值(即OK),默認情況下它建立爲54(67,5ms)。然而,一旦這兩個設備被連接時,我爲了使用以下hcitool命令來修改連接間隔,即,24(30毫秒)更新連接參數:
sudo hcitool lecup --handle=XX --min=24 --max=24
,我發現的問題是,一旦連接參數被更新,我檢查了Raspberry Pi3模型B每個連接間隔開始只接收1個BLE數據包(這不正確)。觀察到相同的行爲,將連接參數更新爲更高的連接間隔值,即800(1s)。
任何人都可以給我一個解釋這個問題嗎?此外,任何人都可以嘗試重現此程序並檢查是否觀察到同一問題?
由於
嗨@Emil,非常感謝您的回答......因此,連接事件長度的默認最大值和最小值設置在哪裏? ......看起來很清楚,這些參數最初沒有設置爲0 ... Thaaanks! –
嗨。我的命令有效嗎?如果你看到我引用的文件,你會發現它們被設置爲零,在\t cp.min_ce_len \t \t = cpu_to_le16(0x0000); \t cp.max_ce_len \t \t = cpu_to_le16(0x0000); – Emil
嗨@Emil,是的,它工作正常!對不起,不發表評論。我在Bluez 5.47(我的RPi 3模型B上運行的分佈支持BLE)的hci.c文件中看到,hci_le_conn_update函數將min_ce_len和max_ce_len值設置爲1.但是,從報告實驗的初始行爲,其中我每個連接間隔收到5個數據包(設置爲67,5ms),似乎很明顯,連接事件最大/最小長度最初沒有設置爲這些值。因此連接事件的默認最大值和最小值是在哪裏設置的?謝謝 –