@ -143,7 +143,9 @@ static constexpr uint8_t COMMANDER_MAX_GPS_NOISE = 60; /**< Maximum percentage
@@ -143,7 +143,9 @@ static constexpr uint8_t COMMANDER_MAX_GPS_NOISE = 60; /**< Maximum percentage
# define DIFFPRESS_TIMEOUT 2000000
# define PRINT_INTERVAL 5000000
# define PRINT_MODE_REJECT_INTERVAL 2000000
# define PRINT_MODE_REJECT_INTERVAL 10000000
# define INAIR_RESTART_HOLDOFF_INTERVAL 2000000
enum MAV_MODE_FLAG {
MAV_MODE_FLAG_CUSTOM_MODE_ENABLED = 1 , /* 0b00000001 Reserved for future use. | */
@ -347,6 +349,7 @@ int commander_main(int argc, char *argv[])
@@ -347,6 +349,7 @@ int commander_main(int argc, char *argv[])
if ( ! strcmp ( argv [ 1 ] , " arm " ) ) {
int mavlink_fd_local = open ( MAVLINK_LOG_DEVICE , 0 ) ;
arm_disarm ( true , mavlink_fd_local , " command line " ) ;
warnx ( " note: not updating home position on commandline arming! " ) ;
close ( mavlink_fd_local ) ;
exit ( 0 ) ;
}
@ -478,6 +481,11 @@ bool handle_command(struct vehicle_status_s *status_local, const struct safety_s
@@ -478,6 +481,11 @@ bool handle_command(struct vehicle_status_s *status_local, const struct safety_s
// Transition the arming state
arming_ret = arm_disarm ( base_mode & MAV_MODE_FLAG_SAFETY_ARMED , mavlink_fd , " set mode command " ) ;
/* update home position on arming if at least 2s from commander start spent to avoid setting home on in-air restart */
if ( arming_ret = = TRANSITION_CHANGED & & now > commander_boot_timestamp + INAIR_RESTART_HOLDOFF_INTERVAL ) {
commander_set_home_position ( home_pub , _home , local_position , global_position ) ;
}
if ( base_mode & MAV_MODE_FLAG_CUSTOM_MODE_ENABLED ) {
/* use autopilot-specific mode */
if ( custom_main_mode = = PX4_CUSTOM_MAIN_MODE_MANUAL ) {
@ -2023,7 +2031,7 @@ int commander_thread_main(int argc, char *argv[])
@@ -2023,7 +2031,7 @@ int commander_thread_main(int argc, char *argv[])
}
/* update home position on arming if at least 2s from commander start spent to avoid setting home on in-air restart */
else if ( arming_state_changed & & armed . armed & & ! was_armed & & now > commander_boot_timestamp + 2000000 ) {
else if ( arming_state_changed & & armed . armed & & ! was_armed & & now > commander_boot_timestamp + INAIR_RESTART_HOLDOFF_INTERVAL ) {
commander_set_home_position ( home_pub , _home , local_position , global_position ) ;
}