7个帖子/ 0新
最后一篇
阿林
离线
最后一次露面:3年11个月前
加入:2016-09-30 07:23
广告和扫描

嗨对话框,

我的自定义应用程序应同时宣传并启动连接,但只有广告工作。
代码片段:
BLE_GAP_ROLE_SET(GAP_PERITALAL_ROLE | GAP_CENTRAL_ROLE);
......
ble_gap_adv_start(gap_conn_mode_undirected);
ble_gap_connect(&bd_addr,&cp);

可能是什么问题呢?

谢谢
arm

设备:
mt_dialog.
离线
最后一次露面:1个月2周前
职员
加入:2015-06-08 11:34
嗨Arminl,

嗨Arminl,

我担心这样的东西是不可能的,并发中央/外围都有有效的仅在连接时(检查MultiLink Demo),您不会在同时通告和扫描/连接。

谢谢mt_dialog.

阿林
离线
最后一次露面:3年11个月前
加入:2016-09-30 07:23
嗨mt_dialog,

嗨mt_dialog,

好的,这是一个问题,因为应用程序应该始终能够连接到中央或外围设备。
所以我必须交替地调用广告和扫描过程,也许是一个计时器。
你能给我一个线索,如何解决这个问题?

谢谢
arm

mt_dialog.
离线
最后一次露面:1个月2周前
职员
加入:2015-06-08 11:34
嗨Arminl,

嗨Arminl,

是的,您应该能够这样做,可以通过免费的RTOS定时器更改稳定间隔的扫描和广告,只需设置您的计时器和回调或计时器停止广告。广告已完成后(您获得广告完成回调,您可以开始扫描或启动连接)。请记住,扫描是自动终止终止的过程,因此如果您愿意,您可以使用计时器测量扫描过程,扫描将在8秒内自动超时。

该过程如下:

  • 在主应用程序中设置计时器和计时器回调并开始计数。
  • 在计时器的回调中,您可以通知主应用程序,即定时器已从主应用程序中浏览并停止广告过程,如下段:if(notf&scan_adv_time_notif){ble_gap_adv_stop();}
  • BLE_GAP_ADV_STOP()将在主任务中触发BLE_EVT_GAP_ADC_COMPLETED案例中的句柄_GT_GAP_ADC_COMPLETED(),因此在该处理程序中,您可以启动扫描或连接过程。
  • 正如我所提到的那样,您可以通过计时器或关于扫描来超越扫描过程,或者您可以等待时间到超时。
  • 在相应的完成处理程序中,您可以再次启动广告并启动定时器超时广告程序。

谢谢mt_dialog.

阿林
离线
最后一次露面:3年11个月前
加入:2016-09-30 07:23
嗨mt_dialog,

嗨mt_dialog,

我已经实现了类似于您的解释的过程。

在应用程序中连接到中央(连接间隔30ms)和连接过程仍然有效(用扫描窗口30ms),应用有时似乎崩溃。已停止与中央的连接,并停止连接过程。
可能是什么问题呢?
如果在扫描窗口期间发生连接事件,是否存在问题?

谢谢
arm

mt_dialog.
离线
最后一次露面:1个月2周前
职员
加入:2015-06-08 11:34
嗨Arminl,

嗨Arminl,

因此,您在双模式Gap_peripheral_role中有设备GAP_Central_Role和扫描和广告之间的切换,以及当您从手机启动连接时,您会看到有时设备崩溃?

该设备为了连接它需要两个广告消息,因此如果您的手机在68x开始扫描之前接收到最后一个adv消息,则手机将接收广告消息并开始连接过程。连接采购将继续,直到68x交换机回到广告模式,然后连接将完成。然后,如果您继续扫描或宣传并且您仍然连接68倍设备将尝试安排所有事件。为了调试您所看到的内容,您将不得不附加调​​试器并检查设备摊位的位置。至少在我身边,复制您的设置(如果我错了设置,请纠正我)我没有看到默认连接左右48ms的默认连接(中央定义连接的连接间隔,除非连接参数更新是发出的,再次中央将决定它是否会接受参数)。

谢谢mt_dialog.

阿林
离线
最后一次露面:3年11个月前
加入:2016-09-30 07:23
嗨mt_dialog,

嗨mt_dialog,

这是一个ios手机。虽然我的应用程序连接到电话(每〜30ms的连接事件),但我的应用程序继续扫描过程连接到外围设备(扫描窗口30ms)。在这种情况下,我的申请有时会崩溃。
我将使用我的应用程序摊位的调试器检查它。

谢谢
arm