diff --git a/firmware/controllers/algo/engine_configuration.cpp b/firmware/controllers/algo/engine_configuration.cpp index 49f1e244e6..d211347b90 100644 --- a/firmware/controllers/algo/engine_configuration.cpp +++ b/firmware/controllers/algo/engine_configuration.cpp @@ -286,6 +286,9 @@ void prepareVoidConfiguration(engine_configuration_s *activeConfiguration) { boardConfiguration->clutchUpPin = GPIO_UNASSIGNED; boardConfiguration->clutchUpPinMode = PI_PULLUP; + boardConfiguration->gps_rx_pin = GPIO_UNASSIGNED; + boardConfiguration->gps_tx_pin = GPIO_UNASSIGNED; + for (int i = 0;i < INJECTION_PIN_COUNT;i++) { boardConfiguration->injectionPins[i] = GPIO_UNASSIGNED; } @@ -743,8 +746,8 @@ void setDefaultConfiguration(DECLARE_ENGINE_PARAMETER_F) { engineConfiguration->isAlternatorControlEnabled = true; - boardConfiguration->gps_rx_pin = GPIOB_7; - boardConfiguration->gps_tx_pin = GPIOB_6; +// boardConfiguration->gps_rx_pin = GPIOB_7; +// boardConfiguration->gps_tx_pin = GPIOB_6; boardConfiguration->triggerInputPins[0] = GPIOC_6; boardConfiguration->triggerInputPins[1] = GPIOA_5; diff --git a/firmware/controllers/electronic_throttle.cpp b/firmware/controllers/electronic_throttle.cpp index 1e046f4b1c..05402defe6 100644 --- a/firmware/controllers/electronic_throttle.cpp +++ b/firmware/controllers/electronic_throttle.cpp @@ -106,7 +106,7 @@ static void showEthInfo(void) { static char pinNameBuffer[16]; scheduleMsg(&logger, "pedal=%f %d/%d @", getPedalPosition(), engineConfiguration->pedalPositionMin, engineConfiguration->pedalPositionMax, - getPinNameByAdcChannel(engineConfiguration->pedalPositionChannel, pinNameBuffer)); + getPinNameByAdcChannel("etb", engineConfiguration->pedalPositionChannel, pinNameBuffer)); scheduleMsg(&logger, "TPS=%f", getTPS()); diff --git a/firmware/controllers/engine_controller.cpp b/firmware/controllers/engine_controller.cpp index bd54f6500d..a709b29e85 100644 --- a/firmware/controllers/engine_controller.cpp +++ b/firmware/controllers/engine_controller.cpp @@ -248,10 +248,14 @@ void initPeriodicEvents(DECLARE_ENGINE_PARAMETER_F) { periodicFastCallback(PASS_ENGINE_PARAMETER_F); } -char * getPinNameByAdcChannel(adc_channel_e hwChannel, char *buffer) { +char * getPinNameByAdcChannel(const char *msg, adc_channel_e hwChannel, char *buffer) { #if HAL_USE_ADC || defined(__DOXYGEN__) - strcpy((char*) buffer, portname(getAdcChannelPort(hwChannel))); - itoa10(&buffer[2], getAdcChannelPin(hwChannel)); + if (hwChannel == EFI_ADC_NONE) { + strcpy(buffer, "NONE"); + } else { + strcpy((char*) buffer, portname(getAdcChannelPort(msg, hwChannel))); + itoa10(&buffer[2], getAdcChannelPin(hwChannel)); + } #else strcpy(buffer, "NONE"); #endif @@ -278,7 +282,7 @@ static void printAnalogChannelInfoExt(const char *name, adc_channel_e hwChannel, float voltage = adcVoltage * dividerCoeff; scheduleMsg(&logger, "%s ADC%d %s %s adc=%f/input=%fv/divider=%f", name, hwChannel, getAdcMode(hwChannel), - getPinNameByAdcChannel(hwChannel, pinNameBuffer), adcVoltage, voltage, dividerCoeff); + getPinNameByAdcChannel(name, hwChannel, pinNameBuffer), adcVoltage, voltage, dividerCoeff); #endif } @@ -510,7 +514,7 @@ static void initConfigActions(void) { // todo: move this logic somewhere else? static void getKnockInfo(void) { adc_channel_e hwChannel = engineConfiguration->externalKnockSenseAdc; - scheduleMsg(&logger, "externalKnockSenseAdc on ADC", getPinNameByAdcChannel(hwChannel, pinNameBuffer)); + scheduleMsg(&logger, "externalKnockSenseAdc on ADC", getPinNameByAdcChannel("knock", hwChannel, pinNameBuffer)); engine->printKnockState(); } diff --git a/firmware/controllers/engine_controller.h b/firmware/controllers/engine_controller.h index 2b48b7782a..e7254cf6d4 100644 --- a/firmware/controllers/engine_controller.h +++ b/firmware/controllers/engine_controller.h @@ -14,7 +14,7 @@ #include "engine_configuration.h" #include "engine.h" -char * getPinNameByAdcChannel(adc_channel_e hwChannel, char *buffer); +char * getPinNameByAdcChannel(const char *msg, adc_channel_e hwChannel, char *buffer); void initPeriodicEvents(DECLARE_ENGINE_PARAMETER_F); void initEngineContoller(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_S); void commonInitEngineController(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_S); diff --git a/firmware/controllers/lcd_controller.cpp b/firmware/controllers/lcd_controller.cpp index 294e90b335..c71a9653bc 100644 --- a/firmware/controllers/lcd_controller.cpp +++ b/firmware/controllers/lcd_controller.cpp @@ -244,7 +244,7 @@ static void showLine(lcd_line_e line, int screenY) { lcdPrintf(getIgnition_mode_e(engineConfiguration->ignitionMode)); return; case LL_TPS: - getPinNameByAdcChannel(engineConfiguration->tpsAdcChannel, buffer); + getPinNameByAdcChannel("tps", engineConfiguration->tpsAdcChannel, buffer); lcdPrintf("Throttle %s %f%%", buffer, getTPS()); return; @@ -252,7 +252,7 @@ static void showLine(lcd_line_e line, int screenY) { lcdPrintf("Battery %fv", getVBatt(PASS_ENGINE_PARAMETER_F)); return; case LL_KNOCK: - getPinNameByAdcChannel(engineConfiguration->hipOutputChannel, buffer); + getPinNameByAdcChannel("hip", engineConfiguration->hipOutputChannel, buffer); lcdPrintf("Knock %s %fv", buffer, engine->knockVolts); return; diff --git a/firmware/controllers/settings.cpp b/firmware/controllers/settings.cpp index 7b1f93b412..8eb373af03 100644 --- a/firmware/controllers/settings.cpp +++ b/firmware/controllers/settings.cpp @@ -385,7 +385,7 @@ static void printThermistor(const char *msg, ThermistorConf *config, ThermistorM thermistor_conf_s *tc = &config->config; scheduleMsg(&logger, "%s volts=%f Celsius=%f sensorR=%f on channel %d", msg, voltage, t, r, adcChannel); - scheduleMsg(&logger, "@%s", getPinNameByAdcChannel(adcChannel, pinNameBuffer)); + scheduleMsg(&logger, "@%s", getPinNameByAdcChannel(msg, adcChannel, pinNameBuffer)); scheduleMsg(&logger, "C=%f/R=%f C=%f/R=%f C=%f/R=%f", tc->tempC_1, tc->resistance_1, tc->tempC_2, tc->resistance_2, @@ -403,7 +403,7 @@ static void printTPSInfo(void) { return; } - ioportid_t port = getAdcChannelPort(engineConfiguration->tpsAdcChannel); + ioportid_t port = getAdcChannelPort("tps", engineConfiguration->tpsAdcChannel); int pin = getAdcChannelPin(engineConfiguration->tpsAdcChannel); scheduleMsg(&logger, "tps min (closed) %d/max (full) %d v=%f @%s%d", engineConfiguration->tpsMin, engineConfiguration->tpsMax, diff --git a/firmware/hw_layer/HIP9011.cpp b/firmware/hw_layer/HIP9011.cpp index 1bba003635..0f9b5d2e22 100644 --- a/firmware/hw_layer/HIP9011.cpp +++ b/firmware/hw_layer/HIP9011.cpp @@ -149,7 +149,7 @@ static void showHipInfo(void) { scheduleMsg(logger, "hip %fv/last=%f@%s/max=%f spiCount=%d adv=%d", engine->knockVolts, getVoltage("hipinfo", engineConfiguration->hipOutputChannel), - getPinNameByAdcChannel(engineConfiguration->hipOutputChannel, pinNameBuffer), + getPinNameByAdcChannel("hip", engineConfiguration->hipOutputChannel, pinNameBuffer), hipValueMax, spiCount, boardConfiguration->useTpicAdvancedMode); scheduleMsg(logger, "mosi=%s", hwPortname(getMosiPin(hipSpiDevice))); diff --git a/firmware/hw_layer/adc_inputs.cpp b/firmware/hw_layer/adc_inputs.cpp index 3aa0b3628a..6fb7cdbe0f 100644 --- a/firmware/hw_layer/adc_inputs.cpp +++ b/firmware/hw_layer/adc_inputs.cpp @@ -297,7 +297,7 @@ adc_channel_e getAdcChannel(brain_pin_e pin) { } } -ioportid_t getAdcChannelPort(adc_channel_e hwChannel) { +ioportid_t getAdcChannelPort(const char *msg, adc_channel_e hwChannel) { // todo: replace this with an array :) switch (hwChannel) { case ADC_CHANNEL_IN0: @@ -333,7 +333,7 @@ ioportid_t getAdcChannelPort(adc_channel_e hwChannel) { case ADC_CHANNEL_IN15: return GPIOC; default: - firmwareError(OBD_PCM_Processor_Fault, "Unknown hw channel %d", hwChannel); + firmwareError(OBD_PCM_Processor_Fault, "Unknown hw channel %d [%s]", hwChannel, msg); return NULL; } } @@ -390,7 +390,7 @@ int getAdcChannelPin(adc_channel_e hwChannel) { } static void initAdcHwChannel(adc_channel_e hwChannel) { - ioportid_t port = getAdcChannelPort(hwChannel); + ioportid_t port = getAdcChannelPort("adc", hwChannel); int pin = getAdcChannelPin(hwChannel); initAdcPin(port, pin, "hw"); @@ -461,7 +461,7 @@ static void printFullAdcReport(Logging *logger) { appendMsgPrefix(logger); adc_channel_e hwIndex = slowAdc.getAdcHardwareIndexByInternalIndex(index); - ioportid_t port = getAdcChannelPort(hwIndex); + ioportid_t port = getAdcChannelPort("print", hwIndex); int pin = getAdcChannelPin(hwIndex); int adcValue = slowAdc.getAdcValueByIndex(index); @@ -511,7 +511,7 @@ static void addChannel(const char *name, adc_channel_e setting, adc_channel_mode return; } if (adcHwChannelEnabled[setting] != ADC_OFF) { - getPinNameByAdcChannel(setting, errorMsgBuff); + getPinNameByAdcChannel(name, setting, errorMsgBuff); firmwareError(OBD_PCM_Processor_Fault, "ADC mapping error: input %s for %s already used by %s?", errorMsgBuff, name, adcHwChannelUsage[setting]); } diff --git a/firmware/hw_layer/adc_inputs.h b/firmware/hw_layer/adc_inputs.h index 101f29b638..b768e67b98 100644 --- a/firmware/hw_layer/adc_inputs.h +++ b/firmware/hw_layer/adc_inputs.h @@ -18,7 +18,7 @@ const char * getAdcMode(adc_channel_e hwChannel); int getAdcChannelPin(adc_channel_e hwChannel); void initAdcInputs(bool boardTestMode); void adc_callback_fast(ADCDriver *adcp, adcsample_t *buffer, size_t n); -ioportid_t getAdcChannelPort(adc_channel_e hwChannel); +ioportid_t getAdcChannelPort(const char *msg, adc_channel_e hwChannel); adc_channel_e getAdcChannel(brain_pin_e pin); void doSlowAdc(void); diff --git a/firmware/hw_layer/board_test.cpp b/firmware/hw_layer/board_test.cpp index 5f3ff51e0a..0c96bef52e 100644 --- a/firmware/hw_layer/board_test.cpp +++ b/firmware/hw_layer/board_test.cpp @@ -42,7 +42,7 @@ extern AdcDevice fastAdc; static void processAdcPin(AdcDevice *adc, int index) { adc_channel_e hwIndex = adc->getAdcHardwareIndexByInternalIndex(index); - ioportid_t port = getAdcChannelPort(hwIndex); + ioportid_t port = getAdcChannelPort("test", hwIndex); int pin = getAdcChannelPin(hwIndex); int copy = stepCoutner;