* MAGHOLD constrained to 30 degrees
* mag_hold_heading_diff_limit CLI setting added to allow custom MAG_HOLD diff limit
* magHeading moved to pid.c and real interface created to inject data into it
* mag hold controller with current logic moved to pid.c
* 2Hz LPF filter added to magHold error to smoothen controller response
* variable name changed to clearly state its purpose
* LPF filter in MAG_HOLD controller moved after error limiting
* yaw_control_direction passed to pidController as argument, mag_hold_heading_diff_limit moved to pidProfile
* yaw_control_direction setting removed
* pidMagHold translates directly to rotation rate in dps
* pidMagHold refactored to the new principles and limiting
* name of filter changed to reflect its purpose
* HEADING_LOCK mode can be used only when MAG_HOLD is not enabled
* compiler warning supressed
* new MAG_HOLD defaults, RATE_LIMIT increased to 80dps, MAG_HOLD P to 60
* mag_rate_limit 90dps
AIRMODE: Air mode anti-windup improvements
PID: Remove integer PID (leave only one PID controller), remove pid_controller setting, remove float-point PID parameters (scale integer parameters to use in float-point PIDC)
PID: New set of PID tuning multipliers for better tuning range
PID: Make max_angle_inclination a PID-profile variable
PID: Reinstate yaw_p_limit
PID: Switch to a noise-robust differentiator
Remove GTUNE
PID: Use same self-leveling strength for ANGLE and HORIZON
PID: Self-leveling LPF to smooth out leveling response to rapid attitude or target angle change
This lets USB send up to 32 bytes in a frame instead of 32 one byte
frames. Add a fallback for drivers that don't implement writeBuf().
serial: allow buffering to speed up USB virtual COM ports.
Add begin write and end write hints. If implemented by the serial
driver, then the driver can buffer up data sent via serialWrite() and
flush it when serialEndWrite() is called.
Implemented at the buffer level as it requires the least change to how
serial_msp and serial_cli are architected.
Also tidy up the visibility in the VCP driver.
Prevent serial tx buffer overflow.
Note: this is likely not the best solution, we can investigate further
in due course.
drivers: add a buffering writer.
This wraps around the serial API and buffers a configurable number of
characters before flushing.
cli: add buffering.
This greatly speeds up the CLI when running over USB VCP under a
virtual machine.
msp: add buffering around the writes.
This bulks up the writes and lets the USB VCP driver send one 20 byte
frame instead of 20 one byte frames. This speeds up the blackbox
download and makes VCP much more reliable when running under a virtual
machine.
Fix for: serial buffer broke BLHeli 1wire pass through