使用ble_app_profile ble app时,可读UUID值总是不显示值

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
2个职位/ 0个新职位
最后发表
uta_lc
离线
最后看到:1年1个月前
加入:2016-05-03 07:39
使用ble_app_profile ble app时,可读UUID值总是不显示值

亲爱的DLG的支持,

我一直试图从SDK 5.0.4移植一些代码到SDK 6.0.6,但我正在努力如何初始化我自己的属性的数据库(UUID)。

我们有10字节的配置数据从闪存读取启动期间,我希望通过一个定制的UUID读回。你能告诉我如何在SDK 6.0.6中实现吗?我正在使用cust1配置文件-修改了defs和config.c等,但当我试图读取连接后的UUID时,它总是显示没有值。

我一直在使用app_XXX_enable消息(从app发送)PROFILE_ENABLE BLE配置任务,其中处理程序使用attmdb_svc_set_permission来正确初始化数据库。

然而在SDK6.0.6中,尝试做同样的事情,但总是导致有趣的行为。

你能提供一些基于ble_app_profile代码的示例代码吗?我尝试了未修改的ble_app_profile从SDK 6.0.6.427,但当读回任何可读值时,它总是返回“No value”和嗅探显示“Rcvd Read Request [Malformed packet].”。

DLG的人能不能紧急看一下这个?我们的发行日程排得很紧。

非常感谢,
uta_lc

设备:
PM_Dialog
离线
最后看到:1天13小时前
工作人员
加入:2018-02-08 11:03
嗨uta_lc,

嗨uta_lc,

有三种方法可以使用从SPI flash中存储的数据初始化属性数据库。下面的示例来自SDK 6.0.6.427的ble_app_peripheral示例。

  1. 您可以将存储的数据添加到您的特征值中,如下所示:

[svc1_idx_adc_val_1_val] = {svc1_adc_val_1_uuid_128, att_uuid_128_len, perm (rd, enable) | perm (ntf, enable),
DEF_SVC1_ADC_VAL_1_CHAR_LEN, <长度>,<价值>}

取值为存储的数据,长度为数据的长度。请注意,应该在初始化数据库之前从SPI flash读取存储的值。因此,您应该在执行default_app_on_set_dev_config_complete()回调函数的app_db_init_start()之前读取数据。

  1. 您可以发送一个CUSTS1_VAL_SET_REQ消息,因此将执行custs1_val_set_req_handler。attmdb_att_set_value()会将数据库中的值从flash更新为特征的值。通过这种方式,可以将数据库更新到cust1_task中。
  1. 你可以读取SPI flash的数据,然后执行attmdb_att_set_value(custs1_env->shdl + param->句柄,param->长度,0,(uint8_t *)¶m->值);不发送CUSTS1_VAL_SET_REQ消息。

谢谢,PM_Dialog