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 */
31char* 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