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
This commit is contained in:
Daniel Agar 2022-02-09 13:39:02 -05:00
parent 97a75fc388
commit 0b9f60a037
3 changed files with 31 additions and 21 deletions

View File

@ -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'],

View File

@ -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[])
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[])
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

View File

@ -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.