refactoring

This commit is contained in:
rusefi 2017-12-17 00:03:26 -05:00
parent 5c0be05378
commit 9d372a29d1
3 changed files with 20 additions and 14 deletions

View File

@ -272,23 +272,25 @@ static const char *getGpioPinName(int index) {
return NULL;
}
float getFsioOutputValue(int index DECLARE_ENGINE_PARAMETER_SUFFIX) {
if (fsioLogics[index] == NULL) {
warning(CUSTOM_NO_FSIO, "no FSIO for #%d %s", index + 1, hwPortname(boardConfiguration->fsioOutputPins[index]));
return NAN;
} else {
return calc.getValue2(engine->fsioLastValue[index], fsioLogics[index] PASS_ENGINE_PARAMETER_SUFFIX);
}
}
/**
* @param index from zero for (FSIO_COMMAND_COUNT - 1)
*/
static void handleFsio(Engine *engine, int index) {
static void handleFsio(int index DECLARE_ENGINE_PARAMETER_SUFFIX) {
if (boardConfiguration->fsioOutputPins[index] == GPIO_UNASSIGNED)
return;
bool isPwmMode = boardConfiguration->fsioFrequency[index] != NO_PWM;
float fvalue;
if (fsioLogics[index] == NULL) {
warning(CUSTOM_NO_FSIO, "no FSIO for #%d %s", index + 1, hwPortname(boardConfiguration->fsioOutputPins[index]));
fvalue = NAN;
} else {
fvalue = calc.getValue2(engine->fsioLastValue[index], fsioLogics[index] PASS_ENGINE_PARAMETER_SUFFIX);
}
engine->fsioLastValue[index] = fvalue;
engine->fsioLastValue[index] = getFsioOutputValue(index PASS_ENGINE_PARAMETER_SUFFIX);
if (isPwmMode) {
fsioPwm[index].setSimplePwmDutyCycle(fvalue);
@ -365,9 +367,12 @@ static void setFsioFrequency(int index, int frequency) {
}
}
void runFsio(void) {
for (int i = 0; i < FSIO_COMMAND_COUNT; i++) {
handleFsio(engine, i);
/**
* this method should be invoked periodically to calculate FSIO and toggle corresponding FSIO outputs
*/
void runFsio(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
for (int index = 0; index < FSIO_COMMAND_COUNT; index++) {
handleFsio(index PASS_ENGINE_PARAMETER_SUFFIX);
}
#if EFI_FUEL_PUMP || defined(__DOXYGEN__)

View File

@ -23,7 +23,8 @@ void setFsio(int index, brain_pin_e pin, const char * exp DECLARE_ENGINE_PARAMET
void setFsioExt(int index, brain_pin_e pin, const char * exp, int pwmFrequency DECLARE_ENGINE_PARAMETER_SUFFIX);
void initFsioImpl(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX);
void runFsio(void);
void runFsio(DECLARE_ENGINE_PARAMETER_SIGNATURE);
float getFsioOutputValue(int index DECLARE_ENGINE_PARAMETER_SUFFIX);
void applyFsioConfiguration(DECLARE_ENGINE_PARAMETER_SIGNATURE);
void prepareFsio(void);

View File

@ -274,7 +274,7 @@ static void periodicSlowCallback(Engine *engine) {
engine->checkShutdown();
#if (EFI_PROD_CODE && EFI_FSIO) || defined(__DOXYGEN__)
runFsio();
runFsio(PASS_ENGINE_PARAMETER_SIGNATURE);
#endif /* EFI_PROD_CODE && EFI_FSIO */
cylinderCleanupControl(engine);