From d5b25902d35d553edf637eb893d1bd7efd9bb136 Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 14 Dec 2019 15:33:30 -0500 Subject: [PATCH] Config generation handles padding after packed booleans (bits) wrong #1057 refactoring --- firmware/controllers/algo/engine_configuration.h | 7 ++----- .../src/com/rusefi/ConfigStructure.java | 5 ++--- .../src/com/rusefi/output/CHeaderConsumer.java | 6 +++--- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/firmware/controllers/algo/engine_configuration.h b/firmware/controllers/algo/engine_configuration.h index 8d181683c1..ad989f2947 100644 --- a/firmware/controllers/algo/engine_configuration.h +++ b/firmware/controllers/algo/engine_configuration.h @@ -3,11 +3,10 @@ * @brief Main engine configuration data structure. * * @date Oct 30, 2013 - * @author Andrey Belomutskiy, (c) 2012-2017 + * @author Andrey Belomutskiy, (c) 2012-2019 */ -#ifndef ENGINE_CONFIGURATION_H_ -#define ENGINE_CONFIGURATION_H_ +#pragma once #include "globalaccess.h" #include "crc.h" @@ -89,5 +88,3 @@ typedef void (*configuration_callback_t)(engine_configuration_s*); void resetConfigurationExt(Logging * logger, configuration_callback_t boardCallback, engine_type_e engineType DECLARE_ENGINE_PARAMETER_SUFFIX); void resetConfigurationExt(Logging * logger, engine_type_e engineType DECLARE_ENGINE_PARAMETER_SUFFIX); #endif /* __cplusplus */ - -#endif /* ENGINE_CONFIGURATION_H_ */ diff --git a/java_tools/configuration_definition/src/com/rusefi/ConfigStructure.java b/java_tools/configuration_definition/src/com/rusefi/ConfigStructure.java index fd5e192f2f..ee4480d5a3 100644 --- a/java_tools/configuration_definition/src/com/rusefi/ConfigStructure.java +++ b/java_tools/configuration_definition/src/com/rusefi/ConfigStructure.java @@ -24,7 +24,6 @@ public class ConfigStructure { public int currentOffset; public int totalSize; - public BitState bitState = new BitState(); public ConfigStructure(String name, String comment, boolean withPrefix, boolean withConstructor) { this.name = name; @@ -42,9 +41,9 @@ public class ConfigStructure { } public void addAlignmentFill(ReaderState state) { - bitState.reset(); + BitState bitState = new BitState(); /** - * we make alignment decision based on C fields since we expect interation and non-iteration fields + * we make alignment decision based on C fields since we expect iteration and non-iteration fields * to match in size */ for (int i = 0; i < cFields.size(); i++) { diff --git a/java_tools/configuration_definition/src/com/rusefi/output/CHeaderConsumer.java b/java_tools/configuration_definition/src/com/rusefi/output/CHeaderConsumer.java index 9c65de0679..1b7c7af30d 100644 --- a/java_tools/configuration_definition/src/com/rusefi/output/CHeaderConsumer.java +++ b/java_tools/configuration_definition/src/com/rusefi/output/CHeaderConsumer.java @@ -67,13 +67,13 @@ public class CHeaderConsumer implements ConfigurationConsumer { content.append("\t" + structure.name + "();" + EOL); } - structure.bitState.reset(); + BitState bitState = new BitState(); for (int i = 0; i < structure.cFields.size(); i++) { ConfigField cf = structure.cFields.get(i); - content.append(getHeaderText(cf, structure.currentOffset, structure.bitState.get())); + content.append(getHeaderText(cf, structure.currentOffset, bitState.get())); ConfigField next = i == structure.cFields.size() - 1 ? ConfigField.VOID : structure.cFields.get(i + 1); - structure.bitState.incrementBitIndex(cf, next); + bitState.incrementBitIndex(cf, next); structure.currentOffset += cf.getSize(next); }