blob: d433b5fd3c1226b1c3c09328a74d1cf4aec6bc91 [file] [log] [blame]
/*
* Copyright 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "mock_codec_manager.h"
MockCodecManager* mock_codec_manager_pimpl_;
MockCodecManager* MockCodecManager::GetInstance() {
le_audio::CodecManager::GetInstance();
return mock_codec_manager_pimpl_;
}
namespace le_audio {
struct CodecManager::impl : public MockCodecManager {
public:
impl() = default;
~impl() = default;
};
CodecManager::CodecManager() {}
types::CodecLocation CodecManager::GetCodecLocation() const {
if (!pimpl_) return types::CodecLocation::HOST;
return pimpl_->GetCodecLocation();
}
void CodecManager::UpdateActiveSourceAudioConfig(
const stream_configuration& stream_conf, uint16_t delay_ms,
std::function<void(const ::le_audio::offload_config& config)>
update_receiver) {
if (pimpl_)
return pimpl_->UpdateActiveSourceAudioConfig(stream_conf, delay_ms,
update_receiver);
}
void CodecManager::UpdateActiveSinkAudioConfig(
const stream_configuration& stream_conf, uint16_t delay_ms,
std::function<void(const ::le_audio::offload_config& config)>
update_receiver) {
if (pimpl_)
return pimpl_->UpdateActiveSinkAudioConfig(stream_conf, delay_ms,
update_receiver);
}
const set_configurations::AudioSetConfigurations*
CodecManager::GetOffloadCodecConfig(types::LeAudioContextType ctx_type) {
if (!pimpl_) return nullptr;
return pimpl_->GetOffloadCodecConfig(ctx_type);
}
void CodecManager::Start(
const std::vector<bluetooth::le_audio::btle_audio_codec_config_t>&
offloading_preference) {
// It is needed here as CodecManager which is a singleton creates it, but in
// this mock we want to destroy and recreate the mock on each test case.
if (!pimpl_) {
pimpl_ = std::make_unique<impl>();
}
mock_codec_manager_pimpl_ = pimpl_.get();
pimpl_->Start();
}
void CodecManager::Stop() {
// It is needed here as CodecManager which is a singleton creates it, but in
// this mock we want to destroy and recreate the mock on each test case.
if (pimpl_) {
pimpl_->Stop();
pimpl_.reset();
}
mock_codec_manager_pimpl_ = nullptr;
}
// CodecManager::~CodecManager() = default;
} // namespace le_audio