93 case UnexpectedCode::Timeout:
return "has timed out";
94 case UnexpectedCode::High:
return "input too high";
95 case UnexpectedCode::Low:
return "input too low";
96 case UnexpectedCode::Inconsistent:
return "is inconsistent";
97 case UnexpectedCode::Configuration:
return "is misconfigured";
98 case UnexpectedCode::Unknown:
124 #if BOARD_EXT_GPIOCHIPS > 0 && EFI_PROD_CODE
125 #if EFI_ENGINE_CONTROL
127 if (idx < 0 || idx >= MAX_CYLINDER_COUNT) {
131 if ((diag & PIN_OPEN) || (diag & PIN_SHORT_TO_GND)) {
133 }
else if ((diag & PIN_SHORT_TO_BAT) || (diag & PIN_OVERLOAD)) {
143 if (idx < 0 || idx >= MAX_CYLINDER_COUNT) {
164 return __builtin_ffs(diag) + 1;
198 #if BOARD_EXT_GPIOCHIPS > 0 && EFI_PROD_CODE
201 #if EFI_ENGINE_CONTROL
202 int unhappyInjector = 0;
208 state->injectorDiagnostic[i] = 0;
213 if (diag != PIN_OK && diag != PIN_UNKNOWN) {
214 unhappyInjector = 1 + i;
217 char description[32];
219 warning(
code,
"Injector %d fault: %s", i + 1, description);
233 state->ignitorDiagnostic[i] = 0;
238 if (diag != PIN_OK && diag != PIN_UNKNOWN) {
241 char description[32];
243 warning(
code,
"Ignition %d fault: %s", i + 1, description);
FuelComputer fuelComputer
InjectorOutputPin injectors[MAX_CYLINDER_COUNT]
IgnitionOutputPin coils[MAX_CYLINDER_COUNT]
brain_pin_diag_e getDiag() const
virtual bool hasSensor() const
virtual SensorResult get() const =0
const char * getSensorName() const
bool warning(ObdCode code, const char *fmt,...)
UNUSED(samplingTimeSeconds)
@ OBD_TPS1_Secondary_High
@ OBD_PPS_Primary_Timeout
@ OBD_TPS2_Secondary_High
@ OBD_TPS2_Primary_Timeout
@ OBD_TPS1_Secondary_Timeout
@ OBD_TPS1_Primary_Timeout
@ OBD_PPS_Secondary_Timeout
@ OBD_Injector_Circuit_1_High
@ OBD_TPS2_Secondary_Timeout
@ OBD_Injector_Circuit_1_Low
void pinDiag2string(char *buffer, size_t size, brain_pin_diag_e pin_diag)
bool isBrainPinValid(brain_pin_e brainPin)
static ObdCode getCode(SensorType type, UnexpectedCode code)
static ObdCode getCodeForIgnition(int idx, brain_pin_diag_e diag)
static ObdCode getCodeForInjector(int idx, brain_pin_diag_e diag)
static void check(SensorType type)
static uint8_t getTSErrorCode(brain_pin_diag_e diag)
const char * describeUnexpected(UnexpectedCode code)
@ AcceleratorPedalPrimary
@ AcceleratorPedalSecondary
void onSlowCallback() override
void onIgnitionStateChanged(bool ignitionOn) override
bool m_analogSensorsShouldWork
TunerStudioOutputChannels * getTunerStudioOutputChannels()