Skip to content

Commit 47d03d8

Browse files
committed
add fw alt control response adjustment
1 parent 86704d4 commit 47d03d8

File tree

5 files changed

+27
-11
lines changed

5 files changed

+27
-11
lines changed

src/main/fc/rc_adjustments.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,10 @@ static const adjustmentConfig_t defaultAdjustmentConfigs[ADJUSTMENT_FUNCTION_COU
302302
.adjustmentFunction = ADJUSTMENT_NAV_WP_MULTI_MISSION_INDEX,
303303
.mode = ADJUSTMENT_MODE_STEP,
304304
.data = { .stepConfig = { .step = 1 }}
305+
}, {
306+
.adjustmentFunction = ADJUSTMENT_NAV_FW_ALT_CONTROL_RESPONSE,
307+
.mode = ADJUSTMENT_MODE_STEP,
308+
.data = { .stepConfig = { .step = 1 }}
305309
}
306310
};
307311

@@ -545,6 +549,9 @@ static void applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t
545549
applyAdjustmentPID(ADJUSTMENT_POS_Z_D, &pidBankMutable()->pid[PID_POS_Z].D, delta);
546550
navigationUsePIDs();
547551
break;
552+
case ADJUSTMENT_NAV_FW_ALT_CONTROL_RESPONSE:
553+
applyAdjustmentU8(ADJUSTMENT_NAV_FW_ALT_CONTROL_RESPONSE, &pidProfileMutable()->fwAltControlResponseFactor, delta, SETTING_NAV_FW_ALT_CONTROL_RESPONSE_MIN, SETTING_NAV_FW_ALT_CONTROL_RESPONSE_MAX);
554+
break;
548555
case ADJUSTMENT_HEADING_P:
549556
applyAdjustmentPID(ADJUSTMENT_HEADING_P, &pidBankMutable()->pid[PID_HEADING].P, delta);
550557
// TODO: navigationUsePIDs()?

src/main/fc/rc_adjustments.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ typedef enum {
8585
ADJUSTMENT_FW_TPA_TIME_CONSTANT = 57,
8686
ADJUSTMENT_FW_LEVEL_TRIM = 58,
8787
ADJUSTMENT_NAV_WP_MULTI_MISSION_INDEX = 59,
88+
ADJUSTMENT_NAV_FW_ALT_CONTROL_RESPONSE = 60,
8889
ADJUSTMENT_FUNCTION_COUNT // must be last
8990
} adjustmentFunction_e;
9091

