onroad: remove sound_map from OnroadAlert (#21258)

* remove sound_map from OnroadAlert

* fix indentation

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
old-commit-hash: 6816b6d8f8
commatwo_master
Dean Lee 4 years ago committed by GitHub
parent a760fcfbde
commit dcc1f28bb2
  1. 29
      selfdrive/ui/qt/onroad.cc
  2. 14
      selfdrive/ui/qt/onroad.h

@ -67,9 +67,19 @@ void OnroadWindow::offroadTransition(bool offroad) {
// ***** onroad widgets ***** // ***** onroad widgets *****
OnroadAlerts::OnroadAlerts(QWidget *parent) : QWidget(parent) { OnroadAlerts::OnroadAlerts(QWidget *parent) : QWidget(parent) {
for (auto &kv : sound_map) { std::tuple<AudibleAlert, QString, bool> sound_list[] = {
auto path = QUrl::fromLocalFile(kv.second.first); {AudibleAlert::CHIME_DISENGAGE, "../assets/sounds/disengaged.wav", false},
sounds[kv.first].setSource(path); {AudibleAlert::CHIME_ENGAGE, "../assets/sounds/engaged.wav", false},
{AudibleAlert::CHIME_WARNING1, "../assets/sounds/warning_1.wav", false},
{AudibleAlert::CHIME_WARNING2, "../assets/sounds/warning_2.wav", false},
{AudibleAlert::CHIME_WARNING2_REPEAT, "../assets/sounds/warning_2.wav", true},
{AudibleAlert::CHIME_WARNING_REPEAT, "../assets/sounds/warning_repeat.wav", true},
{AudibleAlert::CHIME_ERROR, "../assets/sounds/error.wav", false},
{AudibleAlert::CHIME_PROMPT, "../assets/sounds/error.wav", false}};
for (auto &[alert, fn, loops] : sound_list) {
sounds[alert].first.setSource(QUrl::fromLocalFile(fn));
sounds[alert].second = loops ? QSoundEffect::Infinite : 0;
} }
} }
@ -132,17 +142,18 @@ void OnroadAlerts::updateAlert(const QString &t1, const QString &t2, float blink
} }
void OnroadAlerts::playSound(AudibleAlert alert) { void OnroadAlerts::playSound(AudibleAlert alert) {
int loops = sound_map[alert].second ? QSoundEffect::Infinite : 0; auto &[sound, loops] = sounds[alert];
sounds[alert].setLoopCount(loops); sound.setLoopCount(loops);
sounds[alert].setVolume(volume); sound.setVolume(volume);
sounds[alert].play(); sound.play();
} }
void OnroadAlerts::stopSounds() { void OnroadAlerts::stopSounds() {
for (auto &kv : sounds) { for (auto &kv : sounds) {
// Only stop repeating sounds // Only stop repeating sounds
if (kv.second.loopsRemaining() == QSoundEffect::Infinite) { auto &[sound, loops] = kv.second;
kv.second.stop(); if (sound.loopsRemaining() == QSoundEffect::Infinite) {
sound.stop();
} }
} }
} }

@ -29,21 +29,9 @@ private:
void updateAlert(const QString &t1, const QString &t2, float blink_rate, void updateAlert(const QString &t1, const QString &t2, float blink_rate,
const std::string &type, cereal::ControlsState::AlertSize size, AudibleAlert sound); const std::string &type, cereal::ControlsState::AlertSize size, AudibleAlert sound);
std::map<AudibleAlert, std::pair<QString, bool>> sound_map {
// AudibleAlert, (file path, inf loop)
{AudibleAlert::CHIME_DISENGAGE, {"../assets/sounds/disengaged.wav", false}},
{AudibleAlert::CHIME_ENGAGE, {"../assets/sounds/engaged.wav", false}},
{AudibleAlert::CHIME_WARNING1, {"../assets/sounds/warning_1.wav", false}},
{AudibleAlert::CHIME_WARNING2, {"../assets/sounds/warning_2.wav", false}},
{AudibleAlert::CHIME_WARNING2_REPEAT, {"../assets/sounds/warning_2.wav", true}},
{AudibleAlert::CHIME_WARNING_REPEAT, {"../assets/sounds/warning_repeat.wav", true}},
{AudibleAlert::CHIME_ERROR, {"../assets/sounds/error.wav", false}},
{AudibleAlert::CHIME_PROMPT, {"../assets/sounds/error.wav", false}}
};
QColor bg; QColor bg;
float volume = Hardware::MIN_VOLUME; float volume = Hardware::MIN_VOLUME;
std::map<AudibleAlert, QSoundEffect> sounds; std::map<AudibleAlert, std::pair<QSoundEffect, int>> sounds;
float blinking_rate = 0; float blinking_rate = 0;
QString text1, text2; QString text1, text2;
std::string alert_type; std::string alert_type;

Loading…
Cancel
Save