From 16378dcf59caf946500bcd117ada2553baf50563 Mon Sep 17 00:00:00 2001 From: Scott Smith Date: Fri, 5 Nov 2021 18:55:33 -0700 Subject: [PATCH] Convert existing tables to use the simpler 3d table definition style in rusefi_config.txt (#3473) This fixes #3465. --- firmware/controllers/algo/rusefi_types.h | 30 ++------- firmware/integration/rusefi_config.txt | 62 +++++++----------- java_tools/ConfigDefinition.jar | Bin 3522333 -> 3522453 bytes .../com/rusefi/output/JavaFieldsConsumer.java | 4 +- .../rusefi/test/ConfigFieldParserTest.java | 29 ++++---- 5 files changed, 45 insertions(+), 80 deletions(-) diff --git a/firmware/controllers/algo/rusefi_types.h b/firmware/controllers/algo/rusefi_types.h index 990a6dc5c5..b386827605 100644 --- a/firmware/controllers/algo/rusefi_types.h +++ b/firmware/controllers/algo/rusefi_types.h @@ -23,6 +23,10 @@ typedef unsigned int time_t; #include "rusefi_enums.h" #include "firing_order.h" +#if __cplusplus +#include "scaled_channel.h" +#endif + #define DEFAULT_FUEL_LOAD_COUNT 16 #define DEFAULT_IGN_LOAD_COUNT 16 @@ -94,32 +98,6 @@ typedef char le_formula_t[LE_COMMAND_LENGTH]; typedef brain_pin_e egt_cs_array_t[EGT_CHANNEL_COUNT]; -#if __cplusplus -#include "scaled_channel.h" -using ve_table_t = float[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; -using lambda_table_t = scaled_channel[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; -#endif - -typedef uint16_t map_estimate_table_t[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; -typedef float ignition_table_t[IGN_LOAD_COUNT][IGN_RPM_COUNT]; -typedef int16_t ignition_tps_table_t[IGN_LOAD_COUNT][IGN_RPM_COUNT]; -typedef uint8_t pedal_to_tps_t[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; -typedef uint8_t iac_pid_mult_t[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; - -typedef float baro_corr_table_t[BARO_CORR_SIZE][BARO_CORR_SIZE]; - -typedef bool tcubinary_table_t[TCU_GEAR_COUNT][TCU_SOLENOID_COUNT]; - -typedef float fsio_table_8x8_f32t[FSIO_TABLE_8][FSIO_TABLE_8]; -typedef float tps_tps_table_t[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; -typedef uint8_t fsio_table_8x8_u8t[FSIO_TABLE_8][FSIO_TABLE_8]; -typedef uint8_t boost_table_t[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; -typedef uint8_t boost_target_table_t[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; -typedef uint8_t gppwm_table_t[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; - - -// this is different type simply to have different hi/low range in rusefi.ini -typedef ignition_table_t angle_table_t; typedef int16_t fsio_pwm_freq_t; diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index e31b32b456..e2d0d4f8a9 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -235,36 +235,18 @@ struct_no_prefix engine_configuration_s #define PACK_MULT_MAP_ESTIMATE 100 -custom map_estimate_table_t 2*@@FUEL_RPM_COUNT@@x@@FUEL_LOAD_COUNT@@ array, U16, @OFFSET@, [@@FUEL_RPM_COUNT@@x@@FUEL_LOAD_COUNT@@], "kPa", {1/@@PACK_MULT_MAP_ESTIMATE@@}, 0, 0, 100, 2 -custom ve_table_t 4*@@FUEL_RPM_COUNT@@x@@FUEL_LOAD_COUNT@@ array, F32, @OFFSET@, [@@FUEL_RPM_COUNT@@x@@FUEL_LOAD_COUNT@@], "%", 1, 0, 0, 999, 2 -custom lambda_table_t @@FUEL_RPM_COUNT@@x@@FUEL_LOAD_COUNT@@ array, U08, @OFFSET@, [@@FUEL_RPM_COUNT@@x@@FUEL_LOAD_COUNT@@], "deg", {1/@@PACK_MULT_LAMBDA_CFG@@}, 0, 0.6, 1.5, 2 -custom afr_table_t @@FUEL_RPM_COUNT@@x@@FUEL_LOAD_COUNT@@ array, U08, @OFFSET@, [@@FUEL_RPM_COUNT@@x@@FUEL_LOAD_COUNT@@], "deg", {1/@@PACK_MULT_AFR_CFG@@}, 0, 0, 25, 1 - -custom tcubinary_table_t @@TCU_SOLENOID_COUNT@@x@@TCU_GEAR_COUNT@@ array, U08, @OFFSET@, [@@TCU_SOLENOID_COUNT@@x@@TCU_GEAR_COUNT@@], "onoff", 1, 0, 0, 1, 0 - -custom fsio_table_8x8_u8t @@FSIO_TABLE_8@@x@@FSIO_TABLE_8@@ array, U08, @OFFSET@, [@@FSIO_TABLE_8@@x@@FSIO_TABLE_8@@], "value", 1, 0, 0, 255, 0 -custom fsio_table_8x8_f32t 4*@@FSIO_TABLE_8@@x@@FSIO_TABLE_8@@ array, F32, @OFFSET@, [@@FSIO_TABLE_8@@x@@FSIO_TABLE_8@@], "value", 1, 0, 0, 30000, 2 -custom tps_tps_table_t 4*@@TPS_TPS_ACCEL_TABLE@@x@@TPS_TPS_ACCEL_TABLE@@ array, F32, @OFFSET@, [@@TPS_TPS_ACCEL_TABLE@@x@@TPS_TPS_ACCEL_TABLE@@], "value", 1, 0, 0, 30000, 2 -custom baro_corr_table_t 4*@@BARO_CORR_SIZE@@x@@BARO_CORR_SIZE@@ array, F32, @OFFSET@, [@@BARO_CORR_SIZE@@x@@BARO_CORR_SIZE@@], "ratio", 1, 0, 0, 2, 2 -custom ignition_table_t 4*@@IGN_RPM_COUNT@@x@@IGN_LOAD_COUNT@@ array, F32, @OFFSET@, [@@IGN_RPM_COUNT@@x@@IGN_LOAD_COUNT@@], "deg", 1, 0, -20, 90, 2 -custom angle_table_t 4*@@IGN_RPM_COUNT@@x@@IGN_LOAD_COUNT@@ array, F32, @OFFSET@, [@@IGN_RPM_COUNT@@x@@IGN_LOAD_COUNT@@], "deg", 1, 0, -720, 720, 2 -custom pedal_to_tps_t @@PEDAL_TO_TPS_SIZE@@x@@PEDAL_TO_TPS_SIZE@@ array, U08, @OFFSET@, [@@PEDAL_TO_TPS_SIZE@@x@@PEDAL_TO_TPS_SIZE@@], "%", 1, 0, 0, 100, 0 -custom iac_pid_mult_t @@IAC_PID_MULT_SIZE@@x@@IAC_PID_MULT_SIZE@@ array, U08, @OFFSET@, [@@IAC_PID_MULT_SIZE@@x@@IAC_PID_MULT_SIZE@@], "%", 1, 0, 0, 999, 2 -custom boost_table_t @@BOOST_RPM_COUNT@@x@@BOOST_LOAD_COUNT@@ array, U08, @OFFSET@, [@@BOOST_RPM_COUNT@@x@@BOOST_LOAD_COUNT@@], "", @@LOAD_1_BYTE_PACKING_MULT@@, 0 , 0, 100, 0 -custom boost_target_table_t @@BOOST_RPM_COUNT@@x@@BOOST_LOAD_COUNT@@ array, U08, @OFFSET@, [@@BOOST_RPM_COUNT@@x@@BOOST_LOAD_COUNT@@], "", @@LOAD_1_BYTE_PACKING_MULT@@, 0 , 0, 3000, 0 #define GPPWM_LOAD_COUNT 8 #define GPPWM_RPM_COUNT 8 #define GPPWM_CHANNELS 4 #define GPPWM_NOTE_SIZE 16 -custom gppwm_table_t @@GPPWM_RPM_COUNT@@x@@GPPWM_LOAD_COUNT@@ array, U08, @OFFSET@, [@@GPPWM_RPM_COUNT@@x@@GPPWM_LOAD_COUNT@@], "duty", 1, 0, 0, 100, 0 struct stft_cell_cfg_s int8_t maxAdd;;"%", 1, 0, 0, 25, 0 @@ -367,7 +349,7 @@ struct gppwm_channel uint8_t[GPPWM_LOAD_COUNT] loadBins;;"load", 1, 0, 0, 250, 0 uint8_t[GPPWM_RPM_COUNT] rpmBins;;"RPM", @@RPM_1_BYTE_PACKING_MULT@@, 0, 0, 12000, 0 - gppwm_table_t table; + uint8_t[GPPWM_RPM_COUNT x GPPWM_LOAD_COUNT] table;;"duty", 1, 0, 0, 100, 0 end_struct custom air_pressure_sensor_type_e 4 bits, U32, @OFFSET@, [0:4], "Custom", "DENSO183", "MPX4250", "HONDA3BAR", "NEON_2003", "22012AA090", "3 Bar", "MPX4100", "Toyota 89420-02010", "MPX4250A", "Bosch 2.5", "Mazda1Bar", "GM 2 Bar", "GM 1 Bar", "MPXH6400" @@ -1113,7 +1095,7 @@ int mapAveragingSchedulingAtIndex;+At what trigger index should some MAP-related float[BARO_CORR_SIZE] baroCorrPressureBins;;"kPa", 1, 0, 0, 200, 2 float[BARO_CORR_SIZE] baroCorrRpmBins;;"RPM", 1, 0, 0, 18000, 2 -baro_corr_table_t baroCorrTable; +float[BARO_CORR_SIZE x BARO_CORR_SIZE] baroCorrTable;;"ratio", 1, 0, 0, 2, 2 #define pin_mode_e_enum "default", "INVALID", "INVALID", "INVALID", "opendrain", "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", "PULLUP", "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", "INVALID", "PULLDOWN" custom pin_mode_e 1 bits, U08, @OFFSET@, [0:6], @@pin_mode_e_enum@@ @@ -1459,7 +1441,7 @@ tChargeMode_e tChargeMode; pid_s idleRpmPid2 - iac_pid_mult_t iacPidMultTable; + uint8_t[IAC_PID_MULT_SIZE x IAC_PID_MULT_SIZE] iacPidMultTable;;"%", 1, 0, 0, 999, 2 uint8_t[IAC_PID_MULT_SIZE] iacPidMultLoadBins;;"Load", 1, 0, 0, 500, 2 uint8_t[IAC_PID_MULT_SIZE] iacPidMultRpmBins;;"RPM", @@RPM_1_BYTE_PACKING_MULT@@, 0, 0, 12000, 0 @@ -1506,14 +1488,16 @@ float[AFTERSTART_HOLD_CURVE_SIZE] afterstartHoldTime;;"Seconds", 1, 0, 0, 100, 1 float[AFTERSTART_ENRICH_CURVE_SIZE] afterstartEnrich;;"%", 1, 0, 0, 600, 1 float[AFTERSTART_DECAY_CURVE_SIZE] afterstartDecayTime;;"Seconds", 1, 0, 0, 100, 1 -boost_table_t boostTableOpenLoop; +! TODO: use autoscale +uint8_t[BOOST_RPM_COUNT x BOOST_LOAD_COUNT] boostTableOpenLoop;;"", @@LOAD_1_BYTE_PACKING_MULT@@, 0 , 0, 100, 0 uint8_t[8] unused6312;;"units", 1, 0, -20, 100, 0 uint8_t[BOOST_RPM_COUNT] boostRpmBins;;"RPM", @@RPM_1_BYTE_PACKING_MULT@@, 0, 0, 12000, 0 -boost_target_table_t boostTableClosedLoop; +! TODO: use autoscale +uint8_t[BOOST_RPM_COUNT x BOOST_LOAD_COUNT] boostTableClosedLoop;;"", @@LOAD_1_BYTE_PACKING_MULT@@, 0 , 0, 3000, 0 uint8_t[BOOST_LOAD_COUNT] boostTpsBins;;"%", @@TPS_1_BYTE_PACKING_MULT@@, 0, 0, 100, 2 -pedal_to_tps_t pedalToTpsTable; +uint8_t[PEDAL_TO_TPS_SIZE x PEDAL_TO_TPS_SIZE] pedalToTpsTable;;"%", 1, 0, 0, 100, 0 uint8_t[PEDAL_TO_TPS_SIZE] pedalToTpsPedalBins;;"%", 1, 0, 0, 120, 0 ! it's not serious to use one byte for RPM but let me try that just to try it uint8_t[PEDAL_TO_TPS_SIZE] pedalToTpsRpmBins;;"RPM", @@RPM_1_BYTE_PACKING_MULT@@, 0, 0, 12000, 0 @@ -1551,44 +1535,44 @@ float[CLT_CURVE_SIZE] cltIdleCorr; CLT-based idle position multiplier for sim float[MAF_DECODING_COUNT] mafDecoding;Also known as MAF transfer function.\nkg/hour value.\nBy the way 2.081989116 kg/h = 1 ft3/m;"kg/hour", 1, 0, -500, 4000, 2 float[MAF_DECODING_COUNT] mafDecodingBins;;"V", 1, 0, -5, 150, 2 -angle_table_t ignitionIatCorrTable; +float[IGN_RPM_COUNT x IGN_LOAD_COUNT] ignitionIatCorrTable;;"deg", 1, 0, -720, 720, 2 float[IGN_LOAD_COUNT] ignitionIatCorrLoadBins;;"Temperature", 1, 0, 0, 500, 2 float[IGN_RPM_COUNT] ignitionIatCorrRpmBins;;"RPM", 1, 0, 0, 18000, 2 -angle_table_t injectionPhase; +float[IGN_RPM_COUNT x IGN_LOAD_COUNT] injectionPhase;;"deg", 1, 0, -720, 720, 2 float[FUEL_LOAD_COUNT] injPhaseLoadBins;;"Load", 1, 0, 0, 500, 2 float[FUEL_RPM_COUNT] injPhaseRpmBins;;"RPM", 1, 0, 0, 18000, 2 -tcubinary_table_t tcuSolenoidTable; +uint8_t[TCU_SOLENOID_COUNT x TCU_GEAR_COUNT] tcuSolenoidTable;;"onoff", 1, 0, 0, 1, 0 float vssFilterReciprocal;+Good example: number of tooth on wheel, For Can 10 is a good number.;"Hz", 1, 0, 2, 20, 2 -map_estimate_table_t mapEstimateTable; +uint16_t[FUEL_RPM_COUNT x FUEL_LOAD_COUNT] mapEstimateTable;;"kPa", {1/@@PACK_MULT_MAP_ESTIMATE@@}, 0, 0, 100, 2 uint16_t[FUEL_LOAD_COUNT] autoscale mapEstimateTpsBins;;"% TPS", {1/@@TPS_2_BYTE_PACKING_MULT@@}, 0, 0, 100, 1 uint16_t[FUEL_RPM_COUNT] mapEstimateRpmBins;;"RPM", 1, 0, 0, 18000, 0 -fsio_table_8x8_u8t vvtTable1; +uint8_t[FSIO_TABLE_8 x FSIO_TABLE_8] vvtTable1;;"value", 1, 0, 0, 255, 0 float[FSIO_TABLE_8] vvtTable1LoadBins;;"L", 1, 0, 0, 255, 0 float[FSIO_TABLE_8] vvtTable1RpmBins;RPM is float and not integer in order to use unified methods for interpolation;"RPM", 1, 0, 0, 25500, 2 -fsio_table_8x8_u8t vvtTable2; +uint8_t[FSIO_TABLE_8 x FSIO_TABLE_8] vvtTable2;;"value", 1, 0, 0, 255, 0 float[FSIO_TABLE_8] vvtTable2LoadBins;;"L", 1, 0, 0, 255, 0 float[FSIO_TABLE_8] vvtTable2RpmBins;RPM is float and not integer in order to use unified methods for interpolation;"RPM", 1, 0, 0, 25500, 2 float[64] unusedLuaWasHere;;"L", 1, 0, 0, 255, 0 -ignition_table_t ignitionTable; +float[IGN_RPM_COUNT x IGN_LOAD_COUNT] ignitionTable;;"deg", 1, 0, -20, 90, 2 float[IGN_LOAD_COUNT] ignitionLoadBins;;"Load", 1, 0, 0, 500, 2 float[IGN_RPM_COUNT] ignitionRpmBins;;"RPM", 1, 0, 0, 18000, 2 -ve_table_t veTable; +float[FUEL_RPM_COUNT x FUEL_LOAD_COUNT] veTable;;"%", 1, 0, 0, 999, 2 float[FUEL_LOAD_COUNT] veLoadBins;;"kPa", 1, 0, 0, 400, 2 float[FUEL_RPM_COUNT] veRpmBins;;"RPM", 1, 0, 0, 18000, 2 #if LAMBDA -lambda_table_t lambdaTable; +uint8_t[FUEL_RPM_COUNT x FUEL_LOAD_COUNT] autoscale lambdaTable;;"lambda", {1/@@PACK_MULT_LAMBDA_CFG@@}, 0, 0.6, 1.5, 2 #else -afr_table_t lambdaTable; +uint8_t[FUEL_RPM_COUNT x FUEL_LOAD_COUNT] lambdaTable;;"afr", {1/@@PACK_MULT_AFR_CFG@@}, 0, 0, 25, 1 #endif ! union @@ -1599,23 +1583,23 @@ afr_table_t lambdaTable; float[FUEL_LOAD_COUNT] lambdaLoadBins;;"", 1, 0, 0, 500, 2 float[FUEL_RPM_COUNT] lambdaRpmBins;;"RPM", 1, 0, 0, 18000, 2 -tps_tps_table_t tpsTpsAccelTable; +float[TPS_TPS_ACCEL_TABLE x TPS_TPS_ACCEL_TABLE] tpsTpsAccelTable;;"value", 1, 0, 0, 30000, 2 float[TPS_TPS_ACCEL_TABLE] tpsTpsAccelFromRpmBins;;"from", 1, 0, 0, 30000, 2 float[TPS_TPS_ACCEL_TABLE] tpsTpsAccelToRpmBins;RPM is float and not integer in order to use unified methods for interpolation;"to", 1, 0, 0, 25500, 2 -fsio_table_8x8_f32t fsioTable1; +float[FSIO_TABLE_8 x FSIO_TABLE_8] fsioTable1;;"value", 1, 0, 0, 30000, 2 float[FSIO_TABLE_8] fsioTable1LoadBins;;"L", 1, 0, 0, 30000, 2 float[FSIO_TABLE_8] fsioTable1RpmBins;RPM is float and not integer in order to use unified methods for interpolation;"RPM", 1, 0, 0, 25500, 2 -fsio_table_8x8_u8t fsioTable2; +uint8_t[FSIO_TABLE_8 x FSIO_TABLE_8] fsioTable2;;"value", 1, 0, 0, 255, 0 float[FSIO_TABLE_8] fsioTable2LoadBins;;"L", 1, 0, 0, 255, 0 float[FSIO_TABLE_8] fsioTable2RpmBins;RPM is float and not integer in order to use unified methods for interpolation;"RPM", 1, 0, 0, 25500, 2 -fsio_table_8x8_u8t fsioTable3; +uint8_t[FSIO_TABLE_8 x FSIO_TABLE_8] fsioTable3;;"value", 1, 0, 0, 255, 0 float[FSIO_TABLE_8] fsioTable3LoadBins;;"L", 1, 0, 0, 255, 0 float[FSIO_TABLE_8] fsioTable3RpmBins;RPM is float and not integer in order to use unified methods for interpolation;"RPM", 1, 0, 0, 25500, 2 -fsio_table_8x8_u8t fsioTable4; +uint8_t[FSIO_TABLE_8 x FSIO_TABLE_8] fsioTable4;;"value", 1, 0, 0, 255, 0 float[FSIO_TABLE_8] fsioTable4LoadBins;;"L", 1, 0, 0, 255, 0 float[FSIO_TABLE_8] fsioTable4RpmBins;RPM is float and not integer in order to use unified methods for interpolation;"RPM", 1, 0, 0, 25500, 2 diff --git a/java_tools/ConfigDefinition.jar b/java_tools/ConfigDefinition.jar index e25ceec2dae51c87fdb19ce6b82363b5f80a3f08..2489939bf314ff7ece9d2481950fdf593530a4db 100644 GIT binary patch delta 65907 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%0DtXHB4)C=6e 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 DG+vc0 diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/output/JavaFieldsConsumer.java b/java_tools/configuration_definition/src/main/java/com/rusefi/output/JavaFieldsConsumer.java index 2327268857..19742acabf 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/output/JavaFieldsConsumer.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/output/JavaFieldsConsumer.java @@ -68,9 +68,7 @@ public abstract class JavaFieldsConsumer implements ConfigurationConsumer { return tsPosition; } - if (configField.getArraySizes().length != 0) { - // todo: array support - } else if (TypesHelper.isFloat(configField.getType())) { + if (TypesHelper.isFloat(configField.getType())) { writeJavaFieldName(nameWithPrefix, tsPosition); javaFieldsWriter.write("FieldType.FLOAT);" + EOL); } else { diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/test/ConfigFieldParserTest.java b/java_tools/configuration_definition/src/main/java/com/rusefi/test/ConfigFieldParserTest.java index d6751312ed..e2d2c9c94e 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/test/ConfigFieldParserTest.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/test/ConfigFieldParserTest.java @@ -198,7 +198,8 @@ public class ConfigFieldParserTest { state.readBufferedReader(reader, Collections.singletonList(javaFieldsConsumer)); assertEquals("\tpublic static final Field VAR = Field.create(\"VAR\", 0, 120, FieldType.STRING);\n" + - "\tpublic static final Field PERIODMS = Field.create(\"PERIODMS\", 120, FieldType.INT16);\n", + "\tpublic static final Field PERIODMS = Field.create(\"PERIODMS\", 120, FieldType.INT16);\n" + + "\tpublic static final Field ALIGNMENTFILL_AT_122 = Field.create(\"ALIGNMENTFILL_AT_122\", 122, FieldType.INT8);\n", javaFieldsConsumer.getJavaFieldsWriter()); } @@ -279,17 +280,21 @@ public class ConfigFieldParserTest { assertEquals("\tpublic static final Field OFFSET = Field.create(\"OFFSET\", 0, FieldType.INT16);\n" + - "\tpublic static final Field PERIODMS = Field.create(\"PERIODMS\", 2, FieldType.INT16);\n" + - "\tpublic static final Field MINVALUE = Field.create(\"MINVALUE\", 4, FieldType.INT16);\n" + - "\tpublic static final Field ALTERNATORCONTROL_OFFSET = Field.create(\"ALTERNATORCONTROL_OFFSET\", 0, FieldType.INT16);\n" + - "\tpublic static final Field ALTERNATORCONTROL_PERIODMS = Field.create(\"ALTERNATORCONTROL_PERIODMS\", 2, FieldType.INT16);\n" + - "\tpublic static final Field ALTERNATORCONTROL_MINVALUE = Field.create(\"ALTERNATORCONTROL_MINVALUE\", 4, FieldType.INT16);\n" + - "\tpublic static final Field ETB1_OFFSET = Field.create(\"ETB1_OFFSET\", 8, FieldType.INT16);\n" + - "\tpublic static final Field ETB1_PERIODMS = Field.create(\"ETB1_PERIODMS\", 10, FieldType.INT16);\n" + - "\tpublic static final Field ETB1_MINVALUE = Field.create(\"ETB1_MINVALUE\", 12, FieldType.INT16);\n" + - "\tpublic static final Field ETB2_OFFSET = Field.create(\"ETB2_OFFSET\", 16, FieldType.INT16);\n" + - "\tpublic static final Field ETB2_PERIODMS = Field.create(\"ETB2_PERIODMS\", 18, FieldType.INT16);\n" + - "\tpublic static final Field ETB2_MINVALUE = Field.create(\"ETB2_MINVALUE\", 20, FieldType.INT16);\n", + "\tpublic static final Field PERIODMS = Field.create(\"PERIODMS\", 2, FieldType.INT16);\n" + + "\tpublic static final Field MINVALUE = Field.create(\"MINVALUE\", 4, FieldType.INT16);\n" + + "\tpublic static final Field ALIGNMENTFILL_AT_6 = Field.create(\"ALIGNMENTFILL_AT_6\", 6, FieldType.INT8);\n" + + "\tpublic static final Field ALTERNATORCONTROL_OFFSET = Field.create(\"ALTERNATORCONTROL_OFFSET\", 0, FieldType.INT16);\n" + + "\tpublic static final Field ALTERNATORCONTROL_PERIODMS = Field.create(\"ALTERNATORCONTROL_PERIODMS\", 2, FieldType.INT16);\n" + + "\tpublic static final Field ALTERNATORCONTROL_MINVALUE = Field.create(\"ALTERNATORCONTROL_MINVALUE\", 4, FieldType.INT16);\n" + + "\tpublic static final Field ALTERNATORCONTROL_ALIGNMENTFILL_AT_6 = Field.create(\"ALTERNATORCONTROL_ALIGNMENTFILL_AT_6\", 6, FieldType.INT8);\n" + + "\tpublic static final Field ETB1_OFFSET = Field.create(\"ETB1_OFFSET\", 8, FieldType.INT16);\n" + + "\tpublic static final Field ETB1_PERIODMS = Field.create(\"ETB1_PERIODMS\", 10, FieldType.INT16);\n" + + "\tpublic static final Field ETB1_MINVALUE = Field.create(\"ETB1_MINVALUE\", 12, FieldType.INT16);\n" + + "\tpublic static final Field ETB1_ALIGNMENTFILL_AT_6 = Field.create(\"ETB1_ALIGNMENTFILL_AT_6\", 14, FieldType.INT8);\n" + + "\tpublic static final Field ETB2_OFFSET = Field.create(\"ETB2_OFFSET\", 16, FieldType.INT16);\n" + + "\tpublic static final Field ETB2_PERIODMS = Field.create(\"ETB2_PERIODMS\", 18, FieldType.INT16);\n" + + "\tpublic static final Field ETB2_MINVALUE = Field.create(\"ETB2_MINVALUE\", 20, FieldType.INT16);\n" + + "\tpublic static final Field ETB2_ALIGNMENTFILL_AT_6 = Field.create(\"ETB2_ALIGNMENTFILL_AT_6\", 22, FieldType.INT8);\n", javaFieldsConsumer.getJavaFieldsWriter()); assertEquals("\tcase FSIO_SETTING_OFFSET:\n" +