1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-13 11:29:58 +03:00

Shared altitude control function in position_control.c (#13954)

* Altitude control code shared

fewer debugs
subtract D

* remove #include comments, simplify coding, restructuring

thanks JP and MH

* fix cms limits for throttle control

* Use altitude_control debug, fix throttle calculation

minor refactoring

* use AUTO_CONTROL_ALTITUDE debug in place of GPS Rescue throttle pid

* use autopilot for position control names

* fixes from reviews - thanks

* Re-organise included files and functions thanks Karate

* missed init and other typos

* remove old unused unit test file, tidy up thanks Mark

* fix indentation on one line
This commit is contained in:
ctzsnooze 2024-10-17 08:17:44 +11:00 committed by GitHub
parent 1d9823b4cd
commit 58fc8bbbb8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
33 changed files with 263 additions and 595 deletions

View file

@ -82,6 +82,7 @@
#include "fc/rc_modes.h"
#include "fc/runtime_config.h"
#include "flight/autopilot.h"
#include "flight/failsafe.h"
#include "flight/gps_rescue.h"
#include "flight/imu.h"
@ -89,7 +90,6 @@
#include "flight/pid.h"
#include "flight/pid_init.h"
#include "flight/position.h"
#include "flight/position_control.h"
#include "flight/rpm_filter.h"
#include "flight/servos.h"
@ -1544,9 +1544,9 @@ case MSP_NAME:
sbufWriteU16(dst, gpsRescueConfig()->returnAltitudeM);
sbufWriteU16(dst, gpsRescueConfig()->descentDistanceM);
sbufWriteU16(dst, gpsRescueConfig()->groundSpeedCmS);
sbufWriteU16(dst, gpsRescueConfig()->throttleMin);
sbufWriteU16(dst, gpsRescueConfig()->throttleMax);
sbufWriteU16(dst, positionControlConfig()->hover_throttle);
sbufWriteU16(dst, autopilotConfig()->throttle_min);
sbufWriteU16(dst, autopilotConfig()->throttle_max);
sbufWriteU16(dst, autopilotConfig()->hover_throttle);
sbufWriteU8(dst, gpsRescueConfig()->sanityChecks);
sbufWriteU8(dst, gpsRescueConfig()->minSats);
@ -1562,9 +1562,9 @@ case MSP_NAME:
break;
case MSP_GPS_RESCUE_PIDS:
sbufWriteU16(dst, positionControlConfig()->altitude_P);
sbufWriteU16(dst, positionControlConfig()->altitude_I);
sbufWriteU16(dst, positionControlConfig()->altitude_D);
sbufWriteU16(dst, autopilotConfig()->altitude_P);
sbufWriteU16(dst, autopilotConfig()->altitude_I);
sbufWriteU16(dst, autopilotConfig()->altitude_D);
// altitude_F not implemented yet
sbufWriteU16(dst, gpsRescueConfig()->velP);
sbufWriteU16(dst, gpsRescueConfig()->velI);
@ -2879,9 +2879,9 @@ static mspResult_e mspProcessInCommand(mspDescriptor_t srcDesc, int16_t cmdMSP,
gpsRescueConfigMutable()->returnAltitudeM = sbufReadU16(src);
gpsRescueConfigMutable()->descentDistanceM = sbufReadU16(src);
gpsRescueConfigMutable()->groundSpeedCmS = sbufReadU16(src);
gpsRescueConfigMutable()->throttleMin = sbufReadU16(src);
gpsRescueConfigMutable()->throttleMax = sbufReadU16(src);
positionControlConfigMutable()->hover_throttle = sbufReadU16(src);
autopilotConfigMutable()->throttle_min = sbufReadU16(src);
autopilotConfigMutable()->throttle_max = sbufReadU16(src);
autopilotConfigMutable()->hover_throttle = sbufReadU16(src);
gpsRescueConfigMutable()->sanityChecks = sbufReadU8(src);
gpsRescueConfigMutable()->minSats = sbufReadU8(src);
if (sbufBytesRemaining(src) >= 6) {
@ -2902,9 +2902,9 @@ static mspResult_e mspProcessInCommand(mspDescriptor_t srcDesc, int16_t cmdMSP,
break;
case MSP_SET_GPS_RESCUE_PIDS:
positionControlConfigMutable()->altitude_P = sbufReadU16(src);
positionControlConfigMutable()->altitude_I = sbufReadU16(src);
positionControlConfigMutable()->altitude_D = sbufReadU16(src);
autopilotConfigMutable()->altitude_P = sbufReadU16(src);
autopilotConfigMutable()->altitude_I = sbufReadU16(src);
autopilotConfigMutable()->altitude_D = sbufReadU16(src);
// altitude_F not included in msp yet
gpsRescueConfigMutable()->velP = sbufReadU16(src);
gpsRescueConfigMutable()->velI = sbufReadU16(src);