MCU
Loading...
Searching...
No Matches
PedalsSystem.h
Go to the documentation of this file.
1#ifndef PEDALSSYSTEM
2#define PEDALSSYSTEM
3#include <math.h>
4#include <tuple>
6#include "SharedDataTypes.h"
7#include "SysClock.h"
8
10// struct PedalsSystemData_s
11// {
12// bool accelImplausible : 1;
13// bool brakeImplausible : 1;
14// bool brakePressed : 1;
15// bool accelPressed : 1;
16// bool mechBrakeActive : 1;
17// bool brakeAndAccelPressedImplausibility : 1;
18// bool implausibilityExceededMaxDuration : 1;
19// float accelPercent;
20// float brakePercent;
21// float regenPercent;
22// };
23
26{
39};
40
42{
43public:
48 PedalsSystem(const PedalsParams &accelParams,
49 const PedalsParams &brakeParams)
50 {
51 setParams(accelParams, brakeParams);
53 }
54
55 void setParams(const PedalsParams &accelParams,
56 const PedalsParams &brakeParams)
57 {
58 accelParams_ = accelParams;
59 brakeParams_ = brakeParams;
60 }
61
63 {
64 return data_;
65 }
66
68 {
69 return data_;
70 }
71
73 {
75 }
76
83 void tick(const SysTick_s &tick,
84 const AnalogConversion_s &accel1,
85 const AnalogConversion_s &accel2,
86 const AnalogConversion_s &brake);
87
94 void tick(const SysTick_s &tick,
95 const AnalogConversion_s &accel1,
96 const AnalogConversion_s &accel2,
97 const AnalogConversion_s &brake1,
98 const AnalogConversion_s &brake2);
99
107 PedalsSystemData_s evaluate_pedals(const AnalogConversion_s &accel1,
108 const AnalogConversion_s &accel2,
109 const AnalogConversion_s &brake1,
110 const AnalogConversion_s &brake2,
111 unsigned long curr_time);
118 PedalsSystemData_s evaluate_pedals(const AnalogConversion_s &accel1,
119 const AnalogConversion_s &accel2,
120 const AnalogConversion_s &brake,
121 unsigned long curr_time);
122
123private:
128 float remove_deadzone_(float conversion_input, float deadzone);
129 bool max_duration_of_implausibility_exceeded_(unsigned long curr_time);
130
141
147 bool evaluate_pedal_implausibilities_(const AnalogConversion_s &pedalData1,
148 const AnalogConversion_s &pedalData2,
149 const PedalsParams &params,
150 float max_percent_diff);
151
156 bool evaluate_pedal_implausibilities_(const AnalogConversion_s &pedalData, const PedalsParams &params);
157
166 bool evaluate_brake_and_accel_pressed_(const AnalogConversion_s &accelPedalData1,
167 const AnalogConversion_s &accelPedalData2,
168 const AnalogConversion_s &brakePedalData1,
169 const AnalogConversion_s &brakePedalData2);
170
176 bool evaluate_brake_and_accel_pressed_(const AnalogConversion_s &accelPedalData1,
177 const AnalogConversion_s &accelPedalData2,
178 const AnalogConversion_s &brakePedalData);
182 bool evaluate_pedal_oor(const AnalogConversion_s &pedalData,
183 int min,
184 int max);
191 bool evaluate_min_max_pedal_implausibilities_(const AnalogConversion_s &pedalData,
192 int min,
193 int max,
194 float implaus_margin_scale);
195
202 bool pedal_is_active_(float pedal1ConvertedData, float pedal2ConvertedData, const PedalsParams &params, bool check_mech_activation);
203
204};
205
206#endif /* PEDALSSYSTEM */
PedalsSystemData_s evaluate_pedals(const AnalogConversion_s &accel1, const AnalogConversion_s &accel2, const AnalogConversion_s &brake1, const AnalogConversion_s &brake2, unsigned long curr_time)
PedalsSystemData_s data_
Definition: PedalsSystem.h:124
PedalsParams brakeParams_
Definition: PedalsSystem.h:126
bool max_duration_of_implausibility_exceeded_(unsigned long curr_time)
PedalsParams accelParams_
Definition: PedalsSystem.h:125
unsigned long implausibilityStartTime_
Definition: PedalsSystem.h:127
bool evaluate_min_max_pedal_implausibilities_(const AnalogConversion_s &pedalData, int min, int max, float implaus_margin_scale)
PedalsSystem(const PedalsParams &accelParams, const PedalsParams &brakeParams)
pedals system class that evaluates pedals for both accel and brake percent as well as implausibilitie...
Definition: PedalsSystem.h:48
bool pedal_is_active_(float pedal1ConvertedData, float pedal2ConvertedData, const PedalsParams &params, bool check_mech_activation)
check whether or not pedal is active according to input parameters. returns true if either pedal is o...
PedalsSystemData_s getPedalsSystemDataCopy()
Definition: PedalsSystem.h:67
const PedalsSystemData_s & getPedalsSystemData()
Definition: PedalsSystem.h:62
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 &params, float max_percent_diff)
Evaluate pedal implausibilities_ determines if there is a software implausibility in the pedals cause...
void setParams(const PedalsParams &accelParams, const PedalsParams &brakeParams)
Definition: PedalsSystem.h:55
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...
float getMechBrakeActiveThreshold()
Definition: PedalsSystem.h:72
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
Definition: PedalsSystem.h:26
float deadzone_margin
Definition: PedalsSystem.h:36
int max_sensor_pedal_1
Definition: PedalsSystem.h:33
float activation_percentage
Definition: PedalsSystem.h:35
float mechanical_activation_percentage
Definition: PedalsSystem.h:38
float implausibility_margin
Definition: PedalsSystem.h:37
int min_sensor_pedal_1
Definition: PedalsSystem.h:31
int min_sensor_pedal_2
Definition: PedalsSystem.h:32
int max_sensor_pedal_2
Definition: PedalsSystem.h:34