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:
parent
42794ee32c
commit
0b38af6250
4 changed files with 26 additions and 9 deletions
|
@ -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 {
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue