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

Detailed Description

his file is about general input/output utility methods, not much EFI-specifics

Date
Jan 24, 2013
Author
Andrey Belomutskiy, (c) 2012-2020

Definition in file io_pins.cpp.

Functions

void efiSetPadUnused (brain_pin_e brainPin)
 
void efiSetPadMode (const char *msg, brain_pin_e brainPin, iomode_t mode)
 
void efiSetPadModeWithoutOwnershipAcquisition (const char *msg, brain_pin_e brainPin, iomode_t mode)
 
bool efiReadPin (brain_pin_e pin)
 
iomode_t getInputMode (pin_input_mode_e mode)
 
void writePad (const char *msg, brain_pin_e pin, int bit)
 
void setMockState (brain_pin_e pin, bool state)
 

Variables

bool mockPinStates [BRAIN_PIN_COUNT]
 

Function Documentation

◆ efiReadPin()

bool efiReadPin ( brain_pin_e  pin)

Definition at line 89 of file io_pins.cpp.

89  {
90  if (!isBrainPinValid(pin))
91  return false;
92  if (brain_pin_is_onchip(pin))
93  return palReadPad(getHwPort("readPin", pin), getHwPin("readPin", pin));
94  #if (BOARD_EXT_GPIOCHIPS > 0)
95  else if (brain_pin_is_ext(pin))
96  return (gpiochips_readPad(pin) > 0);
97  #endif
98 
99  /* incorrect pin */
100  return false;
101 }
int gpiochips_readPad(brain_pin_e pin)
Get value to gpio of gpiochip.
Definition: core.cpp:355
ioportid_t getHwPort(const char *msg, brain_pin_e brainPin)
ioportmask_t getHwPin(const char *msg, brain_pin_e brainPin)
bool brain_pin_is_onchip(brain_pin_e brainPin)
bool isBrainPinValid(brain_pin_e brainPin)
bool brain_pin_is_ext(brain_pin_e brainPin)

Referenced by flexExtiCallback(), getAuxDigital(), getBrakePedalState(), getClutchUpState(), AntilagSystemBase::isInsideALSSwitchCondition(), LaunchControlBase::isInsideSwitchCondition(), HellaOilLevelSensor::onEdge(), MainRelayController::onSlowCallback(), ButtonDebounce::stopConfiguration(), GenericGearController::update(), and Engine::updateSwitchInputs().

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

◆ efiSetPadMode()

void efiSetPadMode ( const char *  msg,
brain_pin_e  brainPin,
iomode_t  mode 
)

This method would set an error condition if pin is already used

Definition at line 48 of file io_pins.cpp.

48  {
49  if (!isBrainPinValid(brainPin)) {
50  // No pin configured, nothing to do here.
51  return;
52  }
53 
54  bool wasUsed = brain_pin_markUsed(brainPin, msg);
55 
56  if (!wasUsed) {
57  efiSetPadModeWithoutOwnershipAcquisition(msg, brainPin, mode);
58  }
59 }
void efiSetPadModeWithoutOwnershipAcquisition(const char *msg, brain_pin_e brainPin, iomode_t mode)
Definition: io_pins.cpp:61
bool brain_pin_markUsed(Gpio brainPin, const char *msg)
Here is the call graph for this function:

◆ efiSetPadModeWithoutOwnershipAcquisition()

void efiSetPadModeWithoutOwnershipAcquisition ( const char *  msg,
brain_pin_e  brainPin,
iomode_t  mode 
)

Definition at line 61 of file io_pins.cpp.

