GCC Code Coverage Report


Directory: ./
File: firmware/controllers/algo/launch_control.h
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 2 0 2
Functions: 100.0% 2 0 2
Branches: -% 0 0 0
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1 /*
2 * @file launch_control.h
3 *
4 * @date Mar 23, 2020
5 * @author Andrey Belomutskiy, (c) 2012-2020
6 */
7
8 #pragma once
9
10 #include "launch_control_state_generated.h"
11
12 void initLaunchControl();
13
14 enum class LaunchCondition {
15 PreLaunch,
16 Launch,
17 NotMet
18 };
19
20 class LaunchControlBase : public launch_control_state_s {
21 public:
22 LaunchControlBase();
23 // Update the state of the launch control system
24 void update();
25
26 float getFuelCoefficient() const;
27 bool isInsideSpeedCondition() const;
28 bool isInsideTpsCondition() const;
29 bool isInsideSwitchCondition();
30 LaunchCondition calculateRPMLaunchCondition(float rpm);
31 LaunchCondition calculateLaunchCondition(float rpm);
32
33 bool isLaunchSparkRpmRetardCondition() const;
34 bool isLaunchFuelRpmRetardCondition() const;
35
36 1109 float getSparkSkipRatio() const { return sparkSkipRatio; }
37
38 private:
39 bool isLaunchRpmRetardCondition() const;
40
41 float calculateSparkSkipRatio(float rpm) const;
42
43
44 float sparkSkipRatio = 0.0f;
45 };
46
47 /**
48 * See also SoftLimiterSandbox.java
49 */
50 class SoftSparkLimiter {
51 public:
52 SoftSparkLimiter(bool p_allowHardCut);
53 /**
54 * targetSkipRatio of '0' means 'do not skip', would always return false
55 */
56 void updateTargetSkipRatio(
57 float luaSoftSparkSkip,
58 float tractionControlSparkSkip,
59 float launchOrShiftTorqueReductionControllerSparkSkipRatio = 0.0f
60 );
61 66 [[nodiscard]] float getTargetSkipRatio() const { return targetSkipRatio; }
62
63 bool shouldSkip();
64 private:
65 const bool allowHardCut;
66 bool wasJustSkipped = false;
67 float targetSkipRatio = 0;
68 };
69