board-specific usability #808

extracting enum reader
This commit is contained in:
rusefi 2019-05-28 22:24:29 -04:00
parent f696509531
commit 83be45b83b
7 changed files with 746 additions and 726 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
// auto-generated from.\controllers/algo/rusefi_enums.h
// by enum2string.jar tool
// on Sat May 11 10:22:02 EDT 2019
// on Tue May 28 22:08:21 EDT 2019
// see also gen_config_and_enums.bat
@ -8,43 +8,43 @@
#ifndef _A_H_HEADER_
#define _A_H_HEADER_
#include "rusefi_enums.h"
const char *getEngine_type_e(engine_type_e value);
const char *getTrigger_type_e(trigger_type_e value);
const char *getPidAutoTune_AutoTunerState(PidAutoTune_AutoTunerState value);
const char *getPidAutoTune_Peak(PidAutoTune_Peak value);
const char *getAdc_channel_e(adc_channel_e value);
const char *getAdc_channel_mode_e(adc_channel_mode_e value);
const char *getTrigger_value_e(trigger_value_e value);
const char *getTrigger_wheel_e(trigger_wheel_e value);
const char *getTrigger_event_e(trigger_event_e value);
const char *getVvt_mode_e(vvt_mode_e value);
const char *getEngine_load_mode_e(engine_load_mode_e value);
const char *getAir_pressure_sensor_type_e(air_pressure_sensor_type_e value);
const char *getBrain_pin_e(brain_pin_e value);
const char *getCan_device_mode_e(can_device_mode_e value);
const char *getCan_nbc_e(can_nbc_e value);
const char *getChamber_style_e(chamber_style_e value);
const char *getCranking_ignition_mode_e(cranking_ignition_mode_e value);
const char *getDebug_mode_e(debug_mode_e value);
const char *getDisplay_mode_e(display_mode_e value);
const char *getLog_format_e(log_format_e value);
const char *getEgo_sensor_e(ego_sensor_e value);
const char *getEngine_load_mode_e(engine_load_mode_e value);
const char *getEngine_type_e(engine_type_e value);
const char *getGear_e(gear_e value);
const char *getHip_state_e(hip_state_e value);
const char *getIdle_mode_e(idle_mode_e value);
const char *getPin_output_mode_e(pin_output_mode_e value);
const char *getPin_mode_e(pin_mode_e value);
const char *getPin_input_mode_e(pin_input_mode_e value);
const char *getOperation_mode_e(operation_mode_e value);
const char *getIdle_state_e(idle_state_e value);
const char *getIgnition_mode_e(ignition_mode_e value);
const char *getInjection_mode_e(injection_mode_e value);
const char *getCranking_ignition_mode_e(cranking_ignition_mode_e value);
const char *getUart_device_e(uart_device_e value);
const char *getSpi_speed_e(spi_speed_e value);
const char *getSpi_device_e(spi_device_e value);
const char *getAdc_channel_e(adc_channel_e value);
const char *getMass_storage_e(mass_storage_e value);
const char *getEgo_sensor_e(ego_sensor_e value);
const char *getBrain_pin_e(brain_pin_e value);
const char *getDebug_mode_e(debug_mode_e value);
const char *getAir_pressure_sensor_type_e(air_pressure_sensor_type_e value);
const char *getCan_device_mode_e(can_device_mode_e value);
const char *getSensor_chart_e(sensor_chart_e value);
const char *getGear_e(gear_e value);
const char *getLog_format_e(log_format_e value);
const char *getMaf_sensor_type_e(maf_sensor_type_e value);
const char *getTiming_mode_e(timing_mode_e value);
const char *getChamber_style_e(chamber_style_e value);
const char *getCan_nbc_e(can_nbc_e value);
const char *getHip_state_e(hip_state_e value);
const char *getMass_storage_e(mass_storage_e value);
const char *getOperation_mode_e(operation_mode_e value);
const char *getPin_input_mode_e(pin_input_mode_e value);
const char *getPin_mode_e(pin_mode_e value);
const char *getPin_output_mode_e(pin_output_mode_e value);
const char *getSensor_chart_e(sensor_chart_e value);
const char *getSpi_device_e(spi_device_e value);
const char *getSpi_speed_e(spi_speed_e value);
const char *getTChargeMode_e(tChargeMode_e value);
const char *getPidAutoTune_Peak(PidAutoTune_Peak value);
const char *getPidAutoTune_AutoTunerState(PidAutoTune_AutoTunerState value);
const char *getIdle_state_e(idle_state_e value);
const char *getTiming_mode_e(timing_mode_e value);
const char *getTrigger_event_e(trigger_event_e value);
const char *getTrigger_type_e(trigger_type_e value);
const char *getTrigger_value_e(trigger_value_e value);
const char *getTrigger_wheel_e(trigger_wheel_e value);
const char *getUart_device_e(uart_device_e value);
const char *getVvt_mode_e(vvt_mode_e value);
#endif /*_A_H_HEADER_ */

