only:mre_f4

This commit is contained in:
Andrey 2023-03-01 17:20:34 -05:00
parent ca850a8437
commit c08e4c3af5
3 changed files with 25 additions and 10 deletions

View File

@ -49,6 +49,15 @@ bool isPedalError() {
extern SentTps sentTps; extern SentTps sentTps;
float decodeTpsSentValue(float sentValue) {
switch (engineConfiguration->sentEtbType) {
case SentEtbType::GM_TYPE_1:
return interpolateMsg("tps", /*x1*/0xE48, /*y1*/0, /*x2*/0x1A0, /*y2*/POSITION_FULLY_OPEN, /*x*/sentValue);
default:
return interpolateMsg("tps", /*x1*/engineConfiguration->customSentTpsMin, /*y1*/0, /*x2*/engineConfiguration->customSentTpsMax, /*y2*/POSITION_FULLY_OPEN, /*x*/sentValue);
}
}
void sentTpsDecode() { void sentTpsDecode() {
#if EFI_SENT_SUPPORT #if EFI_SENT_SUPPORT
if (!isDigitalTps1()) { if (!isDigitalTps1()) {
@ -56,16 +65,8 @@ void sentTpsDecode() {
} }
// todo: move away from weird float API // todo: move away from weird float API
float sentValue = getSentValue(0); float sentValue = getSentValue(0);
float tpsValue; float tpsValue = decodeTpsSentValue(sentValue);
switch (engineConfiguration->sentEtbType) {
case SentEtbType::GM_TYPE_1:
tpsValue = interpolateClamped(/*x1*/0xE48, /*y1*/0, /*x2*/0x1A0, /*y2*/POSITION_FULLY_OPEN, /*x*/sentValue);
break;
default:
tpsValue = interpolateClamped(/*x1*/engineConfiguration->customSentTpsMin, /*y1*/0, /*x2*/engineConfiguration->customSentTpsMax, /*y2*/POSITION_FULLY_OPEN, /*x*/sentValue);
break;
}
sentTps.setValidValue(tpsValue, getTimeNowNt()); sentTps.setValidValue(tpsValue, getTimeNowNt());
#endif // EFI_SENT_SUPPORT #endif // EFI_SENT_SUPPORT
} }

View File

@ -37,6 +37,7 @@ void grabPedalIsUp();
void grabPedalIsWideOpen(); void grabPedalIsWideOpen();
void sentTpsDecode(); void sentTpsDecode();
float decodeTpsSentValue(float sentValue);
bool isDigitalTps1(); bool isDigitalTps1();
bool isTps1Error(); bool isTps1Error();

View File

@ -152,3 +152,16 @@ TEST(etb, sentTpsIntegrated) {
initTps(); initTps();
doInitElectronicThrottle(); doInitElectronicThrottle();
} }
TEST(etb, sentTpsIntegratedDecode) {
EngineTestHelper eth(TEST_ENGINE); // we have a destructor so cannot move EngineTestHelper into utility method
engineConfiguration->sentEtbType = SentEtbType::GM_TYPE_1;
ASSERT_NEAR(20.246, decodeTpsSentValue(3000), EPS2D);
engineConfiguration->sentEtbType = SentEtbType::CUSTOM;
engineConfiguration->customSentTpsMin = 5000;
engineConfiguration->customSentTpsMax = 1000;
ASSERT_NEAR(75, decodeTpsSentValue(2000), EPS2D);
}