// Roll Stabilization Loop
if (!roll_gyro) {
roll_rate = phi - last_phi;
last_phi = phi;
desired_roll_rate = roll_rate_from_angle_error * (desired_phi - phi);
if (rate_only) desired_roll_rate = roll_rate_max * desired_phi / max_bank_angle_auto1;
roll_rate_error = desired_roll_rate - roll_rate;
roll_rate_error_differential = roll_rate_error - last_roll_rate_error;
last_roll_rate_error = roll_rate_error;
if (level_cruise) {
roll_rate_error_integral += roll_rate_error;
bound (roll_rate_error_integral) servo_from_roll_rate_i_max;
}
roll_servo = servo_from_roll_rate_ff * desired_roll_rate
+ servo_from_roll_rate_p * roll_rate_error
+ servo_from_roll_rate_i * roll_rate_error_integral
+ servo_from_roll_rate_d * roll_rate_error_differential
+ throttle_to_roll_mixing
+ pitch_to_roll_mixing
+ yaw_to_roll_mixing
+ roll_trim;
roll_servo = TRIM_PPRZ(roll_servo);