rusEFI
The most advanced open source ECU
Functions | Variables
settings.cpp File Reference

Detailed Description

This file is about configuring engine via the human-readable protocol.

Date
Dec 30, 2012
Author
Andrey Belomutskiy, (c) 2012-2020

Definition in file settings.cpp.

Functions

void printSpiState ()
 
static void printOutputs ()
 
void printConfiguration ()
 Prints current engine configuration to human-readable console. More...
 
static void doPrintConfiguration ()
 
static void setFixedModeTiming (int value)
 
static void setTimingMode (int value)
 
static void setIdleSolenoidFrequency (int value)
 
static void setSensorChartMode (int value)
 
static void printTpsSenser (const char *msg, SensorType sensor, int16_t min, int16_t max, adc_channel_e channel)
 
void printTPSInfo (void)
 
static void setCrankingRpm (int value)
 
static void setAlgorithmInt (int value)
 
static void setFiringOrder (int value)
 
static void setRpmHardLimit (int value)
 
static void setCrankingIACExtra (float percent)
 
static void setCrankingFuel (float timeMs)
 
static void setGlobalTriggerAngleOffset (float value)
 
static void setCrankingTimingAngle (float value)
 
static void setCrankingInjectionMode (int value)
 
static void setInjectionMode (int value)
 
static void setIgnitionMode (int value)
 
static void setIndividualCoilsIgnition ()
 
static void setTriggerType (int value)
 
static void setDebugMode (int value)
 
static void setWholeTimingMap (float value)
 
static void setWholeTimingMapCmd (float value)
 
static brain_pin_e parseBrainPinWithErrorMessage (const char *pinName)
 
static void setIgnitionPin (const char *indexStr, const char *pinName)
 
void readPin (const char *pinName)
 
static void benchSetPinValue (const char *pinName, int bit)
 
static void benchClearPin (const char *pinName)
 
static void benchSetPin (const char *pinName)
 
static void setIndividualPin (const char *pinName, brain_pin_e *targetPin, const char *name)
 
static void setVssPin (const char *pinName)
 
static void setIdlePin (const char *pinName)
 
static void setAlternatorPin (const char *pinName)
 
static void setTriggerInputPin (const char *indexStr, const char *pinName)
 
static void setTriggerSimulatorPin (const char *indexStr, const char *pinName)
 
static void setAnalogInputPin (const char *sensorStr, const char *pinName)
 
static void setLogicInputPin (const char *indexStr, const char *pinName)
 
static void setSpiMode (int index, bool mode)
 
static void enableOrDisable (const char *param, bool isEnabled)
 
static void enable (const char *param)
 
static void disable (const char *param)
 
static void enableSpi (int index)
 
static void disableSpi (int index)
 
void scheduleStopEngine ()
 
static void getValue (const char *paramStr)
 
static void setScriptCurve1Value (float value)
 
static void setScriptCurve2Value (float value)
 
static void setValue (const char *paramStr, const char *valueStr)
 
void initSettings ()
 
void printDateTime ()
 
void setDateTime (const char *const isoDateTime)
 
void setEngineTypeAndSave (int value)
 
void setEngineType (int value, bool isWriteToFlash)
 

Variables

int waveChartUsedSize
 
WaveChart waveChart
 
bool verboseRxCan = false
 
const command_f_s commandsF []
 
const command_i_s commandsI []
 

Function Documentation

◆ benchClearPin()

static void benchClearPin ( const char *  pinName)
static

Definition at line 353 of file settings.cpp.

353  {
354  benchSetPinValue(pinName, 0);
355 }
static void benchSetPinValue(const char *pinName, int bit)
Definition: settings.cpp:342

Referenced by initSettings().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ benchSetPin()

static void benchSetPin ( const char *  pinName)
static

Definition at line 357 of file settings.cpp.

357  {
358  benchSetPinValue(pinName, 1);
359 }

Referenced by initSettings().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ benchSetPinValue()

static void benchSetPinValue ( const char *  pinName,
int  bit 
)
static

Definition at line 342 of file settings.cpp.

342  {
344  if (pin == Gpio::Invalid) {
345  return;
346  }
347  // low-level API which does not care about 'qcDirectPinControlMode'
348  palWritePad(getHwPort("write", pin), getHwPin("write", pin), bit);
349  efiPrintf("pin %s set value", hwPortname(pin));
350  readPin(pinName);
351 }
Gpio
@ Invalid
ioportid_t getHwPort(const char *msg, brain_pin_e brainPin)
ioportmask_t getHwPin(const char *msg, brain_pin_e brainPin)
const char * hwPortname(brain_pin_e brainPin)
static brain_pin_e parseBrainPinWithErrorMessage(const char *pinName)
Definition: settings.cpp:303
void readPin(const char *pinName)
Definition: settings.cpp:332
brain_pin_e pin
Definition: stm32_adc.cpp:15

Referenced by benchClearPin(), and benchSetPin().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ disable()

static void disable ( const char *  param)
static

Definition at line 571 of file settings.cpp.

571  {
572  enableOrDisable(param, false);
573 }
static void enableOrDisable(const char *param, bool isEnabled)
Definition: settings.cpp:492
static tstrWifiInitParam param

Referenced by initSettings().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ disableSpi()

static void disableSpi ( int  index)
static

Definition at line 579 of file settings.cpp.

579  {
580  setSpiMode(index, false);
581 }
static void setSpiMode(int index, bool mode)
Definition: settings.cpp:472

Referenced by initSettings().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ doPrintConfiguration()

static void doPrintConfiguration ( )
static

Definition at line 148 of file settings.cpp.

148  {
150 }
void printConfiguration()
Prints current engine configuration to human-readable console.
Definition: settings.cpp:90

