Files
MuditaOS/module-audio/Audio/AudioCommon.cpp
Lefucjusz d5f84437ca [MOS-92] Fix continuing music playback after BT disconnection
Fix of the issue that after disconnecting
BT A2DP device during music playback
and reconnecting it without leaving
music player app the sound was not
audible anywhere.
Additionally unified behaviour of music
playback on connection/disconnection
of audio devices.
2022-08-29 15:04:52 +02:00

83 lines
2.2 KiB
C++

// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "AudioCommon.hpp"
#include "Profiles/Profile.hpp"
#include <Utils.hpp>
#include <sstream>
namespace audio
{
audio::RetCode GetDeviceError(AudioDevice::RetCode retCode)
{
if (retCode != AudioDevice::RetCode::Failure) {
return RetCode::Success;
}
return RetCode::DeviceFailure;
}
const std::string str(RetCode retcode)
{
return utils::enumToString(retcode);
}
const std::string str(const PlaybackType &playbackType) noexcept
{
if (playbackType == PlaybackType::None) {
return "";
}
return utils::enumToString(playbackType);
}
const std::string str(const Setting &setting) noexcept
{
return utils::enumToString(setting);
}
const std::string dbPath(const DbPathElement &element)
{
return dbPath(element.setting, element.playbackType, element.profileType);
}
const std::string dbPath(const Setting &setting, const PlaybackType &playbackType, const Profile::Type &profileType)
{
if (profileType == Profile::Type::Idle && playbackType == PlaybackType::None) {
return std::string();
}
std::vector<std::string> pathElements;
std::string path;
pathElements.emplace_back(audioDbPrefix);
if (auto s = str(profileType); !s.empty()) {
pathElements.emplace_back(s);
}
if (auto s = str(playbackType); !s.empty()) {
pathElements.emplace_back(s);
}
if (auto s = str(setting); !s.empty()) {
pathElements.emplace_back(s);
}
for (size_t idx = 0; idx < pathElements.size(); idx++) {
path.append(pathElements[idx]);
if (idx != pathElements.size() - 1) {
path.append(1, dbPathSeparator);
}
}
return path;
}
auto GetVolumeText(const audio::Volume &volume) -> std::string
{
return (static_cast<std::ostringstream &&>(std::ostringstream() << "Vol: " << std::to_string(volume))).str();
}
} // namespace audio