From 1998ce120514b808f4b8b5256302e05001b4e33c Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 8 Jan 2013 20:37:47 +0100 Subject: [PATCH 1/3] Battery-Warn-State added to struct Vehicle_Status --- apps/commander/commander.c | 3 +++ apps/uORB/topics/vehicle_status.h | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/apps/commander/commander.c b/apps/commander/commander.c index 17087ab8af..986266843a 100644 --- a/apps/commander/commander.c +++ b/apps/commander/commander.c @@ -1200,6 +1200,7 @@ int commander_thread_main(int argc, char *argv[]) /* mark all signals lost as long as they haven't been found */ current_status.rc_signal_lost = true; current_status.offboard_control_signal_lost = true; + current_status.battery_warning = VEHICLE_BATTERY_WARNING_NONE; /* advertise to ORB */ stat_pub = orb_advertise(ORB_ID(vehicle_status), ¤t_status); @@ -1393,6 +1394,7 @@ int commander_thread_main(int argc, char *argv[]) if (low_voltage_counter > LOW_VOLTAGE_BATTERY_COUNTER_LIMIT) { low_battery_voltage_actions_done = true; + current_status.battery_warning = VEHICLE_BATTERY_WARNING_WARNING; mavlink_log_critical(mavlink_fd, "[commander] WARNING! LOW BATTERY!"); } @@ -1403,6 +1405,7 @@ int commander_thread_main(int argc, char *argv[]) else if (battery_voltage_valid && (bat_remain < 0.1f /* XXX MAGIC NUMBER */) && (false == critical_battery_voltage_actions_done && true == low_battery_voltage_actions_done)) { if (critical_voltage_counter > CRITICAL_VOLTAGE_BATTERY_COUNTER_LIMIT) { critical_battery_voltage_actions_done = true; + current_status.battery_warning = VEHICLE_BATTERY_WARNING_ALERT; mavlink_log_critical(mavlink_fd, "[commander] EMERGENCY! CRITICAL BATTERY!"); state_machine_emergency(stat_pub, ¤t_status, mavlink_fd); } diff --git a/apps/uORB/topics/vehicle_status.h b/apps/uORB/topics/vehicle_status.h index 23172d7cf1..75c9ea0fc4 100644 --- a/apps/uORB/topics/vehicle_status.h +++ b/apps/uORB/topics/vehicle_status.h @@ -99,6 +99,13 @@ enum VEHICLE_ATTITUDE_MODE { VEHICLE_ATTITUDE_MODE_ATTITUDE /**< tait-bryan attitude control mode */ }; +enum VEHICLE_BATTERY_WARNING { + VEHICLE_BATTERY_WARNING_NONE = 0, /**< no battery low voltage warning active */ + VEHICLE_BATTERY_WARNING_WARNING, /**< warning of low voltage 1. stage */ + VEHICLE_BATTERY_WARNING_ALERT /**< aleting of low voltage 2. stage */ +}; + + /** * state machine / state of vehicle. * @@ -157,6 +164,7 @@ struct vehicle_status_s float voltage_battery; float current_battery; float battery_remaining; + enum VEHICLE_BATTERY_WARNING battery_warning; /**< current battery warning mode, as defined by VEHICLE_BATTERY_WARNING enum */ uint16_t drop_rate_comm; uint16_t errors_comm; uint16_t errors_count1; From b5424a4d024e92dc10b82c3db1637f858e2689ad Mon Sep 17 00:00:00 2001 From: px4dev Date: Tue, 8 Jan 2013 14:40:20 -0800 Subject: [PATCH 2/3] Fix the CMSIS DSP_Lib include path specification. This avoids some scary messages from 'make depend'. --- apps/mathlib/CMSIS/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/mathlib/CMSIS/Makefile b/apps/mathlib/CMSIS/Makefile index 0b67944709..fa5de668af 100644 --- a/apps/mathlib/CMSIS/Makefile +++ b/apps/mathlib/CMSIS/Makefile @@ -38,7 +38,7 @@ # # Find sources # -DSPLIB_SRCDIR = $(dir $(lastword $(MAKEFILE_LIST))) +DSPLIB_SRCDIR := $(dir $(lastword $(MAKEFILE_LIST))) CSRCS := $(wildcard $(DSPLIB_SRCDIR)/DSP_Lib/Source/*/*.c) INCLUDES += $(DSPLIB_SRCDIR)/Include \ From d957f8e00424e65b76bb5121c3f6549e0c2786cb Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Wed, 9 Jan 2013 13:11:06 +0100 Subject: [PATCH 3/3] Hotfix: Copying from right actuator topic on IO if FMU and IO PWM outs are enabled --- apps/drivers/px4io/px4io.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/drivers/px4io/px4io.cpp b/apps/drivers/px4io/px4io.cpp index 82ff61808b..fd531a3279 100644 --- a/apps/drivers/px4io/px4io.cpp +++ b/apps/drivers/px4io/px4io.cpp @@ -388,7 +388,8 @@ PX4IO::task_main() if (fds[1].revents & POLLIN) { /* get controls */ - orb_copy(ORB_ID_VEHICLE_ATTITUDE_CONTROLS, _t_actuators, &_controls); + orb_copy(_primary_pwm_device ? ORB_ID_VEHICLE_ATTITUDE_CONTROLS : + ORB_ID(actuator_controls_1), _t_actuators, &_controls); /* scale controls to PWM (temporary measure) */ for (unsigned i = 0; i < _max_actuators; i++)