You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
4.4 KiB
135 lines
4.4 KiB
/** @file |
|
* @brief MAVLink comm protocol option constants. |
|
* @see http://qgroundcontrol.org/mavlink/ |
|
* Edited on Monday, August 8 2011 |
|
*/ |
|
|
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif |
|
|
|
#ifndef _ML_OPTIONS_H_ |
|
#define _ML_OPTIONS_H_ |
|
|
|
|
|
/** |
|
* |
|
* Receive message length check option. On receive verify the length field |
|
* as soon as the message ID field is received. Requires a 256 byte const |
|
* table. Comment out the define to leave out the table and code to check it. |
|
* |
|
*/ |
|
//#define MAVLINK_CHECK_LENGTH |
|
|
|
/** |
|
* |
|
* Receive message buffer option. This option should be used only when the |
|
* side effects are understood but allows the underlying program access to |
|
* the internal recieve buffer - eliminating the usual double buffering. It |
|
* also REQUIRES changes in the return type of mavlink_parse_char so only |
|
* enable if you make the changes required. Default DISABLED. |
|
* |
|
*/ |
|
//#define MAVLINK_STATIC_BUFFER |
|
|
|
/** |
|
* |
|
* Receive message buffers option. This option defines how many msg buffers |
|
* mavlink will define, and thereby how many links it can support. A default |
|
* will be supplied if the symbol is not pre-defined, dependant on the make |
|
* envionment. The default is 16 for a recognised OS envionment and 1 |
|
* otherwise. |
|
* |
|
*/ |
|
#if !(defined MAVLINK_COMM_NUM_BUFFERS) || (MAVLINK_COMM_NUM_BUFFERS < 1) |
|
#undef MAVLINK_COMM_NUM_BUFFERS |
|
#if (defined linux) || (defined __linux) || (defined __MACH__) || (defined _WIN32) || (defined __APPLE__) |
|
#define MAVLINK_COMM_NUM_BUFFERS 16 |
|
#else |
|
#define MAVLINK_COMM_NUM_BUFFERS 1 |
|
#endif |
|
#endif |
|
|
|
|
|
/** |
|
* |
|
* Data relization option. This option controls inclusion of the file |
|
* mavlink_data.h in the current compile unit - thus defining mavlink's |
|
* variables. Default is ON (not defined) because typically mavlink.h is only |
|
* included once in a system but if it was used in two files there would |
|
* be duplicate variables at link time. Normal practice would be to define |
|
* this symbol outside of this file as defining it here will cause missing |
|
* symbols at link time. In other words in the first file to include mavlink.h |
|
* do not define this sybol, then define this symbol in all other files before |
|
* including mavlink.h |
|
* |
|
*/ |
|
//#define MAVLINK_NO_DATA |
|
#ifdef MAVLINK_NO_DATA |
|
#undef MAVLINK_DATA |
|
#else |
|
#define MAVLINK_DATA |
|
#endif |
|
|
|
/** |
|
* |
|
* Custom data const data relization and access options. |
|
* This define is placed in the form |
|
* const uint8_t MAVLINK_CONST name[] = { ... }; |
|
* for the keys table and (if applicable) lengths table to tell the compiler |
|
* were to put the data. The access option is placed in the form |
|
* variable = MAVLINK_CONST_READ( name[i] ); |
|
* in order to allow custom read function's or accessors. |
|
* By default MAVLINK_CONST is defined as nothing and MAVLINK_CONST_READ as |
|
* MAVLINK_CONST_READ( a ) a |
|
* These symbols are only defined if not already defined allowing this file |
|
* to remain unchanged while the actual definitions are maintained in external |
|
* files. |
|
* |
|
*/ |
|
#ifndef MAVLINK_CONST |
|
#define MAVLINK_CONST |
|
#endif |
|
#ifndef MAVLINK_CONST_READ |
|
#define MAVLINK_CONST_READ( a ) a |
|
#endif |
|
|
|
|
|
/** |
|
* |
|
* Convience functions. These are all in one send functions that are very |
|
* easy to use. Just define the symbol MAVLINK_USE_CONVENIENCE_FUNCTIONS. |
|
* These functions also support a buffer check, to ensure there is enough |
|
* space in your comm buffer that the function would not block - it could |
|
* also be used as the basis of a MUTEX. This is implemented in the send |
|
* function as a macro with two arguments, first the comm chan number and |
|
* the message length in the form |
|
* MAVLINK_BUFFER_CHECK_START( chan, MAVLINK_MSG_ID_LEN ) |
|
* followed by the function code and then |
|
* MAVLINK_BUFFER_CHECK_START |
|
* Note that there are no terminators on these statements to allow for |
|
* code nesting or other constructs. Default value for both is empty. |
|
* A sugested implementation is shown below and the symbols will be defined |
|
* only if they are not allready. |
|
* |
|
* if ( serial_space( chan ) > len ) { // serial_space returns available space |
|
* ..... code that creates message |
|
* } |
|
* |
|
* #define MAVLINK_BUFFER_CHECK_START( c, l ) if ( serial_space( c ) > l ) { |
|
* #define MAVLINK_BUFFER_CHECK_END } |
|
* |
|
*/ |
|
//#define MAVLINK_USE_CONVENIENCE_FUNCTIONS |
|
#ifndef MAVLINK_BUFFER_CHECK_START |
|
#define MAVLINK_BUFFER_CHECK_START( c, l ) ; |
|
#endif |
|
#ifndef MAVLINK_BUFFER_CHECK_END |
|
#define MAVLINK_BUFFER_CHECK_END ; |
|
#endif |
|
|
|
#endif /* _ML_OPTIONS_H_ */ |
|
|
|
#ifdef __cplusplus |
|
} |
|
#endif
|
|
|