diff --git a/src/modules/commander/Commander.cpp b/src/modules/commander/Commander.cpp index 36e8f2b829ff3923d9b1768b18446e64eae080e6..0eb1a1ca0424487e8920c01a1efaadb34d2887a0 100644 --- a/src/modules/commander/Commander.cpp +++ b/src/modules/commander/Commander.cpp @@ -3907,7 +3907,7 @@ void Commander::data_link_check(bool &status_changed) _datalink_last_heartbeat_onboard_controller = telemetry.heartbeat_time; if (_onboard_controller_lost) { - if (hrt_elapsed_time(&_datalink_last_heartbeat_onboard_controller) < (5_s)) { + if (hrt_elapsed_time(&_datalink_last_heartbeat_onboard_controller) < _onboard_regain_threshold.get() * 1_s) { mavlink_log_info(&mavlink_log_pub, "ONBOARD CONTROLLER REGAINED"); _onboard_controller_lost = false; } @@ -3951,7 +3951,8 @@ void Commander::data_link_check(bool &status_changed) // ONBOARD CONTROLLER data link loss failsafe (hard coded 5 seconds) if ((_datalink_last_heartbeat_onboard_controller > 0) - && (hrt_elapsed_time(&_datalink_last_heartbeat_onboard_controller) > 5_s) && !_onboard_controller_lost) { + && (hrt_elapsed_time(&_datalink_last_heartbeat_onboard_controller) > _onboard_loss_timeout.get() * 1_s) + && !_onboard_controller_lost) { mavlink_log_critical(&mavlink_log_pub, "ONBOARD CONTROLLER LOST"); _onboard_controller_lost = true; diff --git a/src/modules/commander/Commander.hpp b/src/modules/commander/Commander.hpp index 1344c39b43df979b4c150028cbdd7db6b531a2be..961bce464a3f0eb78e77a3e0dfa47af8c29bea91 100644 --- a/src/modules/commander/Commander.hpp +++ b/src/modules/commander/Commander.hpp @@ -118,7 +118,10 @@ private: (ParamInt<px4::params::COM_LOW_BAT_ACT>) _low_bat_action, (ParamFloat<px4::params::COM_DISARM_LAND>) _disarm_when_landed_timeout, - (ParamInt<px4::params::COM_OBS_AVOID>) _obs_avoid + (ParamInt<px4::params::COM_OBS_AVOID>) _obs_avoid, + + (ParamInt<px4::params::COM_ONB_LOSS_T>) _onboard_loss_timeout, + (ParamInt<px4::params::COM_ONB_REG_T>) _onboard_regain_threshold ) const int64_t POSVEL_PROBATION_MIN = 1_s; /**< minimum probation duration (usec) */ diff --git a/src/modules/commander/commander_params.c b/src/modules/commander/commander_params.c index 3328cd1563096355ac8ea7b5e17d9f5947484e82..4ac34f187ce7412b51e187cfd49158f83f011930 100644 --- a/src/modules/commander/commander_params.c +++ b/src/modules/commander/commander_params.c @@ -820,3 +820,29 @@ PARAM_DEFINE_INT32(NAV_RCL_ACT, 2); * @group Mission */ PARAM_DEFINE_INT32(COM_OBS_AVOID, 0); + +/** + * Time-out to wait when onboard connection is lost before triggering onboard lost action. + * TODO: Define parameters to specify proper action to trigger. + * + * @group Commander + * @unit s + * @min 0 + * @max 60 + * @increment 1 + */ +PARAM_DEFINE_INT32(COM_ONB_LOSS_T, 5); + +/** + * Onboard link regain time threshold + * + * After a onboard link loss: Amount of time between two heartbeats to consider connection healthy again. + * + * @group Commander + * @unit s + * @min 0 + * @max 3 + * @decimal 1 + * @increment 0.5 + */ +PARAM_DEFINE_INT32(COM_ONB_REG_T, 1);