将两个外围设备连接到一个中央

12个帖子/ 0新
最后一篇
翻盖
离线
最后一次露面:3年1个月前
加入:2014-06-10 09:39
将两个外围设备连接到一个中央

你好,

我正在尝试连接两个不同的外围设备,具有相同的特征,到一个中心。

与第一个外设的连接是可以的。

当我尝试连接第二个外设时,它是不可能的。我总是比GAPC _CONNECTION_REQ_IND处理程序中的第一个连接相同的DEST_ID,并且THID DEST_ID的状态已设置为APP_CONNECTABLE。

连接使用GapM_Connection_Direct完成。

你有一些问题吗?如何继续连接两个外围设备ti一个中心?

谢谢你的帮助

py_dialog.
离线
最后一次露面:2年10个月前
职员
加入:2014-08-25 09:59
嗨guigeier,

嗨guigeier,

您能否让我们了解更多信息,如SDK以及您使用的是什么项目?

问候!
PY

翻盖
离线
最后一次露面:3年1个月前
加入:2014-06-10 09:39
你好,

你好,

我正在使用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)

je_dialog.
离线
最后一次露面:2天13小时前
职员
加入:2013-12-05 14:02
你好盖头,

你好盖头,

您是否使用ES3的原因是有原因?这是生产前释放硅。我建议您移动到生产版本(DA14580-01)并支持(成熟)SDK,如3.0.4。从预发布的SDK(2xx)到SDK3.04的质量有一个重大飞跃,以支持生产硅,以及更多的功能和工具支持。我可以组织一个开发板的交换:让我知道你有哪些,我会给你发一条消息来组织那个。

BR JE_DIALOG.

翻盖
离线
最后一次露面:3年1个月前
加入:2014-06-10 09:39
你好,

你好,

我们使用ES3,因为我们几个月前开始了研究项目。此时,只有ES3芯片可用,我们收到了几个ES3芯片。所以我们用这些筹码安装了PCB。

我还有几个与ES4芯片的演示板,我有同样的问题,但也具有SDK 2xx。您是否有一个示例项目或将多个外围设备连接到一个中央的方法,其中SDK 3.0.4?

问候,

瑞典

je_dialog.
离线
最后一次露面:2天13小时前
职员
加入:2013-12-05 14:02
你好regis,

你好regis,

现在我们只有一个中央设备示例可用,即使用外部MCU的SDK3.0.4中的接近监视器。我们有一个无线充电解决方案,我们已经测试了多个连接。我将不得不与SW谈谈,了解他们在Proximity App中测试了多少奴隶:我们在我们的核心中跛行。

BR JE_DIALOG.

翻盖
离线
最后一次露面:3年1个月前
加入:2014-06-10 09:39
你好,

你好,

是的,我知道芯片限于6个同时连接。在我的申请中,我只需要5个同时连接。

如果您还可以有一些关于连接多个外围设备的方式的信息,或者我在第三次回复中发布的方式是正确的。

问候,

Régis.

py_dialog.
离线
最后一次露面:2年10个月前
职员
加入:2014-08-25 09:59
嗨regis,

嗨regis,

您是否为这两个外围设备使用了相同的BD地址?

问候!
PY

翻盖
离线
最后一次露面:3年1个月前
加入:2014-06-10 09:39
嗨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},
....

问候,

瑞典

je_dialog.
离线
最后一次露面:2天13小时前
职员
加入:2013-12-05 14:02
你好regis,

你好regis,

抱歉延迟响应:我可以确认我们已经测试了6个连接的中心角色(接近):这是运行外部MCU,而不是完全嵌入,并且仅在SDK3.0.2或更高版本上测试 - 因此需要生产硅。在最新的SDK中还有一个完全嵌入到DA14580中的核心角色的示例,dk_apps \ keil_projects \ antiput_eval \ antiput_eval_peripheral_fh。

我们可以使用生产设备交换您的开发板。与生产设备运行不同旧版本的工程芯片,使用特定的SDK工作将使事情更加复杂。如果您想交换开发板,请告诉我:我可以安排。

BR JE_DIALOG.

翻盖
离线
最后一次露面:3年1个月前
加入:2014-06-10 09:39
是的,我想要换我

是的,我希望使用生产设备的电路板换我的开发板,因为我对此ES3芯片有很多问题。

改变我的发展委员会的过程是什么?

问候,

Régis.

py_dialog.
离线
最后一次露面:2年10个月前
职员
加入:2014-08-25 09:59
嗨regis,

嗨regis,

似乎您已经使用了链接的差异标识。所以它在这个领域不应该是问题。我们试图将两个或更多外围设备连接到一个中央并没有问题。
在这里,我可能有两个建议:
正如JE_DIALOG所建议的那样,我强烈建议您更改为最新的平台和SDK。新的硅和SDK更耗尽,并且还有更好的工具支持。
我们无法根据以前的版本进行测试。
2.至于您的代码,我不能整体尝试。但在GAPC_CONNECTION_REQ_IND_HANDLER()中,DEST_ID应该是不同的,因为它基于不同的连接。我不确定您是否在每次连接之前都存储了正确的句子。请检查一下。

问候!
PY