在哪里填充广告数据和关贸总协定树的动态

10个帖子/ 0个新
最后发表
dhrishi
离线
最后看到:3年5个月前
加入:2017-02-10 09:56
在哪里填充广告数据和关贸总协定树的动态

你好,

现在我可以使用ke_send_msg填充广告数据和GATT服务和特征,并处理user_catch_rest_hndl()中的事件。不过,我是用硬编码的方式完成的。

现在,我必须通过通过UART发送相同的数据来做到这一点。我想找到一个合适的地方来做这件事。我发现,一旦控件到达user_app_init(),广告就开始了。我想控制这一点,并开始广告,每当我得到所有所需的数据(广告数据和GATT树)通过UART。正确的做法是什么?
考虑到看门狗和其他东西不受影响。

另外,是否存在一个由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。可以设置的最小值是1ms,对吧?
3.当我在UART上工作时,是否允许为下一个UART接收注册UART回调在上一个UART recv回调函数。当我这样做时,我无法获得下一个数据,因为我的回调从未被调用。正确的方法是什么?

谢谢,
Hrishikesh

MT_dialog
离线
最后看到:4个月,1个星期前
工作人员
加入:2015-06-08 34
嗨dhrishi,

嗨dhrishi,

如果以上答案是有用的,请标记为接受

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

2)是的,为了让你的计时器是周期性的,你应该从前一个计时器经过的处理程序重置计时器。ke_timers的最小值是10ms,如果您将timeout设置为1,那么计时器将以其最小值超时。

3)我不确定我得到的问题,我使用uart2_async的例子和调用uart2_read(),以开始一个新的UART读事务,回调总是在输入5个字符后执行。

由于MT_dialog

dhrishi
离线
最后看到:3年5个月前
加入:2017-02-10 09:56
谢谢你澄清第一点

谢谢你澄清第1)和第2)点

具体的说:
我想通过UART来实现以下内容:
1.Adv数据(动作:在数组中保存)
2.扫描响应数据(动作:以数组形式保存)
3.GATT数据库一次一个服务/字符(Action:使用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将保持设备清醒,返回GOTO_SLEEP让设备继续睡眠模式)。从这些功能我假设您可以保持580活着只要你有UART交易,只要提供广告数组不完整,一旦广告字符串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从slack发送短信还有其他基本要求。数据增强将带来越来越多的客户响应。

PM_Dialog
离线
最后看到:1周前1小时前
工作人员
加入:2018-02-08 11:03
嗨Ercei02,

嗨Ercei02,

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

谢谢,PM_Dialog