From 594dad46ab1d2315903a00a36f92ada96f05820a Mon Sep 17 00:00:00 2001 From: rusEfi Date: Sat, 30 May 2015 10:06:27 -0400 Subject: [PATCH] auto-sync --- .../console/binary/tunerstudio_configuration.h | 3 ++- firmware/console/status_loop.cpp | 1 + firmware/controllers/sensors/tps.cpp | 15 ++++++++------- firmware/controllers/sensors/tps.h | 6 ++++++ 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/firmware/console/binary/tunerstudio_configuration.h b/firmware/console/binary/tunerstudio_configuration.h index bf219e0dfb..ff914e4b84 100644 --- a/firmware/console/binary/tunerstudio_configuration.h +++ b/firmware/console/binary/tunerstudio_configuration.h @@ -90,7 +90,8 @@ typedef struct { float currentMapAccelDelta; float tpsAccelFuel; float baroCorrection; - int unused3[15]; + float pedalPosition; + int unused3[14]; } TunerStudioOutputChannels; #endif /* TUNERSTUDIO_CONFIGURATION_H_ */ diff --git a/firmware/console/status_loop.cpp b/firmware/console/status_loop.cpp index 4f8145aecf..93988ecf7f 100644 --- a/firmware/console/status_loop.cpp +++ b/firmware/console/status_loop.cpp @@ -572,6 +572,7 @@ void updateTunerStudioState(TunerStudioOutputChannels *tsOutputChannels DECLARE_ tsOutputChannels->deltaTps = engine->tpsAccelEnrichment.getDelta(); tsOutputChannels->triggerErrorsCounter = triggerCentral.triggerState.totalTriggerErrorCounter; tsOutputChannels->baroCorrection = engine->engineState.baroCorrection; + tsOutputChannels->pedalPosition = getPedalPosition(PASS_ENGINE_PARAMETER_F); tsOutputChannels->checkEngine = hasErrorCodes(); #if EFI_PROD_CODE || defined(__DOXYGEN__) diff --git a/firmware/controllers/sensors/tps.cpp b/firmware/controllers/sensors/tps.cpp index 3d129a0ffd..96dff1575a 100644 --- a/firmware/controllers/sensors/tps.cpp +++ b/firmware/controllers/sensors/tps.cpp @@ -97,15 +97,16 @@ static float getPrimatyRawTPS(DECLARE_ENGINE_PARAMETER_F) { return tpsValue; } -// todo: static float getSecondaryRawTPS +#define NO_TPS_MAGIC_VALUE 66.611 -#define NO_TPS_MAGIC_VALUE 66.6 +percent_t getPedalPosition(DECLARE_ENGINE_PARAMETER_F) { + float voltage = getVoltageDivided("pPS", engineConfiguration->pedalPositionChannel); + float result = interpolate(engineConfiguration->pedalPositionMin, 0, engineConfiguration->pedalPositionMax, 100, voltage); + + // this would put the value into the 0-100 range + return maxF(0, minF(100, result)); +} -/* - * In case of dual TPS this function would return logical TPS position - * - * @return Current TPS position, percent of WOT. 0 means idle and 100 means Wide Open Throttle - */ percent_t getTPS(DECLARE_ENGINE_PARAMETER_F) { if (!engineConfiguration->hasTpsSensor) return NO_TPS_MAGIC_VALUE; diff --git a/firmware/controllers/sensors/tps.h b/firmware/controllers/sensors/tps.h index 103ed58447..67fb20f85e 100644 --- a/firmware/controllers/sensors/tps.h +++ b/firmware/controllers/sensors/tps.h @@ -13,6 +13,12 @@ #include "global.h" #include "engine_configuration.h" +percent_t getPedalPosition(DECLARE_ENGINE_PARAMETER_F); +/** + * Throttle Position Sensor + * In case of dual TPS this function would return logical TPS position + * @return Current TPS position, percent of WOT. 0 means idle and 100 means Wide Open Throttle + */ percent_t getTPS(DECLARE_ENGINE_PARAMETER_F); int convertVoltageTo10bitADC(float voltage); int getTPS10bitAdc(DECLARE_ENGINE_PARAMETER_F);