The Big Refactoring of 2019: scheduler should not be global #655

This commit is contained in:
rusefi 2019-01-09 10:36:35 -05:00
parent 7989763ee9
commit 20dc9b57a4
8 changed files with 20 additions and 15 deletions

View File

@ -28,11 +28,11 @@ EngineTestHelper::EngineTestHelper(engine_type_e engineType) : engine (&persiste
testMafValue = 0;
memset(&activeConfiguration, 0, sizeof(activeConfiguration));
schedulingQueue.clear();
enginePins.reset();
persistent_config_s *config = &persistentConfig;
Engine *engine = &this->engine;
engine->executor.clear();
engine->setConfig(config);
engine_configuration_s *engineConfiguration = engine->engineConfigurationPtr;
board_configuration_s * boardConfiguration = &persistentConfig.engineConfiguration.bc;

View File

@ -30,6 +30,10 @@ void TestExecutor::clear() {
schedulingQueue.clear();
}
int TestExecutor::size() {
return schedulingQueue.size();
}
void TestExecutor::scheduleByTimestamp(scheduling_s *scheduling, efitimeus_t timeUs, schfunc_t callback, void *param) {
if (debugSignalExecutor) {
printf("scheduleByTime %d\r\n", timeUs);

View File

@ -16,6 +16,7 @@ public:
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 clear();
int size();
};
#endif /* GLOBAL_EXECUTION_QUEUE_H_ */

View File

@ -37,7 +37,7 @@ void testFasterEngineSpinningUp() {
// check RPM
assertEqualsM("RPM=0", 0, engine->rpmCalculator.getRpm(PASS_ENGINE_PARAMETER_SIGNATURE));
// 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
int timeStartUs = timeNowUs;

View File

@ -48,7 +48,7 @@ static void test100dutyCycle() {
TestExecutor executor;
SimplePwm pwm("test PWM1");
OutputPin pin;
schedulingQueue.clear();
executor.clear();
startSimplePwm(&pwm, "unit_test",
&executor,
@ -76,7 +76,7 @@ static void testSwitchToNanPeriod() {
TestExecutor executor;
SimplePwm pwm("test PWM1");
OutputPin pin;
schedulingQueue.clear();
executor.clear();
startSimplePwm(&pwm, "unit_test",
&executor,
@ -115,7 +115,7 @@ void testPwmGenerator() {
TestExecutor executor;
SimplePwm pwm("test PWM3");
OutputPin pin;
schedulingQueue.clear();
executor.clear();
startSimplePwm(&pwm,
"unit_test",

View File

@ -17,7 +17,7 @@ void testSpeedDensity(void) {
printf("*************************************************** testSpeedDensity\r\n");
EngineTestHelper eth(FORD_INLINE_6_1995);
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;
eth.applyTriggerShape();

View File

@ -304,10 +304,10 @@ extern EnginePins enginePins;
void testRpmCalculator(void) {
printf("*************************************************** testRpmCalculator\r\n");
timeNowUs = 0;
schedulingQueue.clear();
EngineTestHelper eth(FORD_INLINE_6_1995);
EXPAND_EngineTestHelper;
engine->executor.clear();
IgnitionEventList *ilist = &engine->ignitionEvents;
assertEqualsM("size #1", 0, ilist->isReady);
@ -417,23 +417,23 @@ void testRpmCalculator(void) {
assertEqualsM("index #4", 6, eth.engine.triggerCentral.triggerState.getCurrentIndex());
assertEqualsM("queue size 4", 4, schedulingQueue.size());
schedulingQueue.clear();
engine->executor.clear();
eth.fireFall(5);
assertEqualsM("queue size 5", 2, schedulingQueue.size());
// todo: assert queue elements
schedulingQueue.clear();
engine->executor.clear();
eth.fireRise(5);
assertEqualsM("queue size 6", 2, schedulingQueue.size());
assertEqualsM("6/0", start + 40944, schedulingQueue.getForUnitText(0)->momentX);
assertEqualsM("6/1", start + 41444, schedulingQueue.getForUnitText(1)->momentX);
schedulingQueue.clear();
engine->executor.clear();
eth.fireFall(5);
assertEqualsM("queue size 7", 0, schedulingQueue.size());
schedulingQueue.clear();
engine->executor.clear();
timeNowUs += 5000; // 5ms
eth.firePrimaryTriggerRise();
@ -442,17 +442,17 @@ void testRpmCalculator(void) {
assertEqualsM("8/0", start + 53333 - 1515, schedulingQueue.getForUnitText(0)->momentX);
assertEqualsM2("8/1", start + 54277, schedulingQueue.getForUnitText(1)->momentX, 0);
assertEqualsM2("8/2", start + 54777, schedulingQueue.getForUnitText(2)->momentX, 0);
schedulingQueue.clear();
engine->executor.clear();
eth.fireFall(5);
assertEqualsM("queue size 9", 0, schedulingQueue.size());
schedulingQueue.clear();
engine->executor.clear();
eth.fireRise(5);
assertEqualsM("queue size 10", 0, schedulingQueue.size());
schedulingQueue.clear();
engine->executor.clear();
}
void testTriggerDecoder(void) {

View File

@ -175,10 +175,10 @@ static void testNoiselessDecoderProcedure(EngineTestHelper &eth, int errorTolera
void testNoiselessDecoder(void) {
printf("====================================================================================== testNoiselessDecoder\r\n");
timeNowUs = 0;
schedulingQueue.clear();
EngineTestHelper eth(TEST_ENGINE);
EXPAND_EngineTestHelper
engine->executor.clear();
engineConfiguration->ignitionMode = IM_WASTED_SPARK;
engineConfiguration->useOnlyRisingEdgeForTrigger = true;