亲爱的对话框
首先,我会描述我的项目,我的从属是SNM模块,在连接之后,Master应该将请求写入从属,然后传感器数据是传输的。
其次,我的主人从DSP项目修改。
Q1:当主站连接到Slave_1时,主站向其发送写请求(我将代码放在user_sps_client_enable_cfm_handler中)。然后主站可以接收传感器数据。
然后连接到slave_2,但主站无法将请求写入slave_2。
在调试后,我发现连接到slave_1后,然后主更改为sps_client_connection。
所以我想问一下,如何处理sps_client_connected(我的意思是设置它?连接的slave_1或连接所有从属的)和app_connectable?或者是由其他原因引起的。
Q2:当主站连接到SLAVE_1并具有数据传输时,可以掌握发送控制CMD(通知)到SLAVE_2?
Q3:可以同时使用Slave_1和Slave_2发送数据吗?或者必须通过转动将数据转换为更改Slave_1至Slave_2
Q4:你有更好的方法检查主站是扫描状态吗?
谢谢你的回复
设备:
嗨兰迪宇,
Q1。关于SPS_CLIENT_CONNECTED只是应用程序检查的配置文件的状态,以便知道设备是否已连接。建立连接时,调用user_on_connection回调以通知应用程序,在user_on_connection函数中,app_prf_enable()函数通过,并启用所有项目涉及的配置文件。在DSP项目中,由于DSP配置文件是唯一一个现有的配置文件,App_prf_enable()仅呼叫特定连接的user_sps_enable()。当在客户端中启用配置文件时,启动中央的发现过程,当发现过程结束时,DSPS客户端将应用程序的状态置于SPS_CLIENT_CONNECTION中。在将设备设置为连接时,在常规应用程序中取决于用户应用程序。
Q2。Q3。关于多个连接,如本帖子所述http://support.dialog-semicondiondiond.com/ multiple-slaveda14580-connection ...DSP不支持在不同外设上的多个连接,您需要重型自定义,以便实现这样的内容,处理sps_client_connected不是您的问题。DSP只有一个连接(Conidx 0,这是您所做的第一个连接)。请检查以下帖子http://support.dialog-semicondiondiond.com/ multiple-slaveda14580-connection ...关于修改一个人应该考虑以便使用DSP执行多次发送。
Q4。由于DSP仅支持一个连接,因此连接后,设备将其视为自连接,只要调用扫描操作,任务_App的状态就会成为App_connectable并且当设备将其连接到App_connection时,它会更改。在一个多连接方案中,连接后,将user_scan_start()的调用再次将Task_App状态更改为App_Connectable,因此该设备扫描的公平指示。
谢谢mt_dialog.
Q2 / Q3第一个URL是“无法找到此页面”
我需要以下函数来启用从站发送数据
UINT8_T METIOL_START [3] = {0x20,0x03,0x01};
/ *写请求* /
prf_gatt_write_ntf_ind(con_info,0x16,prf_cli_start_ntf);// custom2通知启用
prf_gatt_write_ntf_ind(con_info,0x13,prf_cli_start_ntf);// custom1通知启用
prf_gatt_write(con_info,0x18,measule_start,sizeof(uint8_t)* 3,gattc_write_no_response);
现在我有一个问题,
Q1:SPS主机环境变量中有多少CON_INFO?
Q2:如何更改con_info以启用下一个奴隶?
嗨兰迪宇,
在DSP中,正如它的结构化,每次执行连接和SPS服务发现时,与配置文件相关的数据(连接的处理程序,从发现过程中发现的数据库结构以及其他信息)都是存储在一个反向变量中(在SPS_CLIENT_INIT中启动该变量)。在DSP中,它实现了仅支持一个连接的连接,即环境变量与一个SPS_TASK密切相关。当您执行例如写入外设时,调用宏PRF_CLIENT_GET_ENV以便索引索取数据并填写本地SPSC_ENV_TAG类型变量。由于它仅在称为PRF_Client_Get_Env时仅支持一个连接,它只被称为它只需重新编制一个SPSC_ENV_TAG,它们只能只包含一个连接只有一个CON_INFO。
您可以尝试使用存储在设备上的可用连接的App_Env变量,您可以检查填充SPSC环境中的Con_Info(在SPS_CLIENT_ENABLE_REQ_HANDLLER中),也许您只能使用一个环境并仅更改连接信息,但这只是自临时解决方案以来我提到的是,DSP支持多个奴隶需要沉重的定制而不仅仅是在原始代码上的调整。
谢谢mt_dialog.
现在我对这个多次连接的过程有点混乱,下面的过程是对吗?
- > user_scan_start.
- >将app_state更改为app_scanning(App_scanning由MySLEF的App_state添加)
- >转到连接所需的奴隶
- >将app_state更改为app_connectable
- > user_on_scanning_Completed.
- > user_on_connection.
- > user_sps_enable.
- >向连接的从属发送写请求
- >然后重复此过程
嗨兰迪宇,
拥有多个连接可能需要一个完全不同的方案才能知道设备的状态,我的意思是,当连接到第一个时可能会将您的设备状态有连接,但在此之后,您将再次开始扫描。这取决于申请如何处理其州。例如,在接近监视器应用中,处理多个连接时,当连接和扫描时,应用程序不会将其状态更改为扫描,但状态保持为连接。
谢谢mt_dialog.
1.您所说的状态是应用程序状态或任务状态?当连接后,我的任务状态设置为连接。
2.如果主站连接到一个从站并具有数据交换,可以扫描主北峰吗?
3.如果我想将Task_App状态的所有任务索引设置为可连接,我如何修改Ke_State_Set(Task_App,App_connectable);
嗨兰迪宇,
1.我所指的状态是应用程序状态而不是配置文件状态,如果这是你的意思。如果您已经连接到设备,并且您正在扫描下一个扫描配置文件的状态,因为在触发配置文件状态的DSP上,因此触发了相应的处理程序。例如,当设备连接时,存在不同的处理程序,并且当设备处于发现状态时可用的不同的处理程序。
2.我没有看到任何问题,可以连接到一个从站并继续扫描。
3.是,使用ke_state_set更改任务的状态(application_task,state_of_the_task)
谢谢mt_dialog.