The Big Refactoring of 2019: DECLARE_ENGINE_PARAMETER_SUFFIX consistency and simplification #657

This commit is contained in:
rusefi 2019-01-09 22:16:30 -05:00
parent 5f8d8bd8da
commit 57993ff1b4
18 changed files with 120 additions and 116 deletions

View File

@ -141,7 +141,7 @@ void printTsStats(void) {
scheduleMsg(&tsLogger, "TS RX on %s", hwPortname(engineConfiguration->binarySerialRxPin));
scheduleMsg(&tsLogger, "TS TX on %s @%d", hwPortname(engineConfiguration->binarySerialTxPin),
boardConfiguration->tunerStudioSerialSpeed);
CONFIGB(tunerStudioSerialSpeed));
}
#endif /* EFI_PROD_CODE */
@ -153,7 +153,7 @@ void printTsStats(void) {
// int fuelMapOffset = (int) (&engineConfiguration->fuelTable) - (int) engineConfiguration;
// scheduleMsg(logger, "fuelTable %d", fuelMapOffset);
//
// int offset = (int) (&boardConfiguration->hip9011Gain) - (int) engineConfiguration;
// int offset = (int) (&CONFIGB(hip9011Gain)) - (int) engineConfiguration;
// scheduleMsg(&tsLogger, "hip9011Gain %d", offset);
//
// offset = (int) (&engineConfiguration->crankingCycleBins) - (int) engineConfiguration;
@ -164,7 +164,7 @@ void printTsStats(void) {
}
static void setTsSpeed(int value) {
boardConfiguration->tunerStudioSerialSpeed = value;
CONFIGB(tunerStudioSerialSpeed) = value;
printTsStats();
}

View File

@ -90,7 +90,7 @@ void startTsPort(ts_channel_s *tsChannel) {
} else
#endif
{
if (boardConfiguration->useSerialPort) {
if (CONFIGB(useSerialPort)) {
print("TunerStudio over USART");
efiSetPadMode("tunerstudio rx", engineConfiguration->binarySerialRxPin, PAL_MODE_ALTERNATE(TS_SERIAL_AF));
@ -102,7 +102,7 @@ void startTsPort(ts_channel_s *tsChannel) {
iqObjectInit(&tsUartDma.fifoRxQueue, tsUartDma.buffer, sizeof(tsUartDma.buffer), NULL, NULL);
// start DMA driver
tsDmaUartConfig.speed = boardConfiguration->tunerStudioSerialSpeed;
tsDmaUartConfig.speed = CONFIGB(tunerStudioSerialSpeed);
uartStart(TS_DMA_UART_DEVICE, &tsDmaUartConfig);
// start continuous DMA transfer using our circular buffer
@ -110,7 +110,7 @@ void startTsPort(ts_channel_s *tsChannel) {
uartStartReceive(TS_DMA_UART_DEVICE, sizeof(tsUartDma.dmaBuffer), tsUartDma.dmaBuffer);
#else
print("Using Serial mode");
tsSerialConfig.speed = boardConfiguration->tunerStudioSerialSpeed;
tsSerialConfig.speed = CONFIGB(tunerStudioSerialSpeed);
sdStart(TS_SERIAL_UART_DEVICE, &tsSerialConfig);
@ -136,7 +136,7 @@ bool stopTsPort(ts_channel_s *tsChannel) {
} else
#endif
{
if (boardConfiguration->useSerialPort) {
if (CONFIGB(useSerialPort)) {
// todo: disable Rx/Tx pads?
#if TS_UART_DMA_MODE
uartStop(TS_DMA_UART_DEVICE);

View File

@ -260,7 +260,7 @@ float getFuelCutOffCorrection(efitick_t nowNt, int rpm DECLARE_ENGINE_PARAMETER_
float fuelCorr = 1.0f;
// coasting fuel cut-off correction
if (boardConfiguration->coastingFuelCutEnabled) {
if (CONFIGB(coastingFuelCutEnabled)) {
percent_t tpsPos = getTPS(PASS_ENGINE_PARAMETER_SIGNATURE);
float map = getMap();

View File

@ -253,7 +253,7 @@ bool LECalculator::processElement(LEElement *element DECLARE_ENGINE_PARAMETER_SU
float humanIndex = pop(LE_METHOD_FSIO_SETTING);
int index = (int) humanIndex - 1;
if (index >= 0 && index < FSIO_COMMAND_COUNT) {
push(element->action, boardConfiguration->fsio_setting[index]);
push(element->action, CONFIGB(fsio_setting)[index]);
} else {
push(element->action, NAN);
}

View File

@ -181,7 +181,7 @@ static void setFsioDigitalInputPin(const char *indexStr, const char *pinName) {
scheduleMsg(logger, "invalid pin name [%s]", pinName);
return;
}
boardConfiguration->fsioDigitalInputs[index] = pin;
CONFIGB(fsioDigitalInputs)[index] = pin;
scheduleMsg(logger, "FSIO digital input pin #%d [%s]", (index + 1), hwPortname(pin));
}
@ -215,7 +215,7 @@ static void setFsioOutputPin(const char *indexStr, const char *pinName) {
scheduleMsg(logger, "invalid pin name [%s]", pinName);
return;
}
boardConfiguration->fsioOutputPins[index] = pin;
CONFIGB(fsioOutputPins)[index] = pin;
scheduleMsg(logger, "FSIO output pin #%d [%s]", (index + 1), hwPortname(pin));
scheduleMsg(logger, "please writeconfig and reboot for pin to take effect");
showFsioInfo();
@ -228,13 +228,13 @@ static void setFsioOutputPin(const char *indexStr, const char *pinName) {
* index is between zero and LE_COMMAND_LENGTH-1
*/
void setFsioExt(int index, brain_pin_e pin, const char * formula, int pwmFrequency DECLARE_ENGINE_PARAMETER_SUFFIX) {
boardConfiguration->fsioOutputPins[index] = pin;
CONFIGB(fsioOutputPins)[index] = pin;
int len = strlen(formula);
if (len >= LE_COMMAND_LENGTH) {
return;
}
strcpy(config->fsioFormulas[index], formula);
boardConfiguration->fsioFrequency[index] = pwmFrequency;
CONFIGB(fsioFrequency)[index] = pwmFrequency;
}
void setFsio(int index, brain_pin_e pin, const char * exp DECLARE_ENGINE_PARAMETER_SUFFIX) {
@ -244,7 +244,7 @@ void setFsio(int index, brain_pin_e pin, const char * exp DECLARE_ENGINE_PARAMET
void applyFsioConfiguration(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
userPool.reset();
for (int i = 0; i < FSIO_COMMAND_COUNT; i++) {
brain_pin_e brainPin = boardConfiguration->fsioOutputPins[i];
brain_pin_e brainPin = CONFIGB(fsioOutputPins)[i];
if (brainPin != GPIO_UNASSIGNED) {
const char *formula = config->fsioFormulas[i];
@ -310,7 +310,7 @@ static const char *getGpioPinName(int index) {
float getFsioOutputValue(int index DECLARE_ENGINE_PARAMETER_SUFFIX) {
if (fsioLogics[index] == NULL) {
warning(CUSTOM_NO_FSIO, "no FSIO for #%d %s", index + 1, hwPortname(boardConfiguration->fsioOutputPins[index]));
warning(CUSTOM_NO_FSIO, "no FSIO for #%d %s", index + 1, hwPortname(CONFIGB(fsioOutputPins)[index]));
return NAN;
} else {
return calc.getValue2(engine->fsioLastValue[index], fsioLogics[index] PASS_ENGINE_PARAMETER_SUFFIX);
@ -321,12 +321,12 @@ float getFsioOutputValue(int index DECLARE_ENGINE_PARAMETER_SUFFIX) {
* @param index from zero for (FSIO_COMMAND_COUNT - 1)
*/
static void handleFsio(int index DECLARE_ENGINE_PARAMETER_SUFFIX) {
if (boardConfiguration->fsioOutputPins[index] == GPIO_UNASSIGNED) {
if (CONFIGB(fsioOutputPins)[index] == GPIO_UNASSIGNED) {
engine->fsioLastValue[index] = NAN;
return;
}
bool isPwmMode = boardConfiguration->fsioFrequency[index] != NO_PWM;
bool isPwmMode = CONFIGB(fsioFrequency)[index] != NO_PWM;
float fvalue = getFsioOutputValue(index PASS_ENGINE_PARAMETER_SUFFIX);
engine->fsioLastValue[index] = fvalue;
@ -402,11 +402,11 @@ static void setFsioFrequency(int index, int frequency) {
scheduleMsg(logger, "invalid FSIO index: %d", index);
return;
}
boardConfiguration->fsioFrequency[index] = frequency;
CONFIGB(fsioFrequency)[index] = frequency;
if (frequency == 0) {
scheduleMsg(logger, "FSIO output #%d@%s set to on/off mode", index + 1, hwPortname(boardConfiguration->fsioOutputPins[index]));
scheduleMsg(logger, "FSIO output #%d@%s set to on/off mode", index + 1, hwPortname(CONFIGB(fsioOutputPins)[index]));
} else {
scheduleMsg(logger, "Setting FSIO frequency %dHz on #%d@%s", frequency, index + 1, hwPortname(boardConfiguration->fsioOutputPins[index]));
scheduleMsg(logger, "Setting FSIO frequency %dHz on #%d@%s", frequency, index + 1, hwPortname(CONFIGB(fsioOutputPins)[index]));
}
}
#endif /* EFI_PROD_CODE */
@ -441,19 +441,19 @@ void runFsio(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
}
#if EFI_FUEL_PUMP || defined(__DOXYGEN__)
if (boardConfiguration->fuelPumpPin != GPIO_UNASSIGNED) {
if (CONFIGB(fuelPumpPin) != GPIO_UNASSIGNED) {
setPinState("pump", &enginePins.fuelPumpRelay, fuelPumpLogic PASS_ENGINE_PARAMETER_SUFFIX);
}
#endif /* EFI_FUEL_PUMP */
#if EFI_MAIN_RELAY_CONTROL || defined(__DOXYGEN__)
if (boardConfiguration->mainRelayPin != GPIO_UNASSIGNED)
if (CONFIGB(mainRelayPin) != GPIO_UNASSIGNED)
setPinState("main_relay", &enginePins.mainRelay, mainRelayLogic PASS_ENGINE_PARAMETER_SUFFIX);
#else /* EFI_MAIN_RELAY_CONTROL */
/**
* main relay is always on if ECU is on, that's a good enough initial implementation
*/
if (boardConfiguration->mainRelayPin != GPIO_UNASSIGNED)
if (CONFIGB(mainRelayPin) != GPIO_UNASSIGNED)
enginePins.mainRelay.setValue(true);
#endif /* EFI_MAIN_RELAY_CONTROL */
@ -464,15 +464,15 @@ void runFsio(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
*/
enginePins.o2heater.setValue(engine->rpmCalculator.isRunning(PASS_ENGINE_PARAMETER_SIGNATURE));
if (boardConfiguration->acRelayPin != GPIO_UNASSIGNED) {
if (CONFIGB(acRelayPin) != GPIO_UNASSIGNED) {
setPinState("A/C", &enginePins.acRelay, acRelayLogic PASS_ENGINE_PARAMETER_SUFFIX);
}
// if (boardConfiguration->alternatorControlPin != GPIO_UNASSIGNED) {
// if (CONFIGB(alternatorControlPin) != GPIO_UNASSIGNED) {
// setPinState("alternator", &enginePins.alternatorField, alternatorLogic, engine PASS_ENGINE_PARAMETER_SUFFIX);
// }
if (boardConfiguration->fanPin != GPIO_UNASSIGNED) {
if (CONFIGB(fanPin) != GPIO_UNASSIGNED) {
setPinState("fan", &enginePins.fanRelay, radiatorFanLogic PASS_ENGINE_PARAMETER_SUFFIX);
}
@ -559,20 +559,20 @@ static void showFsioInfo(void) {
* is the fact that the target audience is more software developers
*/
scheduleMsg(logger, "FSIO #%d [%s] at %s@%dHz value=%.2f", (i + 1), exp,
hwPortname(boardConfiguration->fsioOutputPins[i]), boardConfiguration->fsioFrequency[i],
hwPortname(CONFIGB(fsioOutputPins)[i]), CONFIGB(fsioFrequency)[i],
engine->fsioLastValue[i]);
// scheduleMsg(logger, "user-defined #%d value=%.2f", i, engine->engineConfigurationPtr2->fsioLastValue[i]);
showFsio(NULL, fsioLogics[i]);
}
}
for (int i = 0; i < FSIO_COMMAND_COUNT; i++) {
float v = boardConfiguration->fsio_setting[i];
float v = CONFIGB(fsio_setting)[i];
if (!cisnan(v)) {
scheduleMsg(logger, "user property #%d: %.2f", i + 1, v);
}
}
for (int i = 0; i < FSIO_COMMAND_COUNT; i++) {
brain_pin_e inputPin = boardConfiguration->fsioDigitalInputs[i];
brain_pin_e inputPin = CONFIGB(fsioDigitalInputs)[i];
if (inputPin != GPIO_UNASSIGNED) {
scheduleMsg(logger, "FSIO digital input #%d: %s", i, hwPortname(inputPin));
}
@ -646,18 +646,18 @@ void initFsioImpl(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX) {
alternatorLogic = sysPool.parseExpression(ALTERNATOR_LOGIC);
#if EFI_MAIN_RELAY_CONTROL || defined(__DOXYGEN__)
if (boardConfiguration->mainRelayPin != GPIO_UNASSIGNED)
if (CONFIGB(mainRelayPin) != GPIO_UNASSIGNED)
mainRelayLogic = sysPool.parseExpression(MAIN_RELAY_LOGIC);
#endif /* EFI_MAIN_RELAY_CONTROL */
#if EFI_PROD_CODE || defined(__DOXYGEN__)
for (int i = 0; i < FSIO_COMMAND_COUNT; i++) {
brain_pin_e brainPin = boardConfiguration->fsioOutputPins[i];
brain_pin_e brainPin = CONFIGB(fsioOutputPins)[i];
if (brainPin != GPIO_UNASSIGNED) {
int frequency = boardConfiguration->fsioFrequency[i];
int frequency = CONFIGB(fsioFrequency)[i];
if (frequency == 0) {
enginePins.fsioOutputs[i].initPin(getGpioPinName(i), boardConfiguration->fsioOutputPins[i], &DEFAULT_OUTPUT);
enginePins.fsioOutputs[i].initPin(getGpioPinName(i), CONFIGB(fsioOutputPins)[i], &DEFAULT_OUTPUT);
} else {
startSimplePwmExt(&fsioPwm[i], "FSIOpwm",
&engine->executor,
@ -667,7 +667,7 @@ void initFsioImpl(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX) {
}
for (int i = 0; i < FSIO_COMMAND_COUNT; i++) {
brain_pin_e inputPin = boardConfiguration->fsioDigitalInputs[i];
brain_pin_e inputPin = CONFIGB(fsioDigitalInputs)[i];
if (inputPin != GPIO_UNASSIGNED) {
efiSetPadMode("FSIO input", inputPin, getInputMode(engineConfiguration->fsioInputModes[i]));

View File

@ -158,7 +158,7 @@ static msg_t etbThread(void *arg) {
etbPwmUp.setSimplePwmDutyCycle(PERCENT_TO_DUTY(currentEtbDuty));
if (boardConfiguration->etbDirectionPin2 != GPIO_UNASSIGNED) {
if (CONFIGB(etbDirectionPin2) != GPIO_UNASSIGNED) {
bool needEtbBraking = absF(targetPosition - actualThrottlePosition) < 3;
if (needEtbBraking != wasEtbBraking) {
scheduleMsg(&logger, "need ETB braking: %d", needEtbBraking);
@ -212,10 +212,10 @@ static void showEthInfo(void) {
scheduleMsg(&logger, "TPS=%.2f", getTPS());
scheduleMsg(&logger, "etbControlPin1=%s duty=%.2f freq=%d",
hwPortname(boardConfiguration->etbControlPin1),
hwPortname(CONFIGB(etbControlPin1)),
currentEtbDuty,
engineConfiguration->etbFreq);
scheduleMsg(&logger, "close dir=%s", hwPortname(boardConfiguration->etbDirectionPin2));
scheduleMsg(&logger, "close dir=%s", hwPortname(CONFIGB(etbDirectionPin2)));
pid.showPidStatus(&logger, "ETB");
}
@ -252,7 +252,7 @@ void setDefaultEtbParameters(void) {
engineConfiguration->etb.period = 100;
engineConfiguration->etbFreq = 300;
// boardConfiguration->etbControlPin1 = GPIOE_4; // test board, matched default fuel pump relay
// CONFIGB(etbControlPin1) = GPIOE_4; // test board, matched default fuel pump relay
}
bool isETBRestartNeeded(void) {
@ -283,21 +283,21 @@ void startETBPins(void) {
// this line used for PWM
startSimplePwmExt(&etbPwmUp, "etb1",
&engine->executor,
boardConfiguration->etbControlPin1,
CONFIGB(etbControlPin1),
&enginePins.etbOutput1,
freq,
0.80,
applyPinState);
/*
startSimplePwmExt(&etbPwmDown, "etb2",
boardConfiguration->etbControlPin2,
CONFIGB(etbControlPin2),
&enginePins.etbOutput2,
freq,
0.80,
applyPinState);
outputDirectionOpen.initPin("etb dir open", boardConfiguration->etbDirectionPin1);
outputDirectionOpen.initPin("etb dir open", CONFIGB(etbDirectionPin1));
*/
outputDirectionClose.initPin("etb dir close", boardConfiguration->etbDirectionPin2);
outputDirectionClose.initPin("etb dir close", CONFIGB(etbDirectionPin2));
}
static void setTempOutput(float value) {

View File

@ -106,7 +106,7 @@ static void testMil(void) {
}
bool isMilEnabled() {
return boardConfiguration->malfunctionIndicatorPin != GPIO_UNASSIGNED;
return CONFIGB(malfunctionIndicatorPin) != GPIO_UNASSIGNED;
}
void initMalfunctionIndicator(void) {

View File

@ -93,7 +93,7 @@ static efitick_t previousVvtCamDuration = 0;
void hwHandleVvtCamSignal(trigger_value_e front) {
addEngineSnifferEvent(VVT_NAME, front == TV_RISE ? WC_UP : WC_DOWN);
if (boardConfiguration->vvtCamSensorUseRise ^ (front != TV_FALL)) {
if (CONFIGB(vvtCamSensorUseRise) ^ (front != TV_FALL)) {
return;
}
@ -119,7 +119,7 @@ void hwHandleVvtCamSignal(trigger_value_e front) {
if (engineConfiguration->isPrintTriggerSynchDetails) {
scheduleMsg(logger, "vvt ratio %.2f", ratio);
}
if (ratio < boardConfiguration->nb2ratioFrom || ratio > boardConfiguration->nb2ratioTo) {
if (ratio < CONFIGB(nb2ratioFrom) || ratio > CONFIGB(nb2ratioTo)) {
return;
}
if (engineConfiguration->isPrintTriggerSynchDetails) {
@ -184,7 +184,7 @@ void hwHandleVvtCamSignal(trigger_value_e front) {
void hwHandleShaftSignal(trigger_event_e signal) {
// for effective noise filtering, we need both signal edges,
// so we pass them to handleShaftSignal() and defer this test
if (!boardConfiguration->useNoiselessTriggerDecoder) {
if (!CONFIGB(useNoiselessTriggerDecoder)) {
if (!isUsefulSignal(signal, engineConfiguration)) {
return;
}
@ -329,7 +329,7 @@ void TriggerCentral::handleShaftSignal(trigger_event_e signal DECLARE_ENGINE_PAR
nowNt = getTimeNowNt();
// This code gathers some statistics on signals and compares accumulated periods to filter interference
if (boardConfiguration->useNoiselessTriggerDecoder) {
if (CONFIGB(useNoiselessTriggerDecoder)) {
if (!noiseFilter(nowNt, signal PASS_ENGINE_PARAMETER_SUFFIX)) {
return;
}
@ -584,27 +584,27 @@ void triggerInfo(void) {
}
scheduleMsg(logger, "primary trigger input: %s", hwPortname(boardConfiguration->triggerInputPins[0]));
scheduleMsg(logger, "primary trigger input: %s", hwPortname(CONFIGB(triggerInputPins)[0]));
scheduleMsg(logger, "primary trigger simulator: %s %s freq=%d",
hwPortname(boardConfiguration->triggerSimulatorPins[0]),
getPin_output_mode_e(boardConfiguration->triggerSimulatorPinModes[0]),
boardConfiguration->triggerSimulatorFrequency);
hwPortname(CONFIGB(triggerSimulatorPins)[0]),
getPin_output_mode_e(CONFIGB(triggerSimulatorPinModes)[0]),
CONFIGB(triggerSimulatorFrequency));
if (ts->needSecondTriggerInput) {
scheduleMsg(logger, "secondary trigger input: %s", hwPortname(boardConfiguration->triggerInputPins[1]));
scheduleMsg(logger, "secondary trigger input: %s", hwPortname(CONFIGB(triggerInputPins)[1]));
#if EFI_EMULATE_POSITION_SENSORS || defined(__DOXYGEN__)
scheduleMsg(logger, "secondary trigger simulator: %s %s phase=%d",
hwPortname(boardConfiguration->triggerSimulatorPins[1]),
getPin_output_mode_e(boardConfiguration->triggerSimulatorPinModes[1]), triggerSignal.safe.phaseIndex);
hwPortname(CONFIGB(triggerSimulatorPins)[1]),
getPin_output_mode_e(CONFIGB(triggerSimulatorPinModes)[1]), triggerSignal.safe.phaseIndex);
#endif /* EFI_EMULATE_POSITION_SENSORS */
}
// scheduleMsg(logger, "3rd trigger simulator: %s %s", hwPortname(boardConfiguration->triggerSimulatorPins[2]),
// getPin_output_mode_e(boardConfiguration->triggerSimulatorPinModes[2]));
// scheduleMsg(logger, "3rd trigger simulator: %s %s", hwPortname(CONFIGB(triggerSimulatorPins)[2]),
// getPin_output_mode_e(CONFIGB(triggerSimulatorPinModes)[2]));
scheduleMsg(logger, "trigger error extra LED: %s %s", hwPortname(boardConfiguration->triggerErrorPin),
getPin_output_mode_e(boardConfiguration->triggerErrorPinMode));
scheduleMsg(logger, "primary logic input: %s", hwPortname(boardConfiguration->logicAnalyzerPins[0]));
scheduleMsg(logger, "secondary logic input: %s", hwPortname(boardConfiguration->logicAnalyzerPins[1]));
scheduleMsg(logger, "trigger error extra LED: %s %s", hwPortname(CONFIGB(triggerErrorPin)),
getPin_output_mode_e(CONFIGB(triggerErrorPinMode)));
scheduleMsg(logger, "primary logic input: %s", hwPortname(CONFIGB(logicAnalyzerPins)[0]));
scheduleMsg(logger, "secondary logic input: %s", hwPortname(CONFIGB(logicAnalyzerPins)[1]));
scheduleMsg(logger, "zeroTestTime=%d maxSchedulingPrecisionLoss=%d", engine->m.zeroTestTime, maxSchedulingPrecisionLoss);

View File

@ -185,7 +185,7 @@ void TriggerStateWithRunningStatistics::runtimeStatistics(efitime_t nowNt DECLAR
#if EFI_SENSOR_CHART || defined(__DOXYGEN__)
angle_t currentAngle = TRIGGER_SHAPE(eventAngles[currentCycle.current_index]);
if (boardConfiguration->sensorChartMode == SC_DETAILED_RPM) {
if (CONFIGB(sensorChartMode) == SC_DETAILED_RPM) {
scAddData(currentAngle, instantRpm);
} else {
scAddData(currentAngle, instantRpm / instantRpmValue[prevIndex]);
@ -662,8 +662,8 @@ void TriggerState::runtimeStatistics(efitime_t nowNt DECLARE_ENGINE_PARAMETER_SU
void initTriggerDecoder(void) {
#if EFI_GPIO_HARDWARE || defined(__DOXYGEN__)
enginePins.triggerDecoderErrorPin.initPin("trg_err", boardConfiguration->triggerErrorPin,
&boardConfiguration->triggerErrorPinMode);
enginePins.triggerDecoderErrorPin.initPin("trg_err", CONFIGB(triggerErrorPin),
&CONFIGB(triggerErrorPinMode));
#endif /* EFI_GPIO_HARDWARE */
}

View File

@ -48,14 +48,14 @@ void initTriggerEmulator(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX)
#if EFI_PROD_CODE || defined(__DOXYGEN__)
// todo: refactor, make this a loop
triggerSignal.outputPins[0]->initPin("trg emulator ch1", boardConfiguration->triggerSimulatorPins[0],
&boardConfiguration->triggerSimulatorPinModes[0]);
triggerSignal.outputPins[0]->initPin("trg emulator ch1", CONFIGB(triggerSimulatorPins)[0],
&CONFIGB(triggerSimulatorPinModes)[0]);
triggerSignal.outputPins[1]->initPin("trg emulator ch2", boardConfiguration->triggerSimulatorPins[1],
&boardConfiguration->triggerSimulatorPinModes[1]);
triggerSignal.outputPins[1]->initPin("trg emulator ch2", CONFIGB(triggerSimulatorPins)[1],
&CONFIGB(triggerSimulatorPinModes)[1]);
triggerSignal.outputPins[2]->initPin("trg emulator ch3", boardConfiguration->triggerSimulatorPins[2],
&boardConfiguration->triggerSimulatorPinModes[2]);
triggerSignal.outputPins[2]->initPin("trg emulator ch3", CONFIGB(triggerSimulatorPins)[2],
&CONFIGB(triggerSimulatorPinModes)[2]);
#endif /* EFI_PROD_CODE */
initTriggerEmulatorLogic(sharedLogger);

View File

@ -117,9 +117,9 @@ static void setWaveModeSilent(int index, int mode) {
//}
static void initWave(const char *name, int index) {
brain_pin_e brainPin = boardConfiguration->logicAnalyzerPins[index];
brain_pin_e brainPin = CONFIGB(logicAnalyzerPins)[index];
bool mode = boardConfiguration->logicAnalyzerMode[index];
bool mode = CONFIGB(logicAnalyzerMode)[index];
waveReaderCount++;
efiAssertVoid(CUSTOM_ERR_6655, index < MAX_ICU_COUNT, "too many ICUs");

View File

@ -130,14 +130,14 @@ EXTERN_ENGINE
static char hipPinNameBuffer[16];
static void showHipInfo(void) {
if (!boardConfiguration->isHip9011Enabled) {
if (!CONFIGB(isHip9011Enabled)) {
scheduleMsg(logger, "hip9011 driver not active");
return;
}
printSpiState(logger, boardConfiguration);
scheduleMsg(logger, "enabled=%s state=%s bore=%.2fmm freq=%.2fkHz PaSDO=%d",
boolToString(boardConfiguration->isHip9011Enabled),
boolToString(CONFIGB(isHip9011Enabled)),
getHip_state_e(instance.state),
engineConfiguration->cylinderBore, getHIP9011Band(PASS_HIP_PARAMS),
engineConfiguration->hip9011PrescalerAndSDO);
@ -153,11 +153,11 @@ static void showHipInfo(void) {
const char * msg = instance.invalidHip9011ResponsesCount > 0 ? "NOT GOOD" : "ok";
scheduleMsg(logger, "spi=%s IntHold@%s/%d response count=%d incorrect response=%d %s",
getSpi_device_e(engineConfiguration->hip9011SpiDevice),
hwPortname(boardConfiguration->hip9011IntHoldPin),
boardConfiguration->hip9011IntHoldPinMode,
hwPortname(CONFIGB(hip9011IntHoldPin)),
CONFIGB(hip9011IntHoldPinMode),
instance.correctResponsesCount, instance.invalidHip9011ResponsesCount,
msg);
scheduleMsg(logger, "CS@%s updateCount=%d", hwPortname(boardConfiguration->hip9011CsPin), instance.settingUpdateCount);
scheduleMsg(logger, "CS@%s updateCount=%d", hwPortname(CONFIGB(hip9011CsPin)), instance.settingUpdateCount);
#if EFI_PROD_CODE
scheduleMsg(logger, "hip %.2fv/last=%.2f@%s/max=%.2f adv=%d",
@ -165,7 +165,7 @@ static void showHipInfo(void) {
getVoltage("hipinfo", engineConfiguration->hipOutputChannel),
getPinNameByAdcChannel("hip", engineConfiguration->hipOutputChannel, pinNameBuffer),
hipValueMax,
boardConfiguration->useTpicAdvancedMode);
CONFIGB(useTpicAdvancedMode));
scheduleMsg(logger, "mosi=%s", hwPortname(getMosiPin(engineConfiguration->hip9011SpiDevice)));
scheduleMsg(logger, "miso=%s", hwPortname(getMisoPin(engineConfiguration->hip9011SpiDevice)));
scheduleMsg(logger, "sck=%s", hwPortname(getSckPin(engineConfiguration->hip9011SpiDevice)));
@ -182,18 +182,18 @@ void setHip9011FrankensoPinout(void) {
/**
* SPI on PB13/14/15
*/
// boardConfiguration->hip9011CsPin = GPIOD_0; // rev 0.1
// CONFIGB(hip9011CsPin) = GPIOD_0; // rev 0.1
boardConfiguration->isHip9011Enabled = true;
CONFIGB(isHip9011Enabled) = true;
engineConfiguration->hip9011PrescalerAndSDO = _8MHZ_PRESCALER; // 8MHz chip
boardConfiguration->is_enabled_spi_2 = true;
CONFIGB(is_enabled_spi_2) = true;
// todo: convert this to rusEfi, hardware-independent enum
#if EFI_PROD_CODE
boardConfiguration->hip9011CsPin = GPIOB_0; // rev 0.4
boardConfiguration->hip9011CsPinMode = OM_OPENDRAIN;
CONFIGB(hip9011CsPin) = GPIOB_0; // rev 0.4
CONFIGB(hip9011CsPinMode) = OM_OPENDRAIN;
boardConfiguration->hip9011IntHoldPin = GPIOB_11;
boardConfiguration->hip9011IntHoldPinMode = OM_OPENDRAIN;
CONFIGB(hip9011IntHoldPin) = GPIOB_11;
CONFIGB(hip9011IntHoldPinMode) = OM_OPENDRAIN;
engineConfiguration->spi2SckMode = PAL_STM32_OTYPE_OPENDRAIN; // 4
engineConfiguration->spi2MosiMode = PAL_STM32_OTYPE_OPENDRAIN; // 4
@ -205,7 +205,7 @@ void setHip9011FrankensoPinout(void) {
engineConfiguration->maxKnockSubDeg = 20;
if (!boardConfiguration->useTpicAdvancedMode) {
if (!CONFIGB(useTpicAdvancedMode)) {
engineConfiguration->hipOutputChannel = EFI_ADC_10; // PC0
}
}
@ -340,7 +340,7 @@ static void hipStartupCode(void) {
warning(CUSTOM_OBD_KNOCK_PROCESSOR, "TPIC/HIP does not respond");
}
if (boardConfiguration->useTpicAdvancedMode) {
if (CONFIGB(useTpicAdvancedMode)) {
// enable advanced mode for digital integrator output
instance.hardware->sendSyncCommand(SET_ADVANCED_MODE);
}
@ -383,7 +383,7 @@ static msg_t hipThread(void *arg) {
void initHip9011(Logging *sharedLogger) {
logger = sharedLogger;
addConsoleAction("hipinfo", showHipInfo);
if (!boardConfiguration->isHip9011Enabled)
if (!CONFIGB(isHip9011Enabled))
return;
@ -392,14 +392,14 @@ void initHip9011(Logging *sharedLogger) {
#if EFI_PROD_CODE
driver = getSpiDevice(engineConfiguration->hip9011SpiDevice);
hipSpiCfg.ssport = getHwPort("hip", boardConfiguration->hip9011CsPin);
hipSpiCfg.sspad = getHwPin("hip", boardConfiguration->hip9011CsPin);
hipSpiCfg.ssport = getHwPort("hip", CONFIGB(hip9011CsPin));
hipSpiCfg.sspad = getHwPin("hip", CONFIGB(hip9011CsPin));
#endif
intHold.initPin("hip int/hold", boardConfiguration->hip9011IntHoldPin,
&boardConfiguration->hip9011IntHoldPinMode);
enginePins.hipCs.initPin("hip CS", boardConfiguration->hip9011CsPin,
&boardConfiguration->hip9011CsPinMode);
intHold.initPin("hip int/hold", CONFIGB(hip9011IntHoldPin),
&CONFIGB(hip9011IntHoldPinMode));
enginePins.hipCs.initPin("hip CS", CONFIGB(hip9011CsPin),
&CONFIGB(hip9011CsPinMode));
scheduleMsg(logger, "Starting HIP9011/TPIC8101 driver");
spiStart(driver, &hipSpiCfg);

View File

@ -109,7 +109,7 @@ static int logFileIndex = 1;
static char logName[_MAX_FILLER + 20];
static void printMmcPinout(void) {
scheduleMsg(&logger, "MMC CS %s", hwPortname(boardConfiguration->sdCardCsPin));
scheduleMsg(&logger, "MMC CS %s", hwPortname(CONFIGB(sdCardCsPin)));
// todo: we need to figure out the right SPI pinout, not just SPI2
// scheduleMsg(&logger, "MMC SCK %s:%d", portname(EFI_SPI2_SCK_PORT), EFI_SPI2_SCK_PIN);
// scheduleMsg(&logger, "MMC MISO %s:%d", portname(EFI_SPI2_MISO_PORT), EFI_SPI2_MISO_PIN);
@ -118,7 +118,7 @@ static void printMmcPinout(void) {
static void sdStatistics(void) {
printMmcPinout();
scheduleMsg(&logger, "SD enabled=%s status=%s", boolToString(boardConfiguration->isSdCardEnabled),
scheduleMsg(&logger, "SD enabled=%s status=%s", boolToString(CONFIGB(isSdCardEnabled)),
sdStatus);
if (fs_ready) {
scheduleMsg(&logger, "filename=%s size=%d", logName, engine->engineState.totalLoggedBytes);
@ -428,12 +428,12 @@ bool isSdCardAlive(void) {
void initMmcCard(void) {
logName[0] = 0;
addConsoleAction("sdinfo", sdStatistics);
if (!boardConfiguration->isSdCardEnabled) {
if (!CONFIGB(isSdCardEnabled)) {
return;
}
hs_spicfg.ssport = ls_spicfg.ssport = getHwPort("mmc", boardConfiguration->sdCardCsPin);
hs_spicfg.sspad = ls_spicfg.sspad = getHwPin("mmc", boardConfiguration->sdCardCsPin);
hs_spicfg.ssport = ls_spicfg.ssport = getHwPort("mmc", CONFIGB(sdCardCsPin));
hs_spicfg.sspad = ls_spicfg.sspad = getHwPin("mmc", CONFIGB(sdCardCsPin));
mmccfg.spip = getSpiDevice(engineConfiguration->sdCardSpiDevice);
/**

View File

@ -24,7 +24,7 @@
#include "nmea.h"
#include "neo6m.h"
#include "rtc_helper.h"
#include "engine_configuration.h"
#include "engine.h"
extern board_configuration_s *boardConfiguration;
extern engine_configuration_s *engineConfiguration;
@ -46,9 +46,11 @@ float getCurrentSpeed(void) {
return GPSdata.speed;
}
static void printGpsInfo(void) {
scheduleMsg(&logging, "GPS RX %s", hwPortname(boardConfiguration->gps_rx_pin));
scheduleMsg(&logging, "GPS TX %s", hwPortname(boardConfiguration->gps_tx_pin));
EXTERN_ENGINE;
static void printGpsInfo(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
scheduleMsg(&logging, "GPS RX %s", hwPortname(CONFIGB(gps_rx_pin)));
scheduleMsg(&logging, "GPS TX %s", hwPortname(CONFIGB(gps_tx_pin)));
scheduleMsg(&logging, "m=%d,e=%d: vehicle speed = %.2f\r\n", gpsMesagesCount, uartErrors, getCurrentSpeed());
@ -102,8 +104,8 @@ static THD_FUNCTION(GpsThreadEntryPoint, arg) {
}
static bool isGpsEnabled() {
return boardConfiguration->gps_rx_pin != GPIO_UNASSIGNED ||
boardConfiguration->gps_tx_pin != GPIO_UNASSIGNED;
return CONFIGB(gps_rx_pin) != GPIO_UNASSIGNED ||
CONFIGB(gps_tx_pin) != GPIO_UNASSIGNED;
}
void initGps(void) {
@ -113,8 +115,8 @@ void initGps(void) {
sdStart(GPS_SERIAL_DEVICE, &GPSserialConfig);
// GPS we have USART1: PB7 -> USART1_RX and PB6 -> USART1_TX
efiSetPadMode("GPS tx", boardConfiguration->gps_tx_pin, PAL_MODE_ALTERNATE(7));
efiSetPadMode("GPS rx", boardConfiguration->gps_rx_pin, PAL_MODE_ALTERNATE(7));
efiSetPadMode("GPS tx", CONFIGB(gps_tx_pin), PAL_MODE_ALTERNATE(7));
efiSetPadMode("GPS rx", CONFIGB(gps_rx_pin), PAL_MODE_ALTERNATE(7));
// todo: add a thread which would save location. If the GPS 5Hz - we should save the location each 200 ms
chThdCreateStatic(gpsThreadStack, sizeof(gpsThreadStack), LOWPRIO, (tfunc_t)(void*) GpsThreadEntryPoint, NULL);

View File

@ -48,7 +48,7 @@ static msg_t stThread(StepperMotor *motor) {
#endif
// now check if stepper motor re-initialization is requested - if the throttle pedal is pressed at startup
bool forceStepperParking = !engine->rpmCalculator.isRunning(PASS_ENGINE_PARAMETER_SIGNATURE) && getTPS(PASS_ENGINE_PARAMETER_SIGNATURE) > STEPPER_PARKING_TPS;
if (boardConfiguration->stepperForceParkingEveryRestart)
if (CONFIGB(stepperForceParkingEveryRestart))
forceStepperParking = true;
scheduleMsg(logger, "Stepper: savedStepperPos=%d forceStepperParking=%d (tps=%.2f)", motor->currentPosition, (forceStepperParking ? 1 : 0), getTPS(PASS_ENGINE_PARAMETER_SIGNATURE));
@ -64,7 +64,7 @@ static msg_t stThread(StepperMotor *motor) {
*
* Add extra steps to compensate step skipping by some old motors.
*/
int numParkingSteps = (int)efiRound((1.0f + (float)boardConfiguration->stepperParkingExtraSteps / PERCENT_MULT) * motor->totalSteps, 1.0f);
int numParkingSteps = (int)efiRound((1.0f + (float)CONFIGB(stepperParkingExtraSteps) / PERCENT_MULT) * motor->totalSteps, 1.0f);
for (int i = 0; i < numParkingSteps; i++) {
motor->pulse();
}

View File

@ -152,7 +152,7 @@ static void turnOffTriggerInputPin(brain_pin_e hwPin) {
static void rememberPrimaryChannel(void) {
primaryCrankDriver = getInputCaptureDriver("primary",
boardConfiguration->triggerInputPins[0]);
CONFIGB(triggerInputPins)[0]);
}
void turnOnTriggerInputPins(Logging *sharedLogger) {
@ -163,7 +163,7 @@ void turnOnTriggerInputPins(Logging *sharedLogger) {
void stopTriggerInputPins(void) {
for (int i = 0; i < TRIGGER_SUPPORTED_CHANNELS; i++) {
if (boardConfiguration->triggerInputPins[i]
if (CONFIGB(triggerInputPins)[i]
!= activeConfiguration.bc.triggerInputPins[i]) {
turnOffTriggerInputPin(activeConfiguration.bc.triggerInputPins[i]);
}
@ -179,10 +179,10 @@ void applyNewTriggerInputPins(void) {
// then we will enable all the changed pins
for (int i = 0; i < TRIGGER_SUPPORTED_CHANNELS; i++) {
if (boardConfiguration->triggerInputPins[i]
if (CONFIGB(triggerInputPins)[i]
!= activeConfiguration.bc.triggerInputPins[i]) {
const char * msg = (i == 0 ? "trigger#1" : (i == 1 ? "trigger#2" : "trigger#3"));
turnOnTriggerInputPin(msg, boardConfiguration->triggerInputPins[i], &shaft_icucfg);
turnOnTriggerInputPin(msg, CONFIGB(triggerInputPins)[i], &shaft_icucfg);
}
}

View File

@ -52,7 +52,7 @@ static void vsAnaWidthCallback(void) {
static void speedInfo(void) {
scheduleMsg(logger, "VSS input at %s",
hwPortname(boardConfiguration->vehicleSpeedSensorInputPin));
hwPortname(CONFIGB(vehicleSpeedSensorInputPin)));
scheduleMsg(logger, "c=%.2f eventCounter=%d speed=%.2f",
engineConfiguration->vehicleSpeedCoef,
@ -63,7 +63,7 @@ static void speedInfo(void) {
}
bool hasVehicleSpeedSensor() {
return boardConfiguration->vehicleSpeedSensorInputPin != GPIO_UNASSIGNED;
return CONFIGB(vehicleSpeedSensorInputPin) != GPIO_UNASSIGNED;
}
void stopVSSPins(void) {
@ -73,7 +73,7 @@ void stopVSSPins(void) {
void startVSSPins(void) {
if (!hasVehicleSpeedSensor())
return;
digital_input_s* vehicleSpeedInput = addWaveAnalyzerDriver("VSS", boardConfiguration->vehicleSpeedSensorInputPin);
digital_input_s* vehicleSpeedInput = addWaveAnalyzerDriver("VSS", CONFIGB(vehicleSpeedSensorInputPin));
startInputDriver(vehicleSpeedInput, true);
vehicleSpeedInput->widthListeners.registerCallback((VoidInt) vsAnaWidthCallback, NULL);
}

View File

@ -91,7 +91,9 @@ class Engine;
EXPAND_Engine
#define CONFIG(x) engineConfiguration->x
#define CONFIGB(x) engine->engineConfigurationPtr->bc.x
// todo: fix this! this does not work because of 'prepareVoidConfiguration(&activeConfiguration);'
//#define CONFIGB(x) engine->engineConfigurationPtr->bc.x
#define CONFIGB(x) CONFIG(bc.x)
#define ENGINE(x) engine->x
#define CONFIG_PARAM(x) (x)