1 /*
2  $License:
3     Copyright (C) 2011 InvenSense Corporation, All Rights Reserved.
4  $
5  */
6 
7 /******************************************************************************
8  *
9  * $Id: mlerrorcode.c 5629 2011-06-11 03:13:08Z mcaramello $
10  *
11  *****************************************************************************/
12 
13 #include <stdio.h>
14 #include <string.h>
15 
16 #include "mltypes.h"
17 #include "mlerrorcode.h"
18 
19 #define ERROR_CODE_CASE(CODE)   \
20     case CODE:                  \
21         return #CODE            \
22 
23 /**
24  *  @brief  return a string containing the label assigned to the error code.
25  *
26  *  @param  errorcode
27  *              The errorcode value of which the label has to be returned.
28  *
29  *  @return A string containing the error code label.
30  */
MLErrorCode(inv_error_t errorcode)31 char* MLErrorCode(inv_error_t errorcode)
32 {
33     switch(errorcode) {
34         ERROR_CODE_CASE(INV_SUCCESS);
35         ERROR_CODE_CASE(INV_ERROR);
36         ERROR_CODE_CASE(INV_ERROR_INVALID_PARAMETER);
37         ERROR_CODE_CASE(INV_ERROR_FEATURE_NOT_ENABLED);
38         ERROR_CODE_CASE(INV_ERROR_FEATURE_NOT_IMPLEMENTED);
39         ERROR_CODE_CASE(INV_ERROR_DMP_NOT_STARTED);
40         ERROR_CODE_CASE(INV_ERROR_DMP_STARTED);
41         ERROR_CODE_CASE(INV_ERROR_NOT_OPENED);
42         ERROR_CODE_CASE(INV_ERROR_OPENED);
43         ERROR_CODE_CASE(INV_ERROR_INVALID_MODULE);
44         ERROR_CODE_CASE(INV_ERROR_MEMORY_EXAUSTED);
45         ERROR_CODE_CASE(INV_ERROR_DIVIDE_BY_ZERO);
46         ERROR_CODE_CASE(INV_ERROR_ASSERTION_FAILURE);
47         ERROR_CODE_CASE(INV_ERROR_FILE_OPEN);
48         ERROR_CODE_CASE(INV_ERROR_FILE_READ);
49         ERROR_CODE_CASE(INV_ERROR_FILE_WRITE);
50 
51         ERROR_CODE_CASE(INV_ERROR_SERIAL_CLOSED);
52         ERROR_CODE_CASE(INV_ERROR_SERIAL_OPEN_ERROR);
53         ERROR_CODE_CASE(INV_ERROR_SERIAL_READ);
54         ERROR_CODE_CASE(INV_ERROR_SERIAL_WRITE);
55         ERROR_CODE_CASE(INV_ERROR_SERIAL_DEVICE_NOT_RECOGNIZED);
56 
57         ERROR_CODE_CASE(INV_ERROR_SM_TRANSITION);
58         ERROR_CODE_CASE(INV_ERROR_SM_IMPROPER_STATE);
59 
60         ERROR_CODE_CASE(INV_ERROR_FIFO_OVERFLOW);
61         ERROR_CODE_CASE(INV_ERROR_FIFO_FOOTER);
62         ERROR_CODE_CASE(INV_ERROR_FIFO_READ_COUNT);
63         ERROR_CODE_CASE(INV_ERROR_FIFO_READ_DATA);
64         ERROR_CODE_CASE(INV_ERROR_MEMORY_SET);
65 
66         ERROR_CODE_CASE(INV_ERROR_LOG_MEMORY_ERROR);
67         ERROR_CODE_CASE(INV_ERROR_LOG_OUTPUT_ERROR);
68 
69         ERROR_CODE_CASE(INV_ERROR_OS_BAD_PTR);
70         ERROR_CODE_CASE(INV_ERROR_OS_BAD_HANDLE);
71         ERROR_CODE_CASE(INV_ERROR_OS_CREATE_FAILED);
72         ERROR_CODE_CASE(INV_ERROR_OS_LOCK_FAILED);
73 
74         ERROR_CODE_CASE(INV_ERROR_COMPASS_DATA_OVERFLOW);
75         ERROR_CODE_CASE(INV_ERROR_COMPASS_DATA_UNDERFLOW);
76         ERROR_CODE_CASE(INV_ERROR_COMPASS_DATA_NOT_READY);
77         ERROR_CODE_CASE(INV_ERROR_COMPASS_DATA_ERROR);
78 
79         ERROR_CODE_CASE(INV_ERROR_CALIBRATION_LOAD);
80         ERROR_CODE_CASE(INV_ERROR_CALIBRATION_STORE);
81         ERROR_CODE_CASE(INV_ERROR_CALIBRATION_LEN);
82         ERROR_CODE_CASE(INV_ERROR_CALIBRATION_CHECKSUM);
83 
84         default:
85         {
86             #define UNKNOWN_ERROR_CODE 1234
87             return ERROR_NAME(UNKNOWN_ERROR_CODE);
88             break;
89         }
90 
91     }
92 }
93 
94 /**
95  *  @}
96  */
97