explicit .count()

This commit is contained in:
Matthew Kennedy 2024-04-27 15:37:06 -07:00
parent 597d68d8aa
commit c89520c108
12 changed files with 33 additions and 37 deletions

View File

@ -39,7 +39,7 @@ const std::vector<CompositeEvent>& getCompositeEvents() {
void SetNextCompositeEntry(efitick_t timestamp) {
CompositeEvent event;
event.timestamp = timestamp;
event.timestamp = timestamp.count();
event.primaryTrigger = currentTrigger1;
event.secondaryTrigger = currentTrigger2;
event.isTDC = currentTdc;

View File

@ -109,10 +109,6 @@ struct efitick_t {
constexpr efitick_t() = default;
/*todo: explicit*/ constexpr efitick_t(rep c) : m_count(c) { }
constexpr operator rep() const {
return count();
}
constexpr rep count() const {
return m_count;
}

View File

@ -84,8 +84,8 @@ bool EventQueue::insertTask(scheduling_s *scheduling, efitick_t timeX, action_s
if (scheduling->action) {
#if EFI_UNIT_TEST
if (verboseMode) {
printf("Already scheduled was %d\r\n", (int)scheduling->momentX);
printf("Already scheduled now %d\r\n", (int)timeX);
printf("Already scheduled was %d\r\n", (int)scheduling->momentX.count());
printf("Already scheduled now %d\r\n", (int)timeX.count());
}
#endif /* EFI_UNIT_TEST */
return false;

View File

@ -423,7 +423,7 @@ expected<TriggerDecodeResult> TriggerDecoderBase::decodeTriggerEvent(
printf("%s isLessImportant %s now=%d index=%d\r\n",
getTrigger_type_e(triggerConfiguration.TriggerType.type),
getTrigger_event_e(signal),
(int)nowNt,
(int)nowNt.count(),
currentCycle.current_index);
}
#endif /* EFI_UNIT_TEST */

View File

@ -263,7 +263,7 @@ void EngineTestHelper::setTimeAndInvokeEventsUs(int targetTime) {
// nothing pending - we are done here
break;
}
int nextEventTime = nextScheduledEvent->momentX;
int nextEventTime = nextScheduledEvent->momentX.count();
if (nextEventTime > targetTime) {
// next event is too far in the future
break;
@ -295,7 +295,7 @@ scheduling_s * EngineTestHelper::assertEvent5(const char *msg, int index, void *
scheduling_s *event = executor->getForUnitTest(index);
assertEqualsM4(msg, " callback up/down", (void*)event->action.getCallback() == (void*) callback, 1);
efitimeus_t start = getTimeNowUs();
assertEqualsM4(msg, " timestamp", expectedTimestamp, (efitimeus_t)event->momentX - start);
assertEqualsM4(msg, " timestamp", expectedTimestamp, event->momentX.count() - start);
return event;
}

View File

@ -44,7 +44,7 @@ static void test100dutyCycle() {
1.0 /* duty cycle */);
expectedTimeOfNextEvent += 1000;
assertEqualsM2("1@1000/100", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
assertEqualsM2("1@1000/100", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX.count(), 0);
assertNextEvent("exec@100", HIGH_VALUE, &executor, pin);
@ -72,7 +72,7 @@ static void testSwitchToNanPeriod() {
0.60 /* duty cycle */);
expectedTimeOfNextEvent += 600;
assertEqualsM2("1@1000/70", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
assertEqualsM2("1@1000/70", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX.count(), 0);
assertNextEvent("exec@70", LOW_VALUE, &executor, pin);
ASSERT_EQ(600, getTimeNowUs()) << "time1";
@ -83,11 +83,11 @@ static void testSwitchToNanPeriod() {
pwm.setFrequency(NAN);
expectedTimeOfNextEvent += 600;
assertEqualsM2("1@1000/NAN", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
assertEqualsM2("1@1000/NAN", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX.count(), 0);
assertNextEvent("exec2@NAN", LOW_VALUE, &executor, pin);
expectedTimeOfNextEvent += MS2US(NAN_FREQUENCY_SLEEP_PERIOD_MS);
assertEqualsM2("2@1000/NAN", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
assertEqualsM2("2@1000/NAN", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX.count(), 0);
assertNextEvent("exec3@NAN", LOW_VALUE, &executor, pin);
}
@ -110,42 +110,42 @@ TEST(PWM, testPwmGenerator) {
0.80 /* duty cycle */);
expectedTimeOfNextEvent += 800;
assertEqualsM2("1@1000/80", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
assertEqualsM2("1@1000/80", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX.count(), 0);
assertNextEvent("exec@0", LOW_VALUE, &executor, pin);
ASSERT_EQ(800, getTimeNowUs()) << "time1";
expectedTimeOfNextEvent += 200;
assertEqualsM2("2@1000/80", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
assertEqualsM2("2@1000/80", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX.count(), 0);
// above we had vanilla duty cycle, now let's handle a special case
pwm.setSimplePwmDutyCycle(0);
assertEqualsM2("2@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
assertEqualsM2("2@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX.count(), 0);
assertNextEvent("exec@1", LOW_VALUE, &executor, pin);
ASSERT_EQ(1000, getTimeNowUs()) << "time2";
expectedTimeOfNextEvent += 1000;
assertEqualsM2("3@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
assertEqualsM2("3@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX.count(), 0);
assertNextEvent("exec@2", LOW_VALUE /* pin value */, &executor, pin);
ASSERT_EQ(2000, getTimeNowUs()) << "time3";
expectedTimeOfNextEvent += 1000;
assertEqualsM2("4@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
assertEqualsM2("4@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX.count(), 0);
assertNextEvent("exec@3", LOW_VALUE /* pin value */, &executor, pin);
ASSERT_EQ(3000, getTimeNowUs()) << "time4";
expectedTimeOfNextEvent += 1000;
assertEqualsM2("5@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
assertEqualsM2("5@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX.count(), 0);
assertNextEvent("exec@4", LOW_VALUE /* pin value */, &executor, pin);
expectedTimeOfNextEvent += 1000;
assertEqualsM2("6@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
assertEqualsM2("6@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX.count(), 0);
assertNextEvent("exec@5", LOW_VALUE /* pin value */, &executor, pin);
expectedTimeOfNextEvent += 1000;
ASSERT_EQ(5000, getTimeNowUs()) << "time4";
assertEqualsM2("7@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
assertEqualsM2("7@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX.count(), 0);
assertNextEvent("exec@6", LOW_VALUE /* pin value */, &executor, pin);
}

View File

@ -27,6 +27,6 @@ TEST(miata, miata_na_tdc) {
}
ASSERT_EQ(167, round(Sensor::getOrZero(SensorType::Rpm))) << "miata_na_tdc RPM";
ASSERT_EQ(293999, engine->tdcScheduler[0].momentX % SIMULATION_CYCLE_PERIOD); // let's assert TDC position and sync point
ASSERT_EQ(293999, engine->tdcScheduler[1].momentX % SIMULATION_CYCLE_PERIOD); // let's assert TDC position and sync point
ASSERT_EQ(293999, engine->tdcScheduler[0].momentX.count() % SIMULATION_CYCLE_PERIOD); // let's assert TDC position and sync point
ASSERT_EQ(293999, engine->tdcScheduler[1].momentX.count() % SIMULATION_CYCLE_PERIOD); // let's assert TDC position and sync point
}

View File

@ -127,7 +127,7 @@ TEST(nissan, vq_vvt) {
int queueIndex = 0;
while ((head = engine->executor.getHead()) != nullptr) {
eth.setTimeAndInvokeEventsUs(head->momentX);
eth.setTimeAndInvokeEventsUs(head->momentX.count());
ASSERT_TRUE(tc->vvtState[0][0].getShaftSynchronized());
// let's celebrate that vvtPosition stays the same

View File

@ -26,7 +26,7 @@ TEST(real4b11, running) {
// Expect that all teeth are in the correct spot
float angleError = getTriggerCentral()->triggerToothAngleError;
EXPECT_TRUE(angleError < 3 && angleError > -3) << "tooth angle of " << angleError << " at timestamp " << (getTimeNowNt() / 1e8);
EXPECT_TRUE(angleError < 3 && angleError > -3) << "tooth angle of " << angleError << " at timestamp " << (getTimeNowNt().count() / 1e8);
auto rpm = Sensor::getOrZero(SensorType::Rpm);
if (!gotRpm && rpm) {

View File

@ -33,7 +33,7 @@ TEST(realCas24Plus1, spinningOnBench) {
// Expect that all teeth are in the correct spot
float angleError = getTriggerCentral()->triggerToothAngleError;
EXPECT_TRUE(angleError < 3 && angleError > -3) << "tooth angle of " << angleError << " at timestamp " << (getTimeNowNt() / 1e8);
EXPECT_TRUE(angleError < 3 && angleError > -3) << "tooth angle of " << angleError << " at timestamp " << (getTimeNowNt().count() / 1e8);
auto rpm = Sensor::getOrZero(SensorType::Rpm);
if (!gotRpm && rpm) {

View File

@ -23,7 +23,7 @@ TEST(crankingGm24x, gmRealCrankingFromFile) {
// Expect that all teeth are in the correct spot
float angleError = getTriggerCentral()->triggerToothAngleError;
EXPECT_TRUE(angleError < 3 && angleError > -3) << "tooth angle of " << angleError << " at timestamp " << (getTimeNowNt() / 1e8);
EXPECT_TRUE(angleError < 3 && angleError > -3) << "tooth angle of " << angleError << " at timestamp " << (getTimeNowNt().count() / 1e8);
auto rpm = Sensor::getOrZero(SensorType::Rpm);
if (!gotRpm && rpm) {

View File

@ -250,12 +250,12 @@ TEST(misc, testRpmCalculator) {
scheduling_s *ev0 = engine->executor.getForUnitTest(0);
assertREqualsM("Call@0", (void*)ev0->action.getCallback(), (void*)turnSparkPinHigh);
assertEqualsM("ev 0", start + 944, ev0->momentX);
assertEqualsM("ev 0", start + 944, ev0->momentX.count());
assertEqualsLM("coil 0", (uintptr_t)&enginePins.coils[0], (uintptr_t)((IgnitionEvent*)ev0->action.getArgument())->outputs[0]);
scheduling_s *ev1 = engine->executor.getForUnitTest(1);
assertREqualsM("Call@1", (void*)ev1->action.getCallback(), (void*)fireSparkAndPrepareNextSchedule);
assertEqualsM("ev 1", start + 1444, ev1->momentX);
assertEqualsM("ev 1", start + 1444, ev1->momentX.count());
assertEqualsLM("coil 1", (uintptr_t)&enginePins.coils[0], (uintptr_t)((IgnitionEvent*)ev1->action.getArgument())->outputs[0]);
}
@ -267,9 +267,9 @@ TEST(misc, testRpmCalculator) {
eth.fireFall(5);
ASSERT_EQ( 2, eth.engine.triggerCentral.triggerState.getCurrentIndex()) << "index #3";
ASSERT_EQ( 4, engine->executor.size()) << "queue size 3";
assertEqualsM("ev 3", start + 13333 - 1515 + 2459, engine->executor.getForUnitTest(0)->momentX);
assertEqualsM2("ev 5", start + 14277 + 500, engine->executor.getForUnitTest(1)->momentX, 2);
assertEqualsM("3/3", start + 14777 + 677, engine->executor.getForUnitTest(2)->momentX);
assertEqualsM("ev 3", start + 13333 - 1515 + 2459, engine->executor.getForUnitTest(0)->momentX.count());
assertEqualsM2("ev 5", start + 14277 + 500, engine->executor.getForUnitTest(1)->momentX.count(), 2);
assertEqualsM("3/3", start + 14777 + 677, engine->executor.getForUnitTest(2)->momentX.count());
engine->executor.clear();
ASSERT_EQ(4, engine->triggerCentral.triggerShape.findAngleIndex(&engine->triggerCentral.triggerFormDetails, 240));
@ -304,8 +304,8 @@ TEST(misc, testRpmCalculator) {
eth.fireRise(5);
ASSERT_EQ( 4, engine->executor.size()) << "queue size 6";
assertEqualsM("6/0", start + 40944, engine->executor.getForUnitTest(0)->momentX);
assertEqualsM("6/1", start + 41444, engine->executor.getForUnitTest(1)->momentX);
assertEqualsM("6/0", start + 40944, engine->executor.getForUnitTest(0)->momentX.count());
assertEqualsM("6/1", start + 41444, engine->executor.getForUnitTest(1)->momentX.count());
engine->executor.clear();
eth.fireFall(5);
@ -316,8 +316,8 @@ TEST(misc, testRpmCalculator) {
eth.fireFall(5);
ASSERT_EQ( 4, engine->executor.size()) << "queue size 8";
assertEqualsM("8/0", start + 53333 - 1515 + 2459, engine->executor.getForUnitTest(0)->momentX);
assertEqualsM2("8/1", start + 54277 + 2459 - 1959, engine->executor.getForUnitTest(1)->momentX, 0);
assertEqualsM("8/0", start + 53333 - 1515 + 2459, engine->executor.getForUnitTest(0)->momentX.count());
assertEqualsM2("8/1", start + 54277 + 2459 - 1959, engine->executor.getForUnitTest(1)->momentX.count(), 0);
engine->executor.clear();
}