亲爱的dialog
首先,我将描述我的项目,我的从机是SNM模块,连接后,主机应该向从机写入请求,然后传输传感器数据。
其次,我的硕士学位是从DSPS项目修改而来的。
Q1:When master connected to Slave_1,master send a write request to it(i put the code in user_sps_client_enable_cfm_handler).then the master can receive the sensor data.
然后连接到从机2,但主机无法将请求写入从机2。
调试后我发现连接到从机\u 1后,主机更改为SPS\u客户端\u已连接。
So I want to ask,how to process the SPS_CLIENT_CONNECTED(I mean when set it?connected Slave_1 or connected all the slave)and APP_CONNECTABLE ?or it 's caused by other reason.
Q2:can master send control cmd(notification)to Slave_2 ,when master connected to Slave_1 and have data transmiting?
Q3:主设备能同时与从设备1和从设备2传输数据吗?或者必须轮流交换数据,如果轮流,如何将从设备1改为从设备2
问:有没有更好的方法来检查主机是否处于扫描状态
谢谢你的回复
Device:
Hi RandyYu,
Q1。关于SPS_CLIENT_CONNECTED只是一个年代tate of the profile that the application checks in order to know if a device is connected or not. When a connection is established the user_on_connection callback is invoked to inform the application, in user_on_connection function the app_prf_enable() function goes through, and enables, all the project involved profiles. In DSPS project, since the dsps profile is the only one existing profile, the app_prf_enable() calls only the user_sps_enable() for the specific connection. When enabling a profile in a client, you start the discovery procedure of the central, when the discovery procedure ends then the dsps client turns the application's state in SPS_CLIENT_CONNECTED. In a general application when you set the device as connected depends on the user application.
问题2。问题3。关于多重连接,如本文所述http://support.dialog-semiconductor.com/multiple-slaveda14580-connection...DSP不支持不同外设上的多个连接,您需要大量定制才能实现这样的功能,处理SPS\客户端\连接不是您的问题。DSP只假设一个连接(conidx 0,这是您建立的第一个连接)。请检查下面的帖子http://support.dialog-semiconductor.com/multiple-slaveda14580-connection...关于修改,应考虑使用dsp执行多个传输。
第四季度。由于DSP只支持一个连接,因此在建立连接后,设备会将其视为自连接,每当您调用扫描操作时,任务应用程序的状态将变为可连接应用程序,当设备连接时,它将变为已连接应用程序。在多连接场景中,在建立连接之后,调用用户\u scan \u start()会将任务\u APP state再次更改为APP \u CONNECTABLE,因此这是设备正在扫描的合理指示。
谢谢你的对话
Q2/Q3第一个URL是“找不到此页”
我需要以下功能enable slave to send data
uint8\u t measure\u start[3]={0x20、0x03、0x01};
/*写入请求*/
prf\u gatt\u write\u ntf\u ind(con\u info,0x16,prf\u CLI\u START\u ntf)//custom2通知启用
prf_gatt_write_ntf_ind(con_info, 0x13, PRF_CLI_START_NTF); //custom1 notify enable
prf_gatt_write(con_info, 0x18, measure_start, sizeof (uint8_t)*3,GATTC_WRITE_NO_RESPONSE);
现在我有个问题,
问题1:SPS主机环境变量中有多少conèu信息?
问题2:如何更改启用下一个从属服务器的con\u信息?
Hi RandyYu,
在DSP中,按照其结构,每次执行连接和sps服务发现时,与配置文件相关的数据(连接的句柄、从发现过程中发现的数据库结构以及其他信息)都存储在eviroment变量中(该变量在sps\u client\u init中启动)。在dsp中,由于其实现只支持一个连接,因此环境变量与一个SPS\u任务紧密相关。例如,当您执行对外围设备的写入时,会调用宏PRF\ u CLIENT\ u GET\ u ENV来声明该数据并填充本地spsc\ u ENV\ tag类型变量。由于它只支持一个连接,当PRF\u CLIENT\u GET\u ENV被调用时,它只检索一个spsc\u ENV\u标记,它只保存一个连接,因此只有一个con\u信息。
您可以尝试使用存储设备上可用连接的app_env变量,并可以检查spsc环境中的con_信息是如何填充的(在sps_client_enable_req_处理程序中),也许您只能使用一个环境并只更改连接信息,但这只是一个临时解决方案,因为我提到过让dsp支持多个从机needs heavy customizationand not just a tweak on the original code.
谢谢你的对话
现在我有点困惑了this process of multiple connection,does the below process is right?
->用户扫描开始
->change the APP_STATE to APP_SCANNING (APP_SCANNING is added in APP_STATE by myslef)
->go to connect the needed slave
->将APP\u状态更改为APP\u CONNECTABLE
->用户扫描完成
->连接上的用户
->用户\u sps \u启用
->向连接的从属设备发送写请求
->然后重复这个过程
Hi RandyYu,
Having multiple connections will probably need a quite different scheme in order to know the status of your device, i mean that probably when connected to the first you will have the state of your device as connected but after that you would will start scanning again. Its up to you how the application will handle its state. In the proximity monitor application for example, that handles more than one connections, when connected and scanning the application doesn't change its state to SCAN but the state remains as CONNECTED.
谢谢你的对话
1.您所说的状态是应用程序状态还是任务状态?连接后,我的任务状态设置为已连接
2.if master connected to one slave and have data exchange,can the master coninute to scanning?
3.如果要将task\u APP state的所有任务索引都设置为CONNECTABLE,如何修改ke\u state\u set(task\u APP,APP\u CONNECTABLE);
Hi RandyYu,
1我所指的状态是应用程序状态,而不是概要文件状态,如果这是您的意思的话。如果您已准备好连接到某个设备,并且正在扫描下一个设备,则应连接配置文件的状态,因为在符合配置文件状态的DSP上,会触发相应的处理程序。例如,当设备连接时有不同的处理程序,当设备处于发现状态时有不同的处理程序可用。
2我没有看到任何问题,在这方面,你可以连接到一个奴隶,并继续扫描。
三。是的,通过使用keu state\u集(application\u TASK,state\u of the\u TASK)更改任务的状态
谢谢你的对话