From 3430f18fef7c86ac5b9767cf1b81d6039269d416 Mon Sep 17 00:00:00 2001 From: "mila@ringwald.ch" Date: Sun, 10 Nov 2013 00:22:35 +0000 Subject: [PATCH] ad parser: started with convinient functions --- example/libusb/ad_parser.c | 53 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/example/libusb/ad_parser.c b/example/libusb/ad_parser.c index f8e4b9873..db4146ac2 100644 --- a/example/libusb/ad_parser.c +++ b/example/libusb/ad_parser.c @@ -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; +} +