hi dialog_support,
我在我的项目中使用BLE_APP_PERITERAL参考示例。我添加了“通知”的特征,我想每当我在BLE_Scanner应用程序中启用“通知”特征时更新数据。这是完美的,但问题是如果我禁用“通知”那么我也可以在BLE_Scanner应用程序中获取数据。不理解我错了。有人可以建议我这个问题是什么?
嗨rajapurerohit,
嗯,当您启用和禁用通知时,将触发Gattc_Write_cmd_ind_handler()并将客户端配置特性与相应的值触发,实际更新值的函数是:
if(status == prf_err_ok){//设置客户端特征配置值status = attmdb_att_set_value(param->句柄,param->长度,(uint8_t *)&(param->值[0]));}
因此,当禁用通知设置为零时,可以检查此值。如果该值为零当您发送消息以更新值并发送通知时,则代码应通过此函数ATTMDB_ATT_GET_VALUE(CFG_HDL,长度,&CFG_VAL)检查CCC是否已启用或不检查CCC;如果CFG_HDL中的值具有PRF_CLI_START_NTF值,则设备将继续发送通知。所以我想错误是在那里的某个地方。ble_app_peripheral还使用通知来更新ADC值,因此您可以查看该示例。
谢谢mt_dialog.
嗨rajapurerohit,
嗯,当您启用和禁用通知时,将触发Gattc_Write_cmd_ind_handler()并将客户端配置特性与相应的值触发,实际更新值的函数是:
if(status == prf_err_ok)
{
//设置客户端特征配置值
status = attmdb_att_set_value(param->句柄,param->长度,(uint8_t *)&(param->值[0]));
}
因此,当禁用通知设置为零时,可以检查此值。如果该值为零当您发送消息以更新值并发送通知时,则代码应通过此函数ATTMDB_ATT_GET_VALUE(CFG_HDL,长度,&CFG_VAL)检查CCC是否已启用或不检查CCC;如果CFG_HDL中的值具有PRF_CLI_START_NTF值,则设备将继续发送通知。所以我想错误是在那里的某个地方。ble_app_peripheral还使用通知来更新ADC值,因此您可以查看该示例。
谢谢mt_dialog.