diff --git a/java_tools/ConfigDefinition.jar b/java_tools/ConfigDefinition.jar index 7405f9f581..c8c6980c51 100644 Binary files a/java_tools/ConfigDefinition.jar and b/java_tools/ConfigDefinition.jar differ diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/ReaderState.java b/java_tools/configuration_definition/src/main/java/com/rusefi/ReaderState.java index 410e945b2e..3436119b9b 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/ReaderState.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/ReaderState.java @@ -291,7 +291,8 @@ public class ReaderState { if (log.debugEnabled()) log.debug("Need to align before " + cf.getName()); structure.addAlignmentFill(state, getPrimitiveSize); - } else { + } else if (getPrimitiveSize == null) { + // we are here for struct members structure.addAlignmentFill(state, 4); } diff --git a/java_tools/configuration_definition/src/test/java/com/rusefi/test/ConfigFieldParserTest.java b/java_tools/configuration_definition/src/test/java/com/rusefi/test/ConfigFieldParserTest.java index 86dd36db21..ead531b0aa 100644 --- a/java_tools/configuration_definition/src/test/java/com/rusefi/test/ConfigFieldParserTest.java +++ b/java_tools/configuration_definition/src/test/java/com/rusefi/test/ConfigFieldParserTest.java @@ -8,7 +8,6 @@ import com.rusefi.output.BaseCHeaderConsumer; import com.rusefi.output.ConfigStructure; import com.rusefi.output.JavaFieldsConsumer; import com.rusefi.output.TSProjectConsumer; -import org.junit.Ignore; import org.junit.Test; import java.io.IOException; @@ -79,16 +78,18 @@ public class ConfigFieldParserTest { @Test public void testCustomEnum() throws IOException { String test = "struct pid_s\n" + - "#define ego_sensor_e_size 4\n" + "#define ego_sensor_e_enum \"BPSX\", \"Innovate\", \"14Point7\"\n" + - "custom ego_sensor_e @@ego_sensor_e_size@@ bits, S32, @OFFSET@, [0:1], @@ego_sensor_e_enum@@\n" + + "custom ego_sensor_e 1 bits, S32, @OFFSET@, [0:1], @@ego_sensor_e_enum@@\n" + "ego_sensor_e afr_type;\n" + + "int8_t int\n" + "end_struct\n"; ReaderState state = new ReaderState(); TestTSProjectConsumer tsProjectConsumer = new TestTSProjectConsumer("", state); state.readBufferedReader(test, (tsProjectConsumer)); assertEquals("afr_type = bits, S32, 0, [0:1], \"BPSX\", \"Innovate\", \"14Point7\", \"INVALID\"\n" + + "int = scalar, S08, 1, \"\", 1, 0, 0, 100, 0\n" + + "alignmentFill_at_2 = array, U08, 2, [2], \"units\", 1, 0, -20, 100, 0\n" + "; total TS size = 4\n", tsProjectConsumer.getContent()); } @@ -544,23 +545,17 @@ public class ConfigFieldParserTest { "\t */\n" + "\tint8_t byte1 = (int8_t)0;\n" + "\t/**\n" + - "\t * need 4 byte alignment\n" + - "\tunits\n" + "\t * offset 1\n" + "\t */\n" + - "\tuint8_t alignmentFill_at_1[3];\n" + - "\t/**\n" + - "\t * offset 4\n" + - "\t */\n" + "\tint8_t byte2 = (int8_t)0;\n" + "\t/**\n" + "\t * need 4 byte alignment\n" + "\tunits\n" + - "\t * offset 5\n" + + "\t * offset 2\n" + "\t */\n" + - "\tuint8_t alignmentFill_at_5[3];\n" + + "\tuint8_t alignmentFill_at_2[2];\n" + "};\n" + - "static_assert(sizeof(pid_s) == 8);\n" + + "static_assert(sizeof(pid_s) == 4);\n" + "\n", consumer.getContent()); } diff --git a/java_tools/configuration_definition/src/test/java/com/rusefi/test/JavaSensorsConsumerTest.java b/java_tools/configuration_definition/src/test/java/com/rusefi/test/JavaSensorsConsumerTest.java index 511db62441..e0387f2efa 100644 --- a/java_tools/configuration_definition/src/test/java/com/rusefi/test/JavaSensorsConsumerTest.java +++ b/java_tools/configuration_definition/src/test/java/com/rusefi/test/JavaSensorsConsumerTest.java @@ -37,11 +37,10 @@ public class JavaSensorsConsumerTest { "alignmentFill_at_10(\"need 4 byte alignment\", SensorCategory.SENSOR_INPUTS, FieldType.INT8, 10, 1.0, -20.0, 100.0, \"units\"),\n" + "luaTimingMult(\"luaTimingMult\", SensorCategory.SENSOR_INPUTS, FieldType.INT, 12, 1.0, -1.0, -1.0, \"\"),\n" + "vehicleSpeedKph(\"vehicleSpeedKph\", SensorCategory.SENSOR_INPUTS, FieldType.INT8, 16, 1.0, -1.0, -1.0, \"\"),\n" + - "alignmentFill_at_17(\"need 4 byte alignment\", SensorCategory.SENSOR_INPUTS, FieldType.INT8, 17, 1.0, -20.0, 100.0, \"units\"),\n" + - "internalMcuTemperature(\"mcu\", SensorCategory.SENSOR_INPUTS, FieldType.INT8, 20, 1.0, 0.0, 0.0, \"deg C\"),\n" + - "alignmentFill_at_21(\"need 4 byte alignment\", SensorCategory.SENSOR_INPUTS, FieldType.INT8, 21, 1.0, -20.0, 100.0, \"units\"),\n", + "internalMcuTemperature(\"mcu\", SensorCategory.SENSOR_INPUTS, FieldType.INT8, 17, 1.0, 0.0, 0.0, \"deg C\"),\n" + + "alignmentFill_at_18(\"need 4 byte alignment\", SensorCategory.SENSOR_INPUTS, FieldType.INT8, 18, 1.0, -20.0, 100.0, \"units\"),\n", javaSensorsConsumer.getContent()); - assertEquals(24, javaSensorsConsumer.sensorTsPosition); + assertEquals(20, javaSensorsConsumer.sensorTsPosition); } @Test