This commit is contained in:
Matthew Kennedy 2021-07-09 14:02:25 -07:00 committed by GitHub
parent ff31301284
commit 1bba234920
4 changed files with 29 additions and 26 deletions

View File

@ -182,10 +182,10 @@ bool EnginePins::stopPins() {
return result; return result;
} }
void EnginePins::unregisterPins(DECLARE_ENGINE_PARAMETER_SIGNATURE) { void EnginePins::unregisterPins() {
stopInjectionPins(PASS_ENGINE_PARAMETER_SIGNATURE); stopInjectionPins();
stopIgnitionPins(PASS_ENGINE_PARAMETER_SIGNATURE); stopIgnitionPins();
stopAuxValves(PASS_ENGINE_PARAMETER_SIGNATURE); stopAuxValves();
#if EFI_ELECTRONIC_THROTTLE_BODY #if EFI_ELECTRONIC_THROTTLE_BODY
unregisterEtbPins(); unregisterEtbPins();
@ -214,11 +214,11 @@ void EnginePins::debug() {
} }
} }
void EnginePins::startPins(DECLARE_ENGINE_PARAMETER_SIGNATURE) { void EnginePins::startPins() {
#if EFI_ENGINE_CONTROL #if EFI_ENGINE_CONTROL
startInjectionPins(PASS_ENGINE_PARAMETER_SIGNATURE); startInjectionPins();
startIgnitionPins(PASS_ENGINE_PARAMETER_SIGNATURE); startIgnitionPins();
startAuxValves(PASS_ENGINE_PARAMETER_SIGNATURE); startAuxValves();
#endif /* EFI_ENGINE_CONTROL */ #endif /* EFI_ENGINE_CONTROL */
RegisteredOutputPin * pin = registeredOutputHead; RegisteredOutputPin * pin = registeredOutputHead;
@ -236,20 +236,20 @@ void EnginePins::reset() {
} }
} }
void EnginePins::stopIgnitionPins(DECLARE_ENGINE_PARAMETER_SIGNATURE) { void EnginePins::stopIgnitionPins() {
for (int i = 0; i < MAX_CYLINDER_COUNT; i++) { for (int i = 0; i < MAX_CYLINDER_COUNT; i++) {
unregisterOutputIfPinOrModeChanged(enginePins.coils[i], ignitionPins[i], ignitionPinMode); unregisterOutputIfPinOrModeChanged(enginePins.coils[i], ignitionPins[i], ignitionPinMode);
unregisterOutputIfPinOrModeChanged(enginePins.trailingCoils[i], trailingCoilPins[i], ignitionPinMode); unregisterOutputIfPinOrModeChanged(enginePins.trailingCoils[i], trailingCoilPins[i], ignitionPinMode);
} }
} }
void EnginePins::stopInjectionPins(DECLARE_ENGINE_PARAMETER_SIGNATURE) { void EnginePins::stopInjectionPins() {
for (int i = 0; i < MAX_CYLINDER_COUNT; i++) { for (int i = 0; i < MAX_CYLINDER_COUNT; i++) {
unregisterOutputIfPinOrModeChanged(enginePins.injectors[i], injectionPins[i], injectionPinMode); unregisterOutputIfPinOrModeChanged(enginePins.injectors[i], injectionPins[i], injectionPinMode);
} }
} }
void EnginePins::stopAuxValves(DECLARE_ENGINE_PARAMETER_SIGNATURE) { void EnginePins::stopAuxValves() {
for (int i = 0; i < AUX_DIGITAL_VALVE_COUNT; i++) { for (int i = 0; i < AUX_DIGITAL_VALVE_COUNT; i++) {
NamedOutputPin *output = &enginePins.auxValve[i]; NamedOutputPin *output = &enginePins.auxValve[i];
// todo: do we need auxValveMode and reuse code? // todo: do we need auxValveMode and reuse code?
@ -259,7 +259,7 @@ void EnginePins::stopAuxValves(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
} }
} }
void EnginePins::startAuxValves(DECLARE_ENGINE_PARAMETER_SIGNATURE) { void EnginePins::startAuxValves() {
#if EFI_PROD_CODE #if EFI_PROD_CODE
for (int i = 0; i < AUX_DIGITAL_VALVE_COUNT; i++) { for (int i = 0; i < AUX_DIGITAL_VALVE_COUNT; i++) {
NamedOutputPin *output = &enginePins.auxValve[i]; NamedOutputPin *output = &enginePins.auxValve[i];
@ -271,7 +271,7 @@ void EnginePins::startAuxValves(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
#endif /* EFI_PROD_CODE */ #endif /* EFI_PROD_CODE */
} }
void EnginePins::startIgnitionPins(DECLARE_ENGINE_PARAMETER_SIGNATURE) { void EnginePins::startIgnitionPins() {
#if EFI_PROD_CODE #if EFI_PROD_CODE
for (size_t i = 0; i < engineConfiguration->specs.cylindersCount; i++) { for (size_t i = 0; i < engineConfiguration->specs.cylindersCount; i++) {
NamedOutputPin *trailingOutput = &enginePins.trailingCoils[i]; NamedOutputPin *trailingOutput = &enginePins.trailingCoils[i];
@ -287,7 +287,7 @@ void EnginePins::startIgnitionPins(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
#endif /* EFI_PROD_CODE */ #endif /* EFI_PROD_CODE */
} }
void EnginePins::startInjectionPins(DECLARE_ENGINE_PARAMETER_SIGNATURE) { void EnginePins::startInjectionPins() {
#if EFI_PROD_CODE #if EFI_PROD_CODE
// todo: should we move this code closer to the injection logic? // todo: should we move this code closer to the injection logic?
for (size_t i = 0; i < engineConfiguration->specs.cylindersCount; i++) { for (size_t i = 0; i < engineConfiguration->specs.cylindersCount; i++) {

View File

@ -159,12 +159,14 @@ public:
class EnginePins { class EnginePins {
public: public:
DECLARE_ENGINE_PTR;
EnginePins(); EnginePins();
void startPins(DECLARE_ENGINE_PARAMETER_SIGNATURE); void startPins();
void reset(); void reset();
static void debug(); static void debug();
bool stopPins(); bool stopPins();
void unregisterPins(DECLARE_ENGINE_PARAMETER_SIGNATURE); void unregisterPins();
RegisteredOutputPin mainRelay; RegisteredOutputPin mainRelay;
/** /**
* High Pressure Fuel Pump valve control * High Pressure Fuel Pump valve control
@ -214,13 +216,13 @@ public:
OutputPin tcuSolenoids[TCU_SOLENOID_COUNT]; OutputPin tcuSolenoids[TCU_SOLENOID_COUNT];
private: private:
void startInjectionPins(DECLARE_ENGINE_PARAMETER_SIGNATURE); void startInjectionPins();
void startIgnitionPins(DECLARE_ENGINE_PARAMETER_SIGNATURE); void startIgnitionPins();
void startAuxValves(DECLARE_ENGINE_PARAMETER_SIGNATURE); void startAuxValves();
void stopInjectionPins(DECLARE_ENGINE_PARAMETER_SIGNATURE); void stopInjectionPins();
void stopIgnitionPins(DECLARE_ENGINE_PARAMETER_SIGNATURE); void stopIgnitionPins();
void stopAuxValves(DECLARE_ENGINE_PARAMETER_SIGNATURE); void stopAuxValves();
}; };
#endif /* __cplusplus */ #endif /* __cplusplus */

View File

@ -540,7 +540,7 @@ void initHardware() {
initOutputPins(PASS_ENGINE_PARAMETER_SIGNATURE); initOutputPins(PASS_ENGINE_PARAMETER_SIGNATURE);
#if EFI_ENGINE_CONTROL #if EFI_ENGINE_CONTROL
enginePins.startPins(PASS_ENGINE_PARAMETER_SIGNATURE); enginePins.startPins();
#endif /* EFI_ENGINE_CONTROL */ #endif /* EFI_ENGINE_CONTROL */
#if EFI_MC33816 #if EFI_MC33816

View File

@ -71,8 +71,9 @@ EngineTestHelper::EngineTestHelper(engine_type_e engineType, configuration_callb
memset(&activeConfiguration, 0, sizeof(activeConfiguration)); memset(&activeConfiguration, 0, sizeof(activeConfiguration));
INJECT_ENGINE_REFERENCE(&enginePins);
enginePins.reset(); enginePins.reset();
enginePins.unregisterPins(PASS_ENGINE_PARAMETER_SIGNATURE); enginePins.unregisterPins();
INJECT_ENGINE_REFERENCE(&waveChart); INJECT_ENGINE_REFERENCE(&waveChart);
waveChart.init(); waveChart.init();
@ -94,7 +95,7 @@ EngineTestHelper::EngineTestHelper(engine_type_e engineType, configuration_callb
resetConfigurationExt(configurationCallback, engineType PASS_ENGINE_PARAMETER_SUFFIX); resetConfigurationExt(configurationCallback, engineType PASS_ENGINE_PARAMETER_SUFFIX);
enginePins.startPins(PASS_ENGINE_PARAMETER_SIGNATURE); enginePins.startPins();
commonInitEngineController(PASS_ENGINE_PARAMETER_SIGNATURE); commonInitEngineController(PASS_ENGINE_PARAMETER_SIGNATURE);
@ -122,7 +123,7 @@ EngineTestHelper::~EngineTestHelper() {
// Cleanup // Cleanup
enginePins.reset(); enginePins.reset();
enginePins.unregisterPins(PASS_ENGINE_PARAMETER_SIGNATURE); enginePins.unregisterPins();
Sensor::resetRegistry(); Sensor::resetRegistry();
memset(mockPinStates, 0, sizeof(mockPinStates)); memset(mockPinStates, 0, sizeof(mockPinStates));
} }