中心角色外部处理器 - 无法连接到外围设备

8个帖子/ 0新
最后发表
Mike.tdi.
离线
最后看到:6年3个星期前
加入:2014-10-21十四16
中心角色外部处理器 - 无法连接到外围设备

大家好,

我们正在实现一个中央角色系统,外部处理器通过GTL通过SPI与DA14580通信。GTL消息传递似乎工作良好,并且我们有工作的主机代码来支持在外设模式下发布广告和在主模式下扫描。扫描结果按预期接收。BLE设备上没有运行应用程序;GAP状态机在外部单片机上实现。

问题是,尽管刚刚完成了成功的扫描,我们无法与外围设备建立连接。外部微控制器通过以下配置将GapM_Start_Connection_cmd发送到task_gapm:

cmd-> op.code = gapm_connection_direct;
cmd-> op.addr_src = gapm_public_addr;
cmd - > scan_interval = 0 x180;
cmd - > scan_window = 0 x160;
cmd-> superv_to = 500;/ * 5秒,间隔10ms * /
cmd-> ce_len_min = 0;
cmd-> ce_len_max = 5;
cmd - > con_latency = 0;

cmd-> nb_peers = 1;
memcpy(&cmd->对等体[0] .addr.addr,addr,bd_addr_len);
cmd->对等体[0] .addr_type = gapm_public_addr;
cmd-> con_intv_min = 80;/ * 1.25ms间隔* /
cmd-> con_intv_max = 400;

addr是一个uint8_t数组,包含反向字节顺序的目的地址。

此消息没有收到回复。我必须发送一个GAPM_CANCEL来做任何进一步的操作,所以似乎设备已经采用了Start_Connection消息。我们尝试连接到具有相同结果的两个不同的目标设备。

有什么建议吗?该代码基于邻近监视器主机示例。我尝试过的其他所有操作都符合预期——只是连接请求导致了问题。

问候
迈克

johnbrvc
离线
最后看到:4年11个月前
加入:2014-08-19 18:35
嗨。我正在经历

嗨。我也有类似的经历。基本上,与上面描述的设置相同(外部处理器、SPI等)。我们使用键盘参考应用作为外设。
我们的中央角色处理器是另一个基于手臂的系统。所有SPI通信工作良好。在我们发出gapm启动连接后,使用相同的参数
正如上面所描述的那样:

ble_spi_transfer: ntx = 44 nrx = 0: 05年11 34 0 d 00 3 f 24 12 00 00 00 00 00 00 00 00 00 00 00 00
00 80 01 60 01 50 00 90 01 00 00 F4 01 00 00 05 00 01 01 23 45 55 89 11 00

我们恢复了一个连接evice消息:

HandleBleMsg: Type:0x3801 [Task:14,Cmd:1] Dstid:63 Length:16
Gap_le_create_conn_req_ind_handler:app_env.state = 0
gap_le_create_conn_req_ind_handler:连接句柄0x0 -确认

然后我们发送一个connection_cfm(没有中间人,没有安全):


ble_spi_transfer: ntx = 52 nrx = 0: 05年02 38 0 3 f e 00 00 2 c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

我们返回一个GAPM_START_CONNECTION_CMD的GAPM补全:

HOUNKMELMSG:类型:0x3400 [任务:13,CMD:0] DSTID:63长度:2
HOUNNEGAPMCMPEVT:状态:0x0操作:0x12 msgid:0x3400

大多数时候,我们返回一个gapc断开指示,原因是0x3e (CO_ERROR_CONN_FAILED_TO_BE_EST):

HandleBleMsg: Type:0x3803 [Task:14,Cmd:3] Dstid:63 Length:4
Gap_discon_cmp_evt_handler:param-> conhdl = 0x0 app_env.blpkb_device.device.conhdl = 0x0原因:0x3e

很少情况下,它会工作,我们看不到断开的ind,一切都按照它应该的那样工作。

我已经简化了我们的应用程序,不启用HOGRPH, DISC等,只是配对后,我们发送连接确认,但
问题仍然发生(在我们发送对请求之前,我们得到了光盘IND)。

