aboutsummaryrefslogtreecommitdiff
path: root/apps/drivers/px4io/px4io.cpp
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2012-12-22 00:47:52 +0100
committerLorenz Meier <lm@inf.ethz.ch>2012-12-22 00:47:52 +0100
commit4cf2266b79a28445ad0b493c36cf125081900423 (patch)
tree94f065f916ce7b0a5d4d0c48d40bf9b1086b2049 /apps/drivers/px4io/px4io.cpp
parentfe6496a04dd0a232bb530f57031cfb4f6e65bb44 (diff)
downloadpx4-firmware-4cf2266b79a28445ad0b493c36cf125081900423.tar.gz
px4-firmware-4cf2266b79a28445ad0b493c36cf125081900423.tar.bz2
px4-firmware-4cf2266b79a28445ad0b493c36cf125081900423.zip
Robustified actuator output topic, added number of mixed outputs
Diffstat (limited to 'apps/drivers/px4io/px4io.cpp')
-rw-r--r--apps/drivers/px4io/px4io.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/apps/drivers/px4io/px4io.cpp b/apps/drivers/px4io/px4io.cpp
index 695304926..701955298 100644
--- a/apps/drivers/px4io/px4io.cpp
+++ b/apps/drivers/px4io/px4io.cpp
@@ -402,8 +402,8 @@ PX4IO::task_main()
/* mix */
if (_mixers != nullptr) {
- /* XXX is this the right count? */
- _mixers->mix(&_outputs.output[0], _max_actuators);
+ _outputs.timestamp = hrt_absolute_time();
+ _outputs.noutputs = _mixers->mix(&_outputs.output[0], _max_actuators);
// XXX output actual limited values
memcpy(&_controls_effective, &_controls, sizeof(_controls_effective));
@@ -413,7 +413,11 @@ PX4IO::task_main()
/* convert to PWM values */
for (unsigned i = 0; i < _max_actuators; i++) {
/* last resort: catch NaN, INF and out-of-band errors */
- if (isfinite(_outputs.output[i]) && _outputs.output[i] >= -1.0f && _outputs.output[i] <= 1.0f) {
+ if (i < _outputs.noutputs &&
+ isfinite(_outputs.output[i]) &&
+ _outputs.output[i] >= -1.0f &&
+ _outputs.output[i] <= 1.0f) {
+ /* scale for PWM output 900 - 2100us */
_outputs.output[i] = 1500 + (600 * _outputs.output[i]);
} else {
/*