avdtp: remove handle_media_data from avdtp_context_t

This commit is contained in:
Matthias Ringwald 2020-07-11 15:47:22 +02:00
parent 109ac445d4
commit 951d2774cf
3 changed files with 13 additions and 11 deletions

View File

@ -72,6 +72,8 @@ static int record_id = -1;
static uint8_t attribute_value[45];
static const unsigned int attribute_value_buffer_size = sizeof(attribute_value);
static void (*avdtp_sink_handle_media_data)(uint8_t local_seid, uint8_t *packet, uint16_t size);
btstack_linked_list_t * avdtp_get_stream_endpoints(void){
return &stream_endpoints;
}
@ -89,7 +91,6 @@ btstack_linked_list_t * avdtp_get_stream_endpoints(void){
static uint16_t avdtp_cid_counter = 0;
static void (*handle_media_data)(uint8_t local_seid, uint8_t *packet, uint16_t size);
static void avdtp_handle_sdp_client_query_result(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size);
@ -380,6 +381,9 @@ void avdtp_register_multiplexing_category(avdtp_stream_endpoint_t * stream_endpo
stream_endpoint->sep.capabilities.multiplexing_mode.fragmentation = fragmentation;
}
void avdtp_register_media_handler(void (*callback)(uint8_t local_seid, uint8_t *packet, uint16_t size)){
avdtp_sink_handle_media_data = callback;
}
/* START: tracking can send now requests pro l2cap cid */
void avdtp_handle_can_send_now(avdtp_connection_t * connection, uint16_t l2cap_cid, avdtp_context_t * context){
@ -669,8 +673,7 @@ void avdtp_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet
avdtp_connection_t * connection = NULL;
avdtp_context_t * context = avdtp_get_active_contex();
handle_media_data = context->handle_media_data;
switch (packet_type) {
case L2CAP_DATA_PACKET:
connection = avdtp_get_connection_for_l2cap_signaling_cid(channel);
@ -694,9 +697,8 @@ void avdtp_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet
}
if (channel == stream_endpoint->l2cap_media_cid){
if (handle_media_data){
(*handle_media_data)(avdtp_local_seid(stream_endpoint), packet, size);
}
btstack_assert(avdtp_sink_handle_media_data);
(*avdtp_sink_handle_media_data)(avdtp_local_seid(stream_endpoint), packet, size);
break;
}

View File

@ -545,8 +545,7 @@ typedef struct {
typedef struct {
btstack_packet_handler_t avdtp_callback;
btstack_packet_handler_t a2dp_callback;
void (*handle_media_data)(uint8_t local_seid, uint8_t *packet, uint16_t size);
} avdtp_context_t;
} avdtp_context_t;
extern avdtp_context_t * avdtp_source_context;
extern avdtp_context_t * avdtp_sink_context;
@ -569,6 +568,9 @@ void avdtp_register_media_codec_category(avdtp_stream_endpoint_t * stream_endpoi
void avdtp_register_multiplexing_category(avdtp_stream_endpoint_t * stream_endpoint, uint8_t fragmentation);
void avdtp_handle_can_send_now(avdtp_connection_t * connection, uint16_t l2cap_cid, avdtp_context_t * context);
// sink only
void avdtp_register_media_handler(void (*callback)(uint8_t local_seid, uint8_t *packet, uint16_t size));
void avdtp_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size);
avdtp_stream_endpoint_t * avdtp_create_stream_endpoint(avdtp_sep_type_t sep_type, avdtp_media_type_t media_type);

View File

@ -112,9 +112,7 @@ avdtp_stream_endpoint_t * avdtp_sink_create_stream_endpoint(avdtp_sep_type_t sep
}
void avdtp_sink_register_media_handler(void (*callback)(uint8_t local_seid, uint8_t *packet, uint16_t size)){
btstack_assert(callback != NULL);
avdtp_sink_context->handle_media_data = callback;
avdtp_register_media_handler(callback);
}
uint8_t avdtp_sink_connect(bd_addr_t remote, uint16_t * avdtp_cid){