auto-sync

This commit is contained in:
rusEfi 2016-08-29 22:02:57 -04:00
parent 299274c9ba
commit f4eae9613f
4 changed files with 32 additions and 5 deletions

View File

@ -88,6 +88,7 @@ public:
#endif
OutputSignal fuelActuators[MAX_INJECTION_OUTPUT_COUNT];
OutputSignal overlappingFuelActuator[MAX_NUMBER_OF_CYLINDERS];
float fsioLastValue[LE_COMMAND_COUNT];

View File

@ -57,7 +57,11 @@ public:
char *name;
};
#define MAX_INJECTION_OUTPUT_COUNT 45
#define MAX_NUMBER_OF_CYLINDERS 12
/**
* two wire batch mode would generate twice the number of cylinders events, that's the max
*/
#define MAX_INJECTION_OUTPUT_COUNT 2 * MAX_NUMBER_OF_CYLINDERS
#define MAX_IGNITION_EVENT_COUNT 80
typedef ArrayList<InjectionEvent, MAX_INJECTION_OUTPUT_COUNT> InjectionEventList;

View File

@ -147,7 +147,7 @@ void FuelSchedule::registerInjectionEvent(int injectorIndex, float angle,
// error already reported
return;
}
//ev->
ev->isOverlapping = angle < 0;
ev->injectorIndex = injectorIndex;
ev->output = output;

View File

@ -758,8 +758,8 @@ void testFuelSchedulerBug299(void) {
assertEqualsM("rev cnt#5", 5, engine->rpmCalculator.getRevolutionCounter());
// using old fuel schedule - but already wider pulses
// time...|-20.....|-10.....|0.......|10......|20......|30......|40......|
// inj #0 |.......#|########|####...#|########|##......|........|........|
// inj #1 |........|.......#|########|##.....#|########|##......|........|
// inj #0 |........|..######|########|..######|########|........|........|
// inj #1 |..######|########|..######|########|........|........|........|
assertInjectorUpEvent("5@0", 0, MS2US(-17.5), 1);
assertInjectorUpEvent("5@1", 1, MS2US(-7.5), 0);
assertInjectorDownEvent("5@2", 2, MS2US(0), 1);
@ -781,11 +781,19 @@ void testFuelSchedulerBug299(void) {
eth.firePrimaryTriggerRise();
assertEqualsM("qs#2", 8, schedulingQueue.size());
assertEqualsM("rev cnt6", 6, engine->rpmCalculator.getRevolutionCounter());
// time...|-20.....|-10.....|0.......|10......|20......|30......|40......|
// inj #0 |########|..######|########|..######|........|........|........|
// inj #1 |..######|########|..######|########|........|........|........|
assertInjectorUpEvent("6@0", 0, MS2US(-17.5), 1);
assertInjectorDownEvent("6@1", 1, MS2US(-10.0), 0);
assertInjectorUpEvent("6@2", 2, MS2US(-7.5), 0);
assertInjectorUpEvent("6@3", 3, MS2US(0), 1);
assertInjectorUpEvent("6@4", 4, MS2US(2.5), 1);
assertInjectorDownEvent("6@5", 5, MS2US(10.0), 0);
assertInjectorUpEvent("6@6", 6, MS2US(12.5), 0);
assertInjectorDownEvent("6@7", 7, MS2US(20.0), 1);
assertEqualsM("exec#6", 4, schedulingQueue.executeAll(timeNow));
assertEqualsM("exec#7", 4, schedulingQueue.executeAll(timeNow));
timeNow += MS2US(20);
@ -793,6 +801,20 @@ void testFuelSchedulerBug299(void) {
assertEqualsM("qs#3", 4, schedulingQueue.size());
assertEqualsM("rev cnt6", 6, engine->rpmCalculator.getRevolutionCounter());
// time...|-20.....|-10.....|0.......|10......|20......|30......|40......|
// inj #0 |........|##......|........|........|........|........|........|
// inj #1 |..######|########|........|........|........|........|........|
assertInjectorUpEvent("7@0", 0, MS2US(-17.5), 1);
assertInjectorUpEvent("7@1", 1, MS2US(-10.0), 0);
assertInjectorDownEvent("7@2", 2, MS2US(-7.5), 0);
assertInjectorUpEvent("7@3", 3, MS2US(0), 1);
assertEqualsM("exec#6", 4, schedulingQueue.executeAll(timeNow));
timeNow += MS2US(20);
eth.firePrimaryTriggerRise();
assertEqualsM("qs#3", 8, schedulingQueue.size());
unitTestValue = 0;