The Big Refactoring of 2019: scheduler should not be global #655
This commit is contained in:
parent
def54ae1ea
commit
5e896ce279
|
@ -28,11 +28,11 @@ EngineTestHelper::EngineTestHelper(engine_type_e engineType) : engine (&persiste
|
||||||
testMafValue = 0;
|
testMafValue = 0;
|
||||||
memset(&activeConfiguration, 0, sizeof(activeConfiguration));
|
memset(&activeConfiguration, 0, sizeof(activeConfiguration));
|
||||||
|
|
||||||
schedulingQueue.clear();
|
|
||||||
enginePins.reset();
|
enginePins.reset();
|
||||||
|
|
||||||
persistent_config_s *config = &persistentConfig;
|
persistent_config_s *config = &persistentConfig;
|
||||||
Engine *engine = &this->engine;
|
Engine *engine = &this->engine;
|
||||||
|
engine->executor.clear();
|
||||||
engine->setConfig(config);
|
engine->setConfig(config);
|
||||||
engine_configuration_s *engineConfiguration = engine->engineConfigurationPtr;
|
engine_configuration_s *engineConfiguration = engine->engineConfigurationPtr;
|
||||||
board_configuration_s * boardConfiguration = &persistentConfig.engineConfiguration.bc;
|
board_configuration_s * boardConfiguration = &persistentConfig.engineConfiguration.bc;
|
||||||
|
|
|
@ -30,6 +30,10 @@ void TestExecutor::clear() {
|
||||||
schedulingQueue.clear();
|
schedulingQueue.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int TestExecutor::size() {
|
||||||
|
return schedulingQueue.size();
|
||||||
|
}
|
||||||
|
|
||||||
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);
|
||||||
|
|
|
@ -16,6 +16,7 @@ public:
|
||||||
void scheduleByTimestamp(scheduling_s *scheduling, efitimeus_t timeUs, schfunc_t callback, void *param);
|
void scheduleByTimestamp(scheduling_s *scheduling, efitimeus_t timeUs, schfunc_t callback, void *param);
|
||||||
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();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* GLOBAL_EXECUTION_QUEUE_H_ */
|
#endif /* GLOBAL_EXECUTION_QUEUE_H_ */
|
||||||
|
|
|
@ -37,7 +37,7 @@ void testFasterEngineSpinningUp() {
|
||||||
// check RPM
|
// check RPM
|
||||||
assertEqualsM("RPM=0", 0, engine->rpmCalculator.getRpm(PASS_ENGINE_PARAMETER_SIGNATURE));
|
assertEqualsM("RPM=0", 0, engine->rpmCalculator.getRpm(PASS_ENGINE_PARAMETER_SIGNATURE));
|
||||||
// the queue should be empty, no trigger events yet
|
// the queue should be empty, no trigger events yet
|
||||||
assertEqualsM("plain#1", 0, schedulingQueue.size());
|
assertEqualsM("plain#1", 0, engine->executor.size());
|
||||||
|
|
||||||
// check all events starting from now
|
// check all events starting from now
|
||||||
int timeStartUs = timeNowUs;
|
int timeStartUs = timeNowUs;
|
||||||
|
|
|
@ -48,7 +48,7 @@ static void test100dutyCycle() {
|
||||||
TestExecutor executor;
|
TestExecutor executor;
|
||||||
SimplePwm pwm("test PWM1");
|
SimplePwm pwm("test PWM1");
|
||||||
OutputPin pin;
|
OutputPin pin;
|
||||||
schedulingQueue.clear();
|
executor.clear();
|
||||||
|
|
||||||
startSimplePwm(&pwm, "unit_test",
|
startSimplePwm(&pwm, "unit_test",
|
||||||
&executor,
|
&executor,
|
||||||
|
@ -76,7 +76,7 @@ static void testSwitchToNanPeriod() {
|
||||||
TestExecutor executor;
|
TestExecutor executor;
|
||||||
SimplePwm pwm("test PWM1");
|
SimplePwm pwm("test PWM1");
|
||||||
OutputPin pin;
|
OutputPin pin;
|
||||||
schedulingQueue.clear();
|
executor.clear();
|
||||||
|
|
||||||
startSimplePwm(&pwm, "unit_test",
|
startSimplePwm(&pwm, "unit_test",
|
||||||
&executor,
|
&executor,
|
||||||
|
@ -115,7 +115,7 @@ void testPwmGenerator() {
|
||||||
TestExecutor executor;
|
TestExecutor executor;
|
||||||
SimplePwm pwm("test PWM3");
|
SimplePwm pwm("test PWM3");
|
||||||
OutputPin pin;
|
OutputPin pin;
|
||||||
schedulingQueue.clear();
|
executor.clear();
|
||||||
|
|
||||||
startSimplePwm(&pwm,
|
startSimplePwm(&pwm,
|
||||||
"unit_test",
|
"unit_test",
|
||||||
|
|
|
@ -17,7 +17,7 @@ void testSpeedDensity(void) {
|
||||||
printf("*************************************************** testSpeedDensity\r\n");
|
printf("*************************************************** testSpeedDensity\r\n");
|
||||||
EngineTestHelper eth(FORD_INLINE_6_1995);
|
EngineTestHelper eth(FORD_INLINE_6_1995);
|
||||||
EXPAND_EngineTestHelper;
|
EXPAND_EngineTestHelper;
|
||||||
schedulingQueue.clear(); // todo: there must be a better place for this
|
engine->executor.clear(); // todo: there must be a better place for this
|
||||||
|
|
||||||
engineConfiguration->trigger.customTotalToothCount = 8;
|
engineConfiguration->trigger.customTotalToothCount = 8;
|
||||||
eth.applyTriggerShape();
|
eth.applyTriggerShape();
|
||||||
|
|
|
@ -304,10 +304,10 @@ extern EnginePins enginePins;
|
||||||
void testRpmCalculator(void) {
|
void testRpmCalculator(void) {
|
||||||
printf("*************************************************** testRpmCalculator\r\n");
|
printf("*************************************************** testRpmCalculator\r\n");
|
||||||
timeNowUs = 0;
|
timeNowUs = 0;
|
||||||
schedulingQueue.clear();
|
|
||||||
|
|
||||||
EngineTestHelper eth(FORD_INLINE_6_1995);
|
EngineTestHelper eth(FORD_INLINE_6_1995);
|
||||||
EXPAND_EngineTestHelper;
|
EXPAND_EngineTestHelper;
|
||||||
|
engine->executor.clear();
|
||||||
IgnitionEventList *ilist = &engine->ignitionEvents;
|
IgnitionEventList *ilist = &engine->ignitionEvents;
|
||||||
assertEqualsM("size #1", 0, ilist->isReady);
|
assertEqualsM("size #1", 0, ilist->isReady);
|
||||||
|
|
||||||
|
@ -417,23 +417,23 @@ void testRpmCalculator(void) {
|
||||||
|
|
||||||
assertEqualsM("index #4", 6, eth.engine.triggerCentral.triggerState.getCurrentIndex());
|
assertEqualsM("index #4", 6, eth.engine.triggerCentral.triggerState.getCurrentIndex());
|
||||||
assertEqualsM("queue size 4", 4, schedulingQueue.size());
|
assertEqualsM("queue size 4", 4, schedulingQueue.size());
|
||||||
schedulingQueue.clear();
|
engine->executor.clear();
|
||||||
|
|
||||||
eth.fireFall(5);
|
eth.fireFall(5);
|
||||||
assertEqualsM("queue size 5", 2, schedulingQueue.size());
|
assertEqualsM("queue size 5", 2, schedulingQueue.size());
|
||||||
// todo: assert queue elements
|
// todo: assert queue elements
|
||||||
schedulingQueue.clear();
|
engine->executor.clear();
|
||||||
|
|
||||||
|
|
||||||
eth.fireRise(5);
|
eth.fireRise(5);
|
||||||
assertEqualsM("queue size 6", 2, schedulingQueue.size());
|
assertEqualsM("queue size 6", 2, schedulingQueue.size());
|
||||||
assertEqualsM("6/0", start + 40944, schedulingQueue.getForUnitText(0)->momentX);
|
assertEqualsM("6/0", start + 40944, schedulingQueue.getForUnitText(0)->momentX);
|
||||||
assertEqualsM("6/1", start + 41444, schedulingQueue.getForUnitText(1)->momentX);
|
assertEqualsM("6/1", start + 41444, schedulingQueue.getForUnitText(1)->momentX);
|
||||||
schedulingQueue.clear();
|
engine->executor.clear();
|
||||||
|
|
||||||
eth.fireFall(5);
|
eth.fireFall(5);
|
||||||
assertEqualsM("queue size 7", 0, schedulingQueue.size());
|
assertEqualsM("queue size 7", 0, schedulingQueue.size());
|
||||||
schedulingQueue.clear();
|
engine->executor.clear();
|
||||||
|
|
||||||
timeNowUs += 5000; // 5ms
|
timeNowUs += 5000; // 5ms
|
||||||
eth.firePrimaryTriggerRise();
|
eth.firePrimaryTriggerRise();
|
||||||
|
@ -442,17 +442,17 @@ void testRpmCalculator(void) {
|
||||||
assertEqualsM("8/0", start + 53333 - 1515, schedulingQueue.getForUnitText(0)->momentX);
|
assertEqualsM("8/0", start + 53333 - 1515, schedulingQueue.getForUnitText(0)->momentX);
|
||||||
assertEqualsM2("8/1", start + 54277, schedulingQueue.getForUnitText(1)->momentX, 0);
|
assertEqualsM2("8/1", start + 54277, schedulingQueue.getForUnitText(1)->momentX, 0);
|
||||||
assertEqualsM2("8/2", start + 54777, schedulingQueue.getForUnitText(2)->momentX, 0);
|
assertEqualsM2("8/2", start + 54777, schedulingQueue.getForUnitText(2)->momentX, 0);
|
||||||
schedulingQueue.clear();
|
engine->executor.clear();
|
||||||
|
|
||||||
|
|
||||||
eth.fireFall(5);
|
eth.fireFall(5);
|
||||||
assertEqualsM("queue size 9", 0, schedulingQueue.size());
|
assertEqualsM("queue size 9", 0, schedulingQueue.size());
|
||||||
schedulingQueue.clear();
|
engine->executor.clear();
|
||||||
|
|
||||||
|
|
||||||
eth.fireRise(5);
|
eth.fireRise(5);
|
||||||
assertEqualsM("queue size 10", 0, schedulingQueue.size());
|
assertEqualsM("queue size 10", 0, schedulingQueue.size());
|
||||||
schedulingQueue.clear();
|
engine->executor.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void testTriggerDecoder(void) {
|
void testTriggerDecoder(void) {
|
||||||
|
|
|
@ -175,10 +175,10 @@ static void testNoiselessDecoderProcedure(EngineTestHelper ð, int errorTolera
|
||||||
void testNoiselessDecoder(void) {
|
void testNoiselessDecoder(void) {
|
||||||
printf("====================================================================================== testNoiselessDecoder\r\n");
|
printf("====================================================================================== testNoiselessDecoder\r\n");
|
||||||
timeNowUs = 0;
|
timeNowUs = 0;
|
||||||
schedulingQueue.clear();
|
|
||||||
|
|
||||||
EngineTestHelper eth(TEST_ENGINE);
|
EngineTestHelper eth(TEST_ENGINE);
|
||||||
EXPAND_EngineTestHelper
|
EXPAND_EngineTestHelper
|
||||||
|
engine->executor.clear();
|
||||||
|
|
||||||
engineConfiguration->ignitionMode = IM_WASTED_SPARK;
|
engineConfiguration->ignitionMode = IM_WASTED_SPARK;
|
||||||
engineConfiguration->useOnlyRisingEdgeForTrigger = true;
|
engineConfiguration->useOnlyRisingEdgeForTrigger = true;
|
||||||
|
|
Loading…
Reference in New Issue