mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-06-01 04:46:51 +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
|
// Report function
|
||||||
void mission_status_report(void)
|
void mission_status_report(void)
|
||||||
{
|
{
|
||||||
// build task list
|
// build index list
|
||||||
uint8_t task_list[MISSION_ELEMENT_NB];
|
uint8_t index_list[MISSION_ELEMENT_NB];
|
||||||
uint8_t i = mission.current_idx, j = 0;
|
uint8_t i = mission.current_idx, j = 0;
|
||||||
while (i != mission.insert_idx) {
|
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;
|
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)
|
//compute remaining time (or -1. if no time limit)
|
||||||
float remaining_time = -1.;
|
float remaining_time = -1.;
|
||||||
if (mission.elements[mission.current_idx].duration > 0.) {
|
if (mission.elements[mission.current_idx].duration > 0.) {
|
||||||
@@ -115,7 +115,7 @@ void mission_status_report(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// send status
|
// 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.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.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.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));
|
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 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; }
|
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.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));
|
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.center.center_f.z = DL_MISSION_CIRCLE_center_alt(dl_buffer);
|
||||||
me.element.mission_circle.radius = DL_MISSION_CIRCLE_radius(dl_buffer);
|
me.element.mission_circle.radius = DL_MISSION_CIRCLE_radius(dl_buffer);
|
||||||
me.duration = DL_MISSION_CIRCLE_duration(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));
|
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; }
|
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.element.mission_circle.radius = DL_MISSION_CIRCLE_LLA_radius(dl_buffer);
|
||||||
me.duration = DL_MISSION_CIRCLE_LLA_duration(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));
|
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.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.element.mission_segment.to.to_f.z = DL_MISSION_SEGMENT_segment_alt(dl_buffer);
|
||||||
me.duration = DL_MISSION_SEGMENT_duration(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));
|
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.from.from_f, &from_lla)) { return false; }
|
||||||
if (!mission_point_of_lla(&me.element.mission_segment.to.to_f, &to_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.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));
|
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; }
|
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.element.mission_path.path_idx = 0;
|
||||||
me.duration = DL_MISSION_PATH_duration(dl_buffer);
|
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));
|
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.element.mission_path.path_idx = 0;
|
||||||
me.duration = DL_MISSION_PATH_LLA_duration(dl_buffer);
|
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));
|
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;
|
mission.current_idx = mission.insert_idx;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -100,6 +100,7 @@ struct _mission_element {
|
|||||||
} element;
|
} element;
|
||||||
|
|
||||||
float duration; ///< time to spend in the element (<= 0 to disable)
|
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
|
/** Max number of elements in the tasks' list
|
||||||
|
|||||||
Reference in New Issue
Block a user