  import os
  import shutil
  import subprocess
  import sys
  import sysconfig
  import platform
  import numpy as np
 
</s> remove from selfdrive.hardware import HARDWARE, TICI
 </s> add from selfdrive.hardware import HARDWARE, TICI, AGNOS </s> remove from selfdrive.hardware import TICI
 </s> add from selfdrive.hardware import AGNOS </s> remove         if TICI and ((modem_version is None) or (modem_nv is None)):
 </s> add         if AGNOS and ((modem_version is None) or (modem_nv is None)): </s> remove     submaster_config={'ignore_avg_freq': ['radarState', 'longitudinalPlan']}
 </s> add     submaster_config={
      'ignore_avg_freq': ['radarState', 'longitudinalPlan', 'driverCameraState', 'driverMonitoringState'],  # dcam is expected at 20 Hz
      'ignore_alive': ['wideRoadCameraState'],  # TODO: Add to regen
    }
  import os

  import subprocess
  import sys
  import sysconfig
  import platform
  import numpy as np
keep replace keep keep keep keep keep
 less TICI when not needed (#24698)

* less TICI when not needed

* fix process replay

* move reading voltages into hw abstraction layer

* Update selfdrive/hardware/tici/hardware.h

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>

* Update selfdrive/hardware/hw.h

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>

* Update selfdrive/hardware/base.h

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>

* rename init function

* Update selfdrive/athena/athenad.py

Co-authored-by: Robbe Derks <robbe.derks@gmail.com>

* Update selfdrive/boardd/boardd.cc

* Apply suggestions from code review

* Update selfdrive/thermald/thermald.py

* update ref

* fix alert width if all cameras are bad

* add ecam to test_loggerd

* bump cereal

* bump cereal

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
Co-authored-by: Robbe Derks <robbe.derks@gmail.com> 
SConstruct