mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-19 07:43:57 +08:00
fix double DM sounds (#20811)
* fix double DM sounds * debug script * bool * cleanup * inf Co-authored-by: Comma Device <device@comma.ai>
This commit is contained in:
@@ -5,16 +5,20 @@
|
||||
|
||||
import time
|
||||
|
||||
from cereal import car
|
||||
import cereal.messaging as messaging
|
||||
from selfdrive.car.honda.interface import CarInterface
|
||||
from selfdrive.controls.lib.events import ET, EVENTS, Events
|
||||
from selfdrive.controls.lib.alertmanager import AlertManager
|
||||
|
||||
EventName = car.CarEvent.EventName
|
||||
|
||||
def cycle_alerts(duration=200, is_metric=False):
|
||||
alerts = list(EVENTS.keys())
|
||||
print(alerts)
|
||||
|
||||
alerts = [EventName.preDriverDistracted, EventName.promptDriverDistracted, EventName.driverDistracted]
|
||||
|
||||
CP = CarInterface.get_params("HONDA CIVIC 2016 TOURING")
|
||||
sm = messaging.SubMaster(['deviceState', 'pandaState', 'roadCameraState', 'modelV2', 'liveCalibration',
|
||||
'driverMonitoringState', 'longitudinalPlan', 'lateralPlan', 'liveLocationKalman'])
|
||||
|
||||
@@ -9,7 +9,7 @@ Sound::Sound() {
|
||||
}
|
||||
|
||||
void Sound::play(AudibleAlert alert) {
|
||||
int loops = sound_map[alert].second> - 1 ? sound_map[alert].second : QSoundEffect::Infinite;
|
||||
int loops = sound_map[alert].second ? QSoundEffect::Infinite : 0;
|
||||
sounds[alert].setLoopCount(loops);
|
||||
sounds[alert].setVolume(volume);
|
||||
sounds[alert].play();
|
||||
@@ -18,7 +18,7 @@ void Sound::play(AudibleAlert alert) {
|
||||
void Sound::stop() {
|
||||
for (auto &kv : sounds) {
|
||||
// Only stop repeating sounds
|
||||
if (sound_map[kv.first].second != 0) {
|
||||
if (kv.second.loopsRemaining() == QSoundEffect::Infinite) {
|
||||
kv.second.stop();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,16 +14,16 @@ public:
|
||||
float volume = 0;
|
||||
|
||||
private:
|
||||
std::map<AudibleAlert, std::pair<QString, int>> sound_map {
|
||||
// AudibleAlert, (file path, loop count)
|
||||
{AudibleAlert::CHIME_DISENGAGE, {"../assets/sounds/disengaged.wav", 0}},
|
||||
{AudibleAlert::CHIME_ENGAGE, {"../assets/sounds/engaged.wav", 0}},
|
||||
{AudibleAlert::CHIME_WARNING1, {"../assets/sounds/warning_1.wav", 0}},
|
||||
{AudibleAlert::CHIME_WARNING2, {"../assets/sounds/warning_2.wav", 0}},
|
||||
{AudibleAlert::CHIME_WARNING2_REPEAT, {"../assets/sounds/warning_2.wav", -1}},
|
||||
{AudibleAlert::CHIME_WARNING_REPEAT, {"../assets/sounds/warning_repeat.wav", -1}},
|
||||
{AudibleAlert::CHIME_ERROR, {"../assets/sounds/error.wav", 0}},
|
||||
{AudibleAlert::CHIME_PROMPT, {"../assets/sounds/error.wav", 0}}
|
||||
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}}
|
||||
};
|
||||
|
||||
std::map<AudibleAlert, QSoundEffect> sounds;
|
||||
|
||||
@@ -224,9 +224,8 @@ static void update_alert(UIState *s) {
|
||||
if (s->sm->updated("controlsState")) {
|
||||
auto alert_sound = scene.controls_state.getAlertSound();
|
||||
if (scene.alert_type.compare(scene.controls_state.getAlertType()) != 0) {
|
||||
if (alert_sound == AudibleAlert::NONE) {
|
||||
s->sound->stop();
|
||||
} else {
|
||||
s->sound->stop();
|
||||
if (alert_sound != AudibleAlert::NONE) {
|
||||
s->sound->play(alert_sound);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user