uint32_t sdp_get_service_record_handle(uint8_t * record) { uint8_t * serviceRecordHandleAttribute = sdp_get_attribute_value_for_attribute_id(record, SDP_ServiceRecordHandle); if (!serviceRecordHandleAttribute) return 0; if (de_get_element_type(serviceRecordHandleAttribute) != DE_UINT) return 0; if (de_get_size_type(serviceRecordHandleAttribute) != DE_SIZE_32) return 0; return READ_NET_32(serviceRecordHandleAttribute, 1); }
static char * get_string_from_data_element(uint8_t * element){ de_size_t de_size = de_get_size_type(element); int pos = de_get_header_size(element); int len = 0; switch (de_size){ case DE_SIZE_VAR_8: len = element[1]; break; case DE_SIZE_VAR_16: len = big_endian_read_16(element, 1); break; default: break; } char * str = (char*)malloc(len+1); memcpy(str, &element[pos], len); str[len] ='\0'; return str; }