// // Created by kifir on 11/4/24. // #pragma once #include "batt_lag_corr_curve.h" class TestEngineConfiguration { public: static TestEngineConfiguration& getInstance(); // Launch Control Settings void configureLaunchControlEnabled(std::optional launchControlEnabled); void configureLaunchActivationMode(std::optional launchActivationMode); void configureLaunchSpeedThreshold(std::optional launchSpeedThreshold); void configureLaunchRpm(std::optional launchRpm); void configureLaunchRpmWindow(std::optional launchRpmWindow); void configureLaunchCorrectionsEndRpm(std::optional launchCorrectionsEndRpm); void configureIgnitionRetardEnable(std::optional ignitionRetardEnable); void configureIgnitionRetard(std::optional ignitionRetard); void configureSmoothRetardMode(std::optional smoothRetardMode); void configureEnableIgnitionCut(std::optional enableIgnitionCut); void configureInitialIgnitionCutPercent(std::optional initialIgnitionCut); void configureFinalIgnitionCutPercentBeforeLaunch(std::optional finalIgnitionCutBeforeLaunch); // Shift Torque Reduction (Flat Shift) void configureTorqueReductionEnabled(std::optional isTorqueReductionEnabled); void configureTorqueReductionActivationMode(std::optional activationMode); void configureTorqueReductionButton(std::optional pin); void configureTorqueReductionButtonInverted(std::optional pinInverted); void configureLaunchActivatePin(std::optional pin); void configureLaunchActivateInverted(std::optional pinInverted); void configureLimitTorqueReductionTime(std::optional limitTorqueReductionTime); void configureTorqueReductionTime(std::optional timeout); void configureTorqueReductionArmingRpm(std::optional armingRpm); void configureTorqueReductionArmingApp(std::optional armingApp); void configureTorqueReductionIgnitionCut(std::optional ignitionCut); void configureTorqueReductionIgnitionRetard(std::optional ignitionRetard); // Injector void configureInjectorFlow(std::optional flow); void configureInjectorBattLagCorr(std::optional battLagCorr); void configureInjectorFlowAsMassFlow(std::optional injectorFlowAsMassFlow); // Secondary Injector void configureInjectorSecondaryFlow(std::optional flow); void configureInjectorSecondaryBattLagCorr(std::optional battLagCorr); // Staged injection void configureEnableStagedInjection(std::optional isStagedInjectionEnabled); private: TestEngineConfiguration(); static TestEngineConfiguration instance; };