在哪里填充广告数据和GATT树

10个帖子/ 0新
最后一篇文章
dhrishi
离线
最后一次露面:3年5个月前
加入:2017-02-10 09:56
在哪里填充广告数据和GATT树

你好,

我现在能够使用Ke_send_msg填充广告数据和GATT服务和特征,并处理user_catch_rest_hndl()中的事件。虽然,我以硬编码方式完成了这一点。

现在,我必须通过通过uart发送相同的数据来执行此操作。我想找到我能做的相应位置。一旦控件到达user_app_init(),我发现的是,广告就开始了。每当我通过UART获取所有所需数据(广告数据和GATT树)时,我想控制这个并启动广告。什么是正确的方法?
考虑到看门狗和其他东西不受影响。

此外,是否有一个特定的函数,由Dialog BLE定期调用,我可以使用它来填充我的数据。

设备:
mt_dialog.
离线
最后一次露面:4个月1个星期前
职员
加入:2015-06-08 34
嗨Dhrishi,

嗨Dhrishi,

设备的广告一旦调用.default_operation_Adv即表示,这意味着广告从Default_App_On_Set_dev_Config_Complete()函数执行或从Default_App_On_DB_INIT_Complete()(这取决于设备是否具有创建数据库)因此,这些是您可以开始实现代码的两个功能,以便首先通过UART获取数据,然后启动广告过程。关于第二个问题没有定期执行的默认函数,因为您要更改数据,请将广告数据随时间更改的示例使用内核定时器,您可以查看BLE_APP_BAREBONE示例以获取更多信息。

谢谢mt_dialog.

dhrishi
离线
最后一次露面:3年5个月前
加入:2017-02-10 09:56
你好,

你好,

谢谢您的回复。对此,我有不少疑问:

1.当我使用app_easy_timer()调用在user_app_init()中启动计时器时,回调函数不会被执行。这是不允许的吗?我如何在user_app_init()本身启动一个计时器?
2.启动定期计时器等同于在回调函数中再次启动计时器,对右?此外,我使用定时器回调延迟为100ms。可以设置的最低值是1 ms,对右?
3.当我在UART上工作时,是否允许在前一个UART recv回调函数中为下一个UART接收注册UART回调。当我这样做时,我无法获得下一个数据,因为我的回调从未被调用。正确的方法是什么?

谢谢,
Hrishikesh

mt_dialog.
离线
最后一次露面:4个月1个星期前
职员
加入:2015-06-08 34
嗨Dhrishi,

嗨Dhrishi,

如果上述答案很有用,请将其标记为已接受

1)是的,你不能在user_app_init()函数中调用启动计时器,系统将发出一个GAPM_RESET,如果有一个计时器,它将和其他预定的消息一起被丢弃。

2)是为了使您的定时器定期,您应该从先前计时器的处理程序重置计时器。如果将超时设置为1,则ke_timers的最低值是10ms,然后计时器将在其最小值上经过。

3)我不确定我收到问题,我使用了UART2_ASYNC示例并调用了UART2_READ()才能开始新的UART读取事务,始终在键入5个字符之后执行回调。

谢谢mt_dialog.

dhrishi
离线
最后一次露面:3年5个月前
加入:2017-02-10 09:56
谢谢你的澄清点1

谢谢你澄清第1和第2点

具体的说:
我想通过UART填充以下内容:
1.Adv数据(操作:保存在数组中)
2.扫描响应数据(操作:在数组中保存)
3. GATT数据库一次一个服务/ char(操作:使用KE_MSG_SEND()为服务和属性发送到内核)
为此,我需要定期调用的函数,我可以通过该函数来接收来自主机的请求,采取一些操作(保存在数组或发送内核消息)并发送响应(反之亦然)
4.在所有这些都完成之后,开始做广告

那么,我该在哪里以及如何做这些事情。app_on_ble_powered()或app_on_system_powered是执行此操作的正确位置吗?如果是,两个函数中应该包含什么类型的功能。此外,如果您能提供这两个函数的使用示例就更好了。
如果没有,那么完成上述任务的正确方法是什么?

谢谢,
Hrishikesh

mt_dialog.
离线
最后一次露面:4个月1个星期前
职员
加入:2015-06-08 34
嗨Dhrishi,

嗨Dhrishi,

app_on_ble_powered()和app_on_system_powered()是在SDK5.0.4中580的活动期间定期调用的函数,这意味着这两个回调都可以在广告活动中运行不止一次的回调(这取决于内核存储和必须服务的消息)在app_on_ble_powered()以及app_on_system_powered()的情况下。您可以通过用户空间中提供的回调附加一些代码。您可以在这两个回调中应用代码,主要区别在于,在app_on_ble_powered()中,您将知道BLE核心是否处于活动状态,因此在您的情况下可能是App_On_System_Powered()更合适。请在7.1.3节中查看UM-B-051 DA1458X软件平台参考V1.0.pdf,以检查其使用情况。关于如何使用它们的示例,没有具体的过程,只是记住,当设备处于活动状态时,这些功能中的代码始终会运行,并且还可以从这些功能中取消睡眠(返回Keep_Powered Will保持设备唤醒返回goto_sleep让设备继续睡眠模式)。因此,只要您拥有UART交易,只要您拥有UART交易,就可以保留580即可保持580,只要广告字符串UART发送完成,就可以填写完整的广告阵列,您可以填充您的自定义数组和触发广告功能。

谢谢mt_dialog.

dhrishi
离线
最后一次露面:3年5个月前
加入:2017-02-10 09:56
非常感谢您的答案。

非常感谢您的答案。它肯定是有帮助的。

mt_dialog.
离线
最后一次露面:4个月1个星期前
职员
加入:2015-06-08 34
嗨Dhrishi,

嗨Dhrishi,

如果上面的答案有帮助,请标记为已接受。

谢谢mt_dialog.

Ercei02
离线
最后一次露面:1年8个月前
加入:2019-10-14 09:39
谢谢分享

感谢分享特性和编码方式。广告完全取决于商业的性质,但广告和要发送的信息也起着至关重要的作用。我认为我们必须雇佣一家公司雷电竞下载app发短信满足所有其他基本要求。数据增强将带来越来越多的客户响应。

PM_DIALOG.
离线
最后一次露面:1周53分钟前
职员
加入:2018-02-08 11:03
嗨Ercei02,

嗨Ercei02,

感谢你在我们的蓝牙论坛上发帖。你能说明一下你的问题是什么吗?我建议你创建一个新的论坛帖子,因为这个帖子很旧了。

谢谢,PM_DIALOG.