aboutsummaryrefslogtreecommitdiff
path: root/apps/drivers/px4io/px4io.cpp
diff options
context:
space:
mode:
authorpx4dev <px4@purgatory.org>2012-11-29 00:35:21 -0800
committerpx4dev <px4@purgatory.org>2012-11-29 00:35:21 -0800
commitd0efd1a419497ec2fadb7b516cd2f9cc5a09ca5d (patch)
tree306580e8d7665608915cfb3d7ffb9e75dd0119c4 /apps/drivers/px4io/px4io.cpp
parent3321ca08886fe1030c82094254586c31fcb07b32 (diff)
downloadpx4-firmware-d0efd1a419497ec2fadb7b516cd2f9cc5a09ca5d.tar.gz
px4-firmware-d0efd1a419497ec2fadb7b516cd2f9cc5a09ca5d.tar.bz2
px4-firmware-d0efd1a419497ec2fadb7b516cd2f9cc5a09ca5d.zip
Fix the DSM (spektrum) protocol decoder, and add some format auto-detection to it.
Diffstat (limited to 'apps/drivers/px4io/px4io.cpp')
-rw-r--r--apps/drivers/px4io/px4io.cpp30
1 files changed, 18 insertions, 12 deletions
diff --git a/apps/drivers/px4io/px4io.cpp b/apps/drivers/px4io/px4io.cpp
index f2c87473c..11f2f6f68 100644
--- a/apps/drivers/px4io/px4io.cpp
+++ b/apps/drivers/px4io/px4io.cpp
@@ -637,10 +637,12 @@ PX4IO::ioctl(file *filep, int cmd, unsigned long arg)
void
PX4IO::set_rx_mode(unsigned mode)
{
- if (mode != _rx_mode) {
- _rx_mode = mode;
- _config_needed = true;
- }
+ /*
+ * Always (re)set the rx mode; makes testing
+ * easier after PX4IO has been restarted.
+ */
+ _rx_mode = mode;
+ _config_needed = true;
}
extern "C" __EXPORT int px4io_main(int argc, char *argv[]);
@@ -744,25 +746,29 @@ px4io_main(int argc, char *argv[])
return ret;
}
- if (!strcmp(argv[1], "rx_dsm_10bit")) {
+ if (!strcmp(argv[1], "rx_dsm") ||
+ !strcmp(argv[1], "rx_dsm_10bit") ||
+ !strcmp(argv[1], "rx_dsm_11bit")) {
if (g_dev == nullptr)
errx(1, "not started");
- g_dev->set_rx_mode(RX_MODE_DSM_10BIT);
+ g_dev->set_rx_mode(RX_MODE_DSM);
+ exit(0);
}
- if (!strcmp(argv[1], "rx_dsm_11bit")) {
+ if (!strcmp(argv[1], "rx_sbus")) {
if (g_dev == nullptr)
errx(1, "not started");
- g_dev->set_rx_mode(RX_MODE_DSM_11BIT);
+ g_dev->set_rx_mode(RX_MODE_FUTABA_SBUS);
+ exit(0);
}
- if (!strcmp(argv[1], "rx_sbus")) {
+ if (!strcmp(argv[1], "rx_ppm")) {
if (g_dev == nullptr)
errx(1, "not started");
- g_dev->set_rx_mode(RX_MODE_FUTABA_SBUS);
+ g_dev->set_rx_mode(RX_MODE_PPM_ONLY);
+ exit(0);
}
if (!strcmp(argv[1], "test"))
test();
-
- errx(1, "need a command, try 'start', 'test', 'rx_dsm_10bit', 'rx_dsm_11bit', 'rx_sbus' or 'update'");
+ errx(1, "need a command, try 'start', 'test', 'rx_ppm', 'rx_dsm', 'rx_sbus' or 'update'");
}