停止和启动广告导致硬故障

6个职位/0个新职位
最后一篇文章
伊瑟尔
离线
最后一次见到:5年8个月前
已加入:2014-04-13 07:54
停止和启动广告导致硬故障

当使用sdk3.0.6和完全托管的proximity reporter项目时,停止和启动播发会导致硬错误。当PROXR\u任务使用时,在以下情况下会发生这种情况:
1直接调用app\u adv\u stop和app\u adv\u start。
2向APP\u任务发送消息以启动/停止(基于APP\u adv\u timer\u handler和APP\u wakeup\u handler的默认处理程序(APP\u adv\u timer和APP\u wakeup\u MSG message))。
三。向应用程序任务发送定时消息以启动/停止。无论超时值如何,硬故障似乎都会立即发生。

唯一有效的方法是在APP\u任务中,在APP\u adv\u func函数的末尾,向APP\u adv\u TIMER添加一条调用APP\u adv\u stop的定时消息,并向APP\u WAKEUP\u MSG发送一条调用APP\u adv\u start的定时消息。

什么是正确的方法来控制广告不是从应用程序的任务?我们需要通过profile任务接收的命令来控制它。

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

您好!

如果我理解正确,您是否希望在连接状态下向外设发送内容时开始或停止广告?或者你只是想改变广告数据?

伊瑟尔
离线
最后一次见到:5年8个月前
已加入:2014-04-13 07:54
我需要启动和停止

我需要启动和停止作为UART命令的结果的广告(我已经实现了一个绕过默认UART协议的专用UART协议)。到目前为止,这是正确的)。不需要更改播发数据,也不需要在连接状态下停止播发(有一个单独的命令用于断开与活动连接的连接)。
我收到一个UART命令来停止或启动PROXR\u任务上下文中的广告,我需要能够相应地停止或启动广告。

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

你好,

上面的选项2应该可以正常工作(“向APP\u任务发送消息以启动/停止”)。

此呼叫将执行以下操作:

ke_msg_send_basic(APP_ADV_DONE,TASK_APP,TASK_APP);

您需要枚举新的原语APP\u ADV\u DONE(在APP\u api.h中):

///应用程序任务消息
枚举应用程序消息

APP\u MODULE\u INIT\u CMP\u EVT=KE\u FIRST\u MSG(任务应用程序),

应用程序已完成,

当然,您需要为消息app\u task\u handlers.h定义一个处理程序

{APP\u ADV\u DONE,(ke\u msg\u func\t)APP\u ADV\u DONE\u handler},

在app\u xxx\u proj.c(以及.h文件中的原型)中定义处理程序:

int app\u adv\u done\u处理程序(
ke\u msg\u id\u t const msgid先生,
任务id常量目标id,
keu任务\u id \u t常量src \u id
)
{
app_adv_stop();
返回(已消耗的消息);
}

伊瑟尔
离线
最后一次见到:5年8个月前
已加入:2014-04-13 07:54
事实证明

事实证明,硬错误出现在一段不相关的代码中。你建议的代码工作正常,非常感谢。

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

你好,

很高兴听到你解决了这个问题。