in progress: using sdp_query_complete_event_t instead of sdp_parser_complete_event_t

This commit is contained in:
matthias.ringwald@gmail.com 2013-10-18 10:19:57 +00:00
parent d7e0e3a80c
commit f2f3c97d2b
11 changed files with 48 additions and 50 deletions

View File

@ -66,10 +66,10 @@ void assertBuffer(int size){
static void handle_general_sdp_parser_event(sdp_parser_event_t * event){
sdp_parser_attribute_value_event_t * ve;
sdp_parser_complete_event_t * ce;
sdp_query_complete_event_t * ce;
switch (event->type){
case SDP_PARSER_ATTRIBUTE_VALUE:
case SDP_QUERY_ATTRIBUTE_VALUE:
ve = (sdp_parser_attribute_value_event_t*) event;
// handle new record
@ -86,8 +86,8 @@ static void handle_general_sdp_parser_event(sdp_parser_event_t * event){
hexdump(attribute_value, ve->attribute_length);
}
break;
case SDP_PARSER_COMPLETE:
ce = (sdp_parser_complete_event_t*) event;
case SDP_QUERY_COMPLETE:
ce = (sdp_query_complete_event_t*) event;
printf("General query done with status %d.\n\n", ce->status);
break;
}

View File

@ -84,10 +84,10 @@ static void assertBuffer(int size){
static void handle_sdp_client_query_result(sdp_parser_event_t * event){
sdp_parser_attribute_value_event_t * ve;
sdp_parser_complete_event_t * ce;
sdp_query_complete_event_t * ce;
switch (event->type){
case SDP_PARSER_ATTRIBUTE_VALUE:
case SDP_QUERY_ATTRIBUTE_VALUE:
ve = (sdp_parser_attribute_value_event_t*) event;
// handle new record
@ -104,8 +104,8 @@ static void handle_sdp_client_query_result(sdp_parser_event_t * event){
de_dump_data_element(attribute_value);
}
break;
case SDP_PARSER_COMPLETE:
ce = (sdp_parser_complete_event_t*) event;
case SDP_QUERY_COMPLETE:
ce = (sdp_query_complete_event_t*) event;
printf("General query done with status %d.\n\n", ce->status);
break;
}

View File

@ -65,7 +65,11 @@ extern "C" {
// Security Manager protocol data
#define SM_DATA_PACKET 0x09
// SDP query result
// format: type (8), record_id (16), attribute_id (16), attribute_length (16), attribute_value (max 1k)
#define SDP_CLIENT_PACKET 0x0a
// debug log messages
#define LOG_MESSAGE_PACKET 0xfc
@ -205,7 +209,8 @@ extern "C" {
// data: event(8), len(8), record nr(16), attribute id(16), attribute value(var)
#define SDP_QUERY_ATTRIBUTE_VALUE 0x93
//#define SDP_PARSER_ATTRIBUTE_VALUE 0x94
//#define SDP_PARSER_COMPLETE 0x95
// last error code in 2.1 is 0x38 - we start with 0x50 for BTstack errors
@ -394,6 +399,7 @@ extern const hci_cmd_t l2cap_unregister_service;
extern const hci_cmd_t sdp_register_service_record;
extern const hci_cmd_t sdp_unregister_service_record;
extern const hci_cmd_t sdp_client_query_rfcomm_services;
extern const hci_cmd_t sdp_client_query_services;
// accept connection @param bd_addr(48), rfcomm_cid (16)

View File

@ -57,6 +57,7 @@
#include <btstack/btstack.h>
#include <btstack/linked_list.h>
#include <btstack/run_loop.h>
#include <btstack/hci_cmds.h>
#include "debug.h"
#include "hci.h"
@ -569,10 +570,10 @@ static void sdp_client_assert_buffer(int size){
// define new packet type SDP_CLIENT_PACKET
static void handle_sdp_client_query_result(sdp_parser_event_t * event){
sdp_parser_attribute_value_event_t * ve;
sdp_parser_complete_event_t * complete_event;
sdp_query_complete_event_t * complete_event;
switch (event->type){
case SDP_PARSER_ATTRIBUTE_VALUE:
case SDP_QUERY_ATTRIBUTE_VALUE:
ve = (sdp_parser_attribute_value_event_t*) event;
sdp_client_assert_buffer(ve->attribute_length);
@ -595,8 +596,8 @@ static void handle_sdp_client_query_result(sdp_parser_event_t * event){
}
break;
case SDP_PARSER_COMPLETE:
complete_event = (sdp_parser_complete_event_t*) event;
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(NULL, HCI_EVENT_PACKET, 0, event, sizeof(event));

View File

@ -37,7 +37,7 @@
/*
* sdp_parser.c
*/
#include <btstack/hci_cmds.h>
#include "sdp_parser.h"
#include "debug.h"
@ -162,7 +162,7 @@ void parse(uint8_t eventByte){
attribute_bytes_received++;
{
sdp_parser_attribute_value_event_t attribute_value_event = {
SDP_PARSER_ATTRIBUTE_VALUE,
SDP_QUERY_ATTRIBUTE_VALUE,
record_counter,
attribute_id,
attribute_value_size,
@ -182,7 +182,7 @@ void parse(uint8_t eventByte){
attribute_bytes_received++;
{
sdp_parser_attribute_value_event_t attribute_value_event = {
SDP_PARSER_ATTRIBUTE_VALUE,
SDP_QUERY_ATTRIBUTE_VALUE,
record_counter,
attribute_id,
attribute_value_size,
@ -238,7 +238,7 @@ void sdp_parser_handle_chunk(uint8_t * data, uint16_t size){
void sdp_parser_handle_done(uint8_t status){
sdp_parser_complete_event_t complete_event = {
SDP_PARSER_COMPLETE,
SDP_QUERY_COMPLETE,
status
};
(*sdp_query_rfcomm_callback)((sdp_parser_event_t*)&complete_event);

View File

@ -65,11 +65,6 @@ int de_state_size(uint8_t eventByte, de_state_t *de_state);
// SDP Parser
// Basic SDP Parser event type
typedef enum sdp_parser_event_type {
SDP_PARSER_ATTRIBUTE_VALUE = 1,
SDP_PARSER_COMPLETE,
} sdp_parser_event_type_t;
typedef struct sdp_parser_event {
uint8_t type;

View File

@ -245,9 +245,8 @@ void handleServiceNameData(uint32_t attribute_value_length, uint32_t data_offset
static void handle_sdp_parser_event(sdp_parser_event_t * event){
sdp_parser_attribute_value_event_t * ve;
sdp_parser_complete_event_t * ce;
switch (event->type){
case SDP_PARSER_ATTRIBUTE_VALUE:
case SDP_QUERY_ATTRIBUTE_VALUE:
ve = (sdp_parser_attribute_value_event_t*) event;
// printf("handle_sdp_parser_event [ AID, ALen, DOff, Data] : [%x, %u, %u] BYTE %02x\n",
// ve->attribute_id, ve->attribute_length, ve->data_offset, ve->data);
@ -266,13 +265,8 @@ static void handle_sdp_parser_event(sdp_parser_event_t * event){
return;
}
break;
case SDP_PARSER_COMPLETE:
ce = (sdp_parser_complete_event_t*) event;
sdp_query_complete_event_t c_event = {
SDP_QUERY_COMPLETE,
ce->status
};
(*sdp_app_callback)((sdp_query_event_t*)&c_event, sdp_app_context);
case SDP_QUERY_COMPLETE:
(*sdp_app_callback)((sdp_query_event_t*)&event, sdp_app_context);
break;
}
// insert higher level code HERE

View File

@ -42,6 +42,7 @@
#include <btstack/utils.h>
#include "sdp_parser.h"
#include "sdp_query_util.h"
#define SDP_SERVICE_NAME_LEN 20
@ -51,18 +52,6 @@ extern "C" {
/* SDP Queries */
// Basic SDP Query event type
typedef struct sdp_query_event {
uint8_t type;
} sdp_query_event_t;
// SDP Query event to indicate that query is complete.
typedef struct sdp_query_complete_event {
uint8_t type;
uint8_t status; // 0 == OK
} sdp_query_complete_event_t;
/* SDP Query for RFCOMM */
// SDP Query RFCOMM event to deliver channel number and service name

View File

@ -46,6 +46,18 @@ extern "C" {
#endif
// Basic SDP Query event type
typedef struct sdp_query_event {
uint8_t type;
} sdp_query_event_t;
// SDP Query event to indicate that query is complete.
typedef struct sdp_query_complete_event {
uint8_t type;
uint8_t status; // 0 == OK
} sdp_query_complete_event_t;
// Returns service search pattern for given UUID
uint8_t* create_service_search_pattern_for_uuid(uint16_t uuid);

View File

@ -20,6 +20,6 @@
#define MAX_NO_RFCOMM_SERVICES 1
#define MAX_NO_RFCOMM_CHANNELS MAX_SPP_CONNECTIONS
#define MAX_NO_DB_MEM_DEVICE_LINK_KEYS 2
#define MAX_NO_DB_MEM_DEVICE_NAMES 0
#define MAX_NO_DB_MEM_DEVICE_NAMES 10
#define MAX_NO_DB_MEM_SERVICES 1

View File

@ -12,7 +12,6 @@
#include <stdlib.h>
#include <string.h>
#include "sdp_parser.h"
#include <btstack/hci_cmds.h>
#include <btstack/run_loop.h>
@ -20,6 +19,8 @@
#include "btstack_memory.h"
#include "hci_dump.h"
#include "l2cap.h"
#include "sdp_parser.h"
#include "sdp_query_util.h"
#include "CppUTest/TestHarness.h"
#include "CppUTest/CommandLineTestRunner.h"
@ -112,10 +113,10 @@ void assertBuffer(int size){
static void handle_general_sdp_parser_event(sdp_parser_event_t * event){
sdp_parser_attribute_value_event_t * ve;
sdp_parser_complete_event_t * ce;
sdp_query_complete_event_t * ce;
switch (event->type){
case SDP_PARSER_ATTRIBUTE_VALUE:
case SDP_QUERY_ATTRIBUTE_VALUE:
ve = (sdp_parser_attribute_value_event_t*) event;
// handle new record
@ -128,8 +129,8 @@ static void handle_general_sdp_parser_event(sdp_parser_event_t * event){
attribute_value[ve->data_offset] = ve->data;
break;
case SDP_PARSER_COMPLETE:
ce = (sdp_parser_complete_event_t*) event;
case SDP_QUERY_COMPLETE:
ce = (sdp_query_complete_event_t*) event;
printf("General query done with status %d.\n", ce->status);
break;
}