mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-01-30 15:32:41 +00:00
sdp_util: use uint32_t and bool
This commit is contained in:
parent
a0a51006bc
commit
7971cf19fc
@ -116,7 +116,7 @@ uint32_t de_get_data_size(const uint8_t * header){
|
||||
return result;
|
||||
}
|
||||
|
||||
int de_get_len(const uint8_t *header){
|
||||
uint32_t de_get_len(const uint8_t *header){
|
||||
return de_get_header_size(header) + de_get_data_size(header);
|
||||
}
|
||||
|
||||
@ -133,17 +133,17 @@ uint32_t de_get_len_safe(const uint8_t * header, uint32_t size){
|
||||
}
|
||||
|
||||
// @return OK, if UINT16 value was read
|
||||
int de_element_get_uint16(const uint8_t * element, uint16_t * value){
|
||||
if (de_get_size_type(element) != DE_SIZE_16) return 0;
|
||||
bool de_element_get_uint16(const uint8_t * element, uint16_t * value){
|
||||
if (de_get_size_type(element) != DE_SIZE_16) return false;
|
||||
*value = big_endian_read_16(element, de_get_header_size(element));
|
||||
return 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
// @return: element is valid UUID
|
||||
int de_get_normalized_uuid(uint8_t *uuid128, const uint8_t *element){
|
||||
bool de_get_normalized_uuid(uint8_t *uuid128, const uint8_t *element){
|
||||
de_type_t uuidType = de_get_element_type(element);
|
||||
de_size_t uuidSize = de_get_size_type(element);
|
||||
if (uuidType != DE_UUID) return 0;
|
||||
if (uuidType != DE_UUID) return false;
|
||||
uint32_t shortUUID;
|
||||
switch (uuidSize){
|
||||
case DE_SIZE_16:
|
||||
@ -154,12 +154,12 @@ int de_get_normalized_uuid(uint8_t *uuid128, const uint8_t *element){
|
||||
break;
|
||||
case DE_SIZE_128:
|
||||
(void)memcpy(uuid128, element + 1, 16);
|
||||
return 1;
|
||||
return true;
|
||||
default:
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
uuid_add_bluetooth_prefix(uuid128, shortUUID);
|
||||
return 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
// @return 0 if no UUID16 or UUID32 is present, and UUID32 otherwise
|
||||
@ -358,7 +358,7 @@ static void sdp_attribute_list_traverse_sequence(uint8_t * element, sdp_attribut
|
||||
// attribute ID in AttributeIDList
|
||||
// context { result, attributeID }
|
||||
struct sdp_context_attributeID_search {
|
||||
int result;
|
||||
bool result;
|
||||
uint16_t attributeID;
|
||||
};
|
||||
static int sdp_traversal_attributeID_search(uint8_t * element, de_type_t type, de_size_t size, void *my_context){
|
||||
@ -367,14 +367,14 @@ static int sdp_traversal_attributeID_search(uint8_t * element, de_type_t type, d
|
||||
switch (size) {
|
||||
case DE_SIZE_16:
|
||||
if (big_endian_read_16(element, 1) == context->attributeID) {
|
||||
context->result = 1;
|
||||
context->result = true;
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
case DE_SIZE_32:
|
||||
if ((big_endian_read_16(element, 1) <= context->attributeID)
|
||||
&& (context->attributeID <= big_endian_read_16(element, 3))) {
|
||||
context->result = 1;
|
||||
context->result = true;
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
@ -384,9 +384,9 @@ static int sdp_traversal_attributeID_search(uint8_t * element, de_type_t type, d
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sdp_attribute_list_constains_id(uint8_t *attributeIDList, uint16_t attributeID){
|
||||
bool sdp_attribute_list_constains_id(uint8_t *attributeIDList, uint16_t attributeID){
|
||||
struct sdp_context_attributeID_search attributeID_search;
|
||||
attributeID_search.result = 0;
|
||||
attributeID_search.result = false;
|
||||
attributeID_search.attributeID = attributeID;
|
||||
de_traverse_sequence(attributeIDList, sdp_traversal_attributeID_search, &attributeID_search);
|
||||
return attributeID_search.result;
|
||||
@ -444,7 +444,7 @@ struct sdp_context_filter_attributes {
|
||||
uint16_t maxBytes;
|
||||
uint16_t usedBytes;
|
||||
uint8_t *attributeIDList;
|
||||
int complete;
|
||||
bool complete;
|
||||
};
|
||||
|
||||
// copy data with given start offset and max bytes, returns OK if all data has been copied
|
||||
@ -483,7 +483,7 @@ static int sdp_traversal_filter_attributes(uint16_t attributeID, uint8_t * attri
|
||||
|
||||
int ok = spd_append_range(context, 3, idBuffer);
|
||||
if (!ok) {
|
||||
context->complete = 0;
|
||||
context->complete = false;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@ -497,13 +497,13 @@ static int sdp_traversal_filter_attributes(uint16_t attributeID, uint8_t * attri
|
||||
|
||||
int ok = spd_append_range(context, attribute_len, attributeValue);
|
||||
if (!ok) {
|
||||
context->complete = 0;
|
||||
context->complete = false;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sdp_filter_attributes_in_attributeIDList(uint8_t *record, uint8_t *attributeIDList, uint16_t startOffset, uint16_t maxBytes, uint16_t *usedBytes, uint8_t *buffer){
|
||||
bool sdp_filter_attributes_in_attributeIDList(uint8_t *record, uint8_t *attributeIDList, uint16_t startOffset, uint16_t maxBytes, uint16_t *usedBytes, uint8_t *buffer){
|
||||
|
||||
struct sdp_context_filter_attributes context;
|
||||
context.buffer = buffer;
|
||||
@ -511,7 +511,7 @@ int sdp_filter_attributes_in_attributeIDList(uint8_t *record, uint8_t *attribute
|
||||
context.usedBytes = 0;
|
||||
context.startOffset = startOffset;
|
||||
context.attributeIDList = attributeIDList;
|
||||
context.complete = 1;
|
||||
context.complete = true;
|
||||
|
||||
sdp_attribute_list_traverse_sequence(record, sdp_traversal_filter_attributes, &context);
|
||||
|
||||
@ -536,7 +536,7 @@ static int sdp_traversal_get_filtered_size(uint16_t attributeID, uint8_t * attri
|
||||
return 0;
|
||||
}
|
||||
|
||||
int spd_get_filtered_size(uint8_t *record, uint8_t *attributeIDList){
|
||||
uint16_t spd_get_filtered_size(uint8_t *record, uint8_t *attributeIDList){
|
||||
struct sdp_context_get_filtered_size context;
|
||||
context.size = 0;
|
||||
context.attributeIDList = attributeIDList;
|
||||
@ -574,12 +574,12 @@ uint8_t * sdp_get_attribute_value_for_attribute_id(uint8_t * record, uint16_t at
|
||||
struct sdp_context_set_attribute_for_id {
|
||||
uint16_t attributeID;
|
||||
uint32_t attributeValue;
|
||||
uint8_t attributeFound;
|
||||
bool attributeFound;
|
||||
};
|
||||
static int sdp_traversal_set_attribute_for_id(uint16_t attributeID, uint8_t * attributeValue, de_type_t attributeType, de_size_t size, void *my_context){
|
||||
struct sdp_context_set_attribute_for_id * context = (struct sdp_context_set_attribute_for_id *) my_context;
|
||||
if (attributeID == context->attributeID) {
|
||||
context->attributeFound = 1;
|
||||
context->attributeFound = true;
|
||||
switch (size){
|
||||
case DE_SIZE_8:
|
||||
if (attributeType != DE_NIL){
|
||||
@ -600,11 +600,11 @@ static int sdp_traversal_set_attribute_for_id(uint16_t attributeID, uint8_t * at
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
uint8_t sdp_set_attribute_value_for_attribute_id(uint8_t * record, uint16_t attributeID, uint32_t value){
|
||||
bool sdp_set_attribute_value_for_attribute_id(uint8_t * record, uint16_t attributeID, uint32_t value){
|
||||
struct sdp_context_set_attribute_for_id context;
|
||||
context.attributeID = attributeID;
|
||||
context.attributeValue = value;
|
||||
context.attributeFound = 0;
|
||||
context.attributeFound = false;
|
||||
sdp_attribute_list_traverse_sequence(record, sdp_traversal_set_attribute_for_id, &context);
|
||||
return context.attributeFound;
|
||||
}
|
||||
@ -644,10 +644,10 @@ int sdp_record_contains_UUID128(uint8_t *record, uint8_t *uuid128){
|
||||
// context { result, record }
|
||||
struct sdp_context_match_pattern {
|
||||
uint8_t * record;
|
||||
int result;
|
||||
bool result;
|
||||
};
|
||||
|
||||
int sdp_traversal_match_pattern(uint8_t * element, de_type_t de_type, de_size_t de_size, void *my_context){
|
||||
static int sdp_traversal_match_pattern(uint8_t * element, de_type_t de_type, de_size_t de_size, void *my_context){
|
||||
UNUSED(de_type);
|
||||
UNUSED(de_size);
|
||||
|
||||
@ -655,15 +655,15 @@ int sdp_traversal_match_pattern(uint8_t * element, de_type_t de_type, de_size_t
|
||||
uint8_t normalizedUUID[16];
|
||||
uint8_t uuidOK = de_get_normalized_uuid(normalizedUUID, element);
|
||||
if (!uuidOK || !sdp_record_contains_UUID128(context->record, normalizedUUID)){
|
||||
context->result = 0;
|
||||
context->result = false;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
int sdp_record_matches_service_search_pattern(uint8_t *record, uint8_t *serviceSearchPattern){
|
||||
bool sdp_record_matches_service_search_pattern(uint8_t *record, uint8_t *serviceSearchPattern){
|
||||
struct sdp_context_match_pattern context;
|
||||
context.record = record;
|
||||
context.result = 1;
|
||||
context.result = true;
|
||||
de_traverse_sequence(serviceSearchPattern, sdp_traversal_match_pattern, &context);
|
||||
return context.result;
|
||||
}
|
||||
|
@ -96,7 +96,7 @@ typedef enum {
|
||||
|
||||
// MARK: DateElement
|
||||
void de_dump_data_element(const uint8_t * record);
|
||||
int de_get_len(const uint8_t * header);
|
||||
uint32_t de_get_len(const uint8_t * header);
|
||||
|
||||
|
||||
// @note returned "string" is not NULL terminated
|
||||
@ -105,10 +105,12 @@ const uint8_t * de_get_string(const uint8_t * element);
|
||||
de_size_t de_get_size_type(const uint8_t * header);
|
||||
de_type_t de_get_element_type(const uint8_t * header);
|
||||
uint32_t de_get_header_size(const uint8_t * header);
|
||||
int de_element_get_uint16(const uint8_t * element, uint16_t * value);
|
||||
// returns true if uint16 was read
|
||||
bool de_element_get_uint16(const uint8_t * element, uint16_t * value);
|
||||
uint32_t de_get_data_size(const uint8_t * header);
|
||||
uint32_t de_get_uuid32(const uint8_t * element);
|
||||
int de_get_normalized_uuid(uint8_t *uuid128, const uint8_t *element);
|
||||
// returns true if uint16 was read
|
||||
bool de_get_normalized_uuid(uint8_t *uuid128, const uint8_t *element);
|
||||
void de_create_sequence(uint8_t * header);
|
||||
void de_store_descriptor_with_len(uint8_t * header, de_type_t type, de_size_t size, uint32_t len);
|
||||
uint8_t * de_push_sequence(uint8_t *sequence);
|
||||
@ -138,12 +140,11 @@ void des_iterator_next(des_iterator_t * it);
|
||||
// MARK: SDP
|
||||
uint16_t sdp_append_attributes_in_attributeIDList(uint8_t *record, uint8_t *attributeIDList, uint16_t startOffset, uint16_t maxBytes, uint8_t *buffer);
|
||||
uint8_t * sdp_get_attribute_value_for_attribute_id(uint8_t * record, uint16_t attributeID);
|
||||
uint8_t sdp_set_attribute_value_for_attribute_id(uint8_t * record, uint16_t attributeID, uint32_t value);
|
||||
int sdp_record_matches_service_search_pattern(uint8_t *record, uint8_t *serviceSearchPattern);
|
||||
int spd_get_filtered_size(uint8_t *record, uint8_t *attributeIDList);
|
||||
int sdp_filter_attributes_in_attributeIDList(uint8_t *record, uint8_t *attributeIDList, uint16_t startOffset, uint16_t maxBytes, uint16_t *usedBytes, uint8_t *buffer);
|
||||
int sdp_attribute_list_constains_id(uint8_t *attributeIDList, uint16_t attributeID);
|
||||
int sdp_traversal_match_pattern(uint8_t * element, de_type_t attributeType, de_size_t size, void *my_context);
|
||||
bool sdp_set_attribute_value_for_attribute_id(uint8_t * record, uint16_t attributeID, uint32_t value);
|
||||
bool sdp_record_matches_service_search_pattern(uint8_t *record, uint8_t *serviceSearchPattern);
|
||||
uint16_t spd_get_filtered_size(uint8_t *record, uint8_t *attributeIDList);
|
||||
bool sdp_filter_attributes_in_attributeIDList(uint8_t *record, uint8_t *attributeIDList, uint16_t startOffset, uint16_t maxBytes, uint16_t *usedBytes, uint8_t *buffer);
|
||||
bool sdp_attribute_list_constains_id(uint8_t *attributeIDList, uint16_t attributeID);
|
||||
|
||||
/*
|
||||
* @brief Returns service search pattern for given UUID-16
|
||||
|
Loading…
x
Reference in New Issue
Block a user