diff --git a/firmware/console/status_loop.cpp b/firmware/console/status_loop.cpp index da1161daba..642415935a 100644 --- a/firmware/console/status_loop.cpp +++ b/firmware/console/status_loop.cpp @@ -469,7 +469,7 @@ void updateTunerStudioState(Engine *engine, TunerStudioOutputChannels *tsOutputC tsOutputChannels->checkEngine = hasErrorCodes(); #if EFI_PROD_CODE - tsOutputChannels->egtValues.values[0] = getEgtValue(boardConfiguration, 0); + tsOutputChannels->egtValues.values[0] = getEgtValue(0); tsOutputChannels->needBurn = getNeedToWriteConfiguration(); tsOutputChannels->hasSdCard = isSdCardAlive(); diff --git a/firmware/controllers/algo/engine_configuration.h b/firmware/controllers/algo/engine_configuration.h index 54580e81f3..194c253d45 100644 --- a/firmware/controllers/algo/engine_configuration.h +++ b/firmware/controllers/algo/engine_configuration.h @@ -53,6 +53,8 @@ typedef char le_formula_t[LE_COMMAND_LENGTH]; typedef float fuel_table_t[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; typedef float ignition_table_t[IGN_LOAD_COUNT][IGN_RPM_COUNT]; +typedef brain_pin_e egt_cs_array_t[MAX31855_CS_COUNT]; + #define DWELL_CURVE_SIZE 8 typedef enum { @@ -217,7 +219,7 @@ typedef struct { pin_output_mode_e mainRelayPinMode; - brain_pin_e max31855_cs[MAX31855_CS_COUNT]; + egt_cs_array_t max31855_cs; spi_device_e max31855spiDevice; diff --git a/firmware/hw_layer/max31855.c b/firmware/hw_layer/max31855.c index a6a558fe14..ac5383ed8c 100644 --- a/firmware/hw_layer/max31855.c +++ b/firmware/hw_layer/max31855.c @@ -23,6 +23,8 @@ #define EGT_ERROR_VALUE -1000 +static SPIDriver *driver; + static Logging logger; static SPIConfig spiConfig[MAX31855_CS_COUNT]; @@ -80,9 +82,8 @@ static max_32855_code getResultCode(uint32_t egtPacket) { } } -uint32_t readEgtPacket(board_configuration_s *boardConfiguration, int egtChannel) { +static uint32_t readEgtPacket(int egtChannel) { uint32_t egtPacket; - SPIDriver *driver = getSpiDevice(boardConfiguration->max31855spiDevice); if (driver == NULL) { return 0xFFFFFFFF; } @@ -90,7 +91,7 @@ uint32_t readEgtPacket(board_configuration_s *boardConfiguration, int egtChannel spiStart(driver, &spiConfig[egtChannel]); spiSelect(driver); - spiReceive(driver, 4, &egtPacket); + spiReceive(driver, sizeof(egtPacket), &egtPacket); spiUnselect(driver); spiStop(driver); @@ -100,8 +101,8 @@ uint32_t readEgtPacket(board_configuration_s *boardConfiguration, int egtChannel #define GET_TEMPERATURE_C(x) (((x) >> 18) / 4) -uint16_t getEgtValue(board_configuration_s *boardConfiguration, int egtChannel) { - uint32_t packet = readEgtPacket(boardConfiguration, egtChannel); +uint16_t getEgtValue(int egtChannel) { + uint32_t packet = readEgtPacket(egtChannel); max_32855_code code = getResultCode(packet); if (code != MC_OK) { return EGT_ERROR_VALUE + code; @@ -110,16 +111,16 @@ uint16_t getEgtValue(board_configuration_s *boardConfiguration, int egtChannel) } } -static void egtRead(board_configuration_s *boardConfiguration) { +static void egtRead(void) { - if (boardConfiguration->max31855spiDevice == SPI_NONE) { + if (driver == NULL) { scheduleMsg(&logger, "No SPI selected for EGT"); return; } scheduleMsg(&logger, "Reading egt"); - uint32_t egtPacket = readEgtPacket(boardConfiguration, 0); + uint32_t egtPacket = readEgtPacket(0); max_32855_code code = getResultCode(egtPacket); @@ -137,9 +138,12 @@ static void egtRead(board_configuration_s *boardConfiguration) { void initMax31855(board_configuration_s *boardConfiguration) { initLogging(&logger, "EGT"); + driver = getSpiDevice(boardConfiguration->max31855spiDevice); + + addConsoleActionP("egtinfo", (VoidPtr) showEgtInfo, boardConfiguration); - addConsoleActionP("egtread", (VoidPtr) egtRead, boardConfiguration); + addConsoleAction("egtread", (Void) egtRead); turnOnSpi(SPI_DEVICE_3); diff --git a/firmware/hw_layer/max31855.h b/firmware/hw_layer/max31855.h index 4ab1efcfc4..853514f035 100644 --- a/firmware/hw_layer/max31855.h +++ b/firmware/hw_layer/max31855.h @@ -17,7 +17,7 @@ extern "C" #endif /* __cplusplus */ void initMax31855(board_configuration_s *boardConfiguration); -uint16_t getEgtValue(board_configuration_s *boardConfiguration, int egtChannel); +uint16_t getEgtValue(int egtChannel); #ifdef __cplusplus } diff --git a/firmware/rusefi.cpp b/firmware/rusefi.cpp index 72fe474ec7..a8179581d2 100644 --- a/firmware/rusefi.cpp +++ b/firmware/rusefi.cpp @@ -265,5 +265,5 @@ int getRusEfiVersion(void) { return 1; // this is here to make the compiler happy about the unused array if (UNUSED_CCM_SIZE == 0) return 1; // this is here to make the compiler happy about the unused array - return 20141229; + return 20141230; }