Paparazzi UAS  v5.12_stable-4-g9b43e9b
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
mission_common.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2014 Paparazzi Team
3  *
4  * This file is part of paparazzi.
5  *
6  * paparazzi is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2, or (at your option)
9  * any later version.
10  *
11  * paparazzi is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with paparazzi; see the file COPYING. If not, write to
18  * the Free Software Foundation, 59 Temple Place - Suite 330,
19  * Boston, MA 02111-1307, USA.
20  *
21  */
22 
30 #ifndef MISSION_COMMON_H
31 #define MISSION_COMMON_H
32 
33 #include "std.h"
35 #include "math/pprz_geodetic_int.h"
36 
38  MissionWP = 1,
45 };
46 
53 };
54 
55 struct _mission_wp {
56  union {
57  struct EnuCoor_f wp_f;
58  struct EnuCoor_i wp_i;
59  } wp;
60 };
61 
63  union {
64  struct EnuCoor_f center_f;
65  struct EnuCoor_i center_i;
66  } center;
67 
68  float radius;
69 };
70 
72  union {
73  struct EnuCoor_f from_f;
74  struct EnuCoor_i from_i;
75  } from;
76 
77  union {
78  struct EnuCoor_f to_f;
79  struct EnuCoor_i to_i;
80  } to;
81 };
82 
83 #define MISSION_PATH_NB 5
84 struct _mission_path {
85  union {
86  struct EnuCoor_f path_f[MISSION_PATH_NB];
87  struct EnuCoor_i path_i[MISSION_PATH_NB];
88  } path;
89 
92 };
93 
96  union {
97  struct _mission_wp mission_wp;
98  struct _mission_circle mission_circle;
99  struct _mission_segment mission_segment;
100  struct _mission_path mission_path;
101  } element;
102 
103  float duration;
105 };
106 
110 #ifndef MISSION_ELEMENT_NB
111 #define MISSION_ELEMENT_NB 20
112 #endif
113 
114 struct _mission {
116  float element_time;
119 };
120 
121 extern struct _mission mission;
122 
125 extern void mission_init(void);
126 
132 extern bool mission_insert(enum MissionInsertMode insert, struct _mission_element *element);
133 
138 extern bool mission_element_convert(struct _mission_element *el);
139 
143 extern struct _mission_element *mission_get(void);
144 
151 extern bool mission_point_of_lla(struct EnuCoor_f *point, struct LlaCoor_i *lla);
152 
162 extern int mission_run(void);
163 
168 extern void mission_status_report(void);
169 
172 extern int mission_parse_GOTO_WP(void);
173 extern int mission_parse_GOTO_WP_LLA(void);
174 extern int mission_parse_CIRCLE(void);
175 extern int mission_parse_CIRCLE_LLA(void);
176 extern int mission_parse_SEGMENT(void);
177 extern int mission_parse_SEGMENT_LLA(void);
178 extern int mission_parse_PATH(void);
179 extern int mission_parse_PATH_LLA(void);
180 extern int mission_parse_SURVEY(void);
181 extern int mission_parse_SURVEY_LLA(void);
182 extern int mission_parse_GOTO_MISSION(void);
183 extern int mission_parse_NEXT_MISSION(void);
184 extern int mission_parse_END_MISSION(void);
185 
186 #endif // MISSION_COMMON_H
187 
int mission_parse_CIRCLE_LLA(void)
replace the next element and remove all the others
union _mission_wp::@284 wp
int mission_parse_NEXT_MISSION(void)
int mission_parse_SEGMENT_LLA(void)
int mission_parse_SURVEY_LLA(void)
bool mission_element_convert(struct _mission_element *el)
Convert mission element's points format if needed.
int mission_parse_GOTO_WP(void)
Parsing functions called when a mission message is received.
MissionType
vector in East North Up coordinates Units: meters
MissionInsertMode
remove all elements and add the new one
union _mission_element::@289 element
float duration
time to spend in the element (<= 0 to disable)
add before the current element
vector in Latitude, Longitude and Altitude
union _mission_path::@288 path
int mission_parse_PATH(void)
replace current element
union _mission_segment::@286 from
void mission_init(void)
Init mission structure.
bool mission_insert(enum MissionInsertMode insert, struct _mission_element *element)
Insert a mission element according to the insertion mode.
union _mission_segment::@287 to
int mission_parse_PATH_LLA(void)
void mission_status_report(void)
Report mission status.
int mission_parse_GOTO_WP_LLA(void)
Paparazzi floating point math for geodetic calculations.
struct _mission_element * mission_get(void)
Get current mission element.
float element_time
time in second spend in the current element
#define MISSION_ELEMENT_NB
Max number of elements in the tasks' list can be redefined.
uint8_t path_idx
add at the last position
Paparazzi fixed point math for geodetic calculations.
uint8_t insert_idx
inserstion index
vector in East North Up coordinates
unsigned char uint8_t
Definition: types.h:14
union _mission_circle::@285 center
uint8_t index
index of mission element
int mission_parse_END_MISSION(void)
uint8_t current_idx
current mission element index
int mission_parse_CIRCLE(void)
int mission_parse_GOTO_MISSION(void)
int mission_run(void)
Run mission.
int mission_parse_SURVEY(void)
struct _mission_element elements[MISSION_ELEMENT_NB]
bool mission_point_of_lla(struct EnuCoor_f *point, struct LlaCoor_i *lla)
Get the ENU component of LLA mission point This function is firmware specific.
struct _mission mission
int mission_parse_SEGMENT(void)
enum MissionType type