AP_BoardConfig: added sensor_config_error()
used to notify user of fatal sensor setup error
This commit is contained in:
parent
bffc5daeb0
commit
e32e2f5b5d
@ -19,7 +19,9 @@
|
|||||||
|
|
||||||
#include <AP_HAL/AP_HAL.h>
|
#include <AP_HAL/AP_HAL.h>
|
||||||
#include <AP_Common/AP_Common.h>
|
#include <AP_Common/AP_Common.h>
|
||||||
|
#include <GCS_MAVLink/GCS.h>
|
||||||
#include "AP_BoardConfig.h"
|
#include "AP_BoardConfig.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#if CONFIG_HAL_BOARD == HAL_BOARD_PX4 || CONFIG_HAL_BOARD == HAL_BOARD_VRBRAIN
|
#if CONFIG_HAL_BOARD == HAL_BOARD_PX4 || CONFIG_HAL_BOARD == HAL_BOARD_VRBRAIN
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
@ -220,3 +222,21 @@ void AP_BoardConfig::init_safety()
|
|||||||
px4_init_safety();
|
px4_init_safety();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
notify user of a fatal startup error related to available sensors.
|
||||||
|
*/
|
||||||
|
void AP_BoardConfig::sensor_config_error(const char *reason)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
to give the user the opportunity to connect to USB we keep
|
||||||
|
repeating the error. The mavlink delay callback is initialised
|
||||||
|
before this, so the user can change parameters (and in
|
||||||
|
particular BRD_TYPE if needed)
|
||||||
|
*/
|
||||||
|
while (true) {
|
||||||
|
printf("Sensor failure: %s\n", reason);
|
||||||
|
GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_ERROR, "Check BRD_TYPE: %s", reason);
|
||||||
|
hal.scheduler->delay(3000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -42,10 +42,12 @@ public:
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// notify user of a fatal startup error related to available sensors.
|
||||||
|
static void sensor_config_error(const char *reason);
|
||||||
|
|
||||||
#if CONFIG_HAL_BOARD == HAL_BOARD_PX4 || CONFIG_HAL_BOARD == HAL_BOARD_VRBRAIN
|
#if CONFIG_HAL_BOARD == HAL_BOARD_PX4 || CONFIG_HAL_BOARD == HAL_BOARD_VRBRAIN
|
||||||
// public method to start a driver
|
// public method to start a driver
|
||||||
static bool px4_start_driver(main_fn_t main_function, const char *name, const char *arguments);
|
static bool px4_start_driver(main_fn_t main_function, const char *name, const char *arguments);
|
||||||
static void px4_sensor_error(const char *reason);
|
|
||||||
|
|
||||||
// valid types for BRD_TYPE: these values need to be in sync with the
|
// valid types for BRD_TYPE: these values need to be in sync with the
|
||||||
// values from the param description
|
// values from the param description
|
||||||
|
@ -20,7 +20,6 @@
|
|||||||
#include "AP_BoardConfig.h"
|
#include "AP_BoardConfig.h"
|
||||||
|
|
||||||
#if CONFIG_HAL_BOARD == HAL_BOARD_PX4 || CONFIG_HAL_BOARD == HAL_BOARD_VRBRAIN
|
#if CONFIG_HAL_BOARD == HAL_BOARD_PX4 || CONFIG_HAL_BOARD == HAL_BOARD_VRBRAIN
|
||||||
#include <GCS_MAVLink/GCS.h>
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
@ -316,7 +315,7 @@ void AP_BoardConfig::px4_setup_drivers(void)
|
|||||||
case PX4_BOARD_AEROFC:
|
case PX4_BOARD_AEROFC:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
px4_sensor_error("Unknown board type");
|
sensor_config_error("Unknown board type");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -352,7 +351,7 @@ void AP_BoardConfig::px4_setup_px4io(void)
|
|||||||
if (px4_start_driver(px4io_main, "px4io", "start norc")) {
|
if (px4_start_driver(px4io_main, "px4io", "start norc")) {
|
||||||
printf("px4io started OK\n");
|
printf("px4io started OK\n");
|
||||||
} else {
|
} else {
|
||||||
px4_sensor_error("px4io start failed");
|
sensor_config_error("px4io start failed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -378,7 +377,7 @@ void AP_BoardConfig::px4_setup_px4io(void)
|
|||||||
px4_tone_alarm("MSPAA");
|
px4_tone_alarm("MSPAA");
|
||||||
} else {
|
} else {
|
||||||
px4_tone_alarm("MNGGG");
|
px4_tone_alarm("MNGGG");
|
||||||
px4_sensor_error("PX4IO restart failed");
|
sensor_config_error("PX4IO restart failed");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
printf("PX4IO update failed\n");
|
printf("PX4IO update failed\n");
|
||||||
@ -397,7 +396,7 @@ void AP_BoardConfig::px4_setup_peripherals(void)
|
|||||||
hal.analogin->init();
|
hal.analogin->init();
|
||||||
printf("ADC started OK\n");
|
printf("ADC started OK\n");
|
||||||
} else {
|
} else {
|
||||||
px4_sensor_error("no ADC found");
|
sensor_config_error("no ADC found");
|
||||||
}
|
}
|
||||||
|
|
||||||
#if HAL_PX4_HAVE_PX4IO
|
#if HAL_PX4_HAVE_PX4IO
|
||||||
@ -416,7 +415,7 @@ void AP_BoardConfig::px4_setup_peripherals(void)
|
|||||||
if (px4_start_driver(fmu_main, "fmu", fmu_mode)) {
|
if (px4_start_driver(fmu_main, "fmu", fmu_mode)) {
|
||||||
printf("fmu %s started OK\n", fmu_mode);
|
printf("fmu %s started OK\n", fmu_mode);
|
||||||
} else {
|
} else {
|
||||||
px4_sensor_error("fmu start failed");
|
sensor_config_error("fmu start failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
hal.gpio->init();
|
hal.gpio->init();
|
||||||
@ -493,7 +492,7 @@ void AP_BoardConfig::px4_autodetect(void)
|
|||||||
px4.board_type.set(PX4_BOARD_PIXHAWK);
|
px4.board_type.set(PX4_BOARD_PIXHAWK);
|
||||||
hal.console->printf("Detected Pixhawk\n");
|
hal.console->printf("Detected Pixhawk\n");
|
||||||
} else {
|
} else {
|
||||||
px4_sensor_error("Unable to detect board type");
|
sensor_config_error("Unable to detect board type");
|
||||||
}
|
}
|
||||||
#elif defined(CONFIG_ARCH_BOARD_PX4FMU_V4)
|
#elif defined(CONFIG_ARCH_BOARD_PX4FMU_V4)
|
||||||
// only one choice
|
// only one choice
|
||||||
@ -506,24 +505,6 @@ void AP_BoardConfig::px4_autodetect(void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
fail startup of a required sensor
|
|
||||||
*/
|
|
||||||
void AP_BoardConfig::px4_sensor_error(const char *reason)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
to give the user the opportunity to connect to USB we keep
|
|
||||||
repeating the error. The mavlink delay callback is initialised
|
|
||||||
before this, so the user can change parameters (and in
|
|
||||||
particular BRD_TYPE if needed)
|
|
||||||
*/
|
|
||||||
while (true) {
|
|
||||||
printf("Sensor failure: %s\n", reason);
|
|
||||||
GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_ERROR, "Check BRD_TYPE: %s", reason);
|
|
||||||
hal.scheduler->delay(3000);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
setup px4 peripherals and drivers
|
setup px4 peripherals and drivers
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user