You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
571 lines
26 KiB
571 lines
26 KiB
# Cerberus Validation Schema for module configuration files. |
|
# See http://docs.python-cerberus.org/en/stable/validation-rules.html |
|
|
|
|
|
module_name: |
|
# human-readable module name (used for descriptions, can contain spaces) |
|
type: string |
|
required: true |
|
|
|
serial_config: |
|
# UART configuration (optional) |
|
# A module can register autostart command(s) that are associated with a |
|
# configuration parameter, so that a user can select on which serial port to |
|
# run the command. |
|
# One or several commands can be defined. |
|
type: list |
|
minlength: 1 |
|
schema: |
|
type: dict |
|
schema: |
|
command: |
|
# script command that is executed on autostart. |
|
# These variables can be used: |
|
# ${SERIAL_DEV} Serial device (e.g. /dev/ttyS1) |
|
# ${BAUD_PARAM} param name for the baudrate |
|
# ${i} instance in [0, N-1] (for multi-instance commands) |
|
# It's possible to use multiple lines. |
|
type: string |
|
required: true |
|
|
|
port_config_param: |
|
# Parameter definition to configure on which port to run the |
|
# command |
|
type: dict |
|
required: true |
|
schema: |
|
name: |
|
# Parameter name (e.g. TEL_FRSKY_CONFIG, MAV_${i}_CONFIG) |
|
type: string |
|
regex: '[0-9A-Z_]+(\$\{i\}[0-9A-Z_]*)?_(CONFIG|CFG)' |
|
required: true |
|
group: |
|
# Associated parameter group (e.g. GPS) |
|
type: string |
|
required: true |
|
default: |
|
# Default value(s). This can be a string to specify the |
|
# serial tag (e.g. GPS1, TEL1, ...) or a list of strings |
|
# for multiple instances. |
|
# If omitted, the command is disabled by default. |
|
anyof: |
|
- type: string |
|
- type: list |
|
minlength: 1 |
|
schema: |
|
type: string |
|
depends_on_port: |
|
# Optional serial tag dependency (e.g. GPS1). If a board |
|
# does not specify this serial port, the parameter will |
|
# not be included in the build (i.e. it's not |
|
# configurable) |
|
type: string |
|
description_extended: |
|
# Optional extended description |
|
type: string |
|
label: |
|
# Optional command label (e.g. used in the autostart script). |
|
# If omitted, module_name is used. |
|
type: string |
|
num_instances: |
|
# Allow to configure and run multiple instances of a command. |
|
# For multiple instances, '${i}' can be used to refer to |
|
# an instance, for example in the parameter name or script |
|
# command. |
|
# Default: 1 |
|
type: integer |
|
min: 1 |
|
supports_networking: |
|
# set to true if the module supports networking (UDP) |
|
type: boolean |
|
|
|
|
|
parameters: |
|
# Parameter definitions. |
|
# This is a list of parameter groups, where each group has one or more |
|
# parameter definitions. |
|
type: list |
|
minlength: 1 |
|
schema: |
|
type: dict |
|
schema: |
|
group: |
|
# Parameter group (should be short) |
|
# This applies to all parameters in the definitions dictionary |
|
type: string |
|
required: true |
|
definitions: |
|
type: dict |
|
keyschema: |
|
# Parameter name |
|
type: string |
|
regex: '[0-9A-Z_]+(\$\{i\}[0-9A-Z_]*)?' |
|
valueschema: |
|
type: dict # This can also be a list containing multiple definitions |
|
# (for multi-instance params with different instance_start) |
|
# Not currently used in any yaml config file. |
|
schema: ¶meter_definition |
|
description: |
|
type: dict |
|
required: true |
|
schema: |
|
short: |
|
# Short description (one line) |
|
type: string |
|
required: true |
|
maxlength: 70 |
|
regex: '[^\n]+' |
|
long: |
|
# Long description (can be multiple lines) |
|
type: string |
|
required: false |
|
|
|
type: |
|
# Define the parameter type |
|
required: true |
|
type: string |
|
allowed: ['int32', 'float', 'boolean', 'enum', 'bitmask' ] |
|
min: |
|
# Optional minimum value (only for int32 or float) |
|
type: number |
|
max: |
|
# Optional maximum value (only for int32 or float) |
|
type: number |
|
decimal: |
|
# Optional number of decimal places to display (only for float) |
|
type: number |
|
increment: |
|
# Optional increment step size (for a GCS) (only for float) |
|
type: number |
|
unit: |
|
# Optional parameter unit (only for int32 or float) |
|
# (Extend this list as needed) |
|
type: string |
|
allowed: [ |
|
'%', 'Hz', 'mAh', |
|
'rad', '%/rad', 'rad/s', 'rad/s^2', '%/rad/s', 'rad s^2/m','rad s/m', |
|
'bit/s', 'B/s', |
|
'deg', 'deg*1e7', 'deg/s', |
|
'celcius', 'gauss', 'gauss/s', 'mgauss', 'mgauss^2', |
|
'hPa', 'kg', 'kg/m^2', 'kg m^2', |
|
'mm', 'm', 'm/s', 'm^2', 'm/s^2', 'm/s^3', 'm/s^2/sqrt(Hz)', 'm/s/rad', |
|
'Ohm', 'V', |
|
'us', 'ms', 's', |
|
'S', 'A/%', '(m/s^2)^2', 'm/m', 'tan(rad)^2', '(m/s)^2', 'm/rad', |
|
'm/s^3/sqrt(Hz)', 'm/s/sqrt(Hz)', 's/(1000*PWM)', '%m/s', 'min', 'us/C', |
|
'N/(m/s)', 'Nm/(rad/s)', 'Nm', 'N', |
|
'normalized_thrust/s', 'normalized_thrust', 'norm', 'SD'] |
|
bit: |
|
# description of all bits for type bitmask. |
|
# The first bit is 0. |
|
type: dict |
|
keyschema: |
|
type: integer |
|
valueschema: |
|
type: string |
|
|
|
values: |
|
# enumeration of possible values for type enum |
|
type: dict |
|
keyschema: |
|
type: integer |
|
valueschema: |
|
type: string |
|
|
|
default: |
|
# Default value(s). This is an integer or a float, |
|
# or a list of values for multiple instances. |
|
required: true |
|
anyof: |
|
- type: boolean |
|
- type: number |
|
- type: list |
|
minlength: 1 |
|
schema: |
|
anyof: |
|
- type: boolean |
|
- type: number |
|
- type: list |
|
|
|
category: |
|
# Optional parameter category |
|
type: string |
|
allowed: [ 'Developer', 'System' ] |
|
volatile: |
|
# Optional volatile flag. Set to true if the |
|
# parameter can be changed by the system |
|
# automatially |
|
type: boolean |
|
reboot_required: |
|
# set to true, if changing of the parameter requires |
|
# a reboot to take effect |
|
type: boolean |
|
num_instances: |
|
# Optional number of instances. |
|
# For multiple instances, '${i}' can be used to |
|
# refer to an instance, for example in the parameter |
|
# name or description. |
|
# Default: 1 |
|
type: integer |
|
min: 1 |
|
instance_start: |
|
# The value of the first instance for multiple |
|
# instances, used in '${i}'. If 0, ${i} expands to |
|
# [0, N-1] |
|
# Default: 0 |
|
type: integer |
|
instance_start_label: |
|
# Allows to use a different instance start for |
|
# labels vs parameter name. |
|
# Default: equal to 'instance_start' |
|
type: integer |
|
requires_ethernet: |
|
# param is only added if the board has ethernet |
|
# support |
|
type: boolean |
|
|
|
# Configuration for output drivers |
|
actuator_output: |
|
type: dict |
|
schema: |
|
show_subgroups_if: |
|
# condition: ui only shows the groups if this condition is true |
|
# (e.g. 'UAVCAN_ENABLE>=3') |
|
type: string |
|
regex: &condition_regex "^(true|false|[\\.\\-a-zA-Z0-9_]{1,16}(>|>=|==|!=|<|<=)\\-?\\d+)$" |
|
|
|
config_parameters: |
|
# list of configuration parameters that apply to the whole module |
|
type: list |
|
minlength: 1 |
|
schema: |
|
type: dict |
|
schema: |
|
param: |
|
# parameter name |
|
type: string |
|
required: true |
|
label: |
|
# human-readable label |
|
type: string |
|
function: |
|
type: string |
|
allowed: [ enable ] |
|
output_groups: |
|
type: list |
|
minlength: 1 |
|
schema: |
|
type: dict |
|
schema: |
|
group_label: |
|
# Human-readable group label, e.g. 'ESCs' |
|
type: string |
|
generator: |
|
# Optional generator that uses additional information for |
|
# param generation (e.g. board-specific config) |
|
type: string |
|
allowed: [ pwm ] |
|
param_prefix: |
|
# parameter prefix for the min/max/disarmed/func params, e.g. PWM_MAIN. |
|
# This also needs to be specified in the source code. |
|
type: string |
|
regex: '([0-9A-Z_]+|\$\{PWM_MAIN_OR_AUX\})' |
|
required: true |
|
channel_label: |
|
# Human-readable per-channel label (index will be added), e.g. 'PWM Main' |
|
type: string |
|
channel_label_module_name_prefix: |
|
# by default, the module_name is prefixed to the |
|
# channel_label as part of the param description. Set |
|
# this to false to turn it off |
|
type: boolean |
|
num_channels: |
|
# (maximum) number of channels |
|
type: integer |
|
standard_params: |
|
type: dict |
|
schema: |
|
disarmed: |
|
type: dict |
|
schema: |
|
min: |
|
# Minimum disarmed value |
|
type: integer |
|
min: 0 |
|
max: 65536 |
|
max: |
|
# Maximum disarmed value |
|
type: integer |
|
min: 0 |
|
max: 65536 |
|
default: |
|
# Default disarmed value |
|
type: integer |
|
min: 0 |
|
max: 65536 |
|
show_if: |
|
# ui only shows the param if this condition is true |
|
type: string |
|
regex: *condition_regex |
|
min: |
|
type: dict |
|
schema: |
|
min: |
|
# Minimum minimum value |
|
type: integer |
|
min: 0 |
|
max: 65536 |
|
max: |
|
# Maximum minimum value |
|
type: integer |
|
min: 0 |
|
max: 65536 |
|
default: |
|
# Default minimum value |
|
type: integer |
|
min: 0 |
|
max: 65536 |
|
show_if: |
|
# ui only shows the param if this condition is true |
|
type: string |
|
regex: *condition_regex |
|
max: |
|
type: dict |
|
schema: |
|
min: |
|
# Minimum maximum value |
|
type: integer |
|
min: 0 |
|
max: 65536 |
|
max: |
|
# Maximum maximum value |
|
type: integer |
|
min: 0 |
|
max: 65536 |
|
default: |
|
# Default maximum value |
|
type: integer |
|
min: 0 |
|
max: 65536 |
|
show_if: |
|
# ui only shows the param if this condition is true |
|
type: string |
|
regex: *condition_regex |
|
failsafe: |
|
type: dict |
|
schema: |
|
min: |
|
# Minimum failsafe value |
|
type: integer |
|
min: 0 |
|
max: 65536 |
|
max: |
|
# Maximum failsafe value |
|
type: integer |
|
min: 0 |
|
max: 65536 |
|
show_if: |
|
# ui only shows the param if this condition is true |
|
type: string |
|
regex: *condition_regex |
|
extra_function_groups: |
|
# Additional function groups to add, defined in output_functions.yaml |
|
type: list |
|
schema: |
|
type: string |
|
channel_labels: |
|
# Only used for 'pwm' generator, specifies PWM and Capture pins |
|
type: list |
|
minlength: 2 |
|
maxlength: 2 |
|
schema: |
|
type: string |
|
timer_config_file: |
|
# Only used for 'pwm' generator, specifies |
|
# board-specific timer_config.cpp file |
|
type: string |
|
pwm_timer_param: |
|
# Only used for 'pwm' generator, per-timer config param |
|
type: dict |
|
schema: *parameter_definition |
|
config_parameters: |
|
# list of configuration parameters that apply to the |
|
# group |
|
type: list |
|
minlength: 1 |
|
schema: |
|
type: dict |
|
schema: |
|
param: |
|
# parameter name |
|
type: string |
|
required: true |
|
label: |
|
# human-readable label |
|
type: string |
|
function: |
|
type: string |
|
allowed: [ primary ] |
|
instance_start: |
|
# The value of the first channel instance for multiple |
|
# instances, used in '${i}'. If 0, ${i} expands to |
|
# [0, N-1] |
|
# Default: 1 |
|
type: integer |
|
instance_start_label: |
|
# Allows to use a different instance start for |
|
# labels vs parameter name. |
|
# Default: equal to 'instance_start' |
|
type: integer |
|
|
|
supported_actions: |
|
# set of actuator actions supported by the driver |
|
type: dict |
|
keyschema: |
|
# action name |
|
type: string |
|
regex: "^(beep|3d_mode_on|3d_mode_off|set_spin_direction1|set_spin_direction2)$" |
|
valueschema: |
|
type: dict |
|
schema: |
|
supported_if: |
|
type: string |
|
regex: *condition_regex |
|
actuator_types: |
|
type: list |
|
minlength: 1 |
|
schema: |
|
type: string |
|
|
|
# Mixer (only set in control_allocator) |
|
mixer: |
|
type: dict |
|
schema: |
|
actuator_types: |
|
type: dict |
|
keyschema: |
|
# actuator type name |
|
type: string |
|
valueschema: |
|
type: dict |
|
schema: |
|
functions: |
|
# Which output functions this maps to. Must be a name from |
|
# output_functions.yaml |
|
type: string |
|
actuator_testing_values: |
|
type: dict |
|
schema: |
|
min: |
|
type: number |
|
min: -1 |
|
max: 1 |
|
required: true |
|
max: |
|
type: number |
|
min: -1 |
|
max: 1 |
|
required: true |
|
default: |
|
type: number |
|
min: -1 |
|
max: 1 |
|
default_is_nan: |
|
type: boolean |
|
required: true |
|
per_item_parameters: |
|
type: list |
|
minlength: 1 |
|
schema: &mixer_parameter |
|
type: dict |
|
schema: |
|
label: |
|
type: string |
|
name: |
|
# param name |
|
type: string |
|
required: true |
|
show_as: |
|
type: string |
|
allowed: [ 'bitset', 'true-if-positive' ] |
|
show_if: |
|
# condition |
|
type: string |
|
regex: *condition_regex |
|
index_offset: |
|
type: integer |
|
advanced: |
|
type: integer |
|
function: |
|
type: string |
|
config: |
|
# Airframe types |
|
type: dict |
|
schema: |
|
param: |
|
# param name to configure the airframe type |
|
type: string |
|
types: |
|
type: dict |
|
keyschema: |
|
# parameter value to select the airframe |
|
type: integer |
|
valueschema: |
|
type: dict |
|
schema: |
|
type: |
|
# geometry type (used for rendering a geometry, and |
|
# show type-specific functionality) |
|
type: string |
|
allowed: [ multirotor ] |
|
actuators: |
|
type: list |
|
minlength: 1 |
|
schema: |
|
type: dict |
|
schema: |
|
actuator_type: |
|
type: string |
|
count: |
|
# param name or fixed count |
|
oneof: |
|
- type: string |
|
- type: integer |
|
parameters: |
|
type: list |
|
minlength: 1 |
|
schema: *mixer_parameter |
|
per_item_parameters: |
|
type: dict |
|
schema: |
|
standard: |
|
type: dict |
|
schema: |
|
position: |
|
type: list |
|
minlength: 3 |
|
maxlength: 3 |
|
schema: |
|
# position param names |
|
type: string |
|
extra: |
|
type: list |
|
schema: *mixer_parameter |
|
instances: |
|
# non-configurable actuators (fixed positions) |
|
type: list |
|
schema: |
|
type: dict |
|
schema: |
|
name: |
|
type: string |
|
required: true |
|
position: |
|
type: list |
|
required: true |
|
schema: |
|
minlength: 3 |
|
maxlength: 3 |
|
type: number |
|
|
|
|
|
|