diff --git a/src/lib/systemlib/CMakeLists.txt b/src/lib/systemlib/CMakeLists.txt index 726fa7c074..3e10c5e892 100644 --- a/src/lib/systemlib/CMakeLists.txt +++ b/src/lib/systemlib/CMakeLists.txt @@ -47,4 +47,5 @@ if(${PX4_PLATFORM} STREQUAL "nuttx") endif() px4_add_library(systemlib ${SRCS}) +set_property(GLOBAL APPEND PROPERTY PX4_MODULE_CONFIG_FILES ${CMAKE_CURRENT_SOURCE_DIR}/system_params.yaml) target_compile_options(systemlib PRIVATE ${MAX_CUSTOM_OPT_LEVEL}) diff --git a/src/lib/systemlib/system_params.c b/src/lib/systemlib/system_params.c deleted file mode 100644 index 644e849d9d..0000000000 --- a/src/lib/systemlib/system_params.c +++ /dev/null @@ -1,303 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2013-2017 PX4 Development Team. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name PX4 nor the names of its contributors may be - * used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************/ - -/* - * @file system_params.c - * - * System wide parameters - */ - -/** - * Auto-start script index. - * - * CHANGING THIS VALUE REQUIRES A RESTART. Defines the auto-start script used to bootstrap the system. - * - * @reboot_required true - * @min 0 - * @max 9999999 - * @group System - */ -PARAM_DEFINE_INT32(SYS_AUTOSTART, 0); - -/** - * Automatically configure default values. - * - * Set to 1 to reset parameters on next system startup (setting defaults). - * Platform-specific values are used if available. - * RC* parameters are preserved. - * - * @value 0 Keep parameters - * @value 1 Reset parameters to airframe defaults - * @group System - */ -PARAM_DEFINE_INT32(SYS_AUTOCONFIG, 0); - -/** - * Enable HITL/SIH mode on next boot - * - * While enabled the system will boot in Hardware-In-The-Loop (HITL) - * or Simulation-In-Hardware (SIH) mode and not enable all sensors and checks. - * When disabled the same vehicle can be flown normally. - * - * Set to 'external HITL', if the system should perform as if it were a real - * vehicle (the only difference to a real system is then only the parameter - * value, which can be used for log analysis). - * - * @value -1 external HITL - * @value 0 HITL and SIH disabled - * @value 1 HITL enabled - * @value 2 SIH enabled - * @reboot_required true - * - * @group System - */ -PARAM_DEFINE_INT32(SYS_HITL, 0); - -/** - * Parameter version - * - * This is used internally only: an airframe configuration might set an expected - * parameter version value via PARAM_DEFAULTS_VER. This is checked on bootup - * against SYS_PARAM_VER, and if they do not match, parameters are reset and - * reloaded from the airframe configuration. - * - * @min 0 - * @group System - */ -PARAM_DEFINE_INT32(SYS_PARAM_VER, 1); - -/** - * Enable auto start of rate gyro thermal calibration at the next power up. - * - * 0 : Set to 0 to do nothing - * 1 : Set to 1 to start a calibration at next boot - * This parameter is reset to zero when the temperature calibration starts. - * - * default (0, no calibration) - * - * @group System - * @min 0 - * @max 1 - */ -PARAM_DEFINE_INT32(SYS_CAL_GYRO, 0); - -/** - * Enable auto start of accelerometer thermal calibration at the next power up. - * - * 0 : Set to 0 to do nothing - * 1 : Set to 1 to start a calibration at next boot - * This parameter is reset to zero when the temperature calibration starts. - * - * default (0, no calibration) - * - * @group System - * @min 0 - * @max 1 - */ -PARAM_DEFINE_INT32(SYS_CAL_ACCEL, 0); - -/** - * Enable auto start of barometer thermal calibration at the next power up. - * - * 0 : Set to 0 to do nothing - * 1 : Set to 1 to start a calibration at next boot - * This parameter is reset to zero when the temperature calibration starts. - * - * default (0, no calibration) - * - * @group System - * @min 0 - * @max 1 - */ -PARAM_DEFINE_INT32(SYS_CAL_BARO, 0); - -/** - * Required temperature rise during thermal calibration - * - * A temperature increase greater than this value is required during calibration. - * Calibration will complete for each sensor when the temperature increase above the starting temperature exceeds the value set by SYS_CAL_TDEL. - * If the temperature rise is insufficient, the calibration will continue indefinitely and the board will need to be repowered to exit. - * - * @unit celcius - * @min 10 - * @group System - */ -PARAM_DEFINE_INT32(SYS_CAL_TDEL, 24); - -/** - * Minimum starting temperature for thermal calibration - * - * Temperature calibration for each sensor will ignore data if the temperature is lower than the value set by SYS_CAL_TMIN. - * - * @unit celcius - * @group System - */ -PARAM_DEFINE_INT32(SYS_CAL_TMIN, 5); - -/** - * Maximum starting temperature for thermal calibration - * - * Temperature calibration will not start if the temperature of any sensor is higher than the value set by SYS_CAL_TMAX. - * - * @unit celcius - * @group System - */ -PARAM_DEFINE_INT32(SYS_CAL_TMAX, 10); - -/** - * Control if the vehicle has a GPS - * - * Disable this if the system has no GPS. - * If disabled, the sensors hub will not process sensor_gps, - * and GPS will not be available for the rest of the system. - * - * @boolean - * @reboot_required true - * - * @group System - */ -PARAM_DEFINE_INT32(SYS_HAS_GPS, 1); - -/** - * Control if and how many magnetometers are expected - * - * 0: System has no magnetometer, preflight checks should pass without one. - * 1-N: Require the presence of N magnetometer sensors for check to pass. - * - * @reboot_required true - * @group System - */ -PARAM_DEFINE_INT32(SYS_HAS_MAG, 1); - -/** - * Control if the vehicle has a barometer - * - * Disable this if the board has no barometer, such as some of the Omnibus - * F4 SD variants. - * If disabled, the preflight checks will not check for the presence of a - * barometer. - * - * @boolean - * @reboot_required true - * - * @group System - */ -PARAM_DEFINE_INT32(SYS_HAS_BARO, 1); - -/** - * Control if the vehicle has an airspeed sensor - * - * Set this to 0 if the board has no airspeed sensor. - * If set to 0, the preflight checks will not check for the presence of an - * airspeed sensor. - * - * @group System - * @min 0 - * @max 1 - */ -PARAM_DEFINE_INT32(SYS_HAS_NUM_ASPD, 0); - -/** - * Number of distance sensors to check being available - * - * The preflight check will fail if fewer than this number of distance sensors with valid data is present. - * - * Disable the check with 0. - * - * @group System - * @min 0 - * @max 4 - */ -PARAM_DEFINE_INT32(SYS_HAS_NUM_DIST, 0); - -/** - * Number of optical flow sensors required to be available - * - * The preflight check will fail if fewer than this number of optical flow sensors with valid data are present. - * - * @group System - * @min 0 - * @max 1 - */ - -PARAM_DEFINE_INT32(SYS_HAS_NUM_OF, 0); - -/** - * Enable factory calibration mode - * - * If enabled, future sensor calibrations will be stored to /fs/mtd_caldata. - * - * Note: this is only supported on boards with a separate calibration storage - * /fs/mtd_caldata. - * - * @value 0 Disabled - * @value 1 All sensors - * @value 2 All sensors except mag - * @group System - */ -PARAM_DEFINE_INT32(SYS_FAC_CAL_MODE, 0); - -/** - * Bootloader update - * - * If enabled, update the bootloader on the next boot. - * - * WARNING: do not cut the power during an update process, otherwise you will - * have to recover using some alternative method (e.g. JTAG). - * - * Instructions: - * - Insert an SD card - * - Enable this parameter - * - Reboot the board (plug the power or send a reboot command) - * - Wait until the board comes back up (or at least 2 minutes) - * - If it does not come back, check the file bootlog.txt on the SD card - * - * @boolean - * @reboot_required true - * - * @group System - */ -PARAM_DEFINE_INT32(SYS_BL_UPDATE, 0); - -/** - * Enable failure injection - * - * If enabled allows MAVLink INJECT_FAILURE commands. - * - * WARNING: the failures can easily cause crashes and are to be used with caution! - * - * @boolean - * - * @group System - */ -PARAM_DEFINE_INT32(SYS_FAILURE_EN, 0); diff --git a/src/lib/systemlib/system_params.yaml b/src/lib/systemlib/system_params.yaml new file mode 100644 index 0000000000..ec8b55d8ce --- /dev/null +++ b/src/lib/systemlib/system_params.yaml @@ -0,0 +1,230 @@ +module_name: systemlib +parameters: +- group: System + definitions: + SYS_AUTOSTART: + description: + short: Auto-start script index + long: CHANGING THIS VALUE REQUIRES A RESTART. Defines the auto-start script + used to bootstrap the system. + type: int32 + default: 0 + reboot_required: true + min: 0 + max: 9999999 + SYS_AUTOCONFIG: + description: + short: Automatically configure default values + long: |- + Set to 1 to reset parameters on next system startup (setting defaults). + Platform-specific values are used if available. + RC* parameters are preserved. + type: enum + values: + 0: Keep parameters + 1: Reset parameters to airframe defaults + default: 0 + SYS_HITL: + description: + short: Enable HITL/SIH mode on next boot + long: |- + While enabled the system will boot in Hardware-In-The-Loop (HITL) + or Simulation-In-Hardware (SIH) mode and not enable all sensors and checks. + When disabled the same vehicle can be flown normally. + + Set to 'external HITL', if the system should perform as if it were a real + vehicle (the only difference to a real system is then only the parameter + value, which can be used for log analysis). + type: enum + values: + -1: external HITL + 0: HITL and SIH disabled + 1: HITL enabled + 2: SIH enabled + default: 0 + reboot_required: true + SYS_PARAM_VER: + description: + short: Parameter version + long: |- + This is used internally only: an airframe configuration might set an expected + parameter version value via PARAM_DEFAULTS_VER. This is checked on bootup + against SYS_PARAM_VER, and if they do not match, parameters are reset and + reloaded from the airframe configuration. + type: int32 + default: 1 + min: 0 + SYS_CAL_GYRO: + description: + short: Auto start gyro thermal calibration on next boot + long: |- + Enable auto start of rate gyro thermal calibration at the next power up + + 0 : Set to 0 to do nothing + 1 : Set to 1 to start a calibration at next boot + This parameter is reset to zero when the temperature calibration starts. + + default (0, no calibration) + type: int32 + default: 0 + min: 0 + max: 1 + SYS_CAL_ACCEL: + description: + short: Auto start accel thermal calibration on next boot + long: |- + Enable auto start of accelerometer thermal calibration at the next power up + + 0 : Set to 0 to do nothing + 1 : Set to 1 to start a calibration at next boot + This parameter is reset to zero when the temperature calibration starts. + + default (0, no calibration) + type: int32 + default: 0 + min: 0 + max: 1 + SYS_CAL_BARO: + description: + short: Auto start baro thermal calibration on next boot + long: |- + Enable auto start of barometer thermal calibration at the next power up + + 0 : Set to 0 to do nothing + 1 : Set to 1 to start a calibration at next boot + This parameter is reset to zero when the temperature calibration starts. + + default (0, no calibration) + type: int32 + default: 0 + min: 0 + max: 1 + SYS_CAL_TDEL: + description: + short: Required temperature rise during thermal calibration + long: |- + A temperature increase greater than this value is required during calibration. + Calibration will complete for each sensor when the temperature increase above the starting temperature exceeds the value set by SYS_CAL_TDEL. + If the temperature rise is insufficient, the calibration will continue indefinitely and the board will need to be repowered to exit. + type: int32 + default: 24 + unit: celcius + min: 10 + SYS_CAL_TMIN: + description: + short: Minimum starting temperature for thermal calibration + long: Temperature calibration for each sensor will ignore data if the temperature + is lower than the value set by SYS_CAL_TMIN. + type: int32 + default: 5 + unit: celcius + SYS_CAL_TMAX: + description: + short: Maximum starting temperature for thermal calibration + long: Temperature calibration will not start if the temperature of any sensor + is higher than the value set by SYS_CAL_TMAX. + type: int32 + default: 10 + unit: celcius + SYS_HAS_GPS: + description: + short: Control if the vehicle has a GPS + long: |- + Disable this if the system has no GPS. + If disabled, the sensors hub will not process sensor_gps, + and GPS will not be available for the rest of the system. + type: boolean + default: 1 + reboot_required: true + SYS_HAS_MAG: + description: + short: Control if and how many magnetometers are expected + long: |- + 0: System has no magnetometer, preflight checks should pass without one. + 1-N: Require the presence of N magnetometer sensors for check to pass. + type: int32 + default: 1 + reboot_required: true + SYS_HAS_BARO: + description: + short: Control if the vehicle has a barometer + long: |- + Disable this if the board has no barometer, such as some of the Omnibus + F4 SD variants. + If disabled, the preflight checks will not check for the presence of a + barometer. + type: boolean + default: 1 + reboot_required: true + SYS_HAS_NUM_ASPD: + description: + short: Control if the vehicle has an airspeed sensor + long: |- + Set this to 0 if the board has no airspeed sensor. + If set to 0, the preflight checks will not check for the presence of an + airspeed sensor. + type: int32 + default: 0 + min: 0 + max: 1 + SYS_HAS_NUM_DIST: + description: + short: Number of distance sensors to check being available + long: |- + The preflight check will fail if fewer than this number of distance sensors with valid data is present. + + Disable the check with 0. + type: int32 + default: 0 + min: 0 + max: 4 + SYS_HAS_NUM_OF: + description: + short: Number of optical flow sensors required to be available + long: The preflight check will fail if fewer than this number of optical flow + sensors with valid data are present. + type: int32 + default: 0 + min: 0 + max: 1 + SYS_FAC_CAL_MODE: + description: + short: Enable factory calibration mode + long: |- + If enabled, future sensor calibrations will be stored to /fs/mtd_caldata. + + Note: this is only supported on boards with a separate calibration storage + /fs/mtd_caldata. + type: enum + values: + 0: Disabled + 1: All sensors + 2: All sensors except mag + default: 0 + SYS_BL_UPDATE: + description: + short: Bootloader update + long: |- + If enabled, update the bootloader on the next boot. + + WARNING: do not cut the power during an update process, otherwise you will + have to recover using some alternative method (e.g. JTAG). + + Instructions: + - Insert an SD card + - Enable this parameter + - Reboot the board (plug the power or send a reboot command) + - Wait until the board comes back up (or at least 2 minutes) + - If it does not come back, check the file bootlog.txt on the SD card + type: boolean + default: 0 + reboot_required: true + SYS_FAILURE_EN: + description: + short: Enable failure injection + long: |- + If enabled allows MAVLink INJECT_FAILURE commands. + + WARNING: the failures can easily cause crashes and are to be used with caution! + type: boolean + default: 0