M module-apps/application-alarm-clock/widgets/AlarmOptionsItem.cpp => module-apps/application-alarm-clock/widgets/AlarmOptionsItem.cpp +1 -1
@@ 188,7 188,7 @@ namespace gui
if (musicStatus == MusicStatus::Stop) {
musicStatus = MusicStatus::Play;
AudioServiceAPI::PlaybackStart(
- application, audio::PlaybackType::Multimedia, songsList[actualVectorIndex].filePath);
+ application, audio::PlaybackType::Alarm, songsList[actualVectorIndex].filePath);
}
else if (musicStatus == MusicStatus::Play) {
musicStatus = MusicStatus::Stop;
M module-apps/application-meditation/widgets/MeditationTimer.cpp => module-apps/application-meditation/widgets/MeditationTimer.cpp +1 -1
@@ 164,7 164,7 @@ namespace gui
void MeditationTimer::onInterval() const
{
- AudioServiceAPI::PlaybackStart(application, audio::PlaybackType::Multimedia, intervalSoundPath);
+ AudioServiceAPI::PlaybackStart(application, audio::PlaybackType::Meditation, intervalSoundPath);
}
void MeditationTimer::registerTimeoutCallback(const std::function<void()> &cb)
M module-audio/Audio/AudioCommon.hpp => module-audio/Audio/AudioCommon.hpp +4 -1
@@ 51,7 51,9 @@ namespace audio
KeypadSound,
CallRingtone,
TextMessageRingtone,
- Last = TextMessageRingtone,
+ Meditation,
+ Alarm,
+ Last = Alarm,
};
[[nodiscard]] const std::string str(const PlaybackType &playbackType) noexcept;
@@ 160,6 162,7 @@ namespace audio
ProfileNotSet,
DeviceFailure,
TokenNotFound,
+ Ignored,
Failed
};
M module-audio/Audio/AudioMux.cpp => module-audio/Audio/AudioMux.cpp +25 -5
@@ 9,11 9,13 @@ namespace audio
namespace
{
const std::map<PlaybackType, uint8_t> PlaybackTypePriority = {
+ {PlaybackType::Meditation, 1},
{PlaybackType::CallRingtone, 2},
- {PlaybackType::TextMessageRingtone, 3},
- {PlaybackType::Notifications, 3},
- {PlaybackType::Multimedia, 4},
- {PlaybackType::KeypadSound, 5},
+ {PlaybackType::Multimedia, 3},
+ {PlaybackType::Alarm, 4},
+ {PlaybackType::TextMessageRingtone, 5},
+ {PlaybackType::Notifications, 5},
+ {PlaybackType::KeypadSound, 6},
{PlaybackType::None, static_cast<uint8_t>(PlaybackType::Last)},
};
} // namespace
@@ 159,6 161,24 @@ namespace audio
constexpr bool AudioMux::IsMergable(const audio::PlaybackType &type) const
{
- return !(type == audio::PlaybackType::Multimedia);
+ switch (type) {
+ case PlaybackType::None:
+ [[fallthrough]];
+ case PlaybackType::Notifications:
+ [[fallthrough]];
+ case PlaybackType::KeypadSound:
+ [[fallthrough]];
+ case PlaybackType::TextMessageRingtone:
+ return true;
+ case PlaybackType::CallRingtone:
+ [[fallthrough]];
+ case PlaybackType::Meditation:
+ [[fallthrough]];
+ case PlaybackType::Alarm:
+ [[fallthrough]];
+ case PlaybackType::Multimedia:
+ return false;
+ }
+ return false;
}
} // namespace audio
M module-audio/Audio/test/unittest_audio.cpp => module-audio/Audio/test/unittest_audio.cpp +8 -8
@@ 239,10 239,12 @@ TEST_CASE("Test AudioMux")
std::vector<AudioMux::Input> audioInputs;
AudioMux aMux(audioInputs);
- auto testPlaybackTypeLowPrio = PlaybackType::Multimedia;
- auto testPlaybackTypeMidPrio = PlaybackType::Notifications;
+ auto testPlaybackTypeLowPrio = PlaybackType::Alarm;
+ auto testPlaybackTypeMidPrio = PlaybackType::Multimedia;
auto testPlaybackTypeHighPrio = PlaybackType::CallRingtone;
+ auto mergableType = PlaybackType::Notifications;
+
GIVEN("One Input")
{
WHEN("When idle input available")
@@ 270,9 272,8 @@ TEST_CASE("Test AudioMux")
}
WHEN("Should merge due to same mergable type active")
{
- tkId = insertAudio(
- audioInputs, Audio::State::Playback, testPlaybackTypeMidPrio, Operation::State::Idle, tokenIdx);
- auto retInput = aMux.GetAvailableInput(testPlaybackTypeMidPrio);
+ tkId = insertAudio(audioInputs, Audio::State::Playback, mergableType, Operation::State::Idle, tokenIdx);
+ auto retInput = aMux.GetAvailableInput(mergableType);
REQUIRE(retInput == std::nullopt);
}
}
@@ 314,9 315,8 @@ TEST_CASE("Test AudioMux")
}
WHEN("Should merge due to same mergable type active")
{
- insertAudio(
- audioInputs, Audio::State::Playback, testPlaybackTypeMidPrio, Operation::State::Idle, tokenIdx);
- auto retInput = aMux.GetAvailableInput(testPlaybackTypeMidPrio);
+ insertAudio(audioInputs, Audio::State::Playback, mergableType, Operation::State::Idle, tokenIdx);
+ auto retInput = aMux.GetAvailableInput(mergableType);
REQUIRE(retInput == std::nullopt);
}
WHEN("Should merge due to same mergable type active even if Idle available")
M module-services/service-audio/ServiceAudio.cpp => module-services/service-audio/ServiceAudio.cpp +12 -0
@@ 62,6 62,14 @@ sys::ReturnCodes ServiceAudio::InitHandler()
{dbPath(Setting::Volume, PlaybackType::TextMessageRingtone, Profile::Type::PlaybackLoudspeaker),
defaultVolumeHigh},
+ {dbPath(Setting::Volume, PlaybackType::Meditation, Profile::Type::PlaybackHeadphones), defaultVolumeLow},
+ {dbPath(Setting::Volume, PlaybackType::Meditation, Profile::Type::PlaybackBluetoothA2DP), defaultVolumeLow},
+ {dbPath(Setting::Volume, PlaybackType::Meditation, Profile::Type::PlaybackLoudspeaker), defaultVolumeHigh},
+
+ {dbPath(Setting::Volume, PlaybackType::Alarm, Profile::Type::PlaybackHeadphones), defaultVolumeLow},
+ {dbPath(Setting::Volume, PlaybackType::Alarm, Profile::Type::PlaybackBluetoothA2DP), defaultVolumeLow},
+ {dbPath(Setting::Volume, PlaybackType::Alarm, Profile::Type::PlaybackLoudspeaker), defaultVolumeHigh},
+
// ROUTING
{dbPath(Setting::Gain, PlaybackType::None, Profile::Type::RoutingBluetoothHSP), "20"},
{dbPath(Setting::Gain, PlaybackType::None, Profile::Type::RoutingEarspeaker), "3"},
@@ 84,12 92,16 @@ sys::ReturnCodes ServiceAudio::InitHandler()
{dbPath(Setting::EnableVibration, PlaybackType::KeypadSound, Profile::Type::Idle), defaultFalse},
{dbPath(Setting::EnableVibration, PlaybackType::CallRingtone, Profile::Type::Idle), defaultTrue},
{dbPath(Setting::EnableVibration, PlaybackType::TextMessageRingtone, Profile::Type::Idle), defaultTrue},
+ {dbPath(Setting::EnableVibration, PlaybackType::Meditation, Profile::Type::Idle), defaultFalse},
+ {dbPath(Setting::EnableVibration, PlaybackType::Alarm, Profile::Type::Idle), defaultTrue},
{dbPath(Setting::EnableSound, PlaybackType::Multimedia, Profile::Type::Idle), defaultTrue},
{dbPath(Setting::EnableSound, PlaybackType::Notifications, Profile::Type::Idle), defaultTrue},
{dbPath(Setting::EnableSound, PlaybackType::KeypadSound, Profile::Type::Idle), defaultTrue},
{dbPath(Setting::EnableSound, PlaybackType::CallRingtone, Profile::Type::Idle), defaultTrue},
{dbPath(Setting::EnableSound, PlaybackType::TextMessageRingtone, Profile::Type::Idle), defaultTrue},
+ {dbPath(Setting::EnableSound, PlaybackType::Meditation, Profile::Type::Idle), defaultTrue},
+ {dbPath(Setting::EnableSound, PlaybackType::Alarm, Profile::Type::Idle), defaultTrue},
};
for (const auto &setting : settingsCache) {