Referenced by initSettings(), setAlgorithmInt(), setCrankingInjectionMode(), setCrankingRpm(), setCrankingTimingAngle(), setEngineType(), setFiringOrder(), setFixedModeTiming(), setGlobalTriggerAngleOffset(), setInjectionMode(), setRpmHardLimit(), setSensorChartMode(), setTimingMode(), and setTriggerType().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ enable()

static void enable ( const char *  param)
static

◆ enableOrDisable()

static void enableOrDisable ( const char *  param,
bool  isEnabled 
)
static

Definition at line 492 of file settings.cpp.

492  {
493  if (strEqualCaseInsensitive(param, "useTLE8888_cranking_hack")) {
495 #if EFI_SHAFT_POSITION_INPUT
496  } else if (strEqualCaseInsensitive(param, CMD_TRIGGER_HW_INPUT)) {
498 #endif // EFI_SHAFT_POSITION_INPUT
499  } else if (strEqualCaseInsensitive(param, "verboseTLE8888")) {
500  engineConfiguration->verboseTLE8888 = isEnabled;
501  } else if (strEqualCaseInsensitive(param, "verboseRxCan")) {
502  verboseRxCan = isEnabled;
503  } else if (strEqualCaseInsensitive(param, "verboseCan")) {
504  engineConfiguration->verboseCan = isEnabled;
505  } else if (strEqualCaseInsensitive(param, "verboseIsoTp")) {
506  engineConfiguration->verboseIsoTp = isEnabled;
507  } else if (strEqualCaseInsensitive(param, "artificialMisfire")) {
509  } else if (strEqualCaseInsensitive(param, "logic_level_trigger")) {
511  } else if (strEqualCaseInsensitive(param, "can_broadcast")) {
513  } else if (strEqualCaseInsensitive(param, "etb_auto")) {
514  engine->etbAutoTune = isEnabled;
515  } else if (strEqualCaseInsensitive(param, "verboseKLine")) {
516  engineConfiguration->verboseKLine = isEnabled;
517  } else if (strEqualCaseInsensitive(param, "stepperidle")) {
518  engineConfiguration->useStepperIdle = isEnabled;
519  } else if (strEqualCaseInsensitive(param, "two_wire_wasted_spark")) {
522  } else if (strEqualCaseInsensitive(param, "tpic_advanced_mode")) {
524  } else if (strEqualCaseInsensitive(param, "altcontrol")) {
526  } else if (strEqualCaseInsensitive(param, "sd")) {
528  } else if (strEqualCaseInsensitive(param, CMD_FUNCTIONAL_TEST_MODE)) {
529  engine->isFunctionalTestMode = isEnabled;
530  } else if (strEqualCaseInsensitive(param, "can_read")) {
531  engineConfiguration->canReadEnabled = isEnabled;
532  } else if (strEqualCaseInsensitive(param, "can_write")) {
534  } else if (strEqualCaseInsensitive(param, CMD_INJECTION)) {
536  } else if (strEqualCaseInsensitive(param, CMD_PWM)) {
537  engine->isPwmEnabled = isEnabled;
538  } else if (strEqualCaseInsensitive(param, "trigger_details")) {
540  } else if (strEqualCaseInsensitive(param, "vvt_details")) {
542  } else if (strEqualCaseInsensitive(param, "invertCamVVTSignal")) {
544  } else if (strEqualCaseInsensitive(param, CMD_IGNITION)) {
546 #if EFI_EMULATE_POSITION_SENSORS
547  } else if (strEqualCaseInsensitive(param, CMD_SELF_STIMULATION)) {
548  if (isEnabled) {
550  } else {
552  }
553  } else if (strEqualCaseInsensitive(param, CMD_EXTERNAL_STIMULATION)) {
554  if (isEnabled) {
556  } else {
558  }
559 #endif // EFI_EMULATE_POSITION_SENSORS
560  } else {
561  efiPrintf("unexpected [%s]", param);
562  return; // well, MISRA would not like this 'return' here :(
563  }
564  efiPrintf("[%s] %s", param, isEnabled ? "enabled" : "disabled");
565 }
bool etbAutoTune
Definition: engine.h:264
bool isFunctionalTestMode
Definition: engine.h:308
bool isPwmEnabled
Definition: engine.h:107
bool hwTriggerInputEnabled
TriggerCentral * getTriggerCentral()
Definition: engine.cpp:609
void incrementGlobalConfigurationVersion(const char *msg)
Engine * engine
engine_configuration_s * engineConfiguration
bool verboseRxCan
Definition: settings.cpp:490
void disableTriggerStimulator()
void enableExternalTriggerStimulator()
void enableTriggerStimulator(bool incGlobalConfiguration)

Referenced by disable(), and enable().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ enableSpi()

static void enableSpi ( int  index)
static

Definition at line 575 of file settings.cpp.

575  {
576  setSpiMode(index, true);
577 }

Referenced by initSettings().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getValue()

static void getValue ( const char *  paramStr)
static

Definition at line 590 of file settings.cpp.

