From 58d264880f40e263b51a7585437dbc3fbe36fb5d Mon Sep 17 00:00:00 2001 From: Darren Lines Date: Tue, 10 May 2022 12:56:52 +0100 Subject: [PATCH] Added Fixed Wing TPA Time Constant to adjustments --- docs/Inflight Adjustments.md | 1 + src/main/fc/rc_adjustments.c | 7 +++ src/main/fc/rc_adjustments.h | 113 ++++++++++++++++++----------------- src/main/io/osd.c | 20 +++++++ src/main/io/osd.h | 1 + 5 files changed, 86 insertions(+), 56 deletions(-) diff --git a/docs/Inflight Adjustments.md b/docs/Inflight Adjustments.md index 422ba71eb5..0c216f8fc5 100644 --- a/docs/Inflight Adjustments.md +++ b/docs/Inflight Adjustments.md @@ -158,6 +158,7 @@ this reason ensure that you define enough ranges to cover the range channel's us | 54 | TPA | | 55 | TPA_BREAKPOINT | | 56 | NAV_FW_CONTROL_SMOOTHNESS | +| 57 | FW_TPA_TIME_CONSTANT | ## Examples diff --git a/src/main/fc/rc_adjustments.c b/src/main/fc/rc_adjustments.c index 610e62f16e..70e37a0651 100644 --- a/src/main/fc/rc_adjustments.c +++ b/src/main/fc/rc_adjustments.c @@ -289,6 +289,10 @@ static const adjustmentConfig_t defaultAdjustmentConfigs[ADJUSTMENT_FUNCTION_COU .adjustmentFunction = ADJUSTMENT_NAV_FW_CONTROL_SMOOTHNESS, .mode = ADJUSTMENT_MODE_STEP, .data = { .stepConfig = { .step = 1 }} + }, { + .adjustmentFunction = ADJUSTMENT_FW_TPA_TIME_CONSTANT, + .mode = ADJUSTMENT_MODE_STEP, + .data = { .stepConfig = { .step = 5 }} } }; @@ -597,6 +601,9 @@ static void applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t case ADJUSTMENT_TPA_BREAKPOINT: applyAdjustmentU16(ADJUSTMENT_TPA_BREAKPOINT, &controlRateConfig->throttle.pa_breakpoint, delta, PWM_RANGE_MIN, PWM_RANGE_MAX); break; + case ADJUSTMENT_FW_TPA_TIME_CONSTANT: + applyAdjustmentU16(ADJUSTMENT_FW_TPA_TIME_CONSTANT, &controlRateConfig->throttle.fixedWingTauMs, delta, SETTING_FW_TPA_TIME_CONSTANT_MIN, SETTING_FW_TPA_TIME_CONSTANT_MAX); + break; case ADJUSTMENT_NAV_FW_CONTROL_SMOOTHNESS: applyAdjustmentU8(ADJUSTMENT_NAV_FW_CONTROL_SMOOTHNESS, &navConfigMutable()->fw.control_smoothness, delta, SETTING_NAV_FW_CONTROL_SMOOTHNESS_MIN, SETTING_NAV_FW_CONTROL_SMOOTHNESS_MAX); break; diff --git a/src/main/fc/rc_adjustments.h b/src/main/fc/rc_adjustments.h index 93dd3d7e61..21bd1b8c97 100644 --- a/src/main/fc/rc_adjustments.h +++ b/src/main/fc/rc_adjustments.h @@ -25,63 +25,64 @@ //#define USE_INFLIGHT_PROFILE_ADJUSTMENT - not currently enabled typedef enum { - ADJUSTMENT_NONE = 0, - ADJUSTMENT_RC_RATE = 1, - ADJUSTMENT_RC_EXPO = 2, - ADJUSTMENT_THROTTLE_EXPO = 3, - ADJUSTMENT_PITCH_ROLL_RATE = 4, - ADJUSTMENT_YAW_RATE = 5, - ADJUSTMENT_PITCH_ROLL_P = 6, - ADJUSTMENT_PITCH_ROLL_I = 7, - ADJUSTMENT_PITCH_ROLL_D = 8, - ADJUSTMENT_PITCH_ROLL_FF = 9, - ADJUSTMENT_PITCH_P = 10, - ADJUSTMENT_PITCH_I = 11, - ADJUSTMENT_PITCH_D = 12, - ADJUSTMENT_PITCH_FF = 13, - ADJUSTMENT_ROLL_P = 14, - ADJUSTMENT_ROLL_I = 15, - ADJUSTMENT_ROLL_D = 16, - ADJUSTMENT_ROLL_FF = 17, - ADJUSTMENT_YAW_P = 18, - ADJUSTMENT_YAW_I = 19, - ADJUSTMENT_YAW_D = 20, - ADJUSTMENT_YAW_FF = 21, - ADJUSTMENT_RATE_PROFILE = 22, // Unused, placeholder for compatibility - ADJUSTMENT_PITCH_RATE = 23, - ADJUSTMENT_ROLL_RATE = 24, - ADJUSTMENT_RC_YAW_EXPO = 25, - ADJUSTMENT_MANUAL_RC_EXPO = 26, - ADJUSTMENT_MANUAL_RC_YAW_EXPO = 27, - ADJUSTMENT_MANUAL_PITCH_ROLL_RATE = 28, - ADJUSTMENT_MANUAL_ROLL_RATE = 29, - ADJUSTMENT_MANUAL_PITCH_RATE = 30, - ADJUSTMENT_MANUAL_YAW_RATE = 31, - ADJUSTMENT_NAV_FW_CRUISE_THR = 32, - ADJUSTMENT_NAV_FW_PITCH2THR = 33, - ADJUSTMENT_ROLL_BOARD_ALIGNMENT = 34, - ADJUSTMENT_PITCH_BOARD_ALIGNMENT = 35, - ADJUSTMENT_LEVEL_P = 36, - ADJUSTMENT_LEVEL_I = 37, - ADJUSTMENT_LEVEL_D = 38, - ADJUSTMENT_POS_XY_P = 39, - ADJUSTMENT_POS_XY_I = 40, - ADJUSTMENT_POS_XY_D = 41, - ADJUSTMENT_POS_Z_P = 42, - ADJUSTMENT_POS_Z_I = 43, - ADJUSTMENT_POS_Z_D = 44, - ADJUSTMENT_HEADING_P = 45, - ADJUSTMENT_VEL_XY_P = 46, - ADJUSTMENT_VEL_XY_I = 47, - ADJUSTMENT_VEL_XY_D = 48, - ADJUSTMENT_VEL_Z_P = 49, - ADJUSTMENT_VEL_Z_I = 50, - ADJUSTMENT_VEL_Z_D = 51, + ADJUSTMENT_NONE = 0, + ADJUSTMENT_RC_RATE = 1, + ADJUSTMENT_RC_EXPO = 2, + ADJUSTMENT_THROTTLE_EXPO = 3, + ADJUSTMENT_PITCH_ROLL_RATE = 4, + ADJUSTMENT_YAW_RATE = 5, + ADJUSTMENT_PITCH_ROLL_P = 6, + ADJUSTMENT_PITCH_ROLL_I = 7, + ADJUSTMENT_PITCH_ROLL_D = 8, + ADJUSTMENT_PITCH_ROLL_FF = 9, + ADJUSTMENT_PITCH_P = 10, + ADJUSTMENT_PITCH_I = 11, + ADJUSTMENT_PITCH_D = 12, + ADJUSTMENT_PITCH_FF = 13, + ADJUSTMENT_ROLL_P = 14, + ADJUSTMENT_ROLL_I = 15, + ADJUSTMENT_ROLL_D = 16, + ADJUSTMENT_ROLL_FF = 17, + ADJUSTMENT_YAW_P = 18, + ADJUSTMENT_YAW_I = 19, + ADJUSTMENT_YAW_D = 20, + ADJUSTMENT_YAW_FF = 21, + ADJUSTMENT_RATE_PROFILE = 22, // Unused, placeholder for compatibility + ADJUSTMENT_PITCH_RATE = 23, + ADJUSTMENT_ROLL_RATE = 24, + ADJUSTMENT_RC_YAW_EXPO = 25, + ADJUSTMENT_MANUAL_RC_EXPO = 26, + ADJUSTMENT_MANUAL_RC_YAW_EXPO = 27, + ADJUSTMENT_MANUAL_PITCH_ROLL_RATE = 28, + ADJUSTMENT_MANUAL_ROLL_RATE = 29, + ADJUSTMENT_MANUAL_PITCH_RATE = 30, + ADJUSTMENT_MANUAL_YAW_RATE = 31, + ADJUSTMENT_NAV_FW_CRUISE_THR = 32, + ADJUSTMENT_NAV_FW_PITCH2THR = 33, + ADJUSTMENT_ROLL_BOARD_ALIGNMENT = 34, + ADJUSTMENT_PITCH_BOARD_ALIGNMENT = 35, + ADJUSTMENT_LEVEL_P = 36, + ADJUSTMENT_LEVEL_I = 37, + ADJUSTMENT_LEVEL_D = 38, + ADJUSTMENT_POS_XY_P = 39, + ADJUSTMENT_POS_XY_I = 40, + ADJUSTMENT_POS_XY_D = 41, + ADJUSTMENT_POS_Z_P = 42, + ADJUSTMENT_POS_Z_I = 43, + ADJUSTMENT_POS_Z_D = 44, + ADJUSTMENT_HEADING_P = 45, + ADJUSTMENT_VEL_XY_P = 46, + ADJUSTMENT_VEL_XY_I = 47, + ADJUSTMENT_VEL_XY_D = 48, + ADJUSTMENT_VEL_Z_P = 49, + ADJUSTMENT_VEL_Z_I = 50, + ADJUSTMENT_VEL_Z_D = 51, ADJUSTMENT_FW_MIN_THROTTLE_DOWN_PITCH_ANGLE = 52, - ADJUSTMENT_VTX_POWER_LEVEL = 53, - ADJUSTMENT_TPA = 54, - ADJUSTMENT_TPA_BREAKPOINT = 55, - ADJUSTMENT_NAV_FW_CONTROL_SMOOTHNESS = 56, + ADJUSTMENT_VTX_POWER_LEVEL = 53, + ADJUSTMENT_TPA = 54, + ADJUSTMENT_TPA_BREAKPOINT = 55, + ADJUSTMENT_NAV_FW_CONTROL_SMOOTHNESS = 56, + ADJUSTMENT_FW_TPA_TIME_CONSTANT = 57, ADJUSTMENT_FUNCTION_COUNT // must be last } adjustmentFunction_e; diff --git a/src/main/io/osd.c b/src/main/io/osd.c index 1ea6d7ef00..8dd32d4b6c 100644 --- a/src/main/io/osd.c +++ b/src/main/io/osd.c @@ -3017,6 +3017,26 @@ static bool osdDrawSingleElement(uint8_t item) return true; } + case OSD_TPA_TIME_CONSTANT: + { + /* char buff[7]; + textAttributes_t attr; + + if (isAdjustmentFunctionSelected(ADJUSTMENT_FW_TPA_TIME_CONSTANT)) { + displayWrite(osdDisplayPort, elemPosX, elemPosY, "TC OK"); + } else { + displayWrite(osdDisplayPort, elemPosX, elemPosY, "TPA TC"); + } + + attr = TEXT_ATTRIBUTES_NONE; + tfp_sprintf(buff, "%4d", currentControlRateProfile->throttle.fixedWingTauMs); + if (isAdjustmentFunctionSelected(ADJUSTMENT_FW_TPA_TIME_CONSTANT)) { + TEXT_ATTRIBUTES_ADD_BLINK(attr); + } + displayWriteWithAttr(osdDisplayPort, elemPosX + 7, elemPosY, buff, attr);*/ + osdDisplayAdjustableDecimalValue(elemPosX, elemPosY, "TPA TC", 0, currentControlRateProfile->throttle.fixedWingTauMs, 4, 0, ADJUSTMENT_FW_TPA_TIME_CONSTANT); + return true; + } case OSD_NAV_FW_CONTROL_SMOOTHNESS: osdDisplayAdjustableDecimalValue(elemPosX, elemPosY, "CTL S", 0, navConfig()->fw.control_smoothness, 1, 0, ADJUSTMENT_NAV_FW_CONTROL_SMOOTHNESS); diff --git a/src/main/io/osd.h b/src/main/io/osd.h index 56668fb28d..5021496d09 100644 --- a/src/main/io/osd.h +++ b/src/main/io/osd.h @@ -257,6 +257,7 @@ typedef enum { OSD_SWITCH_INDICATOR_1, OSD_SWITCH_INDICATOR_2, OSD_SWITCH_INDICATOR_3, + OSD_TPA_TIME_CONSTANT, OSD_ITEM_COUNT // MUST BE LAST } osd_items_e;