From a80691f12494cd7631fe17c710addb6f8cfb62f2 Mon Sep 17 00:00:00 2001 From: rusEfi Date: Tue, 21 Oct 2014 11:04:13 -0500 Subject: [PATCH] auto-sync --- firmware/console/status_loop.cpp | 27 +++++++++++----------- firmware/console/status_loop.h | 2 +- firmware/console/tunerstudio/tunerstudio.h | 5 +++- firmware/rusefi.cpp | 2 +- firmware/util/cli_registry.c | 4 ++++ firmware/util/cli_registry.h | 7 ++++++ 6 files changed, 30 insertions(+), 17 deletions(-) diff --git a/firmware/console/status_loop.cpp b/firmware/console/status_loop.cpp index a5c16c0fd4..4ded6b32b7 100644 --- a/firmware/console/status_loop.cpp +++ b/firmware/console/status_loop.cpp @@ -335,13 +335,13 @@ static void showFuelInfo(void) { static THD_WORKING_AREA(lcdThreadStack, UTILITY_THREAD_STACK_SIZE); -static void lcdThread(void) { +static void lcdThread(Engine *engine) { chRegSetThreadName("lcd"); while (true) { #if EFI_HD44780_LCD - updateHD44780lcd(&engine); + updateHD44780lcd(engine); #endif - chThdSleepMilliseconds(boardConfiguration->lcdThreadPeriod); + chThdSleepMilliseconds(engine->engineConfiguration->bc.lcdThreadPeriod); } } @@ -349,9 +349,9 @@ static THD_WORKING_AREA(tsThreadStack, UTILITY_THREAD_STACK_SIZE); #if EFI_TUNER_STUDIO -void updateTunerStudioState(TunerStudioOutputChannels *tsOutputChannels) { +void updateTunerStudioState(Engine *engine, TunerStudioOutputChannels *tsOutputChannels) { #if EFI_SHAFT_POSITION_INPUT - int rpm = getRpm(); + int rpm = getRpmE(engine); #else int rpm = 0; #endif @@ -360,7 +360,7 @@ void updateTunerStudioState(TunerStudioOutputChannels *tsOutputChannels) { float coolant = getCoolantTemperature(engineConfiguration2); float intake = getIntakeAirTemperature(engineConfiguration2); - float engineLoad = getEngineLoad(); + float engineLoad = getEngineLoadT(engine); float baseFuelMs = getBaseTableFuel(engineConfiguration, (int) rpm, engineLoad); tsOutputChannels->rpm = rpm; @@ -394,20 +394,19 @@ void updateTunerStudioState(TunerStudioOutputChannels *tsOutputChannels) { #endif tsOutputChannels->tCharge = getTCharge(rpm, tps, coolant, intake); tsOutputChannels->sparkDwell = getSparkDwellMs(rpm); - tsOutputChannels->pulseWidthMs = getRunningFuel(baseFuelMs, &engine, rpm); - tsOutputChannels->crankingFuelMs = getCrankingFuel(&engine); + tsOutputChannels->pulseWidthMs = getRunningFuel(baseFuelMs, engine, rpm); + tsOutputChannels->crankingFuelMs = getCrankingFuel(engine); } extern TunerStudioOutputChannels tsOutputChannels; #endif /* EFI_TUNER_STUDIO */ -static void tsStatusThread(void *arg) { - (void)arg; +static void tsStatusThread(Engine *engine) { chRegSetThreadName("tuner s"); while (true) { #if EFI_TUNER_STUDIO // sensor state for EFI Analytics Tuner Studio - updateTunerStudioState(&tsOutputChannels); + updateTunerStudioState(engine, &tsOutputChannels); #endif /* EFI_TUNER_STUDIO */ chThdSleepMilliseconds(boardConfiguration->tunerStudioThreadPeriod); } @@ -437,10 +436,10 @@ void initStatusLoop(void) { } -void startStatusThreads(void) { +void startStatusThreads(Engine *engine) { // todo: refactoring needed, this file should probably be split into pieces - chThdCreateStatic(lcdThreadStack, sizeof(lcdThreadStack), NORMALPRIO, (tfunc_t) lcdThread, (void*) NULL); - chThdCreateStatic(tsThreadStack, sizeof(tsThreadStack), NORMALPRIO, (tfunc_t) tsStatusThread, (void*) NULL); + chThdCreateStatic(lcdThreadStack, sizeof(lcdThreadStack), NORMALPRIO, (tfunc_t) lcdThread, engine); + chThdCreateStatic(tsThreadStack, sizeof(tsThreadStack), NORMALPRIO, (tfunc_t) tsStatusThread, engine); } void setFullLog(int value) { diff --git a/firmware/console/status_loop.h b/firmware/console/status_loop.h index 292f276021..cefe32d0c9 100644 --- a/firmware/console/status_loop.h +++ b/firmware/console/status_loop.h @@ -13,6 +13,7 @@ void updateDevConsoleState(Engine *engine); void printSensors(Engine *engine); void printState(Engine *engine, int currentCkpEventCounter); +void startStatusThreads(Engine *engine); #endif /* __cplusplus */ @@ -24,7 +25,6 @@ extern "C" void initStatusLoop(void); bool getFullLog(void); void setFullLog(int value); -void startStatusThreads(void); void sayOsHello(void); #ifdef __cplusplus diff --git a/firmware/console/tunerstudio/tunerstudio.h b/firmware/console/tunerstudio/tunerstudio.h index 28970f2510..ddf8e00f96 100644 --- a/firmware/console/tunerstudio/tunerstudio.h +++ b/firmware/console/tunerstudio/tunerstudio.h @@ -9,6 +9,10 @@ #define TUNERSTUDIO_H_ #include "tunerstudio_configuration.h" +#include "engine.h" + +void updateTunerStudioState(Engine *engine, TunerStudioOutputChannels *tsOutputChannels); + #ifdef __cplusplus extern "C" { @@ -16,7 +20,6 @@ extern "C" { void startTunerStudioConnectivity(void); void syncTunerStudioCopy(void); -void updateTunerStudioState(TunerStudioOutputChannels *tsOutputChannels); void tunerStudioWriteCrcPacket(const uint8_t command, const void *buf, const uint16_t size); #ifdef __cplusplus diff --git a/firmware/rusefi.cpp b/firmware/rusefi.cpp index 2fac076727..4969602d87 100644 --- a/firmware/rusefi.cpp +++ b/firmware/rusefi.cpp @@ -182,7 +182,7 @@ void runRusEfi(void) { #if EFI_ENGINE_EMULATOR initEngineEmulator(boardConfiguration); #endif - startStatusThreads(); + startStatusThreads(&engine); print("Running main loop\r\n"); main_loop_started = TRUE; diff --git a/firmware/util/cli_registry.c b/firmware/util/cli_registry.c index 929ddbb6f5..edc9eb405a 100644 --- a/firmware/util/cli_registry.c +++ b/firmware/util/cli_registry.c @@ -101,6 +101,10 @@ void addConsoleActionFF(const char *token, VoidFloatFloat callback) { doAddAction(token, FLOAT_FLOAT_PARAMETER, (Void) callback, NULL); } +void addConsoleActionFFP(const char *token, VoidFloatFloatVoidPtr callback, void *param) { + doAddAction(token, FLOAT_FLOAT_PARAMETER_P, (Void) callback, param); +} + static int getParameterCount(action_type_e parameterType) { switch (parameterType) { case NO_PARAMETER: diff --git a/firmware/util/cli_registry.h b/firmware/util/cli_registry.h index fba9c4d721..894b4ee476 100644 --- a/firmware/util/cli_registry.h +++ b/firmware/util/cli_registry.h @@ -50,8 +50,11 @@ typedef void (*Void)(void); typedef void (*VoidInt)(int); typedef void (*VoidFloat)(float); typedef void (*VoidFloatFloat)(float, float); +typedef void (*VoidFloatFloatVoidPtr)(float, float, void*); typedef void (*VoidIntInt)(int, int); + typedef void (*VoidCharPtr)(const char *); +typedef void (*VoidCharPtrVoidPtr)(const char *, void*); typedef void (*VoidCharPtrCharPtr)(const char *, const char *); typedef void (*VoidCharPtrCharPtrVoidPtr)(const char *, const char *, void*); @@ -73,8 +76,12 @@ void addConsoleActionP(const char *token, VoidPtr callback, void *param); void addConsoleActionI(const char *token, VoidInt callback); void addConsoleActionII(const char *token, VoidIntInt callback); void addConsoleActionF(const char *token, VoidFloat callback); + void addConsoleActionFF(const char *token, VoidFloatFloat callback); +void addConsoleActionFFP(const char *token, VoidFloatFloatVoidPtr callback, void *param); + void addConsoleActionS(const char *token, VoidCharPtr callback); +void addConsoleActionSP(const char *token, VoidCharPtrVoidPtr callback); void addConsoleActionSS(const char *token, VoidCharPtrCharPtr callback); void addConsoleActionSSP(const char *token, VoidCharPtrCharPtrVoidPtr callback, void *param);