# 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 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