蓝牙协议栈
蓝牙协议栈
xiaocui911 发表于2年前
蓝牙协议栈
  • 发表于 2年前
  • 阅读 70
  • 收藏 1
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

摘要: 蓝牙协议有点晕,我得捋捋。。。

蓝牙协议框架体系基本上就是这个图了,有点乱。

然后,我们先从底层开始分析,主要是由基带层和链路管理层组成。

无线连接(RF)通过2.4GHZ无需申请的ISM频段,实现数据的过滤与传输。

基带层提供两种不同的物理链路(同步面向连接链路SCO,异步无连接链路ACL)主要负责跳频和蓝牙数据帧的传输。

LMP负责两个或多个设备链路的建立和拆除及链路的安全和控制,同时他为上层软件模块提供了不同的访问入口。

蓝牙主机控制器HCI:是由基带控制器,连接管理器,控制和时间寄存器等组成。他是蓝牙中软硬之间的接口。上下两层的数据和消息必须通过HCI的解释才能进行。

中间协议层:

中间协议层主要是由逻辑链路控制与适配协议L2CAP(logical link control and adaptation protocol),服务发现协议SDP,线缆替换协议和二进制电话控制协议TCS等功能组成。

L2CAP是核心部分,他是其他协议实现的基础。位于基带之上,向上层提供面向连接和无连接服务。他主要完成数据的拆装,服务质量控制,协议复用,分组的分割与复用。

SDP是一个基于客户/服务器结构的协议。工作于L2CAP层之上,为上层应用程序提供一种机制来发现可用的服务与属性。

RFCOMM是一个仿真有线链路的无限数据仿真协议。他在蓝牙基带上仿真RS-232控制和数据信号,为上层业务提供传送。

TCS定义了用于蓝牙设备之间建立语音和数据呼叫的控制信令。

高端应用层:

高端协议层主要是包括了PPP,TCP UDP,WAP等协议,这里不多介绍。

蓝牙很重要的一个特性就是所有的蓝牙产品无需实现所有的蓝牙规范。为了更加容易保持蓝牙设备之间的兼容,所以采用了profile(不懂!!!)。profile定义了设备如何实现一种连接或应用。有四种基本的profile他们包括GAP/SDAP/SPP/GOEP

属性协议(AP),通用属性规范(GATT) 一般访问应用规范(GAP)。属性协议定义了客户端与服务器端如何发送符合标准的消息。由6种基本操作构成:请求,响应,命令,指示,通知,确认。通用属性规范:定义了如何发现与使用服务,特性与描述符的标准方法。主要有服务,特性的发现,客户端的读写等。一般访问规范:定义了蓝牙设备如何发现和建立与其他设备的连接。他处理一些一般模式的业务和一些安全性问题,同时还处理一些有关连接的业务。

蓝牙协议栈通过软中断将底层事件(收到蓝牙数据,链接成功,收到广播)抛给app,app再捕获自己感兴趣的时间做相应的处理。至于怎么捕获,就是根据switch   case语句(你懂的)来的。如图:

应用程序通过_SVC 指令触发异常进入协议栈SVC异常处理函数,然后根据number调用协议栈中预先实现的底层协议处理函数。

而中断实际上是根据中断向量表中中断号进入协议栈相应中断,然后通过中断号的“中断偏移”返回到应用程序的中断处理函数。

协议栈收到底层数据做相应处理后,处理器进入协议栈将evt_id放入事件队列,后执行SWI中断处理函数。然后程序进入应用程序再取出事件并交给事件派发程序(即ble_evt_dispatch()函数)处理。事件派发程序将事件传给相关服务和事件处理任务。

更具体的代码分析,等到二更了,因为我也是菜鸟。。。

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 6
博文 15
码字总数 14765
×
xiaocui911
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: