繁体   English   中英

BLE 外围设备可以在连接前读取中央名称吗?

[英]Can a BLE peripheral read the Central name before connection?

我知道每个 BLE 设备都必须实现一个 GATT 服务器,因此支持具有可读的DeviceName
但是是否可以在建立连接之前从 Central 读取数据?

我想实现一个允许外围设备连接的设备的“白名单”,如下所示:

  1. 外设通告服务
  2. Central 扫描,找到这个 peripheral
  3. 中央请求连接
  4. 外围设备读取 Central DeviceName ,并根据该名称接受或拒绝连接。

外围设备可以通过两种方式公开其名称; 通过将其包含在广告数据中并具有设备名称 GATT 特征,GATT 客户端可以在连接期间读取该特征。

中央设备通常不做广告,因此外围设备获得中央设备名称的唯一方法是在连接时通过设备名称 GATT 特性。

所以不,您无法在连接前读取中央的名称。 但是,请注意,GAP 标准表示只有当设备“可发现”时,此特性才可读,无需身份验证/授权。 来自 GAP 章节第 12.1 节:

设备名称特征应包含设备名称,如第 3.2.2 节中定义的 UTF-8 字符串。 当设备可发现时,设备名称特征值应在无需身份验证或授权的情况下可读。 当设备不可发现时,设备名称特征在未经身份验证或授权的情况下不应可读。 设备名称特征值可能是可写的。 如果可写,则身份验证和授权可以由更高层规范定义或特定于实现。

作为旁注,连接并不意味着需要配对。 因此,您可以在配对请求之前读取名称,并根据名称允许/拒绝配对请求(如果您愿意)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM