ARM平台上蓝牙协议栈Bluez的移植使用和配置(6)

发布时间:2021-06-11

ARM平台上蓝牙协议栈Bluez的移植使用和配置

:
"Dialup Networking" (0x1103)
"Generic Networking" (0x1201)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100

其次,如果rfcomm所需设备节点不存在,将其创建:

mknod -m 666 /dev/rfcomm0 c 216 0

然后就是拨号了,如果该设备之前没有绑定,这过程中会自动发起绑定操作:

pppd debug dump call gprs &

完成以后就可以看到 ppp0这样一个网络接口了。

~ # ifconfig
ppp0 Link encap:Point-to-Point Protocol
inet addr:10.154.76.82 P-t-P:192.200.1.21 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:64 (64.0 B) TX bytes:101 (101.0 B)

7 Bluez相关的各种tools的使用
在这一段折腾Bluez的时间里,越来越发现Bluez相关的许多工具做得还是挺好用的,主要在Bluez-utils/tools 目录下。只是有一点让我很遗憾,除了man以外很难找到更多的帮助文档,而man文档本身对一些功能的描述也不是很详细。
其中有些选项,如果你不了解蓝牙协议栈,或者没有查阅过相关蓝牙芯片的一些文档,很难搞明白是什么意思,甚至有些选项的具体参数值的设定,如果不读源码你都无从得知有哪些备选值。。。。

能力有限,下面所写的只是我所用过的有限的几个工具的一些使用经验,希望能有所帮助。
7.1 Bccmd
Bccmd是用来和CSR的芯片进行BCCMD(Bluecore command protocol)通讯的一个工具。BCCMD并非蓝牙协议栈的标准,而是CSR芯片的专属协议
Bccmd的调用格式为:bccmd [-t <transport>] [-d <device>] <command> [<args>]

Tansport类型包括 HCI USB BCSP H4等,常用的估计就是HCI和BCSP两种。需要注意一下他们的使用场合:
HCI是一个抽象的标准的蓝牙通讯接口,在基于HCI协议调用BCCMD时,需要在Bluez已经建立好hci接口的基础上使用。
BCSP(Bluecore Serial Protocol)是CSR自己制定的传输层协议,主要目的是用来加强在没有使用CTS、RTS进行流量控制的情况下进行可靠的数据传输的能力。其概念是相对H3 , H4而言,( 具体分析,请参考下面杂项一章中相应的小节 )

BCCMD的主要用途就是用来读写pskey,这里以 psset 这个command来介绍一下格式:
Psset 格式如下: psset [-r] [-s <stores>] <key> <value>
其它都好理解,关键是-s参数之后跟的store具体的
含义。这个参数可以是数值也可以是字符串
查询CSR的BCCMD相关的文档,可以找到具体的含义如下:

0x0000 Default
0x0008 psram
0x0001 psi
0x0002 psf
0x0004 psrom
0x0003 psi then psf
0

精彩图片

热门精选

大家正在看