added mission index to mission module (#1918)

* added mission index to mission module
* Removed task list and only added index list
This commit is contained in:
Rijesh Augustine
2016-11-08 09:48:39 -07:00
committed by Gautier Hattenberger
parent 0ffaaf85b6
commit cf2705d1c7
2 changed files with 14 additions and 6 deletions
+13 -6
View File
@@ -100,14 +100,14 @@ struct _mission_element *mission_get(void)
// Report function
void mission_status_report(void)
{
// build task list
uint8_t task_list[MISSION_ELEMENT_NB];
// build index list
uint8_t index_list[MISSION_ELEMENT_NB];
uint8_t i = mission.current_idx, j = 0;
while (i != mission.insert_idx) {
task_list[j++] = (uint8_t)mission.elements[i].type;
index_list[j++] = mission.elements[i].index;
i = (i + 1) % MISSION_ELEMENT_NB;
}
if (j == 0) { task_list[j++] = 0; } // Dummy value if task list is empty
if (j == 0) { index_list[j++] = 0; } // Dummy value if index list is empty
//compute remaining time (or -1. if no time limit)
float remaining_time = -1.;
if (mission.elements[mission.current_idx].duration > 0.) {
@@ -115,7 +115,7 @@ void mission_status_report(void)
}
// send status
DOWNLINK_SEND_MISSION_STATUS(DefaultChannel, DefaultDevice, &remaining_time, j, task_list);
DOWNLINK_SEND_MISSION_STATUS(DefaultChannel, DefaultDevice, &remaining_time, j, index_list);
}
@@ -133,6 +133,7 @@ int mission_parse_GOTO_WP(void)
me.element.mission_wp.wp.wp_f.y = DL_MISSION_GOTO_WP_wp_north(dl_buffer);
me.element.mission_wp.wp.wp_f.z = DL_MISSION_GOTO_WP_wp_alt(dl_buffer);
me.duration = DL_MISSION_GOTO_WP_duration(dl_buffer);
me.index = DL_MISSION_GOTO_WP_index(dl_buffer);
enum MissionInsertMode insert = (enum MissionInsertMode)(DL_MISSION_GOTO_WP_insert(dl_buffer));
@@ -153,6 +154,7 @@ int mission_parse_GOTO_WP_LLA(void)
// if there is no valid local coordinate, do not insert mission element
if (!mission_point_of_lla(&me.element.mission_wp.wp.wp_f, &lla)) { return false; }
me.duration = DL_MISSION_GOTO_WP_LLA_duration(dl_buffer);
me.index = DL_MISSION_GOTO_WP_LLA_index(dl_buffer);
enum MissionInsertMode insert = (enum MissionInsertMode)(DL_MISSION_GOTO_WP_LLA_insert(dl_buffer));
@@ -170,6 +172,7 @@ int mission_parse_CIRCLE(void)
me.element.mission_circle.center.center_f.z = DL_MISSION_CIRCLE_center_alt(dl_buffer);
me.element.mission_circle.radius = DL_MISSION_CIRCLE_radius(dl_buffer);
me.duration = DL_MISSION_CIRCLE_duration(dl_buffer);
me.index = DL_MISSION_CIRCLE_index(dl_buffer);
enum MissionInsertMode insert = (enum MissionInsertMode)(DL_MISSION_CIRCLE_insert(dl_buffer));
@@ -191,6 +194,7 @@ int mission_parse_CIRCLE_LLA(void)
if (!mission_point_of_lla(&me.element.mission_circle.center.center_f, &lla)) { return false; }
me.element.mission_circle.radius = DL_MISSION_CIRCLE_LLA_radius(dl_buffer);
me.duration = DL_MISSION_CIRCLE_LLA_duration(dl_buffer);
me.index = DL_MISSION_CIRCLE_LLA_index(dl_buffer);
enum MissionInsertMode insert = (enum MissionInsertMode)(DL_MISSION_CIRCLE_LLA_insert(dl_buffer));
@@ -210,6 +214,7 @@ int mission_parse_SEGMENT(void)
me.element.mission_segment.to.to_f.y = DL_MISSION_SEGMENT_segment_north_2(dl_buffer);
me.element.mission_segment.to.to_f.z = DL_MISSION_SEGMENT_segment_alt(dl_buffer);
me.duration = DL_MISSION_SEGMENT_duration(dl_buffer);
me.index = DL_MISSION_SEGMENT_index(dl_buffer);
enum MissionInsertMode insert = (enum MissionInsertMode)(DL_MISSION_SEGMENT_insert(dl_buffer));
@@ -234,6 +239,7 @@ int mission_parse_SEGMENT_LLA(void)
if (!mission_point_of_lla(&me.element.mission_segment.from.from_f, &from_lla)) { return false; }
if (!mission_point_of_lla(&me.element.mission_segment.to.to_f, &to_lla)) { return false; }
me.duration = DL_MISSION_SEGMENT_LLA_duration(dl_buffer);
me.index = DL_MISSION_SEGMENT_LLA_index(dl_buffer);
enum MissionInsertMode insert = (enum MissionInsertMode)(DL_MISSION_SEGMENT_LLA_insert(dl_buffer));
@@ -265,6 +271,7 @@ int mission_parse_PATH(void)
if (me.element.mission_path.nb > MISSION_PATH_NB) { me.element.mission_path.nb = MISSION_PATH_NB; }
me.element.mission_path.path_idx = 0;
me.duration = DL_MISSION_PATH_duration(dl_buffer);
me.index = DL_MISSION_PATH_index(dl_buffer);
enum MissionInsertMode insert = (enum MissionInsertMode)(DL_MISSION_PATH_insert(dl_buffer));
@@ -303,6 +310,7 @@ int mission_parse_PATH_LLA(void)
}
me.element.mission_path.path_idx = 0;
me.duration = DL_MISSION_PATH_LLA_duration(dl_buffer);
me.index = DL_MISSION_PATH_LLA_index(dl_buffer);
enum MissionInsertMode insert = (enum MissionInsertMode)(DL_MISSION_PATH_LLA_insert(dl_buffer));
@@ -340,4 +348,3 @@ int mission_parse_END_MISSION(void)
mission.current_idx = mission.insert_idx;
return true;
}
@@ -100,6 +100,7 @@ struct _mission_element {
} element;
float duration; ///< time to spend in the element (<= 0 to disable)
uint8_t index; ///< index of mission element
};
/** Max number of elements in the tasks' list