Skip to content

Commit a4de24d

Browse files
authored
Merge pull request #10090 from breadoven/abo_osd_sys_msg_cleanup
OSD system message improvements
2 parents 60a4b71 + f6c0348 commit a4de24d

File tree

6 files changed

+189
-181
lines changed

6 files changed

+189
-181
lines changed

src/main/fc/rc_modes.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,14 +114,28 @@ void processAirmode(void) {
114114
} else if (STATE(MULTIROTOR)) {
115115
processAirmodeMultirotor();
116116
}
117-
118117
}
119118

120119
bool isUsingNavigationModes(void)
121120
{
122121
return isUsingNAVModes;
123122
}
124123

124+
bool isFwAutoModeActive(boxId_e mode)
125+
{
126+
/* Sets activation priority of fixed wing auto tune/trim modes: Autotune -> Autotrim -> Autolevel */
127+
128+
if (mode == BOXAUTOTUNE) {
129+
return IS_RC_MODE_ACTIVE(BOXAUTOTUNE);
130+
} else if (mode == BOXAUTOTRIM) {
131+
return IS_RC_MODE_ACTIVE(BOXAUTOTRIM) && !IS_RC_MODE_ACTIVE(BOXAUTOTUNE);
132+
} else if (mode == BOXAUTOLEVEL) {
133+
return IS_RC_MODE_ACTIVE(BOXAUTOLEVEL) && !IS_RC_MODE_ACTIVE(BOXAUTOTUNE) && !IS_RC_MODE_ACTIVE(BOXAUTOTRIM);
134+
}
135+
136+
return false;
137+
}
138+
125139
bool IS_RC_MODE_ACTIVE(boxId_e boxId)
126140
{
127141
return bitArrayGet(rcModeActivationMask.bits, boxId);

src/main/fc/rc_modes.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,3 +140,4 @@ bool isRangeActive(uint8_t auxChannelIndex, const channelRange_t *range);
140140

141141
void updateActivatedModes(void);
142142
void updateUsedModeActivationConditionFlags(void);
143+
bool isFwAutoModeActive(boxId_e mode);

src/main/flight/pid.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1385,7 +1385,7 @@ pidBank_t * pidBankMutable(void) {
13851385

13861386
bool isFixedWingLevelTrimActive(void)
13871387
{
1388-
return IS_RC_MODE_ACTIVE(BOXAUTOLEVEL) && !areSticksDeflected() &&
1388+
return isFwAutoModeActive(BOXAUTOLEVEL) && !areSticksDeflected() &&
13891389
(FLIGHT_MODE(ANGLE_MODE) || FLIGHT_MODE(HORIZON_MODE)) &&
13901390
!FLIGHT_MODE(SOARING_MODE) && !FLIGHT_MODE(MANUAL_MODE) &&
13911391
!navigationIsControllingAltitude() && !(navCheckActiveAngleHoldAxis() == FD_PITCH && !angleHoldIsLevel);
@@ -1409,7 +1409,7 @@ void updateFixedWingLevelTrim(timeUs_t currentTimeUs)
14091409
previousArmingState = ARMING_FLAG(ARMED);
14101410

14111411
// return if not active or disarmed
1412-
if (!IS_RC_MODE_ACTIVE(BOXAUTOLEVEL) || !ARMING_FLAG(ARMED)) {
1412+
if (!isFwAutoModeActive(BOXAUTOLEVEL) || !ARMING_FLAG(ARMED)) {
14131413
return;
14141414
}
14151415

src/main/flight/pid_autotune.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
#include "fc/config.h"
4141
#include "fc/controlrate_profile.h"
4242
#include "fc/rc_controls.h"
43+
#include "fc/rc_modes.h"
4344
#include "fc/rc_adjustments.h"
4445
#include "fc/runtime_config.h"
4546
#include "fc/settings.h"
@@ -130,7 +131,7 @@ void autotuneStart(void)
130131

131132
void autotuneUpdateState(void)
132133
{
133-
if (IS_RC_MODE_ACTIVE(BOXAUTOTUNE) && STATE(AIRPLANE) && ARMING_FLAG(ARMED)) {
134+
if (isFwAutoModeActive(BOXAUTOTUNE) && STATE(AIRPLANE) && ARMING_FLAG(ARMED)) {
134135
if (!FLIGHT_MODE(AUTO_TUNE)) {
135136
autotuneStart();
136137
ENABLE_FLIGHT_MODE(AUTO_TUNE);
@@ -202,7 +203,7 @@ void autotuneFixedWingUpdate(const flight_dynamics_index_t axis, float desiredRa
202203

203204
if ((tuneCurrent[axis].updateCount & 25) == 0 && tuneCurrent[axis].updateCount >= AUTOTUNE_FIXED_WING_MIN_SAMPLES) {
204205
if (pidAutotuneConfig()->fw_rate_adjustment != FIXED && !FLIGHT_MODE(ANGLE_MODE)) { // Rate discovery is not possible in ANGLE mode
205-
206+
206207
// Target 80% control surface deflection to leave some room for P and I to work
207208
float pidSumTarget = (pidAutotuneConfig()->fw_max_rate_deflection / 100.0f) * pidSumLimit;
208209

src/main/flight/servos.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ void Reset_servoMixers(servoMixer_t *instance)
8282
#ifdef USE_PROGRAMMING_FRAMEWORK
8383
,.conditionId = -1
8484
#endif
85-
);
85+
);
8686
}
8787
}
8888

@@ -96,7 +96,7 @@ void pgResetFn_servoParams(servoParam_t *instance)
9696
.max = DEFAULT_SERVO_MAX,
9797
.middle = DEFAULT_SERVO_MIDDLE,
9898
.rate = 100
99-
);
99+
);
100100
}
101101
}
102102

@@ -194,7 +194,7 @@ void servosInit(void)
194194
}
195195

196196
int getServoCount(void)
197-
{
197+
{
198198
if (mixerUsesServos) {
199199
return 1 + maxServoIndex - minServoIndex;
200200
}
@@ -246,7 +246,7 @@ static void filterServos(void)
246246
void writeServos(void)
247247
{
248248
filterServos();
249-
249+
250250
#if !defined(SITL_BUILD)
251251
int servoIndex = 0;
252252
bool zeroServoValue = false;
@@ -449,7 +449,7 @@ void processServoAutotrimMode(void)
449449
static int32_t servoMiddleAccum[MAX_SUPPORTED_SERVOS];
450450
static int32_t servoMiddleAccumCount[MAX_SUPPORTED_SERVOS];
451451

452-
if (IS_RC_MODE_ACTIVE(BOXAUTOTRIM)) {
452+
if (isFwAutoModeActive(BOXAUTOTRIM)) {
453453
switch (trimState) {
454454
case AUTOTRIM_IDLE:
455455
if (ARMING_FLAG(ARMED)) {
@@ -544,7 +544,7 @@ void processServoAutotrimMode(void)
544544
void processContinuousServoAutotrim(const float dT)
545545
{
546546
static timeMs_t lastUpdateTimeMs;
547-
static servoAutotrimState_e trimState = AUTOTRIM_IDLE;
547+
static servoAutotrimState_e trimState = AUTOTRIM_IDLE;
548548
static uint32_t servoMiddleUpdateCount;
549549

550550
const float rotRateMagnitudeFiltered = pt1FilterApply4(&rotRateFilter, fast_fsqrtf(vectorNormSquared(&imuMeasuredRotationBF)), SERVO_AUTOTRIM_FILTER_CUTOFF, dT);
@@ -556,16 +556,16 @@ void processContinuousServoAutotrim(const float dT)
556556
const bool planeIsFlyingStraight = rotRateMagnitudeFiltered <= DEGREES_TO_RADIANS(servoConfig()->servo_autotrim_rotation_limit);
557557
const bool noRotationCommanded = targetRateMagnitudeFiltered <= servoConfig()->servo_autotrim_rotation_limit;
558558
const bool sticksAreCentered = !areSticksDeflected();
559-
const bool planeIsFlyingLevel = ABS(attitude.values.pitch + DEGREES_TO_DECIDEGREES(getFixedWingLevelTrim())) <= SERVO_AUTOTRIM_ATTITUDE_LIMIT
559+
const bool planeIsFlyingLevel = ABS(attitude.values.pitch + DEGREES_TO_DECIDEGREES(getFixedWingLevelTrim())) <= SERVO_AUTOTRIM_ATTITUDE_LIMIT
560560
&& ABS(attitude.values.roll) <= SERVO_AUTOTRIM_ATTITUDE_LIMIT;
561561
if (
562-
planeIsFlyingStraight &&
563-
noRotationCommanded &&
562+
planeIsFlyingStraight &&
563+
noRotationCommanded &&
564564
planeIsFlyingLevel &&
565565
sticksAreCentered &&
566-
!FLIGHT_MODE(MANUAL_MODE) &&
566+
!FLIGHT_MODE(MANUAL_MODE) &&
567567
isGPSHeadingValid() // TODO: proper flying detection
568-
) {
568+
) {
569569
// Plane is flying straight and level: trim servos
570570
for (int axis = FD_ROLL; axis <= FD_PITCH; axis++) {
571571
// For each stabilized axis, add 5 units of I-term to all associated servo midpoints
@@ -610,7 +610,7 @@ void processContinuousServoAutotrim(const float dT)
610610
DEBUG_SET(DEBUG_AUTOTRIM, 1, servoMiddleUpdateCount);
611611
DEBUG_SET(DEBUG_AUTOTRIM, 3, MAX(RADIANS_TO_DEGREES(rotRateMagnitudeFiltered), targetRateMagnitudeFiltered));
612612
DEBUG_SET(DEBUG_AUTOTRIM, 5, axisPID_I[FD_ROLL]);
613-
DEBUG_SET(DEBUG_AUTOTRIM, 7, axisPID_I[FD_PITCH]);
613+
DEBUG_SET(DEBUG_AUTOTRIM, 7, axisPID_I[FD_PITCH]);
614614
}
615615

616616
void processServoAutotrim(const float dT) {

0 commit comments

Comments
 (0)