# 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: 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 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: output_groups: type: list minlength: 1 schema: type: dict schema: 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\}|\$\{PWM_MAIN_OR_HIL\})' required: true channel_label: # Human-readable per-channel label (index will be added), e.g. 'PWM Main' type: string 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 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 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 failsafe: type: dict schema: min: # Minimum failsafe value type: integer min: 0 max: 65536 max: # Maximum failsafe value type: integer min: 0 max: 65536 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 pwm_timer_param: # Only used for 'pwm' generator, per-timer config param type: dict schema: *parameter_definition