与主机DA14580的多个从(DA14580)连接

5个职位/ 0个新
最后发表
RandyYu
离线
最后看到:2年11个月前
加入:2015-01-28 08:49
与主机DA14580的多个从(DA14580)连接

嗨对话框

我修改最新的DSPS(主机)项目,我使用“da1458x_config_basic.h”,我改变CFG_MAX_CONNECTIONS参数为6,以允许多个从连接。
但是,一旦第一个从机(DA14580)建立了连接,另一个从机(DA14580)就无法连接到主机(DA14580)。接下来我就不怎么修改项目了。你能
帮我个忙吗?请给我一些建议或介绍这个功能的文档。

谢谢!

设备:
MT_dialog
离线
最后看到:3个月1周前
工作人员
加入:2015-06-08 34
嗨RandyYu,

嗨RandyYu,

请查看下面的帖子http://support.dialog-semiconductor.com/dsps-connect-few-peripheral-one-..。

由于MT_dialog

MSun
离线
最后看到:9个月,3个星期前
加入:2015-11-30 22:40
可以修改DSPS

可以修改DSPS以支持多个外设。

但是您必须深入理解DSPS代码体系结构,并进行大量的修改。

我们已经成功地做了这件事,但你必须小心行事。

一些笔记:

您需要决定如何处理UART端口。你打算在所有外设之间共享一个UART端口吗?
-这当然很奇怪…在我们的例子中,我们在一个共享UART端口上添加了一个“多路复用”数据协议。
DA14580上有第二个UART,所以你也可以选择专用第二个UART端口…但这将只允许支持2个外设
- RTS/CTS流量控制…你需要弄清楚当支持多个外设时如何处理这个问题。
-你需要决定你想在这里完成什么

修改连接策略
-目前DSPS连接到第一个DSPS外设,它发现
-你需要确定自己的策略,并适当地修改代码。

修改DPSP代码以支持多个实例
很多DSPS代码在引用ke_task_id_t结构时简单地使用"TASK_SPS_CLIENT"
-这是一个简短的代码…它实际上是指在连接索引0 (conidx = 0)上TASK_SPS_CLIENT的实例。
-你需要修改所有这些调用来使用“正确的”实例“TASK_SPS_CLIENT”所有适当的代码

—例如……原始的DSPS代码可能有这样的东西…

struct sps_client_data_tx_req * req = KE_MSG_ALLOC_DYN(sps_client_data_tx_req, TASK_SPS_CLIENT, TASK_APP, sps_client_data_tx_req, msg->length);

-你需要将它更改为这样的东西来正确地引用TASK_SPS_CLIENT的正确实例

ke_task_id_t task_sps_client_instance_id = KE_BUILD_ID(TASK_SPS_CLIENT, conidx);
struct sps_client_data_tx_req * req = KE_MSG_ALLOC_DYN(sps_client_data_tx_req, task_sps_client_instance_id, TASK_APP, sps_client_data_tx_req, msg->length);

但正如前面提到的,要让它工作,你真的必须非常深入地理解DSPS的所有操作。
谢谢你,马丁

MT_dialog
离线
最后看到:3个月1周前
工作人员
加入:2015-06-08 34
嗨MSun,

嗨MSun,

感谢分享您的实现。

MT_dialog问好

prasanth.velliy……
离线
最后看到:1年11个月前
加入:2016-02-18 12:18
嗨对话框

嗨对话框

正如孙先生在上面的帖子中提到的,
空白user_sps_enable (uint16_t conhdl)

ke_task_id_t task_sps_client_instance_id = KE_BUILD_ID(TASK_SPS_CLIENT, app_env_vp.devices[conhdl].conidx);
struct sps_client_enable_req * req = KE_MSG_ALLOC(sps_client_enable_req, task_sps_client_instance_id, TASK_APP,
sps_client_enable_req);

//填充参数结构
申请- > conhdl = app_env_vp.devices [conhdl] .conhdl;/ /请求- > conhdl = conhdl;
申请- > con_type = PRF_CON_DISCOVERY;

像这样,我需要改变所有其他函数吗?=> void user_send_ble_data(const uint8_t *data, uint16_t length)
=> void user_send_ble_flow_ctrl(uint8_t flow_ctrl)
为此,我必须传递param -> conhdl从所有以下函数??
= > user_sps_client_enable_cfm_handler
= > user_sps_client_data_tx_cfm_handler
= > user_sps_client_data_rx_ind_handler
= > user_sps_client_tx_flow_ctrl_ind_handler,
谢谢你的对话框