aboutsummaryrefslogtreecommitdiff
path: root/apps/px4io
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2012-12-27 19:06:09 +0100
committerLorenz Meier <lm@inf.ethz.ch>2012-12-27 19:06:09 +0100
commit45a4bcb6efc323ad9b8b434e9cd30dbe41ded29f (patch)
treeba7454ee955705166e23be23318ec9b18e318008 /apps/px4io
parent7526dd46a2ace594cbbb2c6ad9e9fa53c67c5ca8 (diff)
parent5b92c517779500d79e6e5f5cff48336550ce5edb (diff)
downloadpx4-firmware-45a4bcb6efc323ad9b8b434e9cd30dbe41ded29f.tar.gz
px4-firmware-45a4bcb6efc323ad9b8b434e9cd30dbe41ded29f.tar.bz2
px4-firmware-45a4bcb6efc323ad9b8b434e9cd30dbe41ded29f.zip
Merged relay activation
Diffstat (limited to 'apps/px4io')
-rw-r--r--apps/px4io/comms.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/apps/px4io/comms.c b/apps/px4io/comms.c
index bfdad019d..2b8f95534 100644
--- a/apps/px4io/comms.c
+++ b/apps/px4io/comms.c
@@ -210,9 +210,25 @@ comms_handle_command(const void *buffer, size_t length)
*/
mixer_tick();
- /* XXX do relay changes here */
+ /* handle relay state changes here */
for (unsigned i = 0; i < PX4IO_RELAY_CHANNELS; i++) {
- system_state.relays[i] = cmd->relay_state[i];
+ if (system_state.relays[i] != cmd->relay_state[i]) {
+ switch (i) {
+ case 0:
+ POWER_ACC1(cmd->relay_state[i]);
+ break;
+ case 1:
+ POWER_ACC2(cmd->relay_state[i]);
+ break;
+ case 2:
+ POWER_RELAY1(cmd->relay_state[i]);
+ break;
+ case 3:
+ POWER_RELAY2(cmd->relay_state[i]);
+ break;
+ }
+ }
+ system_state.relays[i] != cmd->relay_state[i]
}
irqrestore(flags);