move config to stream endpoint

This commit is contained in:
Milanka Ringwald 2017-04-18 10:51:31 +02:00
parent 106b2cc4d7
commit a0ed80bdc9
4 changed files with 19 additions and 24 deletions

View File

@ -674,8 +674,8 @@ void avdtp_set_configuration(uint16_t avdtp_cid, uint8_t int_seid, uint8_t acp_s
connection->initiator_transaction_label++;
connection->acp_seid = acp_seid;
connection->int_seid = int_seid;
connection->remote_capabilities_bitmap = configured_services_bitmap;
connection->remote_capabilities = configuration;
stream_endpoint->remote_capabilities_bitmap = configured_services_bitmap;
stream_endpoint->remote_capabilities = configuration;
stream_endpoint->initiator_config_state = AVDTP_INITIATOR_W2_SET_CONFIGURATION;
avdtp_request_can_send_now_initiator(connection, connection->l2cap_signaling_cid);
}
@ -704,8 +704,8 @@ void avdtp_reconfigure(uint16_t avdtp_cid, uint8_t int_seid, uint8_t acp_seid, u
connection->initiator_transaction_label++;
connection->acp_seid = acp_seid;
connection->int_seid = stream_endpoint->sep.seid;
connection->remote_capabilities_bitmap = configured_services_bitmap;
connection->remote_capabilities = configuration;
stream_endpoint->remote_capabilities_bitmap = configured_services_bitmap;
stream_endpoint->remote_capabilities = configuration;
stream_endpoint->initiator_config_state = AVDTP_INITIATOR_W2_RECONFIGURE_STREAM_WITH_SEID;
avdtp_request_can_send_now_initiator(connection, connection->l2cap_signaling_cid);
}
@ -772,6 +772,12 @@ void avdtp_initialize_sbc_configuration_storage(avdtp_stream_endpoint_t * stream
config_storage[1] = (block_length << 4) | (subbands << 2) | allocation_method;
config_storage[2] = min_bitpool_value;
config_storage[3] = max_bitpool_value;
stream_endpoint->remote_configuration_bitmap = store_bit16(stream_endpoint->remote_configuration_bitmap, AVDTP_MEDIA_CODEC, 1);
stream_endpoint->remote_configuration.media_codec.media_type = AVDTP_AUDIO;
stream_endpoint->remote_configuration.media_codec.media_codec_type = AVDTP_CODEC_SBC;
stream_endpoint->remote_configuration.media_codec.media_codec_information_len = storage_size;
stream_endpoint->remote_configuration.media_codec.media_codec_information = config_storage;
}
uint8_t avdtp_choose_sbc_channel_mode(avdtp_stream_endpoint_t * stream_endpoint, uint8_t remote_channel_mode_bitmap){

View File

@ -410,9 +410,6 @@ typedef struct {
uint8_t int_seid;
uint8_t acp_seid;
avdtp_capabilities_t remote_capabilities;
uint16_t remote_capabilities_bitmap;
uint8_t wait_to_send_acceptor;
uint8_t wait_to_send_initiator;
uint8_t wait_to_send_self;
@ -448,6 +445,11 @@ typedef struct avdtp_stream_endpoint {
avdtp_connection_t * connection;
// currently active remote seid
uint8_t remote_sep_index;
avdtp_capabilities_t remote_capabilities;
uint16_t remote_capabilities_bitmap;
uint16_t remote_configuration_bitmap;
avdtp_capabilities_t remote_configuration;
// register request for media L2cap connection release
uint8_t media_disconnect;
uint8_t media_connect;

View File

@ -172,8 +172,8 @@ void avdtp_initiator_stream_config_subsm(avdtp_connection_t * connection, uint8_
case AVDTP_SI_SET_CONFIGURATION:{
printf("AVDTP_SI_SET_CONFIGURATION\n");
sep.configured_service_categories = connection->remote_capabilities_bitmap;
sep.configuration = connection->remote_capabilities;
sep.configured_service_categories = stream_endpoint->remote_capabilities_bitmap;
sep.configuration = stream_endpoint->remote_capabilities;
sep.in_use = 1;
// TODO check if configuration is supported
@ -307,7 +307,7 @@ void avdtp_initiator_stream_config_subsm_run(avdtp_connection_t * connection, av
connection->signaling_packet.signal_identifier = AVDTP_SI_RECONFIGURE;
}
avdtp_prepare_capabilities(&connection->signaling_packet, connection->initiator_transaction_label, connection->remote_capabilities_bitmap, connection->remote_capabilities, connection->signaling_packet.signal_identifier);
avdtp_prepare_capabilities(&connection->signaling_packet, connection->initiator_transaction_label, stream_endpoint->remote_capabilities_bitmap, stream_endpoint->remote_capabilities, connection->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);

View File

@ -117,11 +117,7 @@ static uint8_t sdp_avdtp_source_service_buffer[150];
static avdtp_stream_endpoint_t * local_stream_endpoint;
static uint16_t remote_configuration_bitmap;
static avdtp_capabilities_t remote_configuration;
// static avdtp_sep_t remote_seps[MAX_NUM_SEPS];
// static uint16_t num_remote_seps = 0;
static int next_remote_sep_index_to_query = -1;
static avdtp_sep_t * active_remote_sep = NULL;
@ -246,17 +242,8 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
break;
case AVDTP_SUBEVENT_SIGNALING_MEDIA_CODEC_SBC_CAPABILITY:{
avdtp_initialize_sbc_configuration_storage(local_stream_endpoint, media_sbc_codec_configuration, sizeof(media_sbc_codec_configuration), packet, size);
app_state = AVDTP_APPLICATION_W2_SET_CONFIGURATION;
active_remote_sep = avdtp_source_remote_sep(avdtp_cid, next_remote_sep_index_to_query);
remote_configuration_bitmap = store_bit16(remote_configuration_bitmap, AVDTP_MEDIA_CODEC, 1);
remote_configuration.media_codec.media_type = AVDTP_AUDIO;
remote_configuration.media_codec.media_codec_type = AVDTP_CODEC_SBC;
remote_configuration.media_codec.media_codec_information_len = sizeof(media_sbc_codec_configuration);
remote_configuration.media_codec.media_codec_information = media_sbc_codec_configuration;
app_state = AVDTP_APPLICATION_W2_SET_CONFIGURATION;
break;
}
@ -306,7 +293,7 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
break;
case AVDTP_APPLICATION_W2_SET_CONFIGURATION:
app_state = AVDTP_APPLICATION_W2_GET_CONFIGURATION;
avdtp_source_set_configuration(avdtp_cid, local_stream_endpoint->sep.seid, active_remote_sep->seid, remote_configuration_bitmap, remote_configuration);
avdtp_source_set_configuration(avdtp_cid, local_stream_endpoint->sep.seid, active_remote_sep->seid, local_stream_endpoint->remote_configuration_bitmap, local_stream_endpoint->remote_configuration);
break;
case AVDTP_APPLICATION_W2_GET_CONFIGURATION:
app_state = AVDTP_APPLICATION_W2_OPEN_STREAM_WITH_SEID;