Skip to content

Commit

Permalink
Merge pull request #3393 from shellixyz/osd_add_adjustable_values
Browse files Browse the repository at this point in the history
Add adjustments and corresponding OSD items
  • Loading branch information
fiam committed Jun 20, 2018
2 parents b2a5d20 + 6c9b522 commit 754c907
Show file tree
Hide file tree
Showing 6 changed files with 439 additions and 58 deletions.
22 changes: 22 additions & 0 deletions src/main/cms/cms_menu_osd.c
Expand Up @@ -201,9 +201,31 @@ static const OSD_Entry menuOsdElemsEntries[] =
OSD_ELEMENT_ENTRY("MAP TAKE OFF", OSD_MAP_TAKEOFF),
OSD_ELEMENT_ENTRY("RADAR", OSD_RADAR),
#endif
OSD_ELEMENT_ENTRY("EXPO", OSD_RC_EXPO),
OSD_ELEMENT_ENTRY("YAW EXPO", OSD_RC_YAW_EXPO),
OSD_ELEMENT_ENTRY("THR EXPO", OSD_THROTTLE_EXPO),
OSD_ELEMENT_ENTRY("ROLL RATE", OSD_ROLL_RATE),
OSD_ELEMENT_ENTRY("PITCH RATE", OSD_PITCH_RATE),
OSD_ELEMENT_ENTRY("YAW RATE", OSD_YAW_RATE),
OSD_ELEMENT_ENTRY("M EXPO", OSD_MANUAL_RC_EXPO),
OSD_ELEMENT_ENTRY("M YAW EXPO", OSD_MANUAL_RC_YAW_EXPO),
OSD_ELEMENT_ENTRY("M ROLL RATE", OSD_MANUAL_ROLL_RATE),
OSD_ELEMENT_ENTRY("M PITCH RATE", OSD_MANUAL_PITCH_RATE),
OSD_ELEMENT_ENTRY("M YAW RATE", OSD_MANUAL_YAW_RATE),
OSD_ELEMENT_ENTRY("CRUISE THR", OSD_NAV_FW_CRUISE_THR),
OSD_ELEMENT_ENTRY("PITCH TO THR", OSD_NAV_FW_PITCH2THR),
OSD_ELEMENT_ENTRY("ROLL PIDS", OSD_ROLL_PIDS),
OSD_ELEMENT_ENTRY("PITCH PIDS", OSD_PITCH_PIDS),
OSD_ELEMENT_ENTRY("YAW PIDS", OSD_YAW_PIDS),
OSD_ELEMENT_ENTRY("LEVEL PIDS", OSD_LEVEL_PIDS),
OSD_ELEMENT_ENTRY("POSXY PIDS", OSD_POS_XY_PIDS),
OSD_ELEMENT_ENTRY("POSZ PIDS", OSD_POS_Z_PIDS),
OSD_ELEMENT_ENTRY("VELXY PIDS", OSD_VEL_XY_PIDS),
OSD_ELEMENT_ENTRY("VELZ PIDS", OSD_VEL_Z_PIDS),
OSD_ELEMENT_ENTRY("HEAD P", OSD_HEADING_P),
OSD_ELEMENT_ENTRY("ALIGN ROLL", OSD_BOARD_ALIGN_ROLL),
OSD_ELEMENT_ENTRY("ALIGN PITCH", OSD_BOARD_ALIGN_PITCH),
OSD_ELEMENT_ENTRY("0THR PITCH", OSD_FW_MIN_THROTTLE_DOWN_PITCH_ANGLE),

OSD_ELEMENT_ENTRY("ATTI PITCH", OSD_ATTITUDE_PITCH),
OSD_ELEMENT_ENTRY("ATTI ROLL", OSD_ATTITUDE_ROLL),
Expand Down
166 changes: 166 additions & 0 deletions src/main/fc/rc_adjustments.c
Expand Up @@ -41,6 +41,7 @@

#include "navigation/navigation.h"

#include "flight/mixer.h"
#include "flight/pid.h"

