diff --git a/firmware/controllers/can/can_rx.cpp b/firmware/controllers/can/can_rx.cpp index e290aeab9d..f0e7cb057b 100644 --- a/firmware/controllers/can/can_rx.cpp +++ b/firmware/controllers/can/can_rx.cpp @@ -26,6 +26,7 @@ static void printPacket(const CANRxFrame& rx, Logging* logger) { } volatile float aemXSeriesLambda = 0; +volatile float canPedal = 0; void processCanRxMessage(const CANRxFrame& frame, Logging* logger) { // TODO: if/when we support multiple lambda sensors, sensor N @@ -34,6 +35,9 @@ void processCanRxMessage(const CANRxFrame& frame, Logging* logger) { // AEM x-series lambda sensor reports in 0.0001 lambda per bit uint16_t lambdaInt = SWAP_UINT16(frame.data16[0]); aemXSeriesLambda = 0.0001f * lambdaInt; + } else if (frame.EID == 0x202) { + int16_t pedalScaled = *reinterpret_cast(&frame.data8[0]); + canPedal = pedalScaled * 0.01f; } else { printPacket(frame, logger); obdOnCanPacketRx(frame); diff --git a/firmware/controllers/sensors/tps.cpp b/firmware/controllers/sensors/tps.cpp index 9f1e799a46..5d6f021d80 100644 --- a/firmware/controllers/sensors/tps.cpp +++ b/firmware/controllers/sensors/tps.cpp @@ -213,7 +213,14 @@ bool hasSecondThrottleBody(DECLARE_ENGINE_PARAMETER_SIGNATURE) { return engineConfiguration->tps2_1AdcChannel != EFI_ADC_NONE; } +extern float canPedal; + percent_t getPedalPosition(DECLARE_ENGINE_PARAMETER_SIGNATURE) { +#if EFI_CANBUS_PEDAL + return canPedal; +#endif + + if (mockPedalPosition != MOCK_UNDEFINED) { return mockPedalPosition; }