Line | Branch | Decision | Exec | Source |
---|---|---|---|---|
1 | /** | |||
2 | * @author Andrey Belomutskiy, (c) 2012-2020 | |||
3 | */ | |||
4 | #include "pch.h" | |||
5 | #include "sent.h" | |||
6 | #include "tunerstudio.h" | |||
7 | #include "tunerstudio_calibration_channel.h" | |||
8 | ||||
9 | /* | |||
10 | void grabTPSIsClosed() { | |||
11 | #if EFI_PROD_CODE | |||
12 | engineConfiguration->tpsMin = convertVoltageTo10bitADC(Sensor::getRaw(SensorType::Tps1)); | |||
13 | #endif // EFI_PROD_CODE | |||
14 | } | |||
15 | ||||
16 | void grabTPSIsWideOpen() { | |||
17 | #if EFI_PROD_CODE | |||
18 | engineConfiguration->tpsMax = convertVoltageTo10bitADC(Sensor::getRaw(SensorType::Tps1)); | |||
19 | #endif // EFI_PROD_CODE | |||
20 | } | |||
21 | */ | |||
22 | ||||
23 | ✗ | static void onGrabPedal() { | ||
24 | static uint8_t grabPedalCounter = 0; | |||
25 | ✗ | grabPedalCounter++; | ||
26 | ✗ | if (grabPedalCounter % 2 == 0) { | ||
27 | // todo fix root cause! work-around: make sure not to write bad tune since that would brick requestBurn(); | |||
28 | } | |||
29 | ✗ | } | ||
30 | ||||
31 | ✗ | void grabPedalIsUp() { | ||
32 | /** | |||
33 | * search for 'maintainConstantValue' to find how this TS magic works | |||
34 | */ | |||
35 | ✗ | tsCalibrationSetData(TsCalMode::PedalMin, Sensor::getRaw(SensorType::AcceleratorPedalPrimary), Sensor::getRaw(SensorType::AcceleratorPedalSecondary)); | ||
36 | ✗ | onGrabPedal(); | ||
37 | ✗ | } | ||
38 | ||||
39 | ✗ | void grabPedalIsWideOpen() { | ||
40 | ✗ | tsCalibrationSetData(TsCalMode::PedalMax, Sensor::getRaw(SensorType::AcceleratorPedalPrimary), Sensor::getRaw(SensorType::AcceleratorPedalSecondary)); | ||
41 | ✗ | onGrabPedal(); | ||
42 | ✗ | } | ||
43 | ||||
44 | // In case of cable throttle we need support calibration of primary sensor of first throttle only | |||
45 | ✗ | void grapTps1PrimaryIsClosed() | ||
46 | { | |||
47 | ✗ | tsCalibrationSetData(TsCalMode::Tps1Min, Sensor::getRaw(SensorType::Tps1Primary)); | ||
48 | ✗ | } | ||
49 | ||||
50 | ✗ | void grapTps1PrimaryIsOpen() | ||
51 | { | |||
52 | ✗ | tsCalibrationSetData(TsCalMode::Tps1Max, Sensor::getRaw(SensorType::Tps1Primary)); | ||
53 | ✗ | } | ||
54 | ||||
55 | #if EFI_SENT_SUPPORT | |||
56 | ||||
57 | extern SentTps sentTps; | |||
58 | ||||
59 | 2 | float decodeTpsSentValue(float sentValue) { | ||
60 |
2/3✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
|
2 | switch (engineConfiguration->sentEtbType) { | |
61 |
1/1✓ Decision 'true' taken 1 time.
|
1 | case SentEtbType::GM_TYPE_1: | |
62 | 1 | return interpolateMsg("tps", /*x1*/0xE48, /*y1*/0, /*x2*/0x1A0, /*y2*/POSITION_FULLY_OPEN, /*x*/sentValue); | ||
63 | ✗ | case SentEtbType::FORD_TYPE_1: | ||
64 | ✗ | return interpolateMsg("tps", /*x1*/ 250, /*y1*/0, /*x2*/ 3560, /*y2*/POSITION_FULLY_OPEN, /*x*/sentValue); | ||
65 |
1/1✓ Decision 'true' taken 1 time.
|
1 | default: | |
66 | 1 | return interpolateMsg("tps", /*x1*/engineConfiguration->customSentTpsMin, /*y1*/0, /*x2*/engineConfiguration->customSentTpsMax, /*y2*/POSITION_FULLY_OPEN, /*x*/sentValue); | ||
67 | } | |||
68 | } | |||
69 | ||||
70 | #if EFI_PROD_CODE | |||
71 | void sentTpsDecode(SentInput sentCh) { | |||
72 | if ((!isDigitalTps1()) || (engineConfiguration->EtbSentInput != sentCh)) { | |||
73 | return; | |||
74 | } | |||
75 | // todo: move away from weird float API | |||
76 | float sentValue = getSentValue(sentCh); | |||
77 | float tpsValue = decodeTpsSentValue(sentValue); | |||
78 | ||||
79 | sentTps.setValidValue(tpsValue, getTimeNowNt()); | |||
80 | } | |||
81 | #endif // EFI_PROD_CODE | |||
82 | ||||
83 | 20 | bool isDigitalTps1() { | ||
84 | 20 | return (engineConfiguration->sentEtbType != SentEtbType::NONE); | ||
85 | } | |||
86 | ||||
87 | #endif /* EFI_SENT_SUPPORT */ | |||
88 |