diff --git a/firmware/console/eficonsole.cpp b/firmware/console/eficonsole.cpp index 97898a8b5e..8b4a4e7325 100644 --- a/firmware/console/eficonsole.cpp +++ b/firmware/console/eficonsole.cpp @@ -165,7 +165,6 @@ void print(const char *format, ...) { } void initializeConsole(Logging *sharedLogger) { - initIntermediateLoggingBuffer(); initConsoleLogic(sharedLogger); startConsole(sharedLogger, &handleConsoleLine); diff --git a/firmware/controllers/error_handling.cpp b/firmware/controllers/error_handling.cpp index b04f7f254d..1e9b7cc6f4 100644 --- a/firmware/controllers/error_handling.cpp +++ b/firmware/controllers/error_handling.cpp @@ -49,6 +49,7 @@ void chDbgPanic3(const char *msg, const char * file, int line) { #define WARNING_BUFFER_SIZE 80 static char warningBuffer[WARNING_BUFFER_SIZE]; +static bool isWarningStreamInitialized = false; static MemoryStream warningStream; static int warningCounter = 0; @@ -58,6 +59,7 @@ static int warningCounter = 0; * @returns TRUE in case there are too many warnings */ int warning(obd_code_e code, const char *fmt, ...) { + efiAssert(isWarningStreamInitialized, "warn stream", false); UNUSED(code); int now = getTimeNowSeconds(); @@ -111,6 +113,7 @@ void onUnlockHook(void) { void initErrorHandling(void) { msObjectInit(&warningStream, (uint8_t *) warningBuffer, WARNING_BUFFER_SIZE, 0); + isWarningStreamInitialized = true; } extern virtual_timers_list_t vtlist; diff --git a/firmware/controllers/flash_main.cpp b/firmware/controllers/flash_main.cpp index b2852f66f5..37f742d04a 100644 --- a/firmware/controllers/flash_main.cpp +++ b/firmware/controllers/flash_main.cpp @@ -106,7 +106,7 @@ persisted_configuration_state_e flashState; * this method could and should be executed before we have any * connectivity so no console output here */ -persisted_configuration_state_e readConfiguration(void) { +persisted_configuration_state_e readConfiguration(Logging * logger) { efiAssert(getRemainingStack(chThdSelf()) > 256, "read f", PC_ERROR); flashRead(FLASH_ADDR, (char *) &persistentState, PERSISTENT_SIZE); @@ -131,10 +131,7 @@ persisted_configuration_state_e readConfiguration(void) { void readFromFlash(void) { printMsg(logger, "readFromFlash()"); - readConfiguration(); - - persisted_configuration_state_e result = readConfiguration(); - + persisted_configuration_state_e result = readConfiguration(logger); if (result == CRC_FAILED) { printMsg(logger, "Need to reset flash to default due to CRC"); diff --git a/firmware/controllers/flash_main.h b/firmware/controllers/flash_main.h index b6472b0c5a..dfca376398 100644 --- a/firmware/controllers/flash_main.h +++ b/firmware/controllers/flash_main.h @@ -21,7 +21,7 @@ typedef enum { PC_ERROR = 4 } persisted_configuration_state_e; -persisted_configuration_state_e readConfiguration(void); +persisted_configuration_state_e readConfiguration(Logging * logger); void readFromFlash(void); void initFlash(Logging *sharedLogger); diff --git a/firmware/rusefi.cpp b/firmware/rusefi.cpp index b82a4150a9..45c5e1985f 100644 --- a/firmware/rusefi.cpp +++ b/firmware/rusefi.cpp @@ -166,12 +166,13 @@ void applyNewConfiguration(void) { void runRusEfi(void) { efiAssertVoid(getRemainingStack(chThdSelf()) > 512, "init s"); + initIntermediateLoggingBuffer(); /** * First thing is reading configuration from flash memory. * In order to have complete flexibility configuration has to go before anything else. */ - readConfiguration(); +// readConfiguration(&sharedLogger); msObjectInit(&firmwareErrorMessageStream, errorMessageBuffer, sizeof(errorMessageBuffer), 0); diff --git a/firmware/util/datalogging.cpp b/firmware/util/datalogging.cpp index b89287a153..9f11e3e03d 100644 --- a/firmware/util/datalogging.cpp +++ b/firmware/util/datalogging.cpp @@ -295,7 +295,7 @@ void initIntermediateLoggingBuffer(void) { initLoggingCentral(); msObjectInit(&intermediateLoggingBuffer, intermediateLoggingBufferData, INTERMEDIATE_LOGGING_BUFFER_SIZE, 0); - intermediateLoggingBufferInited = TRUE; + intermediateLoggingBufferInited = true; } #endif /* ! EFI_UNIT_TEST */ diff --git a/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp b/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp index 1f08148026..a46b504868 100644 --- a/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp +++ b/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp @@ -71,6 +71,9 @@ void rusEfiFunctionalTest(void) { printToWin32Console("Running version:"); printToWin32Console("TODO"); + initIntermediateLoggingBuffer(); +// initErrorHandling(); + initializeConsole(&sharedLogger); initStatusLoop(engine);