我想改变广告间隔基于数据从一个传感器连接到DA14580。我打算通过改变线209年和210年app.c可以更新一个全局变量,另一个函数。
我就这样在app.c:
空白app_adv_start(空白)
{
…
cmd - > intv_min = current_app_adv_int_min;/ /是APP_ADV_INT_MIN
cmd - > intv_max = current_app_adv_int_max;/ /是APP_ADV_INT_MAX
....
}
这工作吗?这是最好的方式完成这个吗?
谢谢你所提供的任何帮助。
亲爱的Motred,
你当说,209 & 210行app.c必须改变的情况下,你需要改变广告间隔。
所以你提到的功能很好。
请注意,current_app_adv_int_min & current_app_adv_int_max必须相同。
最好的问候,
纪尧姆。
嗨,盖伊表示,
你知道如果你设置intv_min和intv_max不同?
从我的测试中,当intv_min < intv_max intv_max广告间隔。
你知道如果有任何副作用吗?如果intv_min被忽略,它有什么好处呢?
(我只是出于好奇感兴趣)。
谢谢,
奥伦
#定义APP_ADV_INT_MIN 1100
#定义APP_ADV_INT_MAX 1100
1100意思吗? ?单位? ?
嗨hrg,我相信单位是秒的穿越。
BR
JE_Dialog
你好,
你应该乘1100号0.625之间则事件的数量。所以1100 = > 688 ms。
嗨JE_Dialog
于确定吗?因为它是广告间隔所以1100 *(1/100)= 11秒! !? ?还是1100 * 0.625 = 687。msec ?因为在检查电力分析两个广告事件之间的时间是大约680毫秒! !
嗨Hrg,
看到我的答案。
除了设置,堆栈必须添加一个随机数的广告,以避免两个单独的设备在空中连续碰撞。因此,广告将波动+ / -10 ms
你好hrg,是的,你是对的:我看我们的灯塔SW误,我们有不同的计算。
81年和83年主要。c应用multiper 0.625 680 ms是正确的值。
#定义APP_ADV_INT_MIN 0 x20女士/ / * 0.625(+伪随机advDelay从0到10 ms)
BR JE_Dialog
你好,
只是增加了这个。你将不得不停止,然后重新启动广告实际上改变间隔。
嗨我,
在# 8中,你提到了(bie)堆栈将添加随机数(0 ~ 10 ms) APP_ADV_INT_MAX之上,而在我们的测试中,我们没有看到这个随机添加时间间隔:
——当我们启动3 DA模块相应相同(固件),我们几乎无法扫描所有3模块(有时我们只能扫描1,有时2)。
,而如果我们启动3 DA模块一个接一个,我们可以每次扫描所有3个模块。
——如果我们烧给每个模块固件不同APP_ADV_INT_MAX价值,和权力3相应模块,每次我们也可以扫描所有3个模块。
请帮助检查和建议. .
谢谢。
亚历克斯
嗨,亚历克斯,
根据蓝牙规范的广告事件发生定期与随机延迟略有修改,帮助避免干涉。即使没有这种机制,随着时间的推移,不同的广告间隔应该漂移和停止彼此重叠(无论多么相应你的广告开始多长时间的其他设备没有发现你的扫描仪)。你使用不同的bd-addresses吗?你的软件版本是什么?
由于MT_dialog
谢谢你太. .
你使用不同的bd-addresses吗?
——是的,我们为每个模块有不同的汇业银行。
你的软件版本是什么?
——基于SDK304固件开发。
亚历克斯。
嗨,亚历克斯,
你能尝试定义CFG_TRNG配置,并再次检查如果广告事件重叠?
谢谢MT_dialog。
嗨对话框
我们有相同的问题# 11,我们使用SDK 5.0.2.1
信息:
我们使用的是“app_easy_gap_non_connectable_advertise_start_create_msg”设置cmd - > intv_max和cmd - > intv_min相同
cmd - > intv_max = user_non_connectable_advertise_conf.intv;
cmd - > intv_min = user_non_connectable_advertise_conf.intv;
真正的随机数生成器是启用“da1458x_config_advanced.h”
#定义CFG_TRNG
希望你有一个解决方案,因为这是一个为应用程序真正的问题。
最好的问候,
Ciano霜
丹麦
嗨ciano,
请确保下载的图像在580 CFG_TRNG定义,我测试你的场景修改模板示例中的SDK 5.0.2.1广告non-connectable模式(不同bd_addresses字符串,广告和广告间隔相同),通过连接两个复位销我的问题在两块板同时复位。我看适当的董事会与一个嗅探器和一个正常的android BLE应用。唯一我可以得到一个设备,损坏当CFG_TRNG广告数据定义。请检查嗅探器附件当TRNG,当它没有定义。
由于MT_dialog
嗨对话框
我忘了说一件事,是我用一个计时器启动广告每一秒。我每次改变广告的数据。我设置广告user_non_connectable_advertise_conf.intv 10秒= 16000。所以我的有效间隔是由我的1秒计时器,我停止并重新启动广告的地方。
现在我的问题是:还会有增加了一个随机延迟广告女士清廉,当蓝牙堆栈广告每秒钟重启?
如果随机延迟不是说在这种情况下,这可以解释广告的碰撞我体验在空中。
期待你的答案。
最好的问候,
Ciano
嗨ciano,
所以你广告1广告包每1秒,这是定义为一个问题一个广告开始经过定时器。解释你在经历什么,第一个广告消息没有延迟。app_adv_start发布广告后字符串是网络传输的同时另一DUT之后,下一个广告事件调度随机延迟,所以在第一个消息发送这两个广告信息之间存在冲突。解决你所经历的一切是减少广告间隔这第二个广告字符串1秒间隔内传播和随机延迟插入广告间隔,这样两个广告字符串不碰撞。
你可以把广告字符串emmited和停止广告第二emmited广告字符串(这将会收到正确),你可以收集完成的广告和启动定时器,当定时器过后重新开始广告。
这是一个小片段如何计算你的广告事件:
enum arch_main_loop_callback_ret count_adv_events(空白)
{
uint8_t temp_last_ble_event;
temp_last_ble_event = arch_last_rwble_evt_get ();
如果(app_last_ble_event ! = temp_last_ble_event)
{
app_last_ble_event = temp_last_ble_event;
如果(app_last_ble_event = = BLE_EVT_END)
adv_count + +;
如果(adv_count = = 2)
{
adv_count = 0;
app_easy_gap_advertise_stop ();
}
}
返回GOTO_SLEEP;
}
由于MT_dialog
谢谢你的回答。
一个问题:
据我所知,然后添加到广告时间间隔的随机延迟我的10 ms。有可能这个范围增加到500或1000毫秒?
目前我所做的这个手动的应用程序定时器设置一个固定的延迟+一个随机(TRNG)时间从-500毫秒到500毫秒…这个传播广告的时间,我几乎没有看到任何碰撞与许多作战基地。
最好的问候,
Ciano霜
丹麦
嗨ciano,
插入广告的延迟操作位于ROM代码根据BLE规范,你不能改变这一点。
由于MT_dialog
非常感谢你的信息。
现在我没有更多的问题。
最好的问候,
Ciano霜
丹麦。