rc_input: add RC_PORT_CONFIG param to configure RC port

The parameter will only be available if the board defines an 'RC' serial
port in SERIAL_PORTS (in default.cmake).
This commit is contained in:
Beat Küng 2019-07-05 14:13:58 +02:00
parent b7a0e1ef03
commit 5fe4c61b42
6 changed files with 51 additions and 6 deletions

View File

@ -52,6 +52,7 @@ set PWM_MAX p:PWM_MAX
set PWM_MIN p:PWM_MIN set PWM_MIN p:PWM_MIN
set PWM_OUT none set PWM_OUT none
set PWM_RATE p:PWM_RATE set PWM_RATE p:PWM_RATE
set RC_INPUT_ARGS ""
set SDCARD_MIXERS_PATH /fs/microsd/etc/mixers set SDCARD_MIXERS_PATH /fs/microsd/etc/mixers
set USE_IO no set USE_IO no
set VEHICLE_TYPE none set VEHICLE_TYPE none
@ -318,11 +319,6 @@ else
tune_control play -t 2 tune_control play -t 2
fi fi
if [ $IO_PRESENT = no -o $USE_IO = no ]
then
rc_input start
fi
# #
# Sensors System (start before Commander so Preflight checks are properly run). # Sensors System (start before Commander so Preflight checks are properly run).
# Commander needs to be this early for in-air-restarts. # Commander needs to be this early for in-air-restarts.
@ -418,6 +414,12 @@ else
# #
sh /etc/init.d/rc.serial sh /etc/init.d/rc.serial
if [ $IO_PRESENT = no -o $USE_IO = no ]
then
# Must be started after the serial config is read
rc_input start $RC_INPUT_ARGS
fi
# #
# Configure vehicle type specific parameters. # Configure vehicle type specific parameters.
# Note: rc.vehicle_setup is the entry point for rc.interface, # Note: rc.vehicle_setup is the entry point for rc.interface,
@ -546,6 +548,7 @@ unset PWM_MAX
unset PWM_MIN unset PWM_MIN
unset PWM_OUT unset PWM_OUT
unset PWM_RATE unset PWM_RATE
unset RC_INPUT_ARGS
unset SDCARD_MIXERS_PATH unset SDCARD_MIXERS_PATH
unset USE_IO unset USE_IO
unset VEHICLE_TYPE unset VEHICLE_TYPE

View File

@ -108,6 +108,13 @@ serial_ports = {
"default_baudrate": 0, "default_baudrate": 0,
}, },
# RC Port
"RC": {
"label": "Radio Controller",
"index": 300,
"default_baudrate": 0,
},
} }
parser = argparse.ArgumentParser(description='Generate Serial params & startup script') parser = argparse.ArgumentParser(description='Generate Serial params & startup script')
@ -280,6 +287,15 @@ for serial_command in serial_commands:
for i in range(num_instances): for i in range(num_instances):
port_config = serial_command['port_config_param'] port_config = serial_command['port_config_param']
port_param_name = port_config['name'].replace('${i}', str(i)) port_param_name = port_config['name'].replace('${i}', str(i))
# check if a port dependency is specified
if 'depends_on_port' in port_config:
depends_on_port = port_config['depends_on_port']
if not any(p['tag'] == depends_on_port for p in serial_devices):
if verbose:
print("Skipping {:} (missing dependent port)".format(port_param_name))
continue
default_port = 0 # disabled default_port = 0 # disabled
if 'default' in port_config: if 'default' in port_config:
if type(port_config['default']) == list: if type(port_config['default']) == list:
@ -299,7 +315,8 @@ for serial_command in serial_commands:
'multi_instance': num_instances > 1, 'multi_instance': num_instances > 1,
'port_param_name': port_param_name, 'port_param_name': port_param_name,
'default_port': default_port, 'default_port': default_port,
'param_group': port_config['group'] 'param_group': port_config['group'],
'description_extended': port_config.get('description_extended', '')
}) })
if verbose: if verbose:

View File

@ -52,6 +52,8 @@ PARAM_DEFINE_INT32(SER_{{ serial_device.tag }}_BAUD, {{ serial_device.default_ba
* *
* Configure on which serial port to run {{ command.label }}. * Configure on which serial port to run {{ command.label }}.
* *
* {{ command.description_extended | replace("\n", " ") }}
*
* @value 0 Disabled * @value 0 Disabled
{% for serial_device in serial_devices -%} {% for serial_device in serial_devices -%}
* @value {{ serial_device.index }} {{ serial_device.label }} * @value {{ serial_device.index }} {{ serial_device.label }}

View File

@ -38,6 +38,8 @@ px4_add_module(
SRCS SRCS
RCInput.cpp RCInput.cpp
crsf_telemetry.cpp crsf_telemetry.cpp
MODULE_CONFIG
module.yaml
DEPENDS DEPENDS
rc rc
) )

View File

@ -0,0 +1,12 @@
module_name: RC Input Driver
serial_config:
- command: set RC_INPUT_ARGS "-d ${SERIAL_DEV}"
port_config_param:
name: RC_PORT_CONFIG
group: Serial
default: RC
depends_on_port: RC
description_extended: |
Setting this to 'Disabled' will use a board-specific default port
for RC input.

View File

@ -54,6 +54,15 @@ serial_config:
minlength: 1 minlength: 1
schema: schema:
type: string 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: label:
# Optional command label (e.g. used in the autostart script). # Optional command label (e.g. used in the autostart script).
# If omitted, module_name is used. # If omitted, module_name is used.