module_schema.yaml
9.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
# 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:
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
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
requires_ethernet:
# param is only added if the board has ethernet
# support
type: boolean