本文章主要讲下蓝牙RFCOMM协议多路控制通道(MULTIPLEXOR FRAMES),包括一下几种
• PN—DLC parameter negotiation.
• Test—Checks communication link.
• FCon / FCoff—Aggregate flow control on all connections.
• MSC—Modem status, used for flow control per connection.
• RPN—Remote Port Negotiation.
• RLS—Remote Line Status.
• NSC—Non-Supported Command (response only).
本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:
第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。
第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,基于USB的H2等
第三篇:传统蓝牙controller介绍,主要介绍传统蓝牙芯片的介绍,包括射频层(RF),基带层(baseband),链路管理层(LMP)等
第四篇:传统蓝牙host介绍,主要介绍传统蓝牙的协议栈,比如HCI,L2CAP,SDP,RFCOMM,HFP,SPP,HID,AVDTP,AVCTP,A2DP,AVRCP,OBEX,PBAP,MAP等等一系列的协议吧。
第五篇:低功耗蓝牙controller介绍,主要介绍低功耗蓝牙芯片,包括物理层(PHY),链路层(LL)
第六篇:低功耗蓝牙host介绍,低功耗蓝牙协议栈的介绍,包括HCI,L2CAP,ATT,GATT,SM等
第七篇:蓝牙芯片介绍,主要介绍一些蓝牙芯片的初始化流程,基于HCI vendor command的扩展
第八篇:附录,主要介绍以上常用名词的介绍以及一些特殊流程的介绍等。
另外,开发板如下所示,对于想学习蓝牙协议栈的最好人手一套。以便更好的学习蓝牙协议栈,相信我,学完这一套视频你将拥有修改任何协议栈的能力(比如Linux下的bluez,Android下的bluedroid)。
-------------------------------------------------------------------------------------------------------------------------
CSDN学院链接(进入选择你想要学习的课程):=1002.2001.3001.4144
蓝牙交流扣扣群:970324688
Github代码:
入手开发板:.htm?spm=a1z10.1-c-s.w4004-22329603896.18.5aeb41f973iStr&id=622836061708
蓝牙学习目录:
--------------------------------------------------------------------------------------------------------------------------
多路控制通道主要在DLCI=0发送的,主要用来控制RFCOMM的连接,来协商一些参数,主要有以下类型:
• PN—DLC parameter negotiation.
• Test—Checks communication link.
• FCon / FCoff—Aggregate flow control on all connections.
• MSC—Modem status, used for flow control per connection.
• RPN—Remote Port Negotiation.
• RLS—Remote Line Status.
• NSC—Non-Supported Command (response only).
主要基于UIH control frame来发送,多路控制的数据格式如下,红框为多路控制帧的格式
Type参数格式如下图所示:
当EA为1时表示这是最后一个字节,当为0时则表示有扩展的字节表述,如下图:
T位代表类型编码下面我们就来一一说下每个command。
在 DLC 建立之前,要用 PN 进行参数协商,整个PN的封包格式如下:
Length一直为8
后续的value格式如下:
其中D1~D6是DLCI
I1~I4定义了在指定 DLC 上传输信息帧的类型,如下,但是我们此部分只选择UIH帧
CL 1~4位定义了在指定 DLCI 上的汇聚层类型,如下表所示:
P1~P6位表示在指定 DLC 上所分配的优先级,范围从 0 到 63,0 的优先级最高:
T 位表示 acknowledgement timer (T1)的值
N 位表示 maximum frame size (N1)的值。
NA-位表示 maximum number of retransmissions (N2)
K 位表示纠错模式下窗口大小
来一个sample后续的value如下:
测试命令,类型代码是 000100,长度字节为 0,后面没有参数。
流控开启命令,类型代码为 000101,长度字节为 0,后面没有参数
流控关闭命令,类型代码为 000110,长度字节为 0,后面没有参数
2.3/2.4的命令都没有参数,格式如下:
用 MSC 命令来传输 V.24 控制信号,它在基本选项下面使用。MSC 命令包含一个 mandatory control signal(强制的控制信号)字节和一个 break signal(暂停信号)字节。在建立了 DLC 之后,发送用户数据之前,发送 MSC 命令。
参数有address以及V.24,address已经在前面介绍,我们来看下V.24的格式
EA:扩展位,功能如前所述。
FC:flow control,当设备不能接受帧数据的时候,设定为 1。
RTC:ready to communicate,当设备准备好通信时,把这位设定为 1。
RTR:ready to receive,设备准备好接收数据时,设定为 1。
IC:incoming call indicator,当有呼入时,设定为 1。
DV:data valid,发送了合法数据,设定为 1。
其他位保留。我们来看个btsnoop截图:
当接收实体接收到了一个不支持的命令类型时,对发方发送 NSC。其类型代码为 001000,当只有一个不支持的命令类型时,长度字节为 1,后面的参数是代表不支持的命令类型的代码,其格式为:
我们来贴下
在来贴下从Baud rate的结构:
B1-B7 代表的是波特率,其具体含义见下表:
D1-D2 表示数据位的长度。 00 表示 5bit,01 表示 6bit,10 表示 7bit,11 表示 8bit。
S 表示停止位
P 表示校验,P=0 有校验,P=0 无校验
PT1-PT2 表示校验类型
FLC1-FLC6 D 默认值为 0, 没有流控制
Bit1 XON/XOFF on input
Bit2 XON/XOFF on output
Bit3 RTR on input
Bit4 RTR on output
Bit5 RTC on input
Bit6 RTC on output
XON1-XON8 XON character (default DC1)
XOF1-XOF8 XOFF character.(default DC3)
PM1-PM8 parameter mask
用parameter mask来表示对方的哪个参数需要进行协商。如果是命令, parameter
mask用0表示不改变,1表示要改变。如果是应答,0表示不接受建议值,1表示接
受并并使用建议值
第 7、8 个字节的 bit mask 表示
Bit1 bit rate
Bit2 data bits
Bit3 stop bits
Bit4 Parity
Bit5 parity type
Bit6 XON character
Bit7 XOF character
Bit8 reserved
PM9-PM18: Parameter mask continued
Bit1 XON/XOFF on input
Bit2 XON/XOFF on output
Bit3 RTR on input
Bit4 RTR on output
Bit5 RTC on input
Bit6 RTC on output
所有的参数默认为 0,接收方接到后对此忽略。
Mask整理如下
类型代码为 001010,长度字节的值为 2,有两个参数。第一个参数为 DCLI的值,具体格式跟一般的 DCLI 格式一样。第二个参数的格式入下表所示:
L1-L4 表示链路状态,如果 L1 为 0,则表示没有错误发生,若 L1=1,则表示发生了错误
如下:
• 0b1100—Overrun error, a received character has overwritten a character which had
not yet been read.
• 0b1010—Parity error, the parity was wrong on a received character.
• 0b1001—Framing error, a character did not end with a stop bit.
本文发布于:2024-01-31 10:49:25,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170666939227978.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |