/* * @file engine_types.h * * See 'integration API' note in rusefi_enums.h * TODO: spell out which enums belong here and which enums belong in rusefi_enums.h for what reasons * * @date Oct 23, 2021 * @author Andrey Belomutskiy, (c) 2012-2021 */ #pragma once #include "generated_lookup_meta.h" /** * https://github.com/rusefi/rusefi/wiki/Engine-Types */ enum class engine_type_e : uint16_t { DEFAULT_FRANKENSO = 0, MIATA_PROTEUS_TCU = 1, /** * 1995 Dodge Neon * http://rusefi.com/forum/viewtopic.php?t=360 */ DODGE_NEON_1995 = 2, /** * 1996 1.3 Ford Aspire * http://rusefi.com/forum/viewtopic.php?t=375 */ FORD_ASPIRE_1996 = 3, /** * See also PROTEUS_LUA_DEMO */ MRE_SECONDARY_CAN = 4, NISSAN_PRIMERA = 5, HARLEY = 6, FORD_INLINE_6_1995 = 7, /** * one cylinder engine * 139qmb 50-90cc * http://rusefi.com/forum/viewtopic.php?f=3&t=332 */ GY6_139QMB = 8, POLARIS_RZR = 9, MAZDA_MIATA_NA96 = 10, FORD_COYOTE = 11, MITSUBISHI_3A92 = 12, TOYOTA_1NZ_FE = 13, FORD_ESCORT_GT = 14, FUEL_BENCH = 15, MITSUBISHI_4G93 = 16, UNUSED17 = 17, TEST_33816 = 18, TEST_ROTARY = 19, // Frankenso board FRANKENSO_MIATA_NA6_MAP = 41, MAZDA_MIATA_NC = 20, UNUSED_21 = 21, // BMW e36 etc BMW_M52 = 22, /** * microRusEFI used as Body Control Module BCM BCU */ MRE_BODY_CONTROL = 23, UNUSED24 = 24, /** * See also MRE_SECONDARY_CAN */ PROTEUS_LUA_DEMO = 25, TEST_ENGINE = 26, PROTEUS_GM_LS_4 = 27, TEST_CRANK_ENGINE = 28, // two stroke SACHS = 29, PROTEUS_ANALOG_PWM_TEST = 30, MRE_BOARD_NEW_TEST = 31, VW_ABA = 32, ME17_9_MISC = 33, MAZDA_MIATA_NA6 = 34, ET_UNUSED_35 = 35, HELLEN_128_MERCEDES_4_CYL = 36, MRE_SUBARU_EJ18 = 37, DISCOVERY_PDM = 38, PROTEUS_VW_B6 = 39, // used by unit tests and HW CI FRANKENSO_BMW_M73_F = 40, PROTEUS_QC_TEST_BOARD = 42, HONDA_600 = 43, TOYOTA_2JZ_GTE_VVTi = 44, TEST_ENGINE_VVT = 45, DODGE_NEON_2003_CRANK = 46, UNUSED47 = 47, // todo: add wastegate case into HW CI TEST_DC_WASTEGATE_DISCOVERY = 48, FRANKENSO_QA_ENGINE = 49, BMW_M73_MRE = 50, BMW_M73_MRE_SLAVE = 51, TEST_ISSUE_366_BOTH = 52, TEST_ISSUE_366_RISE = 53, MAVERICK_X3 = 54, ET_UNUSED_55 = 55, ET_UNUSED_56 = 56, HELLEN_HONDA_BCM = 57, ETB_BENCH_ENGINE = 58, FRANKENSO_TEST_33810 = 59, L9779_BENCH_ENGINE = 60, EEPROM_BENCH_ENGINE = 61, MRE_VW_B6 = 62, PROTEUS_BMW_M73 = 63, DODGE_RAM = 64, UNUSED_65 = 65, HONDA_OBD1 = 66, UNUSED67 = 67, MERCEDES_M111 = 68, MAZDA_MIATA_NB2 = 69, SUBARU_EG33 = 70, HELLEN_121_VAG_4_CYL = 71, HELLEN_121_NISSAN_6_CYL = 72, PROTEUS_STIM_QC = 73, HELLEN_4CHAN_STIM_QC = 74, HELLEN_2CHAN_STIM_QC = 75, HELLEN_154_VAG = 76, HELLEN_121_VAG_5_CYL = 77, HELLEN_121_VAG_V6_CYL = 78, HELLEN_121_VAG_VR6_CYL = 79, HELLEN_121_VAG_8_CYL = 81, MAZDA_MIATA_NA94 = 80, // 82 HELLEN_154_HYUNDAI_COUPE_BK1 = 82, MAZDA_MIATA_NB1 = 83, // 84 HELLEN_121_NISSAN_4_CYL = 84, HELLEN_121_NISSAN_8_CYL = 85, MAZDA_MIATA_NB2_36 = 86, HELLEN_121_NISSAN_ALMERA_N16 = 87, HELLEN_128_MERCEDES_6_CYL = 88, HELLEN_128_MERCEDES_8_CYL = 89, HONDA_K = 90, HONDA_OBD2A = 91, SIMULATOR_CONFIG = 92, UNUSED93 = 93, UNUSED94 = 94, HELLEN_154_HYUNDAI_COUPE_BK2 = 95, WASTEGATE_PROTEUS_TEST = 96, UNUSED_97 = 97, GM_SBC = 98, /** * this configuration has as few pins configured as possible */ MINIMAL_PINS = 99, // use this in case of emergency without github actions? :) TEST_100 = 100, TEST_101 = 101, UNUSED102 = 102, PROTEUS_NISSAN_VQ35 = 103, // both Proteus and 4chan/8chan HYUNDAI_PB = 104, FERRARI_F136 = 105, }; /** * https://rusefi.com//wiki/index.php?title=Manual:Debug_fields */ typedef enum __attribute__ ((__packed__)) { DBG_0 = 0, DBG_TPS_ACCEL = 1, DBG_2 = 2, DBG_STEPPER_IDLE_CONTROL = 3, DBG_EL_ACCEL = 4, DBG_5 = 5, DBG_6 = 6, DBG_7 = 7, DBG_8 = 8, DBG_9 = 9, DBG_10 = 10, DBG_11 = 11, DBG_12 = 12, DBG_13 = 13, DBG_SR5_PROTOCOL = 14, DBG_KNOCK = 15, DBG_16 = 16, /** * See also DBG_ELECTRONIC_THROTTLE_EXTRA */ DBG_ELECTRONIC_THROTTLE_PID = 17, DBG_EXECUTOR = 18, DBG_19 = 19, DBG_20 = 20, DBG_21 = 21, DBG_22 = 22, UNUSED23 = 23, DBG_24 = 24, DBG_25 = 25, DBG_26 = 26, DBG_MAP = 27, DBG_METRICS = 28, DBG_29 = 29, DBG_ION = 30, DBG_TLE8888 = 31, DBG_32 = 32, DBG_DWELL_METRIC = 33, DBG_34 = 34, DBG_35 = 35, DBG_36 = 36, DBG_37 = 37, DBG_38 = 38, DBG_ETB_AUTOTUNE = 39, DBG_COMPOSITE_LOG = 40, DBG_UNUSED41 = 41, DBG_UNUSED_42 = 42, DBG_43 = 43, DBG_DYNO_VIEW = 44, DBG_LOGIC_ANALYZER = 45, DBG_46 = 46, DBG_TCU = 47, DBG_LUA = 48, } debug_mode_e; /** * @see http://rusefi.com/wiki/index.php?title=Manual:Software:Trigger * TriggerProcessor.java has this "trigger_type_e" name hard-coded! */ enum class trigger_type_e : uint32_t { TT_TOOTHED_WHEEL = 0, TT_FORD_ASPIRE = 1, TT_DODGE_NEON_1995 = 2, // https://rusefi.com/wiki/index.php?title=Manual:Software:Trigger#Mazda_Miata_NA TT_MAZDA_MIATA_NA = 3, TT_VVT_FORD_COYOTE = 4, TT_GM_7X = 5, TT_DAIHATSU_3_CYL = 6, TT_MAZDA_SOHC_4 = 7, // "60/2" // See also TT_ONE_PLUS_TOOTHED_WHEEL_60_2 TT_TOOTHED_WHEEL_60_2 = 8, TT_TOOTHED_WHEEL_36_1 = 9, TT_MERCEDES_2_SEGMENT = 10, // a single tooth on lazy Hall or VR. See also TT_HALF_MOON TT_NARROW_SINGLE_TOOTH = 11, TT_SUBARU_EZ30 = 12, TT_VVT_MAZDA_SKYACTIV = 13, // cam-based TT_DODGE_NEON_2003_CAM = 14, TT_MAZDA_DOHC_1_4 = 15, // * "1+1" - one tooth on primary channel, one tooth on secondary channel // * Note: this trigger is used only by unit tests // * see also TT_ONE a bit below TT_ONE_PLUS_ONE = 16, /** * VVT for 2JZ * three evenly spaces teeth */ TT_VVT_TOYOTA_3_TOOTH = 17, // just one channel with one perfectly 180 degree tooth with proper reliable Hall sensor, see also TT_NARROW_SINGLE_TOOTH TT_HALF_MOON = 18, TT_DODGE_RAM = 19, // * It looks like this is the VR shape if you have your wires flipped TT_60_2_VW = 20, TT_BENELLI_TRE = 21, TT_DODGE_STRATUS = 22, // Subaru but also Mazda RX-8, we suspect that it's VR TT_36_2_2_2 = 23, // * only the 4 tooth signal, without the 360 signal // * 8,2,2,2 Nissan pattern TT_NISSAN_SR20VE = 24, TT_2JZ_3_34_SIMULATION_ONLY = 25, TT_ROVER_K = 26, // GM 24x with 5/10 degree gaps TT_GM_24x_5 = 27, TT_HONDA_CBR_600 = 28, TT_MITSU_4G9x_CAM = 29, TT_CHRYSLER_NGC_36_2_2 = 30, // skipped 3/1 with cam sensor for testing TT_3_1_CAM = 31, // crank-based in case your cam is broken TT_DODGE_NEON_2003_CRANK = 32, // * this takes care of crank sensor, VVT sensor should be configured separately // * for VVT simulated trigger signal we have https://github.com/rusefi/rusefi/issues/566 gap // * See also TT_MAZDA_MIATA_VVT_TEST TT_MIATA_VVT = 33, TT_MITSU_4G63_CAM = 34, // * a version of NB1 with shifted CAM, useful for VVT testing & development TT_MAZDA_MIATA_VVT_TEST = 35, TT_SUBARU_7_6 = 36, // this one is 6 cylinder, see TT_JEEP_4_cyl for 4 cylinders TT_JEEP_18_2_2_2 = 37, TT_12_TOOTH_CRANK = 38, TT_DODGE_NEON_1995_ONLY_CRANK = 39, // Jeep XJ 2500cc 4 cylinder. See also TT_JEEP_18_2_2_2 for 6 cylinders TT_JEEP_4_CYL = 40, // magneti marelli Fiat/Lancia IAW P8 from the 90', 2.0 16 v turbo engine - Lancia Coupe // https://rusefi.com/forum/viewtopic.php?f=5&t=1440 TT_FIAT_IAW_P8 = 41, TT_FORD_ST170 = 42, // * cam sensor of Mazda Miata NB2 - the VVT signal shape TT_VVT_MIATA_NB = 43, TT_RENIX_44_2_2 = 44, //* Same as TT_RENIX_44_2_2 but repeated three times, not two. TT_RENIX_66_2_2_2 = 45, // * Honda K crank shape TT_HONDA_K_CRANK_12_1 = 46, TT_VVT_BOSCH_QUICK_START = 47, TT_TOOTHED_WHEEL_36_2 = 48, TT_SUBARU_SVX = 49, TT_1_16 = 50, // todo: remove this trigger once we have https://github.com/rusefi/rusefi/issues/2073 TT_SUBARU_7_WITHOUT_6 = 51, TT_NISSAN_MR18_CAM_VVT = 52, // https://rusefi.com/forum/viewtopic.php?f=5&t=1912 TT_TRI_TACH = 53, TT_GM_60_2_2_2 = 54, // * https://rusefi.com/forum/viewtopic.php?f=5&t=1937 // * HALL sensor, and can be used on all Skoda's engines (from 1000MB to 130, Favorit, Felicia) TT_SKODA_FAVORIT = 55, TT_VVT_BARRA_3_PLUS_1 = 56, TT_KAWA_KX450F = 57, TT_NISSAN_VQ35 = 58, TT_VVT_NISSAN_VQ35 = 59, TT_NISSAN_VQ30 = 60, TT_NISSAN_QR25 = 61, TT_VVT_MITSUBISHI_3A92 = 62, TT_SUBARU_SVX_CRANK_1 = 63, TT_SUBARU_SVX_CAM_VVT = 64, TT_FORD_TFI_PIP = 65, TT_SUZUKI_G13B = 66, // * Honda K exhaust cam shaft TT_HONDA_K_CAM_4_1 = 67, TT_NISSAN_MR18_CRANK = 68, TT_TOOTHED_WHEEL_32_2 = 69, // Mitsubishi 4B11 would be this with half moon camshaft // 4G69 would use it with different cam TT_36_2_1 = 70, // Mitsubishi 3 cyl and 6 cyl TT_36_2_1_1 = 71, TT_3_TOOTH_CRANK = 72, TT_VVT_TOYOTA_4_1 = 73, // GM 24x with 3/12 degree gaps TT_GM_24x_3 = 74, // Renault F3R TT_60_2_2_F3R = 75, TT_MITSU_4G63_CRANK = 76, /* pull-up'ed(inverted in): pull down 2x 30 deg before tdc on cam, till tdc. e.g. Sovek, Saruman ignition blind type */ TT_60DEG_TOOTH = 77, // trigger setup matches 4G15T TT_VVT_MITSUBISHI_4G69 = 78, TT_VVT_MITSU_6G72 = 79, TT_6_TOOTH_CRANK = 80, TT_DAIHATSU_4_CYL = 81, // do not forget to edit "#define trigger_type_e_enum" line in integration/rusefi_config.txt file to propogate new value to rusefi.ini TS project // do not forget to invoke "gen_config.bat" once you make changes to integration/rusefi_config.txt // todo: one day a hero would integrate some of these things into Makefile in order to reduce manual magic // // Another point: once you add a new trigger, run get_trigger_images.bat which would run rusefi_test.exe from unit_tests // TT_UNUSED = 82, // this is used if we want to iterate over all trigger types }; typedef enum { TS_14_0 = 0, TS_14_1 = 1, TS_GRAB_TPS_CLOSED = 2, TS_GRAB_TPS_WOT = 3, TS_14_4 = 4, TS_14_5 = 5, TS_GRAB_PEDAL_UP = 6, TS_GRAB_PEDAL_WOT = 7, TS_RESET_TLE8888 = 8, TS_14_9 = 9, TS_WRITE_FLASH = 0x0A, TS_ETB_RESET = 0x0B, TS_ETB_START_AUTOTUNE = 0x0C, TS_TRIGGER_STIMULATOR_ENABLE = 0x0D, TS_ETB_AUTOCAL_0 = 0x0E, TS_TRIGGER_STIMULATOR_DISABLE = 0x0F, TS_ETB_STOP_AUTOTUNE = 0x10, TS_ETB_AUTOCAL_1 = 0x11, TS_WIDEBAND_UPDATE = 0x12, TS_EXTERNAL_TRIGGER_STIMULATOR_ENABLE = 0x13, TS_RESET_MC33810 = 0x14, TS_BURN_WITHOUT_FLASH = 0x15, } ts_14_command; typedef enum { TS_DEBUG_MODE = 0, TS_COMMAND_1 = 1, TS_COMMAND_2 = 2, TS_COMMAND_3 = 3, TS_COMMAND_4 = 4, TS_COMMAND_5 = 5, TS_COMMAND_6 = 6, TS_COMMAND_7 = 7, TS_COMMAND_8 = 8, TS_COMMAND_9 = 9, TS_COMMAND_10 = 10, TS_COMMAND_11 = 11, TS_COMMAND_12 = 12, TS_COMMAND_13 = 13, TS_COMMAND_14 = 14, TS_COMMAND_15 = 15, TS_COMMAND_16 = 16, TS_CLEAR_WARNINGS = 17, TS_IGNITION_CATEGORY = 18, TS_INJECTOR_CATEGORY = 19, TS_X14 = 20, // 0x15 TS_WIDEBAND = 21, TS_BENCH_CATEGORY = 22, TS_UNUSED_23 = 23, TS_UNUSED_24 = 24, TS_SOLENOID_CATEGORY = 25, TS_UNUSED_26 = 26, TS_UNUSED_27 = 27, TS_UNUSED_28 = 28, TS_UNUSED_29 = 29, TS_SET_ENGINE_TYPE = 30, TS_SET_DEFAULT_ENGINE = 31, TS_LUA_OUTPUT_CATEGORY = 32, } ts_command_e; typedef enum { BENCH_MAIN_RELAY, // 0 BENCH_FUEL_PUMP, BENCH_STARTER_ENABLE_RELAY, BENCH_STARTER_DISABLE_RELAY, BENCH_FAN_RELAY, BENCH_FAN_RELAY_2, // 5 BENCH_AC_COMPRESSOR_RELAY, BENCH_CHECK_ENGINE_LIGHT, BENCH_IDLE_VALVE, // 8 BENCH_HPFP_VALVE, BENCH_GPPWM1_VALVE, BENCH_GPPWM2_VALVE, BENCH_GPPWM3_VALVE, BENCH_GPPWM4_VALVE, BENCH_SECOND_IDLE_VALVE, BENCH_CANCEL, BENCH_VVT0_VALVE, // 16 BENCH_VVT1_VALVE, BENCH_VVT2_VALVE, BENCH_VVT3_VALVE, BENCH_AUXOUT0, BENCH_AUXOUT1, BENCH_AUXOUT2, BENCH_AUXOUT3, BENCH_AUXOUT4, BENCH_AUXOUT5, BENCH_AUXOUT6, BENCH_AUXOUT7, HD_ACR, HD_ACR2, } bench_mode_e;