encapsulate (#1617)

This commit is contained in:
Matthew Kennedy 2020-07-19 13:46:28 -07:00 committed by GitHub
parent 9b5dd9183f
commit 94635f9f33
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 33 deletions

View File

@ -72,13 +72,13 @@ static Logging *logger;
void startSimultaniousInjection(Engine *engine) {
for (int i = 0; i < engine->engineConfigurationPtr->specs.cylindersCount; i++) {
enginePins.injectors[i].setHigh();
enginePins.injectors[i].open();
}
}
static void endSimultaniousInjectionOnlyTogglePins(Engine *engine) {
for (int i = 0; i < engine->engineConfigurationPtr->specs.cylindersCount; i++) {
enginePins.injectors[i].setLow();
enginePins.injectors[i].close();
}
}
@ -93,14 +93,14 @@ void endSimultaniousInjection(InjectionEvent *event) {
engine->injectionEvents.addFuelEventsForCylinder(event->ownIndex PASS_ENGINE_PARAMETER_SUFFIX);
}
static inline void turnInjectionPinHigh(InjectorOutputPin *output) {
output->overlappingCounter++;
void InjectorOutputPin::open() {
overlappingCounter++;
#if FUEL_MATH_EXTREME_LOGGING
printf("turnInjectionPinHigh %s %d %d\r\n", output->name, output->overlappingCounter, (int)getTimeNowUs());
printf("turnInjectionPinHigh %s %d %d\r\n", name, overlappingCounter, (int)getTimeNowUs());
#endif /* FUEL_MATH_EXTREME_LOGGING */
if (output->overlappingCounter > 1) {
if (overlappingCounter > 1) {
// /**
// * #299
// * this is another kind of overlap which happens in case of a small duty cycle after a large duty cycle
@ -109,13 +109,7 @@ static inline void turnInjectionPinHigh(InjectorOutputPin *output) {
printf("overlapping, no need to touch pin %s %d\r\n", output->name, (int)getTimeNowUs());
#endif /* FUEL_MATH_EXTREME_LOGGING */
} else {
#if FUEL_MATH_EXTREME_LOGGING
const char * w = output->currentLogicValue == true ? "err" : "";
// scheduleMsg(&sharedLogger, "^ %spin=%s eventIndex %d %d", w, output->name,
// getRevolutionCounter(), getTimeNowUs());
#endif /* FUEL_MATH_EXTREME_LOGGING */
output->setHigh();
setHigh();
}
}
@ -130,33 +124,24 @@ void turnInjectionPinHigh(InjectionEvent *event) {
InjectorOutputPin *output = event->outputs[i];
if (output) {
turnInjectionPinHigh(output);
output->open();
}
}
}
static inline void turnInjectionPinLow(InjectorOutputPin *output) {
void InjectorOutputPin::close() {
#if FUEL_MATH_EXTREME_LOGGING
printf("turnInjectionPinLow %s %d %d\r\n", output->name, output->overlappingCounter, (int)getTimeNowUs());
printf("turnInjectionPinLow %s %d %d\r\n", name, overlappingCounter, (int)getTimeNowUs());
#endif /* FUEL_MATH_EXTREME_LOGGING */
overlappingCounter--;
if (overlappingCounter > 0) {
#if FUEL_MATH_EXTREME_LOGGING
const char * w = output->currentLogicValue == false ? "err" : "";
// scheduleMsg(&sharedLogger, "- %spin=%s eventIndex %d %d", w, output->name,
// getRevolutionCounter(), getTimeNowUs());
printf("was overlapping, no need to touch pin %s %d\r\n", name, (int)getTimeNowUs());
#endif /* FUEL_MATH_EXTREME_LOGGING */
output->overlappingCounter--;
if (output->overlappingCounter > 0) {
#if FUEL_MATH_EXTREME_LOGGING
printf("was overlapping, no need to touch pin %s %d\r\n", output->name, (int)getTimeNowUs());
#endif /* FUEL_MATH_EXTREME_LOGGING */
} else {
output->setLow();
}
} else {
setLow();
}
}
void turnInjectionPinLow(InjectionEvent *event) {
@ -169,8 +154,8 @@ void turnInjectionPinLow(InjectionEvent *event) {
event->isScheduled = false;
for (int i = 0;i<MAX_WIRES_COUNT;i++) {
InjectorOutputPin *output = event->outputs[i];
if (output != NULL) {
turnInjectionPinLow(output);
if (output) {
output->close();
}
}
#if EFI_UNIT_TEST

View File

@ -107,8 +107,14 @@ class InjectorOutputPin : public NamedOutputPin {
public:
InjectorOutputPin();
void reset();
void open();
void close();
// todo: re-implement this injectorIndex via address manipulation to reduce memory usage?
int8_t injectorIndex;
private:
int8_t overlappingCounter;
};