1 蓝牙pan profile协议的概述
1.1 协议层次结构
蓝牙pan就是我们熟知的蓝牙网络,他在蓝牙协议体系中的层次结构见如下图:
BNEP相当于网络协议栈中的链路层,由该层虚拟出一个网络接口,而BNEP层以下就是蓝牙核心协议之一的L2CAP。这个是在蓝牙协议中的层次结构,具体在bluedroid中的层次结构,跟这个有点出入。但基本都差不多的。
1.2 BNEP包的类型和格式
上图中的BNEP层收到的数据包是以太网格式的,需要将他重现拆分打包成适合BNEP over L2CAP来传输,所以在BNEP层需要将ip层下来的以太网头去掉,再加上BNEP的头,当这个BNEP包传输到l2cap层时,又会被加上L2cap的头,他们的包头格式的变换如下图所示:
1.3 BNEP包的类型
上图中的BNEP Header的格式基本是遵循如下图所示的格式,但具体的格式是依赖于BNEP TYPE的,不同的type他们的BNEP header是有所不同的。
0 8 12 16 20 24 28 31
BNEP TYPE | E | BNEP Packet based on BNEP Type ... |
以上各字段的解析如下:
BNEP Type:取值范围:0x00 –0x7F,Seven bit Bluetooth Network Encapsulation Protocol Type value identifies the type of BNEP header contained in this packet.Values are defined in the following Table 1
Extension Flag (E):One bit extension flag that indicates if one or more extension headers follow the BNEP Header before the data payload. If the extension flag is equal to 0x1 then one or more extension headers follows the BNEP header. If the extension flag is equal to 0x0 then the
BNEP payload follows the BNEP header
以上各种BNEP包类型,重点描述0x01和0x2类型,其他的请详见BNEP的协议描述。
1.4 BNEP control packet type
BNEP_ CONTROL Packet Type Header Format:The BNEP_ CONTROL packet type header format is shown in the following Figure。