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

8个员额/0个新员额
最后发表
迈克·特迪
离线
最后看到:6年3个星期前
加入:2014-10-21十四16
中央角色外部处理器-无法连接到外围设备

大家好,

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

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

cmd->op.code=GAPM\u CONNECTION\u DIRECT;
cmd->op.addr\u src=GAPM\u PUBLIC\u addr;
cmd - > scan_interval = 0 x180;
cmd - > scan_window = 0 x160;
cmd->superv_to=500;/*5秒,10毫秒间隔*/
cmd->ce_len_min=0;
cmd->ce_len_max=5;
cmd - > con_latency = 0;

cmd->nb_peers=1;
memcpy(&cmd->peers[0]。addr.addr,addr,BD_addr_LEN);
cmd->peers[0]。addr\u type=GAPM\u PUBLIC\u addr;
cmd->con_intv_min=80;/*1.25ms间隔*/
cmd->con_intv_max=400;

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

从未收到对此邮件的答复。我必须发送一个GAPM_CANCEL来执行任何进一步的操作,因此设备似乎已对启动连接消息进行了操作。我们尝试连接到两个不同的目标设备,结果相同。

有什么建议吗?代码基于接近监视器主机示例。我尝试过的所有其他操作都和预期的一样——只是连接请求引起了问题。

问候
迈克

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

你好我正在经历something similar. Basically, the same setup as described above (external processor, SPI, etc.). We're using the Keyboard reference app as the peripheral.
我们的中心角色处理器是另一个基于手臂的系统。所有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 f4 01 00 00 05 00 01 01 23 45 55 89 11 00

我们确实收到一条连接请求ind消息:

HandleBleMsg: Type:0x3801 [Task:14,Cmd:1] Dstid:63 Length:16
间隙\u le\u创建\u连接\u请求\u索引\u处理程序:应用程序环境状态=0
gap_le_create_conn_req_ind_handler:连接句柄0x0 -确认

然后我们发送一个连接\u 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完成:

车把标记:类型:0x3400[任务:13,命令:0]Dstid:63长度:2
HandleGapmCmpEvt:状态: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\u discon\u cmp\u evt\u处理程序:param->conhdl=0x0 app\u env.blpkb\u device.device.conhdl=0x0原因:0x3e

很少情况下,它确实工作了,我们没有看到断开的ind,一切都按照它应该的方式工作。

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

这听起来类似于上面提到的问题(与连接相关)。有人有什么想法吗?你会怎么做
是否导致发生0x3e的原因?它不会出现在RivierWaves GAP界面文档中,如表16所示。最大错误代码
这里列出的是0x3b。

干杯
约翰

迈克·特迪
离线
最后看到:6年3个星期前
加入:2014-10-21十四16
嗨,约翰,

嗨,约翰,

另一个问题,我想,但你的SPI跟踪帮助我解决了我的问题,所以非常感谢张贴!为了其他人的利益,我遇到的问题是u数组_EMPTY(compiler.h)未定义。这会导致声明struct gapm_start_connection_cmd时没有对等bdaddr的空间,因此数据包被截断。解决方案是确保将uu ARRAY_EMPTY定义为1。

我确实想复制你的问题,但对我来说,现在每次都有联系。外围端可能出现问题?我正在测试的外围设备不是基于对话框的,所以我恐怕我不能帮助这方面。

迈克

总账对话框(未验证)
大家好,

大家好,

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

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

当做

对话小组。

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

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

总账对话框(未验证)
嗨Johnbrvc,

嗨Johnbrvc,

根据BLE规范,“连接建立失败错误码表示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
布莱恩,是的,我听到了。

布莱恩,是的,我听到了。Dialog在sdk中确实有几个中心应用程序,它们对我很有帮助。。。主机应用程序/windows/spota,以及接近/监视器。至少是这样
为我指明了一个中心应用程序的基本结构的正确方向,但仍然留下了很多想象力。
如果您想进一步讨论,可以通过电子邮件直接与我联系@johnbrvc@yahoo.com