PX4-Autopilot/validation/module_schema.yaml
garfieldG 3cd9b3c2cf Added support in Mavlink Ethernet channel parameters
Mavlink Ethernet channel settings such as udp port, remote port and broadcast mode now can be changed dynamically via parameters.
2021-02-25 08:52:38 -08:00

219 lines
9.7 KiB
YAML

# 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
ethernet:
# Optional command ethernet.
# If omitted, ethernet condiguration value will be omitted.
nullable: True
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:
type: string
regex: '[0-9A-Z_]+(\$\{i\}[0-9A-Z_]*)?'
valueschema:
type: dict
schema:
description:
type: dict
required: true
schema:
short:
# Short description (one line)
type: string
required: true
long:
# Long description (can be multiple lines)
type: string
required: true
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
ethernet:
# Optional command ethernet.
# If specified, parameter will be generated only if board supports Ethernet.
nullable: True