aboutsummaryrefslogtreecommitdiff
path: root/apps/drivers
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2013-01-06 06:29:28 +1100
committerAndrew Tridgell <tridge@samba.org>2013-01-06 06:29:28 +1100
commit219ab05a707d8f2795dc91f5884a42f20dd6a640 (patch)
tree06cbc29edd9196a9e0dacea77884a38d5fe83a38 /apps/drivers
parent920608bf3671662f94b4939ffdaf6fde2b08edff (diff)
downloadpx4-firmware-219ab05a707d8f2795dc91f5884a42f20dd6a640.tar.gz
px4-firmware-219ab05a707d8f2795dc91f5884a42f20dd6a640.tar.bz2
px4-firmware-219ab05a707d8f2795dc91f5884a42f20dd6a640.zip
added PWM_SERVO_SET_UPDATE_RATE ioctl
this allows apps to set the PWM update rate. APM needs this to honor the user configurable PWM rate setting for copters.
Diffstat (limited to 'apps/drivers')
-rw-r--r--apps/drivers/drv_pwm_output.h3
-rw-r--r--apps/drivers/hil/hil.cpp4
-rw-r--r--apps/drivers/px4fmu/fmu.cpp4
3 files changed, 11 insertions, 0 deletions
diff --git a/apps/drivers/drv_pwm_output.h b/apps/drivers/drv_pwm_output.h
index b2fee65ac..c110cd5cb 100644
--- a/apps/drivers/drv_pwm_output.h
+++ b/apps/drivers/drv_pwm_output.h
@@ -103,6 +103,9 @@ ORB_DECLARE(output_pwm);
/** disarm all servo outputs (stop generating pulses) */
#define PWM_SERVO_DISARM _IOC(_PWM_SERVO_BASE, 1)
+/** set update rate in Hz */
+#define PWM_SERVO_SET_UPDATE_RATE _IOC(_PWM_SERVO_BASE, 2)
+
/** set a single servo to a specific value */
#define PWM_SERVO_SET(_servo) _IOC(_PWM_SERVO_BASE, 0x20 + _servo)
diff --git a/apps/drivers/hil/hil.cpp b/apps/drivers/hil/hil.cpp
index 67b16aa42..32bdb0776 100644
--- a/apps/drivers/hil/hil.cpp
+++ b/apps/drivers/hil/hil.cpp
@@ -503,6 +503,10 @@ HIL::pwm_ioctl(file *filp, int cmd, unsigned long arg)
// up_pwm_servo_arm(false);
break;
+ case PWM_SERVO_SET_UPDATE_RATE:
+ g_hil->set_pwm_rate(arg);
+ break;
+
case PWM_SERVO_SET(2):
case PWM_SERVO_SET(3):
if (_mode != MODE_4PWM) {
diff --git a/apps/drivers/px4fmu/fmu.cpp b/apps/drivers/px4fmu/fmu.cpp
index a995f6214..d5f4123c2 100644
--- a/apps/drivers/px4fmu/fmu.cpp
+++ b/apps/drivers/px4fmu/fmu.cpp
@@ -470,6 +470,10 @@ PX4FMU::pwm_ioctl(file *filp, int cmd, unsigned long arg)
up_pwm_servo_arm(false);
break;
+ case PWM_SERVO_SET_UPDATE_RATE:
+ set_pwm_rate(arg);
+ break;
+
case PWM_SERVO_SET(2):
case PWM_SERVO_SET(3):
if (_mode != MODE_4PWM) {