The Big Refactoring of 2019: scheduler should not be global #655
This commit is contained in:
parent
da3d230798
commit
b3ee5ec945
|
@ -34,6 +34,10 @@ int TestExecutor::size() {
|
||||||
return schedulingQueue.size();
|
return schedulingQueue.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scheduling_s* TestExecutor::getForUnitTest(int index) {
|
||||||
|
return schedulingQueue.getForUnitText(index);
|
||||||
|
}
|
||||||
|
|
||||||
void TestExecutor::scheduleByTimestamp(scheduling_s *scheduling, efitimeus_t timeUs, schfunc_t callback, void *param) {
|
void TestExecutor::scheduleByTimestamp(scheduling_s *scheduling, efitimeus_t timeUs, schfunc_t callback, void *param) {
|
||||||
if (debugSignalExecutor) {
|
if (debugSignalExecutor) {
|
||||||
printf("scheduleByTime %d\r\n", timeUs);
|
printf("scheduleByTime %d\r\n", timeUs);
|
||||||
|
|
|
@ -17,6 +17,7 @@ public:
|
||||||
void scheduleForLater(scheduling_s *scheduling, int delayUs, schfunc_t callback, void *param);
|
void scheduleForLater(scheduling_s *scheduling, int delayUs, schfunc_t callback, void *param);
|
||||||
void clear();
|
void clear();
|
||||||
int size();
|
int size();
|
||||||
|
scheduling_s* getForUnitTest(int index);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* GLOBAL_EXECUTION_QUEUE_H_ */
|
#endif /* GLOBAL_EXECUTION_QUEUE_H_ */
|
||||||
|
|
|
@ -58,7 +58,7 @@ static void test100dutyCycle() {
|
||||||
&testApplyPinState);
|
&testApplyPinState);
|
||||||
|
|
||||||
expectedTimeOfNextEvent += 1000;
|
expectedTimeOfNextEvent += 1000;
|
||||||
assertEqualsM2("1@1000/100", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
assertEqualsM2("1@1000/100", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||||
|
|
||||||
assertNextEvent("exec@100", HIGH_VALUE, &executor);
|
assertNextEvent("exec@100", HIGH_VALUE, &executor);
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ static void testSwitchToNanPeriod() {
|
||||||
&testApplyPinState);
|
&testApplyPinState);
|
||||||
|
|
||||||
expectedTimeOfNextEvent += 600;
|
expectedTimeOfNextEvent += 600;
|
||||||
assertEqualsM2("1@1000/70", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
assertEqualsM2("1@1000/70", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||||
|
|
||||||
assertNextEvent("exec@70", LOW_VALUE, &executor);
|
assertNextEvent("exec@70", LOW_VALUE, &executor);
|
||||||
assertEqualsM("time1", 600, timeNowUs);
|
assertEqualsM("time1", 600, timeNowUs);
|
||||||
|
@ -97,11 +97,11 @@ static void testSwitchToNanPeriod() {
|
||||||
pwm.setFrequency(NAN);
|
pwm.setFrequency(NAN);
|
||||||
|
|
||||||
expectedTimeOfNextEvent += 600;
|
expectedTimeOfNextEvent += 600;
|
||||||
assertEqualsM2("1@1000/NAN", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
assertEqualsM2("1@1000/NAN", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||||
assertNextEvent("exec2@NAN", LOW_VALUE, &executor);
|
assertNextEvent("exec2@NAN", LOW_VALUE, &executor);
|
||||||
|
|
||||||
expectedTimeOfNextEvent += MS2US(NAN_FREQUENCY_SLEEP_PERIOD_MS);
|
expectedTimeOfNextEvent += MS2US(NAN_FREQUENCY_SLEEP_PERIOD_MS);
|
||||||
assertEqualsM2("2@1000/NAN", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
assertEqualsM2("2@1000/NAN", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||||
assertNextEvent("exec3@NAN", LOW_VALUE, &executor);
|
assertNextEvent("exec3@NAN", LOW_VALUE, &executor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,42 +127,42 @@ void testPwmGenerator() {
|
||||||
|
|
||||||
|
|
||||||
expectedTimeOfNextEvent += 800;
|
expectedTimeOfNextEvent += 800;
|
||||||
assertEqualsM2("1@1000/80", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
assertEqualsM2("1@1000/80", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||||
|
|
||||||
assertNextEvent("exec@0", LOW_VALUE, &executor);
|
assertNextEvent("exec@0", LOW_VALUE, &executor);
|
||||||
assertEqualsM("time1", 800, timeNowUs);
|
assertEqualsM("time1", 800, timeNowUs);
|
||||||
|
|
||||||
expectedTimeOfNextEvent += 200;
|
expectedTimeOfNextEvent += 200;
|
||||||
assertEqualsM2("2@1000/80", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
assertEqualsM2("2@1000/80", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||||
|
|
||||||
// above we had vanilla duty cycle, now let's handle a special case
|
// above we had vanilla duty cycle, now let's handle a special case
|
||||||
pwm.setSimplePwmDutyCycle(0);
|
pwm.setSimplePwmDutyCycle(0);
|
||||||
assertEqualsM2("2@1000/0", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
assertEqualsM2("2@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||||
|
|
||||||
assertNextEvent("exec@1", LOW_VALUE, &executor);
|
assertNextEvent("exec@1", LOW_VALUE, &executor);
|
||||||
assertEqualsM("time2", 1000, timeNowUs);
|
assertEqualsM("time2", 1000, timeNowUs);
|
||||||
|
|
||||||
expectedTimeOfNextEvent += 1000;
|
expectedTimeOfNextEvent += 1000;
|
||||||
assertEqualsM2("3@1000/0", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
assertEqualsM2("3@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||||
|
|
||||||
assertNextEvent("exec@2", LOW_VALUE /* pin value */, &executor);
|
assertNextEvent("exec@2", LOW_VALUE /* pin value */, &executor);
|
||||||
assertEqualsM("time3", 2000, timeNowUs);
|
assertEqualsM("time3", 2000, timeNowUs);
|
||||||
expectedTimeOfNextEvent += 1000;
|
expectedTimeOfNextEvent += 1000;
|
||||||
assertEqualsM2("4@1000/0", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
assertEqualsM2("4@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||||
|
|
||||||
assertNextEvent("exec@3", LOW_VALUE /* pin value */, &executor);
|
assertNextEvent("exec@3", LOW_VALUE /* pin value */, &executor);
|
||||||
assertEqualsM("time4", 3000, timeNowUs);
|
assertEqualsM("time4", 3000, timeNowUs);
|
||||||
expectedTimeOfNextEvent += 1000;
|
expectedTimeOfNextEvent += 1000;
|
||||||
assertEqualsM2("5@1000/0", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
assertEqualsM2("5@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||||
|
|
||||||
assertNextEvent("exec@4", LOW_VALUE /* pin value */, &executor);
|
assertNextEvent("exec@4", LOW_VALUE /* pin value */, &executor);
|
||||||
expectedTimeOfNextEvent += 1000;
|
expectedTimeOfNextEvent += 1000;
|
||||||
assertEqualsM2("6@1000/0", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
assertEqualsM2("6@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||||
|
|
||||||
assertNextEvent("exec@5", LOW_VALUE /* pin value */, &executor);
|
assertNextEvent("exec@5", LOW_VALUE /* pin value */, &executor);
|
||||||
expectedTimeOfNextEvent += 1000;
|
expectedTimeOfNextEvent += 1000;
|
||||||
assertEqualsM("time4", 5000, timeNowUs);
|
assertEqualsM("time4", 5000, timeNowUs);
|
||||||
assertEqualsM2("7@1000/0", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
assertEqualsM2("7@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||||
|
|
||||||
|
|
||||||
assertNextEvent("exec@6", LOW_VALUE /* pin value */, &executor);
|
assertNextEvent("exec@6", LOW_VALUE /* pin value */, &executor);
|
||||||
|
|
Loading…
Reference in New Issue