作者:Sam(甄峰)
[email protected]
BTX背景介绍:
Sam所在公司需要Linux下与Bluetooth Game Control连接,Linux为操作系统的嵌入式设备使用USBBluetooth Dongle与Bluetooth GameControl连接,并收发数据。Sam评估后决定用以下结构:
1. HID,L2cap, hci 这三层protocol使用Linux下官方Bluetooth 协议栈--BlueZ.
Bluez详细介绍见:[注1]
2. Bluetooth USB Dongle的驱动使用BlueZ提供的hci_usb 驱动。
3. 使用BlueZ提供的函数库和应用程序接口,创建一个针对手柄的连接库。即为BTX。这个手柄连接库提供的接口如下:
1>.Bluetooth USB Dongle初始化
2>.得到Bluetooth USB Dongle信息。
3>.查找周边Bluetooth Device设备。
4>.连接指定手柄。
5>.断开指定手柄。
6>.读取数据。
7>.写数据。
其中连接手柄是建立2个l2cap连接。PSM=0x11. 0x13.
这一层是提供给公司与所有手柄连接的库。任何一代手柄都将使用这个库作基本连接。
4. 使用BTX库和接口,开发一套针对某一代手柄所使用的库。BTRC--Bluetooth Remote Control.
因为每一代手柄连接过程中都有自己独特的加密与验证过程。并且数据格式也各不相同。所以使用这一层将这些不同与上层程序隔绝开来。
5.使用BTRC库,开发一套包含不同动作分析 的库供更上层程序使用。
注[1]:
BlueZ介绍:
Linux OS开放的bluetooth 协议栈主要包括IBM公司的BlueDrekar, Nokia公司的Affix,Axis公司的OpenBT和官方的协议栈BlueZ.
Bluetooth协议栈BlueZ分为两部分:内核代码和用户态程序及工具集。
其中内核代码由
BlueZ核心协议和
驱动程序组成;Bluetooth协议实现在内核源代码/net/bluetooth中。包括hci,l2cap,hid,rfcomm,sco,SDP,BNEP等协议的实现。驱动程序放在/driver/bluetooth中,包含Linux kernel对各种接口的Bluetoothdevice的驱动。例如:USB接口,串口等。
用户态程序及工具集包括应用程序接口和BlueZ工具集。BlueZ提供函数库以及应用程序接口,便于程序员开发bluetooth应用程序。BlueZutils是主要工具集,实现对bluetooth设备的初始化和控制。