sample128协议模板提供了一个很好的示例,它创建了一个包含一些具有不同属性的特征的服务,包括实现客户机特征配置描述符的Notify属性。添加其他描述符(如特征用户描述和特征表示格式)也很好。
为了将这些添加到我们的服务中,我们尝试为我们的服务的第一个特征创建一个演示格式。按照为特征和CCCD添加属性的相同思想,我们添加了attmdb_add_attribute调用:
//为数据库添加特征表示格式属性
Status = attmdb_add_attribute(datalogging_env.datalogging_shdl,
(struct prf_char_pres_fmt), //数据大小7字节
ATT_UUID_16_LEN, //表示格式类型ID的大小
(uint8_t*) &att_decl_chpf, // 0x2904特征表示格式的UUID
PERM(RD, ENABLE), //权限
&(val_hdl) //处理值属性
);
设置属性值:
//设置Interval的显示格式
struct prf_char_pres_fmt datalogging_interval_pf;
Memset (&datalogging_interval_pf, 0, sizeof(struct prf_char_pres_fmt));
datalogging_interval_pf。格式= APP_DATALOGGING_INTERVAL_PF;
Status = attmdb_att_set_value(val_hdl, sizeof(struct prf_char_pres_fmt), (uint8_t *)&datalogging_interval_pf);
并在调用attmdb_add_service时更新UUID16属性声明大小(+1)/总数据(prf_char_pres结构体的+7字节)大小的数量。
但是由于某些原因,这将导致其余的特征声明无法工作,因为在使用测试应用程序时,它们不会出现在服务中。有实现表示格式和/或用户描述描述符的例子吗?
谢谢!
我忽略的一件事是attmdb_att_set_value调用,而不是val_hdl的设置值应该指向附加描述符从开始句柄的偏移量。
其余的特征确实显示出来了,但我没有看到格式说明符有任何更新。还可以看到描述符和格式描述符的示例。
嗨,Sanscroft,你读过AN-B-029教程:创建自定义档案吗?这涉及到很多关于样本的细节…本教程将介绍您所描述的问题。BR JE_Dialog