rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | Private Attributes
ShiftTorqueReductionController Class Reference

#include <shift_torque_reduction_controller.h>

Inheritance diagram for ShiftTorqueReductionController:
Inheritance graph
[legend]
Collaboration diagram for ShiftTorqueReductionController:
Collaboration graph
[legend]

Public Member Functions

void update ()
 
float getSparkSkipRatio () const
 
float getTorqueReductionIgnitionRetard () const
 

Private Member Functions

void updateTriggerPinState ()
 
void updateTriggerPinState (switch_input_pin_e pin, pin_input_mode_e mode, const bool invertPhysicalPin, bool invalidPinState)
 
void updateTimeConditionSatisfied ()
 
void updateRpmConditionSatisfied ()
 
void updateAppConditionSatisfied ()
 

Private Attributes

Timer m_pinTriggeredTimer
 

Additional Inherited Members

- Data Fields inherited from shift_torque_reduction_state_s
bool isTorqueReductionTriggerPinValid: 1 {}
 
bool torqueReductionTriggerPinState: 1 {}
 
bool isTimeConditionSatisfied: 1 {}
 
bool isRpmConditionSatisfied: 1 {}
 
bool isAppConditionSatisfied: 1 {}
 
bool isFlatShiftConditionSatisfied: 1 {}
 
bool isBelowTemperatureThreshold: 1 {}
 
bool unusedBit_7_7: 1 {}
 
bool unusedBit_7_8: 1 {}
 
bool unusedBit_7_9: 1 {}
 
bool unusedBit_7_10: 1 {}
 
bool unusedBit_7_11: 1 {}
 
bool unusedBit_7_12: 1 {}
 
bool unusedBit_7_13: 1 {}
 
bool unusedBit_7_14: 1 {}
 
bool unusedBit_7_15: 1 {}
 
bool unusedBit_7_16: 1 {}
 
bool unusedBit_7_17: 1 {}
 
bool unusedBit_7_18: 1 {}
 
bool unusedBit_7_19: 1 {}
 
bool unusedBit_7_20: 1 {}
 
bool unusedBit_7_21: 1 {}
 
bool unusedBit_7_22: 1 {}
 
bool unusedBit_7_23: 1 {}
 
bool unusedBit_7_24: 1 {}
 
bool unusedBit_7_25: 1 {}
 
bool unusedBit_7_26: 1 {}
 
bool unusedBit_7_27: 1 {}
 
bool unusedBit_7_28: 1 {}
 
bool unusedBit_7_29: 1 {}
 
bool unusedBit_7_30: 1 {}
 
bool unusedBit_7_31: 1 {}
 

Detailed Description

Definition at line 9 of file shift_torque_reduction_controller.h.

Member Function Documentation

◆ getSparkSkipRatio()

float ShiftTorqueReductionController::getSparkSkipRatio ( ) const

Definition at line 29 of file shift_torque_reduction_controller.cpp.

29 {
30 float result = 0.0f;
31 auto torqueReductionXAxis = readGppwmChannel(config->torqueReductionCutXaxis);
32 int8_t currentGear = Sensor::getOrZero(SensorType::DetectedGear);
33
35 result = interpolate3d(
38 config->torqueReductionCutXBins, torqueReductionXAxis.Value
39 ) / 100.0f;
40 }
41 return result;
42}
static float getOrZero(SensorType type)
Definition sensor.h:83
static constexpr persistent_config_s * config
static constexpr engine_configuration_s * engineConfiguration
expected< float > readGppwmChannel(gppwm_channel_e channel)
int8_t torqueReductionIgnitionCutTable[TORQUE_TABLE_Y_SIZE][TORQUE_TABLE_X_SIZE]

Referenced by EngineState::updateSparkSkip().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getTorqueReductionIgnitionRetard()

float ShiftTorqueReductionController::getTorqueReductionIgnitionRetard ( ) const

Definition at line 157 of file shift_torque_reduction_controller.cpp.

157 {
158 auto torqueReductionXAxis = readGppwmChannel(config->torqueReductionIgnitionRetardXaxis);
159 int8_t currentGear = Sensor::getOrZero(SensorType::DetectedGear);
160
161 return interpolate3d(
164 config->torqueReductionIgnitionRetardXBins, torqueReductionXAxis.Value
165 );
166}
float torqueReductionIgnitionRetardTable[TORQUE_TABLE_Y_SIZE][TORQUE_TABLE_X_SIZE]

Referenced by getRunningAdvance().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update()

void ShiftTorqueReductionController::update ( )

Definition at line 17 of file shift_torque_reduction_controller.cpp.

Referenced by EngineState::periodicFastCallback().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateAppConditionSatisfied()

void ShiftTorqueReductionController::updateAppConditionSatisfied ( )
private

Definition at line 147 of file shift_torque_reduction_controller.cpp.

147 {
149
150 if (currentApp.Valid) {
152 } else {
154 }
155}
virtual SensorResult get() const =0
expected< float > SensorResult
Definition sensor.h:46
@ DriverThrottleIntent

Referenced by update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateRpmConditionSatisfied()

void ShiftTorqueReductionController::updateRpmConditionSatisfied ( )
private

Definition at line 142 of file shift_torque_reduction_controller.cpp.

Referenced by update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateTimeConditionSatisfied()

void ShiftTorqueReductionController::updateTimeConditionSatisfied ( )
private

Definition at line 124 of file shift_torque_reduction_controller.cpp.

124 {
125 auto torqueReductionTimeXaxis = readGppwmChannel(config->torqueReductionTimeXaxis);
126 int8_t currentGear = Sensor::getOrZero(SensorType::DetectedGear);
127
128 auto torqueReductionTime = interpolate3d(
131 config->torqueReductionTimeXBins, torqueReductionTimeXaxis.Value
132 );
133
136 ((0.0f < torqueReductionTime)
137 && !m_pinTriggeredTimer.hasElapsedMs(torqueReductionTime)
138 )
139 : false;
140}
float torqueReductionTimeTable[TORQUE_TABLE_Y_SIZE][TORQUE_TABLE_X_SIZE]

Referenced by update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateTriggerPinState() [1/2]

void ShiftTorqueReductionController::updateTriggerPinState ( )
private

Definition at line 44 of file shift_torque_reduction_controller.cpp.

44 {
46 case TORQUE_REDUCTION_BUTTON: {
50 /*invertPhysicalPin*/false,
52 );
53 break;
54 }
55 case LAUNCH_BUTTON: {
59 /*invertPhysicalPin*/false,
60 false
61 );
62 break;
63 }
64 case TORQUE_REDUCTION_CLUTCH_DOWN_SWITCH: {
68 /*invertPhysicalPin*/false,
70 );
71 break;
72 }
73 case TORQUE_REDUCTION_CLUTCH_UP_SWITCH: {
77 /*invertPhysicalPin*/true,
79 );
80 break;
81 }
82 default: {
83 break; // we shouldn't be here!
84 }
85 }
86}
EngineState engineState
Definition engine.h:344
static EngineAccessor engine
Definition engine.h:413

Referenced by update(), and updateTriggerPinState().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateTriggerPinState() [2/2]

void ShiftTorqueReductionController::updateTriggerPinState ( switch_input_pin_e  pin,
pin_input_mode_e  mode,
const bool  invertPhysicalPin,
bool  invalidPinState 
)
private

Definition at line 96 of file shift_torque_reduction_controller.cpp.

101 {
105 // disable by not even reading control pin below threshold temperature, unless already active
106 return;
107 }
108 }
109
110#if !EFI_SIMULATOR
112 const bool previousTorqueReductionTriggerPinState = torqueReductionTriggerPinState;
114 torqueReductionTriggerPinState = efiReadPin(pin, mode) ^ invertPhysicalPin;
115 } else {
116 torqueReductionTriggerPinState = invalidPinState;
117 }
118 if (!previousTorqueReductionTriggerPinState && torqueReductionTriggerPinState) {
119 m_pinTriggeredTimer.reset();
120 }
121#endif // !EFI_SIMULATOR
122}
bool efiReadPin(brain_pin_e pin)
Definition io_pins.cpp:89
bool isBrainPinValid(brain_pin_e brainPin)
static bool isShiftTorqueBelowTemperatureThreshold()
brain_pin_e pin
Definition stm32_adc.cpp:15
Here is the call graph for this function:

Field Documentation

◆ m_pinTriggeredTimer

Timer ShiftTorqueReductionController::m_pinTriggeredTimer
private

The documentation for this class was generated from the following files: