30 #include "generated/flight_plan.h"
31 #include "generated/airframe.h"
36 #ifndef MISSION_CHECK_UNIQUE_ID
37 #define MISSION_CHECK_UNIQUE_ID TRUE
64 #if MISSION_CHECK_UNIQUE_ID
181 if (j == 0) { index_list[j++] = 0; }
183 float remaining_time = -1.;
199 if (DL_MISSION_GOTO_WP_ac_id(buf) != AC_ID) {
return false; }
203 me.
element.mission_wp.wp.wp_f.x = DL_MISSION_GOTO_WP_wp_east(buf);
204 me.
element.mission_wp.wp.wp_f.y = DL_MISSION_GOTO_WP_wp_north(buf);
205 me.
element.mission_wp.wp.wp_f.z = DL_MISSION_GOTO_WP_wp_alt(buf);
206 me.
duration = DL_MISSION_GOTO_WP_duration(buf);
207 me.
index = DL_MISSION_GOTO_WP_index(buf);
216 if (DL_MISSION_GOTO_WP_LLA_ac_id(buf) != AC_ID) {
return false; }
219 lla.
lat = DL_MISSION_GOTO_WP_LLA_wp_lat(buf);
220 lla.
lon = DL_MISSION_GOTO_WP_LLA_wp_lon(buf);
221 lla.
alt = DL_MISSION_GOTO_WP_LLA_wp_alt(buf);
227 me.
duration = DL_MISSION_GOTO_WP_LLA_duration(buf);
228 me.
index = DL_MISSION_GOTO_WP_LLA_index(buf);
237 if (DL_MISSION_CIRCLE_ac_id(buf) != AC_ID) {
return false; }
241 me.
element.mission_circle.center.center_f.x = DL_MISSION_CIRCLE_center_east(buf);
242 me.
element.mission_circle.center.center_f.y = DL_MISSION_CIRCLE_center_north(buf);
243 me.
element.mission_circle.center.center_f.z = DL_MISSION_CIRCLE_center_alt(buf);
244 me.
element.mission_circle.radius = DL_MISSION_CIRCLE_radius(buf);
245 me.
duration = DL_MISSION_CIRCLE_duration(buf);
246 me.
index = DL_MISSION_CIRCLE_index(buf);
255 if (DL_MISSION_CIRCLE_LLA_ac_id(buf) != AC_ID) {
return false; }
258 lla.
lat = DL_MISSION_CIRCLE_LLA_center_lat(buf);
259 lla.
lon = DL_MISSION_CIRCLE_LLA_center_lon(buf);
260 lla.
alt = DL_MISSION_CIRCLE_LLA_center_alt(buf);
266 me.
element.mission_circle.radius = DL_MISSION_CIRCLE_LLA_radius(buf);
267 me.
duration = DL_MISSION_CIRCLE_LLA_duration(buf);
268 me.
index = DL_MISSION_CIRCLE_LLA_index(buf);
277 if (DL_MISSION_SEGMENT_ac_id(buf) != AC_ID) {
return false; }
281 me.
element.mission_segment.from.from_f.x = DL_MISSION_SEGMENT_segment_east_1(buf);
282 me.
element.mission_segment.from.from_f.y = DL_MISSION_SEGMENT_segment_north_1(buf);
283 me.
element.mission_segment.from.from_f.z = DL_MISSION_SEGMENT_segment_alt(buf);
284 me.
element.mission_segment.to.to_f.x = DL_MISSION_SEGMENT_segment_east_2(buf);
285 me.
element.mission_segment.to.to_f.y = DL_MISSION_SEGMENT_segment_north_2(buf);
286 me.
element.mission_segment.to.to_f.z = DL_MISSION_SEGMENT_segment_alt(buf);
287 me.
duration = DL_MISSION_SEGMENT_duration(buf);
288 me.
index = DL_MISSION_SEGMENT_index(buf);
297 if (DL_MISSION_SEGMENT_LLA_ac_id(buf) != AC_ID) {
return false; }
300 from_lla.
lat = DL_MISSION_SEGMENT_LLA_segment_lat_1(buf);
301 from_lla.
lon = DL_MISSION_SEGMENT_LLA_segment_lon_1(buf);
302 from_lla.
alt = DL_MISSION_SEGMENT_LLA_segment_alt(buf);
303 to_lla.
lat = DL_MISSION_SEGMENT_LLA_segment_lat_2(buf);
304 to_lla.
lon = DL_MISSION_SEGMENT_LLA_segment_lon_2(buf);
305 to_lla.
alt = DL_MISSION_SEGMENT_LLA_segment_alt(buf);
312 me.
duration = DL_MISSION_SEGMENT_LLA_duration(buf);
313 me.
index = DL_MISSION_SEGMENT_LLA_index(buf);
322 if (DL_MISSION_PATH_ac_id(buf) != AC_ID) {
return false; }
326 me.
element.mission_path.path.path_f[0].x = DL_MISSION_PATH_point_east_1(buf);
327 me.
element.mission_path.path.path_f[0].y = DL_MISSION_PATH_point_north_1(buf);
328 me.
element.mission_path.path.path_f[0].z = DL_MISSION_PATH_path_alt(buf);
329 me.
element.mission_path.path.path_f[1].x = DL_MISSION_PATH_point_east_2(buf);
330 me.
element.mission_path.path.path_f[1].y = DL_MISSION_PATH_point_north_2(buf);
331 me.
element.mission_path.path.path_f[1].z = DL_MISSION_PATH_path_alt(buf);
332 me.
element.mission_path.path.path_f[2].x = DL_MISSION_PATH_point_east_3(buf);
333 me.
element.mission_path.path.path_f[2].y = DL_MISSION_PATH_point_north_3(buf);
334 me.
element.mission_path.path.path_f[2].z = DL_MISSION_PATH_path_alt(buf);
335 me.
element.mission_path.path.path_f[3].x = DL_MISSION_PATH_point_east_4(buf);
336 me.
element.mission_path.path.path_f[3].y = DL_MISSION_PATH_point_north_4(buf);
337 me.
element.mission_path.path.path_f[3].z = DL_MISSION_PATH_path_alt(buf);
338 me.
element.mission_path.path.path_f[4].x = DL_MISSION_PATH_point_east_5(buf);
339 me.
element.mission_path.path.path_f[4].y = DL_MISSION_PATH_point_north_5(buf);
340 me.
element.mission_path.path.path_f[4].z = DL_MISSION_PATH_path_alt(buf);
341 me.
element.mission_path.nb = DL_MISSION_PATH_nb(buf);
343 me.
element.mission_path.path_idx = 0;
344 me.
duration = DL_MISSION_PATH_duration(buf);
345 me.
index = DL_MISSION_PATH_index(buf);
354 if (DL_MISSION_PATH_LLA_ac_id(buf) != AC_ID) {
return false; }
357 lla[0].
lat = DL_MISSION_PATH_LLA_point_lat_1(buf);
358 lla[0].
lon = DL_MISSION_PATH_LLA_point_lon_1(buf);
359 lla[0].
alt = DL_MISSION_PATH_LLA_path_alt(buf);
360 lla[1].
lat = DL_MISSION_PATH_LLA_point_lat_2(buf);
361 lla[1].
lon = DL_MISSION_PATH_LLA_point_lon_2(buf);
362 lla[1].
alt = DL_MISSION_PATH_LLA_path_alt(buf);
363 lla[2].
lat = DL_MISSION_PATH_LLA_point_lat_3(buf);
364 lla[2].
lon = DL_MISSION_PATH_LLA_point_lon_3(buf);
365 lla[2].
alt = DL_MISSION_PATH_LLA_path_alt(buf);
366 lla[3].
lat = DL_MISSION_PATH_LLA_point_lat_4(buf);
367 lla[3].
lon = DL_MISSION_PATH_LLA_point_lon_4(buf);
368 lla[3].
alt = DL_MISSION_PATH_LLA_path_alt(buf);
369 lla[4].
lat = DL_MISSION_PATH_LLA_point_lat_5(buf);
370 lla[4].
lon = DL_MISSION_PATH_LLA_point_lon_5(buf);
371 lla[4].
alt = DL_MISSION_PATH_LLA_path_alt(buf);
376 me.
element.mission_path.nb = DL_MISSION_PATH_LLA_nb(buf);
378 for (i = 0; i < me.
element.mission_path.nb; i++) {
382 me.
element.mission_path.path_idx = 0;
383 me.
duration = DL_MISSION_PATH_LLA_duration(buf);
384 me.
index = DL_MISSION_PATH_LLA_index(buf);
393 if (DL_MISSION_CUSTOM_ac_id(buf) != AC_ID) {
return false; }
398 if (me.
element.mission_custom.reg == NULL) {
401 me.
element.mission_custom.nb = DL_MISSION_CUSTOM_params_length(buf);
402 for (
int i = 0; i < me.
element.mission_custom.nb; i++) {
403 me.
element.mission_custom.params[i] = DL_MISSION_CUSTOM_params(buf)[i];
405 me.
duration = DL_MISSION_CUSTOM_duration(buf);
406 me.
index = DL_MISSION_CUSTOM_index(buf);
415 if (DL_MISSION_UPDATE_ac_id(buf) != AC_ID) {
return false; }
422 float duration = DL_MISSION_UPDATE_duration(buf);
427 uint8_t nb = DL_MISSION_UPDATE_params_length(buf);
429 memcpy(params, DL_MISSION_UPDATE_params(buf), nb*
sizeof(
float));
447 if (DL_GOTO_MISSION_ac_id(buf) != AC_ID) {
return false; }
449 uint8_t mission_id = DL_GOTO_MISSION_mission_id(buf);
455 }
else {
return false; }
462 if (DL_NEXT_MISSION_ac_id(buf) != AC_ID) {
return false; }
475 if (DL_END_MISSION_ac_id(buf) != AC_ID) {
return false; }