// 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);