// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "VolumeScaler.hpp"
namespace audio::volume::scaler
{
Volume toSystemVolume(std::uint8_t avrcpVolume) noexcept
{
constexpr auto avrcpMaxVolume = float{0x7F}; // from AVRCP documentation
const auto systemVolume = (avrcpVolume / avrcpMaxVolume) * audio::maxVolume;
// prevents conversion to 0 while in fact sound is not muted
if (systemVolume > 0.01f && systemVolume < 1.0f) {
return 1;
}
return systemVolume;
}
std::uint8_t toAvrcpVolume(float systemVolume) noexcept
{
constexpr auto avrcpMaxVolume = std::uint8_t{0x7F}; // from AVRCP documentation
return std::round(systemVolume * avrcpMaxVolume / audio::maxVolume);
}
} // namespace audio::volume::scaler