你好,
我正在尝试连接两个不同的外围设备,具有相同的特征,到一个中心。
与第一个外设的连接是可以的。
当我尝试连接第二个外设时,它是不可能的。我总是比GAPC _CONNECTION_REQ_IND处理程序中的第一个连接相同的DEST_ID,并且THID DEST_ID的状态已设置为APP_CONNECTABLE。
连接使用GapM_Connection_Direct完成。
你有一些问题吗?如何继续连接两个外围设备ti一个中心?
谢谢你的帮助
嗨guigeier,
您能否让我们了解更多信息,如SDK以及您使用的是什么项目?
问候!PY
我正在使用sdk v_2.0.4.1(我正在使用外围端的ES3芯片)
我的项目基于FH_Proxr项目的外围设备和监视器FE_USB的中心。
我使用每个外围设备的相同函数来连接。(见下面的代码)
void ConnectTodevice(UINT8_T PARAM_IN_INDEX){struct gapm_adc_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.code = gapm_connection_direct;
/* 地址 */memcpy((void *)&cmd->对等体[0] .addr,(void *)ptr_discovereddevice-> eport.adv_addr.addr,bd_addr_len);
/* 地址类型 */cmd->对等体[0] .addr_type = gapm_public_addr;
cmd-> scan_interval = 0x180;cmd-> scan_window = 0x160;cmd-> superv_to = 0x1f4; // 500 - > 5000毫秒;
/ *发送开始连接命令。* /ke_msg_send(cmd);}
启动与第二设备的连接时,对于GAPC_CONNECTION_REQ_NED的回调(参见下面的代码)告诉我DEST_ID已连接。此Dest_ID与第一个连接相同,尽管第二个连接的信息Senfding的信息与第一个连接不同(BD_Adress ......)不同
//回调gapc_connection_req_ind.static int gapc_connection_req_ind_handler(const ke_msg_id_t msgid,const struct gapc_connection_req_ind * param,ke_task_id_t const dest_id,ke_task_id_t src_id const){if(ke_state_get(dest_id)== app_connectable)
你好盖头,
您是否使用ES3的原因是有原因?这是生产前释放硅。我建议您移动到生产版本(DA14580-01)并支持(成熟)SDK,如3.0.4。从预发布的SDK(2xx)到SDK3.04的质量有一个重大飞跃,以支持生产硅,以及更多的功能和工具支持。我可以组织一个开发板的交换:让我知道你有哪些,我会给你发一条消息来组织那个。
BR JE_DIALOG.
我们使用ES3,因为我们几个月前开始了研究项目。此时,只有ES3芯片可用,我们收到了几个ES3芯片。所以我们用这些筹码安装了PCB。
我还有几个与ES4芯片的演示板,我有同样的问题,但也具有SDK 2xx。您是否有一个示例项目或将多个外围设备连接到一个中央的方法,其中SDK 3.0.4?
问候,
瑞典
你好regis,
现在我们只有一个中央设备示例可用,即使用外部MCU的SDK3.0.4中的接近监视器。我们有一个无线充电解决方案,我们已经测试了多个连接。我将不得不与SW谈谈,了解他们在Proximity App中测试了多少奴隶:我们在我们的核心中跛行。
是的,我知道芯片限于6个同时连接。在我的申请中,我只需要5个同时连接。
如果您还可以有一些关于连接多个外围设备的方式的信息,或者我在第三次回复中发布的方式是正确的。
Régis.
嗨regis,
您是否为这两个外围设备使用了相同的BD地址?
嗨py,
否我为每个设备使用不同的BD地址。
我已为每个不同设备的编译选项定义了我的BD地址。
#if定义(cfg_ibfc_implant_id1).nvds_tag_device_name =“device_1”,.device_name_tag_len = 8,.nvds_tag_bd_address = {0xcd,0xcd,0x45,0x55,0x89,0x01},#elif定义(cfg_ibfc_implant_id2).nvds_tag_device_name =“device_2”,.device_name_tag_len = 8,.nvds_tag_bd_address = {0xcd,0xcd,0x45,0x55,0x89,0x02},....
抱歉延迟响应:我可以确认我们已经测试了6个连接的中心角色(接近):这是运行外部MCU,而不是完全嵌入,并且仅在SDK3.0.2或更高版本上测试 - 因此需要生产硅。在最新的SDK中还有一个完全嵌入到DA14580中的核心角色的示例,dk_apps \ keil_projects \ antiput_eval \ antiput_eval_peripheral_fh。
我们可以使用生产设备交换您的开发板。与生产设备运行不同旧版本的工程芯片,使用特定的SDK工作将使事情更加复杂。如果您想交换开发板,请告诉我:我可以安排。
是的,我希望使用生产设备的电路板换我的开发板,因为我对此ES3芯片有很多问题。
改变我的发展委员会的过程是什么?
似乎您已经使用了链接的差异标识。所以它在这个领域不应该是问题。我们试图将两个或更多外围设备连接到一个中央并没有问题。在这里,我可能有两个建议:正如JE_DIALOG所建议的那样,我强烈建议您更改为最新的平台和SDK。新的硅和SDK更耗尽,并且还有更好的工具支持。我们无法根据以前的版本进行测试。2.至于您的代码,我不能整体尝试。但在GAPC_CONNECTION_REQ_IND_HANDLER()中,DEST_ID应该是不同的,因为它基于不同的连接。我不确定您是否在每次连接之前都存储了正确的句子。请检查一下。
嗨guigeier,
您能否让我们了解更多信息,如SDK以及您使用的是什么项目?
问候!
PY
你好,
我正在使用sdk v_2.0.4.1(我正在使用外围端的ES3芯片)
我的项目基于FH_Proxr项目的外围设备和监视器FE_USB的中心。
我使用每个外围设备的相同函数来连接。(见下面的代码)
void ConnectTodevice(UINT8_T PARAM_IN_INDEX)
{
struct gapm_adc_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.code = gapm_connection_direct;
/* 地址 */
memcpy((void *)&cmd->对等体[0] .addr,
(void *)ptr_discovereddevice-> eport.adv_addr.addr,
bd_addr_len);
/* 地址类型 */
cmd->对等体[0] .addr_type = gapm_public_addr;
cmd-> scan_interval = 0x180;
cmd-> scan_window = 0x160;
cmd-> superv_to = 0x1f4; // 500 - > 5000毫秒;
/ *发送开始连接命令。* /
ke_msg_send(cmd);
}
启动与第二设备的连接时,对于GAPC_CONNECTION_REQ_NED的回调(参见下面的代码)告诉我DEST_ID已连接。此Dest_ID与第一个连接相同,尽管第二个连接的信息Senfding的信息与第一个连接不同(BD_Adress ......)不同
//回调gapc_connection_req_ind.
static int gapc_connection_req_ind_handler(const ke_msg_id_t msgid,
const struct gapc_connection_req_ind * param,
ke_task_id_t const dest_id,
ke_task_id_t src_id const)
{
if(ke_state_get(dest_id)== app_connectable)
你好盖头,
您是否使用ES3的原因是有原因?这是生产前释放硅。我建议您移动到生产版本(DA14580-01)并支持(成熟)SDK,如3.0.4。从预发布的SDK(2xx)到SDK3.04的质量有一个重大飞跃,以支持生产硅,以及更多的功能和工具支持。我可以组织一个开发板的交换:让我知道你有哪些,我会给你发一条消息来组织那个。
BR JE_DIALOG.
你好,
我们使用ES3,因为我们几个月前开始了研究项目。此时,只有ES3芯片可用,我们收到了几个ES3芯片。所以我们用这些筹码安装了PCB。
我还有几个与ES4芯片的演示板,我有同样的问题,但也具有SDK 2xx。您是否有一个示例项目或将多个外围设备连接到一个中央的方法,其中SDK 3.0.4?
问候,
瑞典
你好regis,
现在我们只有一个中央设备示例可用,即使用外部MCU的SDK3.0.4中的接近监视器。我们有一个无线充电解决方案,我们已经测试了多个连接。我将不得不与SW谈谈,了解他们在Proximity App中测试了多少奴隶:我们在我们的核心中跛行。
BR JE_DIALOG.
你好,
是的,我知道芯片限于6个同时连接。在我的申请中,我只需要5个同时连接。
如果您还可以有一些关于连接多个外围设备的方式的信息,或者我在第三次回复中发布的方式是正确的。
问候,
Régis.
嗨regis,
您是否为这两个外围设备使用了相同的BD地址?
问候!
PY
嗨py,
否我为每个设备使用不同的BD地址。
我已为每个不同设备的编译选项定义了我的BD地址。
#if定义(cfg_ibfc_implant_id1)
.nvds_tag_device_name =“device_1”,
.device_name_tag_len = 8,
.nvds_tag_bd_address = {0xcd,0xcd,0x45,0x55,0x89,0x01},
#elif定义(cfg_ibfc_implant_id2)
.nvds_tag_device_name =“device_2”,
.device_name_tag_len = 8,
.nvds_tag_bd_address = {0xcd,0xcd,0x45,0x55,0x89,0x02},
....
问候,
瑞典
你好regis,
抱歉延迟响应:我可以确认我们已经测试了6个连接的中心角色(接近):这是运行外部MCU,而不是完全嵌入,并且仅在SDK3.0.2或更高版本上测试 - 因此需要生产硅。在最新的SDK中还有一个完全嵌入到DA14580中的核心角色的示例,dk_apps \ keil_projects \ antiput_eval \ antiput_eval_peripheral_fh。
我们可以使用生产设备交换您的开发板。与生产设备运行不同旧版本的工程芯片,使用特定的SDK工作将使事情更加复杂。如果您想交换开发板,请告诉我:我可以安排。
BR JE_DIALOG.
是的,我希望使用生产设备的电路板换我的开发板,因为我对此ES3芯片有很多问题。
改变我的发展委员会的过程是什么?
问候,
Régis.
嗨regis,
似乎您已经使用了链接的差异标识。所以它在这个领域不应该是问题。我们试图将两个或更多外围设备连接到一个中央并没有问题。
在这里,我可能有两个建议:
正如JE_DIALOG所建议的那样,我强烈建议您更改为最新的平台和SDK。新的硅和SDK更耗尽,并且还有更好的工具支持。
我们无法根据以前的版本进行测试。
2.至于您的代码,我不能整体尝试。但在GAPC_CONNECTION_REQ_IND_HANDLER()中,DEST_ID应该是不同的,因为它基于不同的连接。我不确定您是否在每次连接之前都存储了正确的句子。请检查一下。
问候!
PY