你好,我们使用上一个版本的SDK 5.0.4来创建一个具有特定特性的新BLE项目。需求是发送预定义数量的广告信息与特定的制造数据。
问题:有没有一种方法来计算传播的广告信息?
或
是否有一种方法/功能可以将一条广告信息独立于当前参数(广告周期和渠道)发送3次、5次或100次?
谢谢你提前给出答案。
嗨AngelT,
它没有允许您发送指定数量的广告消息的功能,但您可以计算由设备发出的广告消息的数量。在信标参考设计中有针对这种操作的实现。请检查app_asynch_trm()函数,有一个实现读取最后一个BLE事件,如果这是一个BLE_EVT_END,它意味着发布消息。这也是在计算连接间隔,所以在计算时你必须确保你的设备也处于广告状态。你可以在SDK5的app_on_ble_powered回调中实现这个函数。
由于MT_dialog
你好MT_dialog,
谢谢你这么快的答复。我看到了beacon项目,我成功地在我的项目中实现了这个想法。我能正常工作。但我有几个问题。
1.为什么函数app_asynch_trm()的返回值只是GOTO_SLEEP?当广告操作停止时,返回值为KEEP_POWERED是否更好?
2.信标参考设计支持连接模式和特定配置文件。可以更新部分配置参数。为什么在项目中(在函数app_asynch_trm()中)没有验证当前状态是否为“广告状态”,就像您在答案中推荐的那样?
3.为什么在app_asynch_trm()函数中第一次传输广告消息后存在下一个代码?if (app_advertise_mode == GAPM_ADV_NON_CONN)ble_advtim_set (500);
1)这是用户应该在他的应用程序中处理的事情,无论是否继续睡眠过程或不进入睡眠,并继续安排事件。如果你一直返回KEEP_POWERED,你将无法在广告间隔之间入睡。
2)信标将测量错误的广告一些连接事件,但我认为这并不重要的特定参考设计,因为计数器设置为零时断开并开始再次广告。
3)你提到的代码减少了在广告期间不同信道上的每个传输间隔,因为设备是一个信标,它发布不可连接的数据包,因此,它不会等待每个广告的接收,因此,由于没有接收,我们可以减少所需的时间槽,以执行一个传输。这样做是为了进一步降低设备的功耗。
谢谢你这么快的答复。关于你上一个答案。这个值500是如何定义的?蓝牙标准定义了625us的TX和RX时间槽。顺便说一下,如果函数app_last_rwble_evt_get()返回的最后祝福事件(一个祝福事件包含3传输),广告间隔将改变所有祝福事件后第一个,文档中无法看到嗯- b - 019 - _da14580_beacon_reference_application_v1.2.pdf。
值是500美元,它的不发布间隔的值。对于每个广告事件,设备在3个不同的通道中发布,该值定义了一个广告事件中不同广告通道上每个连续RF发射之间的间隔。我不明白最后一个问题,为什么所有BLE事件的时间间隔都要在第一个事件之后改变?
Thansk MT_dialog
嗨AngelT,
它没有允许您发送指定数量的广告消息的功能,但您可以计算由设备发出的广告消息的数量。在信标参考设计中有针对这种操作的实现。请检查app_asynch_trm()函数,有一个实现读取最后一个BLE事件,如果这是一个BLE_EVT_END,它意味着发布消息。这也是在计算连接间隔,所以在计算时你必须确保你的设备也处于广告状态。你可以在SDK5的app_on_ble_powered回调中实现这个函数。
由于MT_dialog
你好MT_dialog,
谢谢你这么快的答复。我看到了beacon项目,我成功地在我的项目中实现了这个想法。我能正常工作。但我有几个问题。
1.为什么函数app_asynch_trm()的返回值只是GOTO_SLEEP?当广告操作停止时,返回值为KEEP_POWERED是否更好?
2.信标参考设计支持连接模式和特定配置文件。可以更新部分配置参数。为什么在项目中(在函数app_asynch_trm()中)没有验证当前状态是否为“广告状态”,就像您在答案中推荐的那样?
3.为什么在app_asynch_trm()函数中第一次传输广告消息后存在下一个代码?
if (app_advertise_mode == GAPM_ADV_NON_CONN)
ble_advtim_set (500);
嗨AngelT,
1)这是用户应该在他的应用程序中处理的事情,无论是否继续睡眠过程或不进入睡眠,并继续安排事件。如果你一直返回KEEP_POWERED,你将无法在广告间隔之间入睡。
2)信标将测量错误的广告一些连接事件,但我认为这并不重要的特定参考设计,因为计数器设置为零时断开并开始再次广告。
3)你提到的代码减少了在广告期间不同信道上的每个传输间隔,因为设备是一个信标,它发布不可连接的数据包,因此,它不会等待每个广告的接收,因此,由于没有接收,我们可以减少所需的时间槽,以执行一个传输。这样做是为了进一步降低设备的功耗。
由于MT_dialog
谢谢你这么快的答复。
关于你上一个答案。这个值500是如何定义的?蓝牙标准定义了625us的TX和RX时间槽。顺便说一下,如果函数app_last_rwble_evt_get()返回的最后祝福事件(一个祝福事件包含3传输),广告间隔将改变所有祝福事件后第一个,文档中无法看到嗯- b - 019 - _da14580_beacon_reference_application_v1.2.pdf。
嗨AngelT,
值是500美元,它的不发布间隔的值。对于每个广告事件,设备在3个不同的通道中发布,该值定义了一个广告事件中不同广告通道上每个连续RF发射之间的间隔。我不明白最后一个问题,为什么所有BLE事件的时间间隔都要在第一个事件之后改变?
Thansk MT_dialog