GCC Code Coverage Report


Directory: ./
File: firmware/controllers/tcu/tc_4l6x.cpp
Date: 2025-11-16 14:52:24
Coverage Exec Excl Total
Lines: 0.0% 0 0 24
Functions: 0.0% 0 0 4
Branches: 0.0% 0 0 8
Decisions: 0.0% 0 - 4

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