Binary file not shown.

View File

@ -7,6 +7,6 @@
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="TEST" name="junit" level="project" />
<orderEntry type="library" name="junit" level="project" />
</component>
</module>

View File

@ -2,8 +2,8 @@ package com.rusefi;
import java.io.*;
import java.util.Date;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
/**
* (c) Andrey Belomutskiy
@ -12,8 +12,6 @@ import java.util.TreeSet;
*/
@SuppressWarnings("StringConcatenationInsideStringBufferAppend")
public class EnumToString {
private final static Set<String> currentValues = new TreeSet<>();
public final static StringBuilder cppFileContent = new StringBuilder();
private final static StringBuilder headerFileContent = new StringBuilder();
@ -28,7 +26,7 @@ public class EnumToString {
headerFileContent.append("#ifndef _A_H_HEADER_\r\n");
headerFileContent.append("#define _A_H_HEADER_\r\n");
process(inputPath + File.separator + "controllers/algo/rusefi_enums.h");
processFile(inputPath + File.separator + "controllers/algo/rusefi_enums.h");
headerFileContent.append("#endif /*_A_H_HEADER_ */\r\n");
@ -45,8 +43,7 @@ public class EnumToString {
bw.close();
}
private static void process(String inFileName) throws IOException {
private static void processFile(String inFileName) throws IOException {
String header = "// auto-generated from" + inFileName + "\r\n" +
"// by enum2string.jar tool\r\n" +
"// on " + new Date() +"\r\n" +
@ -70,58 +67,26 @@ public class EnumToString {
process(new FileReader(inFileName));
}
public static void process(Reader reader) throws IOException {
EnumsReader.process(reader);
for (Map.Entry<String, Set<String>> e : EnumsReader.enums.entrySet()) {
String enumName = e.getKey();
cppFileContent.append(makeCode(enumName, e.getValue()));
EnumToString.headerFileContent.append(getMethodSignature(enumName) + ";\r\n");
}
}
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{") || line.startsWith("typedefenum__attribute__")) {
System.out.println("Entering enum");
currentValues.clear();
isInsideEnum = true;
} else if (line.startsWith("}") && line.endsWith(";")) {
isInsideEnum = false;
line = line.substring(1, line.length() - 1);
System.out.println("Ending enum " + line);
cppFileContent.append(makeCode(line));
EnumToString.headerFileContent.append(getMethodSignature(line) + ";\r\n");
} else {
line = line.replaceAll("//.+", "");
if (isInsideEnum) {
if (isKeyValueLine(line)) {
line = line.replace(",", "");
int index = line.indexOf('=');
if (index != -1)
line = line.substring(0, index);
System.out.println("Line " + line);
currentValues.add(line);
}
}
}
}
}
static String removeSpaces(String line) {
return line.replaceAll("\\s+", "");
}
static boolean isKeyValueLine(String line) {
return removeSpaces(line).matches("[a-zA-Z_$][a-zA-Z\\d_$]*[=-a-zA-Z\\d_*]*,?");
}
private static String makeCode(String enumName) {
private static String makeCode(String enumName, Set<String> values) {
StringBuilder sb = new StringBuilder();
sb.append(getMethodSignature(enumName) + "{\r\n");
sb.append("switch(value) {\r\n");
for (String e : currentValues) {
for (String e : values) {
sb.append("case " + e + ":\r\n");
sb.append(" return \"" + e + "\";\r\n");
}

View File

@ -5,7 +5,7 @@ import org.junit.Test;
import java.io.IOException;
import java.io.StringReader;
import static com.rusefi.EnumToString.isKeyValueLine;
import static com.rusefi.EnumsReader.isKeyValueLine;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

View File

@ -0,0 +1,55 @@
package com.rusefi;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
public class EnumsReader {
private final static Set<String> currentValues = new TreeSet<>();
public final static Map<String, Set<String>> enums = new TreeMap<>();
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{") || line.startsWith("typedefenum__attribute__")) {
System.out.println("Entering enum");
currentValues.clear();
isInsideEnum = true;
} else if (line.startsWith("}") && line.endsWith(";")) {
isInsideEnum = false;
line = line.substring(1, line.length() - 1);
System.out.println("Ending enum " + line);
enums.put(line, new TreeSet<>(currentValues));
} else {
line = line.replaceAll("//.+", "");
if (isInsideEnum) {
if (isKeyValueLine(line)) {
line = line.replace(",", "");
int index = line.indexOf('=');
if (index != -1)
line = line.substring(0, index);
System.out.println("Line " + line);
currentValues.add(line);
}
}
}
}
}
static String removeSpaces(String line) {
return line.replaceAll("\\s+", "");
}
static boolean isKeyValueLine(String line) {
return removeSpaces(line).matches("[a-zA-Z_$][a-zA-Z\\d_$]*[=-a-zA-Z\\d_*]*,?");
}
}