From b5bd4f646e05b6227332bf37cb1d1848c87d724a Mon Sep 17 00:00:00 2001 From: rusefi Date: Wed, 10 Apr 2019 19:07:16 -0400 Subject: [PATCH] fixing EnumToString in light of __packed__ --- .../controllers/algo/auto_generated_enums.cpp | 62 +++++++++++++----- java_tools/enum2string.jar | Bin 6320 -> 7233 bytes java_tools/enum_to_string/.idea/misc.xml | 5 +- java_tools/enum_to_string/.idea/vcs.xml | 4 +- .../src/com/rusefi/EnumToString.java | 17 +++-- .../src/com/rusefi/EnumToStringTest.java | 42 ++++++++++++ 6 files changed, 101 insertions(+), 29 deletions(-) diff --git a/firmware/controllers/algo/auto_generated_enums.cpp b/firmware/controllers/algo/auto_generated_enums.cpp index d949586ab1..d01bde12ca 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 Thu Nov 22 20:05:41 EST 2018 +// on Wed Apr 10 18:38:13 EDT 2019 // see also gen_config_and_enums.bat @@ -35,6 +35,8 @@ case DODGE_RAM: return "DODGE_RAM"; case DODGE_STRATUS: return "DODGE_STRATUS"; +case ETB_BENCH_ENGINE: + return "ETB_BENCH_ENGINE"; case FORD_ASPIRE_1996: return "FORD_ASPIRE_1996"; case FORD_ESCORT_GT: @@ -91,10 +93,6 @@ case MIATA_NA6_MAP: return "MIATA_NA6_MAP"; case MIATA_NA6_VAF: return "MIATA_NA6_VAF"; -case ETB_BENCH_ENGINE: - return "ETB_BENCH_ENGINE"; -case TLE8888_BENCH_ENGINE: - return "TLE8888_BENCH_ENGINE"; case MINIMAL_PINS: return "MINIMAL_PINS"; case MINI_COOPER_R50: @@ -127,6 +125,8 @@ case TEST_ISSUE_366_BOTH: return "TEST_ISSUE_366_BOTH"; case TEST_ISSUE_366_RISE: return "TEST_ISSUE_366_RISE"; +case TLE8888_BENCH_ENGINE: + return "TLE8888_BENCH_ENGINE"; case TOYOTA_2JZ_GTE_VVTi: return "TOYOTA_2JZ_GTE_VVTi"; case TOYOTA_JZS147: @@ -365,6 +365,19 @@ case OM_OPENDRAIN_INVERTED: } return NULL; } +const char *getPin_mode_e(pin_mode_e value){ +switch(value) { +case PO_DEFAULT: + return "PO_DEFAULT"; +case PO_OPENDRAIN: + return "PO_OPENDRAIN"; +case PO_PULLDOWN: + return "PO_PULLDOWN"; +case PO_PULLUP: + return "PO_PULLUP"; + } + return NULL; +} const char *getPin_input_mode_e(pin_input_mode_e value){ switch(value) { case PI_DEFAULT: @@ -401,10 +414,10 @@ case IM_INDIVIDUAL_COILS: return "IM_INDIVIDUAL_COILS"; case IM_ONE_COIL: return "IM_ONE_COIL"; +case IM_TWO_COILS: + return "IM_TWO_COILS"; case IM_WASTED_SPARK: return "IM_WASTED_SPARK"; -case IM_TWO_COILS: - return "IM_TWO_COILS"; } return NULL; } @@ -451,6 +464,19 @@ case UART_NONE: } return NULL; } +const char *getSpi_speed_e(spi_speed_e value){ +switch(value) { +case _150KHz: + return "_150KHz"; +case _1_25MHz: + return "_1_25MHz"; +case _2_5MHz: + return "_2_5MHz"; +case _5MHz: + return "_5MHz"; + } + return NULL; +} const char *getSpi_device_e(spi_device_e value){ switch(value) { case Force_4_bytes_size_spi_device: @@ -526,6 +552,8 @@ const char *getEgo_sensor_e(ego_sensor_e value){ switch(value) { case ES_14Point7_Free: return "ES_14Point7_Free"; +case ES_AEM: + return "ES_AEM"; case ES_BPSX_D1: return "ES_BPSX_D1"; case ES_Custom: @@ -534,8 +562,6 @@ case ES_Innovate_MTX_L: return "ES_Innovate_MTX_L"; case ES_NarrowBand: return "ES_NarrowBand"; -case ES_AEM: - return "ES_AEM"; case ES_PLX: return "ES_PLX"; case Force_4_bytes_size_ego_sensor: @@ -705,10 +731,6 @@ case GPIOE_8: return "GPIOE_8"; case GPIOE_9: return "GPIOE_9"; -case GPIO_INVALID: - return "GPIO_INVALID"; -case GPIO_UNASSIGNED: - return "GPIO_UNASSIGNED"; case GPIOF_0: return "GPIOF_0"; case GPIOF_1: @@ -770,7 +792,7 @@ case GPIOG_6: case GPIOG_7: return "GPIOG_7"; case GPIOG_8: - return "GPIOA_G"; + return "GPIOG_8"; case GPIOG_9: return "GPIOG_9"; case GPIOH_0: @@ -805,13 +827,15 @@ case GPIOH_8: return "GPIOH_8"; case GPIOH_9: return "GPIOH_9"; +case GPIO_INVALID: + return "GPIO_INVALID"; +case GPIO_UNASSIGNED: + return "GPIO_UNASSIGNED"; } return NULL; } const char *getDebug_mode_e(debug_mode_e value){ switch(value) { -case DBG_TLE8888: - return "DBG_TLE8888"; case DBG_32: return "DBG_32"; case DBG_33: @@ -854,6 +878,8 @@ case DBG_IGNITION_TIMING: return "DBG_IGNITION_TIMING"; case DBG_INSTANT_RPM: return "DBG_INSTANT_RPM"; +case DBG_ION: + return "DBG_ION"; case DBG_KNOCK: return "DBG_KNOCK"; case DBG_MAP: @@ -866,6 +892,8 @@ case DBG_SR5_PROTOCOL: return "DBG_SR5_PROTOCOL"; case DBG_STATUS: return "DBG_STATUS"; +case DBG_TLE8888: + return "DBG_TLE8888"; case DBG_TPS_ACCEL: return "DBG_TPS_ACCEL"; case DBG_TRIGGER_INPUT: @@ -878,8 +906,6 @@ case DBG_VVT: return "DBG_VVT"; case DBG_WARMUP_ENRICH: return "DBG_WARMUP_ENRICH"; -case DBG_ION: - return "DBG_ION"; case Force_4_bytes_size_debug_mode_e: return "Force_4_bytes_size_debug_mode_e"; } diff --git a/java_tools/enum2string.jar b/java_tools/enum2string.jar index c9c79f78d990d7d2c40bb9d72edb4325092f4efc..ad8e266fcd4922de0379b5a9272ddafd081c9051 100644 GIT binary patch literal 7233 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 diff --git a/java_tools/enum_to_string/.idea/misc.xml b/java_tools/enum_to_string/.idea/misc.xml index 1eee6a6201..d5d79e0ca5 100644 --- a/java_tools/enum_to_string/.idea/misc.xml +++ b/java_tools/enum_to_string/.idea/misc.xml @@ -1,9 +1,6 @@ - + - - \ No newline at end of file diff --git a/java_tools/enum_to_string/.idea/vcs.xml b/java_tools/enum_to_string/.idea/vcs.xml index ebabb34f16..9b76d0c0c2 100644 --- a/java_tools/enum_to_string/.idea/vcs.xml +++ b/java_tools/enum_to_string/.idea/vcs.xml @@ -2,6 +2,6 @@ + - - + \ No newline at end of file diff --git a/java_tools/enum_to_string/src/com/rusefi/EnumToString.java b/java_tools/enum_to_string/src/com/rusefi/EnumToString.java index c43ea2b89f..25f41bac96 100644 --- a/java_tools/enum_to_string/src/com/rusefi/EnumToString.java +++ b/java_tools/enum_to_string/src/com/rusefi/EnumToString.java @@ -14,7 +14,7 @@ import java.util.TreeSet; public class EnumToString { private final static Set currentValues = new TreeSet<>(); - private final static StringBuilder cppFileContent = new StringBuilder(); + public final static StringBuilder cppFileContent = new StringBuilder(); private final static StringBuilder headerFileContent = new StringBuilder(); public static void main(String[] args) throws IOException { @@ -46,7 +46,6 @@ public class EnumToString { } private static void process(String inFileName) throws IOException { - BufferedReader reader; String header = "// auto-generated from" + inFileName + "\r\n" + "// by enum2string.jar tool\r\n" + @@ -59,7 +58,6 @@ public class EnumToString { cppFileContent.append(header); EnumToString.headerFileContent.insert(0, header); - boolean isInsideEnum = false; File f = new File(inFileName); System.out.println("Reading from " + inFileName); @@ -69,12 +67,21 @@ public class EnumToString { cppFileContent.append("#include \"" + simpleFileName + "\"\r\n"); EnumToString.headerFileContent.append("#include \"" + simpleFileName + "\"\r\n"); - reader = new BufferedReader(new FileReader(inFileName)); + process(new FileReader(inFileName)); + } + + public static void clear() { + cppFileContent.setLength(0); + } + + public static void process(Reader in) throws IOException { + boolean isInsideEnum = false; + BufferedReader reader = new BufferedReader(in); String line; while ((line = reader.readLine()) != null) { line = removeSpaces(line); - if (line.startsWith("typedefenum{")) { + if (line.startsWith("typedefenum{") || line.startsWith("typedefenum__attribute__")) { System.out.println("Entering enum"); currentValues.clear(); isInsideEnum = true; diff --git a/java_tools/enum_to_string/src/com/rusefi/EnumToStringTest.java b/java_tools/enum_to_string/src/com/rusefi/EnumToStringTest.java index d225258089..ea6b95c315 100644 --- a/java_tools/enum_to_string/src/com/rusefi/EnumToStringTest.java +++ b/java_tools/enum_to_string/src/com/rusefi/EnumToStringTest.java @@ -2,7 +2,11 @@ package com.rusefi; import org.junit.Test; +import java.io.IOException; +import java.io.StringReader; + import static com.rusefi.EnumToString.isKeyValueLine; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; public class EnumToStringTest { @@ -12,4 +16,42 @@ public class EnumToStringTest { assertTrue(isKeyValueLine("MIN = 2,")); assertTrue(isKeyValueLine("MIN = -3,")); } + + @Test + public void parseEnum() throws IOException { + EnumToString.clear(); + EnumToString.process(new StringReader( + "typedef enum {\n" + + "\tGPIO_UNASSIGNED = 0,\n" + + "\tGPIO_INVALID = 1,\n" + + "}brain_pin_e;")); + assertEquals("const char *getBrain_pin_e(brain_pin_e value){\r\n" + + "switch(value) {\r\n" + + "case GPIO_INVALID:\r\n" + + " return \"GPIO_INVALID\";\r\n" + + "case GPIO_UNASSIGNED:\r\n" + + " return \"GPIO_UNASSIGNED\";\r\n" + + " }\r\n" + + " return NULL;\r\n" + + "}\r\n", EnumToString.cppFileContent.toString()); + } + + @Test + public void parsePackedEnum() throws IOException { + EnumToString.clear(); + EnumToString.process(new StringReader( + "typedef enum __attribute__ ((__packed__)) {\n" + + "\tGPIO_UNASSIGNED = 0,\n" + + "\tGPIO_INVALID = 1,\n" + + "} brain_pin_e ;")); + assertEquals("const char *getBrain_pin_e(brain_pin_e value){\r\n" + + "switch(value) {\r\n" + + "case GPIO_INVALID:\r\n" + + " return \"GPIO_INVALID\";\r\n" + + "case GPIO_UNASSIGNED:\r\n" + + " return \"GPIO_UNASSIGNED\";\r\n" + + " }\r\n" + + " return NULL;\r\n" + + "}\r\n", EnumToString.cppFileContent.toString()); + } }