random refactoring: hopefully not changing byte size of any variables but clarifying/fixing type between ticks, US and MS
This commit is contained in:
parent
3ed388d1ad
commit
cf0b13041f
|
@ -672,7 +672,7 @@ class LcdController : public PeriodicController<UTILITY_THREAD_STACK_SIZE> {
|
|||
public:
|
||||
LcdController() : PeriodicController("LCD") { }
|
||||
private:
|
||||
void PeriodicTask(efitime_t nowNt) override {
|
||||
void PeriodicTask(efitick_t nowNt) override {
|
||||
UNUSED(nowNt);
|
||||
setPeriod(NOT_TOO_OFTEN(10 /* ms */, engineConfiguration->lcdThreadPeriodMs));
|
||||
if (engineConfiguration->useLcdScreen) {
|
||||
|
|
|
@ -355,7 +355,7 @@ bool Engine::isInShutdownMode() const {
|
|||
if (stopEngineRequestTimeNt == 0) // the shutdown procedure is not started
|
||||
return false;
|
||||
|
||||
const efitime_t engineStopWaitTimeoutNt = 5LL * 1000000LL;
|
||||
const efitick_t engineStopWaitTimeoutNt = 5LL * 1000000LL;
|
||||
// The engine is still spinning! Give it some time to stop (but wait no more than 5 secs)
|
||||
if (isSpinning && (getTimeNowNt() - stopEngineRequestTimeNt) < US2NT(engineStopWaitTimeoutNt))
|
||||
return true;
|
||||
|
|
|
@ -141,16 +141,11 @@ public:
|
|||
bool isCltBroken = false;
|
||||
bool slowCallBackWasInvoked = false;
|
||||
|
||||
|
||||
// floatms_t callToPitEndTime;
|
||||
|
||||
/**
|
||||
* remote telemetry: if not zero, time to stop flashing 'CALL FROM PIT STOP' light
|
||||
* todo: looks like there is a bug here? 64 bit storage an 32 bit time logic? anyway this feature is mostly a dream at this point
|
||||
*/
|
||||
efitime_t callFromPitStopEndTime = 0;
|
||||
|
||||
// timestamp of most recent time RPM hard limit was triggered
|
||||
efitime_t rpmHardLimitTimestamp = 0;
|
||||
efitimems64_t callFromPitStopEndTime = 0;
|
||||
|
||||
/**
|
||||
* This flag indicated a big enough problem that engine control would be
|
||||
|
@ -242,6 +237,7 @@ public:
|
|||
* some areas
|
||||
*/
|
||||
bool isTestMode = false;
|
||||
|
||||
void resetEngineSnifferIfInTestMode();
|
||||
|
||||
/**
|
||||
|
|
|
@ -30,7 +30,7 @@ typedef unsigned int time_t;
|
|||
typedef time_t efitimesec_t;
|
||||
|
||||
/**
|
||||
* integer time in milliseconds
|
||||
* integer time in milliseconds (1/1_000 of a second)
|
||||
* 32 bit 4B / 1000 = 4M seconds = 1111.11 hours = 46 days.
|
||||
* Please restart your ECU every 46 days? :)
|
||||
* See getTimeNowUs()
|
||||
|
@ -51,10 +51,16 @@ typedef int pid_dt;
|
|||
typedef int64_t efitime_t;
|
||||
|
||||
/**
|
||||
* 64 bit time in microseconds, since boot
|
||||
* 64 bit time in microseconds (1/1_000_000 of a second), since boot
|
||||
*/
|
||||
typedef efitime_t efitimeus_t;
|
||||
|
||||
/**
|
||||
* 64 bit time in milliseconds (1/1_000 of a second), since boot
|
||||
*/
|
||||
typedef efitime_t efitimems64_t;
|
||||
|
||||
|
||||
/**
|
||||
* platform-dependent tick since boot
|
||||
* in case of stm32f4 that's a CPU tick
|
||||
|
|
|
@ -96,7 +96,7 @@ RpmCalculator::RpmCalculator() {
|
|||
// which we cannot provide inside this parameter-less constructor. need a solution for this minor mess
|
||||
|
||||
// we need this initial to have not_running at first invocation
|
||||
lastRpmEventTimeNt = (efitime_t) -10 * US2NT(US_PER_SECOND_LL);
|
||||
lastRpmEventTimeNt = (efitick_t) -10 * US2NT(US_PER_SECOND_LL);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -200,7 +200,7 @@ void RpmCalculator::setStopSpinning(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
|||
setStopped(PASS_ENGINE_PARAMETER_SIGNATURE);
|
||||
}
|
||||
|
||||
void RpmCalculator::setSpinningUp(efitime_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
void RpmCalculator::setSpinningUp(efitick_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
if (!CONFIG(isFasterEngineSpinUpEnabled))
|
||||
return;
|
||||
// Only a completely stopped and non-spinning engine can enter the spinning-up state.
|
||||
|
@ -239,7 +239,7 @@ void rpmShaftPositionCallback(trigger_event_e ckpSignalType,
|
|||
bool hadRpmRecently = rpmState->checkIfSpinning(nowNt PASS_ENGINE_PARAMETER_SUFFIX);
|
||||
|
||||
if (hadRpmRecently) {
|
||||
efitime_t diffNt = nowNt - rpmState->lastRpmEventTimeNt;
|
||||
efitick_t diffNt = nowNt - rpmState->lastRpmEventTimeNt;
|
||||
/**
|
||||
* Four stroke cycle is two crankshaft revolutions
|
||||
*
|
||||
|
@ -329,8 +329,8 @@ static void tdcMarkCallback(trigger_event_e ckpSignalType,
|
|||
/**
|
||||
* @return Current crankshaft angle, 0 to 720 for four-stroke
|
||||
*/
|
||||
float getCrankshaftAngleNt(efitime_t timeNt DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
efitime_t timeSinceZeroAngleNt = timeNt
|
||||
float getCrankshaftAngleNt(efitick_t timeNt DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
efitick_t timeSinceZeroAngleNt = timeNt
|
||||
- engine->rpmCalculator.lastRpmEventTimeNt;
|
||||
|
||||
/**
|
||||
|
|
|
@ -74,7 +74,7 @@ public:
|
|||
/**
|
||||
* Should be called on every trigger event when the engine is just starting to spin up.
|
||||
*/
|
||||
void setSpinningUp(efitime_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||
void setSpinningUp(efitick_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||
/**
|
||||
* Called if the synchronization is lost due to a trigger timeout.
|
||||
*/
|
||||
|
@ -116,7 +116,7 @@ public:
|
|||
* NaN while engine is not spinning
|
||||
*/
|
||||
volatile floatus_t oneDegreeUs = NAN;
|
||||
volatile efitime_t lastRpmEventTimeNt = 0;
|
||||
volatile efitick_t lastRpmEventTimeNt = 0;
|
||||
private:
|
||||
/**
|
||||
* Should be called once we've realized engine is not spinning any more.
|
||||
|
@ -156,7 +156,7 @@ void rpmShaftPositionCallback(trigger_event_e ckpSignalType, uint32_t index DECL
|
|||
*/
|
||||
void initRpmCalculator(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||
|
||||
float getCrankshaftAngleNt(efitime_t timeNt DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||
float getCrankshaftAngleNt(efitick_t timeNt DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||
|
||||
#define getRevolutionCounter() ENGINE(rpmCalculator.getRevolutionCounterM())
|
||||
|
||||
|
|
|
@ -84,7 +84,7 @@ class MILController : public PeriodicController<UTILITY_THREAD_STACK_SIZE> {
|
|||
public:
|
||||
MILController() : PeriodicController("MFIndicator") { }
|
||||
private:
|
||||
void PeriodicTask(efitime_t nowNt) override {
|
||||
void PeriodicTask(efitick_t nowNt) override {
|
||||
UNUSED(nowNt);
|
||||
|
||||
if (nowNt - engine->triggerCentral.triggerState.mostRecentSyncTime < US2NT(MS2US(500))) {
|
||||
|
|
|
@ -236,7 +236,7 @@ class BenchController : public PeriodicController<UTILITY_THREAD_STACK_SIZE> {
|
|||
public:
|
||||
BenchController() : PeriodicController("BenchThread") { }
|
||||
private:
|
||||
void PeriodicTask(efitime_t nowNt) override {
|
||||
void PeriodicTask(efitick_t nowNt) override {
|
||||
UNUSED(nowNt);
|
||||
setPeriod(50 /* ms */);
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ protected:
|
|||
/**
|
||||
* @brief Called periodically. Override this method to do work for your controller.
|
||||
*/
|
||||
virtual void PeriodicTask(efitime_t nowNt) = 0;
|
||||
virtual void PeriodicTask(efitick_t nowNt) = 0;
|
||||
|
||||
private:
|
||||
void ThreadTask() override final
|
||||
|
@ -63,7 +63,7 @@ private:
|
|||
while(true)
|
||||
{
|
||||
systime_t before = chVTGetSystemTime();
|
||||
efitime_t nowNt = getTimeNowNt();
|
||||
efitick_t nowNt = getTimeNowNt();
|
||||
|
||||
{
|
||||
ScopePerf perf(PE::PeriodicControllerPeriodicTask);
|
||||
|
|
|
@ -112,7 +112,7 @@ static efitimeus_t getNextSwitchTimeUs(PwmConfig *state) {
|
|||
* Once 'iteration' gets relatively high, we might lose calculation precision here.
|
||||
* This is addressed by ITERATION_LIMIT
|
||||
*/
|
||||
efitime_t timeToSwitchNt = (efitime_t) ((iteration + switchTime) * periodNt);
|
||||
efitick_t timeToSwitchNt = (efitick_t) ((iteration + switchTime) * periodNt);
|
||||
|
||||
#if DEBUG_PWM
|
||||
scheduleMsg(&logger, "start=%d timeToSwitch=%d", state->safe.start, timeToSwitch);
|
||||
|
|
|
@ -37,8 +37,6 @@ EXTERN_ENGINE;
|
|||
|
||||
extern schfunc_t globalTimerCallback;
|
||||
|
||||
//static int timerIsLate = 0;
|
||||
//static efitime_t callbackTime = 0;
|
||||
/**
|
||||
* these fields are global in order to facilitate debugging
|
||||
*/
|
||||
|
|
|
@ -46,7 +46,7 @@ public:
|
|||
efitick_t previousVvtCamTime = 0;
|
||||
efitick_t previousVvtCamDuration = 0;
|
||||
|
||||
volatile efitime_t previousShaftEventTimeNt;
|
||||
volatile efitick_t previousShaftEventTimeNt;
|
||||
private:
|
||||
IntListenerArray<15> triggerListeneres;
|
||||
|
||||
|
@ -57,7 +57,6 @@ private:
|
|||
};
|
||||
|
||||
void triggerInfo(void);
|
||||
efitime_t getCrankEventCounter(DECLARE_ENGINE_PARAMETER_SIGNATURE);
|
||||
void hwHandleShaftSignal(trigger_event_e signal);
|
||||
void hwHandleVvtCamSignal(trigger_value_e front DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||
|
||||
|
|
|
@ -172,7 +172,7 @@ void calculateTriggerSynchPoint(TriggerWaveform *shape, TriggerState *state DECL
|
|||
}
|
||||
}
|
||||
|
||||
efitime_t TriggerState::getTotalEventCounter() const {
|
||||
int64_t TriggerState::getTotalEventCounter() const {
|
||||
return totalEventCountBase + currentCycle.current_index;
|
||||
}
|
||||
|
||||
|
@ -188,7 +188,7 @@ void TriggerStateWithRunningStatistics::movePreSynchTimestamps(DECLARE_ENGINE_PA
|
|||
}
|
||||
}
|
||||
|
||||
float TriggerStateWithRunningStatistics::calculateInstantRpm(int *prevIndexOut, efitime_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
float TriggerStateWithRunningStatistics::calculateInstantRpm(int *prevIndexOut, efitick_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
int current_index = currentCycle.current_index; // local copy so that noone changes the value on us
|
||||
timeOfLastEvent[current_index] = nowNt;
|
||||
/**
|
||||
|
@ -236,7 +236,7 @@ float TriggerStateWithRunningStatistics::calculateInstantRpm(int *prevIndexOut,
|
|||
return instantRpm;
|
||||
}
|
||||
|
||||
void TriggerStateWithRunningStatistics::setLastEventTimeForInstantRpm(efitime_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
void TriggerStateWithRunningStatistics::setLastEventTimeForInstantRpm(efitick_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
if (shaft_is_synchronized) {
|
||||
return;
|
||||
}
|
||||
|
@ -250,7 +250,7 @@ void TriggerStateWithRunningStatistics::setLastEventTimeForInstantRpm(efitime_t
|
|||
spinningEvents[spinningEventIndex++] = nowNt;
|
||||
}
|
||||
|
||||
void TriggerStateWithRunningStatistics::runtimeStatistics(efitime_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
void TriggerStateWithRunningStatistics::runtimeStatistics(efitick_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
if (engineConfiguration->debugMode == DBG_INSTANT_RPM) {
|
||||
instantRpm = calculateInstantRpm(NULL, nowNt PASS_ENGINE_PARAMETER_SUFFIX);
|
||||
}
|
||||
|
@ -385,7 +385,7 @@ void TriggerState::handleTriggerError(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
|||
}
|
||||
|
||||
void TriggerState::onShaftSynchronization(const TriggerStateCallback triggerCycleCallback,
|
||||
efitime_t nowNt, trigger_wheel_e triggerWheel DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
efitick_t nowNt, trigger_wheel_e triggerWheel DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
setShaftSynchronized(true);
|
||||
// this call would update duty cycle values
|
||||
nextTriggerEvent()
|
||||
|
@ -418,7 +418,7 @@ void TriggerState::onShaftSynchronization(const TriggerStateCallback triggerCycl
|
|||
*/
|
||||
void TriggerState::decodeTriggerEvent(const TriggerStateCallback triggerCycleCallback,
|
||||
TriggerStateListener * triggerStateListener,
|
||||
trigger_event_e const signal, efitime_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
trigger_event_e const signal, efitick_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
ScopePerf perf(PE::DecodeTriggerEvent, static_cast<uint8_t>(signal));
|
||||
|
||||
bool useOnlyRisingEdgeForTrigger = CONFIG(useOnlyRisingEdgeForTrigger);
|
||||
|
@ -441,7 +441,7 @@ void TriggerState::decodeTriggerEvent(const TriggerStateCallback triggerCycleCal
|
|||
|
||||
efiAssertVoid(CUSTOM_OBD_93, toothed_previous_time <= nowNt, "toothed_previous_time after nowNt");
|
||||
|
||||
efitime_t currentDurationLong = getCurrentGapDuration(nowNt);
|
||||
efitick_t currentDurationLong = getCurrentGapDuration(nowNt);
|
||||
|
||||
/**
|
||||
* For performance reasons, we want to work with 32 bit values. If there has been more then
|
||||
|
@ -760,7 +760,7 @@ void initTriggerDecoderLogger(Logging *sharedLogger) {
|
|||
logger = sharedLogger;
|
||||
}
|
||||
|
||||
void TriggerState::runtimeStatistics(efitime_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
void TriggerState::runtimeStatistics(efitick_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
UNUSED(nowNt);
|
||||
// empty base implementation
|
||||
}
|
||||
|
|
|
@ -72,7 +72,7 @@ public:
|
|||
bool validateEventCounters(DECLARE_ENGINE_PARAMETER_SIGNATURE) const;
|
||||
void handleTriggerError(DECLARE_ENGINE_PARAMETER_SIGNATURE);
|
||||
void onShaftSynchronization(const TriggerStateCallback triggerCycleCallback,
|
||||
efitime_t nowNt, trigger_wheel_e triggerWheel DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||
efitick_t nowNt, trigger_wheel_e triggerWheel DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||
/**
|
||||
* Resets synchronization flag and alerts rpm_calculator to reset engine spinning flag.
|
||||
*/
|
||||
|
@ -85,7 +85,7 @@ public:
|
|||
* TRUE if we know where we are
|
||||
*/
|
||||
bool shaft_is_synchronized;
|
||||
efitime_t mostRecentSyncTime;
|
||||
efitick_t mostRecentSyncTime;
|
||||
|
||||
efitick_t lastDecodingErrorTime;
|
||||
// the boolean flag is a performance optimization so that complex comparison is avoided if no error
|
||||
|
@ -96,7 +96,7 @@ public:
|
|||
*/
|
||||
uint32_t toothDurations[GAP_TRACKING_LENGTH + 1];
|
||||
|
||||
efitime_t toothed_previous_time;
|
||||
efitick_t toothed_previous_time;
|
||||
|
||||
current_cycle_state_s currentCycle;
|
||||
|
||||
|
@ -112,7 +112,7 @@ public:
|
|||
void setShaftSynchronized(bool value);
|
||||
|
||||
#if EFI_ENGINE_CONTROL && EFI_SHAFT_POSITION_INPUT
|
||||
virtual void runtimeStatistics(efitime_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||
virtual void runtimeStatistics(efitick_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
@ -125,7 +125,7 @@ private:
|
|||
|
||||
trigger_event_e curSignal;
|
||||
trigger_event_e prevSignal;
|
||||
efitime_t totalEventCountBase;
|
||||
int64_t totalEventCountBase;
|
||||
uint32_t totalRevolutionCounter;
|
||||
bool isFirstEvent;
|
||||
};
|
||||
|
@ -158,15 +158,15 @@ public:
|
|||
*/
|
||||
float prevInstantRpmValue = 0;
|
||||
void movePreSynchTimestamps(DECLARE_ENGINE_PARAMETER_SIGNATURE);
|
||||
float calculateInstantRpm(int *prevIndex, efitime_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||
float calculateInstantRpm(int *prevIndex, efitick_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||
#if EFI_ENGINE_CONTROL && EFI_SHAFT_POSITION_INPUT
|
||||
void runtimeStatistics(efitime_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX) override;
|
||||
void runtimeStatistics(efitick_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX) override;
|
||||
#endif
|
||||
/**
|
||||
* Update timeOfLastEvent[] on every trigger event - even without synchronization
|
||||
* Needed for early spin-up RPM detection.
|
||||
*/
|
||||
void setLastEventTimeForInstantRpm(efitime_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||
void setLastEventTimeForInstantRpm(efitick_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||
};
|
||||
|
||||
angle_t getEngineCycle(operation_mode_e operationMode);
|
||||
|
|
|
@ -113,7 +113,7 @@ bool WaveChart::isStartedTooLongAgo() const {
|
|||
* engineChartSize/20 is the longest meaningful chart.
|
||||
*
|
||||
*/
|
||||
efitime_t chartDurationNt = getTimeNowNt() - startTimeNt;
|
||||
efitick_t chartDurationNt = getTimeNowNt() - startTimeNt;
|
||||
return startTimeNt != 0 && NT2US(chartDurationNt) > engineConfiguration->engineChartSize * 1000000 / 20;
|
||||
}
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ private:
|
|||
* https://github.com/rusefi/rusefi/issues/780
|
||||
*/
|
||||
bool collectingData = false;
|
||||
efitime_t startTimeNt = 0;
|
||||
efitick_t startTimeNt = 0;
|
||||
volatile int isInitialized = false;
|
||||
};
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ extern bool hasFirmwareErrorFlag;
|
|||
* Difference between current 1st trigger event and previous 1st trigger event.
|
||||
*/
|
||||
static volatile uint32_t engineCycleDurationUs;
|
||||
static volatile efitime_t previousEngineCycleTimeUs = 0;
|
||||
static volatile efitimeus_t previousEngineCycleTimeUs = 0;
|
||||
|
||||
static int waveReaderCount = 0;
|
||||
static WaveReader readers[MAX_ICU_COUNT];
|
||||
|
@ -133,7 +133,7 @@ static void waTriggerEventListener(trigger_event_e ckpSignalType, uint32_t index
|
|||
if (index != 0) {
|
||||
return;
|
||||
}
|
||||
efitick_t nowUs = getTimeNowUs();
|
||||
efitimeus_t nowUs = getTimeNowUs();
|
||||
engineCycleDurationUs = nowUs - previousEngineCycleTimeUs;
|
||||
previousEngineCycleTimeUs = nowUs;
|
||||
}
|
||||
|
|
|
@ -421,7 +421,7 @@ public:
|
|||
{
|
||||
}
|
||||
|
||||
void PeriodicTask(efitime_t nowNt) override {
|
||||
void PeriodicTask(efitick_t nowNt) override {
|
||||
{
|
||||
ScopePerf perf(PE::AdcConversionSlow);
|
||||
|
||||
|
|
|
@ -130,7 +130,7 @@ static void hwTimerCallback(GPTDriver *gptp) {
|
|||
|
||||
class MicrosecondTimerWatchdogController : public PeriodicTimerController {
|
||||
void PeriodicTask() override {
|
||||
efitime_t nowNt = getTimeNowNt();
|
||||
efitick_t nowNt = getTimeNowNt();
|
||||
if (nowNt >= lastSetTimerTimeNt + 2 * CORE_CLOCK) {
|
||||
strcpy(buff, "no_event");
|
||||
itoa10(&buff[8], lastSetTimerValue);
|
||||
|
|
|
@ -61,7 +61,7 @@ class AccelController : public PeriodicController<UTILITY_THREAD_STACK_SIZE> {
|
|||
public:
|
||||
AccelController() : PeriodicController("Acc SPI") { }
|
||||
private:
|
||||
void PeriodicTask(efitime_t nowNt) override {
|
||||
void PeriodicTask(efitick_t nowNt) override {
|
||||
// has to be a thread since we want to use blocking method - blocking method only available in threads, not in interrupt handler
|
||||
// todo: migrate to async SPI API?
|
||||
engine->sensors.accelerometer.x = (int8_t)lis302dlReadRegister(driver, LIS302DL_OUTX);
|
||||
|
|
|
@ -2,7 +2,6 @@ package com.rusefi.ui;
|
|||
|
||||
import com.rusefi.AverageAnglesUtil;
|
||||
import com.rusefi.FileLog;
|
||||
import com.rusefi.IoUtil;
|
||||
import com.rusefi.config.generated.Fields;
|
||||
import com.rusefi.core.MessagesCentral;
|
||||
import com.rusefi.io.CommandQueue;
|
||||
|
|
Loading…
Reference in New Issue