mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-26 16:03:33 +08:00
commander: more user-friendly states indication
This commit is contained in:
@@ -575,6 +575,26 @@ int commander_thread_main(int argc, char *argv[])
|
|||||||
/* welcome user */
|
/* welcome user */
|
||||||
warnx("starting");
|
warnx("starting");
|
||||||
|
|
||||||
|
char *main_states_str[MAIN_STATE_MAX];
|
||||||
|
main_states_str[0] = "MANUAL";
|
||||||
|
main_states_str[1] = "SEATBELT";
|
||||||
|
main_states_str[2] = "EASY";
|
||||||
|
main_states_str[3] = "AUTO";
|
||||||
|
|
||||||
|
char *arming_states_str[ARMING_STATE_MAX];
|
||||||
|
arming_states_str[0] = "INIT";
|
||||||
|
arming_states_str[1] = "STANDBY";
|
||||||
|
arming_states_str[2] = "ARMED";
|
||||||
|
arming_states_str[3] = "ARMED_ERROR";
|
||||||
|
arming_states_str[4] = "STANDBY_ERROR";
|
||||||
|
arming_states_str[5] = "REBOOT";
|
||||||
|
arming_states_str[6] = "IN_AIR_RESTORE";
|
||||||
|
|
||||||
|
char *failsafe_states_str[FAILSAFE_STATE_MAX];
|
||||||
|
failsafe_states_str[0] = "NORMAL";
|
||||||
|
failsafe_states_str[1] = "RTL";
|
||||||
|
failsafe_states_str[2] = "TERMINATION";
|
||||||
|
|
||||||
/* pthread for slow low prio thread */
|
/* pthread for slow low prio thread */
|
||||||
pthread_t commander_low_prio_thread;
|
pthread_t commander_low_prio_thread;
|
||||||
|
|
||||||
@@ -1108,8 +1128,8 @@ int commander_thread_main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else if (res == TRANSITION_DENIED) {
|
} else if (res == TRANSITION_DENIED) {
|
||||||
warnx("ERROR: main denied: arm %d main %d mode_sw %d", status.arming_state, status.main_state, status.mode_switch);
|
/* DENIED here indicates bug in the commander */
|
||||||
mavlink_log_critical(mavlink_fd, "#audio: ERROR: main denied: arm %d main %d mode_sw %d", status.arming_state, status.main_state, status.mode_switch);
|
mavlink_log_critical(mavlink_fd, "ERROR: arming state transition denied");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (status.failsafe_state != FAILSAFE_STATE_NORMAL) {
|
if (status.failsafe_state != FAILSAFE_STATE_NORMAL) {
|
||||||
@@ -1127,13 +1147,11 @@ int commander_thread_main(int argc, char *argv[])
|
|||||||
res = check_main_state_machine(&status);
|
res = check_main_state_machine(&status);
|
||||||
|
|
||||||
if (res == TRANSITION_CHANGED) {
|
if (res == TRANSITION_CHANGED) {
|
||||||
//mavlink_log_info(mavlink_fd, "[cmd] main state: %d", status.main_state);
|
|
||||||
tune_positive();
|
tune_positive();
|
||||||
|
|
||||||
} else if (res == TRANSITION_DENIED) {
|
} else if (res == TRANSITION_DENIED) {
|
||||||
/* DENIED here indicates bug in the commander */
|
/* DENIED here indicates bug in the commander */
|
||||||
warnx("ERROR: main denied: arm %d main %d mode_sw %d", status.arming_state, status.main_state, status.mode_switch);
|
mavlink_log_critical(mavlink_fd, "ERROR: main state transition denied");
|
||||||
mavlink_log_critical(mavlink_fd, "#audio: ERROR: main denied: arm %d main %d mode_sw %d", status.arming_state, status.main_state, status.mode_switch);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -1179,9 +1197,20 @@ int commander_thread_main(int argc, char *argv[])
|
|||||||
|
|
||||||
hrt_abstime t1 = hrt_absolute_time();
|
hrt_abstime t1 = hrt_absolute_time();
|
||||||
|
|
||||||
if (arming_state_changed || main_state_changed || failsafe_state_changed) {
|
/* print new state */
|
||||||
mavlink_log_info(mavlink_fd, "[cmd] state: arm %d, main %d, fs %d", status.arming_state, status.main_state, status.failsafe_state);
|
if (arming_state_changed) {
|
||||||
status_changed = true;
|
status_changed = true;
|
||||||
|
mavlink_log_info(mavlink_fd, "[cmd] arming state: %s", arming_states_str[status.arming_state]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (main_state_changed) {
|
||||||
|
status_changed = true;
|
||||||
|
mavlink_log_info(mavlink_fd, "[cmd] main state: %s", main_states_str[status.main_state]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (failsafe_state_changed) {
|
||||||
|
status_changed = true;
|
||||||
|
mavlink_log_info(mavlink_fd, "[cmd] failsafe state: %s", failsafe_states_str[status.failsafe_state]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* publish states (armed, control mode, vehicle status) at least with 5 Hz */
|
/* publish states (armed, control mode, vehicle status) at least with 5 Hz */
|
||||||
|
|||||||
@@ -802,7 +802,7 @@ Navigator::task_main()
|
|||||||
|
|
||||||
/* notify user about state changes */
|
/* notify user about state changes */
|
||||||
if (myState != prevState) {
|
if (myState != prevState) {
|
||||||
mavlink_log_info(_mavlink_fd, "[navigator] nav state: %s -> %s", nav_states_str[prevState], nav_states_str[myState]);
|
mavlink_log_info(_mavlink_fd, "[navigator] nav state: %s", nav_states_str[myState]);
|
||||||
prevState = myState;
|
prevState = myState;
|
||||||
pub_control_mode = true;
|
pub_control_mode = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ typedef enum {
|
|||||||
MAIN_STATE_SEATBELT,
|
MAIN_STATE_SEATBELT,
|
||||||
MAIN_STATE_EASY,
|
MAIN_STATE_EASY,
|
||||||
MAIN_STATE_AUTO,
|
MAIN_STATE_AUTO,
|
||||||
|
MAIN_STATE_MAX
|
||||||
} main_state_t;
|
} main_state_t;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
@@ -73,7 +74,8 @@ typedef enum {
|
|||||||
ARMING_STATE_ARMED_ERROR,
|
ARMING_STATE_ARMED_ERROR,
|
||||||
ARMING_STATE_STANDBY_ERROR,
|
ARMING_STATE_STANDBY_ERROR,
|
||||||
ARMING_STATE_REBOOT,
|
ARMING_STATE_REBOOT,
|
||||||
ARMING_STATE_IN_AIR_RESTORE
|
ARMING_STATE_IN_AIR_RESTORE,
|
||||||
|
ARMING_STATE_MAX
|
||||||
} arming_state_t;
|
} arming_state_t;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
|||||||
Reference in New Issue
Block a user