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
efi-cpu: ARCH_STM32F4
efi-board: st_stm32f4
target-extra-params: -DSHORT_BOARD_NAME=fra
- build-target: frankenso-pal
efi-cpu: ARCH_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
efi-cpu: ARCH_STM32F4
efi-board: microrusefi
target-extra-params: -DSHORT_BOARD_NAME=mre
- build-target: mre-f7
efi-cpu: ARCH_STM32F7
efi-board: microrusefi
target-extra-params: -DSHORT_BOARD_NAME=mre
- build-target: prometheus-405
efi-cpu: ARCH_STM32F4
efi-board: prometheus/f405
target-extra-params: -DSHORT_BOARD_NAME=pth
- build-target: prometheus-469
efi-cpu: ARCH_STM32F4
efi-board: prometheus/f469
target-extra-params: -DSHORT_BOARD_NAME=pth
- build-target: proteus-f4
efi-cpu: ARCH_STM32F4
efi-board: proteus
target-extra-params: -DSHORT_BOARD_NAME=pro
- build-target: proteus-f7
efi-cpu: ARCH_STM32F7
efi-board: proteus
target-extra-params: -DSHORT_BOARD_NAME=pro
- build-target: kinetis
efi-cpu: 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
# Debug vs. release configuration

View File

@ -33,6 +33,7 @@ java \
-c_defines config/boards/kinetis/config/controllers/algo/rusefi_generated.h \
-c_destination config/boards/kinetis/config/controllers/algo/engine_configuration_generated_structures.h \
-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/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 "perf_trace.h"
#include "signature.h"
#if EFI_SIMULATOR
#include "rusEfiFunctionalTest.h"
#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);
printTsStats();
#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 \
$(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 \
-java_destination ../java_console/models/src/com/rusefi/config/generated/Fields.java \
-signature tunerstudio/signature_all.txt \
-signature_destination controllers/generated/signature_all.h \
-romraider_destination ../java_console/rusefi.xml
[ $? -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 \
-ts_output_name rusefi_${BOARDNAME}.ini \
-signature tunerstudio/signature_${SHORT_BOARDNAME}.txt \
-signature_destination controllers/generated/signature_${SHORT_BOARDNAME}.h \
-prepend tunerstudio/${BOARDNAME}_prefix.txt \
-prepend config/boards/${BOARDNAME}/prepend.txt

View File

@ -15,4 +15,6 @@ nanosec="1$nanosec"
hash=$(($nanosec % 2147483648))
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

View File

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

View File

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

View File

@ -45,6 +45,7 @@ public class ConfigDefinition {
private static final String KEY_FIRING = "-firing_order";
public static final String KEY_PREPEND = "-prepend";
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_ZIP_FILE = "-cache_zip_file";
private static final String KEY_SKIP = "-skip";
@ -96,6 +97,8 @@ public class ConfigDefinition {
String firingEnumFileName = null;
String cachePath = null;
String cacheZipFile = null;
String signatureDestination = null;
String signaturePrependFile = null;
CHeaderConsumer.withC_Defines = true;
// used to update .ini files
@ -141,8 +144,11 @@ public class ConfigDefinition {
prependFiles.add(args[i + 1]);
inputFiles.add(args[i + 1]);
} else if (key.equals(KEY_SIGNATURE)) {
signaturePrependFile = args[i + 1];
prependFiles.add(args[i + 1]);
// 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)) {
cachePath = args[i + 1];
} else if (key.equals(KEY_CACHE_ZIP_FILE)) {
@ -193,7 +199,7 @@ public class ConfigDefinition {
}
for (String prependFile : prependFiles)
readPrependValues(prependFile);
readPrependValues(VariableRegistry.INSTANCE, prependFile);
BufferedReader definitionReader = new BufferedReader(new InputStreamReader(new FileInputStream(definitionInputFile), IoUtils.CHARSET.name()));
ReaderState state = new ReaderState();
@ -202,6 +208,10 @@ public class ConfigDefinition {
if (tsPath != null && needToUpdateTsFiles) {
CharArrayWriter tsWriter = new CharArrayWriter();
destinations.add(new TSProjectConsumer(tsWriter, tsPath, state));
VariableRegistry tmpRegistry = new VariableRegistry();
readPrependValues(tmpRegistry, signaturePrependFile);
destinations.add(new SignatureConsumer(signatureDestination, tmpRegistry));
}
if (needToUpdateOtherFiles) {
if (destCHeaderFileName != null) {
@ -258,7 +268,7 @@ public class ConfigDefinition {
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));
String line;
while ((line = definitionReader.readLine()) != null) {
@ -269,7 +279,7 @@ public class ConfigDefinition {
if (ReaderState.isEmptyDefinitionLine(line))
continue;
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);
}
static void processDefine(String line) {
static void processDefine(VariableRegistry registry, String line) {
int index = line.indexOf(' ');
String name;
if (index == -1) {
@ -340,9 +350,9 @@ public class ConfigDefinition {
}
if (VariableRegistry.isNumeric(line)) {
Integer v = Integer.valueOf(line);
VariableRegistry.INSTANCE.register(name, v);
registry.register(name, v);
} else {
VariableRegistry.INSTANCE.register(name, line);
registry.register(name, line);
}
}

View File

@ -167,7 +167,7 @@ public class ReaderState {
* for example
* #define CLT_CURVE_SIZE 16
*/
ConfigDefinition.processDefine(line.substring(DEFINE.length()).trim());
ConfigDefinition.processDefine(VariableRegistry.INSTANCE, line.substring(DEFINE.length()).trim());
} else {
if (stack.isEmpty())
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> 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 int timeNowUs;
#define Q(x) #x
#define QUOTE(x) Q(x)
TEST(idle, fsioPidParameters) {
WITH_ENGINE_TEST_HELPER(MIATA_NA6_MAP);