powerclamp_data
if (powerclamp_data.clamping) {
if (powerclamp_data.clamping) {
delta = powerclamp_data.target_ratio - current_ratio;
return powerclamp_data.target_ratio + guard <= current_ratio;
powerclamp_data.guard = 1 + powerclamp_data.target_ratio / 20;
powerclamp_data.window_size_now = window_size;
compensated_ratio = powerclamp_data.target_ratio +
get_compensation(powerclamp_data.target_ratio);
if (powerclamp_data.clamping)
if (!(powerclamp_data.count % powerclamp_data.window_size_now)) {
should_skip = powerclamp_adjust_controls(powerclamp_data.target_ratio,
powerclamp_data.guard,
powerclamp_data.window_size_now);
powerclamp_data.count++;
powerclamp_data.clamping = true;
if (!powerclamp_data.clamping)
powerclamp_data.clamping = false;
if (powerclamp_data.clamping) {
*state = powerclamp_data.target_ratio;
if (powerclamp_data.target_ratio == new_target_ratio)
if (!powerclamp_data.target_ratio && new_target_ratio > 0) {
powerclamp_data.target_ratio = new_target_ratio;
powerclamp_data.target_ratio = 0;
} else if (powerclamp_data.target_ratio > 0 && new_target_ratio == 0) {
powerclamp_data.target_ratio = 0;
powerclamp_data.target_ratio = new_target_ratio;
static struct powerclamp_data powerclamp_data;