590  {
591 
592  {
593  float value = getConfigValueByName(paramStr);
594  if (value != EFI_ERROR_CODE) {
595  efiPrintf("%s value: %.2f", paramStr, value);
596  return;
597  }
598  }
599 
600  if (strEqualCaseInsensitive(paramStr, "tps_min")) {
601  efiPrintf("tps_min=%d", engineConfiguration->tpsMin);
602  } else if (strEqualCaseInsensitive(paramStr, "tps_max")) {
603  efiPrintf("tps_max=%d", engineConfiguration->tpsMax);
604  } else if (strEqualCaseInsensitive(paramStr, "global_trigger_offset_angle")) {
605  efiPrintf("global_trigger_offset=%.2f", engineConfiguration->globalTriggerAngleOffset);
606 #if EFI_SHAFT_POSITION_INPUT
607  } else if (strEqualCaseInsensitive(paramStr, "trigger_hw_input")) {
608  efiPrintf("trigger_hw_input=%s", boolToString(getTriggerCentral()->hwTriggerInputEnabled));
609 #endif // EFI_SHAFT_POSITION_INPUT
610  } else if (strEqualCaseInsensitive(paramStr, "is_enabled_spi_1")) {
611  efiPrintf("is_enabled_spi_1=%s", boolToString(engineConfiguration->is_enabled_spi_1));
612  } else if (strEqualCaseInsensitive(paramStr, "is_enabled_spi_2")) {
613  efiPrintf("is_enabled_spi_2=%s", boolToString(engineConfiguration->is_enabled_spi_2));
614  } else if (strEqualCaseInsensitive(paramStr, "is_enabled_spi_3")) {
615  efiPrintf("is_enabled_spi_3=%s", boolToString(engineConfiguration->is_enabled_spi_3));
616  } else if (strEqualCaseInsensitive(paramStr, "isHip9011Enabled")) {
617  efiPrintf("isHip9011Enabled=%d", engineConfiguration->isHip9011Enabled);
618  } else if (strEqualCaseInsensitive(paramStr, CMD_DATE)) {
619  printDateTime();
620  } else {
621  efiPrintf("Invalid Parameter: %s", paramStr);
622  }
623 }
const char * boolToString(bool value)
Definition: efilib.cpp:18
void printDateTime()
Definition: settings.cpp:833
float getConfigValueByName(const char *name)

Referenced by initSettings().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ initSettings()

void initSettings ( )

Definition at line 769 of file settings.cpp.

769  {
770 #if EFI_SIMULATOR
771  printf("initSettings\n");
772 #endif // EFI_SIMULATOR
773 
774  // todo: start saving values into flash right away?
775 
776  addConsoleAction("tpsinfo", printTPSInfo);
777  addConsoleAction("calibrate_tps_1_closed", grabTPSIsClosed);
778  addConsoleAction("calibrate_tps_1_wot", grabTPSIsWideOpen);
779 
780 
781 #if EFI_ENGINE_CONTROL
782  // used by HW CI
783  addConsoleAction(CMD_INDIVIDUAL_INJECTION, setIndividualCoilsIgnition);
784  addConsoleAction("showconfig", doPrintConfiguration);
785  addConsoleActionF("set_whole_timing_map", setWholeTimingMapCmd);
786 #endif // EFI_ENGINE_CONTROL
787 
788  addConsoleAction("stopengine", (Void) scheduleStopEngine);
789 
790  // todo: refactor this - looks like all boolean flags should be controlled with less code duplication
791  addConsoleActionI("enable_spi", enableSpi);
792  addConsoleActionI("disable_spi", disableSpi);
793 
794  addConsoleActionS(CMD_ENABLE, enable);
795  addConsoleActionS(CMD_DISABLE, disable);
796 
797  addConsoleActionSS(CMD_SET, setValue);
798  addConsoleActionS(CMD_GET, getValue);
799 
800 #if EFI_PROD_CODE
801  addConsoleActionSS(CMD_IGNITION_PIN, setIgnitionPin);
802  addConsoleActionSS(CMD_TRIGGER_PIN, setTriggerInputPin);
803  addConsoleActionSS(CMD_TRIGGER_SIMULATOR_PIN, setTriggerSimulatorPin);
804 
805  addConsoleActionI(CMD_ECU_UNLOCK, unlockEcu);
806 
807  addConsoleActionS(CMD_ALTERNATOR_PIN, setAlternatorPin);
808  addConsoleActionS(CMD_IDLE_PIN, setIdlePin);
809 
810  addConsoleActionS("bench_clearpin", benchClearPin);
811  addConsoleActionS("bench_setpin", benchSetPin);
812  addConsoleActionS("readpin", readPin);
813  addConsoleAction("hw_qc_mode", [](){
814  extern bool qcDirectPinControlMode;
815  qcDirectPinControlMode = true;
816  });
817  addConsoleActionS("bench_set_output_mode", [](const char *pinName){
819  if (pin == Gpio::Invalid) {
820  return;
821  }
822  efiSetPadModeWithoutOwnershipAcquisition("manual-mode", pin, PAL_MODE_OUTPUT_PUSHPULL);
823  });
824 
825 #if HAL_USE_ADC
826  addConsoleAction("adc_report", printFullAdcReport);
827  addConsoleActionSS("set_analog_input_pin", setAnalogInputPin);
828 #endif // HAL_USE_ADC
829  addConsoleActionSS(CMD_LOGIC_PIN, setLogicInputPin);
830 #endif // EFI_PROD_CODE
831 }
void printFullAdcReport(void)
Definition: adc_inputs.cpp:87
bool qcDirectPinControlMode
void addConsoleActionF(const char *token, VoidFloat callback)
void addConsoleActionS(const char *token, VoidCharPtr callback)
void addConsoleAction(const char *token, Void callback)
Register console action without parameters.
void addConsoleActionSS(const char *token, VoidCharPtrCharPtr callback)
void addConsoleActionI(const char *token, VoidInt callback)
Register a console command with one Integer parameter.
void(* Void)(void)
Definition: cli_registry.h:52
void unlockEcu(int password)
Definition: engine2.cpp:265
void efiSetPadModeWithoutOwnershipAcquisition(const char *msg, brain_pin_e brainPin, iomode_t mode)
Definition: io_pins.cpp:61
static void enableSpi(int index)
Definition: settings.cpp:575
void printTPSInfo(void)
Definition: settings.cpp:192
static void enable(const char *param)
Definition: settings.cpp:567
static void setIgnitionPin(const char *indexStr, const char *pinName)
Definition: settings.cpp:317
static void benchSetPin(const char *pinName)
Definition: settings.cpp:357
static void getValue(const char *paramStr)
Definition: settings.cpp:590
static void disableSpi(int index)
Definition: settings.cpp:579
static void setIndividualCoilsIgnition()
Definition: settings.cpp:273
static void setValue(const char *paramStr, const char *valueStr)
Definition: settings.cpp:693
static void setAlternatorPin(const char *pinName)
Definition: settings.cpp:381
static void benchClearPin(const char *pinName)
Definition: settings.cpp:353
void scheduleStopEngine()
Definition: settings.cpp:586
static void setWholeTimingMapCmd(float value)
Definition: settings.cpp:293
static void setTriggerSimulatorPin(const char *indexStr, const char *pinName)
Definition: settings.cpp:404
static void setTriggerInputPin(const char *indexStr, const char *pinName)
Definition: settings.cpp:391
static void setAnalogInputPin(const char *sensorStr, const char *pinName)
Definition: settings.cpp:420
static void setIdlePin(const char *pinName)
Definition: settings.cpp:377
static void setLogicInputPin(const char *indexStr, const char *pinName)
Definition: settings.cpp:456
static void disable(const char *param)
Definition: settings.cpp:571
static void doPrintConfiguration()
Definition: settings.cpp:148
void grabTPSIsWideOpen()
Definition: tps.cpp:15
void grabTPSIsClosed()
Definition: tps.cpp:7
printf("\n")

