From e28f72c66110f2059b32cd9df46a19dccd70203f Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Sun, 23 Aug 2026 12:54:45 -0500 Subject: [PATCH] AHHHH --- cereal/custom.capnp | 1 + cereal/libcereal.a | Bin 642932 -> 643052 bytes selfdrive/selfdrived/selfdrived.py | 1 + selfdrive/ui/feedback/feedbackd.py | 35 +++------------------------ selfdrive/ui/soundd.py | 10 ++++---- selfdrive/ui/tests/test_feedbackd.py | 5 ++++ selfdrive/ui/tests/test_soundd.py | 5 ++++ 7 files changed, 21 insertions(+), 36 deletions(-) diff --git a/cereal/custom.capnp b/cereal/custom.capnp index a8ba066a5..5f2a11dc1 100644 --- a/cereal/custom.capnp +++ b/cereal/custom.capnp @@ -265,6 +265,7 @@ struct StarPilotSelfdriveState @0xf416ec09499d9d19 { alertSize @3 :AlertSize; alertType @4 :Text; alertSound @5 :Car.CarControl.HUDControl.AudibleAlert; + vEgo @6 :Float32; enum AlertStatus { normal @0; diff --git a/cereal/libcereal.a b/cereal/libcereal.a index 6c682fe7c8011a56e54a9cc35bfdf86e6dd2c67e..3139a7c5e8ba3579e7d85eff86282eb9649af58d 100644 GIT binary patch delta 1791 zcmZ9MZAe>J7{~9qxhD5?#%8O;BvrAnVHq>Z*oK4oGT1P5M%p69TGzFE(NI=vZ3oio zCSA&0K~baqLzzw}ZGDL`FiXB{F0l2>K+T7K5Lb%~EUdO88xBO6>^VK>ip~A<+@y?fw>^=z zZ;i<8&H6;=hIu1h0s8B?2XEZabCFsz z>?m9}?HFsIwbgoFd%aSBnKk0Y$M*dwtFz_P`@k~2yXu&M?~bxu^jGQz`xt)dFL*Pxz{@}qh-UVFf@v(~7-S8@J#`~F1u7>_f2 zde2@RId#rJ_ln&}ywkwT-qsHrXdU4GcXLQAo)xFqRF-y8m*3WU`~|sgHp=yCCT)*e zzk-zkp63mmkjq61f6b-aHO!xP}8yx8hp}4)Hv;gwKX}saIFMwQ~JPa#4zjX;OL33(~tasrffMKxvTL{{WY&bHGi0GA{6#YFpgIE&^<{UMQ51~RNvo&T8-RJQ(EAkBzdX@+d`hg7n3BnraVo9x4WQ* z5auSS;03E-_1Cb%-N#dMXB{Y*dS-&cETe0RdhrOu^yLe*%8;8Gt~C1(r*_SL(cb4% zZ^0R*U`wco@)|N%>1*c-#52Su<_YWO1#CwtrgasH)Gxs*HwPutBnw=|$!U^VS7Izf z)`VUm>+ghr(BT&LBw2LExQUHveo)+o!WeatY#mv423;}QaXSWP&3zb;@%){e;G%z( zc&rjqSP{}o_%}woOX8Io+FcT7XXvXNBQwO}iMul#1?(1r^ZaL8buRE4y}K6+KRDi^ j6YE{zRr=;wMbm}s3+7GnW<*u(6Q zhcbCt)6tcW5Qn^sl~M*~EHz71e83nI*o{$ROh~55d=S_0uQ5@bfQzrWq@Bhnc zGe)knn0RbXRXn9>Ow%=&W@zr>bBuq$ib)eN*I(aunz}~?ZtwtSIUNq~F7;x3&qc!Ho(tyigXL00rPc6b-t^n+lMgsy>u7LY{ zP1Cv&Jf+v-^e)R4KYW{;EE63tic1lG{G|Sy3x8eXp<@-q6KnH;Xwj_=>2mL!FYUGN z*3w;Q8|VI-VTGHLrpt(7X1d&?{7Q&=D8)z*dgq)aQ5 z@u*M2v)CcHCa1Dh&^iuDcruDmhSc*4s8Y>5ukd^5$x!-oS4yrK9ofHHC5iD^cNIvBY2%xGYv0Y=PlN+isel7HNRB( z6PJl)*>RbjRq3k?yGvps z`tv-bhhwNrdHsxLmlxNMA(bbX;;eupeb^On1djwvj;)`kRvsuvo0a=pS;MJ$YQ;wH zJUxVltPHCZe2#x-Dlz@J*N?*m-lW@cv=zj-m3yn`(-F(LTM6+32|mGSfdr$tTj1>! zc4#L&8(N@Wg@M->cuP%sNT!= FEEDBACK_MAX_DURATION or early_stop_triggered: # Check for timeout or early stop + if (block_num * SAMPLE_BUFFER / SAMPLE_RATE) >= FEEDBACK_MAX_DURATION: bookmark_requests += 1 # send bookmark at end of audio segment should_record_audio = False - early_stop_triggered = False - cloudlog.info("10-second recording completed or second button press - stopping audio feedback") + cloudlog.info("10-second recording completed - stopping audio feedback") pm.send('audioFeedback', msg) if sm.updated['bookmarkButton']: diff --git a/selfdrive/ui/soundd.py b/selfdrive/ui/soundd.py index a09e6816d..ddb64fa4d 100644 --- a/selfdrive/ui/soundd.py +++ b/selfdrive/ui/soundd.py @@ -5,7 +5,7 @@ import wave from pathlib import Path -from cereal import car, custom, log, messaging +from cereal import custom, log, messaging from openpilot.common.basedir import BASEDIR from openpilot.common.filter_simple import FirstOrderFilter from openpilot.common.params import Params @@ -41,6 +41,8 @@ StarPilotAudibleAlert = custom.StarPilotCarControl.HUDControl.AudibleAlert STARPILOT_CUSTOM_ALERT_OFFSET = 1000 STARPILOT_CUSTOM_ALERT_START = int(StarPilotAudibleAlert.angry) TURN_STEERING_LIMIT_ALERT_SUFFIX = "steersaturated" +# Keep carState out of this list; C4's onroad stack is near msgq's 15-reader limit. +SOUNDD_SERVICES = ('selfdriveState', 'soundPressure', 'starpilotSelfdriveState', 'starpilotPlan') def starpilot_alert_key(alert): @@ -301,9 +303,7 @@ class Soundd: # sounddevice must be imported after forking processes import sounddevice as sd - sm = messaging.SubMaster(['selfdriveState', 'soundPressure', 'carState']) - - sm = sm.extend(['starpilotSelfdriveState', 'starpilotPlan']) + sm = messaging.SubMaster(list(SOUNDD_SERVICES)) while True: stream = None @@ -330,7 +330,7 @@ class Soundd: self.get_audible_alert(sm) if self.current_alert != AudibleAlert.none: - v_ego = max(float(getattr(sm["carState"], "vEgo", 0.0)), 0.0) + v_ego = max(float(getattr(sm["starpilotSelfdriveState"], "vEgo", 0.0)), 0.0) if should_mute_turn_steering_limit_alert( self.current_alert_type, v_ego, diff --git a/selfdrive/ui/tests/test_feedbackd.py b/selfdrive/ui/tests/test_feedbackd.py index 6b7ec4486..76d38f4dc 100644 --- a/selfdrive/ui/tests/test_feedbackd.py +++ b/selfdrive/ui/tests/test_feedbackd.py @@ -3,6 +3,11 @@ import cereal.messaging as messaging from cereal import car from openpilot.common.params import Params from openpilot.system.manager.process_config import managed_processes +from openpilot.selfdrive.ui.feedback.feedbackd import FEEDBACKD_SERVICES + + +def test_feedbackd_does_not_consume_car_state_reader(): + assert "carState" not in FEEDBACKD_SERVICES @pytest.mark.skip("tmp disabled") diff --git a/selfdrive/ui/tests/test_soundd.py b/selfdrive/ui/tests/test_soundd.py index c146dce75..ae0b2db2b 100644 --- a/selfdrive/ui/tests/test_soundd.py +++ b/selfdrive/ui/tests/test_soundd.py @@ -3,6 +3,7 @@ from cereal import messaging from cereal.messaging import SubMaster, PubMaster from openpilot.selfdrive.ui.soundd import ( SELFDRIVE_STATE_TIMEOUT, + SOUNDD_SERVICES, check_selfdrive_timeout_alert, is_turn_steering_limit_alert, should_mute_turn_steering_limit_alert, @@ -14,6 +15,10 @@ AudibleAlert = log.SelfdriveState.AudibleAlert class TestSoundd: + def test_does_not_consume_car_state_reader(self): + assert "carState" not in SOUNDD_SERVICES + assert "starpilotSelfdriveState" in SOUNDD_SERVICES + def test_turn_steering_limit_alert_detection(self): assert is_turn_steering_limit_alert("steerSaturated/warning") assert is_turn_steering_limit_alert("goatSteerSaturated/warning")