mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-04-15 23:42:52 +00:00
move config to stream endpoint
This commit is contained in:
parent
106b2cc4d7
commit
a0ed80bdc9
@ -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){
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user