继续蓝牙的学习,本篇还是根据韦东山老师的视频理解以及整理。
对于BLE系统,它分为上下两块。上面那一块,我们称为host主机。下面这一块是controller,你可以简单的认为它就是一个蓝牙芯片。如下图所示(Host + Controller,他们的接口是HCI)
对于host这一块,它运行于linux android 单片机 ,它是纯软件的概念。它和蓝牙芯片之间通过usb口或串口来传输数据。那么对于host和controller中的各个层,它们是如何表示数据的呢?本篇博客就来讨论这个问题。
为了形象的理解,参照下图:
1、打包:
甲公司A1想给乙公司A2'发送一封信,于是甲公司A1就构造了一个数据包:for A2',然后它将数据包传给下面的部门B,下面的部门B会将这个数据包发给乙公司。注意部门B中的人并不认识乙公司A部门的人,它只知道乙公司有这样的一个部门。那怎么办呢?
它给传下的数据包 for A2'加上一个头部,于是变为了 A for A2'。对于甲公司B部门中的人它不知道数据包是给乙公司A2'的,它只知道数据包要给乙公司的A部门。
2、解包:
A for A2'这样的一个数据包通过某种方式就传到了乙公司的B部门。这个B部门的人一看到数据包有A这个头部,就知道数据包是发给A部门的,于是就将for A2'的数据包取出来,由A部门的派件员根据里面的信息发给A2',这样A2'就收到了甲公司中A1发给它的数据包了。
在整个过程中,B部门的人根本没有分析数据包中的内容 即:for A2'。
甲公司B部门的人与乙公司B部门的人也有交流啊,比如说甲公司的B3想发一个数据包给乙公司的B2',该怎么发呢?
首先甲公司的B3构造出一个数据包 for B2',然后再给它加上一个头部B,由快递员发给乙公司的B部门。B部门一看这个数据包就是发给本部门的人,于是它就直接看了看这个数据包,哦是发给B2’,