From 49f1540c30764ff9d9075c72af3394f588d6fbbf Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Wed, 12 Sep 2018 09:10:10 -0700 Subject: [PATCH] pwm:Add test mode --- src/systemcmds/pwm/pwm.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/systemcmds/pwm/pwm.cpp b/src/systemcmds/pwm/pwm.cpp index 4978333742..4d695fc081 100644 --- a/src/systemcmds/pwm/pwm.cpp +++ b/src/systemcmds/pwm/pwm.cpp @@ -208,6 +208,7 @@ pwm_main(int argc, char *argv[]) bool oneshot = false; int ch; int ret; + int rv = 1; char *ep; uint32_t set_mask = 0; unsigned group; @@ -679,6 +680,11 @@ pwm_main(int argc, char *argv[]) fds.fd = 0; /* stdin */ fds.events = POLLIN; + if (::ioctl(fd, PWM_SERVO_SET_MODE, PWM_SERVO_ENTER_TEST_MODE) < 0) { + PX4_ERR("Failed to Enter pwm test mode"); + goto err_out_no_test; + } + PX4_INFO("Press CTRL-C or 'c' to abort."); while (1) { @@ -688,7 +694,7 @@ pwm_main(int argc, char *argv[]) if (ret != OK) { PX4_ERR("PWM_SERVO_SET(%d)", i); - return 1; + goto err_out; } } } @@ -709,13 +715,14 @@ pwm_main(int argc, char *argv[]) if (ret != OK) { PX4_ERR("PWM_SERVO_SET(%d)", i); - return 1; + goto err_out; } } } PX4_INFO("User abort\n"); - return 0; + rv = 0; + goto err_out; } } @@ -731,8 +738,15 @@ pwm_main(int argc, char *argv[]) up_pwm_update(); #endif } + rv = 0; +err_out: + if (::ioctl(fd, PWM_SERVO_SET_MODE, PWM_SERVO_EXIT_TEST_MODE) < 0) { + rv = 1; + PX4_ERR("Failed to Exit pwm test mode"); + } - return 0; +err_out_no_test: + return rv; } else if (!strcmp(command, "steps")) {