From 50453b92349ac76eb1a4d943fcacc1e536841d4b Mon Sep 17 00:00:00 2001 From: Matthias Ringwald Date: Mon, 16 Dec 2019 13:11:49 +0100 Subject: [PATCH] avdtp: use separate signaling_packet for acceptor and initiator --- src/classic/avdtp.c | 4 +- src/classic/avdtp.h | 5 +- src/classic/avdtp_acceptor.c | 88 +++++++++++++++++------------------ src/classic/avdtp_initiator.c | 44 +++++++++--------- 4 files changed, 70 insertions(+), 71 deletions(-) diff --git a/src/classic/avdtp.c b/src/classic/avdtp.c index 1d8748d02..71a34d1e2 100644 --- a/src/classic/avdtp.c +++ b/src/classic/avdtp.c @@ -369,11 +369,11 @@ static void handle_l2cap_data_packet_for_signaling_connection(avdtp_connection_t avdtp_message_type_t message_type = avdtp_get_signaling_packet_type(packet); switch (message_type){ case AVDTP_CMD_MSG: - offset = avdtp_read_signaling_header(&connection->signaling_packet, packet, size); + offset = avdtp_read_signaling_header(&connection->acceptor_signaling_packet, packet, size); avdtp_acceptor_stream_config_subsm(connection, packet, size, offset, context); break; default: - offset = avdtp_read_signaling_header(&connection->signaling_packet, packet, size); + offset = avdtp_read_signaling_header(&connection->initiator_signaling_packet, packet, size); avdtp_initiator_stream_config_subsm(connection, packet, size, offset, context); break; } diff --git a/src/classic/avdtp.h b/src/classic/avdtp.h index bfaa04b92..0915fb29f 100644 --- a/src/classic/avdtp.h +++ b/src/classic/avdtp.h @@ -399,9 +399,8 @@ typedef struct { avdtp_acceptor_connection_state_t acceptor_connection_state; avdtp_initiator_connection_state_t initiator_connection_state; - // used for fragmentation - // avdtp_signaling_packet_header_t signaling_header; - avdtp_signaling_packet_t signaling_packet; + avdtp_signaling_packet_t acceptor_signaling_packet; + avdtp_signaling_packet_t initiator_signaling_packet; uint8_t disconnect; diff --git a/src/classic/avdtp_acceptor.c b/src/classic/avdtp_acceptor.c index 1ba329230..d653c3c3c 100644 --- a/src/classic/avdtp_acceptor.c +++ b/src/classic/avdtp_acceptor.c @@ -88,13 +88,13 @@ static void avdtp_acceptor_handle_configuration_command(avdtp_connection_t *conn connection->reject_service_category = 0; stream_endpoint->connection = connection; avdtp_sep_t sep; - sep.seid = connection->signaling_packet.command[offset++] >> 2; - sep.configured_service_categories = avdtp_unpack_service_capabilities(connection, connection->signaling_packet.signal_identifier, &sep.configuration, connection->signaling_packet.command+offset, packet_size-offset); + sep.seid = connection->acceptor_signaling_packet.command[offset++] >> 2; + sep.configured_service_categories = avdtp_unpack_service_capabilities(connection, connection->acceptor_signaling_packet.signal_identifier, &sep.configuration, connection->acceptor_signaling_packet.command+offset, packet_size-offset); sep.in_use = 1; if (connection->error_code){ log_info("fire configuration parsing errors "); - connection->reject_signal_identifier = connection->signaling_packet.signal_identifier; + connection->reject_signal_identifier = connection->acceptor_signaling_packet.signal_identifier; stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_REJECT_CATEGORY_WITH_ERROR_CODE; return; } @@ -115,7 +115,7 @@ static void avdtp_acceptor_handle_configuration_command(avdtp_connection_t *conn break; } } - connection->reject_signal_identifier = connection->signaling_packet.signal_identifier; + connection->reject_signal_identifier = connection->acceptor_signaling_packet.signal_identifier; stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_REJECT_CATEGORY_WITH_ERROR_CODE; } else { stream_endpoint->remote_sep = sep; @@ -129,22 +129,22 @@ static void avdtp_acceptor_handle_configuration_command(avdtp_connection_t *conn } avdtp_emit_configuration(context->avdtp_callback, connection->avdtp_cid, avdtp_local_seid(stream_endpoint), avdtp_remote_seid(stream_endpoint), &sep.configuration, sep.configured_service_categories); - avdtp_signaling_emit_accept(context->avdtp_callback, connection->avdtp_cid, avdtp_local_seid(stream_endpoint), connection->signaling_packet.signal_identifier); + avdtp_signaling_emit_accept(context->avdtp_callback, connection->avdtp_cid, avdtp_local_seid(stream_endpoint), connection->acceptor_signaling_packet.signal_identifier); } 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; - connection->acceptor_transaction_label = connection->signaling_packet.transaction_label; - if (!avdtp_acceptor_validate_msg_length(connection->signaling_packet.signal_identifier, size)) { + 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; connection->acceptor_connection_state = AVDTP_SIGNALING_CONNECTION_ACCEPTOR_W2_REJECT_WITH_ERROR_CODE; - connection->reject_signal_identifier = connection->signaling_packet.signal_identifier; + connection->reject_signal_identifier = connection->acceptor_signaling_packet.signal_identifier; avdtp_request_can_send_now_acceptor(connection, connection->l2cap_signaling_cid); return; } // handle error cases - switch (connection->signaling_packet.signal_identifier){ + switch (connection->acceptor_signaling_packet.signal_identifier){ case AVDTP_SI_DISCOVER: if (connection->state != AVDTP_SIGNALING_CONNECTION_OPENED) return; log_info("ACP: AVDTP_SIGNALING_CONNECTION_ACCEPTOR_W2_ANSWER_DISCOVER_SEPS"); @@ -164,18 +164,18 @@ void avdtp_acceptor_stream_config_subsm(avdtp_connection_t * connection, uint8_t connection->local_seid = packet[offset++] >> 2; stream_endpoint = avdtp_stream_endpoint_with_seid(connection->local_seid, context); if (!stream_endpoint){ - log_info("ACP: cmd %d - RESPONSE REJECT", connection->signaling_packet.signal_identifier); + log_info("ACP: cmd %d - RESPONSE REJECT", connection->acceptor_signaling_packet.signal_identifier); connection->error_code = BAD_ACP_SEID; - if (connection->signaling_packet.signal_identifier == AVDTP_SI_OPEN){ + if (connection->acceptor_signaling_packet.signal_identifier == AVDTP_SI_OPEN){ connection->error_code = BAD_STATE; } connection->acceptor_connection_state = AVDTP_SIGNALING_CONNECTION_ACCEPTOR_W2_REJECT_WITH_ERROR_CODE; - if (connection->signaling_packet.signal_identifier == AVDTP_SI_RECONFIGURE){ + if (connection->acceptor_signaling_packet.signal_identifier == AVDTP_SI_RECONFIGURE){ connection->reject_service_category = connection->local_seid; connection->acceptor_connection_state = AVDTP_SIGNALING_CONNECTION_ACCEPTOR_W2_REJECT_CATEGORY_WITH_ERROR_CODE; } - connection->reject_signal_identifier = connection->signaling_packet.signal_identifier; + connection->reject_signal_identifier = connection->acceptor_signaling_packet.signal_identifier; avdtp_request_can_send_now_acceptor(connection, connection->l2cap_signaling_cid); return; } @@ -198,7 +198,7 @@ void avdtp_acceptor_stream_config_subsm(avdtp_connection_t * connection, uint8_t connection->error_code = BAD_ACP_SEID; connection->reject_service_category = connection->local_seid; connection->acceptor_connection_state = AVDTP_SIGNALING_CONNECTION_ACCEPTOR_W2_REJECT_CATEGORY_WITH_ERROR_CODE; - connection->reject_signal_identifier = connection->signaling_packet.signal_identifier; + connection->reject_signal_identifier = connection->acceptor_signaling_packet.signal_identifier; avdtp_request_can_send_now_acceptor(connection, connection->l2cap_signaling_cid); return; } @@ -210,7 +210,7 @@ void avdtp_acceptor_stream_config_subsm(avdtp_connection_t * connection, uint8_t connection->error_code = BAD_ACP_SEID; connection->reject_service_category = connection->local_seid; connection->acceptor_connection_state = AVDTP_SIGNALING_CONNECTION_ACCEPTOR_W2_REJECT_CATEGORY_WITH_ERROR_CODE; - connection->reject_signal_identifier = connection->signaling_packet.signal_identifier; + connection->reject_signal_identifier = connection->acceptor_signaling_packet.signal_identifier; connection->num_suspended_seids = 0; avdtp_request_can_send_now_acceptor(connection, connection->l2cap_signaling_cid); return; @@ -219,8 +219,8 @@ void avdtp_acceptor_stream_config_subsm(avdtp_connection_t * connection, uint8_t } default: connection->acceptor_connection_state = AVDTP_SIGNALING_CONNECTION_ACCEPTOR_W2_GENERAL_REJECT_WITH_ERROR_CODE; - connection->reject_signal_identifier = connection->signaling_packet.signal_identifier; - log_info("AVDTP_CMD_MSG signal %d not implemented, general reject", connection->signaling_packet.signal_identifier); + connection->reject_signal_identifier = connection->acceptor_signaling_packet.signal_identifier; + log_info("AVDTP_CMD_MSG signal %d not implemented, general reject", connection->acceptor_signaling_packet.signal_identifier); avdtp_request_can_send_now_acceptor(connection, connection->l2cap_signaling_cid); return; } @@ -229,15 +229,15 @@ void avdtp_acceptor_stream_config_subsm(avdtp_connection_t * connection, uint8_t return; } - if (!avdtp_acceptor_process_chunk(&connection->signaling_packet, packet, size)) return; + if (!avdtp_acceptor_process_chunk(&connection->acceptor_signaling_packet, packet, size)) return; - uint16_t packet_size = connection->signaling_packet.size; - connection->signaling_packet.size = 0; + uint16_t packet_size = connection->acceptor_signaling_packet.size; + connection->acceptor_signaling_packet.size = 0; int request_to_send = 1; switch (stream_endpoint->acceptor_config_state){ case AVDTP_ACCEPTOR_STREAM_CONFIG_IDLE: - switch (connection->signaling_packet.signal_identifier){ + switch (connection->acceptor_signaling_packet.signal_identifier){ case AVDTP_SI_DELAYREPORT: log_info("ACP: AVDTP_ACCEPTOR_W2_ANSWER_DELAY_REPORT"); stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_ANSWER_DELAY_REPORT; @@ -263,7 +263,7 @@ void avdtp_acceptor_stream_config_subsm(avdtp_connection_t * connection, uint8_t case AVDTP_CONFIGURATION_STATE_LOCAL_CONFIGURED: log_info("ACP: Set configuration already initiated locally, reject cmd "); // fire configuration parsing errors - connection->reject_signal_identifier = connection->signaling_packet.signal_identifier; + connection->reject_signal_identifier = connection->acceptor_signaling_packet.signal_identifier; stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_REJECT_UNKNOWN_CMD; break; default: @@ -278,10 +278,10 @@ void avdtp_acceptor_stream_config_subsm(avdtp_connection_t * connection, uint8_t avdtp_sep_t sep; sep.seid = connection->local_seid; log_info("ACP: AVDTP_ACCEPTOR_W2_ANSWER_RECONFIGURE seid %d", sep.seid); - sep.configured_service_categories = avdtp_unpack_service_capabilities(connection, connection->signaling_packet.signal_identifier, &sep.configuration, connection->signaling_packet.command+offset, packet_size-offset); + sep.configured_service_categories = avdtp_unpack_service_capabilities(connection, connection->acceptor_signaling_packet.signal_identifier, &sep.configuration, connection->acceptor_signaling_packet.command+offset, packet_size-offset); if (connection->error_code){ // fire configuration parsing errors - connection->reject_signal_identifier = connection->signaling_packet.signal_identifier; + connection->reject_signal_identifier = connection->acceptor_signaling_packet.signal_identifier; stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_REJECT_CATEGORY_WITH_ERROR_CODE; break; } @@ -291,14 +291,14 @@ void avdtp_acceptor_stream_config_subsm(avdtp_connection_t * connection, uint8_t log_info("ACP: REJECT AVDTP_SI_RECONFIGURE, BAD_ACP_SEID"); stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_REJECT_CATEGORY_WITH_ERROR_CODE; connection->error_code = BAD_ACP_SEID; - connection->reject_signal_identifier = connection->signaling_packet.signal_identifier; + connection->reject_signal_identifier = connection->acceptor_signaling_packet.signal_identifier; break; } stream_endpoint->remote_sep = sep; log_info("ACP: update seid %d, to %p", stream_endpoint->remote_sep.seid, stream_endpoint); avdtp_emit_configuration(context->avdtp_callback, connection->avdtp_cid, avdtp_local_seid(stream_endpoint), avdtp_remote_seid(stream_endpoint), &sep.configuration, sep.configured_service_categories); - avdtp_signaling_emit_accept(context->avdtp_callback, connection->avdtp_cid, avdtp_local_seid(stream_endpoint), connection->signaling_packet.signal_identifier); + avdtp_signaling_emit_accept(context->avdtp_callback, connection->avdtp_cid, avdtp_local_seid(stream_endpoint), connection->acceptor_signaling_packet.signal_identifier); break; } @@ -311,7 +311,7 @@ void avdtp_acceptor_stream_config_subsm(avdtp_connection_t * connection, uint8_t log_info("ACP: REJECT AVDTP_SI_OPEN, BAD_STATE"); stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_REJECT_WITH_ERROR_CODE; connection->error_code = BAD_STATE; - connection->reject_signal_identifier = connection->signaling_packet.signal_identifier; + connection->reject_signal_identifier = connection->acceptor_signaling_packet.signal_identifier; break; } log_info("ACP: AVDTP_STREAM_ENDPOINT_W2_ANSWER_OPEN_STREAM"); @@ -324,7 +324,7 @@ void avdtp_acceptor_stream_config_subsm(avdtp_connection_t * connection, uint8_t log_info("ACP: REJECT AVDTP_SI_START, BAD_STATE, state %d", stream_endpoint->state); stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_REJECT_CATEGORY_WITH_ERROR_CODE; connection->error_code = BAD_STATE; - connection->reject_signal_identifier = connection->signaling_packet.signal_identifier; + connection->reject_signal_identifier = connection->acceptor_signaling_packet.signal_identifier; break; } log_info("ACP: AVDTP_ACCEPTOR_W2_ANSWER_START_STREAM"); @@ -342,7 +342,7 @@ void avdtp_acceptor_stream_config_subsm(avdtp_connection_t * connection, uint8_t log_info("ACP: AVDTP_SI_CLOSE, bad state %d ", stream_endpoint->state); stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_REJECT_WITH_ERROR_CODE; connection->error_code = BAD_STATE; - connection->reject_signal_identifier = connection->signaling_packet.signal_identifier; + connection->reject_signal_identifier = connection->acceptor_signaling_packet.signal_identifier; break; } break; @@ -360,7 +360,7 @@ void avdtp_acceptor_stream_config_subsm(avdtp_connection_t * connection, uint8_t log_info("ACP: AVDTP_SI_ABORT, bad state %d ", stream_endpoint->state); stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_REJECT_WITH_ERROR_CODE; connection->error_code = BAD_STATE; - connection->reject_signal_identifier = connection->signaling_packet.signal_identifier; + connection->reject_signal_identifier = connection->acceptor_signaling_packet.signal_identifier; break; } break; @@ -380,7 +380,7 @@ void avdtp_acceptor_stream_config_subsm(avdtp_connection_t * connection, uint8_t log_info("ACP: AVDTP_SI_SUSPEND, bad state "); stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_REJECT_CATEGORY_WITH_ERROR_CODE; connection->error_code = BAD_STATE; - connection->reject_signal_identifier = connection->signaling_packet.signal_identifier; + connection->reject_signal_identifier = connection->acceptor_signaling_packet.signal_identifier; break; } @@ -388,9 +388,9 @@ void avdtp_acceptor_stream_config_subsm(avdtp_connection_t * connection, uint8_t //stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_SUSPEND_STREAM; break; default: - log_info("ACP: NOT IMPLEMENTED, Reject signal_identifier %02x", connection->signaling_packet.signal_identifier); + log_info("ACP: NOT IMPLEMENTED, Reject signal_identifier %02x", connection->acceptor_signaling_packet.signal_identifier); stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_REJECT_UNKNOWN_CMD; - connection->reject_signal_identifier = connection->signaling_packet.signal_identifier; + connection->reject_signal_identifier = connection->acceptor_signaling_packet.signal_identifier; break; } break; @@ -500,11 +500,11 @@ void avdtp_acceptor_stream_config_subsm_run(avdtp_connection_t * connection, avd case AVDTP_ACCEPTOR_STREAM_CONFIG_IDLE: break; case AVDTP_ACCEPTOR_W2_ANSWER_GET_CAPABILITIES: - avdtp_prepare_capabilities(&connection->signaling_packet, trid, stream_endpoint->sep.registered_service_categories, stream_endpoint->sep.capabilities, AVDTP_SI_GET_CAPABILITIES); + avdtp_prepare_capabilities(&connection->acceptor_signaling_packet, trid, stream_endpoint->sep.registered_service_categories, stream_endpoint->sep.capabilities, AVDTP_SI_GET_CAPABILITIES); l2cap_reserve_packet_buffer(); out_buffer = l2cap_get_outgoing_buffer(); - pos = avdtp_signaling_create_fragment(cid, &connection->signaling_packet, out_buffer); - if ((connection->signaling_packet.packet_type != AVDTP_SINGLE_PACKET) && (connection->signaling_packet.packet_type != AVDTP_END_PACKET)){ + pos = avdtp_signaling_create_fragment(cid, &connection->acceptor_signaling_packet, out_buffer); + if ((connection->acceptor_signaling_packet.packet_type != AVDTP_SINGLE_PACKET) && (connection->acceptor_signaling_packet.packet_type != AVDTP_END_PACKET)){ stream_endpoint->acceptor_config_state = acceptor_config_state; log_info("ACP: fragmented"); } else { @@ -517,11 +517,11 @@ void avdtp_acceptor_stream_config_subsm_run(avdtp_connection_t * connection, avd avdtp_acceptor_send_accept_response(cid, trid, AVDTP_SI_DELAYREPORT); break; case AVDTP_ACCEPTOR_W2_ANSWER_GET_ALL_CAPABILITIES: - avdtp_prepare_capabilities(&connection->signaling_packet, trid, stream_endpoint->sep.registered_service_categories, stream_endpoint->sep.capabilities, AVDTP_SI_GET_ALL_CAPABILITIES); + avdtp_prepare_capabilities(&connection->acceptor_signaling_packet, trid, stream_endpoint->sep.registered_service_categories, stream_endpoint->sep.capabilities, AVDTP_SI_GET_ALL_CAPABILITIES); l2cap_reserve_packet_buffer(); out_buffer = l2cap_get_outgoing_buffer(); - pos = avdtp_signaling_create_fragment(cid, &connection->signaling_packet, out_buffer); - if ((connection->signaling_packet.packet_type != AVDTP_SINGLE_PACKET) && (connection->signaling_packet.packet_type != AVDTP_END_PACKET)){ + pos = avdtp_signaling_create_fragment(cid, &connection->acceptor_signaling_packet, out_buffer); + if ((connection->acceptor_signaling_packet.packet_type != AVDTP_SINGLE_PACKET) && (connection->acceptor_signaling_packet.packet_type != AVDTP_END_PACKET)){ stream_endpoint->acceptor_config_state = acceptor_config_state; log_info("ACP: fragmented"); } else { @@ -545,11 +545,11 @@ void avdtp_acceptor_stream_config_subsm_run(avdtp_connection_t * connection, avd case AVDTP_ACCEPTOR_W2_ANSWER_GET_CONFIGURATION:{ avdtp_sep_t sep = stream_endpoint->remote_sep; - avdtp_prepare_capabilities(&connection->signaling_packet, trid, sep.configured_service_categories, sep.configuration, AVDTP_SI_GET_CONFIGURATION); + avdtp_prepare_capabilities(&connection->acceptor_signaling_packet, trid, sep.configured_service_categories, sep.configuration, AVDTP_SI_GET_CONFIGURATION); l2cap_reserve_packet_buffer(); out_buffer = l2cap_get_outgoing_buffer(); - pos = avdtp_signaling_create_fragment(cid, &connection->signaling_packet, out_buffer); - if ((connection->signaling_packet.packet_type != AVDTP_SINGLE_PACKET) && (connection->signaling_packet.packet_type != AVDTP_END_PACKET)){ + pos = avdtp_signaling_create_fragment(cid, &connection->acceptor_signaling_packet, out_buffer); + if ((connection->acceptor_signaling_packet.packet_type != AVDTP_SINGLE_PACKET) && (connection->acceptor_signaling_packet.packet_type != AVDTP_END_PACKET)){ stream_endpoint->acceptor_config_state = acceptor_config_state; log_info("ACP: fragmented"); } else { @@ -602,9 +602,9 @@ void avdtp_acceptor_stream_config_subsm_run(avdtp_connection_t * connection, avd sent = 0; break; } - avdtp_signaling_emit_accept(context->avdtp_callback, connection->avdtp_cid, avdtp_local_seid(stream_endpoint), connection->signaling_packet.signal_identifier); + avdtp_signaling_emit_accept(context->avdtp_callback, connection->avdtp_cid, avdtp_local_seid(stream_endpoint), connection->acceptor_signaling_packet.signal_identifier); // check fragmentation - if ((connection->signaling_packet.packet_type != AVDTP_SINGLE_PACKET) && (connection->signaling_packet.packet_type != AVDTP_END_PACKET)){ + if ((connection->acceptor_signaling_packet.packet_type != AVDTP_SINGLE_PACKET) && (connection->acceptor_signaling_packet.packet_type != AVDTP_END_PACKET)){ avdtp_request_can_send_now_acceptor(connection, connection->l2cap_signaling_cid); } } diff --git a/src/classic/avdtp_initiator.c b/src/classic/avdtp_initiator.c index 4ce45c349..a0571abe2 100644 --- a/src/classic/avdtp_initiator.c +++ b/src/classic/avdtp_initiator.c @@ -92,12 +92,12 @@ void avdtp_initiator_stream_config_subsm(avdtp_connection_t * connection, uint8_ stream_endpoint->initiator_config_state = AVDTP_INITIATOR_STREAM_CONFIG_IDLE; } - switch (connection->signaling_packet.message_type){ + switch (connection->initiator_signaling_packet.message_type){ case AVDTP_RESPONSE_ACCEPT_MSG: - switch (connection->signaling_packet.signal_identifier){ + switch (connection->initiator_signaling_packet.signal_identifier){ case AVDTP_SI_DISCOVER:{ - if (connection->signaling_packet.transaction_label != connection->initiator_transaction_label){ - log_info(" unexpected transaction label, got %d, expected %d", connection->signaling_packet.transaction_label, connection->initiator_transaction_label); + if (connection->initiator_signaling_packet.transaction_label != connection->initiator_transaction_label){ + log_info(" unexpected transaction label, got %d, expected %d", connection->initiator_signaling_packet.transaction_label, connection->initiator_transaction_label); // status = BAD_HEADER_FORMAT; break; } @@ -127,7 +127,7 @@ void avdtp_initiator_stream_config_subsm(avdtp_connection_t * connection, uint8_ case AVDTP_SI_GET_CAPABILITIES: case AVDTP_SI_GET_ALL_CAPABILITIES: - sep.registered_service_categories = avdtp_unpack_service_capabilities(connection, connection->signaling_packet.signal_identifier, &sep.capabilities, packet+offset, size-offset); + sep.registered_service_categories = avdtp_unpack_service_capabilities(connection, connection->initiator_signaling_packet.signal_identifier, &sep.capabilities, packet+offset, size-offset); avdtp_emit_capabilities(context->avdtp_callback, connection->avdtp_cid, connection->local_seid, connection->remote_seid, &sep.capabilities, sep.registered_service_categories); break; case AVDTP_SI_DELAYREPORT: @@ -243,14 +243,14 @@ void avdtp_initiator_stream_config_subsm(avdtp_connection_t * connection, uint8_ stream_endpoint->state = AVDTP_STREAM_ENDPOINT_ABORTING; break; default: - log_info(" AVDTP_RESPONSE_ACCEPT_MSG, signal %d not implemented", connection->signaling_packet.signal_identifier); + log_info(" AVDTP_RESPONSE_ACCEPT_MSG, signal %d not implemented", connection->initiator_signaling_packet.signal_identifier); break; } - avdtp_signaling_emit_accept(context->avdtp_callback, connection->avdtp_cid, 0, connection->signaling_packet.signal_identifier); + avdtp_signaling_emit_accept(context->avdtp_callback, connection->avdtp_cid, 0, connection->initiator_signaling_packet.signal_identifier); connection->initiator_transaction_label++; break; case AVDTP_RESPONSE_REJECT_MSG: - switch (connection->signaling_packet.signal_identifier){ + switch (connection->initiator_signaling_packet.signal_identifier){ case AVDTP_SI_SET_CONFIGURATION: connection->configuration_state = AVDTP_CONFIGURATION_STATE_IDLE; log_info("Received reject for set configuration, role changed from initiator to acceptor. Start timer."); @@ -259,12 +259,12 @@ void avdtp_initiator_stream_config_subsm(avdtp_connection_t * connection, uint8_ default: break; } - log_info(" AVDTP_RESPONSE_REJECT_MSG signal %d", connection->signaling_packet.signal_identifier); - avdtp_signaling_emit_reject(context->avdtp_callback, connection->avdtp_cid, connection->local_seid, connection->signaling_packet.signal_identifier); + log_info(" AVDTP_RESPONSE_REJECT_MSG signal %d", connection->initiator_signaling_packet.signal_identifier); + avdtp_signaling_emit_reject(context->avdtp_callback, connection->avdtp_cid, connection->local_seid, connection->initiator_signaling_packet.signal_identifier); return; case AVDTP_GENERAL_REJECT_MSG: - log_info(" AVDTP_GENERAL_REJECT_MSG signal %d", connection->signaling_packet.signal_identifier); - avdtp_signaling_emit_general_reject(context->avdtp_callback, connection->avdtp_cid, connection->local_seid, connection->signaling_packet.signal_identifier); + log_info(" AVDTP_GENERAL_REJECT_MSG signal %d", connection->initiator_signaling_packet.signal_identifier); + avdtp_signaling_emit_general_reject(context->avdtp_callback, connection->avdtp_cid, connection->local_seid, connection->initiator_signaling_packet.signal_identifier); return; default: break; @@ -386,20 +386,20 @@ void avdtp_initiator_stream_config_subsm_run(avdtp_connection_t * connection, av } log_info("INT: AVDTP_INITIATOR_W2_(RE)CONFIGURATION bitmap, int seid %d, acp seid %d", connection->local_seid, connection->remote_seid); // log_info_hexdump( connection->remote_capabilities.media_codec.media_codec_information, connection->remote_capabilities.media_codec.media_codec_information_len); - connection->signaling_packet.acp_seid = connection->remote_seid; - connection->signaling_packet.int_seid = connection->local_seid; + connection->initiator_signaling_packet.acp_seid = connection->remote_seid; + connection->initiator_signaling_packet.int_seid = connection->local_seid; - connection->signaling_packet.signal_identifier = AVDTP_SI_SET_CONFIGURATION; + connection->initiator_signaling_packet.signal_identifier = AVDTP_SI_SET_CONFIGURATION; stream_endpoint->state = AVDTP_STREAM_ENDPOINT_CONFIGURATION_SUBSTATEMACHINE; if (stream_endpoint_state == AVDTP_INITIATOR_W2_RECONFIGURE_STREAM_WITH_SEID){ - connection->signaling_packet.signal_identifier = AVDTP_SI_RECONFIGURE; + connection->initiator_signaling_packet.signal_identifier = AVDTP_SI_RECONFIGURE; } - avdtp_prepare_capabilities(&connection->signaling_packet, connection->initiator_transaction_label, stream_endpoint->remote_configuration_bitmap, stream_endpoint->remote_configuration, connection->signaling_packet.signal_identifier); + avdtp_prepare_capabilities(&connection->initiator_signaling_packet, connection->initiator_transaction_label, stream_endpoint->remote_configuration_bitmap, stream_endpoint->remote_configuration, connection->initiator_signaling_packet.signal_identifier); l2cap_reserve_packet_buffer(); uint8_t * out_buffer = l2cap_get_outgoing_buffer(); - uint16_t pos = avdtp_signaling_create_fragment(connection->l2cap_signaling_cid, &connection->signaling_packet, out_buffer); - if ((connection->signaling_packet.packet_type != AVDTP_SINGLE_PACKET) && (connection->signaling_packet.packet_type != AVDTP_END_PACKET)){ + uint16_t pos = avdtp_signaling_create_fragment(connection->l2cap_signaling_cid, &connection->initiator_signaling_packet, out_buffer); + if ((connection->initiator_signaling_packet.packet_type != AVDTP_SINGLE_PACKET) && (connection->initiator_signaling_packet.packet_type != AVDTP_END_PACKET)){ stream_endpoint->initiator_config_state = AVDTP_INITIATOR_FRAGMENTATED_COMMAND; log_info("INT: fragmented"); } @@ -409,8 +409,8 @@ void avdtp_initiator_stream_config_subsm_run(avdtp_connection_t * connection, av case AVDTP_INITIATOR_FRAGMENTATED_COMMAND:{ l2cap_reserve_packet_buffer(); uint8_t * out_buffer = l2cap_get_outgoing_buffer(); - uint16_t pos = avdtp_signaling_create_fragment(connection->l2cap_signaling_cid, &connection->signaling_packet, out_buffer); - if ((connection->signaling_packet.packet_type != AVDTP_SINGLE_PACKET) && (connection->signaling_packet.packet_type != AVDTP_END_PACKET)){ + uint16_t pos = avdtp_signaling_create_fragment(connection->l2cap_signaling_cid, &connection->initiator_signaling_packet, out_buffer); + if ((connection->initiator_signaling_packet.packet_type != AVDTP_SINGLE_PACKET) && (connection->initiator_signaling_packet.packet_type != AVDTP_END_PACKET)){ stream_endpoint->initiator_config_state = AVDTP_INITIATOR_FRAGMENTATED_COMMAND; log_info("INT: fragmented"); } @@ -434,7 +434,7 @@ void avdtp_initiator_stream_config_subsm_run(avdtp_connection_t * connection, av } // check fragmentation - if ((connection->signaling_packet.packet_type != AVDTP_SINGLE_PACKET) && (connection->signaling_packet.packet_type != AVDTP_END_PACKET)){ + if ((connection->initiator_signaling_packet.packet_type != AVDTP_SINGLE_PACKET) && (connection->initiator_signaling_packet.packet_type != AVDTP_END_PACKET)){ avdtp_request_can_send_now_initiator(connection, connection->l2cap_signaling_cid); } }