蓝牙spp协议分析

Posted dylancao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝牙spp协议分析相关的知识,希望对你有一定的参考价值。

基本概念

蓝牙串口是基于 SPP 协议(Serial Port Profile),能在蓝牙设备之间创建串口进行数据传输的一种设备。 蓝牙串口的目的是针对如何在两个不同设备(通信的两端)上的应用之间保证一条完整的通信路径。具体的基本流程如下:
技术图片

设备A:这个设备会发起一个连接另外设备的请求。
设备B:这个设备等待另外一个设备发起连接请求。

协议栈分层

这个应用两边都是典型的传统应用,能够通过一个虚拟串口通道和对方通信。通过下图可以看出,SPP的协议栈使用的还是rfcomm通道,这个是蓝牙中比较古老的通道了。

技术图片

基本流程

连接流程一般分成三个部分,如下所示:
技术图片

1 创建虚拟连接:
A 使用SDP提交一个请求来查找RFCOMM服务信道号码。
B 请求对远端设备进行认证。
C 向远端的RFCOMM通道发起一个新的L2CAP请求。
D 在L2CAP通道上初始化一个RFCOMM连接。
E f在RFCOMM连接上创建一个新的数据连接。

2 接受虚拟串口连接:

A 接受发起设备端的认证请求并做处理.
B 在L2CAP层接收一个新的连接。
C 接受RFCOMM连接请求在RFCOMM通道上
D 在RFCOMM通道上接收数据连接请求。

3 在本地SDP数据上注册服务

SPP的API参数

/** A connection has been established with a remote device.

  • When this callback is received, the “spp_callback_parms.p.remDev” field
  • contains a pointer to the remote device context.
    */
    #define BTIF_SPP_EVENT_REMDEV_CONNECTED 0

/** A connection has been terminated for a remote device.

  • When this callback is received, the “spp_callback_parms.p.other” field
  • contains a 0.
    */
    #define BTIF_SPP_EVENT_REMDEV_DISCONNECTED 1

/** The data has been sent out. At this time the tx buffer can be released.

  • When this callback is received, the “spp_callback_parms.p.other” field
  • is from data structure SppTxDone_t.

*/
#define BTIF_SPP_EVENT_DATA_SENT 2

/** A request to close a channel was received.

  • When this callback is received, the “spp_callback_parms.p.other” field
  • contains a 0.
    */
    #define BTIF_SPP_EVENT_REMDEV_DISCONNECTED_IND 3

/** A request to open a channel was received.

    • When this callback is received, the “spp_callback_parms.p.remDev” field
    • contains a pointer to the remote device context.
    • This is an opportunitity for the server to reject the incoming request. To
    • reject the request modify spp_callback_parms.status to be BT_STATUS_CANCELLED.
      */
      #define BTIF_SPP_EVENT_REMDEV_CONNECTED_IND 4

以上是关于蓝牙spp协议分析的主要内容,如果未能解决你的问题,请参考以下文章

蓝牙的rfcomm和spp都是串口的协议,他们之间有啥区别呢?

android开发SPP经典蓝牙

蓝牙协议分析_BLE协议栈介绍

MITM 蓝牙 SPP 服务器

蓝牙协议分析_BLE连接有关的技术分析

蓝牙协议分析(11)_BLE安全机制之SM