2010年1月26日 星期二

Linux Infrared Data

Linux Infrared Data

Infrared Data (IrDa) 是一種用紅外線無線傳輸資料的規範。主要用於連接膝上電腦或者將錄影機或照相機這樣的設備連接到電腦系統。

IrDa 的速度從 Serial Infrared (SIR) 的 115 kbps 到 Very Fast Infrared (VFIR) 的 16 Mbps。大多數處於 SIR 模式的 IrDa 晶片是 UART 16650 相容的(16650 是一種公共 PC UART),因此傳統 Linux 串列埠驅動程式可以充當鏈路層級的驅動程式。IrDa 行的規範實作 —— IrTTY (drivers/net/irda/irtty.c),使串列埠驅動程式驅動 SIR。IrPORT 驅動程式(drivers/net/irda/irport.c)代替了 IrTTY 和串列埠驅動程式,並提供更好的設備控制。與串列埠驅動器不相容的 IrDa 晶片有自己的設備驅動程式。例如,NSC PC87108 晶片組就使用自己的驅動程式(nsc-ircc.c)。與上面討論到的用於 USB Bluetooth 設備的 hci-usb 驅動程式類似,irda-usb.c 設備驅動程式支援 USB IrDa FIR dongles。

IrLAP 是負責 IrDa 設備發現、重傳以及流控制的鏈路存取協定層。IrLMP 鏈路管理層和 Tiny 傳輸協定層(TinyTP)駐留於 IrLAP 之上。而它們之上是 IrCOMM 和 IrLAN 層。IrCOMM(在 net/irda/ircomm/ 中實作)提供串列埠類比,使執行於序列埠(比如終端模擬器)上的應用程式不加更改地在 IrDa 堆疊上執行。IrLAN(在 net/irda/irlan/ 中實作)提供使 TCP/IP 直接執行於 IrDa 堆疊之上的虛擬網路介面。IrLAN 程式碼使用 register_netdev 將太網設備註冊到 Linux 網路層,使用 netif_rx 向 Linux IP 堆疊發送資料(與對 WLAN 驅動程式和 Bluetooth BNEP的解釋類似)。IrCOMM 與 Bluetooth RFCOMM 相似,而 IrLAN 則類似於 Bluetooth BNEP。

IrOBEX 是建立在 TinyTP 之上的一個簡單協定,它允許傳輸二進位資料。IrOBEX 的擴充定義了不同資料物件的傳輸。

為了在 Linux 上應用 IrDa 協定,必須安裝 IrDa 實用程式(如 irattach),它是作為 Linux IrDa 專案的一部分開發的。

沒有留言:

張貼留言