Modifying advertising data package

10个职位/0个新职位
最后一篇文章
尼克1号医生
离线
最后一次见到:4年4个月前
已加入:2014-07-01 11:55
Modifying advertising data package

我使用Beacon示例项目作为基础,但是我想向广告数据包添加更改数据。
例如,来自ADC的一些值,甚至只是一个递增计数器。
我发现这个示例的结构很混乱-我猜它在app\u adv\func的app\u dialog beacon\u proj.c中设置了广告包,但它并没有立即显示出它的实际调用位置。我想它只在设置时打过一次电话,然后就做广告了。

So my question is, how do I call this function again when I have new data. Do I have to stop advertising first and then reconstruct the package, or can I just reconstruct the package?

我应该在程序中的什么地方这样做,最好的方法是什么?

非常感谢

GLU对话框
离线
最后一次见到:3 years 4 months ago
工作人员
已加入:2014-02-07 13:35
你好,

你好,

你完全正确。

以下是您问题的答案:

如何动态改变广告数据?

First, BLE radio must be stopped, then the ADV data can be updated.

必须使用内核定时器更新广告ising string after a certain time .
内核计时器函数示例:app\u timer\u set(app\u ADV\u timer,TASK\u app,300);
必须在app\u adv\u func()中调用的函数。

一旦时间过去,必须向内核发送GAPM\u CANCEL消息。
这将在公布新参数之前取消正在进行的活动。
这是通过调用BLE timer处理程序中的app\u adv\u stop()来完成的。

广告可以重新开始
在gapm\u cmp\u evt\u处理程序()中,case gapm\u ADV\u NON\u CONN,必须调用函数app\u ADV\u start()才能再次开始播发。

regards,

对话小组。

茨维卡
离线
最后一次见到:5年3个月前
已加入:2015-01-13 09:43
你好,

你好,

我还尝试修改每个广告消息的广告数据包(序列号),
从上面的解释我不明白该怎么办?

设置app\u timer\u set(app\u ADV\u timer,TASK\u app,300);在app\u ADV\u func()处。时间一过,app\u adv\u timer\u handler(..)函数就启动了,
在gapm\u cmp\u evt\u handler()处再次设置app\u adv\u start(),case-case-gapm\u adv\u-indirect循环。

regards,
茨维卡

hardy.chen
离线
最后一次见到:1年8个月前
已加入:2015-03-13 04:20
嗨,对话小组,

嗨,对话小组,

So, there is no *call-back* type function available for changing the ADV packet before the BLE stack is going to send new packet, right?

MT\u对话框
离线
最后一次见到:5 days 13 hours ago
工作人员
已加入:2015-06-08 11:34
Hi hardy.chen,

Hi hardy.chen,

你的意思是在完成一个广告包的发送后将被调用的回调函数?不,没有这样的回电。如果要实现这种功能,请检查app\u async\u trm()函数中app\u sleep.h文件中的信标引用设计,也许这会有所帮助。只有完成callback of the advertising operation is available.

谢谢你的对话

hardy.chen
离线
最后一次见到:1年8个月前
已加入:2015-03-13 04:20
嗨,MT\u dialog,

嗨,MT\u dialog,

是否有任何文件解释从app\u last\u rwble\u evt\u get报告的事件?
i、 e.活动何时开始?*发送的每个*ADV数据包?或是连接的终止?或者每一包连接PDU?

MT\u对话框
离线
最后一次见到:5 days 13 hours ago
工作人员
已加入:2015-06-08 11:34
你好哈代·陈,

你好哈代·陈,

也请参考你的其他帖子,http://support.dialog-semiconductor.com/please-explain-last-ble-event-enum. 当传输结束时,BLE\u EVT\u端将可用,这意味着在每个BLE事件结束时,您将为每个完成的广告事件和每个完成的连接间隔获得一个BLE\u EVT\u端。

谢谢你的对话

hardy.chen
离线
最后一次见到:1年8个月前
已加入:2015-03-13 04:20
嗨,对话小组,

嗨,对话小组,

因此,是否有可能通过钩住事件BLE\u EVT\u END来更新广告内容(也可以通过检查以前的事件代码)。i、 e.每次传输完成时应该生成的BLEïEVTïTX)?

但是我想知道是否应该将*latency*视为总是调用*app\u adv\u stop*&*app\u adv\u start*来更改广告内容。我是否应该等待内核报告的任何回调或事件,以完成对*app\u adv\u stop*和*app\u adv\u start*的每次调用?如果这样改变广告内容,DA14580支持的改变*每个ADV包*广告内容的最大速度(或者说最小间隔)是多少(以ADV\u noncon为例)。

In short, if I want to have a beacon in interval of 20ms, and to rotate the 3 different message in each advertisement, will this be possible?

MT\u对话框
离线
最后一次见到:5 days 13 hours ago
工作人员
已加入:2015-06-08 11:34
Hi hardy.chen,

Hi hardy.chen,

我相信你可以做到这一点,检查最后的ble\u evt为ble\u evt\u结束,并在这种情况下发出一个广告停止,以改变广告字符串。停止播发过程完成后,您可以在gapm\u cmp\u evt\u处理程序、case gapm\u ADV\u indirect或gapm\u ADV\u NON\u CONN中捕获播发结束消息更改播发字符串并再次开始播发。我不相信从命令(app\u adv\u stop和app\u adv\u start)的延迟会有那么大才能被考虑在内。您可以在app\u asynch\u trm()函数的app\u sleep.h文件中查看信标实现,以获得一些想法。

谢谢你的对话

hardy.chen
离线
最后一次见到:1年8个月前
已加入:2015-03-13 04:20
嗨,对话小组,

嗨,对话小组,

Thanks, and yes, I've successfully completed this feature according to this manner.
干杯!

主题已锁定