rusEFI
The most advanced open source ECU
Functions | Variables
efi_gpio.cpp File Reference

Detailed Description

EFI-related GPIO code.

Date
Sep 26, 2014
Author
Andrey Belomutskiy, (c) 2012-2020

Definition in file efi_gpio.cpp.

Functions

void initMiscOutputPins ()
 
static void initErrorLed (Gpio led)
 
void initPrimaryPins ()
 
void turnAllPinsOff (void)
 

Variables

EnginePins enginePins
 
static const char *const sparkNames []
 
static const char *const trailNames []
 
static const char *const trailShortNames [] = { "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "rA", "rB", "rD" }
 
const char * vvtNames []
 
const char * laNames []
 
static const char *const sparkShortNames []
 
static const char *const injectorNames []
 
static const char *const injectorShortNames []
 
static const char *const injectorStage2Names []
 
static const char *const injectorStage2ShortNames []
 
static const char *const auxValveShortNames [] = { "a1", "a2"}
 
static RegisteredOutputPinregisteredOutputHead = nullptr
 
bool verboseMode
 
bool qcDirectPinControlMode
 
ioportid_t criticalErrorLedPort
 
ioportmask_t criticalErrorLedPin
 
uint8_t criticalErrorLedState
 

Function Documentation

◆ initErrorLed()

static void initErrorLed ( Gpio  led)
static

Definition at line 813 of file efi_gpio.cpp.

813  {
814  enginePins.errorLedPin.initPin("led: CRITICAL status", led, (LED_PIN_MODE));
815  criticalErrorLedPort = getHwPort("CRITICAL", led);
816  criticalErrorLedPin = getHwPin("CRITICAL", led);
817  criticalErrorLedState = (LED_PIN_MODE == OM_INVERTED) ? 0 : 1;
818 }
OutputPin errorLedPin
Definition: efi_gpio.h:100
void initPin(const char *msg, brain_pin_e brainPin, pin_output_mode_e outputMode, bool forceInitWithFatalError=false)
Definition: efi_gpio.cpp:690
ioportmask_t criticalErrorLedPin
Definition: efi_gpio.cpp:809
ioportid_t criticalErrorLedPort
Definition: efi_gpio.cpp:808
uint8_t criticalErrorLedState
Definition: efi_gpio.cpp:810
EnginePins enginePins
Definition: efi_gpio.cpp:24
ioportid_t getHwPort(const char *msg, brain_pin_e brainPin)
ioportmask_t getHwPin(const char *msg, brain_pin_e brainPin)

Referenced by initPrimaryPins().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ initMiscOutputPins()

void initMiscOutputPins ( )

Definition at line 669 of file efi_gpio.cpp.

669  {
670 #if EFI_GPIO_HARDWARE
671 
672 #if HAL_USE_SPI
674 #endif /* HAL_USE_SPI */
675 
676 #if EFI_SHAFT_POSITION_INPUT
677  // todo: migrate remaining OutputPin to RegisteredOutputPin in order to get consistent dynamic pin init/deinit
679 #endif // EFI_SHAFT_POSITION_INPUT
680 
682 
683 #endif /* EFI_GPIO_HARDWARE */
684 }
OutputPin o2heater
Definition: efi_gpio.h:94
OutputPin debugTriggerSync
Definition: efi_gpio.h:105
OutputPin sdCsPin
Definition: efi_gpio.h:119
engine_configuration_s * engineConfiguration

Referenced by initHardware().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ initPrimaryPins()

void initPrimaryPins ( )

Definition at line 821 of file efi_gpio.cpp.

821  {
822 #if EFI_PROD_CODE
823  initErrorLed(LED_CRITICAL_ERROR_BRAIN_PIN);
824 
825  addConsoleAction("gpio_pins", EnginePins::debug);
826 #endif /* EFI_PROD_CODE */
827 }
static void debug()
Definition: efi_gpio.cpp:249
void addConsoleAction(const char *token, Void callback)
Register console action without parameters.
static void initErrorLed(Gpio led)
Definition: efi_gpio.cpp:813

Referenced by initHardwareNoConfig().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ turnAllPinsOff()

void turnAllPinsOff ( void  )

This method is part of fatal error handling. The whole method is pretty naive, but that's at least something.

Definition at line 833 of file efi_gpio.cpp.

833  {
834  for (int i = 0; i < MAX_CYLINDER_COUNT; i++) {
835  enginePins.injectors[i].setValue(false);
836  enginePins.coils[i].setValue(false);
838  }
841  enginePins.checkEnginePin.setValue(true); // yes this one can go ON
842 }
RegisteredOutputPin mainRelay
Definition: efi_gpio.h:73
IgnitionOutputPin trailingCoils[MAX_CYLINDER_COUNT]
Definition: efi_gpio.h:125
InjectorOutputPin injectors[MAX_CYLINDER_COUNT]
Definition: efi_gpio.h:122
RegisteredOutputPin fuelPumpRelay
Definition: efi_gpio.h:88
IgnitionOutputPin coils[MAX_CYLINDER_COUNT]
Definition: efi_gpio.h:124
RegisteredOutputPin checkEnginePin
Definition: efi_gpio.h:113
void setValue(const char *msg, int logicValue, bool isForce=false)
Definition: efi_gpio.cpp:583
Here is the call graph for this function:

Variable Documentation

◆ auxValveShortNames

const char* const auxValveShortNames[] = { "a1", "a2"}
static

Definition at line 62 of file efi_gpio.cpp.

Referenced by EnginePins::EnginePins().

◆ criticalErrorLedPin

ioportmask_t criticalErrorLedPin

Definition at line 809 of file efi_gpio.cpp.

Referenced by handleVvtCamSignal(), hwHandleShaftSignal(), and initErrorLed().

◆ criticalErrorLedPort

ioportid_t criticalErrorLedPort

Definition at line 808 of file efi_gpio.cpp.

Referenced by handleVvtCamSignal(), hwHandleShaftSignal(), and initErrorLed().

◆ criticalErrorLedState

uint8_t criticalErrorLedState

Definition at line 810 of file efi_gpio.cpp.

Referenced by initErrorLed().

◆ enginePins

EnginePins enginePins

Definition at line 24 of file efi_gpio.cpp.

Referenced by acRelayBench(), applyIACposition(), applyNewHardwareSettings(), auxPlainPinTurnOn(), blink_digits(), canDashboardHaltech(), TriggerDecoderBase::decodeTriggerEvent(), disengageStarterIfNeeded(), doRunBenchTestLuaOutput(), doRunFuelInjBench(), doRunSolenoidBench(), doRunSparkBench(), Engine::efiWatchdog(), endSimultaneousInjectionOnlyTogglePins(), EnginePins::EnginePins(), fan2Bench(), fanBenchExt(), firmwareError(), fuelPumpBenchExt(), FanControl1::getPin(), FanControl2::getPin(), IdleController::getRunningOpenLoop(), hdAcrBench(), hpfpValveBench(), SimpleTransmissionController::init(), Generic4TransmissionController::init(), Gm4l6xTransmissionController::init(), initAlternatorCtrl(), initErrorLed(), initMiscOutputPins(), initPwmTester(), initSpeedometer(), initStatusLeds(), initTachometer(), initWarningRunningPins(), isGdiEngine(), Engine::isMainRelayEnabled(), lua_fan(), luaDeInitPins(), mainRelayBench(), milBench(), Engine::onEngineHasStopped(), HpfpController::onFastCallback(), AcController::onSlowCallback(), FuelPumpController::onSlowCallback(), HarleyAcr::onSlowCallback(), MainRelayController::onSlowCallback(), SensorChecker::onSlowCallback(), onStartStopButtonToggle(), Engine::OnTriggerSynchronization(), Engine::periodicSlowCallback(), HpfpController::pinTurnOff(), HpfpController::pinTurnOn(), populateFrame(), prepareCylinderIgnitionSchedule(), printEngineSnifferPinMappings(), resetConfigurationExt(), FuelSchedule::resetOverlapping(), resetPinStats(), HpfpController::scheduleNextCycle(), sendPinStatePackets(), setPinConfigurationOverrides(), Generic4TransmissionController::setTccState(), slowStartStopButtonCallback(), EnginePins::startAuxValves(), startBoostPin(), starterRelayBench(), startHardware(), EnginePins::startIgnitionPins(), EnginePins::startInjectionPins(), startPwm(), startPwmTest(), startSimultaneousInjection(), EnginePins::stopAuxValves(), EnginePins::stopIgnitionPins(), EnginePins::stopInjectionPins(), turnAllPinsOff(), turnSparkPinHighStartCharging(), InjectionEvent::update(), SimpleTransmissionController::update(), updateFlags(), and updateTunerStudioState().

◆ injectorNames

const char* const injectorNames[]
static
Initial value:
= { "Injector 1", "Injector 2", "Injector 3", "Injector 4", "Injector 5", "Injector 6",
"Injector 7", "Injector 8", "Injector 9", "Injector 10", "Injector 11", "Injector 12"}

Definition at line 50 of file efi_gpio.cpp.

Referenced by EnginePins::EnginePins().

◆ injectorShortNames

const char* const injectorShortNames[]
static
Initial value:
= { PROTOCOL_INJ1_SHORT_NAME, "i2", "i3", "i4", "i5", "i6", "i7", "i8",
"i9", "iA", "iB", "iC"}

Definition at line 53 of file efi_gpio.cpp.

Referenced by EnginePins::EnginePins().

◆ injectorStage2Names

const char* const injectorStage2Names[]
static
Initial value:
= { "Injector Second Stage 1", "Injector Second Stage 2", "Injector Second Stage 3", "Injector Second Stage 4", "Injector Second Stage 5", "Injector Second Stage 6",
"Injector Second Stage 7", "Injector Second Stage 8", "Injector Second Stage 9", "Injector Second Stage 10", "Injector Second Stage 11", "Injector Second Stage 12"}

Definition at line 56 of file efi_gpio.cpp.

Referenced by EnginePins::EnginePins().

◆ injectorStage2ShortNames

const char* const injectorStage2ShortNames[]
static
Initial value:
= { PROTOCOL_INJ1_STAGE2_SHORT_NAME, "j2", "j3", "j4", "j5", "j6", "j7", "j8",
"j9", "jA", "jB", "jC"}

Definition at line 59 of file efi_gpio.cpp.

Referenced by EnginePins::EnginePins().

◆ laNames

const char* laNames[]
Initial value:
= {
PROTOCOL_WA_CHANNEL_1,
PROTOCOL_WA_CHANNEL_2,
PROTOCOL_WA_CHANNEL_3,
PROTOCOL_WA_CHANNEL_4}

Definition at line 40 of file efi_gpio.cpp.

Referenced by addEngineSnifferLogicAnalyzerEvent().

◆ qcDirectPinControlMode

bool qcDirectPinControlMode
extern

QC direct output control API is used by https://github.com/rusefi/stim test device quite different from bench testing user functionality: QC direct should never be engaged on a real vehicle Once QC direct control mode is activated the only way out is to reboot the unit!

Definition at line 21 of file can_bench_test.cpp.

Referenced by processCanQcBenchTest(), qcSetEtbState(), and OutputPin::setValue().

◆ registeredOutputHead

RegisteredOutputPin* registeredOutputHead = nullptr
static

◆ sparkNames

const char* const sparkNames[]
static
Initial value:
= { "Coil 1", "Coil 2", "Coil 3", "Coil 4", "Coil 5", "Coil 6", "Coil 7", "Coil 8",
"Coil 9", "Coil 10", "Coil 11", "Coil 12"}

Definition at line 26 of file efi_gpio.cpp.

Referenced by EnginePins::EnginePins().

◆ sparkShortNames

const char* const sparkShortNames[]
static
Initial value:
= { PROTOCOL_COIL1_SHORT_NAME, "c2", "c3", "c4", "c5", "c6", "c7", "c8",
"c9", "cA", "cB", "cD"}

Definition at line 47 of file efi_gpio.cpp.

Referenced by EnginePins::EnginePins().

◆ trailNames

const char* const trailNames[]
static
Initial value:
= { "Trail 1", "Trail 2", "Trail 3", "Trail 4", "Trail 5", "Trail 6", "Trail 7", "Trail 8",
"Trail 9", "Trail 10", "Trail 11", "Trail 12"}

Definition at line 29 of file efi_gpio.cpp.

Referenced by EnginePins::EnginePins().

◆ trailShortNames

const char* const trailShortNames[] = { "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "rA", "rB", "rD" }
static

Definition at line 32 of file efi_gpio.cpp.

Referenced by EnginePins::EnginePins().

◆ verboseMode

bool verboseMode
extern

◆ vvtNames

const char* vvtNames[]
Initial value:
= {
PROTOCOL_VVT1_NAME,
PROTOCOL_VVT2_NAME,
PROTOCOL_VVT3_NAME,
PROTOCOL_VVT4_NAME}

Definition at line 34 of file efi_gpio.cpp.

Referenced by addEngineSnifferVvtEvent(), and printEngineSnifferPinMappings().

Go to the source code of this file.