Bluetooth 如何将传感器数据嵌入TI SensorTag cc2650的广告包中?

Bluetooth 如何将传感器数据嵌入TI SensorTag cc2650的广告包中?,bluetooth,bluetooth-lowenergy,sensors,Bluetooth,Bluetooth Lowenergy,Sensors,我试图使TI SensorTag(cc2650)无连接(只是不断宣传传感器,如加速计,读数) 在基本SensorTag项目的SensorTag.c文件中,我可以看到static uint8\u t advertData[],但我不确定是否可以将动态传感器数据放在那里(或者如果需要,这是正确的方法,或者在哪里可以找到GAP\u ADTYPE.列表).我对这个设备一无所知,所以我的回答很笼统 是的,您可以通过广告广播传感器的数据,这样就不需要其他设备连接以查看传感器的值 以下是BLE 4.2核心规范

我试图使TI SensorTag(cc2650)无连接(只是不断宣传传感器,如加速计,读数)


在基本SensorTag项目的
SensorTag.c
文件中,我可以看到
static uint8\u t advertData[]
,但我不确定是否可以将动态传感器数据放在那里(或者如果需要,这是正确的方法,或者在哪里可以找到
GAP\u ADTYPE.
列表).

我对这个设备一无所知,所以我的回答很笼统

是的,您可以通过广告广播传感器的数据,这样就不需要其他设备连接以查看传感器的值

以下是BLE 4.2核心规范第3卷C部分11.1中所示的广告数据格式

这里有趣的是最后一个嵌套部分,广告类型和广告数据,当然还有它们的长度

基本上,您要做的是,如果您有一个4字节的值,将长度设置为5(字节),1用于类型,4用于数据

类型本身必须是此处定义的间隙类型之一:。要公布您自己的数据,您必须选择最后一个,制造商特定数据,即0xFF

关于您的源代码和您正在使用的TI堆栈,我无法真正帮助您,但是如果它与我使用的其他堆栈的工作方式相同,那么很可能:

  • 您可以将数据放入AdverData[]
  • 间隙类型类似于间隙类型和特定于制造商的间隙类型

  • 当然,广告结构的长度必须在某处指定。无论是指定整个数据包的长度,还是只告诉堆栈数据的长度(在AdverData中),它都将计算(添加1)AD结构的长度

    由于您使用的是TI Stack,请查找简单的BLE观察器和简单的BLE广播器示例。如果您不想创建到设备的连接,那么应该这样做

    如TI文件所述

    Observer基本上是一种扫描广告消息的设备 但无法启动连接。另一方面,广播公司是一个 发送广告消息但不可连接的设备


    您可以在示例文档和源代码注释中找到所需的所有内容。

    当使用GAP类型制造商特定数据(0xFF)时,后面必须跟一个制造商UUID,仅添加不带UUID的数据意味着您可能会错误地发布广告。似乎不存在可用于风险的通用制造UUID,SIG需要2500美元来注册特定UUID。我正在努力解决同样的问题,编码到GAP类型09看起来是一个不应该让任何人或任何人感到不安的选项

    更多信息:

    对我来说,答案是芯片制造商推荐的(我使用的是CC2640),即使用芯片制造商UUID,附加2字节的标识,因此对于完整的广告,我使用了以下内容

    [1E FF 0D 00 XX XX]


    由于附加的标识字节可能不是唯一的,因此使用它会有风险,但希望您能找到某种方法来确认有效负载是否完整,从而为您提供可靠的数据发送方式。

    尝试同时执行这两种操作时,让设备将传感器数据放入数据包中,以便其他设备知道是否应该连接到它。我将尝试查找并查看BLE广播公司示例源代码。然后您应该将此作为起点。我觉得它已经有很好的文档记录了,但是请看一下代码注释。我需要一个观察者,因为其他一些设备需要连接到传感器以激活GPIO。这对解释事情很有帮助!设备的AdverData最大大小为31字节。我来看看是否能拼凑出一个工作示例。31字节是数据包的总大小,其中可以有一个或多个AD结构。因此,如果有足够的空间,您仍然可以公布一些服务的UUID、一些标志或本地名称。无论如何,我不知道它是由堆栈管理还是由您自己管理。这是正确的,因为长度存在于协议中,因此在advertData中,您可能不需要在其他地方指定它,它将被解析。哦,它写在核心规范的图像上,但如果您不知道,您可以在广告响应中再添加31个字节。如果扫描仪设备请求更多数据,则发送此响应。但是核心规范也指出,
    虽然作为广告包的一部分发送的广播用户数据本质上是动态的,但扫描响应数据本质上通常是静态的。
    。(第1卷,A部分,4.2.2.2)这是正确的,因为我在GAP_ADTYPE_MANUFACTURER_SPECIFIC发送的数据包计数中添加了一个计数器。问题是关于嵌入传感器数据,但是,如果我能直接找到这个例子,这个答案就是正确的验证(我会这样标记)。