BLE Privacy(二)
Privacy feature
Core Spec 5.4在《Vol 3,Part C:Generic Access Profile》中对LE Privacy的使用,以及feature由做进一步的解释说明,建议详细看完。
Host+Controller实现privacy方式,可以支持undirected connectable mode或directed connectable mode,但使用directed connectable mode需要对端设备的Controller支持Address Resolution.如果adv data或scan rsp data需要周期性改变,那么应该和private address同步更改。
Host实现privacy方式,支持undirected connectable mode来创建连接。Host应配置一个timer T(gap),当T(gap)的时间到了,Host应生成一个新的RPA or NRPA.当然,设备不处于advertising、scanning、connected下,T(gap)可以不工作。
在adv的时候,如使用了resolvable private address or non-resolvable private address地址,那么广播内容中不应携带设备名称或唯一特征的数据。
Host可以通过HCI_LE_Set_Privacy_Mode来设置Privacy Mode.
LL Privacy
Link Layer Privacy的实现是核心内容,在core spec有详细说明,建议仔细阅读。在Core《Vol 6,Part B:Link Layer Specification》
默认LL支持privacy的情况下:
adv,当收到RPA地址的connection request时,可连接的Filter Accept List未使用的情况下,需要处理该请求(即上报Host)。当使用可连接Filter Accept List时,需要解析该地址并判断是否在List中,如果成功解析且在List中,则处理该请求,否则过滤。需要注意的是,当收到device Identity Address的连接请求时,除了需要判断Filter Accept List外,还需要Host配置的privacy mode为device privacy mode,才会处理该请求,否则过滤。同理,收到scan request也是一样的。
adv,当收到NRPA地址的scan/connection request时,Filter Accept List未使用的情况下,需要处理该request,若使用,则需要比对通过才会处理,否则过滤。
在回复SCAN_RSP PDU时,回复的AdvA filed必须和SCAN_REQ PDU中的AdvA filed一致。同理,向RPA地址发送的SCAN_REQ PDU中的AdvA filed要和ADV PDU中的AdvA filed一致。
scan和initiate类似,这里不展开,建议看core spec.
Message Sequence Charts
相关的MSC在《Vol 6,Part D:Message Sequence Charts》
Active Scanning with Privacy and Controller based resolvable private address generation
如果是用Controller来解析生成RPA的话,Host可以通过LE Read Local Resolvable Address 和 LE Read Peer Resolvable Address来获取当前地址信息。