使用 AT 命令使用 Adafruit Feather 32u4 广告 ANCS 服务

问题描述

我正在尝试使用 Apple Notification Center Service 来实现 Adafruit Feather 32u4 Bluefruit LE,以便能够从我的 iPhone 接收通知到 Feather 板,通过串行连接将它们发送到我的 PC 并处理它们我写的软件。

我使用 AT+GATTADDSERVICE 和 AT+GATTADDCHAR 命令设置了 ANCS 服务和特性,但是当我尝试使设备可被发现并宣传 ANCS 服务的使用时,设备将无法被发现。

这是我使用的命令:

AT+GAPSETADVDATA=02-01-06-11-06-79-05-F4-31-B5-CE-4E-99-A4-0F-4B-1E-12-2D-00-D0

地点:

  • 0x02:是有效载荷中第一条消息的字节长度
  • 0x01:是“数据类型值”,表示这是一个“标志”
  • 0x06:表示不支持 BR/EDR 的 LE 通用可发现模式标志
  • 0x11:为第二条消息的字节长度(0x11为十进制17字节,“消息“128位服务类UUID不完整列表”类型为1,ANCS的UUID为16字节)立>
  • 0x06:是“128 位服务类 UUID 的不完整列表”的“数据类型值”
  • 0x7905F431B5CE4E99A40F4B1E122D00D0:是 ANCS 的 UUID。

不过,当我使用上述命令时,设备将无法被发现。你知道为什么吗?

在尝试解决问题时,我注意到如果我尝试宣传不同的服务,例如心率服务和设备信息服务,其他设备确实可以看到该设备。这是我使用的命令:

# Advertise as discoverable and BLE only with 16-bit UUIDs 0x180D and 0x180A
AT+GAPSETADVDATA=02-01-06-05-02-0d-18-0a-18

您知道为什么在尝试宣传 ANCS 服务时设备不可见吗?

谢谢!

附言我是蓝牙协议的新手,抱歉。

解决方法

查看您提供的 ANCS 的 specification。它指出:

只有一个 ANCS 实例可以出现在 NP 上。由于 iOS 的特性,不能保证 ANCS 始终存在。因此,NC 应该寻找并订阅 GATT 服务的 Service Changed 特性,以便随时监控 ANCS 的潜在发布和取消发布。

再往下看,您会发现一些数据表明您的 iPhone 是 NP,并且可能会实施 ANCS。

ANCS: The Lifetime of a ios notification

您的 Feather 板将是 Central,应该寻找服务并连接到它。正如@Paulw 在评论中所说的那样,您的做法是错误的。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...