C MIP-SDK
|
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