diff options
author | Julian Oes <julian@oes.ch> | 2013-08-15 14:04:46 +0200 |
---|---|---|
committer | Julian Oes <julian@oes.ch> | 2013-08-15 14:04:46 +0200 |
commit | 56575eb068879beb68b3730ca6d3bb3755d6960a (patch) | |
tree | 1b7b4c028c2b936db81310e82a8ef84adc125e3d /src/modules/gpio_led/gpio_led.c | |
parent | 50cf1c01b701fced6437dfe574fd09cd312b9f15 (diff) | |
parent | 561ec495b7df5b3ff4536d16d1389d1f02affd06 (diff) | |
download | px4-firmware-56575eb068879beb68b3730ca6d3bb3755d6960a.tar.gz px4-firmware-56575eb068879beb68b3730ca6d3bb3755d6960a.tar.bz2 px4-firmware-56575eb068879beb68b3730ca6d3bb3755d6960a.zip |
Merge remote-tracking branch 'px4/new_state_machine_drton' into fmuv2_bringup_new_state_machine_drton
Conflicts:
src/drivers/blinkm/blinkm.cpp
src/drivers/px4io/px4io.cpp
src/modules/commander/state_machine_helper.c
src/modules/px4iofirmware/protocol.h
src/modules/px4iofirmware/registers.c
src/modules/systemlib/systemlib.h
src/systemcmds/reboot/reboot.c
Diffstat (limited to 'src/modules/gpio_led/gpio_led.c')
-rw-r--r-- | src/modules/gpio_led/gpio_led.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/modules/gpio_led/gpio_led.c b/src/modules/gpio_led/gpio_led.c index 7466dfdb9..d383146f9 100644 --- a/src/modules/gpio_led/gpio_led.c +++ b/src/modules/gpio_led/gpio_led.c @@ -51,6 +51,7 @@ #include <systemlib/err.h> #include <uORB/uORB.h> #include <uORB/topics/vehicle_status.h> +#include <uORB/topics/actuator_armed.h> #include <poll.h> #include <drivers/drv_gpio.h> #include <modules/px4iofirmware/protocol.h> @@ -62,6 +63,8 @@ struct gpio_led_s { int pin; struct vehicle_status_s status; int vehicle_status_sub; + struct actuator_armed_s armed; + int actuator_armed_sub; bool led_state; int counter; }; @@ -227,10 +230,15 @@ void gpio_led_cycle(FAR void *arg) if (status_updated) orb_copy(ORB_ID(vehicle_status), priv->vehicle_status_sub, &priv->status); + orb_check(priv->vehicle_status_sub, &status_updated); + + if (status_updated) + orb_copy(ORB_ID(actuator_armed), priv->actuator_armed_sub, &priv->armed); + /* select pattern for current status */ int pattern = 0; - if (priv->status.flag_system_armed) { + if (priv->armed.armed) { if (priv->status.battery_warning == VEHICLE_BATTERY_WARNING_NONE) { pattern = 0x3f; // ****** solid (armed) @@ -239,11 +247,10 @@ void gpio_led_cycle(FAR void *arg) } } else { - if (priv->status.state_machine == SYSTEM_STATE_PREFLIGHT) { + if (priv->armed.ready_to_arm) { pattern = 0x00; // ______ off (disarmed, preflight check) - } else if (priv->status.state_machine == SYSTEM_STATE_STANDBY && - priv->status.battery_warning == VEHICLE_BATTERY_WARNING_NONE) { + } else if (priv->armed.ready_to_arm && priv->status.battery_warning == VEHICLE_BATTERY_WARNING_NONE) { pattern = 0x38; // ***___ slow blink (disarmed, ready) } else { |