Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Safety: alternate longitudinal limits #1577

Merged
merged 1 commit into from
Aug 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions board/safety.h
Original file line number Diff line number Diff line change
Expand Up @@ -509,6 +509,12 @@ bool longitudinal_speed_checks(int desired_speed, const LongitudinalLimits limit
return !get_longitudinal_allowed() && (desired_speed != limits.inactive_speed);
}

bool longitudinal_alt_checks(int desired_alt, const LongitudinalLimits limits){
bool alt_valid = get_longitudinal_allowed() && !max_limit_check(desired_alt, limits.max_alt, limits.min_alt);
bool alt_inactive = desired_alt == limits.inactive_alt;
return !(alt_valid || alt_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;
Expand Down
6 changes: 6 additions & 0 deletions board/safety_declarations.h
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,11 @@ typedef struct {
const int inactive_gas;
const int max_brake;

// alternative cmd limits, ex: transmission rpm on subaru
const int max_alt;
const int min_alt;
const int inactive_alt;

// speed cmd limits
const int inactive_speed;
} LongitudinalLimits;
Expand Down Expand Up @@ -163,6 +168,7 @@ bool steer_angle_cmd_checks(int desired_angle, bool steer_control_enabled, const
bool longitudinal_accel_checks(int desired_accel, const LongitudinalLimits limits);
bool longitudinal_speed_checks(int desired_speed, const LongitudinalLimits limits);
bool longitudinal_gas_checks(int desired_gas, const LongitudinalLimits limits);
bool longitudinal_alt_checks(int desired_alt, const LongitudinalLimits limits);
bool longitudinal_brake_checks(int desired_brake, const LongitudinalLimits limits);
bool longitudinal_interceptor_checks(CANPacket_t *to_send);
void pcm_cruise_check(bool cruise_engaged);
Expand Down