aboutsummaryrefslogtreecommitdiff
path: root/apps/px4io/registers.c
diff options
context:
space:
mode:
authorpx4dev <px4@purgatory.org>2013-01-15 00:41:13 -0800
committerpx4dev <px4@purgatory.org>2013-01-15 00:41:13 -0800
commit112f5ea9697a2ada9e3852f9c2e7c10ab0e78a8a (patch)
treeb2b766fff575c9308c9cd37999f0d6ddb8e59fb0 /apps/px4io/registers.c
parentf3a587dfced54bfdfe3471e6099c3ea16bc33a31 (diff)
downloadpx4-firmware-112f5ea9697a2ada9e3852f9c2e7c10ab0e78a8a.tar.gz
px4-firmware-112f5ea9697a2ada9e3852f9c2e7c10ab0e78a8a.tar.bz2
px4-firmware-112f5ea9697a2ada9e3852f9c2e7c10ab0e78a8a.zip
Add support for raw PWM passthrough from FMU via IO.
Diffstat (limited to 'apps/px4io/registers.c')
-rw-r--r--apps/px4io/registers.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/apps/px4io/registers.c b/apps/px4io/registers.c
index 0dd8fe28d..2f411eebf 100644
--- a/apps/px4io/registers.c
+++ b/apps/px4io/registers.c
@@ -152,7 +152,7 @@ registers_set(uint8_t page, uint8_t offset, const uint16_t *values, unsigned num
/* copy channel data */
while ((offset < PX4IO_CONTROL_CHANNELS) && (num_values > 0)) {
- /* XXX scaling - should be -10000..10000 */
+ /* XXX range-check value? */
r_page_controls[offset] = *values;
offset++;
@@ -163,6 +163,26 @@ registers_set(uint8_t page, uint8_t offset, const uint16_t *values, unsigned num
/* XXX we should cause a mixer tick ASAP */
system_state.fmu_data_received_time = hrt_absolute_time();
r_status_flags |= PX4IO_P_STATUS_FLAGS_FMU_OK;
+ r_status_flags &= ~PX4IO_P_STATUS_FLAGS_RAW_PPM;
+ break;
+
+ /* handle raw PWM input */
+ case PX4IO_PAGE_DIRECT_PWM:
+
+ /* copy channel data */
+ while ((offset < PX4IO_CONTROL_CHANNELS) && (num_values > 0)) {
+
+ /* XXX range-check value? */
+ r_page_servos[offset] = *values;
+
+ offset++;
+ num_values--;
+ values++;
+ }
+
+ /* XXX need to force these values to the servos */
+ system_state.fmu_data_received_time = hrt_absolute_time();
+ r_status_flags |= PX4IO_P_STATUS_FLAGS_FMU_OK | PX4IO_P_STATUS_FLAGS_RAW_PPM;
break;
/* handle text going to the mixer parser */