mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-21 12:40:42 +00:00
sdp_parser: rename SDP_QUERY_ATTRIBUTE_VALUE -> SDP_QUERY_ATTRIBUTE_BYTE. Use SDP_QUERY_ATTRIBUTE_VALUE for daemon events
This commit is contained in:
parent
a874746709
commit
4de250b4e0
@ -326,17 +326,17 @@ static void handle_sdp_client_query_result(uint8_t packet_type, uint8_t *packet,
|
||||
switch (packet[0]){
|
||||
case SDP_QUERY_ATTRIBUTE_VALUE:
|
||||
// Handle new SDP record
|
||||
if (sdp_query_attribute_value_event_get_record_id(packet) != record_id) {
|
||||
record_id = sdp_query_attribute_value_event_get_record_id(packet);
|
||||
if (sdp_query_attribute_byte_event_get_record_id(packet) != record_id) {
|
||||
record_id = sdp_query_attribute_byte_event_get_record_id(packet);
|
||||
printf("SDP Record: Nr: %d\n", record_id);
|
||||
}
|
||||
|
||||
if (sdp_query_attribute_value_event_get_attribute_length(packet) <= attribute_value_buffer_size) {
|
||||
attribute_value[sdp_query_attribute_value_event_get_data_offset(packet)] = sdp_query_attribute_value_event_get_data(packet);
|
||||
if (sdp_query_attribute_byte_event_get_attribute_length(packet) <= attribute_value_buffer_size) {
|
||||
attribute_value[sdp_query_attribute_byte_event_get_data_offset(packet)] = sdp_query_attribute_byte_event_get_data(packet);
|
||||
|
||||
if ((uint16_t)(sdp_query_attribute_value_event_get_data_offset(packet)+1) == sdp_query_attribute_value_event_get_attribute_length(packet)) {
|
||||
if ((uint16_t)(sdp_query_attribute_byte_event_get_data_offset(packet)+1) == sdp_query_attribute_byte_event_get_attribute_length(packet)) {
|
||||
|
||||
switch(sdp_query_attribute_value_event_get_attribute_id(packet)) {
|
||||
switch(sdp_query_attribute_byte_event_get_attribute_id(packet)) {
|
||||
case SDP_ServiceClassIDList:
|
||||
if (de_get_element_type(attribute_value) != DE_DES) break;
|
||||
for (des_iterator_init(&des_list_it, attribute_value); des_iterator_has_more(&des_list_it); des_iterator_next(&des_list_it)) {
|
||||
@ -347,7 +347,7 @@ static void handle_sdp_client_query_result(uint8_t packet_type, uint8_t *packet,
|
||||
case SDP_PANU:
|
||||
case SDP_NAP:
|
||||
case SDP_GN:
|
||||
printf("SDP Attribute 0x%04x: BNEP PAN protocol UUID: %04x\n", sdp_query_attribute_value_event_get_attribute_id(packet), uuid);
|
||||
printf("SDP Attribute 0x%04x: BNEP PAN protocol UUID: %04x\n", sdp_query_attribute_byte_event_get_attribute_id(packet), uuid);
|
||||
bnep_remote_uuid = uuid;
|
||||
break;
|
||||
default:
|
||||
@ -358,11 +358,11 @@ static void handle_sdp_client_query_result(uint8_t packet_type, uint8_t *packet,
|
||||
case 0x0100:
|
||||
case 0x0101:
|
||||
str = get_string_from_data_element(attribute_value);
|
||||
printf("SDP Attribute: 0x%04x: %s\n", sdp_query_attribute_value_event_get_attribute_id(packet), str);
|
||||
printf("SDP Attribute: 0x%04x: %s\n", sdp_query_attribute_byte_event_get_attribute_id(packet), str);
|
||||
free(str);
|
||||
break;
|
||||
case 0x0004: {
|
||||
printf("SDP Attribute: 0x%04x\n", sdp_query_attribute_value_event_get_attribute_id(packet));
|
||||
printf("SDP Attribute: 0x%04x\n", sdp_query_attribute_byte_event_get_attribute_id(packet));
|
||||
|
||||
for (des_iterator_init(&des_list_it, attribute_value); des_iterator_has_more(&des_list_it); des_iterator_next(&des_list_it)) {
|
||||
uint8_t *des_element;
|
||||
@ -404,7 +404,7 @@ static void handle_sdp_client_query_result(uint8_t packet_type, uint8_t *packet,
|
||||
}
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "SDP attribute value buffer size exceeded: available %d, required %d\n", attribute_value_buffer_size, sdp_query_attribute_value_event_get_attribute_length(packet));
|
||||
fprintf(stderr, "SDP attribute value buffer size exceeded: available %d, required %d\n", attribute_value_buffer_size, sdp_query_attribute_byte_event_get_attribute_length(packet));
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -169,22 +169,22 @@ static void handle_sdp_client_query_result(uint8_t packet_type, uint8_t *packet,
|
||||
switch (packet[0]){
|
||||
case SDP_QUERY_ATTRIBUTE_VALUE:
|
||||
// handle new record
|
||||
if (sdp_query_attribute_value_event_get_record_id(packet) != record_id){
|
||||
record_id = sdp_query_attribute_value_event_get_record_id(packet);
|
||||
if (sdp_query_attribute_byte_event_get_record_id(packet) != record_id){
|
||||
record_id = sdp_query_attribute_byte_event_get_record_id(packet);
|
||||
printf("\n---\nRecord nr. %u\n", record_id);
|
||||
}
|
||||
|
||||
assertBuffer(sdp_query_attribute_value_event_get_attribute_length(packet));
|
||||
assertBuffer(sdp_query_attribute_byte_event_get_attribute_length(packet));
|
||||
|
||||
attribute_value[sdp_query_attribute_value_event_get_data_offset(packet)] = sdp_query_attribute_value_event_get_data(packet);
|
||||
if ((uint16_t)(sdp_query_attribute_value_event_get_data_offset(packet)+1) == sdp_query_attribute_value_event_get_attribute_length(packet)){
|
||||
attribute_value[sdp_query_attribute_byte_event_get_data_offset(packet)] = sdp_query_attribute_byte_event_get_data(packet);
|
||||
if ((uint16_t)(sdp_query_attribute_byte_event_get_data_offset(packet)+1) == sdp_query_attribute_byte_event_get_attribute_length(packet)){
|
||||
|
||||
/* LISTING_RESUME */
|
||||
/* @text The Service Class ID List is a Data Element Sequence (DES) of UUIDs.
|
||||
* The BNEP PAN protocol UUID is within this list.
|
||||
*/
|
||||
|
||||
switch(sdp_query_attribute_value_event_get_attribute_id(packet)){
|
||||
switch(sdp_query_attribute_byte_event_get_attribute_id(packet)){
|
||||
// 0x0001 "Service Class ID List"
|
||||
case SDP_ServiceClassIDList:
|
||||
if (de_get_element_type(attribute_value) != DE_DES) break;
|
||||
@ -196,7 +196,7 @@ static void handle_sdp_client_query_result(uint8_t packet_type, uint8_t *packet,
|
||||
case PANU_UUID:
|
||||
case NAP_UUID:
|
||||
case GN_UUID:
|
||||
printf(" ** Attribute 0x%04x: BNEP PAN protocol UUID: %04x\n", sdp_query_attribute_value_event_get_attribute_id(packet), uuid);
|
||||
printf(" ** Attribute 0x%04x: BNEP PAN protocol UUID: %04x\n", sdp_query_attribute_byte_event_get_attribute_id(packet), uuid);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -209,7 +209,7 @@ static void handle_sdp_client_query_result(uint8_t packet_type, uint8_t *packet,
|
||||
// 0x0101 "Service Description"
|
||||
case 0x0101:
|
||||
str = get_string_from_data_element(attribute_value);
|
||||
printf(" ** Attribute 0x%04x: %s\n", sdp_query_attribute_value_event_get_attribute_id(packet), str);
|
||||
printf(" ** Attribute 0x%04x: %s\n", sdp_query_attribute_byte_event_get_attribute_id(packet), str);
|
||||
free(str);
|
||||
break;
|
||||
|
||||
@ -220,7 +220,7 @@ static void handle_sdp_client_query_result(uint8_t packet_type, uint8_t *packet,
|
||||
* and another DES with the BNEP UUID and the the BNEP version.
|
||||
*/
|
||||
case SDP_ProtocolDescriptorList:{
|
||||
printf(" ** Attribute 0x%04x: ", sdp_query_attribute_value_event_get_attribute_id(packet));
|
||||
printf(" ** Attribute 0x%04x: ", sdp_query_attribute_byte_event_get_attribute_id(packet));
|
||||
|
||||
uint16_t l2cap_psm = 0;
|
||||
uint16_t bnep_version = 0;
|
||||
|
@ -148,16 +148,16 @@ static void handle_sdp_client_query_result(uint8_t packet_type, uint8_t *packet,
|
||||
switch (packet[0]){
|
||||
case SDP_QUERY_ATTRIBUTE_VALUE:
|
||||
// handle new record
|
||||
if (sdp_query_attribute_value_event_get_record_id(packet) != record_id){
|
||||
record_id = sdp_query_attribute_value_event_get_record_id(packet);
|
||||
if (sdp_query_attribute_byte_event_get_record_id(packet) != record_id){
|
||||
record_id = sdp_query_attribute_byte_event_get_record_id(packet);
|
||||
printf("\n---\nRecord nr. %u\n", record_id);
|
||||
}
|
||||
|
||||
assertBuffer(sdp_query_attribute_value_event_get_attribute_length(packet));
|
||||
assertBuffer(sdp_query_attribute_byte_event_get_attribute_length(packet));
|
||||
|
||||
attribute_value[sdp_query_attribute_value_event_get_data_offset(packet)] = sdp_query_attribute_value_event_get_data(packet);
|
||||
if ((uint16_t)(sdp_query_attribute_value_event_get_data_offset(packet)+1) == sdp_query_attribute_value_event_get_attribute_length(packet)){
|
||||
printf("Attribute 0x%04x: ", sdp_query_attribute_value_event_get_attribute_id(packet));
|
||||
attribute_value[sdp_query_attribute_byte_event_get_data_offset(packet)] = sdp_query_attribute_byte_event_get_data(packet);
|
||||
if ((uint16_t)(sdp_query_attribute_byte_event_get_data_offset(packet)+1) == sdp_query_attribute_byte_event_get_attribute_length(packet)){
|
||||
printf("Attribute 0x%04x: ", sdp_query_attribute_byte_event_get_attribute_id(packet));
|
||||
de_dump_data_element(attribute_value);
|
||||
}
|
||||
break;
|
||||
|
@ -56,28 +56,27 @@
|
||||
#include <getopt.h>
|
||||
|
||||
#include "btstack.h"
|
||||
#include "btstack_client.h"
|
||||
#include "btstack_debug.h"
|
||||
#include "btstack_event.h"
|
||||
#include "btstack_linked_list.h"
|
||||
#include "btstack_run_loop.h"
|
||||
#include "btstack_run_loop_posix.h"
|
||||
#include "hci_cmd.h"
|
||||
#include "btstack_version.h"
|
||||
|
||||
#include "btstack_debug.h"
|
||||
#include "hci.h"
|
||||
#include "hci_dump.h"
|
||||
#include "hci_transport.h"
|
||||
#include "l2cap.h"
|
||||
#include "classic/remote_device_db.h"
|
||||
#include "classic/rfcomm.h"
|
||||
#include "classic/sdp.h"
|
||||
#include "classic/sdp_parser.h"
|
||||
#include "classic/sdp_client.h"
|
||||
#include "classic/sdp_query_util.h"
|
||||
#include "classic/sdp_parser.h"
|
||||
#include "classic/sdp_query_rfcomm.h"
|
||||
#include "socket_connection.h"
|
||||
#include "classic/sdp_query_util.h"
|
||||
#include "hci.h"
|
||||
#include "hci_cmd.h"
|
||||
#include "hci_dump.h"
|
||||
#include "hci_transport.h"
|
||||
#include "l2cap.h"
|
||||
#include "rfcomm_service_db.h"
|
||||
|
||||
#include "btstack_client.h"
|
||||
#include "socket_connection.h"
|
||||
|
||||
#ifdef ENABLE_BLE
|
||||
#include "ble/gatt_client.h"
|
||||
@ -1576,13 +1575,12 @@ static void rfcomm_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t
|
||||
|
||||
static void handle_sdp_rfcomm_service_result(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context){
|
||||
switch (packet[0]){
|
||||
case SDP_QUERY_RFCOMM_SERVICE: {
|
||||
case SDP_QUERY_COMPLETE: {
|
||||
case SDP_QUERY_RFCOMM_SERVICE:
|
||||
case SDP_QUERY_COMPLETE:
|
||||
// already HCI Events, just forward them
|
||||
hci_dump_packet(HCI_EVENT_PACKET, 0, packet, size);
|
||||
socket_connection_send_packet(context, HCI_EVENT_PACKET, 0, packet, size);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1599,23 +1597,22 @@ static void handle_sdp_client_query_result(uint8_t packet_type, uint8_t *packet,
|
||||
int event_len;
|
||||
|
||||
switch (packet[0]){
|
||||
case SDP_QUERY_ATTRIBUTE_VALUE:
|
||||
sdp_client_assert_buffer(sdp_query_attribute_value_event_get_attribute_length(packet));
|
||||
attribute_value[sdp_query_attribute_value_event_get_data_offset(packet)] = sdp_query_attribute_value_event_get_data(packet);
|
||||
if ((uint16_t)(sdp_query_attribute_value_event_get_data_offset(packet)+1) == sdp_query_attribute_value_event_get_attribute_length(packet)){
|
||||
hexdump(attribute_value, sdp_query_attribute_value_event_get_attribute_length(packet));
|
||||
case SDP_QUERY_ATTRIBUTE_BYTE:
|
||||
sdp_client_assert_buffer(sdp_query_attribute_byte_event_get_attribute_length(packet));
|
||||
attribute_value[sdp_query_attribute_byte_event_get_data_offset(packet)] = sdp_query_attribute_byte_event_get_data(packet);
|
||||
if ((uint16_t)(sdp_query_attribute_byte_event_get_data_offset(packet)+1) == sdp_query_attribute_byte_event_get_attribute_length(packet)){
|
||||
hexdump(attribute_value, sdp_query_attribute_byte_event_get_attribute_length(packet));
|
||||
|
||||
int event_len = 1 + 3 * 2 + sdp_query_attribute_value_event_get_attribute_length(packet);
|
||||
int event_len = 1 + 3 * 2 + sdp_query_attribute_byte_event_get_attribute_length(packet);
|
||||
uint8_t event[event_len];
|
||||
event[0] = SDP_QUERY_ATTRIBUTE_VALUE;
|
||||
bt_store_16(event, 1, sdp_query_attribute_value_event_get_record_id(packet));
|
||||
bt_store_16(event, 3, sdp_query_attribute_value_event_get_attribute_id(packet));
|
||||
bt_store_16(event, 5, (uint16_t)sdp_query_attribute_value_event_get_attribute_length(packet));
|
||||
memcpy(&event[7], attribute_value, sdp_query_attribute_value_event_get_attribute_length(packet));
|
||||
bt_store_16(event, 1, sdp_query_attribute_byte_event_get_record_id(packet));
|
||||
bt_store_16(event, 3, sdp_query_attribute_byte_event_get_attribute_id(packet));
|
||||
bt_store_16(event, 5, (uint16_t)sdp_query_attribute_byte_event_get_attribute_length(packet));
|
||||
memcpy(&event[7], attribute_value, sdp_query_attribute_byte_event_get_attribute_length(packet));
|
||||
hci_dump_packet(SDP_CLIENT_PACKET, 0, event, event_len);
|
||||
socket_connection_send_packet(sdp_client_query_connection, SDP_CLIENT_PACKET, 0, event, event_len);
|
||||
}
|
||||
|
||||
break;
|
||||
case SDP_QUERY_COMPLETE:
|
||||
event_len = packet[1] + 2;
|
||||
|
@ -417,8 +417,16 @@
|
||||
* @param data_offset
|
||||
* @param data
|
||||
*/
|
||||
#define SDP_QUERY_ATTRIBUTE_VALUE 0x93
|
||||
#define SDP_QUERY_ATTRIBUTE_BYTE 0x93
|
||||
|
||||
/**
|
||||
* @format 22LV
|
||||
* @param record_id
|
||||
* @param attribute_id
|
||||
* @param attribute_length
|
||||
* @param attribute_value
|
||||
*/
|
||||
#define SDP_QUERY_ATTRIBUTE_VALUE 0x94
|
||||
|
||||
/**
|
||||
* @format 224
|
||||
@ -427,7 +435,7 @@
|
||||
* @param record_handle
|
||||
* @note Not provided by daemon, only used for internal testing
|
||||
*/
|
||||
#define SDP_QUERY_SERVICE_RECORD_HANDLE 0x94
|
||||
#define SDP_QUERY_SERVICE_RECORD_HANDLE 0x95
|
||||
|
||||
/**
|
||||
* @format H1
|
||||
|
@ -88,52 +88,52 @@ static inline const char * sdp_query_rfcomm_service_event_get_name(const uint8_t
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get field record_id from event sdp_query_attribute_value_event
|
||||
* @brief Get field record_id from event sdp_query_attribute_byte_event
|
||||
* @param Event packet
|
||||
* @return record_id
|
||||
* @note: btstack_type 2
|
||||
*/
|
||||
static inline uint16_t sdp_query_attribute_value_event_get_record_id(const uint8_t * event){
|
||||
static inline uint16_t sdp_query_attribute_byte_event_get_record_id(const uint8_t * event){
|
||||
return READ_BT_16(event, 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get field attribute_id from event sdp_query_attribute_value_event
|
||||
* @brief Get field attribute_id from event sdp_query_attribute_byte_event
|
||||
* @param Event packet
|
||||
* @return attribute_id
|
||||
* @note: btstack_type 2
|
||||
*/
|
||||
static inline uint16_t sdp_query_attribute_value_event_get_attribute_id(const uint8_t * event){
|
||||
static inline uint16_t sdp_query_attribute_byte_event_get_attribute_id(const uint8_t * event){
|
||||
return READ_BT_16(event, 4);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get field attribute_length from event sdp_query_attribute_value_event
|
||||
* @brief Get field attribute_length from event sdp_query_attribute_byte_event
|
||||
* @param Event packet
|
||||
* @return attribute_length
|
||||
* @note: btstack_type 2
|
||||
*/
|
||||
static inline uint16_t sdp_query_attribute_value_event_get_attribute_length(const uint8_t * event){
|
||||
static inline uint16_t sdp_query_attribute_byte_event_get_attribute_length(const uint8_t * event){
|
||||
return READ_BT_16(event, 6);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get field data_offset from event sdp_query_attribute_value_event
|
||||
* @brief Get field data_offset from event sdp_query_attribute_byte_event
|
||||
* @param Event packet
|
||||
* @return data_offset
|
||||
* @note: btstack_type 2
|
||||
*/
|
||||
static inline uint16_t sdp_query_attribute_value_event_get_data_offset(const uint8_t * event){
|
||||
static inline uint16_t sdp_query_attribute_byte_event_get_data_offset(const uint8_t * event){
|
||||
return READ_BT_16(event, 8);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get field data from event sdp_query_attribute_value_event
|
||||
* @brief Get field data from event sdp_query_attribute_byte_event
|
||||
* @param Event packet
|
||||
* @return data
|
||||
* @note: btstack_type 1
|
||||
*/
|
||||
static inline uint8_t sdp_query_attribute_value_event_get_data(const uint8_t * event){
|
||||
static inline uint8_t sdp_query_attribute_byte_event_get_data(const uint8_t * event){
|
||||
return event[10];
|
||||
}
|
||||
|
||||
|
@ -270,20 +270,20 @@ static void handle_sdp_parser_event(uint8_t packet_type, uint8_t *packet, uint16
|
||||
break;
|
||||
case SDP_QUERY_ATTRIBUTE_VALUE:
|
||||
// log_info("handle_sdp_parser_event [ AID, ALen, DOff, Data] : [%x, %u, %u] BYTE %02x",
|
||||
// ve->attribute_id, sdp_query_attribute_value_event_get_attribute_length(packet),
|
||||
// sdp_query_attribute_value_event_get_data_offset(packet), sdp_query_attribute_value_event_get_data(packet));
|
||||
switch (sdp_query_attribute_value_event_get_attribute_id(packet)){
|
||||
// ve->attribute_id, sdp_query_attribute_byte_event_get_attribute_length(packet),
|
||||
// sdp_query_attribute_byte_event_get_data_offset(packet), sdp_query_attribute_byte_event_get_data(packet));
|
||||
switch (sdp_query_attribute_byte_event_get_attribute_id(packet)){
|
||||
case SDP_ProtocolDescriptorList:
|
||||
// find rfcomm channel
|
||||
handleProtocolDescriptorListData(sdp_query_attribute_value_event_get_attribute_length(packet),
|
||||
sdp_query_attribute_value_event_get_data_offset(packet),
|
||||
sdp_query_attribute_value_event_get_data(packet));
|
||||
handleProtocolDescriptorListData(sdp_query_attribute_byte_event_get_attribute_length(packet),
|
||||
sdp_query_attribute_byte_event_get_data_offset(packet),
|
||||
sdp_query_attribute_byte_event_get_data(packet));
|
||||
break;
|
||||
case 0x0100:
|
||||
// get service name
|
||||
handleServiceNameData(sdp_query_attribute_value_event_get_attribute_length(packet),
|
||||
sdp_query_attribute_value_event_get_data_offset(packet),
|
||||
sdp_query_attribute_value_event_get_data(packet));
|
||||
handleServiceNameData(sdp_query_attribute_byte_event_get_attribute_length(packet),
|
||||
sdp_query_attribute_byte_event_get_data_offset(packet),
|
||||
sdp_query_attribute_byte_event_get_data(packet));
|
||||
break;
|
||||
default:
|
||||
// give up
|
||||
|
@ -118,27 +118,27 @@ static void test_attribute_value_event(const uint8_t * event){
|
||||
CHECK_EQUAL(event[0], SDP_QUERY_ATTRIBUTE_VALUE);
|
||||
|
||||
// record ids are sequential
|
||||
if (sdp_query_attribute_value_event_get_record_id(event) != recordId){
|
||||
if (sdp_query_attribute_byte_event_get_record_id(event) != recordId){
|
||||
recordId++;
|
||||
}
|
||||
CHECK_EQUAL(sdp_query_attribute_value_event_get_record_id(event), recordId);
|
||||
CHECK_EQUAL(sdp_query_attribute_byte_event_get_record_id(event), recordId);
|
||||
|
||||
// is attribute value complete
|
||||
if (sdp_query_attribute_value_event_get_attribute_id(event) != attributeId ){
|
||||
if (sdp_query_attribute_byte_event_get_attribute_id(event) != attributeId ){
|
||||
if (attributeLength > 0){
|
||||
CHECK_EQUAL(attributeLength, attributeOffset+1);
|
||||
}
|
||||
attributeId = sdp_query_attribute_value_event_get_attribute_id(event);
|
||||
attributeId = sdp_query_attribute_byte_event_get_attribute_id(event);
|
||||
attributeOffset = 0;
|
||||
}
|
||||
|
||||
// count attribute value bytes
|
||||
if (sdp_query_attribute_value_event_get_data_offset(event) != attributeOffset){
|
||||
if (sdp_query_attribute_byte_event_get_data_offset(event) != attributeOffset){
|
||||
attributeOffset++;
|
||||
}
|
||||
attributeLength = sdp_query_attribute_value_event_get_attribute_length(event);
|
||||
attributeLength = sdp_query_attribute_byte_event_get_attribute_length(event);
|
||||
|
||||
CHECK_EQUAL(sdp_query_attribute_value_event_get_data_offset(event), attributeOffset);
|
||||
CHECK_EQUAL(sdp_query_attribute_byte_event_get_data_offset(event), attributeOffset);
|
||||
}
|
||||
|
||||
|
||||
@ -148,12 +148,12 @@ static void handle_sdp_parser_event(uint8_t packet_type, uint8_t *packet, uint16
|
||||
test_attribute_value_event(packet);
|
||||
|
||||
// handle new record
|
||||
if (sdp_query_attribute_value_event_get_record_id(packet) != record_id){
|
||||
record_id = sdp_query_attribute_value_event_get_record_id(packet);
|
||||
if (sdp_query_attribute_byte_event_get_record_id(packet) != record_id){
|
||||
record_id = sdp_query_attribute_byte_event_get_record_id(packet);
|
||||
}
|
||||
// buffer data
|
||||
assertBuffer(sdp_query_attribute_value_event_get_attribute_length(packet));
|
||||
attribute_value[sdp_query_attribute_value_event_get_data_offset(packet)] = sdp_query_attribute_value_event_get_data(packet);
|
||||
assertBuffer(sdp_query_attribute_byte_event_get_attribute_length(packet));
|
||||
attribute_value[sdp_query_attribute_byte_event_get_data_offset(packet)] = sdp_query_attribute_byte_event_get_data(packet);
|
||||
|
||||
break;
|
||||
case SDP_QUERY_COMPLETE:
|
||||
|
@ -61,29 +61,29 @@ static void test_attribute_value_event(const uint8_t * event){
|
||||
CHECK_EQUAL(event[0], SDP_QUERY_ATTRIBUTE_VALUE);
|
||||
|
||||
// record ids are sequential
|
||||
// printf("sdp_query_attribute_value_event_get_record_id(event) %d",sdp_query_attribute_value_event_get_record_id(event));
|
||||
// printf("sdp_query_attribute_byte_event_get_record_id(event) %d",sdp_query_attribute_byte_event_get_record_id(event));
|
||||
|
||||
if (sdp_query_attribute_value_event_get_record_id(event) != recordId){
|
||||
if (sdp_query_attribute_byte_event_get_record_id(event) != recordId){
|
||||
recordId++;
|
||||
}
|
||||
CHECK_EQUAL(sdp_query_attribute_value_event_get_record_id(event), recordId);
|
||||
CHECK_EQUAL(sdp_query_attribute_byte_event_get_record_id(event), recordId);
|
||||
|
||||
// is attribute value complete
|
||||
if (sdp_query_attribute_value_event_get_attribute_id(event) != attributeId ){
|
||||
if (sdp_query_attribute_byte_event_get_attribute_id(event) != attributeId ){
|
||||
if (attributeLength > 0){
|
||||
CHECK_EQUAL(attributeLength, attributeOffset+1);
|
||||
}
|
||||
attributeId = sdp_query_attribute_value_event_get_attribute_id(event);
|
||||
attributeId = sdp_query_attribute_byte_event_get_attribute_id(event);
|
||||
attributeOffset = 0;
|
||||
}
|
||||
|
||||
// count attribute value bytes
|
||||
if (sdp_query_attribute_value_event_get_data_offset(event) != attributeOffset){
|
||||
if (sdp_query_attribute_byte_event_get_data_offset(event) != attributeOffset){
|
||||
attributeOffset++;
|
||||
}
|
||||
attributeLength = sdp_query_attribute_value_event_get_attribute_length(event);
|
||||
attributeLength = sdp_query_attribute_byte_event_get_attribute_length(event);
|
||||
|
||||
CHECK_EQUAL(sdp_query_attribute_value_event_get_data_offset(event), attributeOffset);
|
||||
CHECK_EQUAL(sdp_query_attribute_byte_event_get_data_offset(event), attributeOffset);
|
||||
}
|
||||
|
||||
|
||||
@ -93,12 +93,12 @@ static void handle_sdp_parser_event(uint8_t packet_type, uint8_t *packet, uint16
|
||||
test_attribute_value_event(packet);
|
||||
|
||||
// handle new record
|
||||
if (sdp_query_attribute_value_event_get_record_id(packet) != record_id){
|
||||
record_id = sdp_query_attribute_value_event_get_record_id(packet);
|
||||
if (sdp_query_attribute_byte_event_get_record_id(packet) != record_id){
|
||||
record_id = sdp_query_attribute_byte_event_get_record_id(packet);
|
||||
}
|
||||
// buffer data
|
||||
assertBuffer(sdp_query_attribute_value_event_get_attribute_length(packet));
|
||||
attribute_value[sdp_query_attribute_value_event_get_data_offset(packet)] = sdp_query_attribute_value_event_get_data(packet);
|
||||
assertBuffer(sdp_query_attribute_byte_event_get_attribute_length(packet));
|
||||
attribute_value[sdp_query_attribute_byte_event_get_data_offset(packet)] = sdp_query_attribute_byte_event_get_data(packet);
|
||||
|
||||
break;
|
||||
case SDP_QUERY_COMPLETE:
|
||||
|
@ -131,14 +131,15 @@ defines_used = set()
|
||||
param_read = {
|
||||
'1' : 'return event[{offset}];',
|
||||
'J' : 'return event[{offset}];',
|
||||
'L' : 'return event[{offset}];',
|
||||
'2' : 'return READ_BT_16(event, {offset});',
|
||||
'L' : 'return READ_BT_16(event, {offset});',
|
||||
'3' : 'return READ_BT_24(event, {offset});',
|
||||
'4' : 'return READ_BT_32(event, {offset});',
|
||||
'H' : 'return READ_BT_16(event, {offset});',
|
||||
'B' : 'swap48(&event[{offset}], {result_name});',
|
||||
'R' : 'return &event[{offset}];',
|
||||
'T' : 'return (const char *) &event[{offset}];'
|
||||
'T' : 'return (const char *) &event[{offset}];',
|
||||
'V' : 'return &event[{offset}];',
|
||||
}
|
||||
|
||||
def c_type_for_btstack_type(type):
|
||||
@ -202,16 +203,19 @@ def create_events(events):
|
||||
fout.write(copyright)
|
||||
fout.write(hfile_header_begin)
|
||||
for event_type, event_name, format, args in events:
|
||||
if not event_name in ['SDP_QUERY_COMPLETE', 'SDP_QUERY_RFCOMM_SERVICE', 'SDP_QUERY_ATTRIBUTE_VALUE', 'SDP_QUERY_SERVICE_RECORD_HANDLE']:
|
||||
if not event_name in [
|
||||
'SDP_QUERY_COMPLETE',
|
||||
'SDP_QUERY_RFCOMM_SERVICE',
|
||||
'SDP_QUERY_ATTRIBUTE_BYTE',
|
||||
'SDP_QUERY_SERVICE_RECORD_HANDLE']:
|
||||
continue
|
||||
event_name = format_function_name(event_name)
|
||||
length_name = ''
|
||||
offset = 2
|
||||
supported = all_fields_supported(format)
|
||||
for f, arg in zip(format, args):
|
||||
field_name = arg
|
||||
field_type = f
|
||||
if field_type == 'V':
|
||||
break
|
||||
text = create_getter(event_name, field_name, field_type, offset, supported)
|
||||
fout.write(text)
|
||||
if field_type in 'RT':
|
||||
|
Loading…
x
Reference in New Issue
Block a user