GAP_ERR_COMMAND_DISALLOWED发生时,FW将停止发布。

21个员额/0个新员额
最后一篇文章
珊瑚0310
离线
最后一次见到:5年2个星期前
加入:2016-03-10 06:12
GAP_ERR_COMMAND_DISALLOWED发生时,FW将停止发布。

亲爱的先生们:,

我正在为SDK5.0.3中的信标创建一个Farmware。
我设计的FW每隔几秒就会改变一部分广告数据。

FW将暂时停止运营,但FW将停止广告。
我不想那样。

当FW停止发布时,在user_peripheralc的user_app_adv_undirect_complete()中收到了GAP_ERR_NO_ERROR或GAP_ERR_COMMAND_DISALLOWED状态。
(通常,它会收到一个GAP\u ERR\u cancelled。)

此外,当广告传输停止时,user_catch_rest_hndl()将进行处理。

1.您知道GAP_ERR_NO_ERROR和GAP_ERR_COMMAND_DISALLOWED发生的原因吗?

我只看到了GAP_ERR_NO_ERROR和GAP_ERR_COMMAND_DISALLOWED。
这两个错误总是同时发生。

2.我不想停止做广告,有没有更好的办法?
我对FW做了以下措施。

1.如果FW收到了一个非gap_err_canceled报文,FW将停止发布。
(FW将使用adv_data_update_timer_cb()处理。)
2.此时,FW在user_app_adv_start()中发布恢复。

我在FW做这个翻新,它被允许运行10小时。
出现GAP_ERR_COMMAND_DISALLOWED,但不会停止播发。

致以最亲切的问候。

设备:
MT_对话框
离线
最后一次见到:2个月2周前
工作人员
加入:2015-06-08 34
嗨Coral0310,

嗨Coral0310,

我假设您是在完全托管模式下运行的。您可以检查SDK5中的barebone示例,该示例完全满足您的要求,每当内核计时器过期时,它都会播发并更改播发字符串。为了更改播发字符串,没有其他方法,您必须停止播发,更改播发字符串,然后重试再次发出播发命令。当您终止播发过程时,您应该得到一个GAP\u ERR\u取消,例如,如果您在准备好播发时发出了一个播发命令,那么您将得到一个GAP\u ERR\u不允许的命令。

谢谢你的对话

珊瑚0310
离线
最后一次见到:5年2个星期前
加入:2016-03-10 06:12
嗨,对话组的工作人员,

嗨,对话组的工作人员,

谢谢你的回复。

我将检查SDK5中的基本示例。
我想回顾一下我的项目代码。

非常感谢。

珊瑚0310
离线
最后一次见到:5年2个星期前
加入:2016-03-10 06:12
亲爱的先生们:,

亲爱的先生们:,

>当您终止播发过程时,您应该得到一个GAP\u ERR\u取消,如果您在>您准备好播发时开始播发,那么您将得到一个GAP\u ERR\u命令,该命令不被允许。

我有一个问题。

我想知道调用user_app_adv_undirect_complete()的条件。
我认为user_app_adv_undirect_complete()是在FW停止广告后调用的。
但是,我对自己的思维没有信心。

请告诉我调用user_app_adv_undirect_complete()的条件。
非常感谢。

MT_对话框
离线
最后一次见到:2个月2周前
工作人员
加入:2015-06-08 34
嗨Coral0310,

嗨Coral0310,

如果你在做广告,你调用app_easy_gap_advertise_stop()它发出GAPM_CANCEL_CMD以取消正在进行的空中操作,这将取消广告程序。当GAPM_CANCEL_CMD完成时(意味着您将不再发布任何消息)GAPM_CANCEL_CMD将给出一个GAPM_CMP_EVT(完整事件),作为正在进行的操作的取消已经完成的指示。GAPM_CMP_EVT将由gapm_cmp_evt_handler(),关于已完成的操作,它将转到相应的案例,然后相应的案例将调用相应的回调,在广告取消的情况下,将调用映射到自定义回调的app_on_adv_undirective_complete回调。

谢谢你的对话

珊瑚0310
离线
最后一次见到:5年2个星期前
加入:2016-03-10 06:12
亲爱的员工对话框,

亲爱的员工对话框,

谢谢你的回复。

>>如果您正在发布并调用app_easy_gap_advertise_stop(),它会发出GAPM_CANCEL_CMD来取消正在进行的空中操作,这将取消发布过程。

我理解“应用程序在adv上完全回调”
如果FW不运行应用程序\u easy\u gap\u advertive\u stop(),则不会调用。
(如果我的想法是错的,请告诉我。)

我再次检查了我的项目的运行情况。

a、 在正常情况下,,
"app_on_adv_undirect_complete callback"在app_easy_gap_advertise_stop()被执行后被调用。

b.在GAP_ERR_COMMAND_DISALLOWED情况下,
在调用"app_on_adv_undirect_complete callback "之前,没有执行app_easy_gap_advertise_stop()。
我不明白发生这种情况的原因。

