aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorilya <ilya@airdog.com>2014-12-04 23:08:54 +0200
committerilya <ilya@airdog.com>2014-12-04 23:08:54 +0200
commitae93691ca88875c7b7531655823abc234a179193 (patch)
tree1dc8091cb48198254ed51795a40f05f3877002e5
parent536b717420f6a7e953c433a747d4e4884720e967 (diff)
downloadpx4-firmware-ae93691ca88875c7b7531655823abc234a179193.tar.gz
px4-firmware-ae93691ca88875c7b7531655823abc234a179193.tar.bz2
px4-firmware-ae93691ca88875c7b7531655823abc234a179193.zip
Fixed RTL command arming copter.usa_demo_2
-rw-r--r--src/modules/airdog/airdog.cpp67
-rw-r--r--src/modules/airdog/airdog.h1
-rw-r--r--src/modules/commander/commander.cpp6
-rw-r--r--src/modules/navigator/loiter.cpp2
4 files changed, 29 insertions, 47 deletions
diff --git a/src/modules/airdog/airdog.cpp b/src/modules/airdog/airdog.cpp
index 71b71129e..990ddb804 100644
--- a/src/modules/airdog/airdog.cpp
+++ b/src/modules/airdog/airdog.cpp
@@ -160,25 +160,27 @@ void cAirdog::cycle()
// handle_takeoff();
if(!hil) {
- if (airdog_status.battery_remaining < bat_warning_level && battery_warning_count < 3 && airdog_status.battery_remaining!= 0)
- {
- mavlink_log_info(mavlink_fd, "remaining %d", airdog_status.battery_remaining);
- battery_warning_count++;
- ioctl(buzzer, TONE_SET_ALARM, TONE_NOTIFY_NEGATIVE_TUNE);
- pi2c_ctrl->start_blinking_led(I2C_LED_RED, BLINKING_RATE_SLOW);
-
- } else if (airdog_status.battery_remaining < bat_critical_level && airdog_status.battery_remaining!= 0)
- {
- if (!rtl_triggered_from_battery && airdog_status.sub_mode != PX4_CUSTOM_SUB_MODE_AUTO_RTL && airdog_status.sub_mode != PX4_CUSTOM_SUB_MODE_AUTO_LAND)
- {
- rtl_triggered_from_battery = true;
- // send_set_state(NAV_STATE_RTL, MOVE_NONE);
- pi2c_ctrl->start_blinking_led(I2C_LED_RED, BLINKING_RATE_FAST);
- }
- } else if (airdog_status.battery_remaining > bat_warning_level)
- {
- pi2c_ctrl->stop_blinking_led(I2C_LED_RED, true);
- }
+ //TODO: [INE] rework!!!
+
+ // if (airdog_status.battery_remaining < bat_warning_level && battery_warning_count < 3 && airdog_status.battery_remaining!= 0)
+ // {
+ // mavlink_log_info(mavlink_fd, "remaining %d", airdog_status.battery_remaining);
+ // battery_warning_count++;
+ // ioctl(buzzer, TONE_SET_ALARM, TONE_NOTIFY_NEGATIVE_TUNE);
+ // pi2c_ctrl->start_blinking_led(I2C_LED_RED, BLINKING_RATE_SLOW);
+
+ // } else if (airdog_status.battery_remaining < bat_critical_level && airdog_status.battery_remaining!= 0)
+ // {
+ // if (!rtl_triggered_from_battery && airdog_status.main_mode != PX4_CUSTOM_MAIN_MODE_RTL && airdog_status.sub_mode != PX4_CUSTOM_SUB_MODE_AUTO_LAND)
+ // {
+ // rtl_triggered_from_battery = true;
+ // // send_set_state(NAV_STATE_RTL, MOVE_NONE);
+ // pi2c_ctrl->start_blinking_led(I2C_LED_RED, BLINKING_RATE_FAST);
+ // }
+ // } else if (airdog_status.battery_remaining > bat_warning_level)
+ // {
+ // pi2c_ctrl->stop_blinking_led(I2C_LED_RED, true);
+ // }
}
if (airdog_status.timestamp > 0)
@@ -235,29 +237,6 @@ void cAirdog::send_set_mode(uint8_t base_mode, enum PX4_CUSTOM_MAIN_MODE custom_
}
}
-void cAirdog::send_set_auto_mode(uint8_t base_mode, enum PX4_CUSTOM_SUB_MODE_AUTO custom_sub_mode_auto)
-{
- struct vehicle_command_s cmd;
- memset(&cmd, 0, sizeof(cmd));
-
- /* fill command */
- cmd.command = VEHICLE_CMD_DO_SET_MODE;
- cmd.confirmation = false;
- cmd.param1 = base_mode;
- cmd.param2 = custom_sub_mode_auto;
- cmd.source_system = vehicle_status.system_id;
- cmd.source_component = vehicle_status.component_id;
- // TODO add parameters AD_VEH_SYSID, AD_VEH_COMP to set target id
- cmd.target_system = 1;
- cmd.target_component = 50;
-
- if (cmd_pub < 0) {
- cmd_pub = orb_advertise(ORB_ID(vehicle_command), &cmd);
- } else {
- orb_publish(ORB_ID(vehicle_command), cmd_pub, &cmd);
- }
-}
-
void cAirdog::send_command(enum REMOTE_CMD command)
{
struct vehicle_command_s cmd;
@@ -382,10 +361,10 @@ bool cAirdog::button_clicked_i2c(uint8_t button, bool long_press)
send_command(REMOTE_CMD_DOWN);
} else if (current_button_state == BUTTON_STATE_CHOOSE_FUNCTION){
- uint8_t base_mode = MAV_MODE_FLAG_SAFETY_ARMED | MAV_MODE_FLAG_AUTO_ENABLED;
+ uint8_t base_mode = MAV_MODE_FLAG_SAFETY_ARMED | MAV_MODE_FLAG_AUTO_ENABLED | MAV_MODE_FLAG_CUSTOM_MODE_ENABLED;
if (hil) base_mode |= MAV_MODE_FLAG_HIL_ENABLED;
- send_set_auto_mode(base_mode, PX4_CUSTOM_SUB_MODE_AUTO_RTL);
+ send_set_mode(base_mode, PX4_CUSTOM_MAIN_MODE_RTL);
set_current_button_state(BUTTON_STATE_DEFAULT);
set_current_button_state(BUTTON_STATE_DEFAULT);
diff --git a/src/modules/airdog/airdog.h b/src/modules/airdog/airdog.h
index 67802214a..12d7642ec 100644
--- a/src/modules/airdog/airdog.h
+++ b/src/modules/airdog/airdog.h
@@ -89,7 +89,6 @@ private:
void send_set_mode(uint8_t base_mode, enum PX4_CUSTOM_MAIN_MODE custom_main_mode, int mode_args = 0);
- void send_set_auto_mode(uint8_t base_mode, enum PX4_CUSTOM_SUB_MODE_AUTO custom_sub_mode_auto);
void send_command(enum REMOTE_CMD command);
// void send_set_state(enum NAV_STATE state, enum AUTO_MOVE_DIRECTION direction);
// void send_set_move(enum AUTO_MOVE_DIRECTION direction);
diff --git a/src/modules/commander/commander.cpp b/src/modules/commander/commander.cpp
index 72793f270..3db84c815 100644
--- a/src/modules/commander/commander.cpp
+++ b/src/modules/commander/commander.cpp
@@ -499,7 +499,11 @@ bool handle_command(struct vehicle_status_s *status_local, const struct safety_s
} else if (custom_main_mode == PX4_CUSTOM_MAIN_MODE_FOLLOW) {
/* FOLLOW */
- main_ret = main_state_transition(status_local, MAIN_STATE_FOLLOW, mavlink_fd);
+ main_ret = main_state_transition(status_local, MAIN_STATE_FOLLOW, mavlink_fd);
+ } else if (custom_main_mode == PX4_CUSTOM_MAIN_MODE_RTL) {
+ /* AUTO RTL */
+ //This mode should be processed in LOITER submodes
+ main_ret = TRANSITION_DENIED;
}
} else {
diff --git a/src/modules/navigator/loiter.cpp b/src/modules/navigator/loiter.cpp
index f023f2f96..c3bcaf0e2 100644
--- a/src/modules/navigator/loiter.cpp
+++ b/src/modules/navigator/loiter.cpp
@@ -205,7 +205,7 @@ Loiter::execute_command_in_aim_and_shoot(vehicle_command_s cmd){
//uint8_t base_mode = (uint8_t)cmd.param1;
uint8_t main_mode = (uint8_t)cmd.param2;
- if (main_mode == PX4_CUSTOM_SUB_MODE_AUTO_RTL) {
+ if (main_mode == PX4_CUSTOM_MAIN_MODE_RTL) {
commander_request_s *commander_request = _navigator->get_commander_request();
commander_request->request_type = V_MAIN_STATE_CHANGE;