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) {
163 return __builtin_ffs(diag) + TS_ENUM_OFFSET;
202#if BOARD_EXT_GPIOCHIPS > 0
203#if EFI_ENGINE_CONTROL
205 int unhappyInjector = 0;
211 state->injectorDiagnostic[i] = 0;
216 if (diag != PIN_OK && diag != PIN_UNKNOWN) {
217 unhappyInjector = 1 + i;
220 char description[32];
222 warning(
code,
"Injector %d fault: %s", i + 1, description);
236 state->ignitorDiagnostic[i] = 0;
241 if (diag != PIN_OK && diag != PIN_UNKNOWN) {
244 char description[32];
246 warning(
code,
"Ignition %d fault: %s", i + 1, description);
257 state->isAnalogFailure =
true;
259 state->isAnalogFailure =
false;
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
static EngineAccessor engine
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)
PUBLIC_API_WEAK void boardSensorChecker()
@ AcceleratorPedalPrimary
@ AcceleratorPedalSecondary
state("state", SensorCategory.SENSOR_INPUTS, FieldType.INT8, 1871, 1.0, -1.0, -1.0, "")
void onSlowCallback() override
void onIgnitionStateChanged(bool ignitionOn) override
bool m_analogSensorsShouldWork
TunerStudioOutputChannels * getTunerStudioOutputChannels()