按程序改变广告费率

21个职位/0个新职位
最后一篇文章
斑驳的
离线
最后一次见到:5年3个月前
专家
已加入:2014-01-20 21:48
按程序改变广告费率

我想根据连接到DA14580的传感器的数据更改广告间隔。我计划通过将app.c中的第209行和第210行更改为可以由另一个函数更新的全局变量来实现这一点。

所以我在app.c中会有这样的内容:
void app\u adv\u start(无效)
{
...
cmd->intv\u min=current\u app\u adv\u int\u min;//是app\u adv\u int\u min
cmd->intv\u max=current\u app\u adv\u int\u max;//是app\u adv\u int\u max
....
}

这样行吗?这是最好的方法吗?

谢谢你的帮助。

GLU对话框
离线
最后一次见到:3年3个月前
工作人员
已加入:2014-02-07 13:35
亲爱的莫特瑞德,

亲爱的莫特瑞德,

你说得对,如果你需要改变广告时间间隔,应用程序c中的第209行和第210行都必须改变。
所以你提到的功能很好。
请注意,current\u app\u adv\u int\u min和current\u app\u adv\u int\u max必须相同。

致以最诚挚的问候,

纪尧姆。

奥伦
离线
最后一次见到:1年4个月前
专家
已加入:2014-06-28 22:03
嗨,纪尧姆,

嗨,纪尧姆,
你知道如果你将intv\u min和intv\u max设置为不同会发生什么吗?
根据我的测试,当intv\u min

你知道这样做有没有副作用吗?如果忽略intv\u min,它有什么好处?
(我只是出于好奇才感兴趣)。

谢谢,
奥伦

人力资源
离线
最后一次见到:2年2个月前
上师
已加入:2014-08-05 13:37
#定义APP\u ADV\u INT\u MIN

#定义APP\u ADV\u INT\u MIN 1100
#定义APP\u ADV\u INT \u MAX 1100
1100意味着??单位??

JE\U对话框
离线
最后一次见到:4天6小时前
工作人员
已加入:2013-12-05 14:02
嗨,hrg,我相信

嗨,hrg,我相信单位是1/100秒。

比尔

JE\U对话框

MHv\U对话框
离线
最后一次见到:5天1小时前
工作人员
已加入:2013-12-06 15:10
你好,

你好,

您应该将数字1100乘以0.625,得到事件之间的毫秒数。所以1100=>688毫秒。

人力资源
离线
最后一次见到:2年2个月前
上师
已加入:2014-08-05 13:37
Hi JE\u对话框

Hi JE\u对话框

你确定吗?因为是广告间隔所以1100*(1/100)=11秒??还是1100*0.625=687.s毫秒?因为在检查电源配置时,两个广告事件之间的时间约为680毫秒!!

MHv\U对话框
离线
最后一次见到:5天1小时前
工作人员
已加入:2013-12-06 15:10
嗨,Hrg,

嗨,Hrg,

看我上面的答案。

除了设置之外,堆栈还必须在广告中添加一个随机数,以避免两个独立的设备在空中连续碰撞。所以广告会有+/-10毫秒的波动

JE\U对话框
离线
最后一次见到:4天6小时前
工作人员
已加入:2013-12-05 14:02
你好,hrg,是的,你是对的

你好,hrg,是的,你是对的:我错看了我们的信标软件,我们有一个不同的计算。

main.c中的第81行和第83行应用了0.625的倍数,因此680mS是正确的值。

#定义APP\u ADV\u INT \u MIN 0x20//*0.625ms(+伪随机advDelay从0到10ms)

BR JE\u对话框

MHv\U对话框
离线
最后一次见到:5天1小时前
工作人员
已加入:2013-12-06 15:10
你好,

你好,

只是补充一下。你将不得不停止,然后重新开始广告,以真正改变间隔。

亚历克斯
离线
最后一次见到:2年3个月前
已加入:2014-08-20 03:39
嗨,杰,

嗨,杰,

在#8中,您提到(BLE)堆栈将在APPŠADVŠu INTŠMAX上方添加随机数(0~10ms),而在我们的测试中,我们没有看到此随机添加到间隔:
-当我们同时启动3个DA模块(使用相同的固件)时,我们很难扫描所有3个模块(有时我们只能扫描1个,有时2个)。
-如果我们一个接一个地打开3个DA模块,我们每次都可以扫描所有3个模块。
-如果我们把不同APP ADV INT MAX值的固件烧到每个模块上,同时给3个模块通电,我们也可以每次扫描所有3个模块。

请帮助检查并建议。。

谢谢。
亚历克斯

MT\u对话框
离线
最后一次见到:1周3天前
工作人员
已加入:2015-06-08 11:34
嗨,亚历克斯,

嗨,亚历克斯,

根据蓝牙规范,广告事件以固定的时间间隔发生,并通过随机延迟进行轻微修改,以帮助避免干扰。即使没有这种机制,随着时间的推移,不同的广告间隔应该会漂移并停止重叠(无论你的广告同时开始多长时间,其他设备都不会被你的扫描仪发现)。你使用不同的bd地址吗?你的软件版本是什么?

谢谢你的对话

亚历克斯
离线
最后一次见到:2年3个月前
已加入:2014-08-20 03:39
谢谢你,先生。。

谢谢你,先生。。

