Browse Source

Fix user abort behave in test

Now the pwm ouput return to the last value before test (useful and safer when testing ESCs).
sbg
Thiago0B 11 years ago
parent
commit
434de4e949
  1. 19
      src/systemcmds/pwm/pwm.c

19
src/systemcmds/pwm/pwm.c

@ -395,6 +395,17 @@ pwm_main(int argc, char *argv[]) @@ -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[]) @@ -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);
}

Loading…
Cancel
Save