你好,
我正在尝试连接两个不同的外围设备,具有相同的特征,到一个中心。
与第一个外设的连接是可以的。
当我尝试连接第二个外设时,它是不可能的。我总是比GAPC _CONNECTION_REQ_IND处理程序中的第一个连接相同的DEST_ID,并且THID DEST_ID的状态已设置为APP_CONNECTABLE。
连接使用GapM_Connection_Direct完成。
Have you some issues for this problem? How proceed to connect two peripherals ti one central?
谢谢你的帮助
嗨guigeier,
您能否让我们了解更多信息,如SDK以及您使用的是什么项目?
Regards!
PY
你好,
I'm using the SDK v_2.0.4.1 (I'm using ES3 chips for the peripherical side)
我的项目基于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;
/* Address */
memcpy((void *) &cmd->peers[0].addr,
(void *) ptr_discoveredDevice - > report.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)
Hello Guigner,
您是否使用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?
Regards,
瑞典
你好regis,
现在我们只有一个中央设备示例可用,即使用外部MCU的SDK3.0.4中的接近监视器。我们有一个无线充电解决方案,我们已经测试了多个连接。我将不得不与SW谈谈,了解他们在Proximity App中测试了多少奴隶:我们在我们的核心中跛行。
BR JE_DIALOG.
你好,
Yes, I know that the chip is limited to 6 simultaneous conections. In my application, I need only 5 simultaneous conections.
如果您还可以有一些关于连接多个外围设备的方式的信息,或者我在第三次回复中发布的方式是正确的。
Regards,
Régis.
嗨regis,
您是否为这两个外围设备使用了相同的BD地址?
Regards!
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},
....
Regards,
瑞典
你好regis,
Sorry for delay in response : i can confirm that we have tested the central role (proximity) with 6 connections : this is running an external MCU though , not fully embedded and only tested on SDK3.0.2 or later - therefore requiring production silicon. In the latest SDK there is also an example of a central role that is fully embedded into the DA14580 , the dk_apps\keil_projects\throughput_eval\throughput_eval_peripheral_fh .
We can swap out your development boards for the versions with the production device.. running different older versions of engineering silicon that worked with specific SDK's will make things more complex here. Let me know if you want to swap your development boards : I can arrange that .
BR JE_DIALOG.
Yes, I would like swap my development board with a board with production devices because i have a lot of problems with this ES3 chips.
改变我的发展委员会的过程是什么?
Regards,
Régis.
嗨regis,
似乎您已经使用了链接的差异标识。所以它在这个领域不应该是问题。我们试图将两个或更多外围设备连接到一个中央并没有问题。
在这里,我可能有两个建议:
1. Just as JE_Dialog suggested, I strongly advise you change to the newest platform and SDK. The new silicon and SDK is more rubust and also better supported with tools.
我们无法根据以前的版本进行测试。
2.至于您的代码,我不能整体尝试。但在GAPC_CONNECTION_REQ_IND_HANDLER()中,DEST_ID应该是不同的,因为它基于不同的连接。我不确定您是否在每次连接之前都存储了正确的句子。请检查一下。
Regards!
PY