mavlink_main: use px4_get_parameter_value for baudrate, datarate and mode

This commit is contained in:
Beat Küng
2018-09-25 07:53:29 +02:00
parent a3d9b84b1e
commit ced37fdf30
2 changed files with 54 additions and 26 deletions
+31 -5
View File
@@ -44,6 +44,7 @@
#include <px4_defines.h> #include <px4_defines.h>
#include <px4_getopt.h> #include <px4_getopt.h>
#include <px4_module.h> #include <px4_module.h>
#include <px4_cli.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
@@ -1931,7 +1932,10 @@ Mavlink::task_main(int argc, char *argv[])
while ((ch = px4_getopt(argc, argv, "b:r:d:n:u:o:m:t:c:fwxz", &myoptind, &myoptarg)) != EOF) { while ((ch = px4_getopt(argc, argv, "b:r:d:n:u:o:m:t:c:fwxz", &myoptind, &myoptarg)) != EOF) {
switch (ch) { switch (ch) {
case 'b': case 'b':
_baudrate = strtoul(myoptarg, nullptr, 10); if (px4_get_parameter_value(myoptarg, _baudrate) != 0) {
PX4_ERR("baudrate parsing failed");
err_flag = true;
}
if (_baudrate < 9600 || _baudrate > 3000000) { if (_baudrate < 9600 || _baudrate > 3000000) {
PX4_ERR("invalid baud rate '%s'", myoptarg); PX4_ERR("invalid baud rate '%s'", myoptarg);
@@ -1941,9 +1945,12 @@ Mavlink::task_main(int argc, char *argv[])
break; break;
case 'r': case 'r':
_datarate = strtoul(myoptarg, nullptr, 10); if (px4_get_parameter_value(myoptarg, _datarate) != 0) {
PX4_ERR("datarate parsing failed");
err_flag = true;
}
if (_datarate < 10 || _datarate > MAX_DATA_RATE) { if (_datarate > MAX_DATA_RATE) {
PX4_ERR("invalid data rate '%s'", myoptarg); PX4_ERR("invalid data rate '%s'", myoptarg);
err_flag = true; err_flag = true;
} }
@@ -2038,7 +2045,20 @@ Mavlink::task_main(int argc, char *argv[])
// mavlink_link_termination_allowed = true; // mavlink_link_termination_allowed = true;
// break; // break;
case 'm': case 'm': {
int mode;
if (px4_get_parameter_value(myoptarg, mode) == 0) {
if (mode >= 0 && mode < (int)MAVLINK_MODE_COUNT) {
_mode = (MAVLINK_MODE)mode;
} else {
PX4_ERR("invalid mode");
err_flag = true;
}
} else {
if (strcmp(myoptarg, "custom") == 0) { if (strcmp(myoptarg, "custom") == 0) {
_mode = MAVLINK_MODE_CUSTOM; _mode = MAVLINK_MODE_CUSTOM;
@@ -2064,9 +2084,15 @@ Mavlink::task_main(int argc, char *argv[])
} else if (strcmp(myoptarg, "minimal") == 0) { } else if (strcmp(myoptarg, "minimal") == 0) {
_mode = MAVLINK_MODE_MINIMAL; _mode = MAVLINK_MODE_MINIMAL;
} else {
PX4_ERR("invalid mode");
err_flag = true;
}
} }
break; break;
}
case 'f': case 'f':
_forwarding_on = true; _forwarding_on = true;
@@ -3031,7 +3057,7 @@ $ mavlink stream -u 14556 -s HIGHRES_IMU -r 50
PRINT_MODULE_USAGE_NAME("mavlink", "communication"); PRINT_MODULE_USAGE_NAME("mavlink", "communication");
PRINT_MODULE_USAGE_COMMAND_DESCR("start", "Start a new instance"); PRINT_MODULE_USAGE_COMMAND_DESCR("start", "Start a new instance");
PRINT_MODULE_USAGE_PARAM_STRING('d', "/dev/ttyS1", "<file:dev>", "Select Serial Device", true); PRINT_MODULE_USAGE_PARAM_STRING('d', "/dev/ttyS1", "<file:dev>", "Select Serial Device", true);
PRINT_MODULE_USAGE_PARAM_INT('b', 57600, 9600, 3000000, "Baudrate", true); PRINT_MODULE_USAGE_PARAM_INT('b', 57600, 9600, 3000000, "Baudrate (can also be p:<param_name>)", true);
PRINT_MODULE_USAGE_PARAM_INT('r', 0, 10, 10000000, "Maximum sending data rate in B/s (if 0, use baudrate / 20)", true); PRINT_MODULE_USAGE_PARAM_INT('r', 0, 10, 10000000, "Maximum sending data rate in B/s (if 0, use baudrate / 20)", true);
#if defined(CONFIG_NET) || defined(__PX4_POSIX) #if defined(CONFIG_NET) || defined(__PX4_POSIX)
PRINT_MODULE_USAGE_PARAM_INT('u', 14556, 0, 65536, "Select UDP Network Port (local)", true); PRINT_MODULE_USAGE_PARAM_INT('u', 14556, 0, 65536, "Select UDP Network Port (local)", true);
+3 -1
View File
@@ -180,7 +180,9 @@ public:
MAVLINK_MODE_MAGIC, MAVLINK_MODE_MAGIC,
MAVLINK_MODE_CONFIG, MAVLINK_MODE_CONFIG,
MAVLINK_MODE_IRIDIUM, MAVLINK_MODE_IRIDIUM,
MAVLINK_MODE_MINIMAL MAVLINK_MODE_MINIMAL,
MAVLINK_MODE_COUNT
}; };
enum BROADCAST_MODE { enum BROADCAST_MODE {