sdp_parser: replace sdp_query_complete_event_t with regular hci event

This commit is contained in:
Matthias Ringwald 2016-01-29 18:30:07 +01:00
parent 7bd8e93b3a
commit fd2eb611c5
15 changed files with 88 additions and 99 deletions

View File

@ -81,17 +81,17 @@
#include <linux/if_tun.h>
#endif
#include "hci_cmd.h"
#include "btstack_run_loop.h"
#include "classic/sdp_util.h"
#include "hci.h"
#include "btstack_memory.h"
#include "btstack_event.h"
#include "btstack_run_loop.h"
#include "classic/sdp_client.h"
#include "classic/sdp_parser.h"
#include "classic/sdp_query_util.h"
#include "classic/sdp_util.h"
#include "hci.h"
#include "hci_cmd.h"
#include "hci_dump.h"
#include "l2cap.h"
#include "classic/sdp_parser.h"
#include "classic/sdp_client.h"
#include "classic/sdp_query_util.h"
#include "pan.h"
static int record_id = -1;
@ -319,8 +319,8 @@ static char * get_string_from_data_element(uint8_t * element){
*/
static void handle_sdp_client_query_result(sdp_query_event_t *event)
{
const uint8_t * complete_event;
sdp_query_attribute_value_event_t *value_event;
sdp_query_complete_event_t *complete_event;
des_iterator_t des_list_it;
des_iterator_t prot_it;
char *str;
@ -414,7 +414,7 @@ static void handle_sdp_client_query_result(sdp_query_event_t *event)
case SDP_QUERY_COMPLETE:
complete_event = (sdp_query_complete_event_t*) event;
fprintf(stderr, "General query done with status %d.\n", complete_event->status);
fprintf(stderr, "General query done with status %d.\n", sdp_query_complete_event_get_status(complete_event));
break;
}

View File

@ -51,17 +51,17 @@
#include <stdlib.h>
#include <string.h>
#include "hci_cmd.h"
#include "btstack_run_loop.h"
#include "classic/sdp_util.h"
#include "hci.h"
#include "btstack_event.h"
#include "btstack_memory.h"
#include "btstack_run_loop.h"
#include "classic/sdp_client.h"
#include "classic/sdp_parser.h"
#include "classic/sdp_query_util.h"
#include "classic/sdp_util.h"
#include "hci.h"
#include "hci_cmd.h"
#include "hci_dump.h"
#include "l2cap.h"
#include "classic/sdp_parser.h"
#include "classic/sdp_client.h"
#include "classic/sdp_query_util.h"
#include "pan.h"
int record_id = -1;
@ -165,7 +165,7 @@ static char * get_string_from_data_element(uint8_t * element){
static void handle_sdp_client_query_result(sdp_query_event_t * event){
/* LISTING_PAUSE */
sdp_query_attribute_value_event_t * ve;
sdp_query_complete_event_t * ce;
const uint8_t * ce;
des_iterator_t des_list_it;
des_iterator_t prot_it;
char *str;
@ -263,8 +263,8 @@ static void handle_sdp_client_query_result(sdp_query_event_t * event){
}
break;
case SDP_QUERY_COMPLETE:
ce = (sdp_query_complete_event_t*) event;
printf("General query done with status %d.\n\n", ce->status);
ce = (const uint8_t *) event;
printf("General query done with status %d.\n\n", sdp_query_complete_event_get_status(ce));
break;
}
/* LISTING_RESUME */

View File

@ -50,18 +50,17 @@
#include <stdlib.h>
#include <string.h>
#include "classic/sdp_parser.h"
#include "classic/sdp_client.h"
#include "classic/sdp_query_util.h"
#include "hci_cmd.h"
#include "btstack_run_loop.h"
#include "hci.h"
#include "btstack_event.h"
#include "btstack_memory.h"
#include "btstack_run_loop.h"
#include "classic/sdp_client.h"
#include "classic/sdp_parser.h"
#include "classic/sdp_parser.h"
#include "classic/sdp_query_util.h"
#include "hci.h"
#include "hci_cmd.h"
#include "hci_dump.h"
#include "l2cap.h"
#include "classic/sdp_parser.h"
int record_id = -1;
int attribute_id = -1;
@ -147,7 +146,7 @@ static void assertBuffer(int size){
/* LISTING_START(HandleSDPQUeryResult): Handling query result chunks. */
static void handle_sdp_client_query_result(sdp_query_event_t * event){
sdp_query_attribute_value_event_t * ve;
sdp_query_complete_event_t * ce;
const uint8_t * ce;
switch (event->type){
case SDP_QUERY_ATTRIBUTE_VALUE:
@ -168,8 +167,8 @@ static void handle_sdp_client_query_result(sdp_query_event_t * event){
}
break;
case SDP_QUERY_COMPLETE:
ce = (sdp_query_complete_event_t*) event;
printf("General query done with status %d.\n\n", ce->status);
ce = (const uint8_t *) event;
printf("General query done with status %d.\n\n", sdp_query_complete_event_get_status(ce));
exit(0);
break;
}

View File

@ -1577,6 +1577,7 @@ static void rfcomm_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t
static void handle_sdp_rfcomm_service_result(sdp_query_event_t * rfcomm_event, void * context){
switch (rfcomm_event->type){
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];
@ -1584,13 +1585,8 @@ static void handle_sdp_rfcomm_service_result(sdp_query_event_t * rfcomm_event, v
socket_connection_send_packet(context, HCI_EVENT_PACKET, 0, event, event_len);
break;
}
case SDP_QUERY_COMPLETE: {
sdp_query_complete_event_t * complete_event = (sdp_query_complete_event_t*) rfcomm_event;
uint8_t event[] = { rfcomm_event->type, 1, complete_event->status};
hci_dump_packet(HCI_EVENT_PACKET, 0, event, sizeof(event));
socket_connection_send_packet(context, HCI_EVENT_PACKET, 0, event, sizeof(event));
default:
break;
}
}
}
@ -1603,7 +1599,8 @@ 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){
sdp_query_attribute_value_event_t * ve;
sdp_query_complete_event_t * complete_event;
const uint8_t * complete_event;
int event_len;
switch (event->type){
case SDP_QUERY_ATTRIBUTE_VALUE:
@ -1629,10 +1626,10 @@ static void handle_sdp_client_query_result(sdp_query_event_t * event){
break;
case SDP_QUERY_COMPLETE:
complete_event = (sdp_query_complete_event_t*) event;
uint8_t event[] = { SDP_QUERY_COMPLETE, 1, complete_event->status};
hci_dump_packet(HCI_EVENT_PACKET, 0, event, sizeof(event));
socket_connection_send_packet(sdp_client_query_connection, HCI_EVENT_PACKET, 0, event, sizeof(event));
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);
break;
}
}

View File

@ -416,7 +416,7 @@ 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;
sdp_query_complete_event_t * ce;
const uint8_t * ce;
hfp_connection_t * connection = connection_doing_sdp_query;
if ( connection->state != HFP_W4_SDP_QUERY_COMPLETE) return;
@ -432,7 +432,7 @@ static void handle_query_rfcomm_event(sdp_query_event_t * event, void * context)
break;
case SDP_QUERY_COMPLETE:
connection_doing_sdp_query = NULL;
ce = (sdp_query_complete_event_t*) event;
ce = (const uint8_t*) event;
if (connection->rfcomm_channel_nr > 0){
connection->state = HFP_W4_RFCOMM_CONNECTED;
@ -440,7 +440,7 @@ static void handle_query_rfcomm_event(sdp_query_event_t * event, void * context)
rfcomm_create_channel(connection->remote_addr, connection->rfcomm_channel_nr, NULL);
break;
}
log_info("rfcomm service not found, status %u.", ce->status);
log_info("rfcomm service not found, status %u.", sdp_query_complete_event_get_status(ce));
break;
default:
break;

View File

@ -627,7 +627,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
static void handle_query_rfcomm_event(sdp_query_event_t * event, void * context){
const uint8_t * ve;
sdp_query_complete_event_t * ce;
const uint8_t * ce;
switch (event->type){
case SDP_QUERY_RFCOMM_SERVICE:
@ -636,7 +636,7 @@ static void handle_query_rfcomm_event(sdp_query_event_t * event, void * context)
printf("** Service name: '%s', RFCOMM port %u\n", sdp_query_rfcomm_service_event_get_name(ve), channel_nr);
break;
case SDP_QUERY_COMPLETE:
ce = (sdp_query_complete_event_t*) event;
ce = (const uint8_t*) event;
if (channel_nr > 0){
hsp_state = HSP_W4_RFCOMM_CONNECTED;
@ -645,9 +645,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", ce->status);
printf("Service not found, status %u.\n", sdp_query_complete_event_get_status(ce));
if (ce->status){
emit_event(HSP_SUBEVENT_AUDIO_CONNECTION_COMPLETE, ce->status);
emit_event(HSP_SUBEVENT_AUDIO_CONNECTION_COMPLETE, sdp_query_complete_event_get_status(ce));
} else {
emit_event(HSP_SUBEVENT_AUDIO_CONNECTION_COMPLETE, SDP_SERVICE_NOT_FOUND);
}

View File

@ -575,7 +575,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
static void handle_query_rfcomm_event(sdp_query_event_t * event, void * context){
const uint8_t * ve;
sdp_query_complete_event_t * ce;
const uint8_t * ce;
switch (event->type){
case SDP_QUERY_RFCOMM_SERVICE:
@ -584,7 +584,7 @@ static void handle_query_rfcomm_event(sdp_query_event_t * event, void * context)
printf("** Service name: '%s', RFCOMM port %u\n", sdp_query_rfcomm_service_event_get_name(ve), channel_nr);
break;
case SDP_QUERY_COMPLETE:
ce = (sdp_query_complete_event_t*) event;
ce = (const uint8_t*) event;
if (channel_nr > 0){
hsp_state = HSP_W4_RFCOMM_CONNECTED;
@ -593,7 +593,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", ce->status);
printf("Service not found, status %u.\n", sdp_query_complete_event_get_status(ce));
exit(0);
break;
}

View File

@ -272,9 +272,9 @@ void sdp_parser_handle_service_search(uint8_t * data, uint16_t total_count, uint
#endif
void sdp_parser_handle_done(uint8_t status){
sdp_query_complete_event_t complete_event = {
SDP_QUERY_COMPLETE,
status
};
(*sdp_query_callback)((sdp_query_event_t*)&complete_event);
uint8_t event[3];
event[0] = SDP_QUERY_COMPLETE;
event[1] = 1;
event[2] = status;
(*sdp_query_callback)((sdp_query_event_t*)&event);
}

View File

@ -77,13 +77,6 @@ typedef struct sdp_query_event {
void * dummy; // force sdp_query_event struct to be word aligned -> avoid -Wcast-align warning
} sdp_query_event_t;
// SDP Query event to indicate that query/parser is complete.
typedef struct sdp_query_complete_event {
uint8_t type;
uint8_t status; // 0 == OK
void * dummy; // force sdp_query_complete_event struct to be word aligned -> avoid -Wcast-align warning
} sdp_query_complete_event_t;
// SDP Parser event to deliver an attribute value byte by byte
typedef struct sdp_query_attribute_value_event {
uint8_t type;

View File

@ -207,11 +207,11 @@ void sdp_query_rfcomm_register_callback(void(*sdp_app_callback)(sdp_query_event_
}
static void sdp_query_complete_response(uint8_t status){
sdp_query_complete_event_t complete_event = {
SDP_QUERY_COMPLETE,
status
};
(*registered_sdp_app_callback)((sdp_query_event_t*)&complete_event, registered_sdp_app_context);
uint8_t event[3];
event[0] = SDP_QUERY_COMPLETE;
event[1] = 1;
event[2] = status;
(*registered_sdp_app_callback)((sdp_query_event_t*)&event, registered_sdp_app_context);
}
static void sdp_query_rfcomm_service_response(uint8_t status){

View File

@ -141,7 +141,7 @@ 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;
sdp_query_complete_event_t * ce;
const uint8_t * ce;
switch (event->type){
case SDP_QUERY_RFCOMM_SERVICE:
@ -150,7 +150,7 @@ void handle_query_rfcomm_event(sdp_query_event_t * event, void * context){
printf("** Service name: '%s', RFCOMM port %u\n", sdp_query_rfcomm_service_event_get_rfcomm_channel(ve), channel_nr);
break;
case SDP_QUERY_COMPLETE:
ce = (sdp_query_complete_event_t*) event;
ce = (const uint8_t*) event;
if (channel_nr > 0) {
printf("RFCOMM create channel.\n");

View File

@ -12,14 +12,14 @@
#include <stdlib.h>
#include <string.h>
#include "hci_cmd.h"
#include "btstack_run_loop.h"
#include "hci.h"
#include "btstack_event.h"
#include "btstack_memory.h"
#include "btstack_run_loop.h"
#include "classic/sdp_parser.h"
#include "hci.h"
#include "hci_cmd.h"
#include "hci_dump.h"
#include "l2cap.h"
#include "classic/sdp_parser.h"
#include "CppUTest/TestHarness.h"
#include "CppUTest/CommandLineTestRunner.h"
@ -145,7 +145,7 @@ static void test_attribute_value_event(sdp_query_attribute_value_event_t* event)
static void handle_sdp_parser_event(sdp_query_event_t * event){
sdp_query_attribute_value_event_t * ve;
sdp_query_complete_event_t * ce;
const uint8_t * ce;
switch (event->type){
case SDP_QUERY_ATTRIBUTE_VALUE:
@ -163,8 +163,8 @@ static void handle_sdp_parser_event(sdp_query_event_t * event){
break;
case SDP_QUERY_COMPLETE:
ce = (sdp_query_complete_event_t*) event;
printf("General query done with status %d.\n", ce->status);
ce = (const uint8_t *) event;
printf("General query done with status %d.\n", sdp_query_complete_event_get_status(ce));
break;
}
}

View File

@ -91,7 +91,7 @@ void sdp_query_rfcomm_init();
void handle_query_rfcomm_event(sdp_query_event_t * event, void * context){
sdp_query_complete_event_t * ce;
const uint8_t * ce;
uint8_t * ve = (uint8_t *) event;
printf("handle_query_rfcomm_event\n");
@ -106,7 +106,7 @@ void handle_query_rfcomm_event(sdp_query_event_t * event, void * context){
service_index++;
break;
case SDP_QUERY_COMPLETE:
ce = (sdp_query_complete_event_t*) event;
ce = (const uint8_t*) event;
// printf("CALLBACK: Client query response done. \n");
break;
}

View File

@ -12,14 +12,14 @@
#include <stdlib.h>
#include <string.h>
#include "hci_cmd.h"
#include "btstack_run_loop.h"
#include "hci.h"
#include "btstack_event.h"
#include "btstack_memory.h"
#include "btstack_run_loop.h"
#include "classic/sdp_parser.h"
#include "hci.h"
#include "hci_cmd.h"
#include "hci_dump.h"
#include "l2cap.h"
#include "classic/sdp_parser.h"
#include "CppUTest/TestHarness.h"
#include "CppUTest/CommandLineTestRunner.h"
@ -90,7 +90,7 @@ static void test_attribute_value_event(sdp_query_attribute_value_event_t* event)
static void handle_sdp_parser_event(sdp_query_event_t * event){
sdp_query_attribute_value_event_t * ve;
sdp_query_complete_event_t * ce;
const uint8_t * ce;
switch (event->type){
case SDP_QUERY_ATTRIBUTE_VALUE:
@ -108,8 +108,8 @@ static void handle_sdp_parser_event(sdp_query_event_t * event){
break;
case SDP_QUERY_COMPLETE:
ce = (sdp_query_complete_event_t*) event;
printf("General query done with status %d.\n", ce->status);
ce = (const uint8_t*) event;
printf("General query done with status %d.\n", sdp_query_complete_event_get_status(ce));
break;
}
}

View File

@ -12,14 +12,14 @@
#include <stdlib.h>
#include <string.h>
#include "hci_cmd.h"
#include "btstack_run_loop.h"
#include "hci.h"
#include "btstack_event.h"
#include "btstack_memory.h"
#include "btstack_run_loop.h"
#include "classic/sdp_parser.h"
#include "hci.h"
#include "hci_cmd.h"
#include "hci_dump.h"
#include "l2cap.h"
#include "classic/sdp_parser.h"
#include "CppUTest/TestHarness.h"
#include "CppUTest/CommandLineTestRunner.h"
@ -42,7 +42,7 @@ static uint8_t sdp_test_record_list[] = {
static void handle_sdp_parser_event(sdp_query_event_t * event){
sdp_query_service_record_handle_event_t * ve;
sdp_query_complete_event_t * ce;
const uint8_t * ce;
static uint32_t record_handle = sdp_test_record_list[0];
@ -56,8 +56,8 @@ static void handle_sdp_parser_event(sdp_query_event_t * event){
break;
case SDP_QUERY_COMPLETE:
ce = (sdp_query_complete_event_t*) event;
printf("General query done with status %d.\n", ce->status);
ce = (const uint8_t *) event;
printf("General query done with status %d.\n", sdp_query_complete_event_get_status(ce));
break;
}
}