rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
Public Member Functions | Data Fields | Private Member Functions | Private Attributes
RegisteredOutputPin Class Reference

#include <efi_gpio.h>

Inheritance diagram for RegisteredOutputPin:
Inheritance graph
[legend]
Collaboration diagram for RegisteredOutputPin:
Collaboration graph
[legend]

Public Member Functions

 RegisteredOutputPin (const char *registrationName, size_t pinOffset, size_t pinModeOffset)
 
 RegisteredOutputPin (const char *registrationName, size_t pinOffset)
 
void init ()
 
void unregister ()
 
const chargetRegistrationName () const
 
- Public Member Functions inherited from OutputPin
void initPin (const char *msg, brain_pin_e brainPin, pin_output_mode_e outputMode, bool forceInitWithFatalError=false)
 
void initPin (const char *msg, brain_pin_e brainPin)
 
void deInit ()
 
bool isInitialized () const
 
bool getAndSet (int logicValue)
 
void setValue (const char *msg, int logicValue, bool isForce=false)
 
TEST_VIRTUAL void setValue (int logicValue, bool isForce=false)
 
void toggle ()
 
bool getLogicValue () const
 
brain_pin_diag_e getDiag () const
 
void resetToggleStats ()
 

Data Fields

RegisteredOutputPin *const next
 
- Data Fields inherited from OutputPin
ioportid_t m_port = 0
 
uint8_t m_pin = 0
 
int pinToggleCounter = 0
 
Timer pinToggleTimer
 
uint32_t durationsInStateMs [2]
 
brain_pin_e brainPin = Gpio::Unassigned
 
bool ext = false
 
int8_t currentLogicValue = INITIAL_PIN_STATE
 

Private Member Functions

bool isPinConfigurationChanged ()
 

Private Attributes

const char *const registrationName
 
const uint16_t m_pinOffset
 
const bool m_hasPinMode
 
const uint16_t m_pinModeOffset
 

Detailed Description

OutputPin with semi-automated init/deinit on configuration change

Definition at line 42 of file efi_gpio.h.

Constructor & Destructor Documentation

◆ RegisteredOutputPin() [1/2]

RegisteredOutputPin::RegisteredOutputPin ( const char registrationName,
size_t  pinOffset,
size_t  pinModeOffset 
)

Definition at line 74 of file efi_gpio.cpp.

77 , registrationName(p_registrationName)
78 , m_pinOffset(static_cast<uint16_t>(pinOffset))
79 , m_hasPinMode(true)
80 , m_pinModeOffset(static_cast<uint16_t>(pinModeOffset))
81{
82 // adding into head of the list is so easy and since we do not care about order that's what we shall do
84}
const char *const registrationName
Definition efi_gpio.h:53
const uint16_t m_pinModeOffset
Definition efi_gpio.h:56
RegisteredOutputPin *const next
Definition efi_gpio.h:48
const bool m_hasPinMode
Definition efi_gpio.h:55
const uint16_t m_pinOffset
Definition efi_gpio.h:54
static RegisteredOutputPin * registeredOutputHead
Definition efi_gpio.cpp:64

◆ RegisteredOutputPin() [2/2]

RegisteredOutputPin::RegisteredOutputPin ( const char registrationName,
size_t  pinOffset 
)

Definition at line 86 of file efi_gpio.cpp.

88 , registrationName(p_registrationName)
89 , m_pinOffset(static_cast<uint16_t>(pinOffset))
90 , m_hasPinMode(false)
91 , m_pinModeOffset(-1)
92{
93 // adding into head of the list is so easy and since we do not care about order that's what we shall do
95}

Member Function Documentation

◆ getRegistrationName()

const char * RegisteredOutputPin::getRegistrationName ( ) const
inline

Definition at line 49 of file efi_gpio.h.

49 {
50 return registrationName;
51 }

◆ init()

void RegisteredOutputPin::init ( )

Definition at line 111 of file efi_gpio.cpp.

111 {
112 brain_pin_e newPin = *(brain_pin_e *) ((void *) (&((char*) engineConfiguration)[m_pinOffset]));
113
114 pin_output_mode_e newMode;
115 if (m_hasPinMode) {
116 newMode = *(pin_output_mode_e *) ((void *) (&((char*) engineConfiguration)[m_pinModeOffset]));
117 } else {
118 newMode = OM_DEFAULT;
119 }
120
122 this->initPin(registrationName, newPin, newMode);
123 }
124}
void initPin(const char *msg, brain_pin_e brainPin, pin_output_mode_e outputMode, bool forceInitWithFatalError=false)
Definition efi_gpio.cpp:711
bool isPinConfigurationChanged()
Definition efi_gpio.cpp:97
static constexpr engine_configuration_s * engineConfiguration
pin_output_mode_e

Referenced by EnginePins::startPins().

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

◆ isPinConfigurationChanged()

bool RegisteredOutputPin::isPinConfigurationChanged ( )
private

Definition at line 97 of file efi_gpio.cpp.

97 {
98 brain_pin_e curPin = *(brain_pin_e *) ((void *) (&((char*)&activeConfiguration)[m_pinOffset]));
99 brain_pin_e newPin = *(brain_pin_e *) ((void *) (&((char*) engineConfiguration)[m_pinOffset]));
100 bool pinChanged = curPin != newPin;
101
102 if (!m_hasPinMode) {
103 return pinChanged;
104 }
105
106 pin_output_mode_e curMode = *(pin_output_mode_e *) ((void *) (&((char*)&activeConfiguration)[m_pinModeOffset]));
107 pin_output_mode_e newMode = *(pin_output_mode_e *) ((void *) (&((char*) engineConfiguration)[m_pinModeOffset]));
108 return pinChanged || curMode != newMode;
109}
engine_configuration_s & activeConfiguration

Referenced by init(), and unregister().

Here is the caller graph for this function:

◆ unregister()

void RegisteredOutputPin::unregister ( )

Definition at line 126 of file efi_gpio.cpp.

126 {
129 }
130}
void deInit()
Definition efi_gpio.cpp:802

Referenced by EnginePins::unregisterPins().

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

Field Documentation

◆ m_hasPinMode

const bool RegisteredOutputPin::m_hasPinMode
private

Definition at line 55 of file efi_gpio.h.

Referenced by init(), and isPinConfigurationChanged().

◆ m_pinModeOffset

const uint16_t RegisteredOutputPin::m_pinModeOffset
private

Definition at line 56 of file efi_gpio.h.

Referenced by init(), and isPinConfigurationChanged().

◆ m_pinOffset

const uint16_t RegisteredOutputPin::m_pinOffset
private

Definition at line 54 of file efi_gpio.h.

Referenced by init(), and isPinConfigurationChanged().

◆ next

RegisteredOutputPin* const RegisteredOutputPin::next

Definition at line 48 of file efi_gpio.h.

◆ registrationName

const char* const RegisteredOutputPin::registrationName
private

Definition at line 53 of file efi_gpio.h.

Referenced by getRegistrationName(), and init().


The documentation for this class was generated from the following files: