From a874746709fd7a8c0715bc158b817e9b8a601294 Mon Sep 17 00:00:00 2001 From: Matthias Ringwald Date: Fri, 29 Jan 2016 21:31:07 +0100 Subject: [PATCH] sdp_parser: drop sdp_query_event_t finally --- example/embedded/panu_demo.c | 35 ++++++------- example/embedded/sdp_bnep_query.c | 33 +++++------- example/embedded/sdp_general_query.c | 26 ++++------ example/embedded/sdp_rfcomm_query.c | 11 ++-- example/embedded/spp_streamer.c | 11 ++-- platform/daemon/daemon.c | 51 ++++++++----------- src/classic/hfp.c | 16 +++--- src/classic/hsp_ag.c | 20 +++----- src/classic/hsp_hs.c | 18 +++---- src/classic/sdp_parser.c | 12 ++--- src/classic/sdp_parser.h | 9 +--- src/classic/sdp_query_rfcomm.c | 34 +++++++------ src/classic/sdp_query_rfcomm.h | 2 +- test/hfp/mock.c | 8 +-- test/pts/classic_test.c | 11 ++-- test/pts/hfp_test.c | 12 ++--- test/sdp_client/general_sdp_query.c | 41 +++++++-------- test/sdp_client/sdp_rfcomm_query.c | 12 ++--- .../service_attribute_search_query.c | 23 +++------ test/sdp_client/service_search_query.c | 17 ++----- 20 files changed, 156 insertions(+), 246 deletions(-) diff --git a/example/embedded/panu_demo.c b/example/embedded/panu_demo.c index 36441fe74..3535a1473 100644 --- a/example/embedded/panu_demo.c +++ b/example/embedded/panu_demo.c @@ -134,7 +134,7 @@ static btstack_data_source_t tap_dev_ds; /* LISTING_START(PanuSetup): Panu setup */ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size); -static void handle_sdp_client_query_result(sdp_query_event_t *event); +static void handle_sdp_client_query_result(uint8_t packet_type, uint8_t *packet, uint16_t size); static void panu_setup(void){ // Initialize L2CAP @@ -317,30 +317,26 @@ static char * get_string_from_data_element(uint8_t * element){ * @text The SDP parsers retrieves the BNEP PAN UUID as explained in * Section [on SDP BNEP Query example](#sec:sdpbnepqueryExample}. */ -static void handle_sdp_client_query_result(sdp_query_event_t *event) -{ - const uint8_t * complete_event; - const uint8_t *value_event; +static void handle_sdp_client_query_result(uint8_t packet_type, uint8_t *packet, uint16_t size) { + des_iterator_t des_list_it; des_iterator_t prot_it; char *str; - switch (event->type){ + switch (packet[0]){ case SDP_QUERY_ATTRIBUTE_VALUE: - value_event = (const uint8_t *) event; - // Handle new SDP record - if (sdp_query_attribute_value_event_get_record_id(value_event) != record_id) { - record_id = sdp_query_attribute_value_event_get_record_id(value_event); + if (sdp_query_attribute_value_event_get_record_id(packet) != record_id) { + record_id = sdp_query_attribute_value_event_get_record_id(packet); printf("SDP Record: Nr: %d\n", record_id); } - if (sdp_query_attribute_value_event_get_attribute_length(value_event) <= attribute_value_buffer_size) { - attribute_value[sdp_query_attribute_value_event_get_data_offset(value_event)] = sdp_query_attribute_value_event_get_data(value_event); + 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 ((uint16_t)(sdp_query_attribute_value_event_get_data_offset(value_event)+1) == sdp_query_attribute_value_event_get_attribute_length(value_event)) { + if ((uint16_t)(sdp_query_attribute_value_event_get_data_offset(packet)+1) == sdp_query_attribute_value_event_get_attribute_length(packet)) { - switch(sdp_query_attribute_value_event_get_attribute_id(value_event)) { + switch(sdp_query_attribute_value_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)) { @@ -351,7 +347,7 @@ static void handle_sdp_client_query_result(sdp_query_event_t *event) 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(value_event), uuid); + printf("SDP Attribute 0x%04x: BNEP PAN protocol UUID: %04x\n", sdp_query_attribute_value_event_get_attribute_id(packet), uuid); bnep_remote_uuid = uuid; break; default: @@ -362,11 +358,11 @@ static void handle_sdp_client_query_result(sdp_query_event_t *event) 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(value_event), str); + printf("SDP Attribute: 0x%04x: %s\n", sdp_query_attribute_value_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(value_event)); + printf("SDP Attribute: 0x%04x\n", sdp_query_attribute_value_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; @@ -408,13 +404,12 @@ static void handle_sdp_client_query_result(sdp_query_event_t *event) } } } 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(value_event)); + 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)); } break; case SDP_QUERY_COMPLETE: - complete_event = (const uint8_t *) event; - fprintf(stderr, "General query done with status %d.\n", sdp_query_complete_event_get_status(complete_event)); + fprintf(stderr, "General query done with status %d.\n", sdp_query_complete_event_get_status(packet)); break; } diff --git a/example/embedded/sdp_bnep_query.c b/example/embedded/sdp_bnep_query.c index 2e4759012..4c2f76bb2 100644 --- a/example/embedded/sdp_bnep_query.c +++ b/example/embedded/sdp_bnep_query.c @@ -72,8 +72,6 @@ static const int attribute_value_buffer_size = sizeof(attribute_value); static bd_addr_t remote = {0x04,0x0C,0xCE,0xE4,0x85,0xD3}; -static void handle_sdp_client_query_result(sdp_query_event_t * event); - static void assertBuffer(int size){ if (size > attribute_value_buffer_size){ printf("SDP attribute value buffer size exceeded: available %d, required %d", attribute_value_buffer_size, size); @@ -91,7 +89,7 @@ static void assertBuffer(int size){ /* LISTING_START(SDPClientInit): SDP client setup */ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size); -static void handle_sdp_client_query_result(sdp_query_event_t * event); +static void handle_sdp_client_query_result(uint8_t packet_type, uint8_t *packet, uint16_t size); static void sdp_client_init(void){ // init L2CAP @@ -162,35 +160,31 @@ static char * get_string_from_data_element(uint8_t * element){ */ /* LISTING_START(HandleSDPQUeryResult): Extracting BNEP Protcol UUID and L2CAP PSM */ -static void handle_sdp_client_query_result(sdp_query_event_t * event){ +static void handle_sdp_client_query_result(uint8_t packet_type, uint8_t *packet, uint16_t size){ /* LISTING_PAUSE */ - const uint8_t * ve; - const uint8_t * ce; des_iterator_t des_list_it; des_iterator_t prot_it; char *str; - switch (event->type){ + switch (packet[0]){ case SDP_QUERY_ATTRIBUTE_VALUE: - ve = (const uint8_t *) event; - // handle new record - if (sdp_query_attribute_value_event_get_record_id(ve) != record_id){ - record_id = sdp_query_attribute_value_event_get_record_id(ve); + if (sdp_query_attribute_value_event_get_record_id(packet) != record_id){ + record_id = sdp_query_attribute_value_event_get_record_id(packet); printf("\n---\nRecord nr. %u\n", record_id); } - assertBuffer(sdp_query_attribute_value_event_get_attribute_length(ve)); + assertBuffer(sdp_query_attribute_value_event_get_attribute_length(packet)); - attribute_value[sdp_query_attribute_value_event_get_data_offset(ve)] = sdp_query_attribute_value_event_get_data(ve); - if ((uint16_t)(sdp_query_attribute_value_event_get_data_offset(ve)+1) == sdp_query_attribute_value_event_get_attribute_length(ve)){ + 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)){ /* 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(ve)){ + switch(sdp_query_attribute_value_event_get_attribute_id(packet)){ // 0x0001 "Service Class ID List" case SDP_ServiceClassIDList: if (de_get_element_type(attribute_value) != DE_DES) break; @@ -202,7 +196,7 @@ static void handle_sdp_client_query_result(sdp_query_event_t * event){ 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(ve), uuid); + printf(" ** Attribute 0x%04x: BNEP PAN protocol UUID: %04x\n", sdp_query_attribute_value_event_get_attribute_id(packet), uuid); break; default: break; @@ -215,7 +209,7 @@ static void handle_sdp_client_query_result(sdp_query_event_t * event){ // 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(ve), str); + printf(" ** Attribute 0x%04x: %s\n", sdp_query_attribute_value_event_get_attribute_id(packet), str); free(str); break; @@ -226,7 +220,7 @@ static void handle_sdp_client_query_result(sdp_query_event_t * event){ * 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(ve)); + printf(" ** Attribute 0x%04x: ", sdp_query_attribute_value_event_get_attribute_id(packet)); uint16_t l2cap_psm = 0; uint16_t bnep_version = 0; @@ -263,8 +257,7 @@ static void handle_sdp_client_query_result(sdp_query_event_t * event){ } break; case SDP_QUERY_COMPLETE: - ce = (const uint8_t *) event; - printf("General query done with status %d.\n\n", sdp_query_complete_event_get_status(ce)); + printf("General query done with status %d.\n\n", sdp_query_complete_event_get_status(packet)); break; } /* LISTING_RESUME */ diff --git a/example/embedded/sdp_general_query.c b/example/embedded/sdp_general_query.c index 8f4fbf1ff..e25bce9ee 100644 --- a/example/embedded/sdp_general_query.c +++ b/example/embedded/sdp_general_query.c @@ -79,7 +79,7 @@ static const int attribute_value_buffer_size = sizeof(attribute_value); /* LISTING_START(SDPClientInit): SDP client setup */ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size); -static void handle_sdp_client_query_result(sdp_query_event_t * event); +static void handle_sdp_client_query_result(uint8_t packet_type, uint8_t *packet, uint16_t size); static void sdp_client_init(void){ // init L2CAP @@ -144,31 +144,25 @@ static void assertBuffer(int size){ */ /* LISTING_START(HandleSDPQUeryResult): Handling query result chunks. */ -static void handle_sdp_client_query_result(sdp_query_event_t * event){ - const uint8_t * ve; - const uint8_t * ce; - - switch (event->type){ +static void handle_sdp_client_query_result(uint8_t packet_type, uint8_t *packet, uint16_t size){ + switch (packet[0]){ case SDP_QUERY_ATTRIBUTE_VALUE: - ve = (const uint8_t *) event; - // handle new record - if (sdp_query_attribute_value_event_get_record_id(ve) != record_id){ - record_id = sdp_query_attribute_value_event_get_record_id(ve); + if (sdp_query_attribute_value_event_get_record_id(packet) != record_id){ + record_id = sdp_query_attribute_value_event_get_record_id(packet); printf("\n---\nRecord nr. %u\n", record_id); } - assertBuffer(sdp_query_attribute_value_event_get_attribute_length(ve)); + assertBuffer(sdp_query_attribute_value_event_get_attribute_length(packet)); - attribute_value[sdp_query_attribute_value_event_get_data_offset(ve)] = sdp_query_attribute_value_event_get_data(ve); - if ((uint16_t)(sdp_query_attribute_value_event_get_data_offset(ve)+1) == sdp_query_attribute_value_event_get_attribute_length(ve)){ - printf("Attribute 0x%04x: ", sdp_query_attribute_value_event_get_attribute_id(ve)); + 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)); de_dump_data_element(attribute_value); } break; case SDP_QUERY_COMPLETE: - ce = (const uint8_t *) event; - printf("General query done with status %d.\n\n", sdp_query_complete_event_get_status(ce)); + printf("General query done with status %d.\n\n", sdp_query_complete_event_get_status(packet)); exit(0); break; } diff --git a/example/embedded/sdp_rfcomm_query.c b/example/embedded/sdp_rfcomm_query.c index ade4c71ba..62a99436d 100644 --- a/example/embedded/sdp_rfcomm_query.c +++ b/example/embedded/sdp_rfcomm_query.c @@ -108,14 +108,11 @@ static void report_found_services(void){ printf(" ***\n\n"); } -static void handle_query_rfcomm_event(sdp_query_event_t * event, void * context){ - const uint8_t * ve; - - switch (event->type){ +static void handle_query_rfcomm_event(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context){ + switch (packet[0]){ case SDP_QUERY_RFCOMM_SERVICE: - ve = (const uint8_t *) event; - store_found_service(sdp_query_rfcomm_service_event_get_name(ve), - sdp_query_rfcomm_service_event_get_rfcomm_channel(ve)); + store_found_service(sdp_query_rfcomm_service_event_get_name(packet), + sdp_query_rfcomm_service_event_get_rfcomm_channel(packet)); break; case SDP_QUERY_COMPLETE: report_found_services(); diff --git a/example/embedded/spp_streamer.c b/example/embedded/spp_streamer.c index b42298d3c..72359e8a2 100644 --- a/example/embedded/spp_streamer.c +++ b/example/embedded/spp_streamer.c @@ -161,14 +161,11 @@ static void handle_found_service(const char * name, uint8_t port){ state = W4_SDP_COMPLETE; } -static void handle_query_rfcomm_event(sdp_query_event_t * event, void * context){ - const uint8_t * ve; - - switch (event->type){ +static void handle_query_rfcomm_event(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context){ + switch (packet[0]){ case SDP_QUERY_RFCOMM_SERVICE: - ve = (const uint8_t *) event; - handle_found_service(sdp_query_rfcomm_service_event_get_name(ve), - sdp_query_rfcomm_service_event_get_rfcomm_channel(ve)); + handle_found_service(sdp_query_rfcomm_service_event_get_name(packet), + sdp_query_rfcomm_service_event_get_rfcomm_channel(packet)); break; case SDP_QUERY_COMPLETE: if (state != W4_SDP_COMPLETE){ diff --git a/platform/daemon/daemon.c b/platform/daemon/daemon.c index dc8612ae3..a07cc1ac9 100644 --- a/platform/daemon/daemon.c +++ b/platform/daemon/daemon.c @@ -160,8 +160,8 @@ typedef struct btstack_linked_list_gatt_client_helper{ } btstack_linked_list_gatt_client_helper_t; // MARK: prototypes -static void handle_sdp_rfcomm_service_result(sdp_query_event_t * event, void * context); -static void handle_sdp_client_query_result(sdp_query_event_t * event); +static void handle_sdp_rfcomm_service_result(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context); +static void handle_sdp_client_query_result(uint8_t packet_type, uint8_t *packet, uint16_t size); static void dummy_bluetooth_status_handler(BLUETOOTH_STATE state); static client_state_t * client_for_connection(connection_t *connection); static int clients_require_power_on(void); @@ -1574,15 +1574,13 @@ static void rfcomm_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t daemon_packet_handler(NULL, packet_type, channel, packet, size); } -static void handle_sdp_rfcomm_service_result(sdp_query_event_t * rfcomm_event, void * context){ - switch (rfcomm_event->type){ +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: { - // already an HCI Event - const uint8_t * event = (const uint8_t *) event; - int event_len = 2 + event[1]; - hci_dump_packet(HCI_EVENT_PACKET, 0, event, event_len); - socket_connection_send_packet(context, HCI_EVENT_PACKET, 0, event, event_len); + // 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: @@ -1597,39 +1595,32 @@ static void sdp_client_assert_buffer(int size){ } // define new packet type SDP_CLIENT_PACKET -static void handle_sdp_client_query_result(sdp_query_event_t * event){ - const uint8_t * ve; - const uint8_t * complete_event; +static void handle_sdp_client_query_result(uint8_t packet_type, uint8_t *packet, uint16_t size){ int event_len; - switch (event->type){ + switch (packet[0]){ case SDP_QUERY_ATTRIBUTE_VALUE: - ve = (const uint8_t*) event; - - sdp_client_assert_buffer(sdp_query_attribute_value_event_get_attribute_length(ve)); + 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)); - attribute_value[sdp_query_attribute_value_event_get_data_offset(ve)] = ve->data; - - if ((uint16_t)(sdp_query_attribute_value_event_get_data_offset(ve)+1) == sdp_query_attribute_value_event_get_attribute_length(ve)){ - hexdump(attribute_value, sdp_query_attribute_value_event_get_attribute_length(ve)); - - int event_len = 1 + 3 * 2 + sdp_query_attribute_value_event_get_attribute_length(ve); + int event_len = 1 + 3 * 2 + sdp_query_attribute_value_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(ve)); - bt_store_16(event, 3, sdp_query_attribute_value_event_get_attribute_id(ve)); - bt_store_16(event, 5, (uint16_t)sdp_query_attribute_value_event_get_attribute_length(ve)); - memcpy(&event[7], attribute_value, sdp_query_attribute_value_event_get_attribute_length(ve)); + 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)); 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: - complete_event = (const uint8_t*) event; - event_len = complete_event[1] + 2; - hci_dump_packet(HCI_EVENT_PACKET, 0, complete_event, event_len); - socket_connection_send_packet(sdp_client_query_connection, HCI_EVENT_PACKET, 0, complete_event, event_len); + event_len = packet[1] + 2; + hci_dump_packet(HCI_EVENT_PACKET, 0, packet, event_len); + socket_connection_send_packet(sdp_client_query_connection, HCI_EVENT_PACKET, 0, packet, event_len); break; } } diff --git a/src/classic/hfp.c b/src/classic/hfp.c index 4d93a74e7..ce7aff762 100644 --- a/src/classic/hfp.c +++ b/src/classic/hfp.c @@ -414,33 +414,29 @@ void hfp_create_sdp_record(uint8_t * service, uint32_t service_record_handle, ui } static hfp_connection_t * connection_doing_sdp_query = NULL; -static void handle_query_rfcomm_event(sdp_query_event_t * event, void * context){ - const uint8_t * ve; - const uint8_t * ce; + +static void handle_query_rfcomm_event(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context){ hfp_connection_t * connection = connection_doing_sdp_query; if ( connection->state != HFP_W4_SDP_QUERY_COMPLETE) return; - switch (event->type){ + switch (packet[0]){ case SDP_QUERY_RFCOMM_SERVICE: - ve = (const uint8_t *) event; if (!connection) { - log_error("handle_query_rfcomm_event alloc connection for RFCOMM port %u failed", sdp_query_rfcomm_service_event_get_rfcomm_channel(ve)); + log_error("handle_query_rfcomm_event alloc connection for RFCOMM port %u failed", sdp_query_rfcomm_service_event_get_rfcomm_channel(packet)); return; } - connection->rfcomm_channel_nr = sdp_query_rfcomm_service_event_get_rfcomm_channel(ve); + connection->rfcomm_channel_nr = sdp_query_rfcomm_service_event_get_rfcomm_channel(packet); break; case SDP_QUERY_COMPLETE: connection_doing_sdp_query = NULL; - ce = (const uint8_t*) event; - if (connection->rfcomm_channel_nr > 0){ connection->state = HFP_W4_RFCOMM_CONNECTED; log_info("HFP: SDP_QUERY_COMPLETE context %p, addr %s, state %d", connection, bd_addr_to_str( connection->remote_addr), connection->state); rfcomm_create_channel(connection->remote_addr, connection->rfcomm_channel_nr, NULL); break; } - log_info("rfcomm service not found, status %u.", sdp_query_complete_event_get_status(ce)); + log_info("rfcomm service not found, status %u.", sdp_query_complete_event_get_status(packet)); break; default: break; diff --git a/src/classic/hsp_ag.c b/src/classic/hsp_ag.c index 82d47f3f2..1334e9994 100644 --- a/src/classic/hsp_ag.c +++ b/src/classic/hsp_ag.c @@ -118,7 +118,7 @@ static hsp_ag_callback_t hsp_ag_callback; static void hsp_run(); static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size); -static void handle_query_rfcomm_event(sdp_query_event_t * event, void * context); +static void handle_query_rfcomm_event(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context); static void dummy_notify(uint8_t * event, uint16_t size){} @@ -625,19 +625,13 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack hsp_run(); } -static void handle_query_rfcomm_event(sdp_query_event_t * event, void * context){ - const uint8_t * ve; - const uint8_t * ce; - +static void handle_query_rfcomm_event(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context){ switch (event->type){ case SDP_QUERY_RFCOMM_SERVICE: - ve = (const uint8_t *) event; - channel_nr = sdp_query_rfcomm_service_event_get_rfcomm_channel(ve); - printf("** Service name: '%s', RFCOMM port %u\n", sdp_query_rfcomm_service_event_get_name(ve), channel_nr); + channel_nr = sdp_query_rfcomm_service_event_get_rfcomm_channel(packet); + printf("** Service name: '%s', RFCOMM port %u\n", sdp_query_rfcomm_service_event_get_name(packet), channel_nr); break; case SDP_QUERY_COMPLETE: - ce = (const uint8_t*) event; - if (channel_nr > 0){ hsp_state = HSP_W4_RFCOMM_CONNECTED; printf("RFCOMM create channel. state %d\n", HSP_W4_RFCOMM_CONNECTED); @@ -645,9 +639,9 @@ static void handle_query_rfcomm_event(sdp_query_event_t * event, void * context) break; } hsp_ag_reset_state(); - printf("Service not found, status %u.\n", sdp_query_complete_event_get_status(ce)); - if (ce->status){ - emit_event(HSP_SUBEVENT_AUDIO_CONNECTION_COMPLETE, sdp_query_complete_event_get_status(ce)); + printf("Service not found, status %u.\n", sdp_query_complete_event_get_status(packet)); + if (sdp_query_complete_event_get_status(packet)){ + emit_event(HSP_SUBEVENT_AUDIO_CONNECTION_COMPLETE, sdp_query_complete_event_get_status(packet)); } else { emit_event(HSP_SUBEVENT_AUDIO_CONNECTION_COMPLETE, SDP_SERVICE_NOT_FOUND); } diff --git a/src/classic/hsp_hs.c b/src/classic/hsp_hs.c index d78e75b4e..c9170a357 100644 --- a/src/classic/hsp_hs.c +++ b/src/classic/hsp_hs.c @@ -109,7 +109,7 @@ static hsp_state_t hsp_state = HSP_IDLE; static void hsp_run(void); static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size); -static void handle_query_rfcomm_event(sdp_query_event_t * event, void * context); +static void handle_query_rfcomm_event(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context); static hsp_hs_callback_t hsp_hs_callback; static void dummy_notify(uint8_t * event, uint16_t size){} @@ -573,19 +573,13 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack hsp_run(); } -static void handle_query_rfcomm_event(sdp_query_event_t * event, void * context){ - const uint8_t * ve; - const uint8_t * ce; - - switch (event->type){ +static void handle_query_rfcomm_event(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context){ + switch (packet[0]){ case SDP_QUERY_RFCOMM_SERVICE: - ve = (const uint8_t*) event; - channel_nr = sdp_query_rfcomm_service_event_get_rfcomm_channel(ve); - printf("** Service name: '%s', RFCOMM port %u\n", sdp_query_rfcomm_service_event_get_name(ve), channel_nr); + channel_nr = sdp_query_rfcomm_service_event_get_rfcomm_channel(packet); + printf("** Service name: '%s', RFCOMM port %u\n", sdp_query_rfcomm_service_event_get_name(packet), channel_nr); break; case SDP_QUERY_COMPLETE: - ce = (const uint8_t*) event; - if (channel_nr > 0){ hsp_state = HSP_W4_RFCOMM_CONNECTED; printf("RFCOMM create channel.\n"); @@ -593,7 +587,7 @@ static void handle_query_rfcomm_event(sdp_query_event_t * event, void * context) break; } hsp_hs_reset_state(); - printf("Service not found, status %u.\n", sdp_query_complete_event_get_status(ce)); + printf("Service not found, status %u.\n", sdp_query_complete_event_get_status(packet)); exit(0); break; } diff --git a/src/classic/sdp_parser.c b/src/classic/sdp_parser.c index 0b39e4d0b..ac107bfe2 100644 --- a/src/classic/sdp_parser.c +++ b/src/classic/sdp_parser.c @@ -66,7 +66,7 @@ static int record_counter = 0; static uint32_t record_handle; #endif -static void (*sdp_query_callback)(sdp_query_event_t * event); +static void (*sdp_query_callback)(uint8_t packet_type, uint8_t *packet, uint16_t size); // Low level parser static de_state_t de_header_state; @@ -107,9 +107,9 @@ int de_state_size(uint8_t eventByte, de_state_t *de_state){ return 1; } -static void dummy_notify(sdp_query_event_t* event){} +static void dummy_notify(uint8_t packet_type, uint8_t *packet, uint16_t size){} -void sdp_parser_register_callback(void (*sdp_callback)(sdp_query_event_t* event)){ +void sdp_parser_register_callback(void (*sdp_callback)(uint8_t packet_type, uint8_t *packet, uint16_t size)){ sdp_query_callback = dummy_notify; if (sdp_callback != NULL){ sdp_query_callback = sdp_callback; @@ -125,7 +125,7 @@ static void emit_value_byte(uint8_t event_byte){ bt_store_16(event, 6, attribute_value_size); bt_store_16(event, 8, attribute_bytes_delivered); event[10] = event_byte; - (*sdp_query_callback)((sdp_query_event_t*)&event); + (*sdp_query_callback)(HCI_EVENT_PACKET, event, sizeof(event)); } static void parse(uint8_t eventByte){ @@ -259,7 +259,7 @@ void sdp_parser_handle_service_search(uint8_t * data, uint16_t total_count, uint bt_store_16(event, 2, total_count); bt_store_16(event, 4, record_counter); bt_store_32(event, 6, record_handle); - (*sdp_query_callback)((sdp_query_event_t*)&event); + (*sdp_query_callback)(HCI_EVENT_PACKET, event, sizeof(event)); } } #endif @@ -269,5 +269,5 @@ void sdp_parser_handle_done(uint8_t status){ event[0] = SDP_QUERY_COMPLETE; event[1] = 1; event[2] = status; - (*sdp_query_callback)((sdp_query_event_t*)&event); + (*sdp_query_callback)(HCI_EVENT_PACKET, event, sizeof(event)); } diff --git a/src/classic/sdp_parser.h b/src/classic/sdp_parser.h index 327b3acd3..d1d92d566 100644 --- a/src/classic/sdp_parser.h +++ b/src/classic/sdp_parser.h @@ -70,13 +70,6 @@ int de_state_size(uint8_t eventByte, de_state_t *de_state); /* API_START */ -// SDP Parser -// Basic SDP Query event type -typedef struct sdp_query_event { - uint8_t type; - void * dummy; // force sdp_query_event struct to be word aligned -> avoid -Wcast-align warning -} sdp_query_event_t; - /* * @brief */ @@ -85,7 +78,7 @@ void sdp_parser_init(void); /* * @brief Registers a callback to receive attribute value data and parse complete event. */ -void sdp_parser_register_callback(void (*sdp_callback)(sdp_query_event_t * event)); +void sdp_parser_register_callback(void (*sdp_callback)(uint8_t packet_type, uint8_t *packet, uint16_t size)); /* * @brief diff --git a/src/classic/sdp_query_rfcomm.c b/src/classic/sdp_query_rfcomm.c index 9f2ec31ad..d0837ec31 100644 --- a/src/classic/sdp_query_rfcomm.c +++ b/src/classic/sdp_query_rfcomm.c @@ -56,7 +56,7 @@ void sdp_query_rfcomm_init(void); // called by test/sdp_client void sdp_query_rfcomm_init(void); -static void dummy_notify_app(sdp_query_event_t* event, void * context); +static void dummy_notify_app(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context); typedef enum { GET_PROTOCOL_LIST_LENGTH = 1, @@ -90,11 +90,11 @@ static de_state_t de_header_state; static de_state_t sn_de_header_state; static void *sdp_app_context; -static void (*sdp_app_callback)(sdp_query_event_t * event, void * context) = dummy_notify_app; +static void (*sdp_app_callback)(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context) = dummy_notify_app; // -static void dummy_notify_app(sdp_query_event_t* event, void * context){} +static void dummy_notify_app(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context){} static void emit_service(void){ uint8_t event[3+SDP_SERVICE_NAME_LEN+1]; @@ -103,11 +103,11 @@ static void emit_service(void){ event[2] = sdp_rfcomm_channel_nr; memcpy(&event[3], sdp_service_name, sdp_service_name_len); event[3+sdp_service_name_len] = 0; - (*sdp_app_callback)((sdp_query_event_t*)event, sdp_app_context); + (*sdp_app_callback)(HCI_EVENT_PACKET, event, sizeof(event), sdp_app_context); sdp_rfcomm_channel_nr = 0; } -void sdp_query_rfcomm_register_callback(void (*sdp_callback)(sdp_query_event_t* event, void * context), void * context){ +void sdp_query_rfcomm_register_callback(void (*sdp_callback)(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context), void * context){ sdp_app_callback = dummy_notify_app; if (sdp_callback != NULL){ sdp_app_callback = sdp_callback; @@ -256,9 +256,8 @@ static void handleServiceNameData(uint32_t attribute_value_length, uint32_t data } } -static void handle_sdp_parser_event(sdp_query_event_t * event){ - const uint8_t * ve; - switch (event->type){ +static void handle_sdp_parser_event(uint8_t packet_type, uint8_t *packet, uint16_t size){ + switch (packet[0]){ case SDP_QUERY_SERVICE_RECORD_HANDLE: // handle service without a name if (sdp_rfcomm_channel_nr){ @@ -270,18 +269,21 @@ static void handle_sdp_parser_event(sdp_query_event_t * event){ sdp_service_name[0] = 0; break; case SDP_QUERY_ATTRIBUTE_VALUE: - ve = (const uint8_t *) event; - // 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(ve),sdp_query_attribute_value_event_get_data_offset(ve), sdp_query_attribute_value_event_get_data(ve)); - - switch (sdp_query_attribute_value_event_get_attribute_id(ve)){ + // 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)){ case SDP_ProtocolDescriptorList: // find rfcomm channel - handleProtocolDescriptorListData(sdp_query_attribute_value_event_get_attribute_length(ve),sdp_query_attribute_value_event_get_data_offset(ve), sdp_query_attribute_value_event_get_data(ve)); + 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)); break; case 0x0100: // get service name - handleServiceNameData(sdp_query_attribute_value_event_get_attribute_length(ve),sdp_query_attribute_value_event_get_data_offset(ve), sdp_query_attribute_value_event_get_data(ve)); + 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)); break; default: // give up @@ -293,7 +295,7 @@ static void handle_sdp_parser_event(sdp_query_event_t * event){ if (sdp_rfcomm_channel_nr){ emit_service(); } - (*sdp_app_callback)(event, sdp_app_context); + (*sdp_app_callback)(HCI_EVENT_PACKET, packet, size, sdp_app_context); break; } // insert higher level code HERE diff --git a/src/classic/sdp_query_rfcomm.h b/src/classic/sdp_query_rfcomm.h index 56989c94d..82def9f10 100644 --- a/src/classic/sdp_query_rfcomm.h +++ b/src/classic/sdp_query_rfcomm.h @@ -57,7 +57,7 @@ extern "C" { /** * @brief Registers a callback to receive RFCOMM service and query complete event. */ -void sdp_query_rfcomm_register_callback(void(*sdp_app_callback)(sdp_query_event_t * event, void * context), void * context); +void sdp_query_rfcomm_register_callback(void(*sdp_app_callback)(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context), void * context); /** * @brief Searches SDP records on a remote device for RFCOMM services with a given UUID. diff --git a/test/hfp/mock.c b/test/hfp/mock.c index b17438d3a..9f1d3253d 100644 --- a/test/hfp/mock.c +++ b/test/hfp/mock.c @@ -71,7 +71,7 @@ static uint8_t rfcomm_reserved_buffer[1000]; hfp_connection_t * hfp_context; void (*registered_rfcomm_packet_handler)(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size); -void (*registered_sdp_app_callback)(sdp_query_event_t * event, void * context); +void (*registered_sdp_app_callback)(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context); uint8_t * get_rfcomm_payload(){ return &rfcomm_payload[0]; @@ -201,7 +201,7 @@ int hci_send_cmd(const hci_cmd_t *cmd, ...){ } -void sdp_query_rfcomm_register_callback(void(*sdp_app_callback)(sdp_query_event_t * event, void * context), void * context){ +void sdp_query_rfcomm_register_callback(void(*sdp_app_callback)(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context), void * context){ registered_sdp_app_callback = sdp_app_callback; registered_sdp_app_context = context; } @@ -211,7 +211,7 @@ static void sdp_query_complete_response(uint8_t status){ event[0] = SDP_QUERY_COMPLETE; event[1] = 1; event[2] = status; - (*registered_sdp_app_callback)((sdp_query_event_t*)&event, registered_sdp_app_context); + (*registered_sdp_app_callback)(HCI_EVENT_PACKET, event, sizeof(event), registered_sdp_app_context); } static void sdp_query_rfcomm_service_response(uint8_t status){ @@ -222,7 +222,7 @@ static void sdp_query_rfcomm_service_response(uint8_t status){ event[2] = sdp_rfcomm_channel_nr; memcpy(&event[3], sdp_rfcomm_service_name, sdp_service_name_len); event[3+sdp_service_name_len] = 0; - (*registered_sdp_app_callback)((sdp_query_event_t*)&event, registered_sdp_app_context); + (*registered_sdp_app_callback)(HCI_EVENT_PACKET, event, sizeof(event), registered_sdp_app_context); } void sdp_query_rfcomm_channel_and_name_for_uuid(bd_addr_t remote, uint16_t uuid){ diff --git a/test/pts/classic_test.c b/test/pts/classic_test.c index f8fd88daa..0fb7e79fb 100644 --- a/test/pts/classic_test.c +++ b/test/pts/classic_test.c @@ -395,14 +395,11 @@ static void handle_found_service(char * name, uint8_t port){ rfcomm_channel_nr = port; } -static void handle_query_rfcomm_event(sdp_query_event_t * event, void * context){ - const uint8_t * ve; - - switch (event->type){ +static void handle_query_rfcomm_event(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context){ + switch (packet[0]){ case SDP_QUERY_RFCOMM_SERVICE: - ve = (const uint8_t*) event; - handle_found_service(sdp_query_rfcomm_service_event_get_name(ve), - sdp_query_rfcomm_service_event_get_rfcomm_channel(ve)); + handle_found_service(sdp_query_rfcomm_service_event_get_name(packet), + sdp_query_rfcomm_service_event_get_rfcomm_channel(packet)); break; case SDP_QUERY_COMPLETE: printf("SDP SPP Query complete\n"); diff --git a/test/pts/hfp_test.c b/test/pts/hfp_test.c index 3a51d3788..7069dd845 100644 --- a/test/pts/hfp_test.c +++ b/test/pts/hfp_test.c @@ -139,19 +139,13 @@ static void packet_handler(void * connection, uint8_t packet_type, uint16_t chan } } -void handle_query_rfcomm_event(sdp_query_event_t * event, void * context){ - const uint8_t * ve; - const uint8_t * ce; - +void handle_query_rfcomm_event(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context){ switch (event->type){ case SDP_QUERY_RFCOMM_SERVICE: - ve = (const uint8_t*) event; - channel_nr = sdp_query_rfcomm_service_event_get_name(ve); - printf("** Service name: '%s', RFCOMM port %u\n", sdp_query_rfcomm_service_event_get_rfcomm_channel(ve), channel_nr); + channel_nr = sdp_query_rfcomm_service_event_get_name(packet); + printf("** Service name: '%s', RFCOMM port %u\n", sdp_query_rfcomm_service_event_get_rfcomm_channel(packet), channel_nr); break; case SDP_QUERY_COMPLETE: - ce = (const uint8_t*) event; - if (channel_nr > 0) { printf("RFCOMM create channel.\n"); rfcomm_create_channel_internal(NULL, remote, channel_nr); diff --git a/test/sdp_client/general_sdp_query.c b/test/sdp_client/general_sdp_query.c index 072c921cd..912cd621b 100644 --- a/test/sdp_client/general_sdp_query.c +++ b/test/sdp_client/general_sdp_query.c @@ -109,62 +109,55 @@ void assertBuffer(int size){ } } -static void test_attribute_value_event(const uint8_t * ve){ +static void test_attribute_value_event(const uint8_t * event){ static int recordId = 0; static int attributeId = 0; static int attributeOffset = 0; static int attributeLength = 0; - CHECK_EQUAL(ve[0], SDP_QUERY_ATTRIBUTE_VALUE); + CHECK_EQUAL(event[0], SDP_QUERY_ATTRIBUTE_VALUE); // record ids are sequential - if (sdp_query_attribute_value_event_get_record_id(ve) != recordId){ + if (sdp_query_attribute_value_event_get_record_id(event) != recordId){ recordId++; } - CHECK_EQUAL(sdp_query_attribute_value_event_get_record_id(ve), recordId); + CHECK_EQUAL(sdp_query_attribute_value_event_get_record_id(event), recordId); // is attribute value complete - if (sdp_query_attribute_value_event_get_attribute_id(ve) != attributeId ){ + if (sdp_query_attribute_value_event_get_attribute_id(event) != attributeId ){ if (attributeLength > 0){ CHECK_EQUAL(attributeLength, attributeOffset+1); } - attributeId = sdp_query_attribute_value_event_get_attribute_id(ve); + attributeId = sdp_query_attribute_value_event_get_attribute_id(event); attributeOffset = 0; } // count attribute value bytes - if (sdp_query_attribute_value_event_get_data_offset(ve) != attributeOffset){ + if (sdp_query_attribute_value_event_get_data_offset(event) != attributeOffset){ attributeOffset++; } - attributeLength = sdp_query_attribute_value_event_get_attribute_length(ve); + attributeLength = sdp_query_attribute_value_event_get_attribute_length(event); - CHECK_EQUAL(sdp_query_attribute_value_event_get_data_offset(ve), attributeOffset); + CHECK_EQUAL(sdp_query_attribute_value_event_get_data_offset(event), attributeOffset); } -static void handle_sdp_parser_event(sdp_query_event_t * event){ - - const uint8_t * ve; - const uint8_t * ce; - - switch (event->type){ +static void handle_sdp_parser_event(uint8_t packet_type, uint8_t *packet, uint16_t size){ + switch (packet[0]){ case SDP_QUERY_ATTRIBUTE_VALUE: - ve = (const uint8_t*) event; - - test_attribute_value_event(ve); + test_attribute_value_event(packet); // handle new record - if (sdp_query_attribute_value_event_get_record_id(ve) != record_id){ - record_id = sdp_query_attribute_value_event_get_record_id(ve); + if (sdp_query_attribute_value_event_get_record_id(packet) != record_id){ + record_id = sdp_query_attribute_value_event_get_record_id(packet); } // buffer data - assertBuffer(sdp_query_attribute_value_event_get_attribute_length(ve)); - attribute_value[sdp_query_attribute_value_event_get_data_offset(ve)] = sdp_query_attribute_value_event_get_data(ve); + 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); break; case SDP_QUERY_COMPLETE: - ce = (const uint8_t *) event; - printf("General query done with status %d.\n", sdp_query_complete_event_get_status(ce)); + printf("General query done with status %d.\n", sdp_query_complete_event_get_status(packet)); break; } } diff --git a/test/sdp_client/sdp_rfcomm_query.c b/test/sdp_client/sdp_rfcomm_query.c index de60fac61..7c913b10c 100644 --- a/test/sdp_client/sdp_rfcomm_query.c +++ b/test/sdp_client/sdp_rfcomm_query.c @@ -90,21 +90,17 @@ extern "C" void sdp_client_query(bd_addr_t remote, uint8_t * des_serviceSearchPa void sdp_query_rfcomm_init(); -void handle_query_rfcomm_event(sdp_query_event_t * event, void * context){ - const uint8_t * ce; - uint8_t * ve = (uint8_t *) event; - - switch (event->type){ +void handle_query_rfcomm_event(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context){ + switch (packet[0]){ case SDP_QUERY_RFCOMM_SERVICE: - channel_nr[service_index] = sdp_query_rfcomm_service_event_get_rfcomm_channel(ve); + channel_nr[service_index] = sdp_query_rfcomm_service_event_get_rfcomm_channel(packet); service_name[service_index] = (char*) malloc(SDP_SERVICE_NAME_LEN+1); - strncpy(service_name[service_index], sdp_query_rfcomm_service_event_get_name(ve), SDP_SERVICE_NAME_LEN); + strncpy(service_name[service_index], sdp_query_rfcomm_service_event_get_name(packet), SDP_SERVICE_NAME_LEN); service_name[service_index][SDP_SERVICE_NAME_LEN] = 0; // printf("CALLBACK: Service name: '%s', RFCOMM port %u, service index %d\n", service_name[service_index], channel_nr[service_index], service_index); service_index++; break; case SDP_QUERY_COMPLETE: - ce = (const uint8_t*) event; // printf("CALLBACK: Client query response done. \n"); break; } diff --git a/test/sdp_client/service_attribute_search_query.c b/test/sdp_client/service_attribute_search_query.c index 8aaca14a6..efa371e40 100644 --- a/test/sdp_client/service_attribute_search_query.c +++ b/test/sdp_client/service_attribute_search_query.c @@ -87,29 +87,22 @@ static void test_attribute_value_event(const uint8_t * event){ } -static void handle_sdp_parser_event(sdp_query_event_t * event){ - - const uint8_t * ve; - const uint8_t * ce; - - switch (event->type){ +static void handle_sdp_parser_event(uint8_t packet_type, uint8_t *packet, uint16_t size){ + switch (packet[0]){ case SDP_QUERY_ATTRIBUTE_VALUE: - ve = (const uint8_t *) event; - - test_attribute_value_event(ve); + test_attribute_value_event(packet); // handle new record - if (sdp_query_attribute_value_event_get_record_id(ve) != record_id){ - record_id = sdp_query_attribute_value_event_get_record_id(ve); + if (sdp_query_attribute_value_event_get_record_id(packet) != record_id){ + record_id = sdp_query_attribute_value_event_get_record_id(packet); } // buffer data - assertBuffer(sdp_query_attribute_value_event_get_attribute_length(ve)); - attribute_value[sdp_query_attribute_value_event_get_data_offset(ve)] = sdp_query_attribute_value_event_get_data(ve); + 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); break; case SDP_QUERY_COMPLETE: - ce = (const uint8_t*) event; - printf("General query done with status %d.\n", sdp_query_complete_event_get_status(ce)); + printf("General query done with status %d.\n", sdp_query_complete_event_get_status(packet)); break; } } diff --git a/test/sdp_client/service_search_query.c b/test/sdp_client/service_search_query.c index d4ea0c6aa..a7a42a305 100644 --- a/test/sdp_client/service_search_query.c +++ b/test/sdp_client/service_search_query.c @@ -40,24 +40,15 @@ static uint8_t sdp_test_record_list[] = { }; -static void handle_sdp_parser_event(sdp_query_event_t * event){ - const uint8_t * ve; - const uint8_t * ce; - +static void handle_sdp_parser_event(uint8_t packet_type, uint8_t *packet, uint16_t size){ static uint32_t record_handle = sdp_test_record_list[0]; - - switch (event->type){ + switch (packet[0]){ case SDP_QUERY_SERVICE_RECORD_HANDLE: - ve = (const uint8_t*) event; - - CHECK_EQUAL(sdp_query_service_record_handle_event_get_record_handle(ve), record_handle); + CHECK_EQUAL(sdp_query_service_record_handle_event_get_record_handle(packet), record_handle); record_handle++; - - break; case SDP_QUERY_COMPLETE: - ce = (const uint8_t *) event; - printf("General query done with status %d.\n", sdp_query_complete_event_get_status(ce)); + printf("General query done with status %d.\n", sdp_query_complete_event_get_status(packet)); break; } }