mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-03 06:28:27 -04:00
AP_Airspeed: add global enable parameter
This commit is contained in:
parent
0bb7e8a789
commit
a20c07b745
@ -82,10 +82,19 @@ extern const AP_HAL::HAL &hal;
|
|||||||
|
|
||||||
#define OPTIONS_DEFAULT AP_Airspeed::OptionsMask::ON_FAILURE_AHRS_WIND_MAX_DO_DISABLE | AP_Airspeed::OptionsMask::ON_FAILURE_AHRS_WIND_MAX_RECOVERY_DO_REENABLE | AP_Airspeed::OptionsMask::USE_EKF_CONSISTENCY
|
#define OPTIONS_DEFAULT AP_Airspeed::OptionsMask::ON_FAILURE_AHRS_WIND_MAX_DO_DISABLE | AP_Airspeed::OptionsMask::ON_FAILURE_AHRS_WIND_MAX_RECOVERY_DO_REENABLE | AP_Airspeed::OptionsMask::USE_EKF_CONSISTENCY
|
||||||
|
|
||||||
|
#define ENABLE_PARAMETER !(APM_BUILD_TYPE(APM_BUILD_ArduPlane) || defined(HAL_BUILD_AP_PERIPH))
|
||||||
|
|
||||||
// table of user settable parameters
|
// table of user settable parameters
|
||||||
const AP_Param::GroupInfo AP_Airspeed::var_info[] = {
|
const AP_Param::GroupInfo AP_Airspeed::var_info[] = {
|
||||||
|
|
||||||
|
#if ENABLE_PARAMETER
|
||||||
|
// @Param: _ENABLE
|
||||||
|
// @DisplayName: Airspeed Enable
|
||||||
|
// @Description: Enable airspeed sensor support
|
||||||
|
// @Values: 0:Disable, 1:Enable
|
||||||
|
// @User: Standard
|
||||||
|
AP_GROUPINFO_FLAGS("_ENABLE", 30, AP_Airspeed, _enable, 0, AP_PARAM_FLAG_ENABLE),
|
||||||
|
#endif
|
||||||
// slots 0-9 (and 63) were previously used by params before being refactored into AP_Airspeed_Params
|
// slots 0-9 (and 63) were previously used by params before being refactored into AP_Airspeed_Params
|
||||||
|
|
||||||
// @Param: _TUBE_ORDER
|
// @Param: _TUBE_ORDER
|
||||||
@ -160,6 +169,8 @@ const AP_Param::GroupInfo AP_Airspeed::var_info[] = {
|
|||||||
AP_SUBGROUPINFO(param[1], "2_", 29, AP_Airspeed, AP_Airspeed_Params),
|
AP_SUBGROUPINFO(param[1], "2_", 29, AP_Airspeed, AP_Airspeed_Params),
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// index 30 is used by enable at the top of the table
|
||||||
|
|
||||||
AP_GROUPEND
|
AP_GROUPEND
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -295,6 +306,18 @@ void AP_Airspeed::init()
|
|||||||
|
|
||||||
convert_per_instance();
|
convert_per_instance();
|
||||||
|
|
||||||
|
#if ENABLE_PARAMETER
|
||||||
|
// if either type is set then enable if not manually set
|
||||||
|
if (!_enable.configured() && ((param[0].type.get() != TYPE_NONE) || (param[1].type.get() != TYPE_NONE))) {
|
||||||
|
_enable.set_and_save(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if enabled
|
||||||
|
if (!lib_enabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (sensor[0] != nullptr) {
|
if (sensor[0] != nullptr) {
|
||||||
// already initialised
|
// already initialised
|
||||||
return;
|
return;
|
||||||
@ -466,6 +489,9 @@ bool AP_Airspeed::get_temperature(uint8_t i, float &temperature)
|
|||||||
void AP_Airspeed::calibrate(bool in_startup)
|
void AP_Airspeed::calibrate(bool in_startup)
|
||||||
{
|
{
|
||||||
#ifndef HAL_BUILD_AP_PERIPH
|
#ifndef HAL_BUILD_AP_PERIPH
|
||||||
|
if (!lib_enabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (hal.util->was_watchdog_reset()) {
|
if (hal.util->was_watchdog_reset()) {
|
||||||
GCS_SEND_TEXT(MAV_SEVERITY_INFO,"Airspeed: skipping cal");
|
GCS_SEND_TEXT(MAV_SEVERITY_INFO,"Airspeed: skipping cal");
|
||||||
return;
|
return;
|
||||||
@ -601,6 +627,10 @@ void AP_Airspeed::read(uint8_t i)
|
|||||||
// read all airspeed sensors
|
// read all airspeed sensors
|
||||||
void AP_Airspeed::update()
|
void AP_Airspeed::update()
|
||||||
{
|
{
|
||||||
|
if (!lib_enabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (uint8_t i=0; i<AIRSPEED_MAX_SENSORS; i++) {
|
for (uint8_t i=0; i<AIRSPEED_MAX_SENSORS; i++) {
|
||||||
read(i);
|
read(i);
|
||||||
}
|
}
|
||||||
@ -646,6 +676,9 @@ void AP_Airspeed::update()
|
|||||||
*/
|
*/
|
||||||
void AP_Airspeed::handle_msp(const MSP::msp_airspeed_data_message_t &pkt)
|
void AP_Airspeed::handle_msp(const MSP::msp_airspeed_data_message_t &pkt)
|
||||||
{
|
{
|
||||||
|
if (!lib_enabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (pkt.instance > 1) {
|
if (pkt.instance > 1) {
|
||||||
return; //supporting 2 airspeed sensors at most
|
return; //supporting 2 airspeed sensors at most
|
||||||
@ -720,6 +753,9 @@ void AP_Airspeed::Log_Airspeed()
|
|||||||
bool AP_Airspeed::use(uint8_t i) const
|
bool AP_Airspeed::use(uint8_t i) const
|
||||||
{
|
{
|
||||||
#ifndef HAL_BUILD_AP_PERIPH
|
#ifndef HAL_BUILD_AP_PERIPH
|
||||||
|
if (!lib_enabled()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if (_force_disable_use) {
|
if (_force_disable_use) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -751,8 +787,18 @@ bool AP_Airspeed::all_healthy(void) const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AP_Airspeed::lib_enabled() const {
|
||||||
|
#if ENABLE_PARAMETER
|
||||||
|
return _enable > 0;
|
||||||
|
#endif
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// return true if airspeed is enabled
|
// return true if airspeed is enabled
|
||||||
bool AP_Airspeed::enabled(uint8_t i) const {
|
bool AP_Airspeed::enabled(uint8_t i) const {
|
||||||
|
if (!lib_enabled()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if (i < AIRSPEED_MAX_SENSORS) {
|
if (i < AIRSPEED_MAX_SENSORS) {
|
||||||
return param[i].type.get() != TYPE_NONE;
|
return param[i].type.get() != TYPE_NONE;
|
||||||
}
|
}
|
||||||
|
@ -204,6 +204,9 @@ public:
|
|||||||
private:
|
private:
|
||||||
static AP_Airspeed *_singleton;
|
static AP_Airspeed *_singleton;
|
||||||
|
|
||||||
|
AP_Int8 _enable;
|
||||||
|
bool lib_enabled() const;
|
||||||
|
|
||||||
AP_Int8 primary_sensor;
|
AP_Int8 primary_sensor;
|
||||||
AP_Int8 max_speed_pcnt;
|
AP_Int8 max_speed_pcnt;
|
||||||
AP_Int32 _options; // bitmask options for airspeed
|
AP_Int32 _options; // bitmask options for airspeed
|
||||||
|
Loading…
Reference in New Issue
Block a user