| Line | Branch | Decision | Exec | Source |
|---|---|---|---|---|
| 1 | #include "pch.h" | |||
| 2 | ||||
| 3 | #include "tc_4l6x.h" | |||
| 4 | ||||
| 5 | #if EFI_TCU | |||
| 6 | Gm4l6xTransmissionController gm4l6xTransmissionController; | |||
| 7 | static SimplePwm tccPwm("TCC Control"); | |||
| 8 | static SimplePwm shift32Pwm("3-2 Shift Control"); | |||
| 9 | ||||
| 10 | ✗ | void Gm4l6xTransmissionController::init() { | ||
| 11 | ✗ | Generic4TransmissionController::init(); | ||
| 12 | ||||
| 13 | ✗ | enginePins.tcuTccPwmSolenoid.initPin("TCC PWM Solenoid", engineConfiguration->tcu_tcc_pwm_solenoid, engineConfiguration->tcu_tcc_pwm_solenoid_mode); | ||
| 14 | ✗ | startSimplePwm(&tccPwm, | ||
| 15 | "TCC", | |||
| 16 | &engine->scheduler, | |||
| 17 | &enginePins.tcuTccPwmSolenoid, | |||
| 18 | ✗ | engineConfiguration->tcu_tcc_pwm_solenoid_freq, | ||
| 19 | 0); | |||
| 20 | ||||
| 21 | ✗ | enginePins.tcu32Solenoid.initPin("3-2 Shift Solenoid", engineConfiguration->tcu_32_solenoid_pin, engineConfiguration->tcu_32_solenoid_pin_mode); | ||
| 22 | ✗ | startSimplePwm(&shift32Pwm, | ||
| 23 | "3-2 Solenoid", | |||
| 24 | &engine->scheduler, | |||
| 25 | &enginePins.tcu32Solenoid, | |||
| 26 | ✗ | engineConfiguration->tcu_32_solenoid_freq, | ||
| 27 | 0); | |||
| 28 | ✗ | } | ||
| 29 | ||||
| 30 | ✗ | void Gm4l6xTransmissionController::update(gear_e gear) { | ||
| 31 | ✗ | Generic4TransmissionController::update(gear); | ||
| 32 | ||||
| 33 | ✗ | set32State(gear); | ||
| 34 | ✗ | } | ||
| 35 | ||||
| 36 | ✗ | void Gm4l6xTransmissionController::set32State(gear_e gear) { | ||
| 37 | ✗ | if (isShifting && shiftingFrom == GEAR_3 && gear == GEAR_2) { | ||
| 38 | ✗ | auto vss = Sensor::get(SensorType::VehicleSpeed); | ||
| 39 | ✗ | if (!vss.Valid) { | ||
| 40 | ✗ | return; | ||
| 41 | } | |||
| 42 | ||||
| 43 | ✗ | int pct = interpolate2d(vss.Value, config->tcu_32SpeedBins, config->tcu_32Vals); | ||
| 44 | ✗ | shift32Pwm.setSimplePwmDutyCycle(pct*0.01); | ||
| 45 | ✗ | } else { | ||
| 46 | ✗ | shift32Pwm.setSimplePwmDutyCycle(0); | ||
| 47 | } | |||
| 48 | } | |||
| 49 | ||||
| 50 | ✗ | Gm4l6xTransmissionController* getGm4l6xTransmissionController() { | ||
| 51 | ✗ | return &gm4l6xTransmissionController; | ||
| 52 | } | |||
| 53 | ||||
| 54 | #endif // EFI_TCU | |||
| 55 |