1 /* 2 $License: 3 Copyright (C) 2011 InvenSense Corporation, All Rights Reserved. 4 $ 5 */ 6 7 /** 8 * @defgroup MLERROR 9 * @brief Motion Library - Error definitions. 10 * Definition of the error codes used within the MPL and 11 * returned to the user. 12 * Every function tries to return a meaningful error code basing 13 * on the occuring error condition. The error code is numeric. 14 * 15 * The available error codes and their associated values are: 16 * - (0) INV_SUCCESS 17 * - (32) INV_ERROR 18 * - (22 / EINVAL) INV_ERROR_INVALID_PARAMETER 19 * - (1 / EPERM) INV_ERROR_FEATURE_NOT_ENABLED 20 * - (36) INV_ERROR_FEATURE_NOT_IMPLEMENTED 21 * - (38) INV_ERROR_DMP_NOT_STARTED 22 * - (39) INV_ERROR_DMP_STARTED 23 * - (40) INV_ERROR_NOT_OPENED 24 * - (41) INV_ERROR_OPENED 25 * - (19 / ENODEV) INV_ERROR_INVALID_MODULE 26 * - (12 / ENOMEM) INV_ERROR_MEMORY_EXAUSTED 27 * - (44) INV_ERROR_DIVIDE_BY_ZERO 28 * - (45) INV_ERROR_ASSERTION_FAILURE 29 * - (46) INV_ERROR_FILE_OPEN 30 * - (47) INV_ERROR_FILE_READ 31 * - (48) INV_ERROR_FILE_WRITE 32 * - (49) INV_ERROR_INVALID_CONFIGURATION 33 * - (52) INV_ERROR_SERIAL_CLOSED 34 * - (53) INV_ERROR_SERIAL_OPEN_ERROR 35 * - (54) INV_ERROR_SERIAL_READ 36 * - (55) INV_ERROR_SERIAL_WRITE 37 * - (56) INV_ERROR_SERIAL_DEVICE_NOT_RECOGNIZED 38 * - (57) INV_ERROR_SM_TRANSITION 39 * - (58) INV_ERROR_SM_IMPROPER_STATE 40 * - (62) INV_ERROR_FIFO_OVERFLOW 41 * - (63) INV_ERROR_FIFO_FOOTER 42 * - (64) INV_ERROR_FIFO_READ_COUNT 43 * - (65) INV_ERROR_FIFO_READ_DATA 44 * - (72) INV_ERROR_MEMORY_SET 45 * - (82) INV_ERROR_LOG_MEMORY_ERROR 46 * - (83) INV_ERROR_LOG_OUTPUT_ERROR 47 * - (92) INV_ERROR_OS_BAD_PTR 48 * - (93) INV_ERROR_OS_BAD_HANDLE 49 * - (94) INV_ERROR_OS_CREATE_FAILED 50 * - (95) INV_ERROR_OS_LOCK_FAILED 51 * - (102) INV_ERROR_COMPASS_DATA_OVERFLOW 52 * - (103) INV_ERROR_COMPASS_DATA_UNDERFLOW 53 * - (104) INV_ERROR_COMPASS_DATA_NOT_READY 54 * - (105) INV_ERROR_COMPASS_DATA_ERROR 55 * - (107) INV_ERROR_CALIBRATION_LOAD 56 * - (108) INV_ERROR_CALIBRATION_STORE 57 * - (109) INV_ERROR_CALIBRATION_LEN 58 * - (110) INV_ERROR_CALIBRATION_CHECKSUM 59 * - (111) INV_ERROR_ACCEL_DATA_OVERFLOW 60 * - (112) INV_ERROR_ACCEL_DATA_UNDERFLOW 61 * - (113) INV_ERROR_ACCEL_DATA_NOT_READY 62 * - (114) INV_ERROR_ACCEL_DATA_ERROR 63 * 64 * The available warning codes and their associated values are: 65 * - (115) INV_WARNING_MOTION_RACE 66 * - (116) INV_WARNING_QUAT_TRASHED 67 * 68 * @{ 69 * @file mltypes.h 70 * @} 71 */ 72 73 #ifndef MLTYPES_H 74 #define MLTYPES_H 75 76 #ifdef __KERNEL__ 77 #include <linux/types.h> 78 #include <asm-generic/errno-base.h> 79 #else 80 #include "stdint_invensense.h" 81 #include <errno.h> 82 #endif 83 #include <limits.h> 84 85 #ifndef REMOVE_INV_ERROR_T 86 /*--------------------------- 87 * ML Types 88 *--------------------------*/ 89 90 /** 91 * @struct inv_error_t mltypes.h "mltypes" 92 * @brief The MPL Error Code return type. 93 * 94 * @code 95 * typedef unsigned char inv_error_t; 96 * @endcode 97 */ 98 //typedef unsigned char inv_error_t; 99 typedef int inv_error_t; 100 #endif 101 102 typedef long long inv_time_t; 103 104 #if !defined __GNUC__ && !defined __KERNEL__ 105 typedef int8_t __s8; 106 typedef int16_t __s16; 107 typedef int32_t __s32; 108 typedef int32_t __s64; 109 110 typedef uint8_t __u8; 111 typedef uint16_t __u16; 112 typedef uint32_t __u32; 113 typedef uint64_t __u64; 114 #elif !defined __KERNEL__ 115 #include <sys/types.h> 116 #endif 117 118 #ifndef __cplusplus 119 #ifndef __KERNEL__ 120 typedef int_fast8_t bool; 121 122 #ifndef false 123 #define false 0 124 #endif 125 126 #ifndef true 127 #define true 1 128 #endif 129 130 #endif 131 #endif 132 133 /*--------------------------- 134 * ML Defines 135 *--------------------------*/ 136 137 #ifndef NULL 138 #define NULL 0 139 #endif 140 141 #ifndef __KERNEL__ 142 #ifndef ARRAY_SIZE 143 /* Dimension of an array */ 144 #define ARRAY_SIZE(array) (sizeof(array)/sizeof((array)[0])) 145 #endif 146 #endif 147 /* - ML Errors. - */ 148 #define ERROR_NAME(x) (#x) 149 #define ERROR_CHECK_FIRST(first, x) \ 150 { if (INV_SUCCESS == first) first = x; } 151 152 #define INV_SUCCESS (0) 153 /* Generic Error code. Proprietary Error Codes only */ 154 #define INV_ERROR_BASE (0x20) 155 #define INV_ERROR (INV_ERROR_BASE) 156 157 /* Compatibility and other generic error codes */ 158 #define INV_ERROR_INVALID_PARAMETER (EINVAL) 159 #define INV_ERROR_FEATURE_NOT_ENABLED (EPERM) 160 #define INV_ERROR_FEATURE_NOT_IMPLEMENTED (INV_ERROR_BASE + 4) 161 #define INV_ERROR_DMP_NOT_STARTED (INV_ERROR_BASE + 6) 162 #define INV_ERROR_DMP_STARTED (INV_ERROR_BASE + 7) 163 #define INV_ERROR_NOT_OPENED (INV_ERROR_BASE + 8) 164 #define INV_ERROR_OPENED (INV_ERROR_BASE + 9) 165 #define INV_ERROR_INVALID_MODULE (ENODEV) 166 #define INV_ERROR_MEMORY_EXAUSTED (ENOMEM) 167 #define INV_ERROR_DIVIDE_BY_ZERO (INV_ERROR_BASE + 12) 168 #define INV_ERROR_ASSERTION_FAILURE (INV_ERROR_BASE + 13) 169 #define INV_ERROR_FILE_OPEN (INV_ERROR_BASE + 14) 170 #define INV_ERROR_FILE_READ (INV_ERROR_BASE + 15) 171 #define INV_ERROR_FILE_WRITE (INV_ERROR_BASE + 16) 172 #define INV_ERROR_INVALID_CONFIGURATION (INV_ERROR_BASE + 17) 173 #define INV_ERROR_NOT_AUTHORIZED (INV_ERROR_BASE + 18) 174 175 /* Serial Communication */ 176 #define INV_ERROR_SERIAL_CLOSED (INV_ERROR_BASE + 20) 177 #define INV_ERROR_SERIAL_OPEN_ERROR (INV_ERROR_BASE + 21) 178 #define INV_ERROR_SERIAL_READ (INV_ERROR_BASE + 22) 179 #define INV_ERROR_SERIAL_WRITE (INV_ERROR_BASE + 23) 180 #define INV_ERROR_SERIAL_DEVICE_NOT_RECOGNIZED (INV_ERROR_BASE + 24) 181 182 /* SM = State Machine */ 183 #define INV_ERROR_SM_TRANSITION (INV_ERROR_BASE + 25) 184 #define INV_ERROR_SM_IMPROPER_STATE (INV_ERROR_BASE + 26) 185 186 /* Fifo */ 187 #define INV_ERROR_FIFO_OVERFLOW (INV_ERROR_BASE + 30) 188 #define INV_ERROR_FIFO_FOOTER (INV_ERROR_BASE + 31) 189 #define INV_ERROR_FIFO_READ_COUNT (INV_ERROR_BASE + 32) 190 #define INV_ERROR_FIFO_READ_DATA (INV_ERROR_BASE + 33) 191 192 /* Memory & Registers, Set & Get */ 193 #define INV_ERROR_MEMORY_SET (INV_ERROR_BASE + 40) 194 195 #define INV_ERROR_LOG_MEMORY_ERROR (INV_ERROR_BASE + 50) 196 #define INV_ERROR_LOG_OUTPUT_ERROR (INV_ERROR_BASE + 51) 197 198 /* OS interface errors */ 199 #define INV_ERROR_OS_BAD_PTR (INV_ERROR_BASE + 60) 200 #define INV_ERROR_OS_BAD_HANDLE (INV_ERROR_BASE + 61) 201 #define INV_ERROR_OS_CREATE_FAILED (INV_ERROR_BASE + 62) 202 #define INV_ERROR_OS_LOCK_FAILED (INV_ERROR_BASE + 63) 203 204 /* Compass errors */ 205 #define INV_ERROR_COMPASS_DATA_OVERFLOW (INV_ERROR_BASE + 70) 206 #define INV_ERROR_COMPASS_DATA_UNDERFLOW (INV_ERROR_BASE + 71) 207 #define INV_ERROR_COMPASS_DATA_NOT_READY (INV_ERROR_BASE + 72) 208 #define INV_ERROR_COMPASS_DATA_ERROR (INV_ERROR_BASE + 73) 209 210 /* Load/Store calibration */ 211 #define INV_ERROR_CALIBRATION_LOAD (INV_ERROR_BASE + 75) 212 #define INV_ERROR_CALIBRATION_STORE (INV_ERROR_BASE + 76) 213 #define INV_ERROR_CALIBRATION_LEN (INV_ERROR_BASE + 77) 214 #define INV_ERROR_CALIBRATION_CHECKSUM (INV_ERROR_BASE + 78) 215 216 /* Accel errors */ 217 #define INV_ERROR_ACCEL_DATA_OVERFLOW (INV_ERROR_BASE + 79) 218 #define INV_ERROR_ACCEL_DATA_UNDERFLOW (INV_ERROR_BASE + 80) 219 #define INV_ERROR_ACCEL_DATA_NOT_READY (INV_ERROR_BASE + 81) 220 #define INV_ERROR_ACCEL_DATA_ERROR (INV_ERROR_BASE + 82) 221 222 /* No Motion Warning States */ 223 #define INV_WARNING_MOTION_RACE (INV_ERROR_BASE + 83) 224 #define INV_WARNING_QUAT_TRASHED (INV_ERROR_BASE + 84) 225 #define INV_WARNING_GYRO_MAG (INV_ERROR_BASE + 85) 226 227 #define INV_WARNING_SEMAPHORE_TIMEOUT (INV_ERROR_BASE + 86) 228 229 230 /* For Linux coding compliance */ 231 #ifndef __KERNEL__ 232 #define EXPORT_SYMBOL(x) 233 #endif 234 235 #endif /* MLTYPES_H */ 236