太可怕了
對於bluetooth的認識
就是知道
兩台機器要認識彼此
一定要先做pair
然後再進行連線
今天
為了解一個bug
把pair要做的動作拿掉
居然也可以進行連線
But
我們可以事先知道對方的相關資訊 包含bt address
與pair存在的目的(就是要彼此交換資訊)
看來功能部份相同
拿掉pair理所當然
發生的bug也給他描述一下
這次發生的bug比較難抓
主要是因為
透過windows 的 connect function
去建立藍芽連線
所產生的bug
這個部份因為沒有source code
無法得知實做內容
所以必須透過WIDCOMM所提供的BTServer Spy Lite來查PC端的dongle
到底傳送或接收到什麼樣子的藍芽訊息
事後發現
RCVD Event from HCI. Name: HCI_Role_Change (Hex Code: 0x12 Param Len: 8)
角色改變做兩次
會發生time out的機會
RCVD Event from HCI. Name: HCI_Connection_Complete (Hex Code: 0x03 Param Len: 11)
Parameters
Status : Connection Timeout (0x08)
Connection Handle : 11 (0x000b)
BD_ADDR of remote : 00-0b-0d-77-0d-d4
Link Type : 1 (0x01)
Encryption Mode : 0 (0x00)
也就透過這個工具
可以得知connect這個function呼叫之後
會做什麼事情
最後解法就是拿掉pair
讓整個連線過程不會重複做(當然 Role_Change就不會發送兩次)
沒有留言:
張貼留言