aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Gubler <thomasgubler@gmail.com>2013-11-12 19:00:44 +0100
committerThomas Gubler <thomasgubler@gmail.com>2013-11-12 19:00:44 +0100
commit8e92d47de1d29ca3461911483361809697bc236a (patch)
tree167bca74cc89b13f74c93e5795318afb0fb2142b
parentabeccec93e32e5ad9c420434bb009e8c92704046 (diff)
parent22a5ecb4010fe2e8f6b68e0736ad2b6445667054 (diff)
downloadpx4-firmware-8e92d47de1d29ca3461911483361809697bc236a.tar.gz
px4-firmware-8e92d47de1d29ca3461911483361809697bc236a.tar.bz2
px4-firmware-8e92d47de1d29ca3461911483361809697bc236a.zip
Merge remote-tracking branch 'upstream/master' into fw_autoland_att_tecs
-rw-r--r--src/systemcmds/pwm/pwm.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/systemcmds/pwm/pwm.c b/src/systemcmds/pwm/pwm.c
index 09a934400..898c04cd5 100644
--- a/src/systemcmds/pwm/pwm.c
+++ b/src/systemcmds/pwm/pwm.c
@@ -395,6 +395,17 @@ pwm_main(int argc, char *argv[])
if (pwm_value == 0)
usage("no PWM value provided");
+ /* get current servo values */
+ struct pwm_output_values last_spos;
+
+ for (unsigned i = 0; i < servo_count; i++) {
+
+
+ ret = ioctl(fd, PWM_SERVO_GET(i), (unsigned long)&last_spos.values[i]);
+ if (ret != OK)
+ err(1, "PWM_SERVO_GET(%d)", i);
+ }
+
/* perform PWM output */
/* Open console directly to grab CTRL-C signal */
@@ -420,6 +431,14 @@ pwm_main(int argc, char *argv[])
read(0, &c, 1);
if (c == 0x03 || c == 0x63 || c == 'q') {
+ /* reset output to the last value */
+ for (unsigned i = 0; i < servo_count; i++) {
+ if (set_mask & 1<<i) {
+ ret = ioctl(fd, PWM_SERVO_SET(i), last_spos.values[i]);
+ if (ret != OK)
+ err(1, "PWM_SERVO_SET(%d)", i);
+ }
+ }
warnx("User abort\n");
exit(0);
}