Referenced by commonInitEngineController().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parseBrainPinWithErrorMessage()

static brain_pin_e parseBrainPinWithErrorMessage ( const char *  pinName)
static

Definition at line 303 of file settings.cpp.

303  {
304  brain_pin_e pin = parseBrainPin(pinName);
305  if (pin == Gpio::Invalid) {
306  efiPrintf("invalid pin name [%s]", pinName);
307  }
308  return pin;
309 }
brain_pin_e parseBrainPin(const char *str)

Referenced by benchSetPinValue(), initSettings(), readPin(), setAnalogInputPin(), setIgnitionPin(), setIndividualPin(), setLogicInputPin(), setTriggerInputPin(), and setTriggerSimulatorPin().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ printConfiguration()

void printConfiguration ( )

Prints current engine configuration to human-readable console.

Definition at line 90 of file settings.cpp.

90  {
91 
92  efiPrintf("Template %s/%d trigger %s/%s/%d", getEngine_type_e(engineConfiguration->engineType),
96 
97 
98  efiPrintf("configurationVersion=%d", engine->getGlobalConfigurationVersion());
99 
100  efiPrintf("rpmHardLimit: %d/operationMode=%d", engineConfiguration->rpmHardLimit,
101  getEngineRotationState()->getOperationMode());
102 
103  efiPrintf("globalTriggerAngleOffset=%.2f", engineConfiguration->globalTriggerAngleOffset);
104 
105  efiPrintf("=== cranking ===");
106  efiPrintf("crankingRpm: %d", engineConfiguration->cranking.rpm);
107  efiPrintf("cranking injection %s", getInjection_mode_e(engineConfiguration->crankingInjectionMode));
108 
109  efiPrintf("cranking timing %.2f", engineConfiguration->crankingTimingAngle);
110 
111  efiPrintf("=== ignition ===");
112 
113  efiPrintf("ignitionMode: %s/enabled=%s", getIgnition_mode_e(engineConfiguration->ignitionMode),
115  efiPrintf("timingMode: %s", getTiming_mode_e(engineConfiguration->timingMode));
116  if (engineConfiguration->timingMode == TM_FIXED) {
117  efiPrintf("fixedModeTiming: %d", (int) engineConfiguration->fixedModeTiming);
118  }
119 
120  efiPrintf("=== injection ===");
121  efiPrintf("injection %s enabled=%s", getInjection_mode_e(engineConfiguration->injectionMode),
123 
124  printOutputs();
125 
126  efiPrintf("map_avg=%s/wa=%s",
129 
130  efiPrintf("clutchUp@%s: %s", hwPortname(engineConfiguration->clutchUpPin),
132  efiPrintf("clutchDown@%s: %s", hwPortname(engineConfiguration->clutchDownPin),
134 
135  efiPrintf("digitalPotentiometerSpiDevice %d", engineConfiguration->digitalPotentiometerSpiDevice);
136 
137  for (int i = 0; i < DIGIPOT_COUNT; i++) {
138  efiPrintf("digitalPotentiometer CS%d %s", i,
140  }
141 
142 #if EFI_PROD_CODE
143  printSpiState();
144 #endif // EFI_PROD_CODE
145 }
const char * getIgnition_mode_e(ignition_mode_e value)
const char * getInjection_mode_e(injection_mode_e value)
const char * getEngine_load_mode_e(engine_load_mode_e value)
const char * getTiming_mode_e(timing_mode_e value)
const char * getTrigger_type_e(trigger_type_e value)
const char * getEngine_type_e(engine_type_e value)
int getGlobalConfigurationVersion(void) const
Definition: engine.cpp:315
EngineState engineState
Definition: engine.h:312
EngineRotationState * getEngineRotationState()
Definition: engine.cpp:592
void printSpiState()
Definition: settings.cpp:44
static void printOutputs()
Definition: settings.cpp:52

Referenced by doPrintConfiguration().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ printDateTime()

void printDateTime ( )

Definition at line 833 of file settings.cpp.

833  {
834 #if EFI_RTC
836 #else // EFI_RTC
837  efiPrintf("Cannot print time: RTC not supported");
838 #endif // EFI_RTC
839 }
void printRtcDateTime()
Definition: rtc_helper.cpp:42

Referenced by getValue(), and initRtc().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ printOutputs()

static void printOutputs ( )
static

Definition at line 52 of file settings.cpp.

52  {
53  efiPrintf("injectionPins: mode %s", getPin_output_mode_e(engineConfiguration->injectionPinMode));
54  for (size_t i = 0; i < engineConfiguration->cylindersCount; i++) {
56  efiPrintf("injection #%d @ %s", (1 + i), hwPortname(brainPin));
57  }
58 
59  efiPrintf("ignitionPins: mode %s", getPin_output_mode_e(engineConfiguration->ignitionPinMode));
60  for (size_t i = 0; i < engineConfiguration->cylindersCount; i++) {
62  efiPrintf("ignition #%d @ %s", (1 + i), hwPortname(brainPin));
63  }
64 
65  efiPrintf("idlePin: mode %s @ %s freq=%d", getPin_output_mode_e(engineConfiguration->idle.solenoidPinMode),
67  efiPrintf("malfunctionIndicator: %s mode=%s", hwPortname(engineConfiguration->malfunctionIndicatorPin),
69 
70  efiPrintf("fuelPumpPin: mode %s @ %s", getPin_output_mode_e(engineConfiguration->fuelPumpPinMode),
72 
73  efiPrintf("fanPin: mode %s @ %s", getPin_output_mode_e(engineConfiguration->fanPinMode),
75 
76  efiPrintf("mainRelay: mode %s @ %s", getPin_output_mode_e(engineConfiguration->mainRelayPinMode),
78 
79  efiPrintf("starterRelay: mode %s @ %s", getPin_output_mode_e(engineConfiguration->starterRelayDisablePinMode),
81 
82  efiPrintf("alternator field: mode %s @ %s",
85 }
const char * getPin_output_mode_e(pin_output_mode_e value)

Referenced by printConfiguration().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ printSpiState()

void printSpiState ( )

Definition at line 44 of file settings.cpp.

Referenced by printConfiguration(), and setSpiMode().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ printTPSInfo()

void printTPSInfo ( void  )

Definition at line 192 of file settings.cpp.

192  {
193  efiPrintf("pedal up %f / down %f",
196 
198 
199  if (!pps.Valid) {
200  efiPrintf("PPS not valid");
201  }
202 
205 }
virtual SensorResult get() const =0
static void printTpsSenser(const char *msg, SensorType sensor, int16_t min, int16_t max, adc_channel_e channel)
Definition: settings.cpp:175

Referenced by grabTPSIsClosed(), grabTPSIsWideOpen(), and initSettings().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ printTpsSenser()

static void printTpsSenser ( const char *  msg,
SensorType  sensor,
int16_t  min,
int16_t  max,
adc_channel_e  channel 
)
static

Definition at line 175 of file settings.cpp.

175  {
176  auto tps = Sensor::get(sensor);
177  auto raw = Sensor::getRaw(sensor);
178 
179  if (!tps.Valid) {
180  efiPrintf("TPS not valid");
181  }
182 
183  char pinNameBuffer[16];
184 
185  efiPrintf("tps min (closed) %d/max (full) %d v=%.2f @%s", min, max,
186  raw, getPinNameByAdcChannel(msg, channel, pinNameBuffer, sizeof(pinNameBuffer)));
187 
188 
189  efiPrintf("current 10bit=%d value=%.2f", convertVoltageTo10bitADC(raw), tps.value_or(0));
190 }
uint16_t channel
Definition: adc_inputs.h:105
virtual float getRaw() const
Definition: sensor.h:157
char * getPinNameByAdcChannel(const char *msg, adc_channel_e hwChannel, char *buffer, size_t bufferSize)
static Lps25Sensor sensor(device)
constexpr int convertVoltageTo10bitADC(float voltage)
Definition: tps.h:21

Referenced by printTPSInfo().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ readPin()

void readPin ( const char *  pinName)

Definition at line 332 of file settings.cpp.

332  {
334  if (pin == Gpio::Invalid) {
335  return;
336  }
337  int physicalValue = palReadPad(getHwPort("read", pin), getHwPin("read", pin));
338  efiPrintf("pin %s value %d", hwPortname(pin), physicalValue);
339 }

Referenced by benchSetPinValue(), and initSettings().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ scheduleStopEngine()

void scheduleStopEngine ( )

See 'LimpManager::isEngineStop' for code which actually stops engine

Definition at line 586 of file settings.cpp.

586  {
588 }
void doScheduleStopEngine()

Referenced by executeTSCommand(), initSettings(), and Engine::isInShutdownMode().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setAlgorithmInt()

static void setAlgorithmInt ( int  value)
static

this method is used in console - it also prints current configuration

Definition at line 216 of file settings.cpp.

216  {
219 }
void setAlgorithm(engine_load_mode_e algo)
engine_load_mode_e
Definition: rusefi_enums.h:148
Here is the call graph for this function:

◆ setAlternatorPin()

static void setAlternatorPin ( const char *  pinName)
static

Definition at line 381 of file settings.cpp.

381  {
383 }
static void setIndividualPin(const char *pinName, brain_pin_e *targetPin, const char *name)
Definition: settings.cpp:361

Referenced by initSettings().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setAnalogInputPin()

static void setAnalogInputPin ( const char *  sensorStr,
const char *  pinName 
)
static

Definition at line 420 of file settings.cpp.

420  {
422  if (pin == Gpio::Invalid) {
423  return;
424  }
426  if (channel == EFI_ADC_ERROR) {
427  efiPrintf("Error with [%s]", pinName);
428  return;
429  }
430  if (strEqual("map", sensorStr)) {
432  efiPrintf("setting MAP to %s/%d", pinName, channel);
433  } else if (strEqual("pps", sensorStr)) {
435  efiPrintf("setting PPS to %s/%d", pinName, channel);
436  } else if (strEqual("afr", sensorStr)) {
438  efiPrintf("setting AFR to %s/%d", pinName, channel);
439  } else if (strEqual("clt", sensorStr)) {
441  efiPrintf("setting CLT to %s/%d", pinName, channel);
442  } else if (strEqual("iat", sensorStr)) {
444  efiPrintf("setting IAT to %s/%d", pinName, channel);
445  } else if (strEqual("tps", sensorStr)) {
447  efiPrintf("setting TPS1 to %s/%d", pinName, channel);
448  } else if (strEqual("tps2", sensorStr)) {
450  efiPrintf("setting TPS2 to %s/%d", pinName, channel);
451  }
453 }
adc_channel_e getAdcChannel(brain_pin_e pin)
adc_channel_e

Referenced by initSettings().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setCrankingFuel()

static void setCrankingFuel ( float  timeMs)
static

Definition at line 236 of file settings.cpp.

236  {
238  efiPrintf("cranking_fuel %.2f", timeMs);
239 }

◆ setCrankingIACExtra()

static void setCrankingIACExtra ( float  percent)
static

Definition at line 231 of file settings.cpp.

231  {
233  efiPrintf("cranking_iac %.2f", percent);
234 }

◆ setCrankingInjectionMode()

static void setCrankingInjectionMode ( int  value)
static

Definition at line 253 of file settings.cpp.

Here is the call graph for this function:

◆ setCrankingRpm()

static void setCrankingRpm ( int  value)
static

Definition at line 208 of file settings.cpp.

208  {
211 }
Here is the call graph for this function:

◆ setCrankingTimingAngle()

static void setCrankingTimingAngle ( float  value)
static

Definition at line 247 of file settings.cpp.

Here is the call graph for this function:

◆ setDateTime()

void setDateTime ( const char *const  isoDateTime)

Definition at line 841 of file settings.cpp.

841  {
842 #if EFI_RTC
843  if (strlen(isoDateTime) >= 19 && isoDateTime[10] == 'T') {
844  efidatetime_t dateTime;
845  dateTime.year = atoi(isoDateTime);
846  dateTime.month = atoi(isoDateTime + 5);
847  dateTime.day = atoi(isoDateTime + 8);
848  dateTime.hour = atoi(isoDateTime + 11);
849  dateTime.minute = atoi(isoDateTime + 14);
850  dateTime.second = atoi(isoDateTime + 17);
851  if (dateTime.year != ATOI_ERROR_CODE &&
852  dateTime.month >= 1 && dateTime.month <= 12 &&
853  dateTime.day >= 1 && dateTime.day <= 31 &&
854  dateTime.hour <= 23 &&
855  dateTime.minute <= 59 &&
856  dateTime.second <= 59) {
857  // doesn't concern about leap years or seconds; ChibiOS doesn't support (added) leap seconds anyway
858  setRtcDateTime(&dateTime);
859  return;
860  }
861  }
862  efiPrintf("date_set Date parameter %s is wrong", isoDateTime);
863 #else // EFI_RTC
864  efiPrintf("Cannot set time: RTC not supported");
865 #endif // EFI_RTC
866 }
void setRtcDateTime(efidatetime_t const *const dateTime)
Definition: rtc_helper.cpp:50
uint8_t minute
Definition: rusefi_types.h:54
uint8_t hour
Definition: rusefi_types.h:53
uint8_t second
Definition: rusefi_types.h:55
uint32_t year
Definition: rusefi_types.h:50
uint8_t month
Definition: rusefi_types.h:51

Referenced by setValue().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setDebugMode()

static void setDebugMode ( int  value)
static

Definition at line 285 of file settings.cpp.

◆ setEngineType()

void setEngineType ( int  value,
bool  isWriteToFlash 
)

Definition at line 874 of file settings.cpp.

874  {
875  {
876 #if EFI_PROD_CODE
877  chibios_rt::CriticalSectionLocker csl;
878 #endif // EFI_PROD_CODE
879 
883 
884 #if EFI_CONFIGURATION_STORAGE
885  if (isWriteToFlash) {
886  writeToFlashNow();
887  }
888 #endif /* EFI_CONFIGURATION_STORAGE */
889  }
891 #if EFI_ENGINE_CONTROL && ! EFI_UNIT_TEST
893 #endif // ! EFI_UNIT_TEST
894 }
void resetEngineSnifferIfInTestMode()
Definition: engine.cpp:56
void resetConfigurationExt(configuration_callback_t boardCallback, engine_type_e engineType)
engine_type_e
Definition: engine_types.h:18
void writeToFlashNow()
Definition: flash_main.cpp:135

Referenced by executeTSCommand(), processCanQcBenchTest(), and setEngineTypeAndSave().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setEngineTypeAndSave()

void setEngineTypeAndSave ( int  value)

Definition at line 870 of file settings.cpp.

870  {
871  setEngineType(value, true);
872 }
void setEngineType(int value, bool isWriteToFlash)
Definition: settings.cpp:874
Here is the call graph for this function:

◆ setFiringOrder()

static void setFiringOrder ( int  value)
static

Definition at line 221 of file settings.cpp.

Here is the call graph for this function:

◆ setFixedModeTiming()

static void setFixedModeTiming ( int  value)
static

Definition at line 152 of file settings.cpp.

Here is the call graph for this function:

◆ setGlobalTriggerAngleOffset()

static void setGlobalTriggerAngleOffset ( float  value)
static

Definition at line 241 of file settings.cpp.

Here is the call graph for this function:

◆ setIdlePin()

static void setIdlePin ( const char *  pinName)
static

Definition at line 377 of file settings.cpp.

377  {
379 }

Referenced by initSettings().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setIdleSolenoidFrequency()

static void setIdleSolenoidFrequency ( int  value)
static

Definition at line 164 of file settings.cpp.

Here is the call graph for this function:

◆ setIgnitionMode()

static void setIgnitionMode ( int  value)
static

Definition at line 265 of file settings.cpp.

265  {
266 #if EFI_ENGINE_CONTROL
270 #endif // EFI_ENGINE_CONTROL
271 }
void prepareOutputSignals()
ignition_mode_e
Definition: rusefi_enums.h:309

Referenced by setIndividualCoilsIgnition().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setIgnitionPin()

static void setIgnitionPin ( const char *  indexStr,
const char *  pinName 
)
static

For example: set_ignition_pin 1 PD7 todo: this method counts index from 1 while at least 'set_trigger_input_pin' counts from 0. todo: make things consistent

Definition at line 317 of file settings.cpp.

317  {
318  int index = atoi(indexStr) - 1; // convert from human index into software index
319  if (index < 0 || index >= MAX_CYLINDER_COUNT)
320  return;
322  if (pin == Gpio::Invalid) {
323  return;
324  }
325  efiPrintf("setting ignition pin[%d] to %s please save&restart", index, hwPortname(pin));
328 }

Referenced by initSettings().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setIndividualCoilsIgnition()

static void setIndividualCoilsIgnition ( )
static

Definition at line 273 of file settings.cpp.

273  {
274  setIgnitionMode((int)IM_INDIVIDUAL_COILS);
275 }
static void setIgnitionMode(int value)
Definition: settings.cpp:265

Referenced by initSettings().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setIndividualPin()

static void setIndividualPin ( const char *  pinName,
brain_pin_e targetPin,
const char *  name 
)
static

Definition at line 361 of file settings.cpp.

361  {
363  if (pin == Gpio::Invalid) {
364  return;
365  }
366  efiPrintf("setting %s pin to %s please save&restart", name, hwPortname(pin));
367  *targetPin = pin;
369 }

Referenced by setAlternatorPin(), setIdlePin(), and setVssPin().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setInjectionMode()

static void setInjectionMode ( int  value)
static

Definition at line 259 of file settings.cpp.

Here is the call graph for this function:

◆ setLogicInputPin()

static void setLogicInputPin ( const char *  indexStr,
const char *  pinName 
)
static

Definition at line 456 of file settings.cpp.

456  {
457  int index = atoi(indexStr);
458  if (index < 0 || index > 2) {
459  return;
460  }
462  if (pin == Gpio::Invalid) {
463  return;
464  }
465  efiPrintf("setting logic input pin[%d] to %s please save&restart", index, hwPortname(pin));
468 }
brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]

Referenced by initSettings().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setRpmHardLimit()

static void setRpmHardLimit ( int  value)
static

Definition at line 226 of file settings.cpp.

226  {
229 }
Here is the call graph for this function:

◆ setScriptCurve1Value()

static void setScriptCurve1Value ( float  value)
static

Definition at line 625 of file settings.cpp.

625  {
626  setLinearCurve(config->scriptCurve1, value, value, 1);
627 }
persistent_config_s * config
void setLinearCurve(TValue(&array)[TSize], float from, float to, float precision=0.01f)
Definition: table_helper.h:139
Here is the call graph for this function:

◆ setScriptCurve2Value()

static void setScriptCurve2Value ( float  value)
static

Definition at line 629 of file settings.cpp.

629  {
630  setLinearCurve(config->scriptCurve2, value, value, 1);
631 }
Here is the call graph for this function:

◆ setSensorChartMode()

static void setSensorChartMode ( int  value)
static

Definition at line 169 of file settings.cpp.

Here is the call graph for this function:

◆ setSpiMode()

static void setSpiMode ( int  index,
bool  mode 
)
static

Definition at line 472 of file settings.cpp.

472  {
473  switch (index) {
474  case 1:
476  break;
477  case 2:
479  break;
480  case 3:
482  break;
483  default:
484  efiPrintf("invalid spi index %d", index);
485  return;
486  }
487  printSpiState();
488 }

Referenced by disableSpi(), and enableSpi().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setTimingMode()

static void setTimingMode ( int  value)
static

Definition at line 158 of file settings.cpp.

Here is the call graph for this function:

◆ setTriggerInputPin()

static void setTriggerInputPin ( const char *  indexStr,
const char *  pinName 
)
static

For example: set_trigger_input_pin 0 PA5 todo: this method counts index from 0 while at least 'set_ignition_pin' counts from 1. todo: make things consistent

Definition at line 391 of file settings.cpp.

391  {
392  int index = atoi(indexStr);
393  if (index < 0 || index > 2)
394  return;
396  if (pin == Gpio::Invalid) {
397  return;
398  }
399  efiPrintf("setting trigger pin[%d] to %s please save&restart", index, hwPortname(pin));
402 }
brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]

Referenced by initSettings().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setTriggerSimulatorPin()

static void setTriggerSimulatorPin ( const char *  indexStr,
const char *  pinName 
)
static

Definition at line 404 of file settings.cpp.

404  {
405  int index = atoi(indexStr);
406  if (index < 0 || index >= TRIGGER_SIMULATOR_PIN_COUNT)
407  return;
409  if (pin == Gpio::Invalid) {
410  return;
411  }
412  efiPrintf("setting trigger simulator pin[%d] to %s please save&restart", index, hwPortname(pin));
415 }

Referenced by initSettings().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setTriggerType()

static void setTriggerType ( int  value)
static

Definition at line 277 of file settings.cpp.

277  {
281  efiPrintf("Do you need to also invoke set operation_mode X?");
283 }
trigger_type_e
Definition: engine_types.h:286
Here is the call graph for this function:

◆ setValue()

static void setValue ( const char *  paramStr,
const char *  valueStr 
)
static

Definition at line 693 of file settings.cpp.

693  {
694  float valueF = atoff(valueStr);
695  int valueI = atoi(valueStr);
696 
697  const command_f_s *currentF = &commandsF[0];
698  while (currentF < commandsF + sizeof(commandsF)/sizeof(commandsF[0])) {
699  if (strEqualCaseInsensitive(paramStr, currentF->token)) {
700  currentF->callback(valueF);
701  return;
702  }
703  currentF++;
704  }
705 
706  const command_i_s *currentI = &commandsI[0];
707  while (currentI < commandsI + sizeof(commandsI)/sizeof(commandsI[0])) {
708  if (strEqualCaseInsensitive(paramStr, currentI->token)) {
709  currentI->callback(valueI);
710  return;
711  }
712  currentI++;
713  }
714 
715 
716  if (strEqualCaseInsensitive(paramStr, "warning_period")) {
718  } else if (strEqualCaseInsensitive(paramStr, "dwell")) {
719  setConstantDwell(valueF);
720  } else if (strEqualCaseInsensitive(paramStr, CMD_ENGINESNIFFERRPMTHRESHOLD)) {
722 #if EFI_EMULATE_POSITION_SENSORS
723  } else if (strEqualCaseInsensitive(paramStr, CMD_RPM)) {
724  setTriggerEmulatorRPM(valueI);
725 #endif // EFI_EMULATE_POSITION_SENSORS
726  } else if (strEqualCaseInsensitive(paramStr, "mc33_hvolt")) {
728  } else if (strEqualCaseInsensitive(paramStr, "mc33_i_peak")) {
730  } else if (strEqualCaseInsensitive(paramStr, "mc33_i_hold")) {
732  } else if (strEqualCaseInsensitive(paramStr, "mc33_t_max_boost")) {
734  } else if (strEqualCaseInsensitive(paramStr, "mc33_t_peak_off")) {
736  } else if (strEqualCaseInsensitive(paramStr, "vvt_offset")) {
737  engineConfiguration->vvtOffsets[0] = valueF;
738  } else if (strEqualCaseInsensitive(paramStr, "vvt_mode")) {
739  engineConfiguration->vvtMode[0] = (vvt_mode_e)valueI;
740  } else if (strEqualCaseInsensitive(paramStr, "wwaeTau")) {
741  engineConfiguration->wwaeTau = valueF;
742  } else if (strEqualCaseInsensitive(paramStr, "wwaeBeta")) {
743  engineConfiguration->wwaeBeta = valueF;
744  } else if (strEqualCaseInsensitive(paramStr, "benchTestOffTime")) {
746  } else if (strEqualCaseInsensitive(paramStr, "benchTestCount")) {
748  } else if (strEqualCaseInsensitive(paramStr, "cranking_dwell")) {
750 #if EFI_PROD_CODE
751  } else if (strEqualCaseInsensitive(paramStr, CMD_VSS_PIN)) {
752  setVssPin(valueStr);
753 #endif // EFI_PROD_CODE
754  } else if (strEqualCaseInsensitive(paramStr, "targetvbatt")) {
756  } else if (strEqualCaseInsensitive(paramStr, CMD_DATE)) {
757  // rusEfi console invokes this method with timestamp in local timezone
758  setDateTime(valueStr);
759  }
760 
761  bool isGoodName = setConfigValueByName(paramStr, valueF);
762  if (isGoodName) {
763  efiPrintf("Settings: applying [%s][%f]", paramStr, valueF);
764  }
765 
767 }
void setConstantDwell(floatms_t dwellMs)
Sets the same dwell time across the whole getRpm() range set dwell X.
vvt_mode_e
Definition: rusefi_enums.h:124
const command_i_s commandsI[]
Definition: settings.cpp:655
const command_f_s commandsF[]
Definition: settings.cpp:643
static void setVssPin(const char *pinName)
Definition: settings.cpp:372
void setDateTime(const char *const isoDateTime)
Definition: settings.cpp:841
scaled_channel< int16_t, 10, 1 > alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]
constexpr void setTable(TElement(&dest)[N][M], const VElement value)
Definition: table_helper.h:158
void setTriggerEmulatorRPM(int rpm)
bool setConfigValueByName(const char *name, float value)

Referenced by initSettings().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setVssPin()

static void setVssPin ( const char *  pinName)
static

Definition at line 372 of file settings.cpp.

Referenced by setValue().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setWholeTimingMap()

static void setWholeTimingMap ( float  value)
static

Definition at line 289 of file settings.cpp.

289  {
290  setTable(config->ignitionTable, value);
291 }
scaled_channel< int16_t, 10, 1 > ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]

Referenced by setWholeTimingMapCmd().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setWholeTimingMapCmd()

static void setWholeTimingMapCmd ( float  value)
static

Definition at line 293 of file settings.cpp.

293  {
294  efiPrintf("Setting whole timing advance map to %.2f", value);
295  setWholeTimingMap(value);
297 }
static void setWholeTimingMap(float value)
Definition: settings.cpp:289

Referenced by initSettings().

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ commandsF

const command_f_s commandsF[]
Initial value:
= {
#if EFI_ENGINE_CONTROL
{"global_trigger_offset_angle", setGlobalTriggerAngleOffset},
{"cranking_fuel", setCrankingFuel},
{"cranking_iac", setCrankingIACExtra},
{"cranking_timing_angle", setCrankingTimingAngle},
{"flat_injector_lag", setFlatInjectorLag},
#endif
{"script_curve_1_value", setScriptCurve1Value},
{"script_curve_2_value", setScriptCurve2Value},
}
void setFlatInjectorLag(float value)
static void setCrankingIACExtra(float percent)
Definition: settings.cpp:231
static void setScriptCurve1Value(float value)
Definition: settings.cpp:625
static void setCrankingTimingAngle(float value)
Definition: settings.cpp:247
static void setScriptCurve2Value(float value)
Definition: settings.cpp:629
static void setCrankingFuel(float timeMs)
Definition: settings.cpp:236
static void setGlobalTriggerAngleOffset(float value)
Definition: settings.cpp:241

Definition at line 643 of file settings.cpp.

Referenced by setValue().

◆ commandsI

const command_i_s commandsI[]

Definition at line 655 of file settings.cpp.

Referenced by setValue().

◆ verboseRxCan

bool verboseRxCan = false

Definition at line 490 of file settings.cpp.

Referenced by enableOrDisable(), and processCanRxMessage().

◆ waveChart

WaveChart waveChart
extern

Definition at line 33 of file trigger_central.cpp.

◆ waveChartUsedSize

int waveChartUsedSize
extern

Definition at line 60 of file engine_sniffer.cpp.

Referenced by WaveChart::publish().

Go to the source code of this file.