diff --git a/src/classic/a2dp.c b/src/classic/a2dp.c index 327ea0479..37d397682 100644 --- a/src/classic/a2dp.c +++ b/src/classic/a2dp.c @@ -987,13 +987,16 @@ uint8_t a2dp_config_process_set_mpeg_aac(avdtp_role_t role, uint16_t a2dp_cid, a2dp_config_process_t * config_process = a2dp_config_process_for_role(role, connection); uint8_t status = a2dp_config_process_config_init(role, connection, local_seid, remote_seid, AVDTP_CODEC_MPEG_2_4_AAC); - if (status != 0) { + if (status != ERROR_CODE_SUCCESS) { return status; } config_process->local_stream_endpoint->remote_configuration.media_codec.media_codec_information = (uint8_t *) config_process->local_stream_endpoint->media_codec_info; config_process->local_stream_endpoint->remote_configuration.media_codec.media_codec_information_len = 6; - avdtp_config_mpeg_aac_store(config_process->local_stream_endpoint->remote_configuration.media_codec.media_codec_information, configuration); + status = avdtp_config_mpeg_aac_store(config_process->local_stream_endpoint->remote_configuration.media_codec.media_codec_information, configuration); + if (status != ERROR_CODE_SUCCESS){ + return status; + } #ifdef ENABLE_A2DP_EXPLICIT_CONFIG a2dp_config_process_set_config(role, connection); #endif diff --git a/src/classic/avdtp_util.c b/src/classic/avdtp_util.c index 8195ddda0..540cb0309 100644 --- a/src/classic/avdtp_util.c +++ b/src/classic/avdtp_util.c @@ -1625,7 +1625,7 @@ void avdtp_config_mpeg_aac_set_sampling_frequency(uint8_t * config, uint16_t sam config[2] = ((sampling_frequency_bitmap & 0x0f) << 4) | (config[2] & 0x0f); } -void avdtp_config_mpeg_aac_store(uint8_t * config, const avdtp_configuration_mpeg_aac_t * configuration) { +uint8_t avdtp_config_mpeg_aac_store(uint8_t * config, const avdtp_configuration_mpeg_aac_t * configuration) { config[0] = (1 << (7 -(configuration->object_type - AVDTP_AAC_MPEG2_LC))) | (configuration->drc?1u:0u); uint8_t channels_bitmap = 0; switch (configuration->channels){ @@ -1642,13 +1642,14 @@ void avdtp_config_mpeg_aac_store(uint8_t * config, const avdtp_configuration_mpe channels_bitmap = 0x01; break; default: - break; + return ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE; } - config[2] = channels_bitmap & 0x0F; + config[2] = channels_bitmap; config[3] = ((configuration->vbr & 0x01) << 7) | ((configuration->bit_rate >> 16) & 0x7f); config[4] = (configuration->bit_rate >> 8) & 0xff; config[5] = configuration->bit_rate & 0xff; avdtp_config_mpeg_aac_set_sampling_frequency(config, configuration->sampling_frequency); + return ERROR_CODE_SUCCESS; } void avdtp_config_atrac_set_sampling_frequency(uint8_t * config, uint16_t sampling_frequency_hz) { diff --git a/src/classic/avdtp_util.h b/src/classic/avdtp_util.h index 2f37c8086..ca5762ffe 100644 --- a/src/classic/avdtp_util.h +++ b/src/classic/avdtp_util.h @@ -132,7 +132,7 @@ void avdtp_config_sbc_store(uint8_t * config, const avdtp_configuration_sbc_t * void avdtp_config_mpeg_audio_set_sampling_frequency(uint8_t * config, uint16_t sampling_frequency_hz); void avdtp_config_mpeg_audio_store(uint8_t * config, const avdtp_configuration_mpeg_audio_t * configuration); void avdtp_config_mpeg_aac_set_sampling_frequency(uint8_t * config, uint16_t sampling_frequency_hz); -void avdtp_config_mpeg_aac_store(uint8_t * config, const avdtp_configuration_mpeg_aac_t * configuration); +uint8_t avdtp_config_mpeg_aac_store(uint8_t * config, const avdtp_configuration_mpeg_aac_t * configuration); void avdtp_config_atrac_set_sampling_frequency(uint8_t * config, uint16_t sampling_frequency_hz); void avdtp_config_atrac_store(uint8_t * config, const avdtp_configuration_atrac_t * configuration); void avdtp_config_mpegd_usac_set_sampling_frequency(uint8_t * config, uint16_t sampling_frequency_hz);