如果你知道什么,请告诉我。
非常感谢。

珊瑚0310
离线
最后一次见到:5年2个星期前
加入:2016-03-10 06:12
亲爱的员工对话框,

亲爱的员工对话框,

对不起,我问错问题了。

>>我假设您在完全托管模式下运行。
请让我了解更多关于“完全托管模式”的信息。

今天,我被允许在SDK5中运行“blue_app_barebone”的例子,然后出现了GAP_ERR_NO_ERROR错误,FW被停止发布。
(除了发布一个日志外,我没有做任何更改。)

我的项目和“blue_app_barebone”的例子不同,但停止的方式非常相似。
我认为我的项目还没有进入“完全托管模式”。

很抱歉听到很多次。
非常感谢。

MT_对话框
离线
最后一次见到:2个月2周前
工作人员
加入:2015-06-08 34
嗨Coral0310,

嗨Coral0310,

完全托管模式意味着应用程序运行在580内部处理器中,而在完全嵌入式模式中,应用程序运行在外部处理器上。你在最基本的例子中看到的GAP_ERR_NO_ERROR是无错误状态,你应该得到当设备成功重置时,GAP_ERR_NO_ERROR和当设备成功完成配置时,另一个类似的消息。

谢谢你的对话

珊瑚0310
离线
最后一次见到:5年2个星期前
加入:2016-03-10 06:12
谢谢你的回复。

谢谢你的回复。

1.
>>完全托管模式意味着应用程序在580内部处理器中运行,在完全嵌入式模式下,应用程序在外部处理器上运行。

对不起,我不太明白…
如何判断是内部处理器还是外部处理器?

希望有帮助。
我正在使用TypeZY的开发工具包(由村田公司提供)。
TypeZY正在通过UART从MDK-ARM下载FW至。

2.
>>你在barebone例子中看到的GAP_ERR_NO_ERROR状态,当设备成功重置时,你应该得到一个GAP_ERR_NO_ERROR,当设备成功完成配置时,你应该得到另一个类似的消息。

非常感谢。

我能理解GAP\u ERR\u NO\u ERROR。
但是,我不理解GAP_ERR_COMMAND_DISALLOWED。

据我了解,如果FW不执行app_easy_gap_advertise_stop()命令,“app_on_adv_undirect_complete callback”不会被调用。
(如果我的想法是错的,请告诉我。)

我再次检查了我的项目的运行情况。

a、 在正常情况下,,
"app_on_adv_undirect_complete callback"在app_easy_gap_advertise_stop()被执行后被调用。

b.在GAP_ERR_COMMAND_DISALLOWED情况下,
在调用"app_on_adv_undirect_complete callback "之前,没有执行app_easy_gap_advertise_stop()。
我不明白发生这种情况的原因。

如果你知道什么,请告诉我。

非常感谢。

MT_对话框
离线
最后一次见到:2个月2周前
工作人员
加入:2015-06-08 34
嗨Coral0310,

嗨Coral0310,

1.如果您有一个外部pc代码,并通过接口(例如UART)与580通信,以便发送命令(播发、连接等),那么您是在完全嵌入式配置下运行的,如果您的程序仅在580上运行,则您具有完全托管的配置(大多数对话框项目都是这样)。

2.是的,如果你不调用app_easy_gap_advertise_stop(), app_on_adv_undirect_complete()回调函数将不会被调用。关于不允许的命令,我已经提到,不应该在正常操作中调用,它是返回时,你发出开始广告,在停止正在进行的广告程序。在app_ble_barebone我没有看到这个消息发生。请检查这个例子。

谢谢你的对话

珊瑚0310
离线
最后一次见到:5年2个星期前
加入:2016-03-10 06:12
亲爱的员工对话框,

亲爱的员工对话框,

谢谢你的回复。

谢谢。
我在全嵌入式模式下运行。

2.谢谢。
我将重新检查我的项目和应用程序。

我想首先解决GAP_ERR_NO_ERROR。

即使在GAP_ERR_NO_ERROR发生之后,
我想继续广播广告。

请让我好好过。
当有一个样本项目会有帮助时,我很高兴。

很抱歉听到很多次。
非常感谢。

MT_对话框
离线
最后一次见到:2个月2周前
工作人员
加入:2015-06-08 34
嗨Coral0310,

嗨Coral0310,

没有问题,只要遵循简单的例子和检查程序使用的顺序启动和设置设备,然后改变广告字符串,使适当的比较与您的程序。

谢谢你的对话

珊瑚0310
离线
最后一次见到:5年2个星期前
加入:2016-03-10 06:12
亲爱的员工对话框,

亲爱的员工对话框,

谢谢你的回复。

我再次检查了FW的运行情况。
GAP_ERR_NO_ERROR状态在它被引用到“app_on_connection回调”调用后显示。

