diff --git a/firmware/config/engines/dodge_neon.cpp b/firmware/config/engines/dodge_neon.cpp index e8e078f916..62558a4f3f 100644 --- a/firmware/config/engines/dodge_neon.cpp +++ b/firmware/config/engines/dodge_neon.cpp @@ -302,7 +302,14 @@ void setDodgeNeonNGCEngineConfiguration(engine_configuration_s *engineConfigurat engineConfiguration->analogChartMode = AC_MAP; boardConfiguration->isFastAdcEnabled = true; -// engineConfiguration->map.sensor.sensorType = MT_DENSO183; + engineConfiguration->map.sensor.sensorType = MT_DODGE_NEON_2003; + + +// boardConfiguration->canTxPin = GPIOB_6; +// boardConfiguration->canRxPin = GPIOB_12; +// engineConfiguration->canWriteEnabled = true; +// engineConfiguration->canReadEnabled = false; +// engineConfiguration->can_nbc_type = CAN_BUS_NBC_BMW; } #endif /* EFI_SUPPORT_DODGE_NEON */ diff --git a/firmware/controllers/malfunction_indicator.cpp b/firmware/controllers/malfunction_indicator.cpp index 6ea0cf7ed5..7d4581135d 100644 --- a/firmware/controllers/malfunction_indicator.cpp +++ b/firmware/controllers/malfunction_indicator.cpp @@ -63,7 +63,7 @@ static int DigitLength(int digit) { static void DisplayErrorCode(int length, int code) { // todo: I suggest we use 'itoa' method to simplify this logic for (int iter = length - 1; iter >= 0; iter--) { - int ourDigit = (int)pow(10, iter); // 10^0 = 1, 10^1 = 10, 10^2=100, 10^3 = 1000, .... + int ourDigit = (int)efiPow10(iter); // 10^0 = 1, 10^1 = 10, 10^2=100, 10^3 = 1000, .... int digit = 1; // as we remember "0" we show as one blink while (code >= ourDigit) { code = code - ourDigit; diff --git a/firmware/iar/ch.ewp b/firmware/iar/ch.ewp index 5ea9c4dc82..37421bb3cf 100644 --- a/firmware/iar/ch.ewp +++ b/firmware/iar/ch.ewp @@ -2185,7 +2185,7 @@ $PROJ_DIR$\..\controllers\algo\main_trigger_callback.h - $PROJ_DIR$\..\controllers\algo\malfunction_central.cpp + $PROJ_DIR$\..\controllers\algo\malfunction_central.c $PROJ_DIR$\..\controllers\algo\malfunction_central.h @@ -2498,7 +2498,7 @@ $PROJ_DIR$\..\controllers\lcd_controller.h - $PROJ_DIR$\..\controllers\malfunction_indicator.c + $PROJ_DIR$\..\controllers\malfunction_indicator.cpp $PROJ_DIR$\..\controllers\malfunction_indicator.h diff --git a/firmware/util/efilib.cpp b/firmware/util/efilib.cpp index 01d2d45c09..00810c81ae 100644 --- a/firmware/util/efilib.cpp +++ b/firmware/util/efilib.cpp @@ -151,6 +151,31 @@ bool isSameF(float v1, float v2) { return absF(v1 - v2) < EPS; } +int efiPow10(int param) { + switch (param) { + case 0: + return 1; + case 1: + return 10; + case 2: + return 100; + case 3: + return 1000; + case 4: + return 10000; + case 5: + return 100000; + case 6: + return 1000000; + case 7: + return 10000000; + case 8: + return 100000000; + } + return 10 * efiPow10(10 - 1); +} + + /** * string to float * @return NAN in case of invalid string diff --git a/firmware/util/efilib.h b/firmware/util/efilib.h index 15b3c63348..dcc6d8b34d 100644 --- a/firmware/util/efilib.h +++ b/firmware/util/efilib.h @@ -34,6 +34,7 @@ extern "C" const char * boolToString(bool value); uint32_t efiStrlen(const char *param); +int efiPow10(int param); bool startsWith(const char *line, const char *prefix); int indexOf(const char *string, char ch); float atoff(const char *string);