mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-04-17 20:42:47 +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->initiator_transaction_label++;
|
||||||
connection->acp_seid = acp_seid;
|
connection->acp_seid = acp_seid;
|
||||||
connection->int_seid = int_seid;
|
connection->int_seid = int_seid;
|
||||||
connection->remote_capabilities_bitmap = configured_services_bitmap;
|
stream_endpoint->remote_capabilities_bitmap = configured_services_bitmap;
|
||||||
connection->remote_capabilities = configuration;
|
stream_endpoint->remote_capabilities = configuration;
|
||||||
stream_endpoint->initiator_config_state = AVDTP_INITIATOR_W2_SET_CONFIGURATION;
|
stream_endpoint->initiator_config_state = AVDTP_INITIATOR_W2_SET_CONFIGURATION;
|
||||||
avdtp_request_can_send_now_initiator(connection, connection->l2cap_signaling_cid);
|
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->initiator_transaction_label++;
|
||||||
connection->acp_seid = acp_seid;
|
connection->acp_seid = acp_seid;
|
||||||
connection->int_seid = stream_endpoint->sep.seid;
|
connection->int_seid = stream_endpoint->sep.seid;
|
||||||
connection->remote_capabilities_bitmap = configured_services_bitmap;
|
stream_endpoint->remote_capabilities_bitmap = configured_services_bitmap;
|
||||||
connection->remote_capabilities = configuration;
|
stream_endpoint->remote_capabilities = configuration;
|
||||||
stream_endpoint->initiator_config_state = AVDTP_INITIATOR_W2_RECONFIGURE_STREAM_WITH_SEID;
|
stream_endpoint->initiator_config_state = AVDTP_INITIATOR_W2_RECONFIGURE_STREAM_WITH_SEID;
|
||||||
avdtp_request_can_send_now_initiator(connection, connection->l2cap_signaling_cid);
|
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[1] = (block_length << 4) | (subbands << 2) | allocation_method;
|
||||||
config_storage[2] = min_bitpool_value;
|
config_storage[2] = min_bitpool_value;
|
||||||
config_storage[3] = max_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){
|
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 int_seid;
|
||||||
uint8_t acp_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_acceptor;
|
||||||
uint8_t wait_to_send_initiator;
|
uint8_t wait_to_send_initiator;
|
||||||
uint8_t wait_to_send_self;
|
uint8_t wait_to_send_self;
|
||||||
@ -448,6 +445,11 @@ typedef struct avdtp_stream_endpoint {
|
|||||||
avdtp_connection_t * connection;
|
avdtp_connection_t * connection;
|
||||||
// currently active remote seid
|
// currently active remote seid
|
||||||
uint8_t remote_sep_index;
|
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
|
// register request for media L2cap connection release
|
||||||
uint8_t media_disconnect;
|
uint8_t media_disconnect;
|
||||||
uint8_t media_connect;
|
uint8_t media_connect;
|
||||||
|
@ -172,8 +172,8 @@ void avdtp_initiator_stream_config_subsm(avdtp_connection_t * connection, uint8_
|
|||||||
|
|
||||||
case AVDTP_SI_SET_CONFIGURATION:{
|
case AVDTP_SI_SET_CONFIGURATION:{
|
||||||
printf("AVDTP_SI_SET_CONFIGURATION\n");
|
printf("AVDTP_SI_SET_CONFIGURATION\n");
|
||||||
sep.configured_service_categories = connection->remote_capabilities_bitmap;
|
sep.configured_service_categories = stream_endpoint->remote_capabilities_bitmap;
|
||||||
sep.configuration = connection->remote_capabilities;
|
sep.configuration = stream_endpoint->remote_capabilities;
|
||||||
sep.in_use = 1;
|
sep.in_use = 1;
|
||||||
// TODO check if configuration is supported
|
// 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;
|
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();
|
l2cap_reserve_packet_buffer();
|
||||||
uint8_t * out_buffer = l2cap_get_outgoing_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);
|
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 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 int next_remote_sep_index_to_query = -1;
|
||||||
static avdtp_sep_t * active_remote_sep = NULL;
|
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;
|
break;
|
||||||
|
|
||||||
case AVDTP_SUBEVENT_SIGNALING_MEDIA_CODEC_SBC_CAPABILITY:{
|
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);
|
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);
|
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;
|
app_state = AVDTP_APPLICATION_W2_SET_CONFIGURATION;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -306,7 +293,7 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
|
|||||||
break;
|
break;
|
||||||
case AVDTP_APPLICATION_W2_SET_CONFIGURATION:
|
case AVDTP_APPLICATION_W2_SET_CONFIGURATION:
|
||||||
app_state = AVDTP_APPLICATION_W2_GET_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;
|
break;
|
||||||
case AVDTP_APPLICATION_W2_GET_CONFIGURATION:
|
case AVDTP_APPLICATION_W2_GET_CONFIGURATION:
|
||||||
app_state = AVDTP_APPLICATION_W2_OPEN_STREAM_WITH_SEID;
|
app_state = AVDTP_APPLICATION_W2_OPEN_STREAM_WITH_SEID;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user