sketchbook
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
types.h
Go to the documentation of this file.
1 #ifndef TYPES_H_
2 #define TYPES_H_
3 
4 enum rc {
5  ROLL,
7  YAW,
9  AUX1,
17 };
18 
19 enum pid {
29  PIDVEL, // not used currently
31 };
32 
33 enum box {
35  #if ACC
36  BOXANGLE,
37  BOXHORIZON,
38  #endif
39  #if BARO && (!defined(SUPPRESS_BARO_ALTHOLD))
40  BOXBARO,
41  #endif
42  #ifdef VARIOMETER
43  BOXVARIO,
44  #endif
46  #if defined(HEADFREE)
47  BOXHEADFREE,
48  BOXHEADADJ, // acquire heading for HEADFREE mode
49  #endif
50  #if defined(SERVO_TILT) || defined(GIMBAL) || defined(SERVO_MIX_TILT)
51  BOXCAMSTAB,
52  #endif
53  #if defined(CAMTRIG)
54  BOXCAMTRIG,
55  #endif
56  #if GPS
57  BOXGPSHOME,
58  BOXGPSHOLD,
59  #endif
60  #if defined(FIXEDWING) || defined(HELICOPTER)
61  BOXPASSTHRU,
62  #endif
63  #if defined(BUZZER)
64  BOXBEEPERON,
65  #endif
66  #if defined(LED_FLASHER)
67  BOXLEDMAX, // we want maximum illumination
68  BOXLEDLOW, // low/no lights
69  #endif
70  #if defined(LANDING_LIGHTS_DDR)
71  BOXLLIGHTS, // enable landing lights at any altitude
72  #endif
73  #ifdef INFLIGHT_ACC_CALIBRATION
74  BOXCALIB,
75  #endif
76  #ifdef GOVERNOR_P
77  BOXGOV,
78  #endif
79  #ifdef OSD_SWITCH
80  BOXOSD,
81  #endif
82  #if GPS
83  BOXGPSNAV,
84  BOXLAND,
85  #endif
87 };
88 
89 typedef struct {
90  int16_t accSmooth[3];
91  int16_t gyroData[3];
92  int16_t magADC[3];
93  int16_t gyroADC[3];
94  int16_t accADC[3];
95 } imu_t;
96 
97 typedef struct {
98  uint8_t vbat; // battery voltage in 0.1V steps
99  uint16_t intPowerMeterSum;
100  uint16_t rssi; // range: [0;1023]
101  uint16_t amperage; // 1unit == 100mA
102  uint16_t watts; // 1unit == 1W
103  uint16_t vbatcells[VBAT_CELLS_NUM];
104 } analog_t;
105 
106 typedef struct {
107  int32_t EstAlt; // in cm
108  int16_t vario; // variometer in cm/s
109 } alt_t;
110 
111 typedef struct {
112  int16_t angle[2]; // absolute angle inclination in multiple of 0.1 degree 180 deg = 1800
113  int16_t heading; // variometer in cm/s
114 } att_t;
115 
116 typedef struct {
117  uint8_t OK_TO_ARM :1 ;
118  uint8_t ARMED :1 ;
119  uint8_t ACC_CALIBRATED :1 ;
120  uint8_t ANGLE_MODE :1 ;
121  uint8_t HORIZON_MODE :1 ;
122  uint8_t MAG_MODE :1 ;
123  uint8_t BARO_MODE :1 ;
124 #ifdef HEADFREE
125  uint8_t HEADFREE_MODE :1 ;
126 #endif
127 #if defined(FIXEDWING) || defined(HELICOPTER)
128  uint8_t PASSTHRU_MODE :1 ;
129 #endif
130  uint8_t SMALL_ANGLES_25 :1 ;
131 #if MAG
132  uint8_t CALIBRATE_MAG :1 ;
133 #endif
134 #ifdef VARIOMETER
135  uint8_t VARIO_MODE :1;
136 #endif
137  uint8_t GPS_mode: 2; // 0-3 NONE,HOLD, HOME, NAV (see GPS_MODE_* defines
138 #if BARO || GPS
139  uint8_t THROTTLE_IGNORED : 1; // If it is 1 then ignore throttle stick movements in baro mode;
140 #endif
141 #if GPS
142  uint8_t GPS_FIX :1 ;
143  uint8_t GPS_FIX_HOME :1 ;
144  uint8_t GPS_BARO_MODE : 1; // This flag is used when GPS controls baro mode instead of user (it will replace rcOptions[BARO]
145  uint8_t GPS_head_set: 1; // it is 1 if the navigation engine got commands to control heading (SET_POI or SET_HEAD) CLEAR_HEAD will zero it
146  uint8_t LAND_COMPLETED: 1;
147  uint8_t LAND_IN_PROGRESS: 1;
148 #endif
150 
151 typedef struct {
152  uint8_t currentSet;
153  int16_t accZero[3];
154  int16_t magZero[3];
155  uint16_t flashsum;
156  uint8_t checksum; // MUST BE ON LAST POSITION OF STRUCTURE !
157 } global_conf_t;
158 
159 struct pid_ {
160  uint8_t P8;
161  uint8_t I8;
162  uint8_t D8;
163 };
164 
165 struct servo_conf_ { // this is a generic way to configure a servo, every multi type with a servo should use it
166  int16_t min; // minimum value, must be more than 1020 with the current implementation
167  int16_t max; // maximum value, must be less than 2000 with the current implementation
168  int16_t middle; // default should be 1500
169  int8_t rate; // range [-100;+100] ; can be used to ajust a rate 0-100% and a direction
170 };
171 
172 typedef struct {
174  uint8_t rcRate8;
175  uint8_t rcExpo8;
176  uint8_t rollPitchRate;
177  uint8_t yawRate;
178  uint8_t dynThrPID;
179  uint8_t thrMid8;
180  uint8_t thrExpo8;
181  int16_t angleTrim[2];
182  #if defined(EXTENDED_AUX_STATES)
183  uint32_t activate[CHECKBOXITEMS]; //Extended aux states define six different aux state for each aux channel
184  #else
185  uint16_t activate[CHECKBOXITEMS];
186  #endif
187  uint8_t powerTrigger1;
188  #if MAG
189  int16_t mag_declination;
190  #endif
191  servo_conf_ servoConf[8];
192  #if defined(GYRO_SMOOTHING)
193  uint8_t Smoothing[3];
194  #endif
195  #if defined (FAILSAFE)
196  int16_t failsafe_throttle;
197  #endif
198  #ifdef VBAT
199  uint8_t vbatscale;
200  uint8_t vbatlevel_warn1;
201  uint8_t vbatlevel_warn2;
202  uint8_t vbatlevel_crit;
203  #endif
204  #ifdef POWERMETER
205  uint8_t pint2ma;
206  #endif
207  #ifdef POWERMETER_HARD
208  uint16_t psensornull;
209  #endif
210  #ifdef MMGYRO
211  uint8_t mmgyro;
212  #endif
213  #ifdef ARMEDTIMEWARNING
214  uint16_t armedtimewarning;
215  #endif
216  int16_t minthrottle;
217  #ifdef GOVERNOR_P
218  int16_t governorP;
219  int16_t governorD;
220  #endif
221  #ifdef YAW_COLL_PRECOMP
222  uint8_t yawCollPrecomp;
223  uint16_t yawCollPrecompDeadband;
224  #endif
225  uint8_t checksum; // MUST BE ON LAST POSITION OF CONF STRUCTURE !
226 } conf_t;
227 
228 #ifdef LOG_PERMANENT
229 typedef struct {
230  uint16_t arm; // #arm events
231  uint16_t disarm; // #disarm events
232  uint16_t start; // #powercycle/reset/initialize events
233  uint32_t armed_time ; // copy of armedTime @ disarm
234  uint32_t lifetime; // sum (armed) lifetime in seconds
235  uint16_t failsafe; // #failsafe state @ disarm
236  uint16_t i2c; // #i2c errs state @ disarm
237  uint8_t running; // toggle on arm & disarm to monitor for clean shutdown vs. powercut
238  uint8_t checksum; // MUST BE ON LAST POSITION OF CONF STRUCTURE !
239 } plog_t;
240 #endif
241 
242 #if GPS
243 
244 // TODO: cross check with I2C gps and add relevant defines
245 
246 //This is the mode what is selected via the remote (NONE, HOLD, RTH and NAV (NAV-> exectute mission)
247 enum gpsmode {
248  GPS_MODE_NONE = 0,
249  GPS_MODE_HOLD,
250  GPS_MODE_RTH,
251  GPS_MODE_NAV
252 };
253 
254 enum navstate {
255  NAV_STATE_NONE = 0,
256  NAV_STATE_RTH_START,
257  NAV_STATE_RTH_ENROUTE,
258  NAV_STATE_HOLD_INFINIT,
259  NAV_STATE_HOLD_TIMED,
260  NAV_STATE_WP_ENROUTE,
261  NAV_STATE_PROCESS_NEXT,
262  NAV_STATE_DO_JUMP,
263  NAV_STATE_LAND_START,
264  NAV_STATE_LAND_IN_PROGRESS,
265  NAV_STATE_LANDED,
266  NAV_STATE_LAND_SETTLE,
267  NAV_STATE_LAND_START_DESCENT
268 };
269 
270 enum naverror {
271  NAV_ERROR_NONE = 0, //All systems clear
272  NAV_ERROR_TOOFAR, //Next waypoint distance is more than safety distance
273  NAV_ERROR_SPOILED_GPS, //GPS reception is compromised - Nav paused - copter is adrift !
274  NAV_ERROR_WP_CRC, //CRC error reading WP data from EEPROM - Nav stopped
275  NAV_ERROR_FINISH, //End flag detected, navigation finished
276  NAV_ERROR_TIMEWAIT, //Waiting for poshold timer
277  NAV_ERROR_INVALID_JUMP, //Invalid jump target detected, aborting
278  NAV_ERROR_INVALID_DATA, //Invalid mission step action code, aborting, copter is adrift
279  NAV_ERROR_WAIT_FOR_RTH_ALT, //Waiting to reach RTH Altitude
280  NAV_ERROR_GPS_FIX_LOST, //Gps fix lost, aborting mission
281  NAV_ERROR_DISARMED, //NAV engine disabled due disarm
282  NAV_ERROR_LANDING //Landing
283 };
284 
285 typedef struct {
286  uint8_t number; //Waypoint number
287  int32_t pos[2]; //GPS position
288  uint8_t action; //Action to follow
289  int16_t parameter1; //Parameter for the action
290  int16_t parameter2; //Parameter for the action
291  int16_t parameter3; //Parameter for the action
292  uint32_t altitude; //Altitude in cm (AGL)
293  uint8_t flag; //flags the last wp and other fancy things that are not yet defined
294  uint8_t checksum; //this must be at the last position
295 } mission_step_struct;
296 
297 
298 typedef struct {
299  //Don't forget to change the reply size in GUI when change this struct;
300 
301  // on/off flags
302  // First byte
303  uint8_t filtering : 1;
304  uint8_t lead_filter : 1;
305  uint8_t dont_reset_home_at_arm : 1;
306  uint8_t nav_controls_heading : 1;
307  uint8_t nav_tail_first : 1;
308  uint8_t nav_rth_takeoff_heading : 1;
309  uint8_t slow_nav : 1;
310  uint8_t wait_for_rth_alt : 1;
311  // Second byte
312  uint8_t ignore_throttle: 1; // Disable stick controls during mission and RTH
313  uint8_t takeover_baro: 1;
314 
315 
316 
317 
318  uint16_t wp_radius; // in cm
319  uint16_t safe_wp_distance; // in meter
320  uint16_t nav_max_altitude; // in meter
321  uint16_t nav_speed_max; // in cm/s
322  uint16_t nav_speed_min; // in cm/s
323  uint8_t crosstrack_gain; // * 100 (0-2.56)
324  uint16_t nav_bank_max; // degree * 100; (3000 default)
325  uint16_t rth_altitude; // in meter
326  uint8_t land_speed; // between 50 and 255 (100 approx = 50cm/sec)
327  uint16_t fence; // fence control in meters
328 
329  uint8_t max_wp_number;
330 
331  uint8_t checksum;
332 } gps_conf_struct;
333 
334 #endif
335 
336 #endif /* TYPES_H_ */
int16_t heading
Definition: types.h:113
int8_t rate
Definition: types.h:169
int16_t max
Definition: types.h:167
uint8_t checksum
Definition: types.h:225
Definition: types.h:86
#define VBAT_CELLS_NUM
Definition: config.h:914
Definition: types.h:45
Definition: types.h:7
uint8_t rcExpo8
Definition: types.h:175
Definition: types.h:11
Definition: types.h:25
uint8_t P8
Definition: types.h:160
Definition: types.h:15
Definition: types.h:20
uint8_t I8
Definition: types.h:161
Definition: types.h:24
int16_t vario
Definition: types.h:108
Definition: types.h:28
Definition: types.h:21
Definition: types.h:26
uint8_t rollPitchRate
Definition: types.h:176
Definition: types.h:159
uint8_t thrExpo8
Definition: types.h:180
int16_t middle
Definition: types.h:168
Definition: types.h:165
uint8_t rcRate8
Definition: types.h:174
Definition: types.h:9
uint16_t watts
Definition: types.h:102
Definition: types.h:5
uint8_t yawRate
Definition: types.h:177
int checksum(UNU uint8_t data[4])
Definition: htu21d.c:41
uint8_t checksum
Definition: types.h:156
uint8_t powerTrigger1
Definition: types.h:187
Definition: types.h:22
int16_t angle[2]
Definition: types.h:89
Definition: types.h:30
uint8_t currentSet
Definition: types.h:152
Definition: types.h:8
Definition: types.h:16
rc
Definition: types.h:4
Definition: types.h:106
Definition: types.h:172
uint16_t intPowerMeterSum
Definition: types.h:99
uint16_t amperage
Definition: types.h:101
Definition: types.h:27
Definition: types.h:111
uint8_t D8
Definition: types.h:162
pid
Definition: types.h:19
Definition: types.h:116
uint16_t flashsum
Definition: types.h:155
Definition: types.h:10
box
Definition: types.h:33
Definition: types.h:34
Definition: types.h:6
uint8_t thrMid8
Definition: types.h:179
int16_t minthrottle
Definition: types.h:216
uint16_t rssi
Definition: types.h:100
Definition: types.h:12
Definition: types.h:23
int32_t EstAlt
Definition: types.h:107
Definition: types.h:13
uint8_t vbat
Definition: types.h:98
Definition: types.h:97
Definition: types.h:29
uint8_t dynThrPID
Definition: types.h:178
Definition: types.h:14
int16_t min
Definition: types.h:166
Definition: types.h:151