你好,对话框,
最近我开始使用SDK 6.0.10,在这里我注意到一些问题。
在示例ble_app_peripheral,没有在读命令中读取数据,而能够在通知命令中读取数据。
谢谢
嗨rajan22,
很高兴你开始与我们的SKK6和DA14585产品合作,但你能试着澄清你的问题吗?如果您能提供更多关于您的问题的信息,将是非常有帮助的。
谢谢,PM_Dialog
你好,
使用DA14586使用SDK 6.0.10.511测试ble_app_peripheral示例。
步骤1。调试ble_app_peripheral程序
步骤2。连接到BLG-PRPH
步骤3。在主服务DEF_SVC1_UUID_128中写入0x01形式的特征DEF_SVC1_CTRL_POINT_UUID_128
步骤4。通过通知命令从特征DEF_SVC1_ADC_VAL_1_UUID_128读取数据,并成功获得计数器数据(虚拟ADC数据),这是程序的默认设置。
第5步。试图通过读取命令形式的特征DEF_SVC1_ADC_VAL_1_UUID_128读取数据,但不像在SDK 6.0.4中获取数据那样获取数据。
我们的新产品有一个版本为6.0.10.511的新SDK。
为什么我们不能在读取命令中获得数据。
在我们的应用程序中,使用read命令获取传感器信息,使用notify命令读取传感器数据。这就是为什么我们需要读取和通知这两个命令。
一些更多的细节,
根据应用程序实现
首先,我们需要启用从控制角度然后user_custs1_ctrl_wr_ind_handler将调用,它会启动计时器,计时器事件app_adcval1_timer_cb_handler将继续发送数据到内核是否我们读取数据,持续到残疾人的控制点。
void app_adcval1_timer_cb_handler() {struct custs1_val_ntf_ind_req *req = KE_MSG_ALLOC_DYN(CUSTS1_VAL_NTF_REQ, prf_get_task_from_id(TASK_ID_CUSTS1), TASK_APP, custs1_val_ntf_ind_req, DEF_CUST1_ADC_VAL_1_CHAR_LEN);// ADC值被采样静态uint16_t采样;Sample = (Sample <= 0xffff) ?(sample + 1): 0;/ /请求- > conhdl = app_env - > conhdl;申请- >处理= CUST1_IDX_ADC_VAL_1_VAL;申请- >长度= DEF_CUST1_ADC_VAL_1_CHAR_LEN;申请- >通知= true;顺利进行,memcpy(请求- >价值DEF_CUST1_ADC_VAL_1_CHAR_LEN);ke_msg_send(要求的); if (ke_state_get(TASK_APP) == APP_CONNECTED) { // Set it once again until Stop command is received in Control Characteristic timer_used = app_easy_timer(APP_PERIPHERAL_CTRL_TIMER_DELAY, app_adcval1_timer_cb_handler); } }
还有一个类似的问题在这里我确信他们使用的是6.0.6或以上版本。
SDK6.0.10的ble_app_peripheral示例中的ADC 1特性同时启用了读取和通知权限。请检查user_custs1_def.c中的custs1_att_db。当试图从对等设备中读取特征时,你期望得到什么?当在对端设备中启用通知时,你能看到ADC 1的更新吗?
当在对端设备中启用通知时,你能看到ADC 1的更新吗?是的,我能够得到虚拟ADC数据(一个计数器值)。
当试图从对等设备中读取特征时,你期望得到什么?我希望得到持续的计数器数据时阅读命令。
让我查一下,然后再回复你。
不能读取ADC数据的原因是,当通过通知发送数据时,CUST1_IDX_ADC_VAL_1_VAL没有在数据库中更新。这不是SKD漏洞!为了更新数据库,除了CUSTS1_VAL_NTF_REQ之外,还应该发送CUSTS1_VAL_SET_REQ,以便触发custs1_val_set_req_handler()。如果检查这个处理程序的源代码,就会发现执行了attmdb_att_set_value()。请尝试下面的代码片段:
void app_adcval1_timer_cb_handler() {struct custs1_val_ntf_ind_req *req = KE_MSG_ALLOC_DYN(CUSTS1_VAL_NTF_REQ, prf_get_task_from_id(TASK_ID_CUSTS1), TASK_APP, custs1_val_ntf_ind_req, DEF_SVC1_ADC_VAL_1_CHAR_LEN);struct custs1_val_set_req *req_set = KE_MSG_ALLOC_DYN(custs1_val_set_req, prf_get_task_from_id(TASK_ID_CUSTS1), TASK_APP, custs1_val_set_req, DEF_SVC1_ADC_VAL_1_CHAR_LEN);//采样ADC值的静态uint16_t采样__attribute__((section("retention_mem_area0"), zero_init));Sample = (Sample <= 0xffff) ?(sample + 1): 0;/ /请求- > conhdl = app_env - > conhdl;申请- >处理= SVC1_IDX_ADC_VAL_1_VAL;申请- >长度= DEF_SVC1_ADC_VAL_1_CHAR_LEN;申请- >通知= true;顺利进行,memcpy(请求- >价值DEF_SVC1_ADC_VAL_1_CHAR_LEN); req_set->handle = SVC1_IDX_ADC_VAL_1_VAL; req_set->length = DEF_SVC1_ADC_VAL_1_CHAR_LEN; memcpy(req_set->value, &sample, DEF_SVC1_ADC_VAL_1_CHAR_LEN); ke_msg_send(req); ke_msg_send(req_set); if (ke_state_get(TASK_APP) == APP_CONNECTED) { // Set it once again until Stop command is received in Control Characteristic timer_used = app_easy_timer(APP_PERIPHERAL_CTRL_TIMER_DELAY, app_adcval1_timer_cb_handler); } }
亲爱的团队对话框,
当使用struct custs1_val_set_req时,req_set->conidx参数不相关?如果是,那么如何设置值“所有连接”-使用GAP_INVALID_CONIDX触发硬故障。
嗨bojanpotocnik,
谢谢你的评论。你的问题是旧的,已经关闭了,你能再提出一张新的论坛门票吗?另外,如果您能澄清您的问题,将是非常有帮助的。
嗨rajan22,
很高兴你开始与我们的SKK6和DA14585产品合作,但你能试着澄清你的问题吗?如果您能提供更多关于您的问题的信息,将是非常有帮助的。
谢谢,PM_Dialog
你好,
使用DA14586使用SDK 6.0.10.511测试ble_app_peripheral示例。
步骤1。调试ble_app_peripheral程序
步骤2。连接到BLG-PRPH
步骤3。在主服务DEF_SVC1_UUID_128中写入0x01形式的特征DEF_SVC1_CTRL_POINT_UUID_128
步骤4。通过通知命令从特征DEF_SVC1_ADC_VAL_1_UUID_128读取数据,并成功获得计数器数据(虚拟ADC数据),这是程序的默认设置。
第5步。试图通过读取命令形式的特征DEF_SVC1_ADC_VAL_1_UUID_128读取数据,但不像在SDK 6.0.4中获取数据那样获取数据。
我们的新产品有一个版本为6.0.10.511的新SDK。
为什么我们不能在读取命令中获得数据。
在我们的应用程序中,使用read命令获取传感器信息,使用notify命令读取传感器数据。这就是为什么我们需要读取和通知这两个命令。
谢谢
一些更多的细节,
根据应用程序实现
首先,我们需要启用从控制角度然后user_custs1_ctrl_wr_ind_handler将调用,它会启动计时器,计时器事件app_adcval1_timer_cb_handler将继续发送数据到内核是否我们读取数据,持续到残疾人的控制点。
还有一个类似的问题在这里我确信他们使用的是6.0.6或以上版本。
嗨rajan22,
SDK6.0.10的ble_app_peripheral示例中的ADC 1特性同时启用了读取和通知权限。请检查user_custs1_def.c中的custs1_att_db。当试图从对等设备中读取特征时,你期望得到什么?当在对端设备中启用通知时,你能看到ADC 1的更新吗?
谢谢,PM_Dialog
你好,
当在对端设备中启用通知时,你能看到ADC 1的更新吗?是的,我能够得到虚拟ADC数据(一个计数器值)。
当试图从对等设备中读取特征时,你期望得到什么?我希望得到持续的计数器数据时阅读命令。
谢谢
嗨rajan22,
让我查一下,然后再回复你。
谢谢,PM_Dialog
嗨rajan22,
不能读取ADC数据的原因是,当通过通知发送数据时,CUST1_IDX_ADC_VAL_1_VAL没有在数据库中更新。这不是SKD漏洞!为了更新数据库,除了CUSTS1_VAL_NTF_REQ之外,还应该发送CUSTS1_VAL_SET_REQ,以便触发custs1_val_set_req_handler()。如果检查这个处理程序的源代码,就会发现执行了attmdb_att_set_value()。请尝试下面的代码片段:
谢谢,PM_Dialog
亲爱的团队对话框,
当使用struct custs1_val_set_req时,req_set->conidx参数不相关?如果是,那么如何设置值“所有连接”-使用GAP_INVALID_CONIDX触发硬故障。
嗨bojanpotocnik,
谢谢你的评论。你的问题是旧的,已经关闭了,你能再提出一张新的论坛门票吗?另外,如果您能澄清您的问题,将是非常有帮助的。
谢谢,PM_Dialog