C MIP-SDK
mip.h
Go to the documentation of this file.
00001 
00002 //
00006 //
00008 //
00009 // External dependencies:
00010 //
00011 //  mip_types.h
00012 // 
00014 //
00017 //
00027 //
00029 
00030 
00031 #ifndef _MIP_H
00032 #define _MIP_H
00033 
00034 #ifdef __cplusplus
00035  extern "C" {
00036 #endif
00037    
00039 //
00040 //Include Files
00041 //
00043 
00044 #include "mip_types.h"
00045 
00046 
00048 //
00049 // Defines
00050 //
00052 
00053 
00055 // MIP 
00057 
00059 
00060 //Sync Bytes
00061 #define MIP_SYNC_BYTE1         0x75 
00062 #define MIP_SYNC_BYTE2         0x65
00063 
00064 //MIP Packet Sizes
00065 #define MIP_HEADER_SIZE           sizeof(mip_header)            
00066 #define MIP_CHECKSUM_SIZE         2
00067 #define MIP_MAX_PAYLOAD_SIZE      255
00068 #define MIP_MAX_PAYLOAD_DATA_SIZE 253
00069 #define MIP_FIELD_HEADER_SIZE     sizeof(mip_field_header)
00070 #define MIP_MAX_PACKET_SIZE       (MIP_HEADER_SIZE + MIP_MAX_PAYLOAD_SIZE + MIP_CHECKSUM_SIZE)
00071 
00072 
00074 // GLOBAL MIP DESCRIPTORS  (global desc are 0xF0 - 0xFF) - same usage in all descriptor sets
00076 
00077 #define MIP_REPLY_DESC_GLOBAL_ACK_NACK                                  0xF1 // Ack/nack desc is same in all sets
00078 #define MIP_DESC_GLOBAL_PRODUCTION_TEST                                 0xFE // Production Test desc is same in all sets
00079 
00080 
00082 // GLOBAL ACK/NACK ERROR CODES
00084 
00085 #define MIP_ACK_NACK_ERROR_NONE                0x00
00086 
00087 #define MIP_ACK_NACK_ERROR_UNKNOWN_COMMAND        0x01
00088 #define MIP_ACK_NACK_ERROR_CHECKSUM_INVALID       0x02
00089 #define MIP_ACK_NACK_ERROR_PARAMETER_INVALID      0x03
00090 #define MIP_ACK_NACK_ERROR_COMMAND_FAILED         0x04
00091 #define MIP_ACK_NACK_ERROR_COMMAND_TIMEOUT        0x05
00092 #define MIP_ACK_NACK_ERROR_UNKNOWN_DESCRIPTOR_SET 0x06
00093 
00094 
00095 
00097 //Function Return Codes
00099 
00100 #define MIP_OK                   0
00101 #define MIP_ERROR                1
00102 #define MIP_MEMORY_ERROR         2
00103 #define MIP_FIELD_NOT_AVAILABLE  3
00104 #define MIP_INVALID_PACKET       4
00105 #define MIP_CHECKSUM_ERROR       5
00106 
00107 
00108 //Function Selector Byte for Settings 
00109 
00110 #define MIP_FUNCTION_SELECTOR_WRITE        0x01
00111 #define MIP_FUNCTION_SELECTOR_READ         0x02
00112 #define MIP_FUNCTION_SELECTOR_STORE_EEPROM 0x03
00113 #define MIP_FUNCTION_SELECTOR_LOAD_EEPROM  0x04
00114 #define MIP_FUNCTION_SELECTOR_LOAD_DEFAULT 0x05
00115 
00116 //AHRS Supported Descriptors Macro
00117 #define IS_MIP_FUNCTION_SELECTOR(SELECTOR) (((SELECTOR) == MIP_FUNCTION_SELECTOR_WRITE)        || \
00118                                             ((SELECTOR) == MIP_FUNCTION_SELECTOR_READ)         || \
00119                                             ((SELECTOR) == MIP_FUNCTION_SELECTOR_STORE_EEPROM) || \
00120                                             ((SELECTOR) == MIP_FUNCTION_SELECTOR_LOAD_EEPROM)  || \
00121                                             ((SELECTOR) == MIP_FUNCTION_SELECTOR_LOAD_DEFAULT))
00122 
00123 
00124 
00126 //
00127 // Structures
00128 //
00130 
00131 #pragma pack(1)
00132 
00134 //MIP Packet Header 
00136 
00137 typedef struct _mip_header
00138 {
00139  u8 sync1, sync2;
00140  u8 descriptor_set, payload_size; 
00141 }mip_header;
00142 
00144 //MIP Field Header
00146 
00147 typedef struct _mip_field_header
00148 {
00149  u8 size;
00150  u8 descriptor;
00151 }mip_field_header;
00152 
00153 
00155 //MIP ACK/NACK Response
00157 
00158 typedef struct _global_ack_nack_field
00159 {
00160  u8 command_echo_byte;
00161  u8 error_code;
00162 }global_ack_nack_field;
00163 
00164 
00165 #pragma pack()
00166 
00167 
00168 
00170 //
00171 // Function Prototypes
00172 //
00174 
00175 u16 mip_init(u8 *mip_buffer, u16 buffer_size, u8 descriptor_set);
00176 u16 mip_add_field(u8 *mip_buffer, u16 buffer_size, void *field_data, u16 data_size, u16 data_descriptor);
00177 u16 mip_add_formatted_field(u8 *mip_buffer, u16 buffer_size, void *field);
00178 u16 mip_finalize(u8 *mip_buffer);
00179 
00180 u16 mip_is_initialized(u8 *mip_buffer, u8 descriptor_set);
00181 u16 mip_is_mip_packet (u8 *mip_buffer);
00182 
00183 u8  mip_get_packet_descriptor_set(u8 *mip_buffer);
00184 u8  mip_get_payload_size(u8 *mip_buffer);
00185 u8  *mip_get_payload_ptr(u8 *mip_buffer);
00186 
00187 u16 mip_get_packet_size(u8 *mip_buffer);
00188 
00189 u16 mip_get_first_field(u8 *mip_buffer, mip_field_header **field_header, u8 **field_data, u16 *field_offset);
00190 u16 mip_get_next_field(u8 *mip_buffer, mip_field_header **field_header, u8 **field_data, u16 *field_offset);
00191 
00192 u16 mip_calculate_checksum(u8 *mip_buffer);
00193 u16 mip_is_checksum_valid(u8 *mip_buffer);
00194 
00195 #ifdef __cplusplus
00196 }
00197 #endif
00198 
00199 #endif
 All Data Structures Files Functions Defines