1
0
Fork 0
mirror of https://github.com/iNavFlight/inav.git synced 2025-07-23 16:25:26 +03:00

OSD Nav Message Update

System Messages for:
RTH Climb Phase
To WP number countdown
WP Hold countdown timer
This commit is contained in:
breadoven 2020-10-13 22:04:10 +01:00
parent 42794ee32c
commit 0b38af6250
4 changed files with 26 additions and 9 deletions

View file

@ -784,19 +784,19 @@ static const char * navigationStateMessage(void)
break; break;
case MW_NAV_STATE_RTH_START: case MW_NAV_STATE_RTH_START:
return OSD_MESSAGE_STR(OSD_MSG_STARTING_RTH); return OSD_MESSAGE_STR(OSD_MSG_STARTING_RTH);
case MW_NAV_STATE_RTH_CLIMB:
return OSD_MESSAGE_STR(OSD_MSG_RTH_CLIMB);
case MW_NAV_STATE_RTH_ENROUTE: case MW_NAV_STATE_RTH_ENROUTE:
// TODO: Break this up between climb and head home
return OSD_MESSAGE_STR(OSD_MSG_HEADING_HOME); return OSD_MESSAGE_STR(OSD_MSG_HEADING_HOME);
case MW_NAV_STATE_HOLD_INFINIT: case MW_NAV_STATE_HOLD_INFINIT:
// Used by HOLD flight modes. No information to add. // Used by HOLD flight modes. No information to add.
break; break;
case MW_NAV_STATE_HOLD_TIMED: case MW_NAV_STATE_HOLD_TIMED:
// TODO: Maybe we can display a count down // "HOLDING WP FOR xx S" Countdown added in osdGetSystemMessage
return OSD_MESSAGE_STR(OSD_MSG_HOLDING_WAYPOINT);
break; break;
case MW_NAV_STATE_WP_ENROUTE: case MW_NAV_STATE_WP_ENROUTE:
// TODO: Show WP number // "TO WP" + WP countdown added in osdGetSystemMessage
return OSD_MESSAGE_STR(OSD_MSG_TO_WP); break;
case MW_NAV_STATE_PROCESS_NEXT: case MW_NAV_STATE_PROCESS_NEXT:
return OSD_MESSAGE_STR(OSD_MSG_PREPARE_NEXT_WP); return OSD_MESSAGE_STR(OSD_MSG_PREPARE_NEXT_WP);
case MW_NAV_STATE_DO_JUMP: case MW_NAV_STATE_DO_JUMP:
@ -3301,10 +3301,24 @@ textAttributes_t osdGetSystemMessage(char *buff, size_t buff_size, bool isCenter
} }
} else { } else {
if (FLIGHT_MODE(NAV_RTH_MODE) || FLIGHT_MODE(NAV_WP_MODE) || navigationIsExecutingAnEmergencyLanding()) { if (FLIGHT_MODE(NAV_RTH_MODE) || FLIGHT_MODE(NAV_WP_MODE) || navigationIsExecutingAnEmergencyLanding()) {
if (NAV_Status.state == MW_NAV_STATE_WP_ENROUTE) {
// Countdown display for remaining Waypoints
tfp_sprintf(messageBuf, "TO WP %u/%u", posControl.activeWaypointIndex + 1, posControl.waypointCount);
messages[messageCount++] = messageBuf;
} else if (NAV_Status.state == MW_NAV_STATE_HOLD_TIMED) {
// WP hold time countdown in seconds
timeMs_t currentTime = millis();
int holdTimeRemaining = posControl.waypointList[posControl.activeWaypointIndex].p1 - (int)((currentTime - posControl.wpReachedTime)/1000);
if (holdTimeRemaining >=0) {
tfp_sprintf(messageBuf, "HOLDING WP FOR %2u S", holdTimeRemaining);
messages[messageCount++] = messageBuf;
}
} else {
const char *navStateMessage = navigationStateMessage(); const char *navStateMessage = navigationStateMessage();
if (navStateMessage) { if (navStateMessage) {
messages[messageCount++] = navStateMessage; messages[messageCount++] = navStateMessage;
} }
}
} else if (STATE(FIXED_WING_LEGACY) && (navGetCurrentStateFlags() & NAV_CTL_LAUNCH)) { } else if (STATE(FIXED_WING_LEGACY) && (navGetCurrentStateFlags() & NAV_CTL_LAUNCH)) {
messages[messageCount++] = OSD_MESSAGE_STR(OSD_MSG_AUTOLAUNCH); messages[messageCount++] = OSD_MESSAGE_STR(OSD_MSG_AUTOLAUNCH);
} else { } else {

View file

@ -80,6 +80,7 @@
#define OSD_MSG_EMERG_LANDING_FS "(EMERGENCY LANDING)" #define OSD_MSG_EMERG_LANDING_FS "(EMERGENCY LANDING)"
#define OSD_MSG_MOVE_EXIT_FS "!MOVE STICKS TO EXIT FS!" #define OSD_MSG_MOVE_EXIT_FS "!MOVE STICKS TO EXIT FS!"
#define OSD_MSG_STARTING_RTH "STARTING RTH" #define OSD_MSG_STARTING_RTH "STARTING RTH"
#define OSD_MSG_RTH_CLIMB "ADJUSTING RTH ALTITUDE"
#define OSD_MSG_HEADING_HOME "EN ROUTE TO HOME" #define OSD_MSG_HEADING_HOME "EN ROUTE TO HOME"
#define OSD_MSG_HOLDING_WAYPOINT "HOLDING WAYPOINT" #define OSD_MSG_HOLDING_WAYPOINT "HOLDING WAYPOINT"
#define OSD_MSG_TO_WP "TO WP" #define OSD_MSG_TO_WP "TO WP"

View file

@ -491,7 +491,7 @@ static const navigationFSMStateDescriptor_t navFSM[NAV_STATE_COUNT] = {
.timeoutMs = 10, .timeoutMs = 10,
.stateFlags = NAV_CTL_ALT | NAV_CTL_POS | NAV_CTL_YAW | NAV_REQUIRE_ANGLE | NAV_REQUIRE_MAGHOLD | NAV_REQUIRE_THRTILT | NAV_AUTO_RTH | NAV_RC_POS | NAV_RC_YAW, // allow pos adjustment while climbind to safe alt .stateFlags = NAV_CTL_ALT | NAV_CTL_POS | NAV_CTL_YAW | NAV_REQUIRE_ANGLE | NAV_REQUIRE_MAGHOLD | NAV_REQUIRE_THRTILT | NAV_AUTO_RTH | NAV_RC_POS | NAV_RC_YAW, // allow pos adjustment while climbind to safe alt
.mapToFlightModes = NAV_RTH_MODE | NAV_ALTHOLD_MODE, .mapToFlightModes = NAV_RTH_MODE | NAV_ALTHOLD_MODE,
.mwState = MW_NAV_STATE_RTH_ENROUTE, .mwState = MW_NAV_STATE_RTH_CLIMB,
.mwError = MW_NAV_ERROR_WAIT_FOR_RTH_ALT, .mwError = MW_NAV_ERROR_WAIT_FOR_RTH_ALT,
.onEvent = { .onEvent = {
[NAV_FSM_EVENT_TIMEOUT] = NAV_STATE_RTH_CLIMB_TO_SAFE_ALT, // re-process the state [NAV_FSM_EVENT_TIMEOUT] = NAV_STATE_RTH_CLIMB_TO_SAFE_ALT, // re-process the state

View file

@ -377,6 +377,8 @@ typedef enum {
MW_NAV_STATE_LAND_START_DESCENT, // Start descent MW_NAV_STATE_LAND_START_DESCENT, // Start descent
MW_NAV_STATE_HOVER_ABOVE_HOME, // Hover/Loitering above home MW_NAV_STATE_HOVER_ABOVE_HOME, // Hover/Loitering above home
MW_NAV_STATE_EMERGENCY_LANDING, // Emergency landing MW_NAV_STATE_EMERGENCY_LANDING, // Emergency landing
MW_NAV_STATE_RTH_CLIMB, // RTH Climb safe altitude
} navSystemStatus_State_e; } navSystemStatus_State_e;
typedef enum { typedef enum {