mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-28 17:53:34 +08:00
add and activate circuit breaker for gps failure detection
This commit is contained in:
@@ -1417,8 +1417,9 @@ int commander_thread_main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* check if GPS fix is ok */
|
/* check if GPS fix is ok */
|
||||||
if (gps_position.fix_type >= 3 && //XXX check eph and epv ?
|
if (circuit_breaker_enabled("CBRK_GPSFAIL", CBRK_GPSFAIL_KEY) ||
|
||||||
hrt_elapsed_time(&gps_position.timestamp_position) < FAILSAFE_DEFAULT_TIMEOUT) {
|
(gps_position.fix_type >= 3 &&
|
||||||
|
hrt_elapsed_time(&gps_position.timestamp_position) < FAILSAFE_DEFAULT_TIMEOUT)) {
|
||||||
/* handle the case where gps was regained */
|
/* handle the case where gps was regained */
|
||||||
if (status.gps_failure) {
|
if (status.gps_failure) {
|
||||||
status.gps_failure = false;
|
status.gps_failure = false;
|
||||||
|
|||||||
@@ -122,6 +122,20 @@ PARAM_DEFINE_INT32(CBRK_FLIGHTTERM, 121212);
|
|||||||
*/
|
*/
|
||||||
PARAM_DEFINE_INT32(CBRK_ENGINEFAIL, 284953);
|
PARAM_DEFINE_INT32(CBRK_ENGINEFAIL, 284953);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Circuit breaker for gps failure detection
|
||||||
|
*
|
||||||
|
* Setting this parameter to 240024 will disable the gps failure detection.
|
||||||
|
* If the aircraft is in gps failure mode the gps failure flag will be
|
||||||
|
* set to healthy
|
||||||
|
* WARNING: ENABLING THIS CIRCUIT BREAKER IS AT OWN RISK
|
||||||
|
*
|
||||||
|
* @min 0
|
||||||
|
* @max 240024
|
||||||
|
* @group Circuit Breaker
|
||||||
|
*/
|
||||||
|
PARAM_DEFINE_INT32(CBRK_GPSFAIL, 240024);
|
||||||
|
|
||||||
bool circuit_breaker_enabled(const char* breaker, int32_t magic)
|
bool circuit_breaker_enabled(const char* breaker, int32_t magic)
|
||||||
{
|
{
|
||||||
int32_t val;
|
int32_t val;
|
||||||
|
|||||||
@@ -55,6 +55,7 @@
|
|||||||
#define CBRK_AIRSPD_CHK_KEY 162128
|
#define CBRK_AIRSPD_CHK_KEY 162128
|
||||||
#define CBRK_FLIGHTTERM_KEY 121212
|
#define CBRK_FLIGHTTERM_KEY 121212
|
||||||
#define CBRK_ENGINEFAIL_KEY 284953
|
#define CBRK_ENGINEFAIL_KEY 284953
|
||||||
|
#define CBRK_GPSFAIL_KEY 240024
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user