61  {
62 #if EFI_PROD_CODE
63  /*check if on-chip pin or external */
64  if (brain_pin_is_onchip(brainPin)) {
65  /* on-chip */
66  ioportid_t port = getHwPort(msg, brainPin);
67  ioportmask_t pin = getHwPin(msg, brainPin);
68  /* paranoid */
69  if (port == GPIO_NULL)
70  return;
71 
72  palSetPadMode(port, pin, mode);
73  }
74  #if (BOARD_EXT_GPIOCHIPS > 0)
75  else {
76  gpiochips_setPadMode(brainPin, mode);
77  }
78  #endif
79 
80 #endif /* EFI_PROD_CODE */
81 }
int gpiochips_setPadMode(brain_pin_e pin, iomode_t mode)
Set pin mode of gpiochip.
Definition: core.cpp:316
uint32_t ioportmask_t
Digital I/O port sized unsigned type.
Definition: hal_pal_lld.h:78
GPIO_TypeDef * ioportid_t
Port Identifier.
Definition: hal_pal_lld.h:102

Referenced by efiSetPadMode(), qcSetEtbState(), and setPin().

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

◆ efiSetPadUnused()

void efiSetPadUnused ( brain_pin_e  brainPin)

Definition at line 20 of file io_pins.cpp.

20  {
21 #if EFI_PROD_CODE
22  /* input with pull up, is it safe? */
23  iomode_t mode = PAL_STM32_MODE_INPUT | PAL_STM32_PUPDR_PULLUP;
24 
25  if (brain_pin_is_onchip(brainPin)) {
26  ioportid_t port = getHwPort("unused", brainPin);
27  ioportmask_t pin = getHwPin("unused", brainPin);
28 
29  /* input with pull up, is it safe?
30  * todo: shall we reuse 'default state' constants with board.h?
31  * */
32  palSetPadMode(port, pin, mode);
33  palWritePad(port, pin, 0);
34  }
35  #if (BOARD_EXT_GPIOCHIPS > 0)
36  else {
37  gpiochips_setPadMode(brainPin, mode);
38  }
39  #endif
40 #endif /* EFI_PROD_CODE */
41 
42  brain_pin_markUnused(brainPin);
43 }
uint32_t iomode_t
Digital I/O modes.
Definition: hal_pal_lld.h:83
void brain_pin_markUnused(brain_pin_e brainPin)

Referenced by applyNewHardwareSettings(), OutputPin::deInit(), deInitIfValid(), stopAuxSerialPins(), ButtonDebounce::stopConfiguration(), stopKLine(), stopSent(), stopSmartCsPins(), and stopSpi().

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

◆ getInputMode()

iomode_t getInputMode ( pin_input_mode_e  mode)

Definition at line 103 of file io_pins.cpp.

103  {
104  switch (mode) {
105  case PI_PULLUP:
106  return PAL_MODE_INPUT_PULLUP;
107  case PI_PULLDOWN:
108  return PAL_MODE_INPUT_PULLDOWN;
109  case PI_DEFAULT:
110  default:
111  return PAL_MODE_INPUT;
112  }
113 }

Referenced by AutomaticGearController::init(), GenericGearController::init(), startInputPinIfValid(), and ButtonDebounce::stopConfiguration().

Here is the caller graph for this function:

◆ setMockState()

void setMockState ( brain_pin_e  pin,
bool  state 
)

Definition at line 129 of file io_pins.cpp.

129  {
130  mockPinStates[static_cast<int>(pin)] = state;
131 }
bool mockPinStates[BRAIN_PIN_COUNT]
Definition: io_pins.cpp:123
static ScState state

Referenced by OutputPin::setValue().

Here is the caller graph for this function:

◆ writePad()

void writePad ( const char *  msg,
brain_pin_e  pin,
int  bit 
)

Definition at line 115 of file io_pins.cpp.

115  {
116  palWritePad(getHwPort(msg, pin), getHwPin(msg, pin), bit);
117 }

Referenced by handleShaftSignal(), logVvtFront(), and turnOffAllDebugFields().

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

Variable Documentation

◆ mockPinStates

bool mockPinStates[BRAIN_PIN_COUNT]

Definition at line 123 of file io_pins.cpp.

Referenced by setMockState().

Go to the source code of this file.