2025-08-01 03:17:16 +02:00

45 lines
2.0 KiB
C

#include "params.h"
#include "can-halal.h"
#include "vehicle.h"
ParamConfig params[] = {
[PF_SpeedLimit] = {.value = 70, .min_value = 0, .max_value = 100, .step_value = 1, .display_factor = 1.0},
[PF_TorqueLimit] = {.value = 1400, .min_value = 0, .max_value = 1500, .step_value = 50, .display_factor = 1.0},
[PF_PowerLimit] = {.value = 20, .min_value = 0, .max_value = 80, .step_value = 1, .display_factor = 1.0},
[PF_Discipline] = {.value = 0, .min_value = 0, .max_value = 3, .step_value = 1, .display_factor = 1.0}, // TODO text
[PF_TorqueVectoringOn] = {.value = 1, .min_value = 0, .max_value = 1, .step_value = 1, .display_factor = 1.0},
[PF_TractionControlOn] = {.value = 1, .min_value = 0, .max_value = 1, .step_value = 1, .display_factor = 1.0},
[PF_Rekuperation] = {.value = 1, .min_value = 0, .max_value = 1, .step_value = 1, .display_factor = 1.0},
[PF_TractionControlP] = {.value = 20, .min_value = 0, .max_value = 50, .step_value = 1, .display_factor = 0.1},
[PF_TractionControlI] = {.value = 20, .min_value = 0, .max_value = 50, .step_value = 1, .display_factor = 0.1},
[PF_TractionControlMuMax] = {.value = 16, .min_value = 0, .max_value = 30, .step_value = 1, .display_factor = 0.1},
[PF_TractionControlSlipRef] = {.value = 4, .min_value = 0, .max_value = 10, .step_value = 1, .display_factor = 0.1},
};
void params_inc(ParamType param) {
uint32_t inc_value = params[param].value + params[param].step_value;
if (inc_value > params[param].max_value) {
params[param].value = params[param].max_value;
} else {
params[param].value = inc_value;
}
}
void params_dec(ParamType param) {
uint32_t dec_value = 0;
if (params[param].value > params[param].step_value) { // check for potential underflow
dec_value = params[param].value - params[param].step_value;
}
if (dec_value < params[param].min_value) {
params[param].value = params[param].min_value;
} else {
params[param].value = dec_value;
}
}
void params_broadcast(ParamType param) { //
vehicle_broadcast_param(param, params[param].value);
}