avdtp: emit delay only as source

This commit is contained in:
Matthias Ringwald 2020-07-11 17:50:07 +02:00
parent f751daa3e8
commit 2d9d000f0d
6 changed files with 22 additions and 22 deletions

View File

@ -131,6 +131,21 @@ void avdtp_streaming_emit_can_send_media_packet_now(avdtp_stream_endpoint_t *str
(*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) {
uint8_t event[8];
int pos = 0;
event[pos++] = HCI_EVENT_AVDTP_META;
event[pos++] = sizeof(event) - 2;
event[pos++] = AVDTP_SUBEVENT_SIGNALING_DELAY_REPORT;
little_endian_store_16(event, pos, avdtp_cid);
pos += 2;
event[pos++] = local_seid;
little_endian_store_16(event, pos, delay);
pos += 2;
(*avdtp_source_callback)(HCI_EVENT_PACKET, 0, event, sizeof(event));
}
btstack_linked_list_t * avdtp_get_stream_endpoints(void){
return &stream_endpoints;
}

View File

@ -607,6 +607,7 @@ uint8_t avdtp_choose_sbc_min_bitpool_value(avdtp_stream_endpoint_t * stream_endp
uint8_t avdtp_stream_endpoint_seid(avdtp_stream_endpoint_t * stream_endpoint);
void avdtp_streaming_emit_can_send_media_packet_now(avdtp_stream_endpoint_t *stream_endpoint, uint16_t sequence_number);
void avdtp_signaling_emit_delay(uint16_t avdtp_cid, uint8_t local_seid, uint16_t delay);
uint8_t is_avdtp_remote_seid_registered(avdtp_stream_endpoint_t * stream_endpoint);

View File

@ -131,7 +131,7 @@ static void avdtp_acceptor_handle_configuration_command(avdtp_connection_t *conn
}
void avdtp_acceptor_stream_config_subsm(avdtp_connection_t * connection, uint8_t * packet, uint16_t size, int offset, avdtp_context_t * context){
avdtp_stream_endpoint_t * stream_endpoint;
avdtp_stream_endpoint_t * stream_endpoint = NULL;
connection->acceptor_transaction_label = connection->acceptor_signaling_packet.transaction_label;
if (!avdtp_acceptor_validate_msg_length(connection->acceptor_signaling_packet.signal_identifier, size)) {
connection->error_code = BAD_LENGTH;
@ -223,9 +223,7 @@ void avdtp_acceptor_stream_config_subsm(avdtp_connection_t * connection, uint8_t
return;
}
if (!stream_endpoint) {
return;
}
btstack_assert(stream_endpoint != NULL);
if (!avdtp_acceptor_process_chunk(&connection->acceptor_signaling_packet, packet, size)) return;
@ -239,7 +237,8 @@ void avdtp_acceptor_stream_config_subsm(avdtp_connection_t * connection, uint8_t
case AVDTP_SI_DELAYREPORT:
log_info("ACP: AVDTP_ACCEPTOR_W2_ANSWER_DELAY_REPORT, local seid %d", connection->acceptor_local_seid);
stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_ANSWER_DELAY_REPORT;
avdtp_signaling_emit_delay(context->avdtp_callback, connection->avdtp_cid, connection->acceptor_local_seid, big_endian_read_16(packet, offset));
avdtp_signaling_emit_delay(connection->avdtp_cid, connection->acceptor_local_seid,
big_endian_read_16(packet, offset));
break;
case AVDTP_SI_GET_ALL_CAPABILITIES:

View File

@ -137,7 +137,8 @@ void avdtp_initiator_stream_config_subsm(avdtp_connection_t * connection, uint8_
avdtp_emit_capabilities(context->avdtp_callback, connection->avdtp_cid, connection->initiator_local_seid, connection->initiator_remote_seid, &sep.capabilities, sep.registered_service_categories);
break;
case AVDTP_SI_DELAYREPORT:
avdtp_signaling_emit_delay(context->avdtp_callback, connection->avdtp_cid, connection->initiator_local_seid, little_endian_read_16(packet, offset));
avdtp_signaling_emit_delay(connection->avdtp_cid, connection->initiator_local_seid,
little_endian_read_16(packet, offset));
break;
case AVDTP_SI_GET_CONFIGURATION:
// sep.configured_service_categories = avdtp_unpack_service_capabilities(connection, &sep.configuration, packet+offset, size-offset);

View File

@ -493,21 +493,6 @@ void avdtp_signaling_emit_sep_done(btstack_packet_handler_t callback, uint16_t a
(*callback)(HCI_EVENT_PACKET, 0, event, sizeof(event));
}
void avdtp_signaling_emit_delay(btstack_packet_handler_t callback, uint16_t avdtp_cid, uint8_t local_seid, uint16_t delay){
btstack_assert(callback != NULL);
uint8_t event[8];
int pos = 0;
event[pos++] = HCI_EVENT_AVDTP_META;
event[pos++] = sizeof(event) - 2;
event[pos++] = AVDTP_SUBEVENT_SIGNALING_DELAY_REPORT;
little_endian_store_16(event, pos, avdtp_cid);
pos += 2;
event[pos++] = local_seid;
little_endian_store_16(event, pos, delay);
pos += 2;
(*callback)(HCI_EVENT_PACKET, 0, event, sizeof(event));
}
void avdtp_signaling_emit_accept(btstack_packet_handler_t callback, uint16_t avdtp_cid, uint8_t local_seid, avdtp_signal_identifier_t identifier, bool is_initiator){
btstack_assert(callback != NULL);
uint8_t event[8];

View File

@ -75,7 +75,6 @@ void avdtp_signaling_emit_connection_released(btstack_packet_handler_t callback,
void avdtp_signaling_emit_sep(btstack_packet_handler_t callback, uint16_t avdtp_cid, avdtp_sep_t sep);
void avdtp_signaling_emit_sep_done(btstack_packet_handler_t callback, uint16_t avdtp_cid);
void avdtp_signaling_emit_delay(btstack_packet_handler_t callback, uint16_t avdtp_cid, uint8_t local_seid, uint16_t delay);
void avdtp_signaling_emit_accept(btstack_packet_handler_t callback, uint16_t avdtp_cid, uint8_t seid, avdtp_signal_identifier_t identifier, bool is_initiator);
void avdtp_signaling_emit_general_reject(btstack_packet_handler_t callback, uint16_t avdtp_cid, uint8_t int_seid, avdtp_signal_identifier_t identifier, bool is_initiator);