diff options
author | px4dev <px4@purgatory.org> | 2013-01-15 00:41:13 -0800 |
---|---|---|
committer | px4dev <px4@purgatory.org> | 2013-01-15 00:41:13 -0800 |
commit | 112f5ea9697a2ada9e3852f9c2e7c10ab0e78a8a (patch) | |
tree | b2b766fff575c9308c9cd37999f0d6ddb8e59fb0 /apps/px4io/registers.c | |
parent | f3a587dfced54bfdfe3471e6099c3ea16bc33a31 (diff) | |
download | px4-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.c | 22 |
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 */ |