mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-26 16:30:07 +08:00
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:
committed by
Gautier Hattenberger
parent
0ffaaf85b6
commit
cf2705d1c7
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user