X-Git-Url: http://git.maemo.org/git/?p=mardrone;a=blobdiff_plain;f=mardrone%2FARDrone_SDK_Version_1_8_20110726%2FARDroneLib%2FSoft%2FCommon%2Fconfig.h;fp=mardrone%2FARDrone_SDK_Version_1_8_20110726%2FARDroneLib%2FSoft%2FCommon%2Fconfig.h;h=faa381f9eace50417eabdfa52f156e4e106d521f;hp=0000000000000000000000000000000000000000;hb=9ec9bc13b75d30bc45535c54a652934debfcea92;hpb=ae0a3c2dc0898400aca0dd6b439c5db8044db7b2 diff --git a/mardrone/ARDrone_SDK_Version_1_8_20110726/ARDroneLib/Soft/Common/config.h b/mardrone/ARDrone_SDK_Version_1_8_20110726/ARDroneLib/Soft/Common/config.h new file mode 100644 index 0000000..faa381f --- /dev/null +++ b/mardrone/ARDrone_SDK_Version_1_8_20110726/ARDroneLib/Soft/Common/config.h @@ -0,0 +1,319 @@ +/** +*************************************************************************** +* +* Copyright (C) 2007 Parrot S.A. +* +*************************************************************************** +*/ + +#ifndef _CONFIG_H_ +#define _CONFIG_H_ + +#include +#ifdef _WIN32 + #include +#else + #include + #include +#endif + +#undef ARDRONE_PIC_VERSION + +#define USE_NAVDATA_IP +#define USE_AT_IP +#define USE_VIDEO_IP + +/////////////////////////////////////////////// +// Video configuration +#define VIDEO_ENABLE 1 + +/////////////////////////////////////////////// +// Vision configuration + +#define VISION_ENABLE 1 +// #define VISION_TEST_MODE +#define ARDRONE_VISION_DETECT + +/////////////////////////////////////////////// +// Navdata configuration + +#define NAVDATA_ENABLE 1 +#define ND_WRITE_TO_FILE + +# define NAVDATA_SUBSAMPLING 13 /* 200 / 15 fps = 13.3333 */ + +#if defined(NAVDATA_ENABLE) + +# define NAVDATA_VISION_DETECT_INCLUDED +# define NAVDATA_TRIMS_INCLUDED +# define NAVDATA_WATCHDOG +# define NAVDATA_EULER_ANGLES_INCLUDED +# define NAVDATA_PHYS_MEASURES_INCLUDED +# define NAVDATA_TIME_INCLUDED +# define NAVDATA_RAW_MEASURES_INCLUDED +# define NAVDATA_GYROS_OFFSETS_INCLUDED +# define NAVDATA_REFERENCES_INCLUDED +# define NAVDATA_RC_REFERENCES_INCLUDED +# define NAVDATA_PWM_INCLUDED +# define NAVDATA_ALTITUDE_INCLUDED +# define NAVDATA_VISION_INCLUDED +# define NAVDATA_VISION_PERF_INCLUDED +# define NAVDATA_TRACKERS_SEND +# define NAVDATA_VIDEO_STREAM_INCLUDED + +#endif // ! NAVDATA_ENABLE + +#ifndef ARDRONE_VISION_DETECT +# undef NAVDATA_VISION_DETECT_INCLUDED +#endif // ! ARDRONE_VISION_DETECT + +/////////////////////////////////////////////// +// Wifi configuration + +#define USE_AUTOIP VP_COM_AUTOIP_DISABLE /* VP_COM_AUTOIP_ENABLE */ + +#define WIFI_NETMASK "255.255.255.0" +#define WIFI_GATEWAY WIFI_ARDRONE_IP +#define WIFI_SERVER WIFI_ARDRONE_IP +#define WIFI_SECURE 0 + +#define WIFI_BASE_ADDR 0xc0a80100 // 192.168.1.0 +#define MULTICAST_BASE_ADDR 0xe0010100 // 224.1.1.0 +#define WIFI_BROADCAST_ADDR (WIFI_BASE_ADDR | 0xff) //XXX.XXX.XXX.255 + +// Configure infrastructure mode given wifi driver compilation +#define WIFI_INFRASTRUCTURE 0 + +#define WIFI_PASSKEY "9F1C3EE11CBA230B27BF1C1B6F" + +#define FTP_PORT 5551 +#define AUTH_PORT 5552 +#define NAVDATA_PORT 5554 +#define VIDEO_PORT 5555 +#define AT_PORT 5556 +#define RAW_CAPTURE_PORT 5557 +#define PRINTF_PORT 5558 +#define CONTROL_PORT 5559 + +/////////////////////////////////////////////// +// Wired configuration + +#define WIRED_MOBILE_IP WIFI_MOBILE_IP + +/////////////////////////////////////////////// +// Serial link configuration + +#ifdef USE_ELINUX + +#define SERIAL_LINK_0 "/dev/ttyPA0" +#define SERIAL_LINK_1 "/dev/ttyPA1" +#define SERIAL_LINK_2 "/dev/ttyPA2" + +#endif + +#ifdef USE_LINUX + +#ifdef USE_MINGW32 + +#define SERIAL_LINK_0 "" +#define SERIAL_LINK_1 "" +#define SERIAL_LINK_2 "" + +#else + +// Only USE_LINUX is defined +#define SERIAL_LINK_0 "/dev/ttyUSB0" /* Serial link for navdata & ATCmd */ +#define SERIAL_LINK_1 "/dev/ttyUSB1" /* Serial link for video */ +#define SERIAL_LINK_2 "/dev/ser2" /* Serial link for adc */ + +#endif // USE_MINGW32 + +#endif // USE_LINUX + +#define SL0_BAUDRATE VP_COM_BAUDRATE_460800 /* baud rate for serial link 0 */ +#define SL1_BAUDRATE VP_COM_BAUDRATE_460800 /* baud rate for serial link 1 */ +#define SL2_BAUDRATE VP_COM_BAUDRATE_460800 /* baud rate for serial link 2 */ + +/////////////////////////////////////////////// +// Defines & types used in shared data + +#define ARDRONE_ORIENTATION_HISTORY_SIZE 256 + +#define TSECDEC 21 /* Defines used to format time ( seconds << 21 + useconds ) */ +#define TUSECMASK ((1 << TSECDEC) - 1) +#define TSECMASK (0xffffffff & ~TUSECMASK) +#define TIME_TO_USEC (0xffffffff & ~TUSECMASK) + +#define VBAT_POWERING_OFF 9000 /* Minimum Battery Voltage [mV] to prevent damaging */ + +/* Syslog Configuration */ +#define SYSLOG_NUM_BUFFERS 4 /* Number of actives buffers. When a buffer is full, it's dumped in file */ +#define SYSLOG_BUFFER_SIZE 2048 /* Max number of bytes in a syslog buffer */ +#define SYSLOG_BUFFER_DUMP_SIZE 128 /* Max number of bytes wrote at once during dump */ + + +#define DEFAULT_MISC1_VALUE 2 +#define DEFAULT_MISC2_VALUE 20 +#define DEFAULT_MISC3_VALUE 2000 +#define DEFAULT_MISC4_VALUE 3000 + + +typedef enum { + MISC_VAR1 = 0, + MISC_VAR2, + MISC_VAR3, + MISC_VAR4, + NB_MISC_VARS +} misc_var_t; + +// Mayday scenarii +typedef enum { + ARDRONE_ANIM_PHI_M30_DEG= 0, + ARDRONE_ANIM_PHI_30_DEG, + ARDRONE_ANIM_THETA_M30_DEG, + ARDRONE_ANIM_THETA_30_DEG, + ARDRONE_ANIM_THETA_20DEG_YAW_200DEG, + ARDRONE_ANIM_THETA_20DEG_YAW_M200DEG, + ARDRONE_ANIM_TURNAROUND, + ARDRONE_ANIM_TURNAROUND_GODOWN, + ARDRONE_ANIM_YAW_SHAKE, + ARDRONE_ANIM_YAW_DANCE, + ARDRONE_ANIM_PHI_DANCE, + ARDRONE_ANIM_THETA_DANCE, + ARDRONE_ANIM_VZ_DANCE, + ARDRONE_ANIM_WAVE, + ARDRONE_ANIM_PHI_THETA_MIXED, + ARDRONE_ANIM_DOUBLE_PHI_THETA_MIXED, + ARDRONE_NB_ANIM_MAYDAY +} anim_mayday_t; + +// Bitfield definition for user input + +typedef enum { + ARDRONE_UI_BIT_AG = 0, + ARDRONE_UI_BIT_AB = 1, + ARDRONE_UI_BIT_AD = 2, + ARDRONE_UI_BIT_AH = 3, + ARDRONE_UI_BIT_L1 = 4, + ARDRONE_UI_BIT_R1 = 5, + ARDRONE_UI_BIT_L2 = 6, + ARDRONE_UI_BIT_R2 = 7, + ARDRONE_UI_BIT_SELECT = 8, + ARDRONE_UI_BIT_START = 9, + ARDRONE_UI_BIT_TRIM_THETA = 18, + ARDRONE_UI_BIT_TRIM_PHI = 20, + ARDRONE_UI_BIT_TRIM_YAW = 22, + ARDRONE_UI_BIT_X = 24, + ARDRONE_UI_BIT_Y = 28, +} ardrone_ui_bitfield_t; + + +/// \enum def_ardrone_state_mask_t is a bit field representing ARDrone' state + + +// Define masks for ARDrone state +// 31 0 +// x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x -> state +// | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +// | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | FLY MASK : (0) ardrone is landed, (1) ardrone is flying +// | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | VIDEO MASK : (0) video disable, (1) video enable +// | | | | | | | | | | | | | | | | | | | | | | | | | | | | | VISION MASK : (0) vision disable, (1) vision enable +// | | | | | | | | | | | | | | | | | | | | | | | | | | | | CONTROL ALGO : (0) euler angles control, (1) angular speed control +// | | | | | | | | | | | | | | | | | | | | | | | | | | | ALTITUDE CONTROL ALGO : (0) altitude control inactive (1) altitude control active +// | | | | | | | | | | | | | | | | | | | | | | | | | | USER feedback : Start button state +// | | | | | | | | | | | | | | | | | | | | | | | | | Control command ACK : (0) None, (1) one received +// | | | | | | | | | | | | | | | | | | | | | | | | Trim command ACK : (0) None, (1) one received +// | | | | | | | | | | | | | | | | | | | | | | | Trim running : (0) none, (1) running +// | | | | | | | | | | | | | | | | | | | | | | Trim result : (0) failed, (1) succeeded +// | | | | | | | | | | | | | | | | | | | | | Navdata demo : (0) All navdata, (1) only navdata demo +// | | | | | | | | | | | | | | | | | | | | Navdata bootstrap : (0) options sent in all or demo mode, (1) no navdata options sent +// | | | | | | | | | | | | | | | | | | | | Motors status : (0) Ok, (1) Motors Com is down +// | | | | | | | | | | | | | | | | | | +// | | | | | | | | | | | | | | | | | Bit means that there's an hardware problem with gyrometers +// | | | | | | | | | | | | | | | | VBat low : (1) too low, (0) Ok +// | | | | | | | | | | | | | | | VBat high (US mad) : (1) too high, (0) Ok +// | | | | | | | | | | | | | | Timer elapsed : (1) elapsed, (0) not elapsed +// | | | | | | | | | | | | | Power : (0) Ok, (1) not enough to fly +// | | | | | | | | | | | | Angles : (0) Ok, (1) out of range +// | | | | | | | | | | | Wind : (0) Ok, (1) too much to fly +// | | | | | | | | | | Ultrasonic sensor : (0) Ok, (1) deaf +// | | | | | | | | | Cutout system detection : (0) Not detected, (1) detected +// | | | | | | | | PIC Version number OK : (0) a bad version number, (1) version number is OK +// | | | | | | | ATCodec thread ON : (0) thread OFF (1) thread ON +// | | | | | | Navdata thread ON : (0) thread OFF (1) thread ON +// | | | | | Video thread ON : (0) thread OFF (1) thread ON +// | | | | Acquisition thread ON : (0) thread OFF (1) thread ON +// | | | CTRL watchdog : (1) delay in control execution (> 5ms), (0) control is well scheduled // Check frequency of control loop +// | | ADC Watchdog : (1) delay in uart2 dsr (> 5ms), (0) uart2 is good // Check frequency of uart2 dsr (com with adc) +// | Communication Watchdog : (1) com problem, (0) Com is ok // Check if we have an active connection with a client +// Emergency landing : (0) no emergency, (1) emergency + +typedef enum { + ARDRONE_FLY_MASK = 1 << 0, /*!< FLY MASK : (0) ardrone is landed, (1) ardrone is flying */ + ARDRONE_VIDEO_MASK = 1 << 1, /*!< VIDEO MASK : (0) video disable, (1) video enable */ + ARDRONE_VISION_MASK = 1 << 2, /*!< VISION MASK : (0) vision disable, (1) vision enable */ + ARDRONE_CONTROL_MASK = 1 << 3, /*!< CONTROL ALGO : (0) euler angles control, (1) angular speed control */ + ARDRONE_ALTITUDE_MASK = 1 << 4, /*!< ALTITUDE CONTROL ALGO : (0) altitude control inactive (1) altitude control active */ + ARDRONE_USER_FEEDBACK_START = 1 << 5, /*!< USER feedback : Start button state */ + ARDRONE_COMMAND_MASK = 1 << 6, /*!< Control command ACK : (0) None, (1) one received */ + ARDRONE_FW_FILE_MASK = 1 << 7, /* Firmware file is good (1) */ + ARDRONE_FW_VER_MASK = 1 << 8, /* Firmware update is newer (1) */ +// ARDRONE_FW_UPD_MASK = 1 << 9, /* Firmware update is ongoing (1) */ + ARDRONE_NAVDATA_DEMO_MASK = 1 << 10, /*!< Navdata demo : (0) All navdata, (1) only navdata demo */ + ARDRONE_NAVDATA_BOOTSTRAP = 1 << 11, /*!< Navdata bootstrap : (0) options sent in all or demo mode, (1) no navdata options sent */ + ARDRONE_MOTORS_MASK = 1 << 12, /*!< Motors status : (0) Ok, (1) Motors problem */ + ARDRONE_COM_LOST_MASK = 1 << 13, /*!< Communication Lost : (1) com problem, (0) Com is ok */ + ARDRONE_VBAT_LOW = 1 << 15, /*!< VBat low : (1) too low, (0) Ok */ + ARDRONE_USER_EL = 1 << 16, /*!< User Emergency Landing : (1) User EL is ON, (0) User EL is OFF*/ + ARDRONE_TIMER_ELAPSED = 1 << 17, /*!< Timer elapsed : (1) elapsed, (0) not elapsed */ + ARDRONE_ANGLES_OUT_OF_RANGE = 1 << 19, /*!< Angles : (0) Ok, (1) out of range */ + ARDRONE_ULTRASOUND_MASK = 1 << 21, /*!< Ultrasonic sensor : (0) Ok, (1) deaf */ + ARDRONE_CUTOUT_MASK = 1 << 22, /*!< Cutout system detection : (0) Not detected, (1) detected */ + ARDRONE_PIC_VERSION_MASK = 1 << 23, /*!< PIC Version number OK : (0) a bad version number, (1) version number is OK */ + ARDRONE_ATCODEC_THREAD_ON = 1 << 24, /*!< ATCodec thread ON : (0) thread OFF (1) thread ON */ + ARDRONE_NAVDATA_THREAD_ON = 1 << 25, /*!< Navdata thread ON : (0) thread OFF (1) thread ON */ + ARDRONE_VIDEO_THREAD_ON = 1 << 26, /*!< Video thread ON : (0) thread OFF (1) thread ON */ + ARDRONE_ACQ_THREAD_ON = 1 << 27, /*!< Acquisition thread ON : (0) thread OFF (1) thread ON */ + ARDRONE_CTRL_WATCHDOG_MASK = 1 << 28, /*!< CTRL watchdog : (1) delay in control execution (> 5ms), (0) control is well scheduled */ + ARDRONE_ADC_WATCHDOG_MASK = 1 << 29, /*!< ADC Watchdog : (1) delay in uart2 dsr (> 5ms), (0) uart2 is good */ + ARDRONE_COM_WATCHDOG_MASK = 1 << 30, /*!< Communication Watchdog : (1) com problem, (0) Com is ok */ + ARDRONE_EMERGENCY_MASK = 1 << 31 /*!< Emergency landing : (0) no emergency, (1) emergency */ +} def_ardrone_state_mask_t; + +static INLINE uint32_t ardrone_set_state_with_mask( uint32_t state, uint32_t mask, bool_t value ) +{ + state &= ~mask; + if( value ) + state |= mask; + + return state; +} + +/** Returns a bit value of state from a mask + * This function is used to test bits from a bit field like def_ardrone_state_mask_t + * + * @param state a 32 bits word we want to test + * @param mask a mask that tells the bit to test + * @return TRUE if bit is set, FALSE otherwise + */ +static INLINE bool_t ardrone_get_mask_from_state( uint32_t state, uint32_t mask ) +{ + return state & mask ? TRUE : FALSE; +} + +/** Convert time value from proprietary format to (unsigned int) micro-second value + * + * @param time value in proprietary format + * @return time value in micro-second value (unsigned int) + */ +static INLINE uint32_t ardrone_time_to_usec( uint32_t time ) +{ + return ((uint32_t)(time >> TSECDEC) * 1000000 + (uint32_t)(time & TUSECMASK)); +} + + +#ifdef DEBUG_MODE +#define POSIX_DEBUG +#endif // DEBUG_MODE + +#endif // _CONFIG_H_