fome-fw/firmware/controllers/algo/rusefi_enums.h

1052 lines
23 KiB
C
Raw Normal View History

2015-07-10 06:01:56 -07:00
/**
* @file rusefi_enums.h
* @brief Fundamental rusEfi enumerable types live here
*
* @note this file should probably not include any other files
*
* @date Jan 14, 2014
2020-01-07 21:02:40 -08:00
* @author Andrey Belomutskiy, (c) 2012-2020
2015-07-10 06:01:56 -07:00
*/
2019-11-14 21:00:13 -08:00
#pragma once
2015-07-10 06:01:56 -07:00
#include "efifeatures.h"
#include "obd_error_codes.h"
#include "rusefi_generated.h"
2019-06-04 09:46:55 -07:00
// we do not want to start the search for header from current folder so we use brackets here
// https://stackoverflow.com/questions/21593/what-is-the-difference-between-include-filename-and-include-filename
#include <rusefi_hw_enums.h>
2018-09-29 07:31:19 -07:00
2016-02-14 10:02:00 -08:00
// I believe that TunerStudio curve editor has a bug with F32 support
// because of that bug we cannot have '1.05' for 5% extra multiplier
2019-05-27 08:17:28 -07:00
/**
* *0.01 because of https://sourceforge.net/p/rusefi/tickets/153/
*/
#define PERCENT_MULT 100.0f
2019-05-27 08:17:28 -07:00
#define PERCENT_DIV 0.01f
2016-02-14 10:02:00 -08:00
2018-01-28 11:02:32 -08:00
/**
* http://rusefi.com/wiki/index.php?title=Manual:Engine_Type
*/
2015-07-10 06:01:56 -07:00
typedef enum {
2020-08-29 12:41:09 -07:00
DEFAULT_FRANKENSO = ET_DEFAULT_FRANKENSO,
2015-07-10 06:01:56 -07:00
/**
* 1995 Dodge Neon
* http://rusefi.com/forum/viewtopic.php?t=360
*/
DODGE_NEON_1995 = ET_DODGE_NEON_1995,
2015-07-10 06:01:56 -07:00
/**
* 1996 1.3 Ford Aspire
* http://rusefi.com/forum/viewtopic.php?t=375
*/
FORD_ASPIRE_1996 = ET_FORD_ASPIRE,
2015-07-10 06:01:56 -07:00
NISSAN_PRIMERA = 5,
HONDA_ACCORD_CD = 6,
FORD_INLINE_6_1995 = 7,
2015-09-12 12:02:40 -07:00
/**
* one cylinder engine
* 139qmb 50-90cc
* http://rusefi.com/forum/viewtopic.php?f=3&t=332
*/
2015-07-10 06:01:56 -07:00
GY6_139QMB = 8,
2020-11-28 19:49:28 -08:00
MIATA_PROTEUS_TCU = ET_MIATA_TCU_PROTEUS,
MAZDA_MIATA_NB1 = 9,
MRE_MIATA_NB2_MAP = ET_MRE_MIATA_NB2_MAP,
2020-07-29 11:53:36 -07:00
MRE_MIATA_NA6_VAF = ET_MRE_MIATA_NA6_VAF,
2020-05-21 17:44:14 -07:00
MRE_MIATA_NB2_ETB = 13,
2020-11-28 19:49:28 -08:00
MRE_MIATA_NA6_MAP = ET_MRE_MIATA_NA6_MAP,
MRE_MIATA_NB2_MAF = ET_MRE_MIATA_NB2_MAF,
// Frankenstein board
MIATA_1990 = 19,
// Frankenso board
MIATA_NA6_MAP = ET_FRANKENSO_MIATA_NA6,
MRE_MIATA_94_MAP = ET_MRE_MIATA_94_MAP,
MIATA_1996 = 21,
2015-07-10 06:01:56 -07:00
2020-08-29 12:41:09 -07:00
FORD_ESCORT_GT = ET_FORD_ESCORT_GT,
2015-07-10 06:01:56 -07:00
MITSU_4G93 = 16,
/**
* a version of HONDA_ACCORD_CD which only uses two of three trigger input sensors
*/
HONDA_ACCORD_CD_TWO_WIRES = 17,
HONDA_ACCORD_CD_DIP = 18,
SUBARU_2003_WRX = 22,
2020-08-29 06:41:02 -07:00
/**
* microRusEFI used as Body Control Module BCM BCU
2020-08-29 06:41:02 -07:00
*/
2020-08-29 13:49:56 -07:00
MRE_BODY_CONTROL = ET_MRE_BODY_CONTROL,
2019-11-18 20:45:35 -08:00
BMW_M73_M = 24,
2015-07-10 06:01:56 -07:00
TEST_ENGINE = 26,
// used by unit test
// see https://github.com/rusefi/rusefi/issues/898
// see TriggerWaveform::bothFrontsRequired
2020-12-18 06:01:18 -08:00
TEST_ISSUE_898 = 27,
2015-07-10 06:01:56 -07:00
MAZDA_626 = 28,
2020-08-29 12:41:09 -07:00
SACHS = ET_SACHS,
2015-07-10 06:01:56 -07:00
2020-05-21 15:36:32 -07:00
// LED physical order set for older test fixtures
MRE_BOARD_OLD_TEST = 30,
2015-07-10 06:01:56 -07:00
2020-05-21 15:36:32 -07:00
MRE_BOARD_NEW_TEST = 31,
2015-07-10 06:01:56 -07:00
2020-08-29 12:41:09 -07:00
VW_ABA = ET_VW_ABA,
2015-07-10 06:01:56 -07:00
2020-10-27 22:01:30 -07:00
UNUSED_33 = 33,
2015-09-05 18:03:42 -07:00
2020-10-27 22:01:30 -07:00
UNUSED_34 = 34,
2015-09-12 12:02:40 -07:00
CAMARO_4 = ET_CAMARO,
2015-10-16 13:01:21 -07:00
2021-02-08 15:08:26 -08:00
UNUSED_36 = 36,
2015-10-17 10:02:05 -07:00
2020-12-06 15:08:55 -08:00
MRE_SUBARU_EJ18 = ET_MRE_SUBARU_EJ18,
2015-12-20 17:01:44 -08:00
2016-07-13 19:02:35 -07:00
TOYOTA_JZS147 = 38, // 2JZ-GTE NON VVTi
2015-12-30 13:02:18 -08:00
2016-01-21 15:03:40 -08:00
LADA_KALINA = 39,
2020-08-29 12:41:09 -07:00
BMW_M73_F = ET_BMW_M73_F,
2016-03-26 03:03:24 -07:00
2020-12-22 07:13:27 -08:00
PROTEUS_QC_TEST_BOARD = ET_PROTEUS_QC_TEST_BOARD,
2016-05-04 20:02:32 -07:00
2016-07-09 16:03:08 -07:00
HONDA_600 = 43,
2016-07-13 19:02:35 -07:00
TOYOTA_2JZ_GTE_VVTi = 44,
2016-08-20 18:03:09 -07:00
TEST_ENGINE_VVT = 45,
2016-09-21 09:03:07 -07:00
DODGE_NEON_2003_CRANK = 46,
2017-11-19 14:54:00 -08:00
/**
* proper NB2 setup, 2003 red test mule car
*/
2020-06-21 19:12:06 -07:00
MAZDA_MIATA_2003 = ET_FRANKENSO_MIATA_NB2,
2016-10-04 11:00:58 -07:00
2016-10-15 20:03:28 -07:00
HONDA_ACCORD_1_24_SHIFTED = 48,
2017-02-24 15:58:14 -08:00
FRANKENSO_QA_ENGINE = 49,
2017-03-01 16:41:17 -08:00
/**
* this is about unit-testing skipped wheel trigger
*/
TEST_CIVIC_4_0_BOTH = 50,
/**
* this is about unit-testing skipped wheel trigger
*/
TEST_CIVIC_4_0_RISE = 51,
2017-03-05 18:13:04 -08:00
2017-03-06 14:42:16 -08:00
TEST_ISSUE_366_BOTH = 52,
TEST_ISSUE_366_RISE = 53,
2017-04-17 19:10:19 -07:00
2017-11-19 14:54:00 -08:00
/**
* green Hunchback race car - VVT engine on a NA body with NA return fuel lines which
* means different fuel pressure situation
*/
MAZDA_MIATA_2003_NA_RAIL = 54,
2015-07-10 06:01:56 -07:00
2017-12-02 17:59:31 -08:00
MAZDA_MIATA_2003_BOARD_TEST = 55,
2018-01-31 18:30:28 -08:00
MAZDA_MIATA_NA8 = 56,
2019-01-19 17:27:14 -08:00
// see also MIATA_NA6_MAP = 41
2020-06-21 19:12:06 -07:00
MIATA_NA6_VAF = ET_FRANKENSO_MIATA_NA6_VAF,
2019-01-19 17:27:14 -08:00
2019-02-27 05:55:56 -08:00
ETB_BENCH_ENGINE = 58,
2019-04-04 18:34:33 -07:00
TLE8888_BENCH_ENGINE = 59,
2020-06-30 18:29:47 -07:00
MICRO_RUS_EFI = ET_MRE_DEFAULTS,
2019-06-07 15:02:28 -07:00
2020-12-22 07:13:27 -08:00
PROTEUS_DEFAULTS = 61,
PROTEUS_ANALOG_PWM_TEST = ET_PROTEUS_ANALOG_PWM_TEST,
2020-08-29 13:49:56 -07:00
VW_B6 = ET_VW_B6,
2019-12-26 18:33:12 -08:00
2020-12-14 21:09:35 -08:00
BMW_M73_PROTEUS = ET_PROTEUS_BMW_M73,
2020-02-01 14:55:58 -08:00
2020-05-21 15:36:32 -07:00
DODGE_RAM = 64,
2020-05-21 21:25:48 -07:00
CITROEN_TU3JP = ET_CITROEN_TU3JP,
2020-05-21 15:36:32 -07:00
2020-12-14 21:09:35 -08:00
MRE_M111 = ET_MRE_M111,
PROTEUS_MIATA_NB2 = ET_PROTEUS_MIATA_NB2,
2020-12-31 22:10:28 -08:00
HELLEN_NB2 = ET_HELLEN_NB2,
SUBARUEG33_DEFAULTS = 70,
2020-07-29 11:53:36 -07:00
/**
* this configuration has as few pins configured as possible
*/
MINIMAL_PINS = 99,
2017-05-06 13:11:45 -07:00
PROMETHEUS_DEFAULTS = 100,
SUBARUEJ20G_DEFAULTS = 101,
2019-05-01 11:31:44 -07:00
VAG_18_TURBO = 102,
2017-05-06 13:11:45 -07:00
2020-02-25 18:35:21 -08:00
TEST_33816 = 103,
2020-03-11 17:48:09 -07:00
BMW_M73_MRE = 104,
2020-03-29 19:10:13 -07:00
BMW_M73_MRE_SLAVE = 105,
2020-03-11 17:48:09 -07:00
2018-09-29 07:10:30 -07:00
Force_4_bytes_size_engine_type = ENUM_32_BITS,
2015-07-10 06:01:56 -07:00
} engine_type_e;
2017-03-12 20:01:08 -07:00
/**
* @see http://rusefi.com/wiki/index.php?title=Manual:Software:Trigger
*/
2015-07-10 06:01:56 -07:00
typedef enum {
2020-12-02 22:36:43 -08:00
2020-09-28 18:11:04 -07:00
TT_TOOTHED_WHEEL = TT_TT_TOOTHED_WHEEL,
2020-12-03 07:49:20 -08:00
TT_FORD_ASPIRE = TT_TT_FORD_ASPIRE,
2015-07-10 06:01:56 -07:00
TT_DODGE_NEON_1995 = 2,
2020-04-14 05:34:51 -07:00
/**
* https://rusefi.com/wiki/index.php?title=Manual:Software:Trigger#Mazda_Miata_NA
*/
TT_MAZDA_MIATA_NA = TT_TT_MAZDA_MIATA_NA,
2016-11-03 14:03:11 -07:00
/**
* NB1 means non-VVT NB, 99 and 00 1.8 engine
*/
TT_MAZDA_MIATA_NB1 = TT_TT_MAZDA_MIATA_NB1,
2020-12-02 22:36:43 -08:00
TT_GM_7X = TT_TT_GM_7X,
TT_MAZDA_SOHC_4 = TT_TT_MAZDA_SOHC_4,
TT_DAIHATSU = TT_TT_DAIHATSU,
2019-03-05 15:10:20 -08:00
/**
* "60/2"
* See also TT_ONE_PLUS_TOOTHED_WHEEL_60_2
*/
2020-09-28 18:11:04 -07:00
TT_TOOTHED_WHEEL_60_2 = TT_TT_TOOTHED_WHEEL_60_2,
TT_TOOTHED_WHEEL_36_1 = TT_TT_TOOTHED_WHEEL_36_1,
2015-07-10 06:01:56 -07:00
2020-12-03 07:49:20 -08:00
// todo: remove this weird trigger?
TT_HONDA_4_24_1 = TT_TT_HONDA_4_24_1,
2015-07-10 06:01:56 -07:00
// todo: this really looks to be same as Miata_NA shall we remove?
2017-02-22 18:13:04 -08:00
TT_MITSUBISHI = 11,
2015-07-10 06:01:56 -07:00
2017-02-13 21:02:59 -08:00
// this makes sense because mechanical spark distribution does not require synchronization
TT_HONDA_4_24 = 12,
2015-07-10 06:01:56 -07:00
2020-12-03 07:49:20 -08:00
TT_HONDA_1_4_24 = TT_TT_HONDA_1_4_24,
2015-07-10 06:01:56 -07:00
2016-09-21 09:03:07 -07:00
// cam-based
TT_DODGE_NEON_2003_CAM = 14,
2015-07-10 06:01:56 -07:00
2020-12-02 22:36:43 -08:00
TT_MAZDA_DOHC_1_4 = TT_TT_MAZDA_DOHC_1_4,
2015-07-10 06:01:56 -07:00
2020-08-25 12:58:56 -07:00
/**
* "1+1" - one tooth on primary channel, one tooth on secondary channel
* this trigger is used only by unit tests
* see also TT_ONE a bit below
*/
2015-07-10 06:01:56 -07:00
TT_ONE_PLUS_ONE = 16,
// VVT for 2JZ
2020-12-02 22:36:43 -08:00
TT_VVT_JZ = TT_TT_VVT_JZ,
2019-05-07 10:53:44 -07:00
// just one channel with just one tooth
2020-09-28 18:11:04 -07:00
TT_ONE = TT_TT_ONE,
2015-07-10 06:01:56 -07:00
TT_DODGE_RAM = 19,
2020-04-02 21:44:54 -07:00
/**
* It looks like this is the VR shape if you have your wires flipped
*/
2020-09-28 18:11:04 -07:00
TT_60_2_VW = TT_TT_60_2_VW,
2015-07-10 06:01:56 -07:00
2020-12-03 07:49:20 -08:00
TT_HONDA_1_24 = TT_TT_HONDA_1_24,
2015-07-10 06:01:56 -07:00
2015-09-05 20:02:46 -07:00
TT_DODGE_STRATUS = 22,
TT_36_2_2_2 = TT_TT_36_2_2_2,
2015-09-10 19:01:35 -07:00
2017-12-31 17:13:20 -08:00
/**
* only the 4 tooth signal, without the 360 signal
* 8,2,2,2 Nissan pattern
* See also TT_NISSAN_SR20VE_360
*/
2017-03-18 17:18:21 -07:00
TT_NISSAN_SR20VE = 24,
2015-09-19 16:01:46 -07:00
2020-12-02 22:36:43 -08:00
TT_2JZ_3_34 = TT_TT_2JZ_3_34,
2015-12-14 18:01:30 -08:00
2015-12-27 12:02:51 -08:00
TT_ROVER_K = 26,
TT_GM_LS_24 = TT_TT_GM_LS_24,
2016-05-22 10:07:12 -07:00
2016-05-27 19:02:56 -07:00
TT_HONDA_CBR_600 = 28,
TT_2JZ_1_12 = TT_TT_2JZ_1_12,
2016-06-13 13:03:13 -07:00
2020-12-03 21:30:22 -08:00
TT_CHRYSLER_NGC_36_2_2 = TT_TT_CHRYSLER_NGC_36_2_2,
2016-07-09 11:02:36 -07:00
2016-08-16 19:05:36 -07:00
// skipped 3/1 with cam sensor for testing
TT_3_1_CAM = 31,
2016-09-21 09:03:07 -07:00
// crank-based in case your cam is broken
TT_DODGE_NEON_2003_CRANK = 32,
2016-06-13 13:03:13 -07:00
2018-02-03 09:04:28 -08:00
/**
* 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 = TT_TT_MIATA_VVT,
2016-10-04 11:00:58 -07:00
2016-10-15 20:03:28 -07:00
/**
* This is a different version of TT_HONDA_ACCORD_1_24
* See https://sourceforge.net/p/rusefi/tickets/319/
*/
TT_HONDA_ACCORD_1_24_SHIFTED = 34,
2016-11-14 13:02:15 -08:00
/**
* a version of NB1 with shifted CAM, useful for VVT testing & development
*/
TT_MAZDA_MIATA_VVT_TEST = 35,
TT_SUBARU_7_6 = TT_TT_SUBARU_7_6,
2017-01-02 16:03:36 -08:00
2018-10-25 14:42:42 -07:00
// this one is 6 cylinder, see TT_JEEP_4_cyl for 4 cylinders
TT_JEEP_18_2_2_2 = TT_TT_JEEP_18_2_2_2,
2017-01-23 13:03:46 -08:00
2017-12-31 17:13:20 -08:00
/*
* See also TT_NISSAN_SR20VE
*/
2017-04-02 14:59:01 -07:00
TT_NISSAN_SR20VE_360 = 38,
2017-03-22 19:50:16 -07:00
2018-02-26 19:24:48 -08:00
TT_DODGE_NEON_1995_ONLY_CRANK = 39,
2018-10-25 14:42:42 -07:00
// Jeep XJ 2500cc 4 cylinder. See also TT_JEEP_18_2_2_2 for 6 cylinders
2020-12-02 22:36:43 -08:00
TT_JEEP_4_CYL = TT_TT_JEEP_4_CYL,
2018-10-25 14:42:42 -07:00
2018-10-30 01:46:13 -07:00
// 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 = TT_TT_FORD_ST170,
2018-11-22 07:01:48 -08:00
2020-02-04 22:49:33 -08:00
/**
2020-08-24 22:38:56 -07:00
* cam sensor of Mazda Miata NB2 - the VVT signal shape
2020-02-04 22:49:33 -08:00
*/
2021-02-08 13:42:53 -08:00
TT_VVT_MIATA_NB2 = TT_TT_VVT_MIATA_NB2,
2020-02-04 22:49:33 -08:00
TT_RENIX_44_2_2 = TT_TT_RENIX_44_2_2,
2020-04-18 13:40:59 -07:00
2020-04-19 06:59:55 -07:00
/**
* Same as TT_RENIX_44_2_2 but repeated three times, not two.
*/
TT_RENIX_66_2_2_2 = TT_TT_RENIX_66_2_2_2,
2020-04-19 06:59:55 -07:00
2020-12-03 07:49:20 -08:00
TT_HONDA_K_12_1 = TT_TT_HONDA_K_12_1,
2020-04-19 11:23:01 -07:00
2020-12-03 07:49:20 -08:00
TT_VVT_BOSCH_QUICK_START = TT_TT_VVT_BOSCH_QUICK_START,
2020-04-25 16:50:43 -07:00
2020-09-28 18:11:04 -07:00
TT_TOOTHED_WHEEL_36_2 = TT_TT_TOOTHED_WHEEL_36_2,
2020-05-09 20:47:51 -07:00
TT_SUBARU_SVX = TT_TT_SUBARU_SVX,
2020-09-28 18:18:47 -07:00
TT_1_16 = 50,
// todo: remove this trigger once we have https://github.com/rusefi/rusefi/issues/2073
2020-12-13 14:46:48 -08:00
TT_SUBARU_7_WITHOUT_6 = TT_TT_SUBARU_7_WITHOUT_6,
2020-12-13 13:22:02 -08:00
TT_52 = TT_TT_52,
// https://rusefi.com/forum/viewtopic.php?f=5&t=1912
TT_TRI_TACH = TT_TT_TRI_TACH,
TT_GM_60_2_2_2 = TT_TT_GM_60_2_2_2,
/**
* 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 = TT_TT_SKODA_FAVORIT,
2018-11-22 07:01:48 -08:00
// 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
2018-11-22 07:25:02 -08:00
//
// Another point: once you add a new trigger, run get_trigger_images.bat which would run rusefi_test.exe from unit_tests
//
TT_UNUSED = 56, // this is used if we want to iterate over all trigger types
2015-07-10 06:01:56 -07:00
2018-09-29 07:10:30 -07:00
Force_4_bytes_size_trigger_type = ENUM_32_BITS,
2015-07-10 06:01:56 -07:00
} trigger_type_e;
typedef enum {
2018-01-26 08:34:01 -08:00
ADC_OFF = 0,
ADC_SLOW = 1,
ADC_FAST = 2,
2015-07-10 06:01:56 -07:00
2018-09-29 07:10:30 -07:00
Force_4_bytes_size_adc_channel_mode = ENUM_32_BITS,
2015-07-10 06:01:56 -07:00
} adc_channel_mode_e;
typedef enum {
2018-01-26 08:34:01 -08:00
TV_FALL = 0,
TV_RISE = 1
2015-07-10 06:01:56 -07:00
} trigger_value_e;
2020-01-27 20:45:46 -08:00
// see also PWM_PHASE_MAX_WAVE_PER_PWM
2015-07-10 06:01:56 -07:00
// todo: better names?
typedef enum {
2018-01-26 08:34:01 -08:00
T_PRIMARY = 0,
T_SECONDARY = 1,
2015-07-10 06:01:56 -07:00
// todo: I really do not want to call this 'tertiary'. maybe we should rename all of these?
2017-02-13 20:03:19 -08:00
T_CHANNEL_3 = 2,
T_NONE = 15
2015-07-10 06:01:56 -07:00
} trigger_wheel_e;
2020-01-27 20:45:46 -08:00
// see also 'HW_EVENT_TYPES'
2015-07-10 06:01:56 -07:00
typedef enum {
2016-02-27 20:03:34 -08:00
SHAFT_PRIMARY_FALLING = 0,
SHAFT_PRIMARY_RISING = 1,
SHAFT_SECONDARY_FALLING = 2,
SHAFT_SECONDARY_RISING = 3,
SHAFT_3RD_FALLING = 4,
SHAFT_3RD_RISING = 5,
2015-07-10 06:01:56 -07:00
} trigger_event_e;
2021-02-08 12:09:12 -08:00
typedef enum __attribute__ ((__packed__)) {
2020-05-09 23:36:01 -07:00
/**
2020-05-14 20:13:32 -07:00
* This mode is useful for troubleshooting and research - events are logged but no effects on phase synchronization
2020-05-09 23:36:01 -07:00
*/
2020-05-14 20:13:32 -07:00
VVT_INACTIVE = 0,
2020-05-09 23:36:01 -07:00
/**
* Single-tooth cam sensor mode where TDC and cam signal happen in opposite 360 degree of 720 degree engine cycle
*/
2016-08-22 20:04:55 -07:00
VVT_SECOND_HALF = 1,
2020-05-09 23:36:01 -07:00
/**
* Toyota 2JZ has three cam tooth. We pick one of these three tooth to synchronize based on the expected angle position of the event
*/
VVT_2JZ = 2,
/**
* Mazda NB2 has three cam tooth. We synchronize based on gap ratio.
2020-08-29 14:46:01 -07:00
* @see TT_VVT_MIATA_NB2
2020-05-09 23:36:01 -07:00
*/
2021-02-08 15:20:53 -08:00
VVT_MIATA_NB2 = 3,
2020-05-14 20:13:32 -07:00
/**
* Single-tooth cam sensor mode where TDC and cam signal happen in the same 360 degree of 720 degree engine cycle
*/
VVT_FIRST_HALF = 4,
2020-08-29 14:46:01 -07:00
/**
* @see TT_VVT_BOSCH_QUICK_START
*/
2020-08-26 21:43:23 -07:00
VVT_BOSCH_QUICK_START = 5,
2020-10-03 07:39:43 -07:00
/**
* 1.8l Toyota 1ZZ-FE https://rusefi.com/forum/viewtopic.php?f=3&t=1735
*/
VVT_4_1 = 6,
VVT_FORD_ST170 = 7,
2016-08-22 20:04:55 -07:00
} vvt_mode_e;
2015-07-10 06:01:56 -07:00
/**
* This enum is used to select your desired Engine Load calculation algorithm
*/
typedef enum {
/**
* Speed Density algorithm - Engine Load is a function of MAP, VE and target AFR
* http://articles.sae.org/8539/
*/
LM_SPEED_DENSITY = 3,
/**
* MAF with a known kg/hour function
*/
LM_REAL_MAF = 4,
2020-11-27 12:44:31 -08:00
LM_ALPHA_N = 5,
2020-07-25 01:14:35 -07:00
2020-07-26 20:33:18 -07:00
// This mode is for unit testing only, so that tests don't have to rely on a particular real airmass mode
LM_MOCK = 100,
2018-09-29 07:10:30 -07:00
Force_4_bytes_size_engine_load_mode = ENUM_32_BITS,
2015-07-10 06:01:56 -07:00
} engine_load_mode_e;
typedef enum {
2018-01-26 08:34:01 -08:00
DM_NONE = 0,
DM_HD44780 = 1,
DM_HD44780_OVER_PCF8574 = 2,
2015-07-10 06:01:56 -07:00
2018-09-29 07:10:30 -07:00
Force_4_bytes_size_display_mode = ENUM_32_BITS,
2015-07-10 06:01:56 -07:00
} display_mode_e;
2021-02-08 12:09:12 -08:00
typedef enum __attribute__ ((__packed__)) {
2020-04-23 16:39:59 -07:00
TL_AUTO = 0,
TL_SEMI_AUTO = 1,
TL_MANUAL = 2,
TL_HALL = 3,
2020-04-23 13:57:37 -07:00
} tle8888_mode_e;
2015-07-10 06:01:56 -07:00
typedef enum {
LF_NATIVE = 0,
/**
* http://www.efianalytics.com/MegaLogViewer/
* log example: http://svn.code.sf.net/p/rusefi/code/trunk/misc/ms_logs/
*/
LM_MLV = 1,
2018-09-29 07:10:30 -07:00
Force_4_bytes_size_log_format = ENUM_32_BITS,
2015-07-10 06:01:56 -07:00
} log_format_e;
typedef enum {
2015-11-09 16:03:32 -08:00
/**
* In auto mode we currently have some pid-like-but-not really PID logic which is trying
* to get idle RPM to desired value by dynamically adjusting idle valve position.
* TODO: convert to PID
*/
IM_AUTO = 0,
/**
* Manual idle control is extremely simple: user just specifies desired idle valve position
* which could be adjusted according to current CLT
*/
IM_MANUAL = 1,
2018-09-29 07:10:30 -07:00
Force_4_bytes_size_idle_mode = ENUM_32_BITS,
2015-07-10 06:01:56 -07:00
} idle_mode_e;
2019-02-28 16:42:15 -08:00
typedef enum __attribute__ ((__packed__)) {
2015-07-10 06:01:56 -07:00
/**
* GND for logical OFF, VCC for logical ON
*/
OM_DEFAULT = 0,
/**
* GND for logical ON, VCC for logical OFF
*/
OM_INVERTED = 1,
/**
* logical OFF is floating, logical ON is GND
*/
2018-01-26 08:34:01 -08:00
OM_OPENDRAIN = 2,
OM_OPENDRAIN_INVERTED = 3
2015-07-10 06:01:56 -07:00
} pin_output_mode_e;
2019-02-28 16:48:38 -08:00
typedef enum __attribute__ ((__packed__)) {
2018-01-26 08:34:01 -08:00
PI_DEFAULT = 0,
PI_PULLUP = 1,
PI_PULLDOWN = 2
2015-07-10 06:01:56 -07:00
} pin_input_mode_e;
2018-02-28 04:57:04 -08:00
#define CRANK_MODE_MULTIPLIER 2.0f
/**
* @see getCycleDuration
* @see getEngineCycle
*/
2015-07-10 06:01:56 -07:00
// todo: better enum name
typedef enum {
OM_NONE = 0,
2016-07-14 19:01:48 -07:00
/**
2018-02-28 04:57:04 -08:00
* 720 degree engine cycle but trigger is defined using a 360 cycle which is when repeated.
* For historical reasons we have a pretty weird approach where one crank trigger revolution is
* defined as if it's stretched to 720 degress. See CRANK_MODE_MULTIPLIER
2016-07-14 19:01:48 -07:00
*/
2015-07-10 06:01:56 -07:00
FOUR_STROKE_CRANK_SENSOR = 1,
2016-07-14 19:01:48 -07:00
/**
* 720 degree engine and trigger cycle
*/
2015-07-10 06:01:56 -07:00
FOUR_STROKE_CAM_SENSOR = 2,
2016-07-14 19:01:48 -07:00
/**
* 360 degree cycle
*/
2015-07-10 06:01:56 -07:00
TWO_STROKE = 3,
2016-11-13 20:02:33 -08:00
/**
* 720 degree engine cycle but trigger is defined using a 180 cycle which is when repeated three more times
* In other words, same pattern is repeated on the crank wheel twice.
2016-11-13 20:02:33 -08:00
*/
FOUR_STROKE_SYMMETRICAL_CRANK_SENSOR = 4,
2020-04-19 06:59:55 -07:00
/**
* Same pattern repeated three times on crank wheel. Crazy, I know!
*/
FOUR_STROKE_THREE_TIMES_CRANK_SENSOR = 5,
2018-09-29 07:10:30 -07:00
Force_4_bytes_size_operation_mode_e = ENUM_32_BITS,
2015-07-10 06:01:56 -07:00
} operation_mode_e;
/**
* @brief Ignition Mode
*/
typedef enum {
/**
* in this mode only SPARKOUT_1_OUTPUT is used
*/
IM_ONE_COIL = 0,
/**
* in this mode we use as many coils as we have cylinders
*/
2018-01-26 08:34:01 -08:00
IM_INDIVIDUAL_COILS = 1,
IM_WASTED_SPARK = 2,
2015-07-10 06:01:56 -07:00
2019-02-15 00:44:09 -08:00
/**
* some v12 engines line BMW M70 and M73 run two distributors, one for each bank of cylinders
*/
IM_TWO_COILS = 3,
2018-09-29 07:10:30 -07:00
Force_4_bytes_size_ignition_mode = ENUM_32_BITS,
2015-07-10 06:01:56 -07:00
} ignition_mode_e;
2017-11-06 07:25:06 -08:00
/**
* @see getNumberOfInjections
*/
2015-07-10 06:01:56 -07:00
typedef enum {
2017-11-06 16:00:30 -08:00
/**
* each cylinder has it's own injector but they all works in parallel
*/
2017-11-06 07:25:06 -08:00
IM_SIMULTANEOUS = 0,
/**
* each cylinder has it's own injector, each injector is wired separately
*/
IM_SEQUENTIAL = 1,
/**
* each cylinder has it's own injector but these injectors work in pairs. Injectors could be wired in pairs or separately.
2020-03-11 21:20:05 -07:00
* Each pair is fired once per engine cycle
* todo: we might want to implement one additional mode where each pair of injectors is floating twice per engine cycle.
* todo: this could reduce phase offset from injection to stroke but would not work great for large injectors
2017-11-06 07:25:06 -08:00
*/
IM_BATCH = 2,
2017-11-06 16:00:30 -08:00
/**
* only one injector located in throttle body
*/
2021-01-02 13:51:14 -08:00
IM_SINGLE_POINT = IM_IM_SINGLE_POINT,
2017-11-06 16:00:30 -08:00
2015-07-10 06:01:56 -07:00
2018-09-29 07:10:30 -07:00
Force_4_bytes_size_injection_mode = ENUM_32_BITS,
2015-07-10 06:01:56 -07:00
} injection_mode_e;
/**
* @brief Ignition Mode while cranking
*/
typedef enum {
2018-01-26 08:34:01 -08:00
CIM_DEFAULT = 0,
CIM_FIXED_ANGLE = 1,
2015-07-10 06:01:56 -07:00
2019-03-25 12:08:32 -07:00
// todo: make this a one byte enum
2018-09-29 07:10:30 -07:00
Force_4_bytes_size_cranking_ignition_mode = ENUM_32_BITS,
2015-07-10 06:01:56 -07:00
} cranking_ignition_mode_e;
2019-04-14 15:12:15 -07:00
typedef enum __attribute__ ((__packed__)) {
2016-10-13 12:02:07 -07:00
UART_NONE = 0,
UART_DEVICE_1 = 1,
UART_DEVICE_2 = 2,
UART_DEVICE_3 = 3,
UART_DEVICE_4 = 4,
} uart_device_e;
2019-03-25 19:41:31 -07:00
typedef enum __attribute__ ((__packed__)) {
_5MHz,
_2_5MHz,
_1_25MHz,
2019-03-25 19:41:31 -07:00
_150KHz
} spi_speed_e;
2016-10-13 12:02:07 -07:00
2020-05-13 20:26:28 -07:00
/**
* See spi3mosiPin
* See spi2MisoMode
*/
2019-04-14 15:12:15 -07:00
typedef enum __attribute__ ((__packed__)) {
2015-07-10 06:01:56 -07:00
SPI_NONE = 0,
SPI_DEVICE_1 = 1,
SPI_DEVICE_2 = 2,
SPI_DEVICE_3 = 3,
SPI_DEVICE_4 = 4,
} spi_device_e;
2020-04-19 15:45:40 -07:00
typedef enum {
BMW_e46 = 0,
W202 = 1,
2020-04-19 15:58:22 -07:00
Force_4_bytes_size_can_vss_nbc_e = ENUM_32_BITS,
2020-04-19 15:45:40 -07:00
} can_vss_nbc_e;
2015-07-10 06:01:56 -07:00
typedef enum {
ES_BPSX_D1 = 0,
/**
* same as innovate LC2
2015-12-20 14:01:42 -08:00
* 0v->7.35afr, 5v->22.39
2015-07-10 06:01:56 -07:00
*/
2017-04-24 17:00:14 -07:00
ES_Innovate_MTX_L = 1,
/**
* Same as AEM
* 0v->10.0afr
* 5v->20.0afr
*/
ES_14Point7_Free = 2,
2015-07-10 06:01:56 -07:00
ES_NarrowBand = 3,
ES_PLX = 4,
2017-10-29 17:29:02 -07:00
ES_Custom = 5,
2019-03-21 19:21:30 -07:00
ES_AEM = 6,
2018-09-29 07:10:30 -07:00
Force_4_bytes_size_ego_sensor = ENUM_32_BITS,
2015-07-10 06:01:56 -07:00
} ego_sensor_e;
2019-05-29 21:18:41 -07:00
typedef brain_pin_e output_pin_e;
2019-04-13 07:58:52 -07:00
2017-12-17 09:02:35 -08:00
/**
* https://rusefi.com//wiki/index.php?title=Manual:Debug_fields
*/
2016-02-04 20:02:52 -08:00
typedef enum {
2017-02-12 18:04:18 -08:00
DBG_ALTERNATOR_PID = 0,
2016-03-11 08:03:18 -08:00
DBG_TPS_ACCEL = 1,
DBG_GPPWM = 2,
2017-05-22 12:30:39 -07:00
DBG_IDLE_CONTROL = 3,
2016-03-12 16:01:55 -08:00
DBG_EL_ACCEL = 4,
2019-08-07 19:20:16 -07:00
DBG_TRIGGER_COUNTERS = 5,
2017-11-24 16:16:25 -08:00
DBG_FSIO_ADC = 6,
2018-08-14 09:37:43 -07:00
/**
* VVT valve control often uses AUX pid #1
*/
2017-11-24 16:16:25 -08:00
DBG_AUX_PID_1 = 7,
2017-04-09 19:07:41 -07:00
/**
2018-08-14 09:37:43 -07:00
* VVT position debugging - not VVT valve control. See AUX pid #1 debug for valve position.
2017-04-09 19:07:41 -07:00
*/
2016-09-17 16:02:34 -07:00
DBG_VVT = 8,
2017-02-12 18:04:18 -08:00
DBG_CRANKING_DETAILS = 9,
2017-02-09 09:03:46 -08:00
DBG_IGNITION_TIMING = 10,
2017-01-22 13:04:09 -08:00
DBG_FUEL_PID_CORRECTION = 11,
2017-02-09 09:03:46 -08:00
DBG_VEHICLE_SPEED_SENSOR = 12,
2017-02-09 19:02:07 -08:00
DBG_SD_CARD = 13,
2017-03-26 14:19:08 -07:00
DBG_SR5_PROTOCOL = 14,
2017-04-09 19:07:41 -07:00
DBG_KNOCK = 15,
DBG_16 = 16,
2018-10-21 12:20:35 -07:00
/**
* See also DBG_ELECTRONIC_THROTTLE_EXTRA
*/
DBG_ELECTRONIC_THROTTLE_PID = 17,
2017-06-07 20:04:56 -07:00
DBG_EXECUTOR = 18,
2019-03-12 11:35:49 -07:00
/**
* See tunerstudio.cpp
*/
2017-07-24 19:26:41 -07:00
DBG_BENCH_TEST = 19,
2017-12-03 04:42:44 -08:00
DBG_AUX_VALVES = 20,
/**
* ADC
* See also DBG_ANALOG_INPUTS2
*/
DBG_ANALOG_INPUTS = 21,
2017-12-03 04:42:44 -08:00
2017-12-16 21:17:55 -08:00
DBG_INSTANT_RPM = 22,
DBG_FSIO_EXPRESSION_1_7 = 23,
2017-12-17 10:14:39 -08:00
DBG_STATUS = 24,
DBG_CJ125 = 25,
2018-01-29 16:41:39 -08:00
DBG_CAN = 26,
2018-02-06 13:21:41 -08:00
DBG_MAP = 27,
2018-09-17 18:42:04 -07:00
DBG_METRICS = 28,
2018-10-21 12:20:35 -07:00
DBG_ELECTRONIC_THROTTLE_EXTRA = 29,
2018-12-31 06:19:05 -08:00
DBG_ION = 30,
2019-03-26 09:30:30 -07:00
DBG_TLE8888 = 31,
/**
* See also DBG_ANALOG_INPUTS
*/
DBG_ANALOG_INPUTS2 = 32,
DBG_DWELL_METRIC = 33,
DBG_34 = 34,
DBG_ETB_LOGIC = 35,
2020-01-31 11:23:15 -08:00
DBG_BOOST = 36,
2020-03-22 17:43:27 -07:00
DBG_START_STOP = 37,
2020-03-23 19:30:47 -07:00
DBG_LAUNCH = 38,
DBG_ETB_AUTOTUNE = 39,
DBG_COMPOSITE_LOG = 40,
DBG_FSIO_EXPRESSION_8_14 = 41,
DBG_FSIO_SPECIAL = 42,
DBG_INJECTOR_COMPENSATION = 43,
DBG_DYNO_VIEW = 44,
// todo: because of getEnumOptionsForTunerStudio 'getEnumOptionsForTunerStudio' would not work here
// todo: https://github.com/rusefi/rusefi/issues/2102
DBG_LOGIC_ANALYZER = 45,
DBG_RUSEFI_WIDEBAND = 46,
DBG_TCU = 47,
DBG_48 = 48,
2016-02-04 20:02:52 -08:00
2018-09-29 07:10:30 -07:00
Force_4_bytes_size_debug_mode_e = ENUM_32_BITS,
2016-02-04 20:02:52 -08:00
} debug_mode_e;
2015-07-10 06:01:56 -07:00
typedef enum {
2018-01-26 08:34:01 -08:00
MT_CUSTOM = 0,
MT_DENSO183 = 1,
2015-08-16 20:01:33 -07:00
/**
* 20 to 250 kPa (2.9 to 36.3 psi) 0.2 to 4.9 V OUTPUT
*/
2018-01-26 08:34:01 -08:00
MT_MPX4250 = 2,
MT_HONDA3BAR = 3,
MT_DODGE_NEON_2003 = 4,
2015-07-10 06:01:56 -07:00
/**
* 22012AA090
*/
MT_SUBY_DENSO = 5,
/**
* 16040749
*/
MT_GM_3_BAR = 6,
2015-08-16 20:01:33 -07:00
/**
* 20 to 105 kPa (2.9 to 15.2 psi) 0.3 to 4.9 V Output
*/
MT_MPX4100 = 7,
2016-06-12 08:03:43 -07:00
/**
* http://rusefi.com/forum/viewtopic.php?f=3&t=906&p=18976#p18976
* Toyota 89420-02010
*/
MT_TOYOTA_89420_02010 = 8,
/**
* 20 to 250 kPa (2.9 to 36.3 psi) 0.25 to 4.875 OUTPUT
* More precise calibration data for new NXP sensor revisions MPX4250A and MPXA4250A.
* For an old Freescale MPX4250D use "MT_MPX4250".
* See https://www.nxp.com/docs/en/data-sheet/MPX4250A.pdf
*/
MT_MPX4250A = 9,
2020-05-04 16:08:36 -07:00
/**
* Bosch 2.5 Bar TMap Map Sensor with IAT
* 20 kPa at 0.40V, 250 kPa at 4.65V
2020-10-22 21:39:22 -07:00
* 4 pin:
* Pin 1 : Sensor Ground
* Pin 2 : Temp Signal
* Pin 3 : 5v
* Pin 4 : Map Signal
* Volkswagen Passat B6
2020-05-04 16:08:36 -07:00
*/
MT_BOSCH_2_5 = 10,
2020-05-17 22:39:41 -07:00
MT_MAZDA_1_BAR = 11,
MT_GM_2_BAR = 12,
MT_GM_1_BAR = 13,
2018-09-29 07:10:30 -07:00
Force_4_bytes_size_cranking_map_type = ENUM_32_BITS,
2015-07-10 06:01:56 -07:00
} air_pressure_sensor_type_e;
typedef enum {
SC_OFF = 0,
/**
* You would use this value if you want to see a detailed graph of your trigger events
*/
2018-01-26 08:34:01 -08:00
SC_TRIGGER = 1,
SC_MAP = 2,
2015-09-12 15:01:13 -07:00
SC_RPM_ACCEL = 3,
2015-09-13 14:02:44 -07:00
SC_DETAILED_RPM = 4,
2019-12-02 14:49:01 -08:00
SC_AUX_FAST1 = 5,
2015-07-10 06:01:56 -07:00
Internal_ForceMyEnumIntSize_sensor_chart = ENUM_32_BITS,
} sensor_chart_e;
2017-08-03 19:30:47 -07:00
typedef enum {
REVERSE = -1,
2017-08-03 19:30:47 -07:00
NEUTRAL = 0,
GEAR_1 = 1,
GEAR_2 = 2,
GEAR_3 = 3,
GEAR_4 = 4,
} gear_e;
2015-07-10 06:01:56 -07:00
typedef enum {
CUSTOM = 0,
Bosch0280218037 = 1,
Bosch0280218004 = 2,
DensoTODO = 3,
Internal_ForceMyEnumIntSize_maf_sensor = ENUM_32_BITS,
} maf_sensor_type_e;
typedef enum {
/**
* This is the default mode in which ECU controls timing dynamically
*/
TM_DYNAMIC = 0,
/**
* Fixed timing is useful while you are playing with a timing gun - you need to have fixed
* timing if you want to install your distributor at some specific angle
*/
TM_FIXED = 1,
Internal_ForceMyEnumIntSize_timing_mode = ENUM_32_BITS,
} timing_mode_e;
2015-12-24 11:02:03 -08:00
typedef enum {
CS_OPEN = 0,
CS_CLOSED = 1,
CS_SWIRL_TUMBLE = 2,
Internal_ForceMyEnumIntSize_chamber_stype = ENUM_32_BITS,
} chamber_style_e;
2016-01-20 20:03:03 -08:00
/**
* Net Body Computer types
*/
typedef enum {
2020-03-31 17:08:30 -07:00
CAN_BUS_NBC_NONE = 0,
2016-01-20 20:03:03 -08:00
CAN_BUS_NBC_FIAT = 1,
CAN_BUS_NBC_VAG = 2,
CAN_BUS_MAZDA_RX8 = 3,
2020-03-31 17:08:30 -07:00
CAN_BUS_NBC_BMW = 4,
CAN_BUS_W202_C180 = 5,
CAN_BUS_BMW_E90 = 6,
CAN_BUS_Haltech = 7,
2016-01-20 20:03:03 -08:00
Internal_ForceMyEnumIntSize_can_nbc = ENUM_32_BITS,
} can_nbc_e;
2015-12-24 11:02:03 -08:00
typedef enum {
NOT_READY,
/**
* the step after this one is always IS_INTEGRATING
* We only integrate if we have RPM
*/
READY_TO_INTEGRATE,
/**
* the step after this one is always WAITING_FOR_ADC_TO_SKIP
*/
IS_INTEGRATING,
/**
* the step after this one is always WAITING_FOR_RESULT_ADC
*/
WAITING_FOR_ADC_TO_SKIP,
/**
* the step after this one is always IS_SENDING_SPI_COMMAND or READY_TO_INTEGRATE
*/
WAITING_FOR_RESULT_ADC,
/**
* the step after this one is always READY_TO_INTEGRATE
*/
IS_SENDING_SPI_COMMAND,
} hip_state_e;
typedef enum {
TCHARGE_MODE_RPM_TPS = 0,
TCHARGE_MODE_AIR_INTERP = 1,
Force_4bytes_size_tChargeMode_e = ENUM_32_BITS,
} tChargeMode_e;
2018-11-22 15:56:51 -08:00
// peak type
typedef enum {
MINIMUM = -1,
NOT_A_PEAK = 0,
MAXIMUM = 1
} PidAutoTune_Peak;
// auto tuner state
typedef enum {
AUTOTUNER_OFF = 0,
STEADY_STATE_AT_BASELINE = 1,
STEADY_STATE_AFTER_STEP_UP = 2,
RELAY_STEP_UP = 4,
RELAY_STEP_DOWN = 8,
CONVERGED = 16,
FAILED = 128
} PidAutoTune_AutoTunerState;
2019-05-11 07:41:04 -07:00
typedef enum {
INIT = 0,
TPS_THRESHOLD = 1,
RPM_DEAD_ZONE = 2,
PID_VALUE = 4,
PID_UPPER = 16,
BLIP = 64,
2019-07-21 15:34:37 -07:00
/**
* Live Docs reads 4 byte value so we want 4 byte enum
*/
Force_4bytes_size_idle_state_e = ENUM_32_BITS,
2019-05-11 07:41:04 -07:00
} idle_state_e;
2020-02-01 14:55:58 -08:00
2020-01-31 11:23:15 -08:00
typedef enum {
OPEN_LOOP = 0,
CLOSED_LOOP = 1,
Force_4bytes_size_boostType_e = ENUM_32_BITS,
2020-02-01 14:55:58 -08:00
} boostType_e;
typedef enum {
SWITCH_INPUT_LAUNCH = 0,
CLUTCH_INPUT_LAUNCH = 1,
ALWAYS_ACTIVE_LAUNCH = 2,
Force_4bytes_size_launchActivationMode_e = ENUM_32_BITS,
} launchActivationMode_e;
typedef enum {
SWITCH_INPUT_ANTILAG = 0,
ALWAYS_ON_ANTILAG = 1,
Force_4bytes_size_antiLagActivationMode_e = ENUM_32_BITS,
} antiLagActivationMode_e;
2020-04-25 15:26:29 -07:00
typedef enum __attribute__ ((__packed__)) {
GPPWM_Tps = 0,
GPPWM_Map = 1,
GPPWM_Clt = 2,
GPPWM_Iat = 3,
2020-07-23 02:51:08 -07:00
GPPWM_FuelLoad = 4,
GPPWM_IgnLoad = 5,
2020-04-25 15:26:29 -07:00
} gppwm_channel_e;
2020-06-14 15:06:33 -07:00
typedef enum __attribute__ ((__packed__)) {
B100KBPS = 0, // 100kbps
B250KBPS = 1, // 250kbps
B500KBPS = 2, // 500kbps
B1MBPS = 3, // 1Mbps
} can_baudrate_e;
2020-04-25 15:26:29 -07:00
typedef enum __attribute__ ((__packed__)) {
GPPWM_GreaterThan = 0,
GPPWM_LessThan = 1,
} gppwm_compare_mode_e;
typedef enum __attribute__ ((__packed__)) {
VE_None = 0,
VE_MAP = 1,
VE_TPS = 2,
} ve_override_e;
typedef enum __attribute__ ((__packed__)) {
AFR_None = 0,
AFR_MAP = 1,
AFR_Tps = 2,
AFR_AccPedal = 3,
AFR_CylFilling = 4,
} afr_override_e;
typedef enum __attribute__ ((__packed__)) {
ETB_None = 0,
ETB_Throttle1 = 1,
ETB_Throttle2 = 2,
ETB_IdleValve = 3,
ETB_Wastegate = 4,
} etb_function_e;
typedef enum __attribute__ ((__packed__)) {
IPT_Low = 0,
IPT_High = 1,
} injector_pressure_type_e;
typedef enum __attribute__ ((__packed__)) {
ICM_None = 0,
ICM_FixedRailPressure = 1,
ICM_SensedRailPressure = 2,
} injector_compensation_mode_e;