第二章 腦電位訊號量測與藍芽無線傳輸
2.2 藍芽無線傳輸腦電位訊號之開發
2.2.3 傳輸程式開發
軟體系統也是基於圖2-10 架構來作為開發依據。以 Host Control Interface(HCI)
來區分,HCI 以下稱為硬體部分,包括射頻、基頻及 Link Manager 等;HCI 以上稱為軟 體部分,包括L2CAP 以及一些上層的 Protocol 所組成。其中,TCS、SDP、L2CAP 與 LMP、Baseband 間的介面是經由 HCI 下控制指令間接控制而成。藍芽架構各層的協定 是利用函示的呼叫與其傳回值作為介面開發。
HCI 介面是一個讓使用者可程式規劃 Micro processor 的一個介面,Micro processor 接收指令是透過封包的方式傳遞,並且以 UART 做為對藍芽晶片下指令的管道。透過 HCI 下指令給 Bluetooth 的 Host 端,如此,使用者就可以很快的上手,不用在去鑽研那
些 LMP 層的動作情形,而拖慢了研發的速度。使用者可以用自己最熟悉的語言去開發 藍芽科技的應用。在此,本論文以C 及 VHDL 兩種語言撰寫 Host Driver,以配合不同 的HOST 的使用需求,均達到控制藍芽裝置的目的。
Radio
Link Manager Protocol (LMP)
Baseband
Logical Link Control and Adapation Protocol (L2CAP)
PPP WAP TCP/IP WAE OBEX
Higher Layers ( SDP,TCS,RFCOMM )
HCI
Radio
Link Manager Protocol (LMP)
Baseband
Logical Link Control and Adapation Protocol (L2CAP)
PPP WAP TCP/IP WAE OBEX
PPP WAP TCP/IP WAE OBEX
Higher Layers ( SDP,TCS,RFCOMM )
HCI
圖2-10 藍芽系統架構圖
兩個具備有藍芽裝置的電子設備,在溝通的時候,藍芽裝置首先要透過HCI Driver,
HCI Firmware 對藍芽的硬體下指令,讓藍芽的硬體可以正確的執行使用者的動作,如:
Inquiry, Reset, Connection…等等的指令,HCI 有三種資料格式:HCI Command Packet、
HCI Event Packet、HCI Data Packet。在進行腦電位生理訊號資料傳輸時,使用 ACL 資 料封包。格式如圖2-11 所示。
圖2-11 HCI ACL Data Packet Format
在軟體開發的過程當中,為了能有效的讓上層SDP 與下層的 L2CAP 分開發展。可 以採用Bluetooth Module 配合軟體的開發,其好處是開發完成可直接連線使用,不需擔 心更改架構後的問題。然而,在開發過程當中每次測試都要經過進行硬體初始化的問 題,這會花費較多的時間,造成程式開發人員的困擾。另一種方法為利用模擬下層傳輸 的方式開發,可減少藍芽模組的使用以及節省測試上所耗費的時間,但缺點為硬體不一 定會像模擬結果般的完美,需要多作些額外的除錯動作。
另外,由於本論文目的是要開發一嵌入式Linux 系統,是故必須將藍芽協定實現在 Linux 作業系統,最好的方式是整合到 Embedded Linux kernel 當中,只是在開發初期為 了除錯上的方便,將分為兩階段進行,先在Linux 使用者模式下開發,最後完成之後將 端藍芽裝置進行搜尋檢索後得到的Host 端的位址(BD_ADDR)。L2CAP 接著到 Buffer
初始化Bluetooth 裝置
查看該位址的通道(CH)是否存在。如果存在通道而且没有設置標誌位,那麼 L2CAP 就進一步和 Host 端藍芽裝置的 L2CAP 建立邏輯連結(Logic link),方式是向低層的 HCI 發 送 L2CAP_Connect_Req 事 件 。 如 果 没 有 鍊 結 , 則 L2CAP 會 去 觸 發 LP_Connect_Req 事件而要求 HCI 創建一個鍊結。HCI 即可發出 HCI_Create_Connection 命令數據封包给LMP。LMP 接着觸發命令狀態事件 Command Status ,這表示命令已 經收到,LMP 正執行 HCI_Create_Connection 命令指派的任務。這事件的操作是必需 的,這樣Host 端才可以同時間做其他事情而無須等待到命令完成才動作。
接下來,收到連接請求的 LMP 會查看該連接的對應通道是否存在,以防止緩衝區 溢出或者因為其他原因導致L2CAP 没有在缓衝區找到。如果通道存在,LMP 即向 HCI 觸發通道的 Connection Complete 事件。如果没有 Host 端藍芽裝置的通道, LMP 則會 發出 LMP_host_connection_req PDU(協議數據單元)給 Host 端裝置建立兩設備間的 LMP 通道。但在 LMP 通道建立之前,兩台藍芽設備之間將在 Baseband 建立物理連接通 道。上述說明如圖2-13 所示。
圖2-13 L2CAP Profile
當Client 端與 Host 端的藍芽裝置連線建立時,則要對封包的格式作一解碼動作,
將資料存入buffer 是 Connection
Oriented L2CAP PDU
對L2CAP signaling command 解碼並呼