你使用不同的bd地址吗?
-是的,我们每个模块有不同的BDA。
你的软件版本是什么?
-基于SDK304开发的固件。

亚历克斯。

MT\u对话框
离线
最后一次见到:1周3天前
工作人员
已加入:2015-06-08 11:34
嗨,亚历克斯,

嗨,亚历克斯,

请您尝试定义CFG\u TRNG配置,并再次检查广告事件是否重叠?

谢谢你的对话。

齐亚诺
离线
最后一次见到:1天8小时前
已加入:2014-10-03 08:13
嗨对话框

嗨对话框
我们的问题与#11相同,我们使用的是SDK 5.0.2.1

信息:
我们正在使用“app\u easy\u gap\u non\u connectable\u advertise\u start\u create\u msg”设置cmd->intv\u max和cmd->intv\u min
cmd->intv\u max=user\u non\u connectable\u播发_配置intv;
cmd->intv\u min=user\u non\u connectable\u播发_配置intv;

“da1458x\u config\u advanced.h”中启用了真随机数生成器
#定义CFG\u TRNG

希望你有一个解决方案,因为这是一个真正的问题的应用程序。

致以最诚挚的问候,
西亚诺霜
丹麦

MT\u对话框
离线
最后一次见到:1周3天前
工作人员
已加入:2015-06-08 11:34
你好,齐亚诺,

你好,齐亚诺,

请确保在580中下载的映像定义了CFG\u TRNG,我用sdk5.0.2.1在修改的模板示例中测试了您的场景,该示例以不可连接模式进行广告(不同的广告字符串,不同的bd_地址和相同的广告间隔),通过连接两个复位引脚,我在同一时间在两块板上发出一个复位。我可以正确地看到与嗅探器和正常的android应用程序板。我能得到一个设备和损坏的广告数据的唯一方法是当CFG\u TRNG未定义时。定义TRNG和未定义TRNG时,请检查嗅探器附件。

谢谢你的对话

附件:
齐亚诺
离线
最后一次见到:1天8小时前
已加入:2014-10-03 08:13
嗨对话框

嗨对话框

有一件事我忘了提,那就是我正在用计时器每秒钟重新启动一次广告。我每次都会更改广告数据。我用用户\非\可连接\广告设置了广告_配置intv=16000,即10秒。所以我的有效间隔是由我的1秒计时器决定的,在这里我停止并重新启动广告。

现在我的问题是:当蓝牙协议栈每秒钟重启一次播发时,还会给播发添加0-10ms的随机延迟吗?
如果在这种情况下不加上随机延迟,那么这就可以解释我在空中遇到的广告碰撞。

期待你的回答。
致以最诚挚的问候,
齐亚诺

MT\u对话框
离线
最后一次见到:1周3天前
工作人员
已加入:2015-06-08 11:34
你好,齐亚诺,

你好,齐亚诺,

因此,您每1秒播发一个播发包,这是由发出播发开始的已用计时器定义的。这就解释了你的体验,第一条广告信息没有延迟。在发出app\u adv\u start之后,广告字符串将与另一个DUT在同一时间传输,之后下一个广告事件将以随机延迟重新安排,因此在您发送的第一条消息中,两条广告消息之间存在冲突。你正在经历的一个解决方法是减少广告间隔,以便第二个广告字符串在1秒间隔内传输,并随机延迟插入广告间隔,以便两个广告字符串不会发生冲突。

你可以数一数你已经发出的广告字符串,并在第二个发出的广告字符串中停止广告(这将被正确接收),你可以捕捉广告的完成情况并启动计时器,当计时器结束时,再次开始广告。

以下是一个关于如何计算广告事件的小片段:

枚举arch\u main\u loop\u callback\u ret count\u adv\u events(void)
{
uint8\t temp\u last\u ble\u事件;
temp_last_ble_event=arch_last_rwble_evt_get();
如果(应用程序\u上次\u ble \u事件!=温度(上次事件)
{
app\u last\u ble\u event=临时\u last\u ble\u事件;
if(app\u last\u ble\u event==ble\u EVT\u END)
高级计数++;
如果(adv\u count==2)
{
adv\ U计数=0;
app_easy_gap_advertise_stop();
}
}
回到睡眠状态;
}

谢谢你的对话

齐亚诺
离线
最后一次见到:1天8小时前
已加入:2014-10-03 08:13
谢谢你的回答。

谢谢你的回答。

还有一个问题:
据我所知,那么在10ms的范围内添加到广告间隔I的随机延迟是否可以将这个范围增加到500或1000ms?

目前,我已经做到这一点手动应用程序定时器设置从一个固定的延迟加上随机(TRNG)时间从-500毫秒到500毫秒。。。这及时地传播了广告,我几乎看不到与许多FOB的碰撞。

致以最诚挚的问候,
西亚诺霜
丹麦

MT\u对话框
离线
最后一次见到:1周3天前
工作人员
已加入:2015-06-08 11:34
你好,齐亚诺,

你好,齐亚诺,

广告操作中插入的延迟根据BLE规范位于ROM代码中,您不能更改它。

谢谢你的对话

齐亚诺
离线
最后一次见到:1天8小时前
已加入:2014-10-03 08:13
非常感谢你的邀请

非常感谢你提供的信息。

我现在没有问题了。

致以最诚挚的问候,
西亚诺霜
丹麦。

主题已锁定