BLE Advertising and scan response format
|AD 结构1|AD结构2|。。。
每个结构都是:
|length|AD type|AD data|
简单的说就是 |数据长度|AD数据种类|数据| 这种一块一块拼起来的数据包。
AD type定义:
Service UUIDs。
Local Name:
Flags:
Manufacturer Specific Data:
TX power Level : (难道算距离的??)
Security Manager Out of Band (OOB):仅仅在out-of-band机制中使用???什么破机制??
Security Manager TK Value:仅在out-of-band机制中使用。
Slave Connection interval range : 连接的交换信息的间隔。(不用连接这个参数就没用了)
Service Solicitation: 给别的设备说自己要的服务。(这个似乎用不到)
Service Data:service UUID和相关的数据。
Advertising包的type有几种:ADV_IND, ADV_NONCONN_IND, ADV_SCAN_IND.
Scan Response 的包使用这个结构的有:SCAN_RSP包。
GAP roles:Broadcaster, Observer, Peripheral,Central.
2077页
link layer
link layer的5个状态:Standby State; Advertising State, Scanning State,Initiating State, Connection State.
至少可以有Advertising State或者是Scanning State.(至少能广播或者是能扫描)
Standby就是休眠模式啦。
Advertising就是发包,并且监听应有的回应。Scanning就是专门接受Advertising的包。(没有主动发包扫描)
Initiating就是监听一个选定的设备发出的advertising包并且开始回复建立连接的状态。
Connection就是连接已经建立了。有两个role:Master Role,SlaveRole。从Initiating状态来的是Master,从Advertising来的是Slave。
Device Address:48bit,6byte。public device address 或者是 random deviceaddress。
public address组成:|24bit company assigned|24bit company id|
random device address组成:|24bit hash|24bit random|
Physical Channel:40个RF频道,3个是advertising的,37个是data的。
advertising channelindex的37对应的频率是:2402Mhz,38是2426Mhz,39是2480Mhz。data channel index0是2404,步进2Mhz。
空中包结构:Link Layer packet format:|1byte Preamble| 4byte Accessaddress | 2-39byte PDU | 3byte CRC |
包最小10个byte,最多47byte。
Preambel byte是用来同步通讯的,advertising包用 10101010b作为Preamble.
Access Address针对Advertising包的是:0x8e89bed6. (固定的,数字信道。)
|