mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-29 13:20:39 +00:00
avdtp: return codec specific error code
This commit is contained in:
parent
8a1de4839a
commit
37968a719c
@ -499,6 +499,15 @@ void avdtp_source_register_media_config_validator(uint8_t (*callback)(const avdt
|
|||||||
|
|
||||||
uint8_t avdtp_validate_media_configuration(const avdtp_stream_endpoint_t *stream_endpoint, uint16_t avdtp_cid,
|
uint8_t avdtp_validate_media_configuration(const avdtp_stream_endpoint_t *stream_endpoint, uint16_t avdtp_cid,
|
||||||
uint8_t reconfigure, const adtvp_media_codec_capabilities_t *media_codec) {
|
uint8_t reconfigure, const adtvp_media_codec_capabilities_t *media_codec) {
|
||||||
|
|
||||||
|
uint8_t event[AVDTP_MEDIA_CONFIG_OTHER_EVENT_LEN];
|
||||||
|
uint16_t size = 0;
|
||||||
|
codec_specific_error_code_t codec_specific_error_code = avdtp_setup_media_codec_config_event(event, sizeof(event), stream_endpoint, avdtp_cid, reconfigure, media_codec, &size);
|
||||||
|
|
||||||
|
if (codec_specific_error_code != CODEC_SPECIFIC_ERROR_CODE_ACCEPT){
|
||||||
|
return (uint8_t) codec_specific_error_code;
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t (*callback)(const avdtp_stream_endpoint_t * stream_endpoint, const uint8_t * event, uint16_t size);
|
uint8_t (*callback)(const avdtp_stream_endpoint_t * stream_endpoint, const uint8_t * event, uint16_t size);
|
||||||
if (stream_endpoint->sep.type == AVDTP_SOURCE){
|
if (stream_endpoint->sep.type == AVDTP_SOURCE){
|
||||||
callback = avdtp_source_media_config_validator;
|
callback = avdtp_source_media_config_validator;
|
||||||
@ -509,13 +518,6 @@ uint8_t avdtp_validate_media_configuration(const avdtp_stream_endpoint_t *stream
|
|||||||
// config valid
|
// config valid
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
uint8_t event[AVDTP_MEDIA_CONFIG_OTHER_EVENT_LEN];
|
|
||||||
|
|
||||||
uint16_t size = 0;
|
|
||||||
uint8_t status = avdtp_setup_media_codec_config_event(event, sizeof(event), stream_endpoint, avdtp_cid, reconfigure, media_codec, &size);
|
|
||||||
if (status != ERROR_CODE_SUCCESS){
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
return (*callback)(stream_endpoint, event, size);
|
return (*callback)(stream_endpoint, event, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1003,7 +1003,7 @@ void avdtp_signaling_emit_capabilities(uint16_t avdtp_cid, uint8_t remote_seid,
|
|||||||
avdtp_signaling_emit_capability_done(avdtp_cid, remote_seid);
|
avdtp_signaling_emit_capability_done(avdtp_cid, remote_seid);
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t
|
static codec_specific_error_code_t
|
||||||
avdtp_signaling_setup_media_codec_sbc_config_event(uint8_t *event, uint16_t size,
|
avdtp_signaling_setup_media_codec_sbc_config_event(uint8_t *event, uint16_t size,
|
||||||
const avdtp_stream_endpoint_t *stream_endpoint,
|
const avdtp_stream_endpoint_t *stream_endpoint,
|
||||||
uint16_t avdtp_cid, uint8_t reconfigure,
|
uint16_t avdtp_cid, uint8_t reconfigure,
|
||||||
@ -1091,10 +1091,10 @@ avdtp_signaling_setup_media_codec_sbc_config_event(uint8_t *event, uint16_t size
|
|||||||
|
|
||||||
btstack_assert(pos == AVDTP_MEDIA_CONFIG_SBC_EVENT_LEN);
|
btstack_assert(pos == AVDTP_MEDIA_CONFIG_SBC_EVENT_LEN);
|
||||||
*out_size = pos;
|
*out_size = pos;
|
||||||
return ERROR_CODE_SUCCESS;
|
return CODEC_SPECIFIC_ERROR_CODE_ACCEPT;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t
|
static codec_specific_error_code_t
|
||||||
avdtp_signaling_setup_media_codec_mpeg_audio_config_event(uint8_t *event, uint16_t size,
|
avdtp_signaling_setup_media_codec_mpeg_audio_config_event(uint8_t *event, uint16_t size,
|
||||||
const avdtp_stream_endpoint_t *stream_endpoint,
|
const avdtp_stream_endpoint_t *stream_endpoint,
|
||||||
uint16_t avdtp_cid, uint8_t reconfigure,
|
uint16_t avdtp_cid, uint8_t reconfigure,
|
||||||
@ -1186,10 +1186,10 @@ avdtp_signaling_setup_media_codec_mpeg_audio_config_event(uint8_t *event, uint16
|
|||||||
|
|
||||||
btstack_assert(pos == AVDTP_MEDIA_CONFIG_MPEG_AUDIO_EVENT_LEN);
|
btstack_assert(pos == AVDTP_MEDIA_CONFIG_MPEG_AUDIO_EVENT_LEN);
|
||||||
*out_size = pos;
|
*out_size = pos;
|
||||||
return ERROR_CODE_SUCCESS;
|
return CODEC_SPECIFIC_ERROR_CODE_ACCEPT;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t
|
static codec_specific_error_code_t
|
||||||
avdtp_signaling_setup_media_codec_mpec_aac_config_event(uint8_t *event, uint16_t size,
|
avdtp_signaling_setup_media_codec_mpec_aac_config_event(uint8_t *event, uint16_t size,
|
||||||
const avdtp_stream_endpoint_t *stream_endpoint,
|
const avdtp_stream_endpoint_t *stream_endpoint,
|
||||||
uint16_t avdtp_cid, uint8_t reconfigure,
|
uint16_t avdtp_cid, uint8_t reconfigure,
|
||||||
@ -1261,10 +1261,10 @@ avdtp_signaling_setup_media_codec_mpec_aac_config_event(uint8_t *event, uint16_t
|
|||||||
|
|
||||||
btstack_assert(AVDTP_MEDIA_CONFIG_MPEG_AAC_EVENT_LEN == pos);
|
btstack_assert(AVDTP_MEDIA_CONFIG_MPEG_AAC_EVENT_LEN == pos);
|
||||||
*out_size = pos;
|
*out_size = pos;
|
||||||
return ERROR_CODE_SUCCESS;
|
return CODEC_SPECIFIC_ERROR_CODE_ACCEPT;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t
|
static codec_specific_error_code_t
|
||||||
avdtp_signaling_setup_media_codec_mpegd_config_event(uint8_t *event, uint16_t size,
|
avdtp_signaling_setup_media_codec_mpegd_config_event(uint8_t *event, uint16_t size,
|
||||||
const avdtp_stream_endpoint_t *stream_endpoint,
|
const avdtp_stream_endpoint_t *stream_endpoint,
|
||||||
uint16_t avdtp_cid, uint8_t reconfigure,
|
uint16_t avdtp_cid, uint8_t reconfigure,
|
||||||
@ -1326,14 +1326,14 @@ avdtp_signaling_setup_media_codec_mpegd_config_event(uint8_t *event, uint16_t si
|
|||||||
|
|
||||||
btstack_assert(AVDTP_MEDIA_CONFIG_MPEG_D_USAC_EVENT_LEN == pos);
|
btstack_assert(AVDTP_MEDIA_CONFIG_MPEG_D_USAC_EVENT_LEN == pos);
|
||||||
*out_size = pos;
|
*out_size = pos;
|
||||||
return ERROR_CODE_SUCCESS;
|
return CODEC_SPECIFIC_ERROR_CODE_ACCEPT;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t avdtp_signaling_setup_media_codec_atrac_config_event(uint8_t *event, uint16_t size,
|
static codec_specific_error_code_t avdtp_signaling_setup_media_codec_atrac_config_event(uint8_t *event, uint16_t size,
|
||||||
const avdtp_stream_endpoint_t *stream_endpoint,
|
const avdtp_stream_endpoint_t *stream_endpoint,
|
||||||
uint16_t avdtp_cid, uint8_t reconfigure,
|
uint16_t avdtp_cid, uint8_t reconfigure,
|
||||||
const uint8_t *media_codec_information,
|
const uint8_t *media_codec_information,
|
||||||
uint16_t *out_size) {
|
uint16_t *out_size) {
|
||||||
btstack_assert(size >= AVDTP_MEDIA_CONFIG_ATRAC_EVENT_LEN);
|
btstack_assert(size >= AVDTP_MEDIA_CONFIG_ATRAC_EVENT_LEN);
|
||||||
|
|
||||||
uint8_t local_seid = avdtp_local_seid(stream_endpoint);
|
uint8_t local_seid = avdtp_local_seid(stream_endpoint);
|
||||||
@ -1399,14 +1399,14 @@ static uint8_t avdtp_signaling_setup_media_codec_atrac_config_event(uint8_t *eve
|
|||||||
|
|
||||||
btstack_assert(pos == AVDTP_MEDIA_CONFIG_ATRAC_EVENT_LEN);
|
btstack_assert(pos == AVDTP_MEDIA_CONFIG_ATRAC_EVENT_LEN);
|
||||||
*out_size = pos;
|
*out_size = pos;
|
||||||
return ERROR_CODE_SUCCESS;
|
return CODEC_SPECIFIC_ERROR_CODE_ACCEPT;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t avdtp_signaling_setup_media_codec_other_config_event(uint8_t *event, uint16_t size,
|
static codec_specific_error_code_t avdtp_signaling_setup_media_codec_other_config_event(uint8_t *event, uint16_t size,
|
||||||
const avdtp_stream_endpoint_t *stream_endpoint,
|
const avdtp_stream_endpoint_t *stream_endpoint,
|
||||||
uint16_t avdtp_cid, uint8_t reconfigure,
|
uint16_t avdtp_cid, uint8_t reconfigure,
|
||||||
const adtvp_media_codec_capabilities_t *media_codec,
|
const adtvp_media_codec_capabilities_t *media_codec,
|
||||||
uint16_t *out_size) {
|
uint16_t *out_size) {
|
||||||
btstack_assert(size >= AVDTP_MEDIA_CONFIG_OTHER_EVENT_LEN);
|
btstack_assert(size >= AVDTP_MEDIA_CONFIG_OTHER_EVENT_LEN);
|
||||||
|
|
||||||
uint8_t local_seid = avdtp_local_seid(stream_endpoint);
|
uint8_t local_seid = avdtp_local_seid(stream_endpoint);
|
||||||
@ -1434,7 +1434,7 @@ static uint8_t avdtp_signaling_setup_media_codec_other_config_event(uint8_t *eve
|
|||||||
pos += media_codec_len;
|
pos += media_codec_len;
|
||||||
event[1] = pos - 2;
|
event[1] = pos - 2;
|
||||||
*out_size = pos;
|
*out_size = pos;
|
||||||
return ERROR_CODE_SUCCESS;
|
return CODEC_SPECIFIC_ERROR_CODE_ACCEPT;
|
||||||
}
|
}
|
||||||
|
|
||||||
void avdtp_signaling_emit_delay(uint16_t avdtp_cid, uint8_t local_seid, uint16_t delay) {
|
void avdtp_signaling_emit_delay(uint16_t avdtp_cid, uint8_t local_seid, uint16_t delay) {
|
||||||
@ -1451,9 +1451,9 @@ void avdtp_signaling_emit_delay(uint16_t avdtp_cid, uint8_t local_seid, uint16_t
|
|||||||
avdtp_emit_source(event, pos);
|
avdtp_emit_source(event, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t avdtp_setup_media_codec_config_event(uint8_t *event, uint16_t size, const avdtp_stream_endpoint_t *stream_endpoint,
|
codec_specific_error_code_t avdtp_setup_media_codec_config_event(uint8_t *event, uint16_t size, const avdtp_stream_endpoint_t *stream_endpoint,
|
||||||
uint16_t avdtp_cid, uint8_t reconfigure, const adtvp_media_codec_capabilities_t *media_codec, uint16_t *out_size) {
|
uint16_t avdtp_cid, uint8_t reconfigure, const adtvp_media_codec_capabilities_t *media_codec, uint16_t *out_size) {
|
||||||
uint8_t status;
|
codec_specific_error_code_t status;
|
||||||
switch (media_codec->media_codec_type){
|
switch (media_codec->media_codec_type){
|
||||||
case AVDTP_CODEC_SBC:
|
case AVDTP_CODEC_SBC:
|
||||||
status = avdtp_signaling_setup_media_codec_sbc_config_event(event, size, stream_endpoint, avdtp_cid, reconfigure,
|
status = avdtp_signaling_setup_media_codec_sbc_config_event(event, size, stream_endpoint, avdtp_cid, reconfigure,
|
||||||
|
@ -105,9 +105,9 @@ void
|
|||||||
avdtp_signaling_emit_configuration(avdtp_stream_endpoint_t *stream_endpoint, uint16_t avdtp_cid, uint8_t reconfigure,
|
avdtp_signaling_emit_configuration(avdtp_stream_endpoint_t *stream_endpoint, uint16_t avdtp_cid, uint8_t reconfigure,
|
||||||
avdtp_capabilities_t *configuration, uint16_t configured_service_categories);
|
avdtp_capabilities_t *configuration, uint16_t configured_service_categories);
|
||||||
|
|
||||||
uint8_t avdtp_setup_media_codec_config_event(uint8_t *event, uint16_t size, const avdtp_stream_endpoint_t *stream_endpoint,
|
codec_specific_error_code_t avdtp_setup_media_codec_config_event(uint8_t *event, uint16_t size, const avdtp_stream_endpoint_t *stream_endpoint,
|
||||||
uint16_t avdtp_cid, uint8_t reconfigure,
|
uint16_t avdtp_cid, uint8_t reconfigure,
|
||||||
const adtvp_media_codec_capabilities_t *media_codec, uint16_t *out_size);
|
const adtvp_media_codec_capabilities_t *media_codec, uint16_t *out_size);
|
||||||
|
|
||||||
void avdtp_streaming_emit_connection_established(avdtp_stream_endpoint_t *stream_endpoint, uint8_t status);
|
void avdtp_streaming_emit_connection_established(avdtp_stream_endpoint_t *stream_endpoint, uint8_t status);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user