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
未完,待续写。。。。。。。。。。。。。。。。。。。