refactoring: extract method

only:uaefi
This commit is contained in:
rusefillc 2025-01-19 13:38:21 -05:00
parent af9dfe1989
commit fc77a09c35
4 changed files with 9 additions and 4 deletions

View File

@ -86,3 +86,4 @@ typedef enum __attribute__ ((__packed__)) {
size_t getFiringOrderCylinderId(size_t index); size_t getFiringOrderCylinderId(size_t index);
size_t getNextFiringCylinderId(size_t prevCylinderId); size_t getNextFiringCylinderId(size_t prevCylinderId);
size_t getCylinderNumberAtIndex(size_t cylinderIndex);

View File

@ -165,7 +165,7 @@ bool InjectionEvent::update() {
injectorIndex = 0; injectorIndex = 0;
} else if (mode == IM_SEQUENTIAL || mode == IM_BATCH) { } else if (mode == IM_SEQUENTIAL || mode == IM_BATCH) {
// Map order index -> cylinder index (firing order) // Map order index -> cylinder index (firing order)
injectorIndex = ID2INDEX(getFiringOrderCylinderId(ownIndex)); injectorIndex = getCylinderNumberAtIndex(ownIndex);
} else { } else {
firmwareError(ObdCode::CUSTOM_OBD_UNEXPECTED_INJECTION_MODE, "Unexpected injection mode %d", mode); firmwareError(ObdCode::CUSTOM_OBD_UNEXPECTED_INJECTION_MODE, "Unexpected injection mode %d", mode);
injectorIndex = 0; injectorIndex = 0;
@ -182,7 +182,7 @@ bool InjectionEvent::update() {
// Each injector gets fired as a primary (the same as sequential), but also // Each injector gets fired as a primary (the same as sequential), but also
// fires the injector 360 degrees later in the firing order. // fires the injector 360 degrees later in the firing order.
int secondOrder = (ownIndex + (engineConfiguration->cylindersCount / 2)) % engineConfiguration->cylindersCount; int secondOrder = (ownIndex + (engineConfiguration->cylindersCount / 2)) % engineConfiguration->cylindersCount;
int secondIndex = ID2INDEX(getFiringOrderCylinderId(secondOrder)); int secondIndex = getCylinderNumberAtIndex(secondOrder);
secondOutput = &enginePins.injectors[secondIndex]; secondOutput = &enginePins.injectors[secondIndex];
secondOutputStage2 = &enginePins.injectorsStage2[secondIndex]; secondOutputStage2 = &enginePins.injectorsStage2[secondIndex];
} else { } else {

View File

@ -96,7 +96,7 @@ static void prepareCylinderIgnitionSchedule(angle_t dwellAngleDuration, floatms_
} }
const int index = getIgnitionPinForIndex(event->cylinderIndex, ignitionMode); const int index = getIgnitionPinForIndex(event->cylinderIndex, ignitionMode);
const int coilIndex = ID2INDEX(getFiringOrderCylinderId(index)); const int coilIndex = getCylinderNumberAtIndex(index);
angle_t finalIgnitionTiming = getEngineState()->timingAdvance[coilIndex]; angle_t finalIgnitionTiming = getEngineState()->timingAdvance[coilIndex];
// Stash which cylinder we're scheduling so that knock sensing knows which // Stash which cylinder we're scheduling so that knock sensing knows which
// cylinder just fired // cylinder just fired
@ -140,7 +140,7 @@ static void prepareCylinderIgnitionSchedule(angle_t dwellAngleDuration, floatms_
bool isTwoWireWasted = engineConfiguration->twoWireBatchIgnition || (engineConfiguration->ignitionMode == IM_INDIVIDUAL_COILS); bool isTwoWireWasted = engineConfiguration->twoWireBatchIgnition || (engineConfiguration->ignitionMode == IM_INDIVIDUAL_COILS);
if (ignitionMode == IM_WASTED_SPARK && isTwoWireWasted) { if (ignitionMode == IM_WASTED_SPARK && isTwoWireWasted) {
int secondIndex = index + engineConfiguration->cylindersCount / 2; int secondIndex = index + engineConfiguration->cylindersCount / 2;
int secondCoilIndex = ID2INDEX(getFiringOrderCylinderId(secondIndex)); int secondCoilIndex = getCylinderNumberAtIndex(secondIndex);
secondOutput = &enginePins.coils[secondCoilIndex]; secondOutput = &enginePins.coils[secondCoilIndex];
assertPinAssigned(secondOutput); assertPinAssigned(secondOutput);
} else { } else {

View File

@ -271,3 +271,7 @@ size_t getNextFiringCylinderId(size_t prevCylinderId) {
return 1; return 1;
} }
size_t getCylinderNumberAtIndex(size_t cylinderIndex) {
return ID2INDEX(getFiringOrderCylinderId(cylinderIndex));
}