diff --git a/src/classic/avdtp.h b/src/classic/avdtp.h index a127d0ade..3e83a323e 100644 --- a/src/classic/avdtp.h +++ b/src/classic/avdtp.h @@ -623,7 +623,6 @@ void avdtp_signaling_emit_media_codec_sbc_reconfiguration(avdtp_stream_endpoint_ avdtp_media_type_t media_type, const uint8_t *media_codec_information); void avdtp_signaling_emit_media_codec_other_configuration(avdtp_stream_endpoint_t *stream_endpoint, uint16_t avdtp_cid, - uint8_t local_seid, uint8_t remote_seid, adtvp_media_codec_capabilities_t media_codec); uint8_t is_avdtp_remote_seid_registered(avdtp_stream_endpoint_t * stream_endpoint); diff --git a/src/classic/avdtp_initiator.c b/src/classic/avdtp_initiator.c index ce6060904..011651e5a 100644 --- a/src/classic/avdtp_initiator.c +++ b/src/classic/avdtp_initiator.c @@ -182,8 +182,6 @@ void avdtp_initiator_stream_config_subsm(avdtp_connection_t *connection, uint8_t // TODO: we don\t have codec info to emit config avdtp_signaling_emit_media_codec_other_configuration(stream_endpoint, connection->avdtp_cid, - connection->initiator_local_seid, - connection->initiator_remote_seid, sep.configuration.media_codec); break; } diff --git a/src/classic/avdtp_util.c b/src/classic/avdtp_util.c index de43d20f1..242649ac0 100644 --- a/src/classic/avdtp_util.c +++ b/src/classic/avdtp_util.c @@ -830,8 +830,14 @@ void avdtp_signaling_emit_media_codec_sbc(avdtp_stream_endpoint_t *stream_endpoi (*packet_handler)(HCI_EVENT_PACKET, 0, event, sizeof(event)); } -void avdtp_signaling_emit_media_codec_other(btstack_packet_handler_t callback, uint16_t avdtp_cid, uint8_t local_seid, uint8_t remote_seid, adtvp_media_codec_capabilities_t media_codec, uint8_t reconfigure){ - btstack_assert(callback != NULL); +void +avdtp_signaling_emit_media_codec_other(avdtp_stream_endpoint_t *stream_endpoint, uint16_t avdtp_cid, + adtvp_media_codec_capabilities_t media_codec, uint8_t reconfigure) { + + btstack_packet_handler_t packet_handler = avdtp_packet_handler_for_stream_endpoint(stream_endpoint); + uint8_t local_seid = avdtp_local_seid(stream_endpoint); + uint8_t remote_seid = avdtp_remote_seid(stream_endpoint); + uint8_t event[MAX_MEDIA_CODEC_INFORMATION_LENGTH + 13]; int pos = 0; event[pos++] = HCI_EVENT_AVDTP_META; @@ -852,7 +858,7 @@ void avdtp_signaling_emit_media_codec_other(btstack_packet_handler_t callback, u (void)memcpy(event + pos, media_codec.media_codec_information, media_codec_len); - (*callback)(HCI_EVENT_PACKET, 0, event, sizeof(event)); + (*packet_handler)(HCI_EVENT_PACKET, 0, event, sizeof(event)); } void avdtp_signaling_emit_delay(uint16_t avdtp_cid, uint8_t local_seid, uint16_t delay) { @@ -884,18 +890,14 @@ void avdtp_signaling_emit_media_codec_sbc_reconfiguration(avdtp_stream_endpoint_ } void avdtp_signaling_emit_media_codec_other_configuration(avdtp_stream_endpoint_t *stream_endpoint, uint16_t avdtp_cid, - uint8_t local_seid, uint8_t remote_seid, adtvp_media_codec_capabilities_t media_codec) { - btstack_packet_handler_t packet_handler = avdtp_packet_handler_for_stream_endpoint(stream_endpoint); - avdtp_signaling_emit_media_codec_other(packet_handler, avdtp_cid, local_seid, remote_seid, media_codec, 0); + avdtp_signaling_emit_media_codec_other(stream_endpoint, avdtp_cid, media_codec, 0); } void avdtp_signaling_emit_media_codec_other_reconfiguration(avdtp_stream_endpoint_t *stream_endpoint, uint16_t avdtp_cid, - uint8_t local_seid, uint8_t remote_seid, adtvp_media_codec_capabilities_t media_codec) { - btstack_packet_handler_t packet_handler = avdtp_packet_handler_for_stream_endpoint(stream_endpoint); - avdtp_signaling_emit_media_codec_other(packet_handler, avdtp_cid, local_seid, remote_seid, media_codec, 1); + avdtp_signaling_emit_media_codec_other(stream_endpoint, avdtp_cid, media_codec, 1); } void avdtp_signaling_emit_configuration(avdtp_stream_endpoint_t *stream_endpoint, uint16_t avdtp_cid, @@ -914,7 +916,6 @@ void avdtp_signaling_emit_configuration(avdtp_stream_endpoint_t *stream_endpoint break; default: avdtp_signaling_emit_media_codec_other_configuration(stream_endpoint, avdtp_cid, - local_seid, remote_seid, configuration->media_codec); break; } diff --git a/src/classic/avdtp_util.h b/src/classic/avdtp_util.h index 522b2c42c..6fb783992 100644 --- a/src/classic/avdtp_util.h +++ b/src/classic/avdtp_util.h @@ -69,10 +69,6 @@ uint16_t avdtp_unpack_service_capabilities(avdtp_connection_t * connection, avdt void avdtp_prepare_capabilities(avdtp_signaling_packet_t * signaling_packet, uint8_t transaction_label, uint16_t service_categories, avdtp_capabilities_t capabilities, uint8_t identifier); int avdtp_signaling_create_fragment(uint16_t cid, avdtp_signaling_packet_t * signaling_packet, uint8_t * out_buffer); -void avdtp_streaming_emit_connection_established(avdtp_stream_endpoint_t *stream_endpoint, uint8_t status); - -void avdtp_streaming_emit_connection_released(avdtp_stream_endpoint_t *stream_endpoint, uint16_t avdtp_cid, uint8_t local_seid); - void avdtp_signaling_emit_connection_established(uint16_t avdtp_cid, bd_addr_t addr, uint8_t status); void avdtp_signaling_emit_connection_released(uint16_t avdtp_cid); @@ -87,20 +83,23 @@ void avdtp_signaling_emit_general_reject(uint16_t avdtp_cid, uint8_t local_seid, void avdtp_signaling_emit_reject(uint16_t avdtp_cid, uint8_t local_seid, avdtp_signal_identifier_t identifier, bool is_initiator); -void -avdtp_signaling_emit_capabilities(uint16_t avdtp_cid, uint8_t local_seid, uint8_t remote_seid, avdtp_capabilities_t *capabilities, +void avdtp_signaling_emit_capabilities(uint16_t avdtp_cid, uint8_t local_seid, uint8_t remote_seid, avdtp_capabilities_t *capabilities, uint16_t registered_service_categories); void avdtp_signaling_emit_media_codec_sbc(avdtp_stream_endpoint_t *stream_endpoint, uint16_t avdtp_cid, avdtp_media_type_t media_type, const uint8_t *media_codec_information, uint8_t reconfigure) ; -void -avdtp_signaling_emit_media_codec_other_reconfiguration(avdtp_stream_endpoint_t *stream_endpoint, uint16_t avdtp_cid, - uint8_t local_seid, uint8_t remote_seid, +void avdtp_signaling_emit_media_codec_other_reconfiguration(avdtp_stream_endpoint_t *stream_endpoint, uint16_t avdtp_cid, adtvp_media_codec_capabilities_t media_codec); -void avdtp_signaling_emit_media_codec_other(btstack_packet_handler_t callback, uint16_t avdtp_cid, uint8_t local_seid, uint8_t remote_seid, adtvp_media_codec_capabilities_t media_codec, uint8_t reconfigure); +void avdtp_signaling_emit_media_codec_other(avdtp_stream_endpoint_t *stream_endpoint, uint16_t avdtp_cid, + adtvp_media_codec_capabilities_t media_codec, uint8_t reconfigure); + +void avdtp_streaming_emit_connection_established(avdtp_stream_endpoint_t *stream_endpoint, uint8_t status); + +void avdtp_streaming_emit_connection_released(avdtp_stream_endpoint_t *stream_endpoint, uint16_t avdtp_cid, uint8_t local_seid); uint8_t avdtp_request_can_send_now_acceptor(avdtp_connection_t * connection, uint16_t l2cap_cid); + uint8_t avdtp_request_can_send_now_initiator(avdtp_connection_t * connection, uint16_t l2cap_cid); void avdtp_reset_stream_endpoint(avdtp_stream_endpoint_t * stream_endpoint); @@ -111,6 +110,7 @@ uint8_t avdtp_remote_seid(avdtp_stream_endpoint_t * stream_endpoint); const char * avdtp_si2str(uint16_t index); void a2dp_replace_subevent_id_and_emit_cmd(btstack_packet_handler_t callback, uint8_t * packet, uint16_t size, uint8_t subevent_id); + void a2dp_emit_streaming_connection_established(btstack_packet_handler_t callback, uint8_t * packet, uint16_t size, uint8_t status); void a2dp_emit_signaling_connection_established(btstack_packet_handler_t callback, uint8_t * packet, uint16_t size, uint8_t status); void a2dp_emit_stream_event(btstack_packet_handler_t callback, uint16_t cid, uint8_t local_seid, uint8_t subevent_id);