diff --git a/firmware/controllers/algo/rusefi_generated.h b/firmware/controllers/algo/rusefi_generated.h index 8b60174b15..8a22e5d95d 100644 --- a/firmware/controllers/algo/rusefi_generated.h +++ b/firmware/controllers/algo/rusefi_generated.h @@ -22,6 +22,7 @@ #define LE_COMMAND_COUNT 16 #define FUEL_RPM_COUNT 16 #define FUEL_LOAD_COUNT 16 +#define FSIO_TABLE_8 8 #define BARO_CORR_SIZE 4 #define MAF_DECODING_COUNT 256 #define engineConfiguration_offset 0 diff --git a/firmware/controllers/algo/rusefi_types.h b/firmware/controllers/algo/rusefi_types.h index b19c9cf394..b7d1330380 100644 --- a/firmware/controllers/algo/rusefi_types.h +++ b/firmware/controllers/algo/rusefi_types.h @@ -67,6 +67,13 @@ typedef struct { ignition_table_t map; } full_i_table_s; +typedef float fsio_table_8x8_t[FSIO_TABLE_8][FSIO_TABLE_8]; +typedef struct { + float loadBins[FSIO_TABLE_8]; + float rpmBins[FSIO_TABLE_8]; + fsio_table_8x8_t map; +} full_fsio_8x8_table_s; + // this is different type simply to have different hi/low range in rusefi.ini typedef ignition_table_t angle_table_t; diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 8998ac5f84..f80f5a9551 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -54,6 +54,8 @@ struct_no_prefix engine_configuration_s #define FUEL_RPM_COUNT 16 #define FUEL_LOAD_COUNT 16 +#define FSIO_TABLE_8 8 + #define BARO_CORR_SIZE 4 #define MAF_DECODING_COUNT 256 @@ -63,6 +65,9 @@ custom fuel_table_t 1024 array, F32, @OFFSET@, [16x16],"ms", 1, 0, custom ve_table_t 1024 array, F32, @OFFSET@, [16x16],"%", 1, 0, 0, 999.0, 2 custom afr_table_t 1024 array, F32, @OFFSET@, [16x16],"deg", 1, 0, 0, 25.0, 2 +custom fsio_table_8x8_t 256 array, F32, @OFFSET@, [8x8],"value", 1, 0, 0.0, 30000.0, 2 + + ! todo support table size multiplocation custom baro_corr_table_t 64 array, F32, @OFFSET@, [@@BARO_CORR_SIZE@@x@@BARO_CORR_SIZE@@],"%", 1, 0, 0, 999.0, 2 @@ -704,4 +709,12 @@ float[FUEL_RPM_COUNT] afrRpmBins;;"RPM", 1, 0.0, 0, 18000.0, 2 ! float[FUEL_LOAD_COUNT] ve2LoadBins;;"%", 1, 0.0, 0, 300.0, 2 ! float[FUEL_RPM_COUNT] ve2RpmBins;;"RPM", 1, 0.0, 0, 18000.0, 2 +fsio_table_8x8_t fsioTable1; +float[FSIO_TABLE_8] fsioTable1LoadBins;;"L", 1, 0, 0.0, 30000.0, 2 +float[FSIO_TABLE_8] fsioTable1RpmBins;RPM is float and not integer in order to use unified methods for interpolation;"RPM", 1, 0, 0.0, 25500.0, 2 + +fsio_table_8x8_t fsioTable2; +float[FSIO_TABLE_8] fsioTable2LoadBins;;"L", 1, 0, 0.0, 30000.0, 2 +float[FSIO_TABLE_8] fsioTable2RpmBins;RPM is float and not integer in order to use unified methods for interpolation;"RPM", 1, 0, 0.0, 25500.0, 2 + end_struct