中心角色外部处理器-不能连接外设

8个职位/ 0个新职位
最后一篇
mike.tdi
离线
最后一次露面:6年2个月前
加入:2014-10-21 14:16
中心角色外部处理器-不能连接外设

你好,

我们正在实现具有外部处理器的中心角色系统,通过SPI通过GTL与DA14580通信。GTL消息传递似乎是正常工作的,我们有工作主机代码来支持外围模式和扫描主模式。扫描结果按预期收到。在BLE设备上没有应用程序;间隙状态机在外部微控制器上实现。

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

cmd - > op。代码= GAPM_CONNECTION_DIRECT;
cmd - > op。addr_src = GAPM_PUBLIC_ADDR;
cmd-> scan_interval = 0x180;
cmd-> scan_window = 0x160;
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消息进行了操作。我们尝试连接两个不同的目标设备,结果是一样的。

有什么建议么?代码基于Proximity Monitor主机示例。我尝试的其他一切都按预期行事 - 它只是导致问题的连接请求。

问候
麦克风

约翰布吕克
离线
最后一次露面:5年1周前
加入:2014-08-19 18:35
嗨。我经历

嗨。我正在遇到类似的东西。基本上,与上述相同的设置(外部处理器,SPI等)。我们正在使用键盘参考应用程序作为外设。
我们的中心角色处理器是另一个基于ARM的系统。所有SPI通信都在正常工作。在我们发出GAPM开始连接后,使用相同的参数
如上所述:

BLE_SPI_TRANSFER:NTX = 44 NRX = 0:05 11 34 0D 00 3F 00 2 00 00 00 00 00 00 00 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 00 05 00 01 01 23 45 55 89 11 00

我们确实得到了一个连接请求消息:

HOUNKMELMSG:类型:0x3801 [任务:14,CMD:1] DSTID:63长度:16
gap_le_create_conn_req_ind_handler: app_env.state = 0
GAP_LE_CREATE_CONN_REQ_IND_HANDLER:CONNECT LAMENT 0x0 - 确认

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


BLE_SPI_TRANSFER:NTX = 52 NRX = 0:05 02 38 0E 00 3F 00 2C 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完成:

HandleBleMsg: Type:0x3400 [Task:13,Cmd:0] Dstid:63 Length:2
HandleGapmCmpEvt:状态:0x0操作:0x12 MsgID:0x3400

大多数情况下,我们通过0x3e(co_error_conn_failed_to_be_est)来回回到Gapc断开指示:

HAUNDMENSG:类型:0x3803 [任务:14,CMD:3] DSTID:63长度:4
Gap_discon_cmp_evt_handler: param->conhdl=0x0 app_env.blpkb_device.device.conhdl=0x0 reason:0x3e

很少,它确实有效,我们没有看到Disconnect Ind,一切都适用。

我已经简化了我们的应用程序,无法启用Hoogrhh,Disc等,只需对发送连接确认,但是
问题仍然会发生(我们甚至在发送配对请求之前就得到了磁盘ind)。

这听起来类似于上面的问题(连接相关)。有人有什么想法吗?什么
导致0x3e发生的原因?它没有出现在rivierwaves的GAP接口文档中,表16。最大错误码
这里列出了0x3b。

干杯!
约翰

mike.tdi
离线
最后一次露面:6年2个月前
加入:2014-10-21 14:16
嗨,约翰,

嗨,约翰,

我认为是单独的问题,但是你的SPI跟踪已经帮助我解决了我的问题,非常感谢发帖!为了其他人的利益,我的问题是__ARRAY_EMPTY (compiler.h)是未定义的。这将导致struct gapm_start_connection_cmd被声明,没有对peer bdaddr的空间,因此数据包被截断。解决方案是确保__ARRAY_EMPTY被定义为1。

我确实尝试重现你的问题,但对我来说,它似乎每次都在连接。外围设备可能的问题?我的外围设备是不是基于对话者,所以我担心我可能无法帮助那个结局。

麦克风

gl_dialog(未验证)
你好,

你好,

事实上,Mike.TDI解决了这个问题。

Connection Request命令的结构大小错误,这就是为什么出现Co_error_conn_failed_to_be_e_est(来自co_error.h文件的0x3e)。

问候,

对话框的团队。

约翰布吕克
离线
最后一次露面:5年1周前
加入:2014-08-19 18:35
再保险:错误CO_ERROR_CONN

Re:错误co_error_conn_failed_to_be_est
实际上,Mike.TDI没有得到Co_Error_Conn_Failed_to_be_est(0x3e)错误。那是我的问题,这是不同的。迈克的问题是结构规模,他注意到,因为我的帖子。如果对话对话的某人知道为什么我得到conn_failed_to_be_est会有所帮助。谢谢!

gl_dialog(未验证)
嗨Johnbrvc,

嗨Johnbrvc,

根据BLE规范“连接无法建立的错误代码表示LL启动连接,但连接已无法建立。”

它看起来当主机无法设法与设备进行通信时,它会在Connect_Req后无法响应。

因此,在5-6个不成功的连接事件(主机轮询但设备不存在)后,主机获取此消息。

如果您在那个时候成功地进行了会话,但是稍后连接丢失了,那么消息将是CO_ERROR_CON_TIMEOUT。

所以,我的猜测是,主机发送了一个CONNECT_REQ,但设备没有响应。

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

布莱恩
离线
最后一次露面:6年5个月前
专家 掌握
加入:2014-10-16 18:10
祝你好运得到任何帮助

祝富裕的帮助良好。我正在成功地连接到基于非对话框的BTLE外围设备。您可能想要检查您使用的扫描参数。如果使用观察者模式(因此您可以避免可能导致结果不一致的10秒硬超超时。使用常规发现模式。此外,如果您使用的模板,那么在那里通常有代码,这与需要删除的中心角色不一致。但是,我正在进行完全托管的实现,这涉及比你的实现的相当不同的配置。

在好的方面,很高兴看到一些可能诱惑对话的其他中央应用程序,以便为美国中央开发人员提供更多支持。亚博国际官网平台网址到目前为止,我对这个论坛没有任何涉及中心的对话框的问题。我想我有点沮丧,因为我甚至没有使用一个标准配置文件的中央完全托管的榜样。也许我们可以互相帮助。

约翰布吕克
离线
最后一次露面:5年1周前
加入:2014-08-19 18:35
布莱恩,是的,我听到了。

布莱恩,是的,我听到了。Dialog的sdk中确实有几个中心应用程序是有帮助的(无论如何,对我来说)……host_apps/windows/spota,以及proximity/monitor。它至少
指向我的正确方向为中央应用程序的基本结构,但仍然为想象力留下了很多东西。
如果您想进一步讨论,您可以直接通过电子邮件@联系我johnbrvc@yahoo.com.