diff --git a/firmware/config/boards/subaru-ej20gn/board.c b/firmware/config/boards/subaru-ej20gn/board.c index fa3c08afa4..287fb4711b 100644 --- a/firmware/config/boards/subaru-ej20gn/board.c +++ b/firmware/config/boards/subaru-ej20gn/board.c @@ -88,66 +88,6 @@ static const gpio_config_t gpio_default_config = { VAL_GPIOH_ODR, VAL_GPIOH_AFRL, VAL_GPIOH_AFRH}, }; -const struct tle6240_config tle6240 = { - .spi_bus = &SPID4, - .spi_config = { - .circular = false, - .end_cb = NULL, - .ssport = GPIOF, - .sspad = 0U, - .cr1 = - SPI_CR1_SSM | - SPI_CR1_SSI | - /* SPI_CR1_LSBFIRST | */ - ((3 << SPI_CR1_BR_Pos) & SPI_CR1_BR) | /* div = 16 */ - SPI_CR1_MSTR | - /* SPI_CR1_CPOL | */ // = 0 - SPI_CR1_CPHA | // = 1 - 0, - /* 16-bit transfer */ - .cr2 = SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0 - }, - .direct_io = { - /* IN1 - D_TACH_OUT */ - [0] = {.port = GPIOG, .pad = 2}, - /* IN2..4 grounded */ - [1] = {.port = NULL}, - [2] = {.port = NULL}, - [3] = {.port = NULL}, - /* IN9 - D_INJ_5 */ - [4] = {.port = GPIOD, .pad = 15}, - /* IN10 - D_WASTGATE */ - [5] = {.port = GPIOD, .pad = 14}, - /* IN11 - D_IDLE_OPEN */ - [6] = {.port = GPIOC, .pad = 6}, - /* IN12 - D_IDLE_CLOSE */ - [7] = {.port = GPIOC, .pad = 7}, - }, - .reset = {.port = GPIOG, .pad = 3} -}; - - -const struct mc33972_config mc33972 = { - .spi_bus = &SPID4, - .spi_config = { - .circular = false, - .end_cb = NULL, - .ssport = GPIOB, - .sspad = 4U, - .cr1 = - SPI_CR1_SSM | - SPI_CR1_SSI | - /* SPI_CR1_LSBFIRST | */ - ((3 << SPI_CR1_BR_Pos) & SPI_CR1_BR) | /* div = 16 */ - SPI_CR1_MSTR | - /* SPI_CR1_CPOL | */ /* = 0 */ - SPI_CR1_CPHA | /* = 1 */ - 0, - /* 3 x 8-bit transfer */ - .cr2 = SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0 - }, -}; - /*==========================================================================*/ /* Driver local functions. */ /*==========================================================================*/ @@ -253,9 +193,6 @@ bool mmc_lld_is_write_protected(MMCDriver *mmcp) */ void boardInit(void) { - tle6240_add(0, &tle6240); - - mc33972_add(0, &mc33972); } /** diff --git a/firmware/config/boards/subaru-ej20gn/board_configuration.cpp b/firmware/config/boards/subaru-ej20gn/board_configuration.cpp index 09cd831b08..6bd89b1bd8 100644 --- a/firmware/config/boards/subaru-ej20gn/board_configuration.cpp +++ b/firmware/config/boards/subaru-ej20gn/board_configuration.cpp @@ -13,11 +13,7 @@ #include "allsensors.h" #include "fsio_impl.h" #include "engine_configuration.h" - -/* TLE6240 pins go right after on chips */ -#define TLE6240_PIN(n) ((brain_pin_e)((int)BRAIN_PIN_LAST_ONCHIP + 1 + (n))) -/* MC33972 pins go right after TLE6240 */ -#define MC33972_PIN(n) ((brain_pin_e)((int)BRAIN_PIN_LAST_ONCHIP + 1 + 16 + (n))) +#include "smart_gpio.h" EXTERN_ENGINE; diff --git a/firmware/config/stm32f4ems/efifeatures.h b/firmware/config/stm32f4ems/efifeatures.h index 9332e9a100..d09e0e6a25 100644 --- a/firmware/config/stm32f4ems/efifeatures.h +++ b/firmware/config/stm32f4ems/efifeatures.h @@ -123,6 +123,17 @@ //#define EFI_POTENTIOMETER FALSE #define EFI_POTENTIOMETER TRUE +#define BOARD_TLE6240_COUNT 0 +#define BOARD_MC33972_COUNT 0 +#define BOARD_TLE8888_COUNT 1 + +// todo: move this outside of efifeatures.h +#define BOARD_EXT_GPIOCHIPS (BOARD_TLE6240_COUNT + BOARD_MC33972_COUNT + BOARD_TLE8888_COUNT) + +// todo: move this outside of efifeatures.h +#define BOARD_EXT_PINREPOPINS 24 + +// todo: remove this, use 'BOARD_TLE8888_COUNT' #define EFI_TLE8888 TRUE #define EFI_ANALOG_SENSORS TRUE diff --git a/firmware/controllers/algo/auto_generated_enums.cpp b/firmware/controllers/algo/auto_generated_enums.cpp index 96c57e17ae..4274e811ee 100644 --- a/firmware/controllers/algo/auto_generated_enums.cpp +++ b/firmware/controllers/algo/auto_generated_enums.cpp @@ -1,6 +1,6 @@ // auto-generated from.\controllers/algo/rusefi_enums.h // by enum2string.jar tool -// on Wed Apr 10 18:38:13 EDT 2019 +// on Sat Apr 13 10:34:52 EDT 2019 // see also gen_config_and_enums.bat @@ -103,14 +103,14 @@ case NISSAN_PRIMERA: return "NISSAN_PRIMERA"; case PROMETHEUS_DEFAULTS: return "PROMETHEUS_DEFAULTS"; -case SUBARUEJ20G_DEFAULTS: - return "SUBARUEJ20G_DEFAULTS"; case ROVER_V8: return "ROVER_V8"; case SACHS: return "SACHS"; case SATURN_ION_2004: return "SATURN_ION_2004"; +case SUBARUEJ20G_DEFAULTS: + return "SUBARUEJ20G_DEFAULTS"; case SUBARU_2003_WRX: return "SUBARU_2003_WRX"; case SUZUKI_VITARA: @@ -833,6 +833,92 @@ case GPIO_INVALID: return "GPIO_INVALID"; case GPIO_UNASSIGNED: return "GPIO_UNASSIGNED"; +case MC33972_PIN_1: + return "MC33972_PIN_1"; +case MC33972_PIN_21: + return "MC33972_PIN_21"; +case MC33972_PIN_22: + return "MC33972_PIN_22"; +case TLE6240_PIN_1: + return "TLE6240_PIN_1"; +case TLE6240_PIN_10: + return "TLE6240_PIN_10"; +case TLE6240_PIN_11: + return "TLE6240_PIN_11"; +case TLE6240_PIN_12: + return "TLE6240_PIN_12"; +case TLE6240_PIN_13: + return "TLE6240_PIN_13"; +case TLE6240_PIN_14: + return "TLE6240_PIN_14"; +case TLE6240_PIN_15: + return "TLE6240_PIN_15"; +case TLE6240_PIN_16: + return "TLE6240_PIN_16"; +case TLE6240_PIN_2: + return "TLE6240_PIN_2"; +case TLE6240_PIN_3: + return "TLE6240_PIN_3"; +case TLE6240_PIN_4: + return "TLE6240_PIN_4"; +case TLE6240_PIN_5: + return "TLE6240_PIN_5"; +case TLE6240_PIN_6: + return "TLE6240_PIN_6"; +case TLE6240_PIN_7: + return "TLE6240_PIN_7"; +case TLE6240_PIN_8: + return "TLE6240_PIN_8"; +case TLE6240_PIN_9: + return "TLE6240_PIN_9"; +case TLE8888_PIN_1: + return "TLE8888_PIN_1"; +case TLE8888_PIN_10: + return "TLE8888_PIN_10"; +case TLE8888_PIN_11: + return "TLE8888_PIN_11"; +case TLE8888_PIN_12: + return "TLE8888_PIN_12"; +case TLE8888_PIN_13: + return "TLE8888_PIN_13"; +case TLE8888_PIN_14: + return "TLE8888_PIN_14"; +case TLE8888_PIN_15: + return "TLE8888_PIN_15"; +case TLE8888_PIN_16: + return "TLE8888_PIN_16"; +case TLE8888_PIN_17: + return "TLE8888_PIN_17"; +case TLE8888_PIN_18: + return "TLE8888_PIN_18"; +case TLE8888_PIN_19: + return "TLE8888_PIN_19"; +case TLE8888_PIN_2: + return "TLE8888_PIN_2"; +case TLE8888_PIN_20: + return "TLE8888_PIN_20"; +case TLE8888_PIN_21: + return "TLE8888_PIN_21"; +case TLE8888_PIN_22: + return "TLE8888_PIN_22"; +case TLE8888_PIN_23: + return "TLE8888_PIN_23"; +case TLE8888_PIN_24: + return "TLE8888_PIN_24"; +case TLE8888_PIN_3: + return "TLE8888_PIN_3"; +case TLE8888_PIN_4: + return "TLE8888_PIN_4"; +case TLE8888_PIN_5: + return "TLE8888_PIN_5"; +case TLE8888_PIN_6: + return "TLE8888_PIN_6"; +case TLE8888_PIN_7: + return "TLE8888_PIN_7"; +case TLE8888_PIN_8: + return "TLE8888_PIN_8"; +case TLE8888_PIN_9: + return "TLE8888_PIN_9"; } return NULL; } diff --git a/firmware/controllers/algo/engine_configuration_generated_structures.h b/firmware/controllers/algo/engine_configuration_generated_structures.h index cff57b9c48..8495a8402b 100644 --- a/firmware/controllers/algo/engine_configuration_generated_structures.h +++ b/firmware/controllers/algo/engine_configuration_generated_structures.h @@ -1,4 +1,4 @@ -// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Fri Apr 12 18:24:15 EDT 2019 +// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sat Apr 13 10:44:04 EDT 2019 // begin #ifndef ENGINE_CONFIGURATION_GENERATED_H_ #define ENGINE_CONFIGURATION_GENERATED_H_ @@ -486,7 +486,7 @@ typedef struct { /** * offset 58 */ - brain_pin_e fuelPumpPin; + smart_pin_e fuelPumpPin; /** * offset 59 */ @@ -494,7 +494,7 @@ typedef struct { /** * offset 60 */ - brain_pin_e malfunctionIndicatorPin; + smart_pin_e malfunctionIndicatorPin; /** * offset 61 */ @@ -506,7 +506,7 @@ typedef struct { /** * offset 63 */ - brain_pin_e fanPin; + smart_pin_e fanPin; /** * some cars have a switch to indicate that clutch pedal is all the way down * offset 64 @@ -2403,7 +2403,15 @@ typedef struct { /** * offset 4028 */ - int mainUnusedEnd[613]; + spi_device_e tle6240spiDevice; + /** + * offset 4032 + */ + spi_device_e mc33972spiDevice; + /** + * offset 4036 + */ + int mainUnusedEnd[611]; /** total size 6480*/ } engine_configuration_s; @@ -2650,4 +2658,4 @@ typedef struct { #endif // end -// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Fri Apr 12 18:24:15 EDT 2019 +// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sat Apr 13 10:44:04 EDT 2019 diff --git a/firmware/controllers/algo/rusefi_enums.h b/firmware/controllers/algo/rusefi_enums.h index f18d94546f..f52c1a5135 100644 --- a/firmware/controllers/algo/rusefi_enums.h +++ b/firmware/controllers/algo/rusefi_enums.h @@ -5,7 +5,7 @@ * @note this file should probably not include any other files * * @date Jan 14, 2014 - * @author Andrey Belomutskiy, (c) 2012-2017 + * @author Andrey Belomutskiy, (c) 2012-2019 */ #ifndef RUSEFI_ENUMS_H_ @@ -789,8 +789,59 @@ typedef enum __attribute__ ((__packed__)) { GPIOH_14 = 128, GPIOH_15 = 129, + /* TLE6240 pins go right after on chips */ + //#define TLE6240_PIN(n) ((brain_pin_e)((int)BRAIN_PIN_LAST_ONCHIP + 1 + (n))) + TLE6240_PIN_1 = 130, + TLE6240_PIN_2 = 131, + TLE6240_PIN_3 = 132, + TLE6240_PIN_4 = 133, + TLE6240_PIN_5 = 134, + TLE6240_PIN_6 = 135, + TLE6240_PIN_7 = 136, + TLE6240_PIN_8 = 137, + TLE6240_PIN_9 = 138, + TLE6240_PIN_10 = 139, + TLE6240_PIN_11 = 140, + TLE6240_PIN_12 = 141, + TLE6240_PIN_13 = 142, + TLE6240_PIN_14 = 143, + TLE6240_PIN_15 = 144, + TLE6240_PIN_16 = 145, + + /* MC33972 pins go right after TLE6240 */ + //#define MC33972_PIN(n) ((brain_pin_e)((int)BRAIN_PIN_LAST_ONCHIP + 1 + 16 + (n))) + MC33972_PIN_1 = 146, + MC33972_PIN_21 = 166, + MC33972_PIN_22 = 167, + + TLE8888_PIN_1 = 168, + TLE8888_PIN_2 = 169, + TLE8888_PIN_3 = 170, + TLE8888_PIN_4 = 171, + TLE8888_PIN_5 = 172, + TLE8888_PIN_6 = 173, + TLE8888_PIN_7 = 174, + TLE8888_PIN_8 = 175, + TLE8888_PIN_9 = 176, + TLE8888_PIN_10 = 177, + TLE8888_PIN_11 = 178, + TLE8888_PIN_12 = 179, + TLE8888_PIN_13 = 180, + TLE8888_PIN_14 = 181, + TLE8888_PIN_15 = 182, + TLE8888_PIN_16 = 183, + TLE8888_PIN_17 = 184, + TLE8888_PIN_18 = 185, + TLE8888_PIN_19 = 186, + TLE8888_PIN_20 = 187, + TLE8888_PIN_21 = 188, + TLE8888_PIN_22 = 189, + TLE8888_PIN_23 = 190, + TLE8888_PIN_24 = 191, } brain_pin_e; +typedef brain_pin_e smart_pin_e; + /* Plase keep updating this define */ #define BRAIN_PIN_LAST_ONCHIP GPIOH_15 diff --git a/firmware/controllers/algo/rusefi_generated.h b/firmware/controllers/algo/rusefi_generated.h index cb866a8374..f831410906 100644 --- a/firmware/controllers/algo/rusefi_generated.h +++ b/firmware/controllers/algo/rusefi_generated.h @@ -1323,8 +1323,8 @@ #define mainRelayPin_offset_hex 2c2 #define mainRelayPinMode_offset 752 #define mainRelayPinMode_offset_hex 2f0 -#define mainUnusedEnd_offset 4028 -#define mainUnusedEnd_offset_hex fbc +#define mainUnusedEnd_offset 4036 +#define mainUnusedEnd_offset_hex fc4 #define malfunctionIndicatorPin_offset 660 #define malfunctionIndicatorPin_offset_hex 294 #define malfunctionIndicatorPinMode_offset 661 @@ -1397,6 +1397,8 @@ #define max31855spiDevice_offset_hex 324 #define maxKnockSubDeg_offset 552 #define maxKnockSubDeg_offset_hex 228 +#define mc33972spiDevice_offset 4032 +#define mc33972spiDevice_offset_hex fc0 #define measureMapOnlyInOneCylinder_offset 744 #define measureMapOnlyInOneCylinder_offset_hex 2e8 #define NARROW_BAND_WIDE_BAND_CONVERSION_SIZE 8 @@ -1492,6 +1494,7 @@ #define silentTriggerError_offset_hex 5b8 #define slowAdcAlpha_offset 2108 #define slowAdcAlpha_offset_hex 83c +#define smart_pin_e_enum "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" #define sparkDwellRpmBins_offset 332 #define sparkDwellRpmBins_offset_hex 14c #define sparkDwellValues_offset 364 @@ -1631,6 +1634,8 @@ #define timingMode_offset_hex 1c0 #define timingMultiplier_offset 9872 #define timingMultiplier_offset_hex 2690 +#define tle6240spiDevice_offset 4028 +#define tle6240spiDevice_offset_hex fbc #define tle8888_cs_offset 3129 #define tle8888_cs_offset_hex c39 #define tle8888_csPinMode_offset 3130 diff --git a/firmware/hw_layer/drivers/gpio/gpio_ext.h b/firmware/hw_layer/drivers/gpio/gpio_ext.h index 3279950509..14aca690b8 100644 --- a/firmware/hw_layer/drivers/gpio/gpio_ext.h +++ b/firmware/hw_layer/drivers/gpio/gpio_ext.h @@ -1,5 +1,5 @@ /* - * gpio_ext.h + * @file gpio_ext.h * * Abstraction layer definitions for extrenal gpios * diff --git a/firmware/hw_layer/drivers/gpio/mc33972.c b/firmware/hw_layer/drivers/gpio/mc33972.c index 005abf6a55..1019d4e307 100644 --- a/firmware/hw_layer/drivers/gpio/mc33972.c +++ b/firmware/hw_layer/drivers/gpio/mc33972.c @@ -19,10 +19,6 @@ #include "gpio/mc33972.h" #include "pin_repository.h" -#ifndef BOARD_MC33972_COUNT - #define BOARD_MC33972_COUNT 0 -#endif - #if (BOARD_MC33972_COUNT > 0) /* diff --git a/firmware/hw_layer/drivers/gpio/mc33972.h b/firmware/hw_layer/drivers/gpio/mc33972.h index d9f92fca8a..fa741604dd 100644 --- a/firmware/hw_layer/drivers/gpio/mc33972.h +++ b/firmware/hw_layer/drivers/gpio/mc33972.h @@ -11,6 +11,11 @@ #define HW_LAYER_MC33972_H_ #include +#include "efifeatures.h" + +#ifndef BOARD_MC33972_COUNT + #define BOARD_MC33972_COUNT 0 +#endif #define MC33972_INPUTS 22 diff --git a/firmware/hw_layer/drivers/gpio/tle6240.c b/firmware/hw_layer/drivers/gpio/tle6240.c index 50ca401ab5..0b7814c27f 100644 --- a/firmware/hw_layer/drivers/gpio/tle6240.c +++ b/firmware/hw_layer/drivers/gpio/tle6240.c @@ -25,10 +25,6 @@ #include "gpio/tle6240.h" #include "pin_repository.h" -#ifndef BOARD_TLE6240_COUNT - #define BOARD_TLE6240_COUNT 0 -#endif - #if (BOARD_TLE6240_COUNT > 0) /* diff --git a/firmware/hw_layer/drivers/gpio/tle6240.h b/firmware/hw_layer/drivers/gpio/tle6240.h index b7ae580b6d..31fd731aee 100644 --- a/firmware/hw_layer/drivers/gpio/tle6240.h +++ b/firmware/hw_layer/drivers/gpio/tle6240.h @@ -10,8 +10,13 @@ #ifndef HW_LAYER_TLE6240_H_ #define HW_LAYER_TLE6240_H_ +#include "efifeatures.h" #include +#ifndef BOARD_TLE6240_COUNT + #define BOARD_TLE6240_COUNT 0 +#endif + #define TLE6240_OUTPUTS 16 #define TLE6240_DIRECT_OUTPUTS 8 diff --git a/firmware/hw_layer/drivers/gpio/tle8888.c b/firmware/hw_layer/drivers/gpio/tle8888.c index 917534d0d3..1ecc891ebd 100644 --- a/firmware/hw_layer/drivers/gpio/tle8888.c +++ b/firmware/hw_layer/drivers/gpio/tle8888.c @@ -16,10 +16,11 @@ #if EFI_TLE8888 -/* to be removed */ +/* to be moved to smart_gpio.cpp */ #include "engine_configuration.h" - +/* to be moved to smart_gpio.cpp */ EXTERN_CONFIG; +#include "smart_gpio.h" #include "hardware.h" #include "efi_gpio.h" @@ -27,18 +28,12 @@ EXTERN_CONFIG; #include "gpio/tle8888.h" #include "pin_repository.h" + #if EFI_TUNER_STUDIO #include "tunerstudio.h" extern TunerStudioOutputChannels tsOutputChannels; #endif /* EFI_TUNER_STUDIO */ -/* TODO: move to board.h file */ -#define BOARD_TLE8888_COUNT 1 - -#ifndef BOARD_TLE8888_COUNT - #define BOARD_TLE8888_COUNT 0 -#endif - #if (BOARD_TLE8888_COUNT > 0) /* @@ -471,6 +466,7 @@ struct gpiochip_ops tle8888_ops = { /** * @brief TLE8888 driver add. * @details Checks for valid config + * @return return gpio chip base */ int tle8888_add(unsigned int index, const struct tle8888_config *cfg) @@ -530,9 +526,9 @@ static struct tle8888_config tle8888_cfg = { .end_cb = NULL, .ssport = GPIOF, .sspad = 0U, -#if defined(STM32F405xx) || defined(STM32F407xx) || defined (STM32F469xx) +#if defined(STM_F4_FAMILY) .cr1 = - SPI_CR1_DFF | // 16-bit transfer + SPI_CR1_16BIT_MODE | SPI_CR1_SSM | SPI_CR1_SSI | SPI_CR1_LSBFIRST | //LSB first @@ -540,9 +536,10 @@ static struct tle8888_config tle8888_cfg = { SPI_CR1_MSTR | SPI_CR1_CPHA | 0, - .cr2 = 0 -#elif defined (STM32F765xx) || defined(STM32F767xx) || defined(STM32F746xx) + .cr2 = SPI_CR2_16BIT_MODE +#elif defined(STM_F7_FAMILY) .cr1 = + SPI_CR1_16BIT_MODE | SPI_CR1_SSM | SPI_CR1_SSI | SPI_CR1_LSBFIRST | @@ -550,8 +547,7 @@ static struct tle8888_config tle8888_cfg = { ((3 << SPI_CR1_BR_Pos) & SPI_CR1_BR) | SPI_CR1_CPHA | 0, - /* 16-bit transfer */ - .cr2 = SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0 + .cr2 = SPI_CR2_16BIT_MODE #else unexpected platform #endif @@ -582,7 +578,8 @@ void initTle8888(DECLARE_ENGINE_PARAMETER_SIGNATURE) return; } - tle8888_add(0, &tle8888_cfg); + int chipBase = tle8888_add(0, &tle8888_cfg); + efiAssertVoid(OBD_PCM_Processor_Fault, chipBase == TLE8888_PIN_1, "tle8888"); /* Initial idea of gpiochips: * _add function should be called early on board init. diff --git a/firmware/hw_layer/drivers/gpio/tle8888.h b/firmware/hw_layer/drivers/gpio/tle8888.h index 58c255ead7..bf98085598 100644 --- a/firmware/hw_layer/drivers/gpio/tle8888.h +++ b/firmware/hw_layer/drivers/gpio/tle8888.h @@ -11,6 +11,12 @@ #include "global.h" #include +#include "efifeatures.h" + +#ifndef BOARD_TLE8888_COUNT + #define BOARD_TLE8888_COUNT 0 +#endif + #define TLE8888_OUTPUTS 24 /* 4 misc channels */ @@ -48,6 +54,9 @@ extern "C" /* cleanup !!!! */ void initTle8888(DECLARE_ENGINE_PARAMETER_SIGNATURE); +/** + * @return return gpio chip base + */ int tle8888_add(unsigned int index, const struct tle8888_config *cfg); #ifdef __cplusplus diff --git a/firmware/hw_layer/hardware.cpp b/firmware/hw_layer/hardware.cpp index bf5141eb83..621e6a6c0c 100644 --- a/firmware/hw_layer/hardware.cpp +++ b/firmware/hw_layer/hardware.cpp @@ -23,7 +23,7 @@ #include "yaw_rate_sensor.h" #include "pin_repository.h" #include "max31855.h" -#include "tle8888.h" +#include "smart_gpio.h" #include "accelerometer.h" #include "eficonsole.h" #include "console_io.h" @@ -464,16 +464,7 @@ void initHardware(Logging *l) { initSpiModules(boardConfiguration); #endif -#if EFI_TLE8888 - if (engineConfiguration->tle8888_cs != GPIO_UNASSIGNED) { - static OutputPin tle8888Cs; -// // SPI pins are enabled in initSpiModules() - tle8888Cs.initPin("tle8888 CS", engineConfiguration->tle8888_cs, - &engineConfiguration->tle8888_csPinMode); - } - - initTle8888(PASS_ENGINE_PARAMETER_SIGNATURE); -#endif + initSmartGpio(PASS_ENGINE_PARAMETER_SIGNATURE); #if EFI_HIP_9011 initHip9011(sharedLogger); diff --git a/firmware/hw_layer/hw_layer.mk b/firmware/hw_layer/hw_layer.mk index cc35c99fe7..6364641458 100644 --- a/firmware/hw_layer/hw_layer.mk +++ b/firmware/hw_layer/hw_layer.mk @@ -14,6 +14,7 @@ HW_LAYER_EMS_CPP = $(HW_LAYER_EGT_CPP) \ $(PROJECT_DIR)/hw_layer/digital_input_hw.cpp \ $(PROJECT_DIR)/hw_layer/digital_input_exti.cpp \ $(PROJECT_DIR)/hw_layer/hardware.cpp \ + $(PROJECT_DIR)/hw_layer/smart_gpio.cpp \ $(PROJECT_DIR)/hw_layer/neo6m.cpp \ $(PROJECT_DIR)/hw_layer/mmc_card.cpp \ $(PROJECT_DIR)/hw_layer/lcd/lcd_HD44780.cpp \ diff --git a/firmware/hw_layer/smart_gpio.cpp b/firmware/hw_layer/smart_gpio.cpp new file mode 100644 index 0000000000..d7635c9b6b --- /dev/null +++ b/firmware/hw_layer/smart_gpio.cpp @@ -0,0 +1,109 @@ +/* + * @file smart_gpio.cpp + * + * @date Apr 13, 2019 + * @author Andrey Belomutskiy, (c) 2012-2019 + */ + +#include "global.h" +#include "smart_gpio.h" +#include "efi_gpio.h" +#include "engine_configuration.h" +#include "gpio_ext.h" +#include "drivers/gpio/tle6240.h" +#include "drivers/gpio/mc33972.h" +#include "drivers/gpio/tle8888.h" + +#if EFI_PROD_CODE + +EXTERN_CONFIG; + +const struct tle6240_config tle6240 = { + .spi_bus = NULL /* TODO software lookup &SPID4 */, + .spi_config = { + .circular = false, + .end_cb = NULL, + .ssport = GPIOF, + .sspad = 0U, + .cr1 = + SPI_CR1_SSM | + SPI_CR1_SSI | + /* SPI_CR1_LSBFIRST | */ + ((3 << SPI_CR1_BR_Pos) & SPI_CR1_BR) | /* div = 16 */ + SPI_CR1_MSTR | + /* SPI_CR1_CPOL | */ // = 0 + SPI_CR1_CPHA | // = 1 + 0, + .cr2 = SPI_CR2_16BIT_MODE + }, + .direct_io = { + /* IN1 - D_TACH_OUT */ + [0] = {.port = GPIOG, .pad = 2}, + /* IN2..4 grounded */ + [1] = {.port = NULL}, + [2] = {.port = NULL}, + [3] = {.port = NULL}, + /* IN9 - D_INJ_5 */ + [4] = {.port = GPIOD, .pad = 15}, + /* IN10 - D_WASTGATE */ + [5] = {.port = GPIOD, .pad = 14}, + /* IN11 - D_IDLE_OPEN */ + [6] = {.port = GPIOC, .pad = 6}, + /* IN12 - D_IDLE_CLOSE */ + [7] = {.port = GPIOC, .pad = 7}, + }, + .reset = {.port = GPIOG, .pad = 3} +}; + + +const struct mc33972_config mc33972 = { + .spi_bus = NULL /* TODO software lookup &SPID4 */, + .spi_config = { + .circular = false, + .end_cb = NULL, + .ssport = GPIOB, + .sspad = 4U, + .cr1 = + SPI_CR1_SSM | + SPI_CR1_SSI | + /* SPI_CR1_LSBFIRST | */ + ((3 << SPI_CR1_BR_Pos) & SPI_CR1_BR) | /* div = 16 */ + SPI_CR1_MSTR | + /* SPI_CR1_CPOL | */ /* = 0 */ + SPI_CR1_CPHA | /* = 1 */ + 0, + .cr2 = SPI_CR2_24BIT_MODE + }, +}; + +#endif /* EFI_PROD_CODE */ + +void initSmartGpio() { + +#if (BOARD_TLE6240_COUNT > 0) + tle6240.spi_bus = getSpiDevice(engineConfiguration->tle6240spiDevice); + tle6240_add(0, &tle6240); +#else + gpiochip_use_gpio_base(TLE6240_OUTPUTS); +#endif + +#if (BOARD_MC33972_COUNT > 0) + mc33972.spi_bus = getSpiDevice(engineConfiguration->mc33972spiDevice); + // todo: propogate 'basePinOffset' parameter + mc33972_add(0, &mc33972); +#else + gpiochip_use_gpio_base(MC33972_INPUTS); +#endif + + +#if EFI_TLE8888 + if (engineConfiguration->tle8888_cs != GPIO_UNASSIGNED) { + static OutputPin tle8888Cs; +// // SPI pins are enabled in initSpiModules() + tle8888Cs.initPin("tle8888 CS", engineConfiguration->tle8888_cs, + &engineConfiguration->tle8888_csPinMode); + } + + initTle8888(PASS_ENGINE_PARAMETER_SIGNATURE); +#endif /* EFI_TLE8888 */ +} diff --git a/firmware/hw_layer/smart_gpio.h b/firmware/hw_layer/smart_gpio.h new file mode 100644 index 0000000000..5877a0aec8 --- /dev/null +++ b/firmware/hw_layer/smart_gpio.h @@ -0,0 +1,49 @@ +/* + * @file smart_gpio.h + * + * @date Apr 13, 2019 + * @author Andrey Belomutskiy, (c) 2012-2019 + */ + +#ifndef HW_LAYER_SMART_GPIO_H_ +#define HW_LAYER_SMART_GPIO_H_ + +/* TLE6240 pins go right after on chips */ +#define TLE6240_PIN(n) ((brain_pin_e)((int)BRAIN_PIN_LAST_ONCHIP + 1 + (n))) +/* MC33972 pins go right after TLE6240 */ +#define MC33972_PIN(n) ((brain_pin_e)((int)BRAIN_PIN_LAST_ONCHIP + 1 + 16 + (n))) + +void initSmartGpio(void); + +#if (defined(STM32F405xx) || defined(STM32F407xx) || defined (STM32F469xx)) + #define STM_F4_FAMILY +#elif (defined(STM32F765xx) || defined(STM32F767xx) || defined(STM32F746xx)) + #define STM_F7_FAMILY +#else + unexpected platform +#endif + + +#if EFI_TLE8888 || (BOARD_TLE6240_COUNT > 0) + +#if defined(STM_F4_FAMILY) + #define SPI_CR1_16BIT_MODE SPI_CR1_DFF + #define SPI_CR2_16BIT_MODE 0 + + // TODO + #define SPI_CR1_24BIT_MODE 0 + #define SPI_CR2_24BIT_MODE 0 +#elif defined(STM_F7_FAMILY) + #define SPI_CR1_16BIT_MODE 0 + #define SPI_CR2_16BIT_MODE SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0 + + #define SPI_CR1_24BIT_MODE 0 + /* 3 x 8-bit transfer */ + #define SPI_CR2_24BIT_MODE SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0 +#else + unexpected platform +#endif + +#endif /* EFI_TLE8888 */ + +#endif /* HW_LAYER_SMART_GPIO_H_ */ diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 900958e784..00d1a1637f 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -179,8 +179,13 @@ custom mass_storage_e 4 bits, U32, @OFFSET@, [0:1], @@mass_storage_e_enum@@ custom brain_input_pin_e 1 bits, U08, @OFFSET@, [0:6], @@brain_input_pin_e_enum@@ #define brain_pin_e_enum "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" - custom brain_pin_e 1 bits, U08, @OFFSET@, [0:7], @@brain_pin_e_enum@@ +#define smart_pin_e_enum "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +custom smart_pin_e 1 bits, U08, @OFFSET@, [0:7], @@smart_pin_e_enum@@ + + + + #define pin_output_mode_e_enum "default", "default inverted", "open collector", "open collector inverted" custom pin_output_mode_e 1 bits, U08, @OFFSET@, [0:1], @@pin_output_mode_e_enum@@ @@ -496,13 +501,13 @@ float mapFrequency100Kpa;;"Hz", 1, 0, 0, 100000, 2 brain_pin_e gps_rx_pin; brain_pin_e gps_tx_pin; - brain_pin_e fuelPumpPin; + smart_pin_e fuelPumpPin; pin_output_mode_e fuelPumpPinMode; - brain_pin_e malfunctionIndicatorPin; + smart_pin_e malfunctionIndicatorPin; pin_output_mode_e malfunctionIndicatorPinMode; pin_output_mode_e fanPinMode; - brain_pin_e fanPin; + smart_pin_e fanPin; brain_pin_e clutchDownPin;some cars have a switch to indicate that clutch pedal is all the way down brain_pin_e alternatorControlPin; @@ -1005,8 +1010,10 @@ tChargeMode_e tChargeMode; float tpsAccelFractionDivisor;+A fraction divisor: 1 or less = entire portion at once, or split into diminishing fractions;"coef", 1, 0, 0, 100, 2 spi_device_e tle8888spiDevice; + spi_device_e tle6240spiDevice; + spi_device_e mc33972spiDevice; - int[613] mainUnusedEnd; + int[611] mainUnusedEnd; end_struct diff --git a/firmware/tunerstudio/rusefi.ini b/firmware/tunerstudio/rusefi.ini index 505ac2d349..f078e87bab 100644 --- a/firmware/tunerstudio/rusefi.ini +++ b/firmware/tunerstudio/rusefi.ini @@ -68,7 +68,7 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Fri Apr 12 18:24:15 EDT 2019 +; this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sat Apr 13 10:44:04 EDT 2019 pageSize = 20000 page = 1 @@ -252,12 +252,12 @@ page = 1 HD44780_db7 = bits, U08, 655, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" gps_rx_pin = bits, U08, 656, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" gps_tx_pin = bits, U08, 657, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" - fuelPumpPin = bits, U08, 658, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + fuelPumpPin = bits, U08, 658, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" fuelPumpPinMode = bits, U08, 659, [0:1], "default", "default inverted", "open collector", "open collector inverted" - malfunctionIndicatorPin = bits, U08, 660, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + malfunctionIndicatorPin = bits, U08, 660, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" malfunctionIndicatorPinMode = bits, U08, 661, [0:1], "default", "default inverted", "open collector", "open collector inverted" fanPinMode = bits, U08, 662, [0:1], "default", "default inverted", "open collector", "open collector inverted" - fanPin = bits, U08, 663, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + fanPin = bits, U08, 663, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" clutchDownPin = bits, U08, 664, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" alternatorControlPin = bits, U08, 665, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" alternatorControlPinMode = bits, U08, 666, [0:1], "default", "default inverted", "open collector", "open collector inverted" @@ -848,7 +848,9 @@ page = 1 tpsAccelFractionPeriod = scalar, S16, 4018, "cycles", 1, 0, 0, 500, 0 tpsAccelFractionDivisor = scalar, F32, 4020, "coef", 1, 0, 0, 100, 2 tle8888spiDevice = bits,U32, 4024, [0:1], "Off", "SPI1", "SPI2", "SPI3" -;no TS info - skipping mainUnusedEnd offset 4028 + tle6240spiDevice = bits,U32, 4028, [0:1], "Off", "SPI1", "SPI2", "SPI3" + mc33972spiDevice = bits,U32, 4032, [0:1], "Off", "SPI1", "SPI2", "SPI3" +;no TS info - skipping mainUnusedEnd offset 4036 cltCrankingCorrBins = array, F32, 6480, [8], "C", 1, 0, -100.0, 250.0, 2 cltCrankingCorr = array, F32, 6512, [8], "%", 1, 0, 0.0, 500.0, 2 idleAdvanceBins = array, F32, 6544, [8], "RPM", 1, 0, 0.0, 18000, 2 @@ -2413,6 +2415,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" dialog = allPins1 field = "TLE8888 CS", tle8888_cs field = "TLE8888 SPI", tle8888spiDevice + field = "tle6240 SPI", tle6240spiDevice + field = "mc33972 SPI", mc33972spiDevice field = "warninig Led", warninigLedPin field = "fatal Error Led", fatalErrorPin field = "MAP ADC input", map_sensor_hwChannel diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index 2c86b708b3..96ec68fed4 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -1504,6 +1504,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" dialog = allPins1 field = "TLE8888 CS", tle8888_cs field = "TLE8888 SPI", tle8888spiDevice + field = "tle6240 SPI", tle6240spiDevice + field = "mc33972 SPI", mc33972spiDevice field = "warninig Led", warninigLedPin field = "fatal Error Led", fatalErrorPin field = "MAP ADC input", map_sensor_hwChannel diff --git a/java_console/models/src/com/rusefi/config/Fields.java b/java_console/models/src/com/rusefi/config/Fields.java index 1aa0662957..e717338678 100644 --- a/java_console/models/src/com/rusefi/config/Fields.java +++ b/java_console/models/src/com/rusefi/config/Fields.java @@ -1,6 +1,6 @@ package com.rusefi.config; -// this file was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Thu Apr 11 23:16:46 EDT 2019 +// this file was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sat Apr 13 10:44:04 EDT 2019 public class Fields { public static final int accelerometerSpiDevice_offset = 2736; public static final int acCutoffHighRpm_offset = 1498; @@ -861,7 +861,7 @@ public class Fields { public static final int mafSensorType_offset = 948; public static final int mainRelayPin_offset = 706; public static final int mainRelayPinMode_offset = 752; - public static final int mainUnusedEnd_offset = 4028; + public static final int mainUnusedEnd_offset = 4036; public static final int malfunctionIndicatorPin_offset = 660; public static final int malfunctionIndicatorPin_offset_hex = 294; public static final int malfunctionIndicatorPinMode_offset = 661; @@ -913,6 +913,7 @@ public class Fields { public static final int max31855spiDevice_offset_hex = 324; public static final int maxKnockSubDeg_offset = 552; public static final int maxKnockSubDeg_offset_hex = 228; + public static final int mc33972spiDevice_offset = 4032; public static final int measureMapOnlyInOneCylinder_offset = 744; public static final int NARROW_BAND_WIDE_BAND_CONVERSION_SIZE = 8; public static final int narrowToWideOxygen_offset = 2320; @@ -1048,6 +1049,7 @@ public class Fields { public static final int timingMode_offset = 448; public static final int timingMultiplier_offset = 9872; public static final int timingMultiplier_offset_hex = 2690; + public static final int tle6240spiDevice_offset = 4028; public static final int tle8888_cs_offset = 3129; public static final int tle8888_csPinMode_offset = 3130; public static final int tle8888spiDevice_offset = 4024; @@ -1374,12 +1376,13 @@ public class Fields { public static final Field HD44780_DB7 = Field.create("HD44780_DB7", 655, FieldType.INT8, brain_pin_e); public static final Field GPS_RX_PIN = Field.create("GPS_RX_PIN", 656, FieldType.INT8, brain_pin_e); public static final Field GPS_TX_PIN = Field.create("GPS_TX_PIN", 657, FieldType.INT8, brain_pin_e); - public static final Field FUELPUMPPIN = Field.create("FUELPUMPPIN", 658, FieldType.INT8, brain_pin_e); + public static final String[] smart_pin_e = {"NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"}; + public static final Field FUELPUMPPIN = Field.create("FUELPUMPPIN", 658, FieldType.INT8, smart_pin_e); public static final Field FUELPUMPPINMODE = Field.create("FUELPUMPPINMODE", 659, FieldType.INT8, pin_output_mode_e); - public static final Field MALFUNCTIONINDICATORPIN = Field.create("MALFUNCTIONINDICATORPIN", 660, FieldType.INT8, brain_pin_e); + public static final Field MALFUNCTIONINDICATORPIN = Field.create("MALFUNCTIONINDICATORPIN", 660, FieldType.INT8, smart_pin_e); public static final Field MALFUNCTIONINDICATORPINMODE = Field.create("MALFUNCTIONINDICATORPINMODE", 661, FieldType.INT8, pin_output_mode_e); public static final Field FANPINMODE = Field.create("FANPINMODE", 662, FieldType.INT8, pin_output_mode_e); - public static final Field FANPIN = Field.create("FANPIN", 663, FieldType.INT8, brain_pin_e); + public static final Field FANPIN = Field.create("FANPIN", 663, FieldType.INT8, smart_pin_e); public static final Field CLUTCHDOWNPIN = Field.create("CLUTCHDOWNPIN", 664, FieldType.INT8, brain_pin_e); public static final Field ALTERNATORCONTROLPIN = Field.create("ALTERNATORCONTROLPIN", 665, FieldType.INT8, brain_pin_e); public static final Field ALTERNATORCONTROLPINMODE = Field.create("ALTERNATORCONTROLPINMODE", 666, FieldType.INT8, pin_output_mode_e); @@ -1937,6 +1940,8 @@ public class Fields { public static final Field TPSACCELFRACTIONPERIOD = Field.create("TPSACCELFRACTIONPERIOD", 4018, FieldType.INT16); public static final Field TPSACCELFRACTIONDIVISOR = Field.create("TPSACCELFRACTIONDIVISOR", 4020, FieldType.FLOAT); public static final Field TLE8888SPIDEVICE = Field.create("TLE8888SPIDEVICE", 4024, FieldType.INT); + public static final Field TLE6240SPIDEVICE = Field.create("TLE6240SPIDEVICE", 4028, FieldType.INT); + public static final Field MC33972SPIDEVICE = Field.create("MC33972SPIDEVICE", 4032, FieldType.INT); public static final Field FSIOFORMULAS1 = Field.create("FSIOFORMULAS1", 6672, FieldType.INT); public static final Field FSIOFORMULAS2 = Field.create("FSIOFORMULAS2", 6872, FieldType.INT); public static final Field FSIOFORMULAS3 = Field.create("FSIOFORMULAS3", 7072, FieldType.INT);