ad parser: started with convinient functions

This commit is contained in:
mila@ringwald.ch 2013-11-10 00:22:35 +00:00
parent fceccb23c6
commit 3430f18fef

View File

@ -44,6 +44,13 @@
#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){
context->data = ad_data;
context->length = ad_len;
@ -71,3 +78,49 @@ uint8_t * ad_iterator_get_data(ad_context_t * context){
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;
}