你好,
我试图连接两个不同的外围设备,具有相同的特征,一个中心。
第一外围设备的连接是好的。
当我尝试连接第二个外围,这是不可能的。我总是比第一次连接同一dest_id GAPC _CONNECTION_REQ_IND处理程序和本dest_id主要国家已经将APP_CONNECTABLE。
与GAPM_CONNECTION_DIRECT连接完成。
你有一些问题关于这个问题?一个人怎样继续连接两个外设ti中央?
谢谢你的帮助
嗨Guignier,
你能让我们知道更多的信息像SDK和你用的什么项目?
的问候!PY
我使用SDK v_2.0.4.1(我使用胡芯片peripherical侧)
我的项目是基于fh_proxr项目外围设备和监控fe_usb中央。
我使用相同的函数与每个外围连接。(参见下面的代码)
空白ConnectToDevice (uint8_t param_in_index){struct gapm_adv_report_ind * ptr_discoveredDevice;
ptr_discoveredDevice = & (BTLE_Peripheral_a [param_in_index] .attribute);
/ *开始准备连接命令。* /struct gapm_start_connection_cmd * cmd = KE_MSG_ALLOC (gapm_start_connection_cmdTASK_GAPM,TASK_APP,gapm_start_connection_cmd);
cmd - > nb_peers = 1;cmd - > con_latency = 0;
cmd - > ce_len_min = 0;cmd - > ce_len_max = 5;
cmd - > con_intv_max = 100;cmd - > con_intv_min = 100;
cmd - > op。addr_src = GAPM_PUBLIC_ADDR;cmd - > op。代码= GAPM_CONNECTION_DIRECT;
* / / *地址memcpy ((void *) cmd - > [0] .addr同行,(void *) ptr_discoveredDevice - > report.adv_addr.addr,BD_ADDR_LEN);
/ * * /地址类型cmd - > [0]。addr_type = GAPM_PUBLIC_ADDR;
cmd - > scan_interval = 0 x180;cmd - > scan_window = 0 x160;cmd - > superv_to = 0 x1f4; / / 500 - > 5000 ms;
/ *发送命令开始连接。* /ke_msg_send (cmd);}
当连接到第二个设备启动,回调(请参见下面的代码)GAPC_CONNECTION_REQ_IND告诉我,DEST_ID已经连接。这DEST_ID是相同的第一个连接虽然信息senfding第二连接不同于第一连接(bd_adress…)
/ /回调GAPC_CONNECTION_REQ_IND静态int gapc_connection_req_ind_handler (const ke_msg_id_t是否,*参数,const struct gapc_connection_req_indke_task_id_t const DEST_ID,ke_task_id_t src_id常量){如果(ke_state_get (DEST_ID) = = APP_CONNECTABLE)
你好Guigner,
您使用的是胡有什么原因吗?这是pre-produciton释放硅。我建议你去生产版本(DA14580-01)和支持(成熟的)像3.0.4 SDK。质量有重大飞跃从预发布SDK (2 xx) SDK3.04 suppor生产硅,以及更多的功能和工具支持。我可以组织一个交换你的开发板:让我知道哪一个你有,我将给你发个消息的组织。
BR JE_Dialog
我们使用的是胡,因为几个月前我们开始一个研究项目。这个时候,只有胡芯片是可用的,我们收到了几个胡芯片。我们有安装我们与这些芯片的多氯联苯。
我还几个演示板ES4芯片和我有同样的问题,也与SDK 2 xx。你一个示例项目或多个外围设备连接到一个中央的方式SDK 3.0.4吗?
问候,
瑞吉斯
你好,瑞吉斯,
现在我们只有一个中央设备可用,这与外部单片机SDK3.0.4距离监控。我们有一个无线充电解决方案我们已经测试了多个连接的地方。我将不得不跟SW了解他们有多少奴隶同时接近应用测试:我们还无法在我们的核心6。
是的,我知道这个芯片是有限的6个并发连接。在我的应用程序中,我只需要5个并发连接。
如果你也会有一些信息的方式来连接多个外设或如果我的方式发布在我的第三个回答是正确的。
嗨,瑞吉斯,
你使用这两个外设的BD地址相同吗?
嗨PY,
不,我用不同的BD为每个设备地址。
我定义了BD处理这样一个编译选项为每个不同的设备。
#如果定义(CFG_IBFC_IMPLANT_ID1).NVDS_TAG_DEVICE_NAME = " Device_1 ",.DEVICE_NAME_TAG_LEN = 8,.NVDS_TAG_BD_ADDRESS = {0 xcd 0 xcd 0 x45, 0 x55 0 x89 0 x01},# elif定义(CFG_IBFC_IMPLANT_ID2).NVDS_TAG_DEVICE_NAME = " Device_2 ",.DEVICE_NAME_TAG_LEN = 8,.NVDS_TAG_BD_ADDRESS = {0 xcd 0 xcd 0 x45, 0 x55 0 x89 0 x02},....
抱歉延迟回应:我可以确认我们已经测试了核心作用(接近)与6连接:这是运行外部单片机,不仅完全嵌入和检测SDK3.0.2或晚,因此要求生产硅。在最新的SDK也有关键作用的一个例子是完全嵌入到DA14580 dk_apps \ keil_projects \ throughput_eval \ throughput_eval_peripheral_fh。
我们可以交换你的开发板的版本生产设备。运行不同的旧版本的工程硅与特定SDK将让事情变得更复杂。让我知道如果你想交换你的开发板:我可以安排。
是的,我想换我的开发板与板生产设备,因为我有很多问题胡芯片。
过程改变我的开发板是什么?
似乎你已经习惯差异识别的链接。所以它不应该在这一领域的问题。我们已经尝试将两个或两个以上的外围设备连接到一个中央和没有问题。在这里,我有两个建议:1。正如JE_Dialog建议,我强烈建议你改变最新的平台和SDK。新硅和SDK也更健壮性和更好的支持工具。我们不能根据以往的版本做测试。2。至于你的代码,我不能试一试。但在gapc_connection_req_ind_handler (), DEST_ID应该不同,因为它基于不同的连接。我不确定你是否有正确的存储condix为每个连接之前。请检查。
嗨Guignier,
你能让我们知道更多的信息像SDK和你用的什么项目?
的问候!
PY
你好,
我使用SDK v_2.0.4.1(我使用胡芯片peripherical侧)
我的项目是基于fh_proxr项目外围设备和监控fe_usb中央。
我使用相同的函数与每个外围连接。(参见下面的代码)
空白ConnectToDevice (uint8_t param_in_index)
{
struct gapm_adv_report_ind * ptr_discoveredDevice;
ptr_discoveredDevice = & (BTLE_Peripheral_a [param_in_index] .attribute);
/ *开始准备连接命令。* /
struct gapm_start_connection_cmd * cmd = KE_MSG_ALLOC (gapm_start_connection_cmd
TASK_GAPM,
TASK_APP,
gapm_start_connection_cmd);
cmd - > nb_peers = 1;
cmd - > con_latency = 0;
cmd - > ce_len_min = 0;
cmd - > ce_len_max = 5;
cmd - > con_intv_max = 100;
cmd - > con_intv_min = 100;
cmd - > op。addr_src = GAPM_PUBLIC_ADDR;
cmd - > op。代码= GAPM_CONNECTION_DIRECT;
* / / *地址
memcpy ((void *) cmd - > [0] .addr同行,
(void *) ptr_discoveredDevice - > report.adv_addr.addr,
BD_ADDR_LEN);
/ * * /地址类型
cmd - > [0]。addr_type = GAPM_PUBLIC_ADDR;
cmd - > scan_interval = 0 x180;
cmd - > scan_window = 0 x160;
cmd - > superv_to = 0 x1f4; / / 500 - > 5000 ms;
/ *发送命令开始连接。* /
ke_msg_send (cmd);
}
当连接到第二个设备启动,回调(请参见下面的代码)GAPC_CONNECTION_REQ_IND告诉我,DEST_ID已经连接。这DEST_ID是相同的第一个连接虽然信息senfding第二连接不同于第一连接(bd_adress…)
/ /回调GAPC_CONNECTION_REQ_IND
静态int gapc_connection_req_ind_handler (const ke_msg_id_t是否,
*参数,const struct gapc_connection_req_ind
ke_task_id_t const DEST_ID,
ke_task_id_t src_id常量)
{
如果(ke_state_get (DEST_ID) = = APP_CONNECTABLE)
你好Guigner,
您使用的是胡有什么原因吗?这是pre-produciton释放硅。我建议你去生产版本(DA14580-01)和支持(成熟的)像3.0.4 SDK。质量有重大飞跃从预发布SDK (2 xx) SDK3.04 suppor生产硅,以及更多的功能和工具支持。我可以组织一个交换你的开发板:让我知道哪一个你有,我将给你发个消息的组织。
BR JE_Dialog
你好,
我们使用的是胡,因为几个月前我们开始一个研究项目。这个时候,只有胡芯片是可用的,我们收到了几个胡芯片。我们有安装我们与这些芯片的多氯联苯。
我还几个演示板ES4芯片和我有同样的问题,也与SDK 2 xx。你一个示例项目或多个外围设备连接到一个中央的方式SDK 3.0.4吗?
问候,
瑞吉斯
你好,瑞吉斯,
现在我们只有一个中央设备可用,这与外部单片机SDK3.0.4距离监控。我们有一个无线充电解决方案我们已经测试了多个连接的地方。我将不得不跟SW了解他们有多少奴隶同时接近应用测试:我们还无法在我们的核心6。
BR JE_Dialog
你好,
是的,我知道这个芯片是有限的6个并发连接。在我的应用程序中,我只需要5个并发连接。
如果你也会有一些信息的方式来连接多个外设或如果我的方式发布在我的第三个回答是正确的。
问候,
瑞吉斯
嗨,瑞吉斯,
你使用这两个外设的BD地址相同吗?
的问候!
PY
嗨PY,
不,我用不同的BD为每个设备地址。
我定义了BD处理这样一个编译选项为每个不同的设备。
#如果定义(CFG_IBFC_IMPLANT_ID1)
.NVDS_TAG_DEVICE_NAME = " Device_1 ",
.DEVICE_NAME_TAG_LEN = 8,
.NVDS_TAG_BD_ADDRESS = {0 xcd 0 xcd 0 x45, 0 x55 0 x89 0 x01},
# elif定义(CFG_IBFC_IMPLANT_ID2)
.NVDS_TAG_DEVICE_NAME = " Device_2 ",
.DEVICE_NAME_TAG_LEN = 8,
.NVDS_TAG_BD_ADDRESS = {0 xcd 0 xcd 0 x45, 0 x55 0 x89 0 x02},
....
问候,
瑞吉斯
你好,瑞吉斯,
抱歉延迟回应:我可以确认我们已经测试了核心作用(接近)与6连接:这是运行外部单片机,不仅完全嵌入和检测SDK3.0.2或晚,因此要求生产硅。在最新的SDK也有关键作用的一个例子是完全嵌入到DA14580 dk_apps \ keil_projects \ throughput_eval \ throughput_eval_peripheral_fh。
我们可以交换你的开发板的版本生产设备。运行不同的旧版本的工程硅与特定SDK将让事情变得更复杂。让我知道如果你想交换你的开发板:我可以安排。
BR JE_Dialog
是的,我想换我的开发板与板生产设备,因为我有很多问题胡芯片。
过程改变我的开发板是什么?
问候,
瑞吉斯
嗨,瑞吉斯,
似乎你已经习惯差异识别的链接。所以它不应该在这一领域的问题。我们已经尝试将两个或两个以上的外围设备连接到一个中央和没有问题。
在这里,我有两个建议:
1。正如JE_Dialog建议,我强烈建议你改变最新的平台和SDK。新硅和SDK也更健壮性和更好的支持工具。
我们不能根据以往的版本做测试。
2。至于你的代码,我不能试一试。但在gapc_connection_req_ind_handler (), DEST_ID应该不同,因为它基于不同的连接。我不确定你是否有正确的存储condix为每个连接之前。请检查。
的问候!
PY