Gen config refactor 2 (#1560)

* gen_config refactor, part II

* short board defines

* oops

* comment & undef

* define QUOTE

Co-authored-by: Andrei <andreikagit@users.noreply.github.com>
This commit is contained in:
andreika-git 2020-07-02 19:33:31 +03:00 committed by GitHub
parent 959ca823e8
commit 1e8bebd5b3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 174 additions and 16 deletions

View File

@ -20,40 +20,47 @@ jobs:
- build-target: frankenso - build-target: frankenso
efi-cpu: ARCH_STM32F4 efi-cpu: ARCH_STM32F4
efi-board: st_stm32f4 efi-board: st_stm32f4
target-extra-params: -DSHORT_BOARD_NAME=fra
- build-target: frankenso-pal - build-target: frankenso-pal
efi-cpu: ARCH_STM32F4 efi-cpu: ARCH_STM32F4
efi-board: st_stm32f4 efi-board: st_stm32f4
target-extra-params: -DHAL_TRIGGER_USE_PAL=TRUE -DEFI_ICU_INPUTS=FALSE -DEFI_VEHICLE_SPEED=FALSE -DEFI_LOGIC_ANALYZER=FALSE target-extra-params: -DSHORT_BOARD_NAME=fra -DHAL_TRIGGER_USE_PAL=TRUE -DEFI_ICU_INPUTS=FALSE -DEFI_VEHICLE_SPEED=FALSE -DEFI_LOGIC_ANALYZER=FALSE
- build-target: mre-f4 - build-target: mre-f4
efi-cpu: ARCH_STM32F4 efi-cpu: ARCH_STM32F4
efi-board: microrusefi efi-board: microrusefi
target-extra-params: -DSHORT_BOARD_NAME=mre
- build-target: mre-f7 - build-target: mre-f7
efi-cpu: ARCH_STM32F7 efi-cpu: ARCH_STM32F7
efi-board: microrusefi efi-board: microrusefi
target-extra-params: -DSHORT_BOARD_NAME=mre
- build-target: prometheus-405 - build-target: prometheus-405
efi-cpu: ARCH_STM32F4 efi-cpu: ARCH_STM32F4
efi-board: prometheus/f405 efi-board: prometheus/f405
target-extra-params: -DSHORT_BOARD_NAME=pth
- build-target: prometheus-469 - build-target: prometheus-469
efi-cpu: ARCH_STM32F4 efi-cpu: ARCH_STM32F4
efi-board: prometheus/f469 efi-board: prometheus/f469
target-extra-params: -DSHORT_BOARD_NAME=pth
- build-target: proteus-f4 - build-target: proteus-f4
efi-cpu: ARCH_STM32F4 efi-cpu: ARCH_STM32F4
efi-board: proteus efi-board: proteus
target-extra-params: -DSHORT_BOARD_NAME=pro
- build-target: proteus-f7 - build-target: proteus-f7
efi-cpu: ARCH_STM32F7 efi-cpu: ARCH_STM32F7
efi-board: proteus efi-board: proteus
target-extra-params: -DSHORT_BOARD_NAME=pro
- build-target: kinetis - build-target: kinetis
efi-cpu: kinetis efi-cpu: kinetis
efi-board: kinetis efi-board: kinetis
target-extra-params: -DCPU_MKE16F512VLH16 -DCPU_MKE16F512VLH16_cm4 -D__USE_CMSI -DDEFAULT_ENGINE_TYPE=MINIMAL_PINS target-extra-params: -DSHORT_BOARD_NAME=kin -DCPU_MKE16F512VLH16 -DCPU_MKE16F512VLH16_cm4 -D__USE_CMSI -DDEFAULT_ENGINE_TYPE=MINIMAL_PINS
extra-options: USE_FATFS=no USE_BOOTLOADER=no extra-options: USE_FATFS=no USE_BOOTLOADER=no
# Debug vs. release configuration # Debug vs. release configuration

View File

@ -33,6 +33,7 @@ java \
-c_defines config/boards/kinetis/config/controllers/algo/rusefi_generated.h \ -c_defines config/boards/kinetis/config/controllers/algo/rusefi_generated.h \
-c_destination config/boards/kinetis/config/controllers/algo/engine_configuration_generated_structures.h \ -c_destination config/boards/kinetis/config/controllers/algo/engine_configuration_generated_structures.h \
-signature tunerstudio/signature_kin.txt \ -signature tunerstudio/signature_kin.txt \
-signature_destination controllers/generated/signature_kin.h \
-prepend config/boards/kinetis/config/rusefi_config_kinetis.txt \ -prepend config/boards/kinetis/config/rusefi_config_kinetis.txt \
-prepend config/boards/kinetis/config/tunerstudio/kinetis_prefix.txt -prepend config/boards/kinetis/config/tunerstudio/kinetis_prefix.txt

View File

@ -0,0 +1,37 @@
/**
* @file signature.cpp
* @brief A special file which is recompiled every time the .ini file changes.
*
* This is a minimalistic fast-compiling cpp-file. Any additional massive includes are not welcomed.
*
* @date Jul 2, 2020
* @author andreika (c) 2020
*/
#include "efilib.h"
#include "signature.h"
// We take these precautions to avoid redefinition of signature in generated .h files
#undef SIGNATURE_BOARD
#undef SIGNATURE_DATE
#undef SIGNATURE_HASH
#undef TS_SIGNATURE
#ifndef SHORT_BOARD_NAME
#define SHORT_BOARD_NAME all
#endif /* SHORT_BOARD_NAME */
#pragma message ("SHORT_BOARD_NAME: " QUOTE(SHORT_BOARD_NAME))
#define SIGNATURE_NAME signature_
#define SIGNATURE_EXT .h
#define SIGNATURE_H QUOTE(SIGNATURE_NAME SHORT_BOARD_NAME SIGNATURE_EXT)
#include SIGNATURE_H
#pragma message ("TS_SIGNATURE: " TS_SIGNATURE)
const char *getTsSignature() {
return TS_SIGNATURE;
}

View File

@ -0,0 +1,12 @@
/**
* @file signature.h
* @brief A special file which is recompiled every time the .ini file changes.
*
* @date Jul 2, 2020
* @author andreika (c) 2020
*/
#pragma once
const char *getTsSignature();

View File

@ -87,6 +87,8 @@
#include "mmc_card.h" #include "mmc_card.h"
#include "perf_trace.h" #include "perf_trace.h"
#include "signature.h"
#if EFI_SIMULATOR #if EFI_SIMULATOR
#include "rusEfiFunctionalTest.h" #include "rusEfiFunctionalTest.h"
#endif /* EFI_SIMULATOR */ #endif /* EFI_SIMULATOR */
@ -636,7 +638,8 @@ void handleQueryCommand(ts_channel_s *tsChannel, ts_response_format_e mode) {
scheduleMsg(&tsLogger, "got S/H (queryCommand) mode=%d", mode); scheduleMsg(&tsLogger, "got S/H (queryCommand) mode=%d", mode);
printTsStats(); printTsStats();
#endif #endif
sr5SendResponse(tsChannel, mode, (const uint8_t *) TS_SIGNATURE, strlen(TS_SIGNATURE) + 1); const char *signature = getTsSignature();
sr5SendResponse(tsChannel, mode, (const uint8_t *)signature, strlen(signature) + 1);
} }
/** /**

View File

@ -1,4 +1,5 @@
TUNERSTUDIO_SRC_CPP = $(PROJECT_DIR)/console/binary/tunerstudio_io.cpp \ TUNERSTUDIO_SRC_CPP = $(PROJECT_DIR)/console/binary/tunerstudio_io.cpp \
$(PROJECT_DIR)/console/binary/tunerstudio.cpp \ $(PROJECT_DIR)/console/binary/tunerstudio.cpp \
$(PROJECT_DIR)/console/binary/bluetooth.cpp $(PROJECT_DIR)/console/binary/bluetooth.cpp \
$(PROJECT_DIR)/console/binary/signature.cpp

View File

@ -0,0 +1,8 @@
//
// was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt
//
#define SIGNATURE_BOARD all
#define SIGNATURE_DATE 2020.07.02
#define SIGNATURE_HASH 1873757300
#define TS_SIGNATURE "rusEFI 2020.07.02.all.1873757300"

View File

@ -0,0 +1,8 @@
//
// was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt
//
#define SIGNATURE_BOARD fra
#define SIGNATURE_DATE 2020.07.02
#define SIGNATURE_HASH 1557139500
#define TS_SIGNATURE "rusEFI 2020.07.02.fra.1557139500"

View File

@ -0,0 +1,8 @@
//
// was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt
//
#define SIGNATURE_BOARD kin
#define SIGNATURE_DATE 2020.07.02
#define SIGNATURE_HASH 1520709400
#define TS_SIGNATURE "rusEFI 2020.07.02.kin.1520709400"

View File

@ -0,0 +1,8 @@
//
// was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt
//
#define SIGNATURE_BOARD mre
#define SIGNATURE_DATE 2020.07.02
#define SIGNATURE_HASH 1235949600
#define TS_SIGNATURE "rusEFI 2020.07.02.mre.1235949600"

View File

@ -0,0 +1,8 @@
//
// was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt
//
#define SIGNATURE_BOARD pro
#define SIGNATURE_DATE 2020.07.02
#define SIGNATURE_HASH 1175518100
#define TS_SIGNATURE "rusEFI 2020.07.02.pro.1175518100"

View File

@ -0,0 +1,8 @@
//
// was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt
//
#define SIGNATURE_BOARD pth
#define SIGNATURE_DATE 2020.07.02
#define SIGNATURE_HASH 1865328700
#define TS_SIGNATURE "rusEFI 2020.07.02.pth.1865328700"

View File

@ -33,6 +33,7 @@ java -DSystemOut.name=gen_config \
-c_fsio_strings controllers/generated/fsio_strings.def \ -c_fsio_strings controllers/generated/fsio_strings.def \
-java_destination ../java_console/models/src/com/rusefi/config/generated/Fields.java \ -java_destination ../java_console/models/src/com/rusefi/config/generated/Fields.java \
-signature tunerstudio/signature_all.txt \ -signature tunerstudio/signature_all.txt \
-signature_destination controllers/generated/signature_all.h \
-romraider_destination ../java_console/rusefi.xml -romraider_destination ../java_console/rusefi.xml
[ $? -eq 0 ] || { echo "ERROR generating default"; exit 1; } [ $? -eq 0 ] || { echo "ERROR generating default"; exit 1; }

View File

@ -39,6 +39,7 @@ java -DSystemOut.name=gen_config_board \
-firing_order controllers/algo/firing_order.h \ -firing_order controllers/algo/firing_order.h \
-ts_output_name rusefi_${BOARDNAME}.ini \ -ts_output_name rusefi_${BOARDNAME}.ini \
-signature tunerstudio/signature_${SHORT_BOARDNAME}.txt \ -signature tunerstudio/signature_${SHORT_BOARDNAME}.txt \
-signature_destination controllers/generated/signature_${SHORT_BOARDNAME}.h \
-prepend tunerstudio/${BOARDNAME}_prefix.txt \ -prepend tunerstudio/${BOARDNAME}_prefix.txt \
-prepend config/boards/${BOARDNAME}/prepend.txt -prepend config/boards/${BOARDNAME}/prepend.txt

View File

@ -15,4 +15,6 @@ nanosec="1$nanosec"
hash=$(($nanosec % 2147483648)) hash=$(($nanosec % 2147483648))
echo "#define SIGNATURE_HASH $hash" >> tunerstudio/signature_${SHORT_BOARDNAME}.txt echo "#define SIGNATURE_HASH $hash" >> tunerstudio/signature_${SHORT_BOARDNAME}.txt
echo "#define TS_SIGNATURE \"rusEFI @@SIGNATURE_DATE@@.@@SIGNATURE_BOARD@@.@@SIGNATURE_HASH@@\"" >> tunerstudio/signature_${SHORT_BOARDNAME}.txt
exit 0 exit 0

View File

@ -22,7 +22,6 @@
! each field is declared as ! each field is declared as
! type name;comment ! type name;comment
#define TS_SIGNATURE "rusEFI @@SIGNATURE_DATE@@.@@SIGNATURE_BOARD@@.@@SIGNATURE_HASH@@"
! !
! this is here so that rusEfi console can access it, too ! this is here so that rusEfi console can access it, too

View File

@ -33,6 +33,9 @@
#define ERROR_CODE 311223344 #define ERROR_CODE 311223344
#define Q(x) #x
#define QUOTE(x) Q(x)
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
{ {

View File

@ -45,6 +45,7 @@ public class ConfigDefinition {
private static final String KEY_FIRING = "-firing_order"; private static final String KEY_FIRING = "-firing_order";
public static final String KEY_PREPEND = "-prepend"; public static final String KEY_PREPEND = "-prepend";
public static final String KEY_SIGNATURE = "-signature"; public static final String KEY_SIGNATURE = "-signature";
public static final String KEY_SIGNATURE_DESTINATION = "-signature_destination";
public static final String KEY_CACHE = "-cache"; public static final String KEY_CACHE = "-cache";
public static final String KEY_CACHE_ZIP_FILE = "-cache_zip_file"; public static final String KEY_CACHE_ZIP_FILE = "-cache_zip_file";
private static final String KEY_SKIP = "-skip"; private static final String KEY_SKIP = "-skip";
@ -96,6 +97,8 @@ public class ConfigDefinition {
String firingEnumFileName = null; String firingEnumFileName = null;
String cachePath = null; String cachePath = null;
String cacheZipFile = null; String cacheZipFile = null;
String signatureDestination = null;
String signaturePrependFile = null;
CHeaderConsumer.withC_Defines = true; CHeaderConsumer.withC_Defines = true;
// used to update .ini files // used to update .ini files
@ -141,8 +144,11 @@ public class ConfigDefinition {
prependFiles.add(args[i + 1]); prependFiles.add(args[i + 1]);
inputFiles.add(args[i + 1]); inputFiles.add(args[i + 1]);
} else if (key.equals(KEY_SIGNATURE)) { } else if (key.equals(KEY_SIGNATURE)) {
signaturePrependFile = args[i + 1];
prependFiles.add(args[i + 1]); prependFiles.add(args[i + 1]);
// don't add this file to the 'inputFiles' // don't add this file to the 'inputFiles'
} else if (key.equals(KEY_SIGNATURE_DESTINATION)) {
signatureDestination = args[i + 1];
} else if (key.equals(KEY_CACHE)) { } else if (key.equals(KEY_CACHE)) {
cachePath = args[i + 1]; cachePath = args[i + 1];
} else if (key.equals(KEY_CACHE_ZIP_FILE)) { } else if (key.equals(KEY_CACHE_ZIP_FILE)) {
@ -193,7 +199,7 @@ public class ConfigDefinition {
} }
for (String prependFile : prependFiles) for (String prependFile : prependFiles)
readPrependValues(prependFile); readPrependValues(VariableRegistry.INSTANCE, prependFile);
BufferedReader definitionReader = new BufferedReader(new InputStreamReader(new FileInputStream(definitionInputFile), IoUtils.CHARSET.name())); BufferedReader definitionReader = new BufferedReader(new InputStreamReader(new FileInputStream(definitionInputFile), IoUtils.CHARSET.name()));
ReaderState state = new ReaderState(); ReaderState state = new ReaderState();
@ -202,6 +208,10 @@ public class ConfigDefinition {
if (tsPath != null && needToUpdateTsFiles) { if (tsPath != null && needToUpdateTsFiles) {
CharArrayWriter tsWriter = new CharArrayWriter(); CharArrayWriter tsWriter = new CharArrayWriter();
destinations.add(new TSProjectConsumer(tsWriter, tsPath, state)); destinations.add(new TSProjectConsumer(tsWriter, tsPath, state));
VariableRegistry tmpRegistry = new VariableRegistry();
readPrependValues(tmpRegistry, signaturePrependFile);
destinations.add(new SignatureConsumer(signatureDestination, tmpRegistry));
} }
if (needToUpdateOtherFiles) { if (needToUpdateOtherFiles) {
if (destCHeaderFileName != null) { if (destCHeaderFileName != null) {
@ -258,7 +268,7 @@ public class ConfigDefinition {
return getMd5(content); return getMd5(content);
} }
private static void readPrependValues(String prependFile) throws IOException { private static void readPrependValues(VariableRegistry registry, String prependFile) throws IOException {
BufferedReader definitionReader = new BufferedReader(new FileReader(prependFile)); BufferedReader definitionReader = new BufferedReader(new FileReader(prependFile));
String line; String line;
while ((line = definitionReader.readLine()) != null) { while ((line = definitionReader.readLine()) != null) {
@ -269,7 +279,7 @@ public class ConfigDefinition {
if (ReaderState.isEmptyDefinitionLine(line)) if (ReaderState.isEmptyDefinitionLine(line))
continue; continue;
if (startsWithToken(line, ReaderState.DEFINE)) { if (startsWithToken(line, ReaderState.DEFINE)) {
processDefine(line.substring(ReaderState.DEFINE.length()).trim()); processDefine(registry, line.substring(ReaderState.DEFINE.length()).trim());
} }
} }
@ -328,7 +338,7 @@ public class ConfigDefinition {
return Integer.parseInt(s); return Integer.parseInt(s);
} }
static void processDefine(String line) { static void processDefine(VariableRegistry registry, String line) {
int index = line.indexOf(' '); int index = line.indexOf(' ');
String name; String name;
if (index == -1) { if (index == -1) {
@ -340,9 +350,9 @@ public class ConfigDefinition {
} }
if (VariableRegistry.isNumeric(line)) { if (VariableRegistry.isNumeric(line)) {
Integer v = Integer.valueOf(line); Integer v = Integer.valueOf(line);
VariableRegistry.INSTANCE.register(name, v); registry.register(name, v);
} else { } else {
VariableRegistry.INSTANCE.register(name, line); registry.register(name, line);
} }
} }

View File

@ -167,7 +167,7 @@ public class ReaderState {
* for example * for example
* #define CLT_CURVE_SIZE 16 * #define CLT_CURVE_SIZE 16
*/ */
ConfigDefinition.processDefine(line.substring(DEFINE.length()).trim()); ConfigDefinition.processDefine(VariableRegistry.INSTANCE, line.substring(DEFINE.length()).trim());
} else { } else {
if (stack.isEmpty()) if (stack.isEmpty())
throw new IllegalStateException("Expected to be within structure at line " + lineIndex + ": " + line); throw new IllegalStateException("Expected to be within structure at line " + lineIndex + ": " + line);

View File

@ -27,7 +27,7 @@ public class VariableRegistry {
private final Map<String, String> cAllDefinitions = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); private final Map<String, String> cAllDefinitions = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
private final Map<String, String> javaDefinitions = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); private final Map<String, String> javaDefinitions = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
private VariableRegistry() { public VariableRegistry() {
} }
/** /**

View File

@ -0,0 +1,36 @@
package com.rusefi.output;
import com.rusefi.*;
import com.rusefi.util.LazyFile;
import com.rusefi.util.SystemOut;
import java.io.IOException;
import static com.rusefi.ConfigDefinition.EOL;
/**
* Configuration consumer which writes Signature header file
*/
public class SignatureConsumer implements ConfigurationConsumer {
private final String destHeader;
VariableRegistry registry;
public SignatureConsumer(String destHeader, VariableRegistry vregistry) {
SystemOut.println("Writing Signature header to " + destHeader);
this.destHeader = destHeader;
this.registry = vregistry;
}
@Override
public void startFile() {
}
@Override
public void handleEndStruct(ConfigStructure structure) throws IOException {
registry.writeDefinesToFile(destHeader);
}
@Override
public void endFile() throws IOException {
}
}

View File

@ -19,9 +19,6 @@
extern IdleController idleControllerInstance; extern IdleController idleControllerInstance;
extern int timeNowUs; extern int timeNowUs;
#define Q(x) #x
#define QUOTE(x) Q(x)
TEST(idle, fsioPidParameters) { TEST(idle, fsioPidParameters) {
WITH_ENGINE_TEST_HELPER(MIATA_NA6_MAP); WITH_ENGINE_TEST_HELPER(MIATA_NA6_MAP);