src/main/io/osd.c

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1726,7 +1726,7 @@ static bool osdDrawSingleElement(uint8_t item)
17261726
tfp_sprintf(buff + 1, "%2d", osdRssi);
17271727
else
17281728
tfp_sprintf(buff + 1, "%c ", SYM_MAX);
1729-
1729+
17301730
if (osdRssi < osdConfig()->rssi_alarm) {
17311731
TEXT_ATTRIBUTES_ADD_BLINK(elemAttr);
17321732
}
@@ -2393,7 +2393,7 @@ static bool osdDrawSingleElement(uint8_t item)
23932393
#ifdef USE_GEOZONE
23942394
if (FLIGHT_MODE(NAV_SEND_TO))
23952395
p = "AUTO";
2396-
else
2396+
else
23972397
#endif
23982398
if (FLIGHT_MODE(FAILSAFE_MODE))
23992399
p = "!FS!";
@@ -2546,7 +2546,7 @@ static bool osdDrawSingleElement(uint8_t item)
25462546
} else {
25472547
tfp_sprintf(buff+1, "%3d%c", rxLinkStatistics.downlinkLQ, SYM_AH_DECORATION_DOWN);
25482548
}
2549-
2549+
25502550
if (!failsafeIsReceivingRxData()) {
25512551
TEXT_ATTRIBUTES_ADD_BLINK(elemAttr);
25522552
} else if (rxLinkStatistics.downlinkLQ < osdConfig()->link_quality_alarm) {
@@ -2608,7 +2608,7 @@ static bool osdDrawSingleElement(uint8_t item)
26082608
buff[i] = ' ';
26092609
buff[4] = '\0';
26102610
break;
2611-
2611+
26122612
case OSD_RX_MODE:
26132613
displayWriteChar(osdDisplayPort, elemPosX++, elemPosY, SYM_RX_MODE);
26142614
strcat(buff, rxLinkStatistics.mode);
@@ -3083,6 +3083,10 @@ static bool osdDrawSingleElement(uint8_t item)
30833083
osdDisplayNavPIDValues(elemPosX, elemPosY, "VZ", PID_VEL_Z, ADJUSTMENT_VEL_Z_P, ADJUSTMENT_VEL_Z_I, ADJUSTMENT_VEL_Z_D);
30843084
return true;
30853085

3086+
case OSD_NAV_FW_ALT_CONTROL_RESPONSE:
3087+
osdDisplayAdjustableDecimalValue(elemPosX, elemPosY, "ACR", 0, pidProfile()->fwAltControlResponseFactor, 3, 0, ADJUSTMENT_NAV_FW_ALT_CONTROL_RESPONSE);
3088+
return true;
3089+
30863090
case OSD_HEADING_P:
30873091
osdDisplayAdjustableDecimalValue(elemPosX, elemPosY, "HP", 0, pidBank()->pid[PID_HEADING].P, 3, 0, ADJUSTMENT_HEADING_P);
30883092
return true;
@@ -3912,16 +3916,16 @@ static bool osdDrawSingleElement(uint8_t item)
39123916
}
39133917
int16_t flightDirection = STATE(AIRPLANE) ? CENTIDEGREES_TO_DEGREES(posControl.actualState.cog) : DECIDEGREES_TO_DEGREES(osdGetHeading());
39143918
int direction = CENTIDEGREES_TO_DEGREES(geozone.directionToNearestZone) - flightDirection + panHomeDirOffset;
3915-
osdDrawDirArrow(osdDisplayPort, osdGetDisplayPortCanvas(), OSD_DRAW_POINT_GRID(elemPosX, elemPosY), direction);
3919+
osdDrawDirArrow(osdDisplayPort, osdGetDisplayPortCanvas(), OSD_DRAW_POINT_GRID(elemPosX, elemPosY), direction);
39163920
} else {
39173921
if (isGeozoneActive()) {
39183922
TEXT_ATTRIBUTES_ADD_BLINK(elemAttr);
39193923
}
39203924
displayWriteCharWithAttr(osdDisplayPort, elemPosX, elemPosY, '-', elemAttr);
39213925
}
39223926
break;
3923-
}
3924-
3927+
}
3928+
39253929
case OSD_H_DIST_TO_FENCE:
39263930
{
39273931
if (navigationPositionEstimateIsHealthy() && isGeozoneActive()) {
@@ -5480,7 +5484,7 @@ static void osdShowSDArmScreen(void)
54805484
displayWrite(osdDisplayPort, (osdDisplayPort->cols - strlen(buf)) / 2, armScreenRow++, buf);
54815485
memset(buf, '\0', sizeof(buf));
54825486
#if defined(USE_GPS)
5483-
#if defined (USE_SAFE_HOME)
5487+
#if defined (USE_SAFE_HOME)
54845488
if (posControl.safehomeState.distance) {
54855489
safehomeRow = armScreenRow;
54865490
armScreenRow += 2;
@@ -6045,15 +6049,15 @@ textAttributes_t osdGetSystemMessage(char *buff, size_t buff_size, bool isCenter
60456049
case GEOZONE_MESSAGE_STATE_NFZ:
60466050
messages[messageCount++] = OSD_MSG_NFZ;
60476051
break;
6048-
case GEOZONE_MESSAGE_STATE_LEAVING_FZ:
6052+
case GEOZONE_MESSAGE_STATE_LEAVING_FZ:
60496053
osdFormatDistanceSymbol(buf, geozone.distanceToZoneBorder3d, 0, 3);
60506054
tfp_sprintf(messageBuf, OSD_MSG_LEAVING_FZ, buf);
60516055
messages[messageCount++] = messageBuf;
60526056
break;
60536057
case GEOZONE_MESSAGE_STATE_OUTSIDE_FZ:
60546058
messages[messageCount++] = OSD_MSG_OUTSIDE_FZ;
60556059
break;
6056-
case GEOZONE_MESSAGE_STATE_ENTERING_NFZ:
6060+
case GEOZONE_MESSAGE_STATE_ENTERING_NFZ:
60576061
osdFormatDistanceSymbol(buf, geozone.distanceToZoneBorder3d, 0, 3);
60586062
if (geozone.zoneInfo == INT32_MAX) {
60596063
tfp_sprintf(buf1, "%s%c", "INF", SYM_ALT_M);
@@ -6092,7 +6096,7 @@ textAttributes_t osdGetSystemMessage(char *buff, size_t buff_size, bool isCenter
60926096
if (!geozone.sticksLocked) {
60936097
messages[messageCount++] = OSD_MSG_MOVE_STICKS;
60946098
}
6095-
break;
6099+
break;
60966100
case GEOZONE_MESSAGE_STATE_NONE:
60976101
break;
60986102
}

src/main/io/osd.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,7 @@ typedef enum {
312312
OSD_COURSE_TO_FENCE,
313313
OSD_H_DIST_TO_FENCE,
314314
OSD_V_DIST_TO_FENCE,
315+
OSD_NAV_FW_ALT_CONTROL_RESPONSE,
315316
OSD_ITEM_COUNT // MUST BE LAST
316317
} osd_items_e;
317318

src/main/io/osd_dji_hd.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -958,6 +958,9 @@ static void osdDJIAdjustmentMessage(char *buff, uint8_t adjustmentFunction)
958958
case ADJUSTMENT_VEL_Z_D:
959959
tfp_sprintf(buff, "VZD %3d", pidBankMutable()->pid[PID_VEL_Z].D);
960960
break;
961+
case ADJUSTMENT_NAV_FW_ALT_CONTROL_RESPONSE:
962+
tfp_sprintf(buff, "ACR %3d", pidProfileMutable()->fwAltControlResponseFactor);
963+
break;
961964
case ADJUSTMENT_FW_MIN_THROTTLE_DOWN_PITCH_ANGLE:
962965
tfp_sprintf(buff, "MTDPA %4d", navConfigMutable()->fw.minThrottleDownPitchAngle);
963966
break;

0 commit comments

Comments
 (0)