diff --git a/cereal/car.capnp b/cereal/car.capnp index 05c2dd6d..6d713319 100644 --- a/cereal/car.capnp +++ b/cereal/car.capnp @@ -107,6 +107,10 @@ struct CarEvent @0x9b1657f34caf3ad3 { startupWhitePanda @82; canErrorPersistent @83; belowEngageSpeed @84; + noGps @85; + focusRecoverActive @86; + wrongCruiseMode @87; + neosUpdateRequired @88; } } diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index 55cfe1bf..168ef7e4 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import os import gc +import subprocess from cereal import car, log from common.numpy_fast import clip from common.realtime import sec_since_boot, set_realtime_priority, Ratekeeper, DT_CTRL @@ -142,6 +143,10 @@ class Controls: # if hw_type == HwType.whitePanda: # self.events.add(EventName.whitePandaUnsupported, static=True) + uname = subprocess.check_output(["uname", "-v"], encoding='utf8').strip() + if uname == "#1 SMP PREEMPT Wed Jun 10 12:40:53 PDT 2020": + self.events.add(EventName.neosUpdateRequired, static=True) + # controlsd is driven by can recv, expected at 100Hz self.rk = Ratekeeper(100, print_delay_threshold=None) self.prof = Profiler(False) # off by default diff --git a/selfdrive/controls/lib/events.py b/selfdrive/controls/lib/events.py index 6bd865a9..421aaaad 100644 --- a/selfdrive/controls/lib/events.py +++ b/selfdrive/controls/lib/events.py @@ -507,6 +507,16 @@ EVENTS = { ET.NO_ENTRY: NoEntryAlert("Speed Too Low"), }, + EventName.neosUpdateRequired: { + ET.PERMANENT: Alert( + "NEOS Update Required", + "Please Wait for Update", + AlertStatus.normal, AlertSize.mid, + Priority.HIGHEST, VisualAlert.none, AudibleAlert.none, 0., 0., .2), + ET.NO_ENTRY: NoEntryAlert("NEOS Update Required"), + }, + + EventName.sensorDataInvalid: { ET.PERMANENT: Alert( "No Data from Device Sensors",