* compiles but untested
* hide TS setting if clutchUpPin is not configured
* unit test passes
* disable feature if io not configured, fix unit test commit
* de morgans to align with other gating conditions - no functional change
* use engine module callbacks
* happy tests
* happy small-can-board
* interact with map avg via module
* simplify map avg init
* tweaks
* omit module to disable it instead!
* unnecessary guard
* minor cleanups
* unnecessary branch - lookups for these tables are fine at 0 rpm
* oop
* remove redundant_ford_tps
* meld redundant_ford_tps logic into RedundantSensor
* default tps/ppsSecondaryMaximum is 100
* initTps uses melded RedundantSensor
* meld RedundantSensor unit tests
* RedundantSensor::showInfo prints redundancy status
* RedundantSensor::showInfo prints partial redundancy status
* assert SensorResult code in RedundantSensor tests
* RedundantSensor doesn't hide primary sensor result code
in the case of a single sensor only, don't hide the UnexpectedCode value
* stale comments
* conform inputs
* implement datalog writing
* stale comment
* s
* stub out more support
* OutputChannelWriter
* tweak inputs so there's less diff later
* begin the resurrection
* use hw ci build script
* Revert "use hw ci build script"
This reverts commit e97e693eea.
* list serial ports
* bad merge
* Revert "list serial ports"
This reverts commit a29270405c.
* Revert "bad merge"
This reverts commit ea2541110e.
* unnecessary autoscales
* improve bad autoscale message
* bit group formatting
* formatting matching
* c struct writer mostly works
* tests and formatting alignment
* tests
* cherry pick potential hw ci fix
* format matching
* newparse reads live data files
* vvt scaling
* cleanup
* format matching
* format matching
* format matching
* format matching
* handle arrays of structs
* cleanup for merge
* jars