广告和扫描

7个帖子/ 0个新
最后发表
ArminL
离线
最后看到:4年2个月前
加入:2016-09-30 07:23
广告和扫描

嗨,对话框中,

我的自定义应用程序应该同时发布和发起一个连接,但只有广告工作。
代码片段:
ble_gap_role_set (GAP_PERIPHERAL_ROLE | GAP_CENTRAL_ROLE);
...
ble_gap_adv_start (GAP_CONN_MODE_UNDIRECTED);
ble_gap_connect (&bd_addr, cp);

有什么问题吗?

谢谢
阿明

设备:
MT_dialog
离线
最后看到:4个月4天前
工作人员
加入:2015-06-08 34
嗨ArminL,

嗨ArminL,

我担心这样的事情是不可能的,并发中心/外设只有在连接时才有效(检查multilink演示),你不能同时发布广告和扫描/连接。

由于MT_dialog

ArminL
离线
最后看到:4年2个月前
加入:2016-09-30 07:23
嗨MT_dialog,

嗨MT_dialog,

好的,这是一个问题,因为应用程序应该总是能够连接到中心或外设。
所以我必须交替调用广告和扫描程序,也许需要一个计时器。
你能给我一个提示,这个问题是怎样解决的吗?

谢谢
阿明

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

嗨ArminL,

是的,你应该能够做到这一点,你可以改变扫描和广告在稳定的间隔通过一个免费RTOS计时器,只需设置你的计时器和在回调或计时器停止广告。广告完成后(得到广告完成回调后,可以开始扫描或发起连接)。记住,扫描过程是自动终止的,所以你没有计时器来测量扫描过程,如果你喜欢,扫描将自动超时8秒。

程序是这样的:

  • 在主应用程序中设置一个计时器和一个计时器回调,并开始计数。
  • 在计时器的回调中,您可以通知主应用程序计时器已经过去,并从主应用程序停止广告过程,类似于下面的代码片段:
  • ble_gap_adv_stop()将在主任务的BLE_EVT_GAP_ADV_COMPLETED情况下触发handle_evt_gap_adv_completed(),因此在该处理程序中,您可以开始扫描或连接过程。
  • 正如我所提到的,你可以通过计时器超时扫描过程,也可以等待扫描过程超时。
  • 在相应的完成处理程序中,您可以再次开始发布,并启动超时发布过程的计时器。

由于MT_dialog

ArminL
离线
最后看到:4年2个月前
加入:2016-09-30 07:23
嗨MT_dialog,

嗨MT_dialog,

我已经按照你的解释执行了这个程序。

在应用程序连接到中央(连接间隔30ms)和连接过程仍然活跃(扫描窗口30ms)的情况下,应用程序有时似乎崩溃。到中央的连接中断,连接过程停止。
有什么问题吗?
扫描窗口期间发生连接事件是否有问题?

谢谢
阿明

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

嗨ArminL,

所以,你有双模式的设备GAP_PERIPHERAL_ROLE | GAP_CENTRAL_ROLE和切换扫描和广告,当你开始从你的手机连接,例如,你看到有时设备崩溃?

设备为了连接它需要两条广告信息,所以如果你的手机在68x开始扫描之前收到最后一条广告信息,它不会崩溃,手机将收到广告信息并启动连接程序。连接获取将继续,直到68x切换回广告模式,然后连接将完成。然后,如果你继续扫描或广告,你仍然连接68x设备将尝试安排所有事件。为了调试您所看到的,您将必须附加调试器并检查设备的停顿位置。至少在我身边,复制您的设置(如果我错了,请纠正我的设置)我没有看到任何问题与android手机的默认连接在48女士(中央定义连接的连接时间间隔,除非连接参数更新发出,中央决定是否将再次接受参数)。

由于MT_dialog

ArminL
离线
最后看到:4年2个月前
加入:2016-09-30 07:23
嗨MT_dialog,

嗨MT_dialog,

这是一款iOS手机。当我的应用程序连接到一个电话(连接事件每~30ms),我的应用程序继续扫描过程连接到外设(扫描窗口30ms)。在这种情况下,我的应用程序有时会崩溃。
我将检查它与我的应用程序停止的调试器。

谢谢
阿明