这听起来类似于上面的问题(连接相关的连接)。有人有主意吗?什么会
导致原因0x3e发生?它不会出现在RivierAwaves Gap接口Doc,表16中。最批准的错误代码
列出有0x3b。

干杯!
约翰

Mike.tdi.
离线
最后看到:6年3个星期前
加入:2014-10-21十四16
嗨,约翰,

嗨,约翰,

我认为单独的问题,但你的SPI痕迹帮助我解决了我的问题,非常感谢发布!为其他人的利益,我所说的问题是__array_empty(编译器。)未定义。这导致struct gapm_start_connection_cmd在没有对等bdaddr的空间的情况下声明,因此数据包被截断。解决方案是确保__array_empty定义为1。

我确实试图重现你的问题,但对我来说现在似乎每次都有联系。外围设备端可能出现的问题?我测试的外围设备不是基于对话框的,所以我恐怕不能帮助结束。

迈克

gl_dialog(未经验证)
大家好,

大家好,

实际上,迈克。Tdi解决了这个问题。

连接请求命令的结构大小是错误的,这就是为什么会出现CO_ERROR_CONN_FAILED_TO_BE_EST(来自co_error.h文件的0x3E)。

问候,

对话团队。

johnbrvc
离线
最后看到:4年11个月前
加入:2014-08-19 18:35
Re:错误co_error_conn

再保险:错误CO_ERROR_CONN_FAILED_TO_BE_EST
实际上,迈克。tdi没有得到CO_ERROR_CONN_FAILED_TO_BE_EST (0x3e)错误。那是我的问题,但那不一样。Mike的问题是结构大小,他注意到因为我的文章。如果有人在Dialog semi知道为什么我得到CONN_FAILED_TO_BE_EST,这将是有帮助的。谢谢!

gl_dialog(未经验证)
嗨Johnbrvc,

嗨Johnbrvc,

根据BLE规范“the Connection Failed to be Established error code指示LL发起连接,但是连接无法建立。”

它看起来是在主机根本不管理与CONNECT_REQ后设备没有响应的设备通信时发送的。

因此,在5-6个不成功的连接事件之后(主机进行了投票,但设备不在那里),主机得到这个消息。

如果您在此时间设法讨论并稍后丢失连接,则消息将是CO_ERROR_CON_TIMEOUT。

因此,我的猜测是主机发送Connect_Req,但设备没有响应。

==>用嗅探器注意到什么?它会帮助我。
问候,
对话团队。

布莱恩
离线
最后看到:6年4个月前
专家 主
加入:2014-10-16 18:10
希望你能得到帮助

希望你能在中央情报局找到帮助。我正在获得一个成功的连接到一个非对话框为基础的BTLE外设。您可能需要检查正在使用的扫描参数。如果使用OBSERVER模式(这样就可以避免10秒硬超时),可能会导致不一致的结果。使用常规发现方式。此外,如果您正在使用他们的模板,那里经常有代码与中心角色不一致,需要删除。然而,我正在做一个完全托管的实现,它涉及到与您的实现相当不同的配置。

从好的方面来说,很高兴看到其他一些中心应用程序,它们可能会吸引DIALOG给我们中心开发者更多的支持。雷竞技安卓下载到目前为止,我在这个论坛上的问题还没有一个通过涉及中心的对话来解决。我想我有点沮丧,因为我甚至没有一个使用标准配置文件中的一个中央完全托管的示例。也许我们可以互相帮助。

johnbrvc
离线
最后看到:4年11个月前
加入:2014-08-19 18:35
Brian,是的,我听到了你。

Brian,是的,我听到了你。Dialog在SDK中有几个中央应用程序有用(对我,无论如何)...主机/ Windows / Spota以及接近/监视器。至少是
为我指明了一个中心应用的基本结构的正确方向,但仍然留下了很多想象的空间。
如果您想进一步讨论一下,您可以通过电子邮件@直接与我联系johnbrvc@yahoo.com