7 posts / 0 new
Last post
zhenwenhu
Offline
Last seen:1 year 1 week ago
加入:2015-11-18 12:48
DA14580 BLE主从模式可以一起打开吗

请问DA14580 可以既做主机又做从机吗?
就是DA14580 同时做主机连接一个设备,做从机连接另一个设备,可以吗

Device:
CYibin
Offline
Last seen:5 months 3 weeks ago
Staff
加入:2017-12-14 02:48
您好,

您好,

不好意思,DA14580不支持您描述的需求;是否考虑用 DA14585 来实现?

zhenwenhu
Offline
Last seen:1 year 1 week ago
加入:2015-11-18 12:48
您好

您好,请问DA14580可以先做主机然后进行软件复位后再做从机吗?就是是否可以通过复位来主从切换呢?

CYibin
Offline
Last seen:5 months 3 weeks ago
Staff
加入:2017-12-14 02:48
您好,

您好,

主、从不能同时连接;如果是分开来做的话,那是可以的。

CYibin
Offline
Last seen:5 months 3 weeks ago
Staff
加入:2017-12-14 02:48
上传一个例程和一个介绍 PPT。说明了如何进行主、从切换

上传一个例程和一个介绍 PPT。说明了如何进行主、从切换

zhenwenhu
Offline
Last seen:1 year 1 week ago
加入:2015-11-18 12:48
您好,看了您发的例程,应该是SDK里面的barebone

您好,看了您发的例程,应该是SDK里面的barebone,这个工程。PTT我看了感觉是DA14580作为从机模式的一个状态机。
不好意思,我在这个里面没看到关于主从切换的,能麻烦具体说一下主从切换时的一些问题吗?
问题1:BLE主机和从机是否需要两个PROFILE来处理呢?
问题2:BLE作为主机时,在扫描时,可以根据RSSI值来连接信号最强的吗?还是必须根据广播数据或者MAC地址来连接设备?
问题3:BLE作为主机模式,怎么发现从机的服务呢?服务有多个时,怎么添加呢?我使用DSPS的例程程序运行到sps_client_enable_req_handler这个函数,底层已连接上,但是发现不了服务。走不到gattc_disc_svc_ind_handler这个函数。
问题4:请问在主模式下发送数据直接调用user_send_ble_data这个函数可以吗?我需要在BLE一连接上就发数据,请问我在那里发数据合适呢?
谢谢了。

CYibin
Offline
Last seen:5 months 3 weeks ago
Staff
加入:2017-12-14 02:48
您好,

您好,

附件中的工程是一个主、从切换的样例工程。



问题1:BLE主机和从机是否需要两个PROFILE来处理呢?

不太明白您的意思?

Dialog SDK中的协议栈提供了 GAP 层的消息接口,GAP 层的消息分 GAPM(manager) 和 GAPC(controller)。

GAPM用于管理本地设备的配置信息;GAPC用于管理对端设备的连接过程

应用层可发送GAPM消息给协议栈,如,实现:

扫描蓝牙设备:GAPM_START_SCAN_CMD

报告扫描结果给应用层:GAPM_ADV_REPORT_IND

具体的可参考文档《RW-BLE-GAP-IS》



问题2:BLE作为主机时,在扫描时,可以根据RSSI值来连接信号最强的吗?还是必须根据广播数据或者MAC地址来连接设备?

通过接收 GAPM_ADV_REPORT_IND 消息,可读取其携带的 adv_report 类型的参数,其中就包含 rssi 和 bd addr 地址。用户可自行判断



问题3:BLE作为主机模式,怎么发现从机的服务呢?服务有多个时,怎么添加呢?我使用DSPS的例程程序运行到sps_client_enable_req_handler这个函数,底层已连接上,但是发现不了服务。走不到gattc_disc_svc_ind_handler这个函数

问题4:请问在主模式下发送数据直接调用user_send_ble_data这个函数可以吗?我需要在BLE一连接上就发数据,请问我在那里发数据合适呢?


这两个问题,是 GATT 层相关的,详细的可参阅《RW-BLE-GATT-IS》

发现服务,可在 DSPS HOST 工程中搜索:GATTC_DISC_CMD

发送数据,可在 DSPS HOST 工程中搜索:GATTC_WRITE_CMD

主机(client)会逐一发现从机(server)的所有的服务,发现完成之后,在函数 user_sps_client_enable_cfm_handler 处理发现的结果,通过参数可获得发现的结果

Attachment: