1、1.6 从设备(Slave):作为从设备连接到其他设备。2蓝牙的五种工作状态2.1 准备(standby)2.2 广播(advertising),Ibeacon使用该状态1) Connectable Undirected Event Type(可连接无定向广播) 2) Connectable Directed Event Type(可连接定向广播) 3) Scannable Undirected Event Type(可扫描无定向广播) 4) Non-connectable Undirected Event Type(不可连接无定向广播)2.3 监听扫描(Scanning) 2.4发起连接(I
2、nitiating)2.5 已连接(linji)(Connected) 3蓝牙(l)的Profile3.1 Characteristic:Characteristic特征值,主从(zhcng)机的通讯全是通过Characteristic来实现的,可以理解为一个标签,通过这个标签可以获取或者写入想要的内容;3.2 UUID:统一识别码我们刚才提到的Service和Characteristic,都需要一个唯一的UUID来标识。3.3与广播相关可设置的参数有:1) Advertising_Interval_Min 2) Advertising_Interval_Max, 3) Advertising
3、_Type, 4) Own_Address_Type, 5) Direct_Address_Type, 6) Direct_Address, 7) Advertising_Channel_Map, 8) Advertising_Filter_Policy 9) Advertising Data 10) Scan Reponse DataAdvertising interval 首先介绍一下Advertising interval(广播时间间隔):在所有的非定向广播事件中,两个相邻的广播事件的时间间隔(T_advEvent)为: T_AdvEvent = advInterval + advDel
4、ay advInterval必须是0.625ms的整数倍,并且范围在20ms-10.24s之间,对于“可扫描非定向广播”和“不可连接非定向广播”这两种类型,该值应不小于100ms(即至少要160个0.625ms),对于“可连接的非定向广播”该值可设置的范围为20ms-10.24s。advDelay是Link Layer(链接层)分配的一个(y )伪随机数,它的范围为0-10ms 参数(cnsh)Advertising_Interval_Min和Advertising_Interval_Max就是(jish)用于调整advertising interval的,它们通常是以0.625ms为单位的,
5、这里设置一个上限值和下限值,目的是希望让控制器根据其工作情况来动态调整合适的广播包发送频率。Advertising_Interval_Min 非定向广播包的最小广播间隔。 范围:0x0020-0x4000 默认值:N = 0x0800(1.28秒) Time = N * 0.625ms 时间范围:20ms-10.24s Advertising_Interval_Max 4蓝牙连接过程四种设备类型 : Cnetral主机(常作为client端):如手机,PC Peripheral从机(常作为Service端):如心率计,血糖计 BroadCaster广播者:广告发送者,不是可连接的设备Obser
6、ver观察者:扫描广告,不能够启动连接连接过程:Peripheral 从机开启广播;Central扫描从机(Peripheral)广播;Peripheral接收到Central的扫描请求Peripheral向Central发送扫描回应数据;Central向Peripheral发起(fq)连接;开始(kish)通信。广播(gungb)交互过程:蓝牙设备状态切换图:5蓝牙(l)设备(shi)包结构(jigu)蓝牙设备(BLE)有5种工作状态,其中一种是Advertising,IBeacon设备就工作在这种状态。发射BLE Packet时,除了CRC以外的其它部分均从小端开始传输,而CRC则从大端开
7、始传输。设备地址是BLE Packet中的一个重要部分,协议规定了设备地址的长度为48bit,地址规范不再赘述。BLE将40个物理信道中的3个作为Advertising信道,分别是0,12,39,其对应索引号为37,38,39。5.1 蓝牙(l)数据包格式(g shi)5.2 包的说明(shumng)BLE MAC层的包格式如上图所示,其中Preamble用于同步发射机和接收机的载波频率和时钟,长度为8bit。在Advertising模式中,Preamble取值为10101010b。Advertising模式下的Access Address域的取值为0x8E89BED6。PDU域即BLE Pa
8、cket的协议数据单元,其基本格式为16bit Header加上037byte的Payload。Header中包含了Length域用于指示Payload的长度,Type域则用于指示PDU的类别。对于IBeacon使用的ADV_IND PDU而言,Payload中的前6个byte是发射机的设备地址,其后则是上层协议的数据。CRC域由PDU计算得到。5.3 数据处理流程Advertising Packet PDU的比特流处理流程主要包括两步,第一步是计算PDU的CRC;第二部是做Data Whitening,即进行扰码操作(scramble),通过将PDU的数据比特与伪随机序列进行模二和消除代调制
9、序列中的长0或长1序列,这些序列会造成接收机的直流偏执,影响信号接收。IBeacon协议(xiy)支持(zhch)IBeacon的硬件(yn jin)设备持续发送Advertising Packet,为附近的移动应用提供环境信息。IBeacon发送的数据主要包括三个主要字段,分别是:UUID:是一个128bit的序列。Major:16位无符号整数,取值为065535,描述不同层级下的IBeacon设备。Minor:RSSI: 一个用于参考的RSSI值,是距IBeacon设备1m处测得的IBeacon发射信号的信号强度;。一般而言,接收设备可以测得接收信号的信号强度,根据距IBeacon1m处和
10、接收处的信号强度值以及信号强度距离模型,我们可以估算出接收设备距IBeacon的距离,从而获得一个相对粗粒度的环境信息。IBeacon Packet结构PDU域即BLE Packet的协议数据单元,其基本格式为(16bit Header)+(Payload(2-37)ADV_IND PDU的Payload包括两部分,第一部分AdvA是发射机的MAC地址,第二部分AdvData则是上层数据。协议(xi)规定,AdvData是由多个(du )Advertising Data Structure构成(guchng)的,在每个AD Structure中:第1个字节用于声明该AD Structure剩余
11、部分的长度;第2个字节用于声明该AD Structure的类型;剩余字节则是根据与类型相关的数据;IBeacon的AdvData包含了两个AD Structure:第一个Structure为 02 01 1A,02,剩余长度,其中01指示该Structure的类型为Flag Structure,而1A则为具体的Flag集合的值。第二个Structure为1a ff 4c 00 02 15 .,其中ff指示该Structure的类型为制造商声明数据,即其格式应有IBeacon协议声明,00 4c则是苹果公司标识,BLE协议规定这两字节应为制造商标识。之后的02 15.即是上层的IBeacon协议
12、声明的数据了,包含了上面提到的UUID,Major,Minor以及RSSI。如图中抓包所示:1.Access Address均为0x8E89BED6。2. PDU BLE协议(xi)规定PDU的长度(chngd)为239字节,其中(qzhng)前两个字节是PDU的Header,剩余字节为PDU的Payload。2.1 . Header,IBeacon使用的Adv PDU的类型是固定的,即ADV_IND;Type: 域值为0;TxAdd: IBeacon Mac Address的类型,1表示Random Address,0表示Public Address。RxAdd与TxAdd相似,指示了接收设
13、备的地址类型,但是在IBeacon的Payload中并没有接收端的地址数据,因此这一位是不用的,根据协议应将其设为0,与其它RFU位相同。PDU-Length域长6bit,指示了Payload的字节数, IBeacon的Payload有36个字节。2.2 Payload,IBeacon的Mac地址,即AdvA,其长度为6byte;IBeacon的数据域AdvData,其长度为30byte;3. CRC,CRC根据PDU的内容计算得到4. AdvData部分的结构IBeacon的第二个AD Structure结构如下:1第一个字节1A表示了其剩余部分的长度,2第二个字节(z ji)FF表示(bi
14、osh)了该Structure的类型(lixng)为Manufacturer Specific Data,即由制造商规定的数据,BLE协议规定该类型的Structure的开始两个byte为制造商标识。3剩余的部分则是由IBeacon协议定义的数据。5. IBeacon协议定义的业务数据结构102 15是IBeacon Header,02是flags,15是payload的长度。2Beacon的Payload(21字节):2.1 16byte是UUID,2.2 2byte(00 01)是Major2.3 2byte(00 02)是Minor;2.4 1byte(C5)是RSSI,RSSI是用补码表示的,这里的值是-59。数据包总体结构描述BLU:PREAMBLE(1)ACESS ADDRESS(4)PDU(2-39)CRC(3)PREAMBLE:用于同步发射机和接收机的载波频率和时钟,长度为8bit;ACESS ADDRESS:针对Advertising包的是:0x8e89bed6. (固定的,数字信道。通过地址就知道这是adv包,同一频道区分不同