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);