蓝牙 Profile定义了蓝牙设备之间如何进行通信以及实现特定的功能和应用场景。正是由于各种Profile的存在拓展出了蓝牙丰富的应用场景,例如A2DP、HFP、HID等。PAN Profile便提供了蓝牙设备接入以太网络的能力。
PAN(Personal Area Networking)Profile即个人局域网协议。它描述了两台或多台支持蓝牙的设备如何组成一个自组网络,以及如何使用相同的机制通过网络接入点访问远程网络。PAN Profile中主要包含的角色是网络接入点(Network Access Point)、组自组网络(Group Ad-hoc Network)和个人局域网用户(Personal Area Network User)。网络接入点可以是传统的局域网数据接入点,而组自组织网络则代表一组只相互连接的设备,个人局域网用户代表通过PAN协议上网的用户。本文将基于泰凌 BTBLE Dual Mode SDK以个人局域网用户(PANU)的角度讲述PAN在经典蓝牙协议栈中的层级结构、SDP服务发现、BNEP数据交互、PAN Profile连接以及通过HTTP访问网页并获取网页数据的流程。
BNEP(Bluetooth Network Encapsulation Protocol)即蓝牙网络封装协议规范。它描述了PAN 使用的协议,定义了蓝牙网络封装的数据包格式,用于在蓝牙媒体上传输常用网络协议。蓝牙网络封装支持与 IEEE 802.3/以太网封装相同的网络协议。支持的网络协议数据包包含在蓝牙网络封装数据包中,直接通过蓝牙L2CAP协议传输。简而言之PAN负责处理收/发的网络数据,BNEP负责将网络数据封装上蓝牙协议的包头。
1层级结构
类似A2DP和AVDTP,PAN是建立在BNEP之上的,而BNEP又直接建立在L2CAP上。从NAP发送的网络数据经过PANU端的Baseband再到L2CAP经过BENP解析最终到达PANU。
BNEP协议栈层级
PANU和NAP实体之间的协议交互
2SDP服务发现
为了确保PAN能正常连接,需要在手机上打开蓝牙网络共享功能。Android和iOS操作系统的开启路径分别如下图所示(不同Android机型略有差异):
Android 蓝牙共享网络开启路径
iOS蓝牙共享网络开启路径
在SDP服务发现阶段手机会主动查询我们可用的服务并作出响应,下图为PANU角色时手机查询到的服务信息。
分配给PAN Profile的Record Handle为0x0010001a,service class ID表明当前角色是PANU,BNEP对应的PSM为0x000F,当前BNEP协议版本为v1.0,支持的以太网络类型有IPv4(0x0800)和ARP(0x0806)。在Profile描述列表中表明PAN当前版本为v1.0,服务名称为Personal Ad-hoc User Service,对该服务的描述为泰凌。
PANU 服务查询表
3BNEP数据交互
BNEP建立在L2CAP之上,因此需要根据BNEP的PSM在L2CAP上创建对应的通道。根据BNEP Specification规定,BNEP对应的PSM为0x000F(SDP就是根据PSM来识别是哪一个Profile),BNEP的MTU SIZE最小值为1691。在L2CACP_CONFIGURATION阶段如果MTU SIZE小于1691则会导致通道创建失败。
创建L2CAP通道
BNEP主要有五种类型的数据包,分别是BNEP_GENERAL_ETHERNET、BNEP_CONTROL、BNEP_COMPRESSED_ETHERNET、BNEP_COMPRESSED_ETHERNET_SOURCE_ONLY、BNEP_COMPRESSED_ETHERNET_DEST_ONLY。BNEP_CONTROL提供了两台蓝牙设备PANU与NAP之间交换控制信息的能力,其中包括发起BNEP连接请求/响应、设置网络类型过滤器、设置MAC/网卡地址过滤器和响应未知控制命令的能力。除BNEP_CONTROL之外的其他四种数据包都用于两台蓝牙设备之间传输网络数据。
BNEP_GENERAL_ETHERNET:该类型数据包的包头中会携带自身蓝牙MAC地址/IP网卡地址以及对端蓝牙MAC地址/IP网卡地址,这种包适合在多连接情况下进行数据交互。
BNEP_COMPRESSED_ETHERNET:该类型数据包省略了对端和自身的蓝牙MAC地址/IP网卡地址,这种包适合在一对一连接情况下PANU与PANU之间数据交互。
BNEP_COMPRESSED_ETHERNET_DEST_ONLY:该类型数据包的包头中仅携带对端的网络包类型和对端的蓝牙MAC地址/IP网卡地址,省略了自身的蓝牙MAC地址/IP网卡地址,这种包适合在一对多连接情况下进行数据交互。
BNEP_COMPRESSED_ETHERNET_SOURCE_ONLY:该类型数据包的包头中仅携带自身的蓝牙MAC地址/IP网卡地址,省略了对端的蓝牙MAC地址/IP网卡地址,这种包适合在一对多连接情况下进行数据交互。
任意一端发起BNEP连接时需要发送BNEP_SETUP_CONNECTION_REQUEST_MSG,对端蓝牙设备在接收到该CONTROL包时需要回复BNEP_SETUP_CONNECTION_RESPONSE_MSG,若Response Message字段的值为0x0000( Operation Successful)则表示BNEP连接成功。
BNEP的连接与网络数据包交互
BNEP成功连接后随即会收到来自手机的网络包,主要的网络协议包有IPv4、IPv6、ARP。至此PAN Profile建立成功,接下来需要结合TCP/IP协议栈(lwIP、uIP)去解析/封装网络数据。
4uIP协议栈与网络帧收发逻辑
uIP协议栈(Micro IP)是一个相较于lwIP更加轻量级的嵌入式TCP/IP协议栈,特别适用于低内存、低带宽的嵌入式设备。我们将uIP协议栈与BTBLE Dual Mode SDK做了适配,通过软件的方式使用两组环形队列vwin 了uIP协议中所需要的网卡驱动设备。
uIP协议栈封包格式
uip_buf用于保存接收和发送网络数据包。接收的网络数据和发送的网络数据都应该放入该缓冲区。
在接收到手机的网络数据时会把BNEP格式的网络帧数据包按照uIP协议栈的包格式组包好后拷贝到模拟网卡RX FIFO(sTlkTapDevRxFifo)环形队列中。main_loop将接收到的网络帧数据包从模拟网卡RX FIFO环形队列中取出并拷贝到uip_buffer中。
在发送网络数据时将uip_buffer中的网络帧数据包拷贝到模拟网卡TX FIFO(sTlkTapDevTxFifo)环形队列中。main_loop将需要发送的网络帧数据包从模拟网卡TX FIFO环形队列中取出并将包格式从uIP协议栈的包格式包转换成BNEP格式的网络帧数据包,然后调用BNEP发送函数将网络包数据发送给对端蓝牙设备。
当BNEP连接完成后会先进行DHCP_DISCOVER、DHCP_OFFER、DHCP_REQUEST、DHCP_ACK四阶段交互,完成手机分配IP地址给PANU。
DHCP IP地址分配
ARP阶段完成网卡地址和IP地址的转换与绑定,设备可以直接通过IP地址向对端发送数据。
ARP网络地址转换
接下来以访问https://zongxiaodong.cn/image_test/images为例,下载该网站中名为1.png的图片。在DNS解析阶段会将zongxiaodong.cn转换为对应的IP地址60.205.46.170。
uIP DNS域名解析
紧接着将1.png下载到本地。uIP web client用例主要是实现接入互联网的功能,并通过HTTP协议访问指定的网站。其功能主要包括建立网络连接,构建HTTP请求,发送HTTP请求,接受HTTP响应,解析HTTP响应。如图示,等待网站响应后1.png的图片数据就通过网络下载到PANU本地了。
HTTP访问网站并下载图片数据
5结束语
泰凌 BTBLE Dual Mode SDK集成了PAN网络服务功能,这使得采用泰凌TLSR951x/952x蓝牙芯片的模块和产品能够通过标准协议,轻松连接至支持NAP蓝牙网络热点的智能手机等主设备。这种连接提供了网络访问和数据下载服务,而且整个过程无需在手机上安装任何APP,极大地简化了设备间的互联互通和数据共享过程。
泰凌TLSR951x是一款高性能的蓝牙双模SoC,它巧妙地将经典蓝牙与低功耗蓝牙技术集成在单一芯片之中。这款芯片搭载了一个32位RISC-V MCU,具备强大的内核功能和一系列先进的外设模块,为高端耳戴式和可穿戴设备的创新设计和开发提供了坚实的基础。其多级电源管理设计使得TLSR951x在实现超低功耗运行的同时,也满足了对功耗极为敏感的应用需求,而高集成度则进一步帮助客户优化了系统总成本。
而TLSR952x则是泰凌微电子推出的一款集成了先进音频子系统的SoC,它包含了FastDSP单元、带加速器的音频编解码器和电源管理单元,特别适合于ANC(主动降噪)和ENC(环境降噪)等高端音频应用。TLSR952x全面支持蓝牙5.3标准,包括基本速率(BR)、增强数据速率(EDR)、低功耗(LE)、蓝牙低功耗 Mesh以及2.4 GHz专有标准,将无线音频设备所需的所有特性和功能集于一身,为客户提供了一个全面而高效的音频解决方案。
-
蓝牙
+关注
关注
114文章
5806浏览量
170180 -
网络
+关注
关注
14文章
7553浏览量
88724 -
局域网
+关注
关注
5文章
751浏览量
46277 -
PAN
+关注
关注
1文章
19浏览量
14278
原文标题:【技术专栏】经典蓝牙协议PAN概述
文章出处:【微信号:telink-semi,微信公众号:泰凌微电子】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论