嗨
我使用dsp来执行角色切换:我不断地改变角色从外围到中心,并且对于广告包也有两个选项(for summarize -> transmission of advertise 1, advertise 2,scanning…)我使用的是app_gapm_reset_op();用于复位传输之间的堆栈。如果我在扫描我改变静态结构gapm_set_dev_config_cmd* app_easy_gap_dev_config_create_msg(无效)的角色到CENTRAL_MST (0x05),如果发布,它将0x0A(外围角色)。
我的问题是,当我连接到设备时,对端设备无法发现服务,并且由于某种原因返回空。如果我重置堆栈,但只改变从一个广告客户到另一个,这是不发生的,服务正在被检测,所以我认为这是某种程度上与扫描定义相关。
连接发起者为对端设备(DA1480为advertise模式时)。
知道为什么会这样吗?
谢谢
设备:
你好,
更正一下,即使不扫描也会发生。我注意到当它发生时没有SPS_SERVER_ENABLE_CFM回调。
嗨asalhuv,
我不确定该实现是如何实现的,但请注意,当连接作为中心或作为外设建立时,设备进入发现过程模式。这意味着作为连接建立的中心,您开始向外设发送一些命令,以发现外设上可用的服务。在DSPS主机中,将启动app_prf_enable()函数,该函数将启动这个发现链。完成后,设备将开始正常工作。
对于DSPS的外围设备,在启动设备时,外围设备需要构建将形成所支持的服务的数据库,服务的构建在app_db_init_start()函数中完成,SDK将检查所支持的配置文件,并调用创建db函数(在DSPS的情况下是user_sps_db_create()函数)。这将在外围设备中产生一整套服务。所以,关于你的问题,你是否在外围端实现这些服务,以便客户端能够发现它们?仅仅从中心设备切换到外围设备还不足以让外围设备包含您需要的服务。
由于MT_dialog
嗨
RESET后,数据库将以外设方式启动。我使用app_gapm_reset_op()在模式之间进行重置。对于扫描模式,我只将app_easy_gap_dev_config_create_msg(void)函数中的cmd->角色更改为GAP_CENTRAL_MST。当计时器完成时,我再次重置堆栈,然后将cmd->角色配置为外设。
连接是由对等设备(智能手机)发起的,显然是在我的设备处于外设模式时。看起来,虽然DB确实创建了(我在返回TRUE的app_db_init_start()中看到它),但没有数据库数据发送到对端设备。
不用解释,我自己就知道了。我在数据库准备好之前就开始做广告了。
谢谢! ! !
嗨salhuv,
谢谢你的指示。
MT_dialog问好