You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.6 KiB
35 lines
1.6 KiB
#include "opendbc/safety/safety_declarations.h"
|
|
|
|
bool get_longitudinal_allowed(void) {
|
|
return controls_allowed && !gas_pressed_prev;
|
|
}
|
|
|
|
// Safety checks for longitudinal actuation
|
|
bool longitudinal_accel_checks(int desired_accel, const LongitudinalLimits limits) {
|
|
bool accel_valid = get_longitudinal_allowed() && !max_limit_check(desired_accel, limits.max_accel, limits.min_accel);
|
|
bool accel_inactive = desired_accel == limits.inactive_accel;
|
|
return !(accel_valid || accel_inactive);
|
|
}
|
|
|
|
bool longitudinal_speed_checks(int desired_speed, const LongitudinalLimits limits) {
|
|
return !get_longitudinal_allowed() && (desired_speed != limits.inactive_speed);
|
|
}
|
|
|
|
bool longitudinal_transmission_rpm_checks(int desired_transmission_rpm, const LongitudinalLimits limits) {
|
|
bool transmission_rpm_valid = get_longitudinal_allowed() && !max_limit_check(desired_transmission_rpm, limits.max_transmission_rpm, limits.min_transmission_rpm);
|
|
bool transmission_rpm_inactive = desired_transmission_rpm == limits.inactive_transmission_rpm;
|
|
return !(transmission_rpm_valid || transmission_rpm_inactive);
|
|
}
|
|
|
|
bool longitudinal_gas_checks(int desired_gas, const LongitudinalLimits limits) {
|
|
bool gas_valid = get_longitudinal_allowed() && !max_limit_check(desired_gas, limits.max_gas, limits.min_gas);
|
|
bool gas_inactive = desired_gas == limits.inactive_gas;
|
|
return !(gas_valid || gas_inactive);
|
|
}
|
|
|
|
bool longitudinal_brake_checks(int desired_brake, const LongitudinalLimits limits) {
|
|
bool violation = false;
|
|
violation |= !get_longitudinal_allowed() && (desired_brake != 0);
|
|
violation |= desired_brake > limits.max_brake;
|
|
return violation;
|
|
}
|
|
|