Browse Source

drivers/rc_input: always provide RC_PORT_CONFIG parameter

- RC_PORT_CONFIG is disabled by default if the board doesn't have
CONFIG_BOARD_SERIAL_RC set
 - allows user facing custom RC configuration that overrides board
defaults
master
Daniel Agar 3 years ago
parent
commit
0b9f60a037
  1. 4
      Tools/serial/generate_config.py
  2. 25
      src/drivers/rc_input/RCInput.cpp
  3. 1
      src/drivers/rc_input/module.yaml

4
Tools/serial/generate_config.py

@ -268,11 +268,15 @@ for serial_command in serial_commands: @@ -268,11 +268,15 @@ for serial_command in serial_commands:
default_port_str = port_config['default'][i]
else:
default_port_str = port_config['default']
if default_port_str != "":
if default_port_str not in serial_ports:
raise Exception("Default Port {:} not found for {:}".format(default_port_str, serial_command['label']))
if default_port_str in dict(board_ports).keys():
default_port = serial_ports[default_port_str]['index']
commands.append({
'command': serial_command['command'],
'label': serial_command['label'],

25
src/drivers/rc_input/RCInput.cpp

@ -123,15 +123,15 @@ RCInput::task_spawn(int argc, char *argv[]) @@ -123,15 +123,15 @@ RCInput::task_spawn(int argc, char *argv[])
int myoptind = 1;
int ch;
const char *myoptarg = nullptr;
const char *device = nullptr;
const char *device_name = nullptr;
#if defined(RC_SERIAL_PORT)
device = RC_SERIAL_PORT;
device_name = RC_SERIAL_PORT;
#endif // RC_SERIAL_PORT
while ((ch = px4_getopt(argc, argv, "d:", &myoptind, &myoptarg)) != EOF) {
switch (ch) {
case 'd':
device = myoptarg;
device_name = myoptarg;
break;
case '?':
@ -149,12 +149,8 @@ RCInput::task_spawn(int argc, char *argv[]) @@ -149,12 +149,8 @@ RCInput::task_spawn(int argc, char *argv[])
return -1;
}
if (device == nullptr) {
PX4_ERR("valid device required");
return PX4_ERROR;
}
RCInput *instance = new RCInput(device);
if (device_name && (access(device_name, R_OK | W_OK) == 0)) {
RCInput *instance = new RCInput(device_name);
if (instance == nullptr) {
PX4_ERR("alloc failed");
@ -167,6 +163,17 @@ RCInput::task_spawn(int argc, char *argv[]) @@ -167,6 +163,17 @@ RCInput::task_spawn(int argc, char *argv[])
instance->ScheduleOnInterval(_current_update_interval);
return PX4_OK;
} else {
if (device_name) {
PX4_ERR("invalid device (-d) %s", device_name);
} else {
PX4_INFO("valid device required");
}
}
return PX4_ERROR;
}
void

1
src/drivers/rc_input/module.yaml

@ -5,7 +5,6 @@ serial_config: @@ -5,7 +5,6 @@ serial_config:
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.

Loading…
Cancel
Save