template template ModuleType& TestBase::getModule() { return engine->module().unmock(); } template void TestBase::SetUp() { eth = std::make_unique(engine_type_e::TEST_ENGINE); } template void TestBase::TearDown() { eth.reset(); } template TestEngineConfiguration& TestBase::getTestEngineConfiguration() { return TestEngineConfiguration::getInstance(); } template TestPersistentConfiguration& TestBase::getTestPersistentConfiguration() { return TestPersistentConfiguration::getInstance(); } template TestLuaScriptExecutor& TestBase::getTestLuaScriptExecutor() { return TestLuaScriptExecutor::getInstance(); } template TestEngineState& TestBase::getTestEngineState() { return TestEngineState::getInstance(); } template void TestBase::setUpEngineConfiguration(const EngineConfig& config) { // Other Sensor Inputs getTestEngineConfiguration().configureClutchDownPin(config.getClutchDownPin()); getTestEngineConfiguration().configureClutchDownPinInverted(config.getClutchDownPinInverted()); getTestEngineConfiguration().configureClutchUpPin(config.getClutchUpPin()); getTestEngineConfiguration().configureClutchUpPinInverted(config.getClutchUpPinInverted()); // Launch Control getTestEngineConfiguration().configureLaunchActivatePin(config.getLaunchActivatePin()); getTestEngineConfiguration().configureLaunchActivateInverted(config.getLaunchActivateInverted()); getTestEngineConfiguration().configureLaunchControlEnabled(config.getLaunchControlEnabled()); getTestEngineConfiguration().configureLaunchRpm(config.getLaunchRpm()); getTestEngineConfiguration().configureLaunchRpmWindow(config.getLaunchRpmWindow()); getTestEngineConfiguration().configureLaunchCorrectionsEndRpm(config.getLaunchCorrectionsEndRpm()); getTestEngineConfiguration().configureIgnitionRetardEnable(config.getIgnitionRetardEnable()); getTestEngineConfiguration().configureIgnitionRetard(config.getIgnitionRetard()); getTestEngineConfiguration().configureSmoothRetardMode(config.getSmoothRetardMode()); getTestEngineConfiguration().configureEnableIgnitionCut(config.getEnableIgnitionCut()); getTestEngineConfiguration().configureInitialIgnitionCutPercent(config.getInitialIgnitionCut()); getTestEngineConfiguration().configureFinalIgnitionCutPercentBeforeLaunch(config.getFinalIgnitionCutBeforeLaunch()); // Shift Torque Reduction (Flat Shift) getTestEngineConfiguration().configureTorqueReductionEnabled(config.getTorqueReductionEnabled()); getTestEngineConfiguration().configureTorqueReductionActivationMode(config.getTorqueReductionActivationMode()); getTestEngineConfiguration().configureTorqueReductionTriggerPin(config.getTorqueReductionTriggerPin()); getTestEngineConfiguration().configureTorqueReductionButtonInverted(config.getTorqueReductionTriggerPinInverted()); getTestEngineConfiguration().configureLimitTorqueReductionTime(config.getLimitTorqueReductionTime()); getTestEngineConfiguration().configureTorqueReductionTime(config.getTorqueReductionTime()); getTestEngineConfiguration().configureTorqueReductionArmingRpm(config.getTorqueReductionArmingRpm()); getTestEngineConfiguration().configureTorqueReductionArmingApp(config.getTorqueReductionArmingApp()); getTestEngineConfiguration().configureTorqueReductionIgnitionCut(config.getTorqueReductionIgnitionCut()); getTestEngineConfiguration().configureTorqueReductionIgnitionRetard(config.getTorqueReductionIgnitionRetard()); getTestEngineConfiguration().configureFuelPressureSensorMode(config.getFuelPressureSensorMode()); // Injector getTestEngineConfiguration().configureInjectorFlowAsMassFlow(config.getInjectorFlowAsMassFlow()); getTestEngineConfiguration().configureInjectorFlow(config.getInjectorFlow()); getTestEngineConfiguration().configureInjectorBattLagCorr(config.getInjectorBattLagCorr()); getTestEngineConfiguration().configureFuelReferencePressure(config.getFuelReferencePressure()); getTestEngineConfiguration().configureInjectorCompensationMode(config.getInjectorCompensationMode()); // Secondary injector getTestEngineConfiguration().configureInjectorSecondaryFlow(config.getInjectorSecondaryFlow()); getTestEngineConfiguration().configureInjectorSecondaryBattLagCorr(config.getInjectorSecondaryBattLagCorr()); getTestEngineConfiguration().configureSecondaryInjectorFuelReferencePressure( config.getSecondaryInjectorFuelReferencePressure() ); getTestEngineConfiguration().configureSecondaryInjectorCompensationMode( config.getSecondaryInjectorCompensationMode() ); // Staged injection getTestEngineConfiguration().configureEnableStagedInjection(config.getStagedInjectionEnabled()); // Nitrous control getTestEngineConfiguration().configureNitrousControlEnabled(config.getNitrousControlEnabled()); getTestEngineConfiguration().configureNitrousControlArmingMethod(config.getNitrousControlArmingMethod()); getTestEngineConfiguration().configureNitrousControlTriggerPin(config.getNitrousControlTriggerPin()); getTestEngineConfiguration().configureNitrousControlTriggerPinInverted( config.getNitrousControlTriggerPinInverted() ); getTestEngineConfiguration().configureNitrousControlTriggerPinMode(config.getNitrousControlTriggerPinMode()); getTestEngineConfiguration().configureNitrousLuaGauge(config.getNitrousLuaGauge()); getTestEngineConfiguration().configureNitrousLuaGaugeMeaning(config.getNitrousLuaGaugeMeaning()); getTestEngineConfiguration().configureNitrousLuaGaugeArmingValue(config.getNitrousLuaGaugeArmingValue()); getTestEngineConfiguration().configureNitrousMinimumVehicleSpeed(config.getNitrousMinimumVehicleSpeed()); getTestEngineConfiguration().configureNitrousMinimumTps(config.getNitrousMinimumTps()); getTestEngineConfiguration().configureNitrousMinimumClt(config.getNitrousMinimumClt()); getTestEngineConfiguration().configureNitrousMaximumMap(config.getNitrousMaximumMap()); getTestEngineConfiguration().configureNitrousMaximumAfr(config.getNitrousMaximumAfr()); getTestEngineConfiguration().configureNitrousActivationRpm(config.getNitrousActivationRpm()); getTestEngineConfiguration().configureNitrousDeactivationRpm(config.getNitrousDeactivationRpm()); getTestEngineConfiguration().configureNitrousDeactivationRpmWindow( config.getNitrousDeactivationRpmWindow() ); getTestEngineConfiguration().configureNitrousFuelAdderPercent( config.getNitrousFuelAdderPercent() ); getTestEngineConfiguration().configureNitrousIgnitionRetard(config.getNitrousIgnitionRetard()); getTestEngineConfiguration().configureFuelLevelAveragingAlpha(config.getFuelLevelAveragingAlpha()); getTestEngineConfiguration().configureFuelLevelUpdatePeriodSec(config.getFuelLevelUpdatePeriodSec()); getTestEngineConfiguration().configureFuelLevelLowThresholdVoltage(config.getFuelLevelLowThresholdVoltage()); getTestEngineConfiguration().configureFuelLevelHighThresholdVoltage(config.getFuelLevelHighThresholdVoltage()); } template void TestBase::periodicFastCallback() { // run the ignition math engine->periodicFastCallback(); } template void TestBase::periodicSlowCallback() { engine->periodicSlowCallback(); } template void TestBase::updateVehicleSpeed(const std::optional speed, void (TestBase::* const postAction)()) { updateSensor(SensorType::VehicleSpeed, speed, postAction); } template void TestBase::updateRpm(const std::optional rpm, void (TestBase::* const postAction)()) { updateSensor(SensorType::Rpm, rpm, postAction); } template void TestBase::updateApp(const std::optional app, void (TestBase::* const postAction)()) { updateSensor(SensorType::DriverThrottleIntent, app, postAction); } template void TestBase::updateClt(const std::optional clt, void (TestBase::* const postAction)()) { updateSensor(SensorType::Clt, clt, postAction); } template void TestBase::updateMap(const std::optional map, void (TestBase::* const postAction)()) { updateSensor(SensorType::Map, map, postAction); } template void TestBase::updateLambda1(std::optional lambda1, void (TestBase::* const postAction)()) { updateSensor(SensorType::Lambda1, lambda1, postAction); } template void TestBase::updateSensor( const SensorType sensor, const std::optional sensorReading, void (TestBase::* const postAction)() ) { if (sensorReading.has_value()) { Sensor::setMockValue(sensor, sensorReading.value()); } else { Sensor::resetMockValue(sensor); } (this->*postAction)(); }