mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-16 04:45:24 +03:00
allow user to fly without mag only if they reverse the default
This commit is contained in:
parent
5fecff404f
commit
f09a71a76d
8 changed files with 19 additions and 5 deletions
|
@ -70,6 +70,7 @@
|
|||
#include "flight/mixer.h"
|
||||
#include "flight/pid.h"
|
||||
#include "flight/position.h"
|
||||
#include "flight/pos_hold.h"
|
||||
#include "flight/rpm_filter.h"
|
||||
#include "flight/servos.h"
|
||||
#include "flight/imu.h"
|
||||
|
@ -1818,7 +1819,7 @@ static bool blackboxWriteSysinfo(void)
|
|||
#endif
|
||||
|
||||
#ifdef USE_POS_HOLD_MODE
|
||||
// nothing at present
|
||||
BLACKBOX_PRINT_HEADER_LINE(PARAM_NAME_POS_HOLD_WITHOUT_MAG, "%d", posHoldConfig()->pos_hold_without_mag);
|
||||
#endif
|
||||
|
||||
#ifdef USE_WING
|
||||
|
|
|
@ -64,6 +64,7 @@
|
|||
#include "flight/mixer.h"
|
||||
#include "flight/pid.h"
|
||||
#include "flight/position.h"
|
||||
#include "flight/pos_hold.h"
|
||||
#include "flight/rpm_filter.h"
|
||||
#include "flight/servos.h"
|
||||
|
||||
|
@ -1113,7 +1114,7 @@ const clivalue_t valueTable[] = {
|
|||
#endif
|
||||
|
||||
#ifdef USE_POS_HOLD_MODE
|
||||
// nothing at present
|
||||
{ PARAM_NAME_POS_HOLD_WITHOUT_MAG, VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_POSHOLD_CONFIG, offsetof(posHoldConfig_t, pos_hold_without_mag) },
|
||||
#endif
|
||||
|
||||
// PG_PID_CONFIG
|
||||
|
|
|
@ -1064,7 +1064,8 @@ void processRxModes(timeUs_t currentTimeUs)
|
|||
// and we have Acc for self-levelling
|
||||
&& sensors(SENSOR_ACC)
|
||||
// and we have altitude data
|
||||
// TO DO: handle No Mag data depending on user choice to proceed with or without mag
|
||||
&& sensors(SENSOR_MAG || allowPosHoldWithoutMag())
|
||||
// Need Mag unless a BRAVE user tries it without
|
||||
&& isAltitudeAvailable()
|
||||
// prevent activation until after takeoff
|
||||
&& wasThrottleRaised()) {
|
||||
|
|
|
@ -251,6 +251,10 @@
|
|||
#define PARAM_NAME_ALT_HOLD_ADJUST_RATE "alt_hold_adjust_rate"
|
||||
#endif // USE_ALT_HOLD_MODE
|
||||
|
||||
#ifdef USE_POS_HOLD_MODE
|
||||
#define PARAM_NAME_POS_HOLD_WITHOUT_MAG "position_hold_without_mag"
|
||||
#endif // USE_POS_HOLD_MODE
|
||||
|
||||
#define PARAM_NAME_IMU_DCM_KP "imu_dcm_kp"
|
||||
#define PARAM_NAME_IMU_DCM_KI "imu_dcm_ki"
|
||||
#define PARAM_NAME_IMU_SMALL_ANGLE "small_angle"
|
||||
|
|
|
@ -104,4 +104,10 @@ bool showPosHoldWarning(void) {
|
|||
return (posHold.isPosHoldRequested && !posHold.posHoldIsOK);
|
||||
}
|
||||
|
||||
bool allowPosHoldWithoutMag(void) {
|
||||
return (posHoldConfig()->pos_hold_without_mag);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif // USE_POS_HOLD
|
||||
|
|
|
@ -36,5 +36,6 @@ void posHoldInit(void);
|
|||
void updatePosHoldState(timeUs_t currentTimeUs);
|
||||
|
||||
bool showPosHoldWarning(void);
|
||||
bool allowPosHoldWithoutMag(void);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -32,6 +32,6 @@
|
|||
PG_REGISTER_WITH_RESET_TEMPLATE(posHoldConfig_t, posHoldConfig, PG_POSHOLD_CONFIG, 1);
|
||||
|
||||
PG_RESET_TEMPLATE(posHoldConfig_t, posHoldConfig,
|
||||
.unused = 33, // position hold within this percentage stick deflection
|
||||
.pos_hold_without_mag = false, // position hold within this percentage stick deflection
|
||||
);
|
||||
#endif
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
#include "pg/pg.h"
|
||||
|
||||
typedef struct posHoldConfig_s {
|
||||
uint8_t unused;
|
||||
bool pos_hold_without_mag;
|
||||
} posHoldConfig_t;
|
||||
|
||||
PG_DECLARE(posHoldConfig_t, posHoldConfig);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue