Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
SoundManager.hpp
Go to the documentation of this file.
1#ifndef IV_SRC_CORE_SOUNDMANAGER_HPP_
2#define IV_SRC_CORE_SOUNDMANAGER_HPP_
3
4#include "core/defines.hpp"
5
6#include <SDL2/SDL_mixer.h>
7#include <atomic>
8#include <memory>
9
10namespace iv::sound
11{
12
14{
15public:
16 SoundManager() = delete;
17 explicit SoundManager(uint8_t volume = 128);
19
20 SoundManager(const SoundManager &) = delete;
22
25
26 void alarmsActive(bool active = true);
27 void soundActive(bool active = true);
28 void repeatAlarmActive(bool active = true);
29 void callActive(bool active = true);
30 void changeEngineAssistancePlaceActive(bool active = true);
31 void diamarRepeaterCommFail(bool active = true);
32 void testSound(bool active = true);
33
34 //TODO: [IV_MODEL] Probar que el volumen funciona correctamente
35 //TODO: [IV_MODEL] Add volume to the preferences file of diamar
36 void volumeUp() const;
37 void volumeDown() const;
38 void soundOff();
39
40 void frame();
41
42 [[nodiscard]] uint8_t getVolume() const;
43
44private:
45 void play();
46 void stop();
47
48 bool shouldRepeatAlarmSound() const;
49
50 std::atomic_bool m_alarmsActive {false};// Only can access ManagerAlarms
51 std::atomic_bool m_soundActive {false};
52
53 std::atomic_bool m_repeatAlarmActive {false};
54 std::atomic_bool m_callActive {false};
55 std::atomic_bool m_changeEngineAssistancePlaceActive {false};
56
57 //Only in DiamarRepeater
58 std::atomic_bool m_diamarRepeaterCommFail {false};
59 std::atomic_bool m_testSound {false};
60
63 std::unique_ptr<Mix_Chunk, decltype(&Mix_FreeChunk)> m_soundAlarm;
64
66};
67
68}// namespace iv::sound
69
70#endif//IV_SRC_CORE_SOUNDMANAGER_HPP_
Definition SoundManager.hpp:14
void diamarRepeaterCommFail(bool active=true)
Definition SoundManager.cpp:188
void play()
Definition SoundManager.cpp:116
std::atomic_bool m_changeEngineAssistancePlaceActive
Definition SoundManager.hpp:55
iv::types::timestamp m_lastSoundOff
Definition SoundManager.hpp:61
std::atomic_bool m_diamarRepeaterCommFail
Definition SoundManager.hpp:58
iv::types::delay m_alarmRepeatSoundOffDuration
Definition SoundManager.hpp:62
std::atomic_bool m_testSound
Definition SoundManager.hpp:59
~SoundManager()
Definition SoundManager.cpp:41
void volumeUp() const
Definition SoundManager.cpp:74
std::atomic_bool m_soundActive
Definition SoundManager.hpp:51
std::unique_ptr< Mix_Chunk, decltype(&Mix_FreeChunk)> m_soundAlarm
Definition SoundManager.hpp:63
int32_t m_channelPlay
Definition SoundManager.hpp:65
std::atomic_bool m_callActive
Definition SoundManager.hpp:54
void soundActive(bool active=true)
Definition SoundManager.cpp:54
void changeEngineAssistancePlaceActive(bool active=true)
Definition SoundManager.cpp:178
SoundManager & operator=(const SoundManager &)=delete
void testSound(bool active=true)
Definition SoundManager.cpp:193
void alarmsActive(bool active=true)
Definition SoundManager.cpp:49
void volumeDown() const
Definition SoundManager.cpp:86
void soundOff()
Definition SoundManager.cpp:69
uint8_t getVolume() const
Definition SoundManager.cpp:111
SoundManager(SoundManager &&)=delete
void repeatAlarmActive(bool active=true)
Definition SoundManager.cpp:168
void frame()
Definition SoundManager.cpp:98
void callActive(bool active=true)
Definition SoundManager.cpp:183
SoundManager & operator=(SoundManager &&)=delete
bool shouldRepeatAlarmSound() const
Definition SoundManager.cpp:152
std::atomic_bool m_alarmsActive
Definition SoundManager.hpp:50
void stop()
Definition SoundManager.cpp:137
std::atomic_bool m_repeatAlarmActive
Definition SoundManager.hpp:53
SoundManager(const SoundManager &)=delete
Definition SoundManager.cpp:12
uint64_t timestamp
Definition types.hpp:21
uint16_t delay
Definition types.hpp:69