亲爱的对话
首先,我将描述我的项目,我的从机是SNM模块,连接后,主机应向从机写入请求,然后传输传感器数据。
第二,我的硕士学位是从DSPS项目修改而来的。
Q1:当master连接到Slave_1时,master发送一个写请求给它(我把代码放在user_sps_client_enable_cfm_handler中)。然后主机可以接收传感器数据。
然后连接到从机_2,但主机无法将请求写入从机_2。
调试后,我发现连接到从属服务器1后,主服务器更改为连接到SPS\U客户端。
所以我想问,如何处理SPS_CLIENT_CONNECTED(我的意思是什么时候设置它?连接Slave_1或连接所有slave)和APP_CONNECTABLE ?或其他原因引起的。
问2:当主服务器连接到Slave_1并进行数据传输时,主服务器是否可以向Slave_2发送控制cmd(通知)?
问题3:主设备能否同时与从设备1和从设备2传输数据?或者必须轮流交换数据,如果轮流交换,如何将从设备1更改为从设备2
问4:您有没有更好的方法来检查主机是否处于扫描状态
谢谢你的回复
设备:
嗨RandyYu,
Q1。关于SPS_CLIENT_CONNECTED,它只是应用程序为了知道设备是否已连接而检查的配置文件的状态。当建立连接时,将调用user_on_connection回调来通知应用程序,在user_on_connection函数中,app_prf_enable()函数将遍传并启用所有涉及的项目概要文件。在DSPS项目中,由于DSPS配置文件是唯一的现有配置文件,app_prf_enable()只调用特定连接的user_sps_enable()。当在客户机中启用配置文件时,您将启动中央的发现过程,当发现过程结束时,dsps客户机将切换SPS_CLIENT_CONNECTED中的应用程序状态。在一般应用程序中,将设备设置为已连接依赖于用户应用程序。
关于多重连接,如本文所述http://support.dialog-semiconductor.com/multiple-slaveda14580-connection..。DSP不支持不同外设上的多个连接,您需要大量定制才能实现类似的功能,处理SPS_客户端_连接不是您的问题。DSP仅假设一个连接(conidx 0,这是您进行的第一个连接)。请查看以下帖子http://support.dialog-semiconductor.com/multiple-slaveda14580-connection..。关于修改,人们应该考虑,以执行多个传输与DSP。
Q4.由于DSP仅支持一个连接,因此在建立连接后,设备会将其视为自连接,无论何时调用扫描操作,任务应用程序的状态都会变为可连接,当设备连接时,它会变为已连接。在建立连接后的多个连接场景中,调用用户_scan_start()会再次将任务_APP state更改为APP_CONNECTABLE,因此这是设备正在扫描的合理指示。
谢谢你的对话
第二季度/第三季度第一个URL是“找不到此页面”
我需要下面的功能,使奴隶发送数据
uint8\u t measure\u start[3]={0x20、0x03、0x01};
/*写请求*/
prf_gatt_write_ntf_ind(con_info,0x16,prf_CLI_START_ntf);//自定义2通知启用
prf_gatt_write_ntf_ind (con_info, 0 * 13, PRF_CLI_START_NTF);/ / custom1通知启用
prf_gatt_write(con_info, 0x18, measure_start, sizeof (uint8_t)*3,GATTC_WRITE_NO_RESPONSE);
现在我有一个问题,
问题1:SPS主机环境变量中有多少con_信息?
问题2:如何更改启用下一个从属服务器的con_信息?
嗨RandyYu,
在DSP中,按照其结构,每次执行连接和sps服务发现时,与配置文件相关的数据(连接句柄、从发现过程中发现的数据库结构和其他信息)都存储在eviroment变量中(该变量在sps_client_init中启动)。在DSP中,由于其实现仅支持一个连接,因此该环境变量与一个SPS_任务紧密相关。例如,当您执行对外围设备的写入时,将调用宏PRF_CLIENT_GET_ENV,以声明该数据并填充本地spsc_ENV_标记类型变量。由于其设置为在PRF_CLIENT_GET_ENV被称为它检索唯一一个spsc_ENV_标记,它只保存一个连接,因此只有一个con_信息。
您可以尝试使用存储设备上可用连接的app_env变量,并可以检查spsc环境中的con_信息是如何填充的(在sps_client_enable_req_处理程序中),也许您只能使用一个环境并只更改连接信息,但这只是一个临时解决方案,因为我提到过让DSP支持多个从机需要大量定制而不仅仅是对原始代码的修改.
谢谢你的对话
现在我对这个多重连接的过程有点困惑,下面的过程是对的吗?
->用户\u扫描\u启动
>修改APP_STATE为APP_SCANNING (APP_SCANNING被我自己添加到APP_STATE中)
->去连接需要的从机
->将APP_状态更改为APP_可连接
->用户\u正在\u扫描\u已完成
->用户\u在\u连接上
->用户\u sps\u启用
->向连接的从属设备发送写请求
->然后重复这个过程
嗨RandyYu,
有多个连接可能需要一个相当不同的方案,以了解你的设备的状态,我的意思是,可能当连接到第一个你将有你的设备的状态连接,但之后你将开始再次扫描。应用程序将如何处理它的状态由您决定。例如,在处理多个连接的接近监视器应用程序中,连接和扫描应用程序时不会将其状态更改为SCAN,但状态仍然为connected。
谢谢你的对话
1.您所说的状态是应用程序状态还是任务状态?我的任务状态在连接后设置为已连接
2.如果主端连接到一个从端并进行数据交换,主端是否可以继续扫描?
3.如果要将task_APP state的所有任务索引设置为CONNECTABLE,如何修改ke_state_set(task_APP,APP_CONNECTABLE);
嗨RandyYu,
1.我所指的状态是应用程序状态,而不是配置文件状态,如果这是您的意思。如果您已准备好连接到设备,并且正在扫描下一个设备,则应连接配置文件的状态,因为在符合配置文件状态的DSP上会触发相应的处理程序。例如,有dif连接设备时提供不同的处理程序,设备处于发现状态时提供不同的处理程序。
2.我看不出有什么问题,你可以连接到一个从机并继续扫描。
3.是的,您可以通过使用KEU状态集(应用程序任务、任务状态)更改任务的状态
谢谢你的对话