mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-14 00:40:57 +00:00
ad parser: started with convinient functions
This commit is contained in:
parent
fceccb23c6
commit
3430f18fef
@ -44,6 +44,13 @@
|
|||||||
|
|
||||||
#include "ad_parser.h"
|
#include "ad_parser.h"
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
IncompleteList16 = 0x02,
|
||||||
|
CompleteList16 = 0x03,
|
||||||
|
IncompleteList128 = 0x06,
|
||||||
|
CompleteList128 = 0x07
|
||||||
|
} UUID_TYPE;
|
||||||
|
|
||||||
void ad_iterator_init(ad_context_t *context, uint8_t ad_len, uint8_t * ad_data){
|
void ad_iterator_init(ad_context_t *context, uint8_t ad_len, uint8_t * ad_data){
|
||||||
context->data = ad_data;
|
context->data = ad_data;
|
||||||
context->length = ad_len;
|
context->length = ad_len;
|
||||||
@ -71,3 +78,49 @@ uint8_t * ad_iterator_get_data(ad_context_t * context){
|
|||||||
return &context->data[context->offset + 2];
|
return &context->data[context->offset + 2];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ad_data_contains_uuid16(uint8_t ad_len, uint8_t * ad_data, uint16_t uuid){
|
||||||
|
ad_context_t context;
|
||||||
|
for (ad_iterator_init(&context, ad_len, ad_data) ; ad_iterator_has_more(&context) ; ad_iterator_next(&context)){
|
||||||
|
uint8_t data_type = ad_iterator_get_data_type(&context);
|
||||||
|
uint8_t data_len = ad_iterator_get_data_len(&context);
|
||||||
|
uint8_t * data = ad_iterator_get_data(&context);
|
||||||
|
|
||||||
|
switch (data_type){
|
||||||
|
case IncompleteList16:
|
||||||
|
case CompleteList16:
|
||||||
|
// ... iterate through list of uuids
|
||||||
|
break;
|
||||||
|
case IncompleteList128:
|
||||||
|
case CompleteList128:
|
||||||
|
// ...
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ad_data_contains_uuid128(uint8_t ad_len, uint8_t * ad_data, uint8_t * uuid128){
|
||||||
|
ad_context_t context;
|
||||||
|
for (ad_iterator_init(&context, ad_len, ad_data) ; ad_iterator_has_more(&context) ; ad_iterator_next(&context)){
|
||||||
|
uint8_t data_type = ad_iterator_get_data_type(&context);
|
||||||
|
uint8_t data_len = ad_iterator_get_data_len(&context);
|
||||||
|
uint8_t * data = ad_iterator_get_data(&context);
|
||||||
|
|
||||||
|
switch (data_type){
|
||||||
|
case IncompleteList16:
|
||||||
|
case CompleteList16:
|
||||||
|
// ...
|
||||||
|
break;
|
||||||
|
case IncompleteList128:
|
||||||
|
case CompleteList128:
|
||||||
|
// ...
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user