#include "io/beeper.h"
Expand Down Expand Up @@ -184,6 +185,74 @@ static const adjustmentConfig_t defaultAdjustmentConfigs[ADJUSTMENT_FUNCTION_COU
.adjustmentFunction = ADJUSTMENT_PITCH_BOARD_ALIGNMENT,
.mode = ADJUSTMENT_MODE_STEP,
.data = { .stepConfig = { .step = 5 }}
}, {
.adjustmentFunction = ADJUSTMENT_LEVEL_P,
.mode = ADJUSTMENT_MODE_STEP,
.data = { .stepConfig = { .step = 1 }}
}, {
.adjustmentFunction = ADJUSTMENT_LEVEL_I,
.mode = ADJUSTMENT_MODE_STEP,
.data = { .stepConfig = { .step = 1 }}
}, {
.adjustmentFunction = ADJUSTMENT_LEVEL_D,
.mode = ADJUSTMENT_MODE_STEP,
.data = { .stepConfig = { .step = 1 }}
}, {
.adjustmentFunction = ADJUSTMENT_POS_XY_P,
.mode = ADJUSTMENT_MODE_STEP,
.data = { .stepConfig = { .step = 1 }}
}, {
.adjustmentFunction = ADJUSTMENT_POS_XY_I,
.mode = ADJUSTMENT_MODE_STEP,
.data = { .stepConfig = { .step = 1 }}
}, {
.adjustmentFunction = ADJUSTMENT_POS_XY_D,
.mode = ADJUSTMENT_MODE_STEP,
.data = { .stepConfig = { .step = 1 }}
}, {
.adjustmentFunction = ADJUSTMENT_POS_Z_P,
.mode = ADJUSTMENT_MODE_STEP,
.data = { .stepConfig = { .step = 1 }}
}, {
.adjustmentFunction = ADJUSTMENT_POS_Z_I,
.mode = ADJUSTMENT_MODE_STEP,
.data = { .stepConfig = { .step = 1 }}
}, {
.adjustmentFunction = ADJUSTMENT_POS_Z_D,
.mode = ADJUSTMENT_MODE_STEP,
.data = { .stepConfig = { .step = 1 }}
}, {
.adjustmentFunction = ADJUSTMENT_HEADING_P,
.mode = ADJUSTMENT_MODE_STEP,
.data = { .stepConfig = { .step = 1 }}
}, {
.adjustmentFunction = ADJUSTMENT_VEL_XY_P,
.mode = ADJUSTMENT_MODE_STEP,
.data = { .stepConfig = { .step = 1 }}
}, {
.adjustmentFunction = ADJUSTMENT_VEL_XY_I,
.mode = ADJUSTMENT_MODE_STEP,
.data = { .stepConfig = { .step = 1 }}
}, {
.adjustmentFunction = ADJUSTMENT_VEL_XY_D,
.mode = ADJUSTMENT_MODE_STEP,
.data = { .stepConfig = { .step = 1 }}
}, {
.adjustmentFunction = ADJUSTMENT_VEL_Z_P,
.mode = ADJUSTMENT_MODE_STEP,
.data = { .stepConfig = { .step = 1 }}
}, {
.adjustmentFunction = ADJUSTMENT_VEL_Z_I,
.mode = ADJUSTMENT_MODE_STEP,
.data = { .stepConfig = { .step = 1 }}
}, {
.adjustmentFunction = ADJUSTMENT_VEL_Z_D,
.mode = ADJUSTMENT_MODE_STEP,
.data = { .stepConfig = { .step = 1 }}
}, {
.adjustmentFunction = ADJUSTMENT_FW_MIN_THROTTLE_DOWN_PITCH_ANGLE,
.mode = ADJUSTMENT_MODE_STEP,
.data = { .stepConfig = { .step = 5 }}
#ifdef USE_INFLIGHT_PROFILE_ADJUSTMENT
}, {
.adjustmentFunction = ADJUSTMENT_PROFILE,
Expand Down Expand Up @@ -414,6 +483,103 @@ static void applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t
updateBoardAlignment(0, delta);
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_BOARD_ALIGNMENT, boardAlignment()->pitchDeciDegrees);
break;
case ADJUSTMENT_LEVEL_P:
newValue = constrain((int)pidBank()->pid[PID_LEVEL].P + delta, 0, 200);
pidBankMutable()->pid[PID_LEVEL].P = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_LEVEL_P, newValue);
break;
case ADJUSTMENT_LEVEL_I:
newValue = constrain((int)pidBank()->pid[PID_LEVEL].I + delta, 0, 200);
pidBankMutable()->pid[PID_LEVEL].I = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_LEVEL_I, newValue);
break;
case ADJUSTMENT_LEVEL_D:
newValue = constrain((int)pidBank()->pid[PID_LEVEL].D + delta, 0, 200);
pidBankMutable()->pid[PID_LEVEL].D = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_LEVEL_D, newValue);
break;
case ADJUSTMENT_POS_XY_P:
newValue = constrain((int)pidBank()->pid[PID_POS_XY].P + delta, 0, 200);
pidBankMutable()->pid[PID_POS_XY].P = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_POS_XY_P, newValue);
navigationUsePIDs();
break;
case ADJUSTMENT_POS_XY_I:
newValue = constrain((int)pidBank()->pid[PID_POS_XY].I + delta, 0, 200);
pidBankMutable()->pid[PID_POS_XY].I = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_POS_XY_I, newValue);
navigationUsePIDs();
break;
case ADJUSTMENT_POS_XY_D:
newValue = constrain((int)pidBank()->pid[PID_POS_XY].D + delta, 0, 200);
pidBankMutable()->pid[PID_POS_XY].D = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_POS_XY_D, newValue);
navigationUsePIDs();
break;
case ADJUSTMENT_POS_Z_P:
newValue = constrain((int)pidBank()->pid[PID_POS_Z].P + delta, 0, 200);
pidBankMutable()->pid[PID_POS_Z].P = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_POS_Z_P, newValue);
navigationUsePIDs();
break;
case ADJUSTMENT_POS_Z_I:
newValue = constrain((int)pidBank()->pid[PID_POS_Z].I + delta, 0, 200);
pidBankMutable()->pid[PID_POS_Z].I = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_POS_Z_I, newValue);
navigationUsePIDs();
break;
case ADJUSTMENT_POS_Z_D:
newValue = constrain((int)pidBank()->pid[PID_POS_Z].D + delta, 0, 200);
pidBankMutable()->pid[PID_POS_Z].D = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_POS_Z_D, newValue);
navigationUsePIDs();
break;
case ADJUSTMENT_HEADING_P:
newValue = constrain((int)pidBank()->pid[PID_HEADING].P + delta, 0, 200);
pidBankMutable()->pid[PID_HEADING].P = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_HEADING_P, newValue);
break;
case ADJUSTMENT_VEL_XY_P:
newValue = constrain((int)pidBank()->pid[PID_VEL_XY].P + delta, 0, 200);
pidBankMutable()->pid[PID_VEL_XY].P = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_VEL_XY_P, newValue);
navigationUsePIDs();
break;
case ADJUSTMENT_VEL_XY_I:
newValue = constrain((int)pidBank()->pid[PID_VEL_XY].I + delta, 0, 200);
pidBankMutable()->pid[PID_VEL_XY].I = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_VEL_XY_I, newValue);
navigationUsePIDs();
break;
case ADJUSTMENT_VEL_XY_D:
newValue = constrain((int)pidBank()->pid[PID_VEL_XY].D + delta, 0, 200);
pidBankMutable()->pid[PID_VEL_XY].D = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_VEL_XY_D, newValue);
navigationUsePIDs();
break;
case ADJUSTMENT_VEL_Z_P:
newValue = constrain((int)pidBank()->pid[PID_VEL_Z].P + delta, 0, 200);
pidBankMutable()->pid[PID_VEL_Z].P = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_VEL_Z_P, newValue);
navigationUsePIDs();
break;
case ADJUSTMENT_VEL_Z_I:
newValue = constrain((int)pidBank()->pid[PID_VEL_Z].I + delta, 0, 200);
pidBankMutable()->pid[PID_VEL_Z].I = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_VEL_Z_I, newValue);
navigationUsePIDs();
break;
case ADJUSTMENT_VEL_Z_D:
newValue = constrain((int)pidBank()->pid[PID_VEL_Z].D + delta, 0, 200);
pidBankMutable()->pid[PID_VEL_Z].D = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_VEL_Z_D, newValue);
navigationUsePIDs();
break;
case ADJUSTMENT_FW_MIN_THROTTLE_DOWN_PITCH_ANGLE:
newValue = constrain((int)mixerConfig()->fwMinThrottleDownPitchAngle + delta, 0, FW_MIN_THROTTLE_DOWN_PITCH_ANGLE_MAX);
mixerConfigMutable()->fwMinThrottleDownPitchAngle = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_FW_MIN_THROTTLE_DOWN_PITCH_ANGLE, newValue);
break;
default:
break;
};
Expand Down
19 changes: 18 additions & 1 deletion src/main/fc/rc_adjustments.h
Expand Up @@ -57,8 +57,25 @@ typedef enum {
ADJUSTMENT_NAV_FW_PITCH2THR = 29,
ADJUSTMENT_ROLL_BOARD_ALIGNMENT = 30,
ADJUSTMENT_PITCH_BOARD_ALIGNMENT = 31,
ADJUSTMENT_LEVEL_P = 32,
ADJUSTMENT_LEVEL_I = 33,
ADJUSTMENT_LEVEL_D = 34,
ADJUSTMENT_POS_XY_P = 35,
ADJUSTMENT_POS_XY_I = 36,
ADJUSTMENT_POS_XY_D = 37,
ADJUSTMENT_POS_Z_P = 38,
ADJUSTMENT_POS_Z_I = 39,
ADJUSTMENT_POS_Z_D = 40,
ADJUSTMENT_HEADING_P = 41,
ADJUSTMENT_VEL_XY_P = 42,
ADJUSTMENT_VEL_XY_I = 43,
ADJUSTMENT_VEL_XY_D = 44,
ADJUSTMENT_VEL_Z_P = 45,
ADJUSTMENT_VEL_Z_I = 46,
ADJUSTMENT_VEL_Z_D = 47,
ADJUSTMENT_FW_MIN_THROTTLE_DOWN_PITCH_ANGLE = 48,
#ifdef USE_INFLIGHT_PROFILE_ADJUSTMENT
ADJUSTMENT_PROFILE = 32,
ADJUSTMENT_PROFILE = 49,
#endif
ADJUSTMENT_FUNCTION_COUNT // must be last
} adjustmentFunction_e;
Expand Down
2 changes: 2 additions & 0 deletions src/main/flight/mixer.h
Expand Up @@ -28,6 +28,8 @@
#define YAW_JUMP_PREVENTION_LIMIT_LOW 80
#define YAW_JUMP_PREVENTION_LIMIT_HIGH 500

#define FW_MIN_THROTTLE_DOWN_PITCH_ANGLE_MAX 450

typedef enum {
PLATFORM_MULTIROTOR = 0,
PLATFORM_AIRPLANE = 1,
Expand Down

0 comments on commit 754c907

Please sign in to comment.