2011-03-21 04:25:48 -03:00
|
|
|
// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*-
|
2010-09-11 03:13:28 -03:00
|
|
|
//
|
|
|
|
// This is free software; you can redistribute it and/or modify it under
|
|
|
|
// the terms of the GNU Lesser General Public License as published by the
|
|
|
|
// Free Software Foundation; either version 2.1 of the License, or (at
|
|
|
|
// your option) any later version.
|
|
|
|
//
|
|
|
|
|
|
|
|
///
|
2012-08-17 03:18:11 -03:00
|
|
|
/// @file AP_Common.h
|
2010-09-11 03:13:28 -03:00
|
|
|
/// @brief Common definitions and utility routines for the ArduPilot
|
|
|
|
/// libraries.
|
|
|
|
///
|
|
|
|
|
2012-10-27 00:42:49 -03:00
|
|
|
#ifndef __AP_COMMON_H__
|
|
|
|
#define __AP_COMMON_H__
|
2011-03-21 04:25:48 -03:00
|
|
|
|
2010-09-24 02:50:02 -03:00
|
|
|
#include <stdint.h>
|
2013-01-01 23:43:50 -04:00
|
|
|
#include <stdlib.h>
|
2013-01-01 23:23:45 -04:00
|
|
|
#include <stdbool.h>
|
2011-01-23 22:44:31 -04:00
|
|
|
|
2010-11-27 19:27:08 -04:00
|
|
|
#pragma GCC diagnostic warning "-Wall"
|
|
|
|
#pragma GCC diagnostic warning "-Wextra"
|
|
|
|
#pragma GCC diagnostic warning "-Wlogical-op"
|
|
|
|
#pragma GCC diagnostic ignored "-Wredundant-decls"
|
|
|
|
|
|
|
|
// Make some dire warnings into errors
|
|
|
|
//
|
|
|
|
// Some warnings indicate questionable code; rather than let
|
|
|
|
// these slide, we force them to become errors so that the
|
|
|
|
// developer has to find a safer alternative.
|
|
|
|
//
|
2011-06-22 02:54:55 -03:00
|
|
|
//#pragma GCC diagnostic error "-Wfloat-equal"
|
2010-11-27 19:27:08 -04:00
|
|
|
|
|
|
|
// The following is strictly for type-checking arguments to printf_P calls
|
|
|
|
// in conjunction with a suitably modified Arduino IDE; never define for
|
|
|
|
// production as it generates bad code.
|
|
|
|
//
|
|
|
|
#if PRINTF_FORMAT_WARNING_DEBUG
|
2012-08-17 03:18:11 -03:00
|
|
|
# undef PSTR
|
|
|
|
# define PSTR(_x) _x // help the compiler with printf_P
|
|
|
|
# define float double // silence spurious format warnings for %f
|
2010-11-27 19:27:08 -04:00
|
|
|
#endif
|
2011-03-21 04:25:48 -03:00
|
|
|
|
2011-03-21 04:26:03 -03:00
|
|
|
#define FPSTR(s) (wchar_t *)(s)
|
|
|
|
|
2012-12-19 02:02:13 -04:00
|
|
|
#define ToRad(x) radians(x) // *pi/180
|
|
|
|
#define ToDeg(x) degrees(x) // *180/pi
|
2010-12-28 17:30:29 -04:00
|
|
|
// @}
|
|
|
|
|
|
|
|
|
2010-09-11 03:13:28 -03:00
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
/// @name Types
|
|
|
|
///
|
2011-03-05 00:39:23 -04:00
|
|
|
/// Data structures and types used throughout the libraries and applications. 0 = default
|
2012-08-17 03:18:11 -03:00
|
|
|
/// bit 0: Altitude is stored 0: Absolute, 1: Relative
|
|
|
|
/// bit 1: Chnage Alt between WP 0: Gradually, 1: ASAP
|
2013-01-13 09:29:53 -04:00
|
|
|
/// bit 2: Direction of loiter command 0: Clockwise 1: Counter-Clockwise
|
2011-04-16 01:49:46 -03:00
|
|
|
/// bit 3: Req.to hit WP.alt to continue 0: No, 1: Yes
|
2012-08-17 03:18:11 -03:00
|
|
|
/// bit 4: Relative to Home 0: No, 1: Yes
|
2011-03-05 00:39:23 -04:00
|
|
|
/// bit 5:
|
|
|
|
/// bit 6:
|
2012-08-17 03:18:11 -03:00
|
|
|
/// bit 7: Move to next Command 0: YES, 1: Loiter until commanded
|
2011-03-05 00:39:23 -04:00
|
|
|
|
2010-09-11 03:13:28 -03:00
|
|
|
//@{
|
|
|
|
|
|
|
|
struct Location {
|
2012-08-17 03:18:11 -03:00
|
|
|
uint8_t id; ///< command id
|
|
|
|
uint8_t options; ///< options bitmask (1<<0 = relative altitude)
|
|
|
|
uint8_t p1; ///< param 1
|
|
|
|
int32_t alt; ///< param 2 - Altitude in centimeters (meters * 100)
|
|
|
|
int32_t lat; ///< param 3 - Lattitude * 10**7
|
|
|
|
int32_t lng; ///< param 4 - Longitude * 10**7
|
2010-09-11 03:13:28 -03:00
|
|
|
};
|
|
|
|
|
|
|
|
//@}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
/// @name Conversions
|
|
|
|
///
|
|
|
|
/// Conversion macros and factors.
|
|
|
|
///
|
|
|
|
//@{
|
|
|
|
|
|
|
|
|
2012-05-08 23:22:12 -03:00
|
|
|
/* Product IDs for all supported products follow */
|
|
|
|
|
2012-08-17 03:18:11 -03:00
|
|
|
#define AP_PRODUCT_ID_NONE 0x00 // Hardware in the loop
|
|
|
|
#define AP_PRODUCT_ID_APM1_1280 0x01 // APM1 with 1280 CPUs
|
|
|
|
#define AP_PRODUCT_ID_APM1_2560 0x02 // APM1 with 2560 CPUs
|
2013-01-03 23:26:28 -04:00
|
|
|
#define AP_PRODUCT_ID_SITL 0x03 // Software in the loop
|
|
|
|
#define AP_PRODUCT_ID_PX4 0x04 // PX4 on NuttX
|
2012-08-17 03:18:11 -03:00
|
|
|
#define AP_PRODUCT_ID_APM2ES_REV_C4 0x14 // APM2 with MPU6000ES_REV_C4
|
|
|
|
#define AP_PRODUCT_ID_APM2ES_REV_C5 0x15 // APM2 with MPU6000ES_REV_C5
|
|
|
|
#define AP_PRODUCT_ID_APM2ES_REV_D6 0x16 // APM2 with MPU6000ES_REV_D6
|
|
|
|
#define AP_PRODUCT_ID_APM2ES_REV_D7 0x17 // APM2 with MPU6000ES_REV_D7
|
|
|
|
#define AP_PRODUCT_ID_APM2ES_REV_D8 0x18 // APM2 with MPU6000ES_REV_D8
|
|
|
|
#define AP_PRODUCT_ID_APM2_REV_C4 0x54 // APM2 with MPU6000_REV_C4
|
|
|
|
#define AP_PRODUCT_ID_APM2_REV_C5 0x55 // APM2 with MPU6000_REV_C5
|
|
|
|
#define AP_PRODUCT_ID_APM2_REV_D6 0x56 // APM2 with MPU6000_REV_D6
|
|
|
|
#define AP_PRODUCT_ID_APM2_REV_D7 0x57 // APM2 with MPU6000_REV_D7
|
|
|
|
#define AP_PRODUCT_ID_APM2_REV_D8 0x58 // APM2 with MPU6000_REV_D8
|
|
|
|
#define AP_PRODUCT_ID_APM2_REV_D9 0x59 // APM2 with MPU6000_REV_D9
|
2012-05-08 23:22:12 -03:00
|
|
|
|
2010-09-11 03:13:28 -03:00
|
|
|
#endif // _AP_COMMON_H
|