Skip to content

Commit

Permalink
Merge pull request #7519 from MrD-RC/add-osd-feedback-for-loaded-miss…
Browse files Browse the repository at this point in the history
…ions

Added mission loaded to system message
  • Loading branch information
MrD-RC committed Oct 21, 2021
2 parents dead2cd + 3b45ea4 commit 0d6af3a
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 32 deletions.
74 changes: 42 additions & 32 deletions src/main/io/osd.c
Original file line number Diff line number Diff line change
Expand Up @@ -4107,13 +4107,13 @@ textAttributes_t osdGetSystemMessage(char *buff, size_t buff_size, bool isCenter
if (buff != NULL) {
const char *message = NULL;
char messageBuf[MAX(SETTING_MAX_NAME_LENGTH, OSD_MESSAGE_LENGTH+1)];
if (ARMING_FLAG(ARMED)) {
// Aircraft is armed. We might have up to 5
// messages to show.
const char *messages[5];
unsigned messageCount = 0;
const char *failsafeInfoMessage = NULL;
// We might have up to 5 messages to show.
const char *messages[5];
unsigned messageCount = 0;
const char *failsafeInfoMessage = NULL;
const char *invertedInfoMessage = NULL;

if (ARMING_FLAG(ARMED)) {
if (FLIGHT_MODE(FAILSAFE_MODE) || FLIGHT_MODE(NAV_RTH_MODE) || FLIGHT_MODE(NAV_WP_MODE) || navigationIsExecutingAnEmergencyLanding()) {
if (isWaypointMissionRTHActive()) {
// if RTH activated whilst WP mode selected, remind pilot to cancel WP mode to exit RTH
Expand Down Expand Up @@ -4188,45 +4188,55 @@ textAttributes_t osdGetSystemMessage(char *buff, size_t buff_size, bool isCenter
}
}
}
if (messageCount > 0) {
message = messages[OSD_ALTERNATING_CHOICES(1000, messageCount)];
if (message == failsafeInfoMessage) {
// failsafeInfoMessage is not useful for recovering
// a lost model, but might help avoiding a crash.
// Blink to grab user attention.
TEXT_ATTRIBUTES_ADD_BLINK(elemAttr);
}
// We're shoing either failsafePhaseMessage or
// navStateMessage. Don't BLINK here since
// having this text available might be crucial
// during a lost aircraft recovery and blinking
// will cause it to be missing from some frames.
}
} else if (ARMING_FLAG(ARMING_DISABLED_ALL_FLAGS)) {
unsigned invalidIndex;

// Check if we're unable to arm for some reason
if (ARMING_FLAG(ARMING_DISABLED_INVALID_SETTING) && !settingsValidate(&invalidIndex)) {
if (OSD_ALTERNATING_CHOICES(1000, 2) == 0) {

const setting_t *setting = settingGet(invalidIndex);
settingGetName(setting, messageBuf);
for (int ii = 0; messageBuf[ii]; ii++) {
messageBuf[ii] = sl_toupper(messageBuf[ii]);
}
message = messageBuf;
} else {
message = OSD_MESSAGE_STR(OSD_MSG_INVALID_SETTING);
TEXT_ATTRIBUTES_ADD_INVERTED(elemAttr);
}
invertedInfoMessage = messageBuf;
messages[messageCount++] = invertedInfoMessage;

invertedInfoMessage = OSD_MESSAGE_STR(OSD_MSG_INVALID_SETTING);
messages[messageCount++] = invertedInfoMessage;

} else {
if (OSD_ALTERNATING_CHOICES(1000, 2) == 0) {
message = OSD_MESSAGE_STR(OSD_MSG_UNABLE_ARM);
TEXT_ATTRIBUTES_ADD_INVERTED(elemAttr);
} else {

invertedInfoMessage = OSD_MESSAGE_STR(OSD_MSG_UNABLE_ARM);
messages[messageCount++] = invertedInfoMessage;

// Show the reason for not arming
message = osdArmingDisabledReasonMessage();
}
messages[messageCount++] = osdArmingDisabledReasonMessage();

}
} else if (!ARMING_FLAG(ARMED)) {
if (isWaypointListValid()) {
messages[messageCount++] = OSD_MESSAGE_STR(OSD_MSG_WP_MISSION_LOADED);
}
}

if (messageCount > 0) {
message = messages[OSD_ALTERNATING_CHOICES(1000, messageCount)];
if (message == failsafeInfoMessage) {
// failsafeInfoMessage is not useful for recovering
// a lost model, but might help avoiding a crash.
// Blink to grab user attention.
TEXT_ATTRIBUTES_ADD_BLINK(elemAttr);
} else if (message == invertedInfoMessage) {
TEXT_ATTRIBUTES_ADD_INVERTED(elemAttr);
}
// We're shoing either failsafePhaseMessage or
// navStateMessage. Don't BLINK here since
// having this text available might be crucial
// during a lost aircraft recovery and blinking
// will cause it to be missing from some frames.
}

osdFormatMessage(buff, buff_size, message, isCenteredText);
}
return elemAttr;
Expand Down
1 change: 1 addition & 0 deletions src/main/io/osd.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@
#define OSD_MSG_WP_FINISHED "WP END>HOLDING POSITION"
#define OSD_MSG_PREPARE_NEXT_WP "PREPARING FOR NEXT WAYPOINT"
#define OSD_MSG_WP_RTH_CANCEL "CANCEL WP TO EXIT RTH"
#define OSD_MSG_WP_MISSION_LOADED "* MISSION LOADED *"
#define OSD_MSG_EMERG_LANDING "EMERGENCY LANDING"
#define OSD_MSG_LANDING "LANDING"
#define OSD_MSG_LOITERING_HOME "LOITERING AROUND HOME"
Expand Down

0 comments on commit 0d6af3a

Please sign in to comment.