7void PedalsSystem::tick(
const SysTick_s &tick,
const AnalogConversion_s &accel1,
const AnalogConversion_s &accel2,
const AnalogConversion_s &brake1,
const AnalogConversion_s &brake2)
12void PedalsSystem::tick(
const SysTick_s &tick,
const AnalogConversion_s &accel1,
const AnalogConversion_s &accel2,
const AnalogConversion_s &brake)
22 const AnalogConversion_s &accel2,
23 const AnalogConversion_s &brake,
24 unsigned long curr_time)
42 else if ((!implausibility) && ((out.
accelPercent <= 0.05)))
65 const AnalogConversion_s &accel2,
66 const AnalogConversion_s &brake1,
67 const AnalogConversion_s &brake2,
68 unsigned long curr_time)
75 auto percent = (out.
accelImplausible) ? accel1.conversion : (accel1.conversion + accel2.conversion) / 2.0;
88 else if ((!implausibility) && (!(out.
accelPercent > 0.05)))
97 out.
brakePercent = (brake1.conversion + brake2.conversion) / 2.0;
130 const AnalogConversion_s &pedalData2,
132 float max_percent_diff)
136 bool sens_not_within_req_percent = (fabs(pedalData1.conversion - pedalData2.conversion) > max_percent_diff);
137 if (pedal1_min_max_implaus || pedal2_min_max_implaus)
141 else if (sens_not_within_req_percent)
154 float implaus_margin_scale)
157 bool pedal_swapped =
false;
160 int pedal_margin = abs(max - min) * implaus_margin_scale;
164 pedal_swapped =
true;
169 bool pedal_less_than_min = pedal_swapped ? (pedalData.raw > (min + pedal_margin))
170 : (pedalData.raw < (min - pedal_margin));
172 bool pedal_greater_than_max = pedal_swapped ? (pedalData.raw < (max - pedal_margin))
173 : (pedalData.raw > (max + pedal_margin));
175 if (pedal_less_than_min)
179 else if (pedal_greater_than_max)
191 float range = 1.0 - (deadzone * 2);
194 float out = std::max(conversion_input - deadzone, 0.0f);
200 out = std::min(out, 1.0f);
206 const AnalogConversion_s &accelPedalData2,
207 const AnalogConversion_s &brakePedalData)
215 bool both_pedals_implausible = (accel_pressed && mech_brake_pressed);
216 return both_pedals_implausible;
220 const AnalogConversion_s &accelPedalData2,
221 const AnalogConversion_s &brakePedalData1,
222 const AnalogConversion_s &brakePedalData2)
230 bool both_pedals_implausible = (accel_pressed && mech_brake_pressed);
231 return both_pedals_implausible;
238 bool pedal_1_is_active;
239 bool pedal_2_is_active;
240 if(check_mech_activation)
242 pedal_1_is_active = val1_deadzone_removed >=
params.mechanical_activation_percentage;
243 pedal_2_is_active = val2_deadzone_removed >=
params.mechanical_activation_percentage;
245 pedal_1_is_active = val1_deadzone_removed >=
params.activation_percentage;
246 pedal_2_is_active = val2_deadzone_removed >=
params.activation_percentage;
248 return (pedal_1_is_active || pedal_2_is_active);
255 return (pedalData.raw >= max || pedalData.raw <= min);
PedalsSystemData_s evaluate_pedals(const AnalogConversion_s &accel1, const AnalogConversion_s &accel2, const AnalogConversion_s &brake1, const AnalogConversion_s &brake2, unsigned long curr_time)
PedalsParams brakeParams_
bool max_duration_of_implausibility_exceeded_(unsigned long curr_time)
PedalsParams accelParams_
unsigned long implausibilityStartTime_
bool evaluate_min_max_pedal_implausibilities_(const AnalogConversion_s &pedalData, int min, int max, float implaus_margin_scale)
bool pedal_is_active_(float pedal1ConvertedData, float pedal2ConvertedData, const PedalsParams ¶ms, bool check_mech_activation)
check whether or not pedal is active according to input parameters. returns true if either pedal is o...
bool evaluate_pedal_oor(const AnalogConversion_s &pedalData, int min, int max)
This checks to see if any pedal sensor is out of range :(.
bool evaluate_pedal_implausibilities_(const AnalogConversion_s &pedalData1, const AnalogConversion_s &pedalData2, const PedalsParams ¶ms, float max_percent_diff)
Evaluate pedal implausibilities_ determines if there is a software implausibility in the pedals cause...
void tick(const SysTick_s &tick, const AnalogConversion_s &accel1, const AnalogConversion_s &accel2, const AnalogConversion_s &brake)
overloaded tick function that runs the evaluation of the pedals system. evaluates brake using only mi...
bool evaluate_brake_and_accel_pressed_(const AnalogConversion_s &accelPedalData1, const AnalogConversion_s &accelPedalData2, const AnalogConversion_s &brakePedalData1, const AnalogConversion_s &brakePedalData2)
function to determine if the pedals and the brakes are pressed at the same time. evaluates brake bein...
float remove_deadzone_(float conversion_input, float deadzone)
ParameterInterface params
system interface struct that contains the data from the pedal system
float activation_percentage
float mechanical_activation_percentage
bool brakeAndAccelPressedImplausibility
bool implausibilityExceededMaxDuration