mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-18 20:03:53 +08:00
micd: don't update filtered sound level if playing sound (#26652)
* add is_sound_playing to hardware.py * micd: don't update filtered sound level if playing sound
This commit is contained in:
@@ -43,6 +43,10 @@ class HardwareBase(ABC):
|
||||
def get_sound_card_online(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def is_sound_playing(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_imei(self, slot) -> str:
|
||||
pass
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import random
|
||||
import subprocess
|
||||
|
||||
from cereal import log
|
||||
from system.hardware.base import HardwareBase, ThermalConfig
|
||||
@@ -17,6 +18,9 @@ class Pc(HardwareBase):
|
||||
def get_sound_card_online(self):
|
||||
return True
|
||||
|
||||
def is_sound_playing(self):
|
||||
return "RUNNING" in subprocess.check_output(["pactl", "list", "short", "sinks"]).decode('utf8')
|
||||
|
||||
def reboot(self, reason=None):
|
||||
print("REBOOT!")
|
||||
|
||||
|
||||
@@ -96,6 +96,9 @@ class Tici(HardwareBase):
|
||||
return (os.path.isfile('/proc/asound/card0/state') and
|
||||
open('/proc/asound/card0/state').read().strip() == 'ONLINE')
|
||||
|
||||
def is_sound_playing(self):
|
||||
return "RUNNING" in subprocess.check_output(["pactl", "list", "short", "sinks"]).decode('utf8')
|
||||
|
||||
def reboot(self, reason=None):
|
||||
subprocess.check_output(["sudo", "reboot"])
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import numpy as np
|
||||
from cereal import messaging
|
||||
from common.filter_simple import FirstOrderFilter
|
||||
from common.realtime import Ratekeeper
|
||||
from system.hardware import HARDWARE
|
||||
from system.swaglog import cloudlog
|
||||
|
||||
RATE = 10
|
||||
@@ -27,7 +28,8 @@ class Mic:
|
||||
# https://www.engineeringtoolbox.com/sound-pressure-d_711.html
|
||||
sound_pressure = np.sqrt(np.mean(self.measurements ** 2)) # RMS of amplitudes
|
||||
sound_pressure_level = 20 * np.log10(sound_pressure / REFERENCE_SPL) if sound_pressure > 0 else 0 # dB
|
||||
self.spl_filter.update(sound_pressure_level)
|
||||
if not HARDWARE.is_sound_playing():
|
||||
self.spl_filter.update(sound_pressure_level)
|
||||
else:
|
||||
sound_pressure = 0
|
||||
sound_pressure_level = 0
|
||||
|
||||
Reference in New Issue
Block a user