2011年8月28日 星期日

BlueTooth要怎麼進測試模式要怎麼搞-2

  • 3. 找新方向想想可樂果 K個data sheet先

Vendor給的文件 建議最好是照順序看  前兩份需要好好理解後面才可以知道怎麼下
1.) 這個在介紹HCI command的格式 是怎麼做的 然後最主要是介紹怎麼加入自訂格式
HCI Extensions (bcore-an-009Pb).pdf
2.) CSR他們家自己自訂的格式 該格式叫做BCCMD
BCCMD Protocol (bcore-sp-002Pc).pdf
3.) 介紹CSR他們家所有的BCCMD指令集 這份是工具書所以大概知道可以查到什麼就好了
BCCMD Commands (bcore-sp-005Pe).pdf

此外還建議可以看看以下這幾個參考


不知道什麼叫做HCI可以看看人家寫的說明
http://www.palowireless.com/infotooth/tutorial/hci.asp#Bluetooth-defined Host Controller Transport Layers

初步介紹BT跟HCI的關係
http://blog.csdn.net/evilcode/article/details/5713847

可以初步理解一下HCI command的格式
http://kunyichen.wordpress.com/2006/11/28/bluetooth-hci-data-format/

HCI command的指令集
http://www.lisha.ufsc.br/teaching/ish/ine5346-2003-1/work/bluetooth/hci_commands.html




  • 4. 直接動手玩玩看

看完了相關介紹 + BT是ok的 + hcitool也有了
這時候可以來玩玩看了


可以直接複製貼上試試看
hcitool cmd 0x3f 0x00 0xc2 0x00 0x00 0x09 0x00 0x34 0x12 0x1a 0x28 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00



如果有看完之前的資料大概就知道 這個要幹嘛了
為了讓希望快速上手的人明白 稍微解釋一下好了
第一行是 HCI extensions的格式說明 其實HCI ext.的格式裡面還有一個欄位是長度 不過我試過了hcitool自己計算這個長度所以並不需要
第二行是說明 BCCMD的格式說明 因為BCCMD每一家廠商都會不一樣 所以格式也不一定就長降子
真的必須在console下的指令式第三行
OGF = 0x3f 這個值是HCI command保留給各家廠商使用自己的格是用的 所以後面如果要加上vendor-spec.的格式就要用這個值
OCF = 0 ; Payload description (PLD) = 0xc2 快速路門不需要懂這個寫降子就對了
接下來的BCD.TYP 就定義在CSR的"BCCMD Protocol (bcore-sp-002Pc).pdf"裡面
BCD.LNG 是指BCCMD的長度 BCCMD的格是很多樣有8-bit 16-bit 32-bit這裡的是16-bit所以 長度是9 (header=5 PL=4)
BCD.SN 是package的流水號 流水號只是要check用的所以只要不重複就沒問題了
BCD.VID 是command set的ID 這個去查BCCMD的data sheet就知道是要做什麼了 0x281a請參考一下這張圖
BCD.STS 是下了command之後的狀態 只要是零就是很滴
BCD.PLx 是各command的參數 根據command的需求而帶進去的參數




由這張圖看來就知道 事情很順利的弄好了 HCI Event有回覆了
0x00 0x03









  • 5. 看一下別人的心路歷程


此外還有些參考到的資料
Nelson研究BT的心路歷程 (公司內部的wiki 外人應該是看不到才對)
http://wiki.royaltek.com/index.php/Verify_bt

Nelson之前研究BT的心路歷程 (Nelson個人的部落格)
http://nelsonchunglife.blogspot.com/search/label/bluetooth

3 則留言:

  1. 通常應該是不能把人家的文件公諸於世......

    回覆刪除
    回覆
    1. Non private datasheet. It's a good tech sample. Welcome to discuss about this issue.

      刪除
  2. 請問一下,HCI event 回傳的值會因為 module 的不一樣而有所不同嗎?

    回覆刪除