我想让" app_on_connection callback"不发生,
因为我的FW不需要是连接。

有什么好办法吗?
(我正在考虑将广告类型从“非直接”更改为“非连接”。)

非常感谢。

MT_对话框
离线
最后一次见到:2个月2周前
工作人员
加入:2015-06-08 34
嗨Coral0310,

嗨Coral0310,

如果您不想在外围设备上建立连接,可以将设备设置为不可连接,您可以查看SDK3上的信标参考设计,该设计以不可连接模式进行广告宣传。您可以在支持站点的参考设计部分找到信标。

谢谢你的对话

珊瑚0310
离线
最后一次见到:5年2个星期前
加入:2016-03-10 06:12
亲爱的员工对话框,

亲爱的员工对话框,

谢谢你的回复。
我有两个问题。

1.抱歉,我使用的是SDK5.0.3。
是否有一个样本对SDK5有帮助?

我想我只是改变一下环境。User_config.h)或advertise start方法。

例如,请告诉我如何将“ble_app_barebone sample”的广告模式更改为“non-connectable mode”。

2.我正在选择SDK5。
然而,我无法决定SDK5或SDK3的选择。

目前,你认为哪一个是更好的选择?
如果继续支持SDK3,我可能会考虑使用SDK3。

很抱歉听到很多次。
非常感谢。

MT_对话框
离线
最后一次见到:2个月2周前
工作人员
加入:2015-06-08 34
嗨Coral0310,

嗨Coral0310,

1)没有任何官方例子灯塔SDK 5在门户,您可以更改non-connectable user_config.h文件部分,使你的设备non-connectable准系统的例子使用app_easy_gap_non_connectable_advertise_start()函数,以广告开始。

2)仍然支持SDK3,但对话建议使用SDK5进行新设计,因为它更容易使用,而且大多数漏洞已经修复。

谢谢你的对话

珊瑚0310
离线
最后一次见到:5年2个星期前
加入:2016-03-10 06:12
谢谢你的回复。

谢谢你的回复。

1.
>你可以通过使用app_easy_gap_non_connectable_advertise_start()函数来改变非连接部分的user_config.h文件,并在barebone示例中使你的设备不可连接。

请让我更多关于“user_config.h”文件。
我想知道在“user_config.h”文件中要修改的值。

非常感谢。

MT_对话框
离线
最后一次见到:2个月2周前
工作人员
加入:2015-06-08 34
嗨Coral0310,

嗨Coral0310,

在user_config.h文件中没有你应该改变的值,处理非连接广告的结构是user_non_connectable_advertise_conf,你可以配置interval,等等,之后你需要调用app_easy_gap_non_connectable_advertise_get_active();和app_easy_gap_non_connectable_advertise_start ();以启动非连接模式的广告。

谢谢你的对话

珊瑚0310
离线
最后一次见到:5年2个星期前
加入:2016-03-10 06:12
谢谢你的回复。

谢谢你的回复。

我一直在使用“ble_app_barebone”示例。
我更改了user_barebone.c的代码。

/ /之前
无效用户\应用\高级\启动(无效)
{

struct gapm_start_advertise_cmd * cmd;
cmd=app_easy_gap_undirected_adverting_get_active();

app_easy_gap_undirected_advertise_start ();
}

//之后
无效用户\应用\高级\启动(无效)
{

struct gapm_start_advertise_cmd * cmd;
cmd = app_easy_gap_non_connectable_advertise_get_active ();

app_easy_gap_non_connectable_Advertised_start();
}

它不能被构建,因为app_easy_gap_non_connectable_advertise_get_active()
没有定义。

我已经定义了应用程序\u easy\u gap\u non\u connectable\u Advertised\u get\u active()
“app_easy_gap.h”文件。
(我指的是app_easy_gap_undirected_advision_get_active())

建造完成了。但是,FW是不能发布更新的,发布停止。
也许,我错了如何定义app\u easy\u gap\u non\u connectable\u advertive\u get\u active()。

有什么好办法吗?
(请给我一些代码。)

非常感谢。

MT_对话框
离线
最后一次见到:2个月2周前
工作人员
加入:2015-06-08 34
嗨Coral0310,

嗨Coral0310,

最有可能的情况是,您确实做了广告,但是您的广告停止了,因为停止广告的计时器被触发,因此没有捕获不可连接广告结尾的默认回调,但是您可以使用catch rest函数实现一个回调,请按照下面的链接获取应实现的代码:

http://support.dialog-semiconductor.com/advertisement-complete-callback-..。

谢谢你的对话

珊瑚0310
离线
最后一次见到:5年2个星期前
加入:2016-03-10 06:12
嗨,对话组的工作人员,

嗨,对话组的工作人员,
谢谢你的回复。

它能够继续为FW做广告。
今天,我做了一个测试,但没有问题。

也许,我认为这件事已经解决了。
非常感谢。

主题锁定