DA14580服务与特征值的具体应用

阅读这篇文章前请先阅读蓝牙协议服务与特征值这篇文章,会更容易理解

如图1-1所示,下面定义了一个属性数组

 

 

 

 

 

 

 

 

 

                               图1-1

uint8_t uuid; 即为特征值的UUID,也为属性的类型。

uint8_t uuid size; 即为特征值的UUID的长度

uint16_t perm; 即为特征值的值类型和值权限

att_size_t max_length;特征值声明的最大长度

att_size_t length;       特征值声明的当前长度

 如图1-2为用户自定义服务,阅读过蓝牙协议服务与特征值这篇文章的人可以看出,这个类似于我是服务A的开头,它包含了本身的权限以及自定义UUID。

static uint16_t att_decl_svc       = ATT_DECL_PRIMARY_SERVICE;

                             图1-2

根据以上属性数组,可以对图1-3以及1-4有个提前认识。阅读过蓝牙协议服务与特征值这篇文章的同学可以把图1-4的att_decl_char看作是特征值1的开头,PERM(RD, ENABLE)这个为特征值1开头的权限。

根据这个结构体custs1_adc_val_1_char可以看到里面包含了权限、handle,以及类型,其中ATT_CHAR_PROP_NTF可以看作特征值的值权限,handle特征值1的值handle,DEF_CUST1_ADC_VAL_1_UUID_16

可以看作特征值1的值类型。图1-4可以看作特征值1的值,这个值包含了图1-3中值类型,特征值1的值本身的权限以及值,值默认为NULL。图1-5可以看作特征值的特殊操作,包含了本身的权限以及以及用户描述。

// ADC Value 1 Characteristic Declaration
[CUST1_IDX_ADC_VAL_1_CHAR] = {(uint8_t*)&att_decl_char, ATT_UUID_16_LEN, PERM(RD, ENABLE),
sizeof(custs1_adc_val_1_char), sizeof(custs1_adc_val_1_char), (uint8_t*)&custs1_adc_val_1_char},

                                  图1-3

                                 图1-4

根据图1-5可以知道这两个变量att_decl_cfg、att_decl_user_desc的含义。

                                图1-5

                                图1-6

 未完,待续写。。。。。。。。。。。。。。。。。。。

原文地址:https://www.cnblogs.com/haibian/p/11737294.html