summaryrefslogtreecommitdiffstats
path: root/libtiutils/ErrorUtils.cpp
blob: df0e51c2be4397392a32b47140cc2ac541713118 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/*
 * Copyright (C) Texas Instruments - http://www.ti.com/
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


#include "ErrorUtils.h"

namespace android {

/**
   @brief Method to convert from POSIX to Android errors

   @param error Any of the standard POSIX error codes (defined in bionic/libc/kernel/common/asm-generic/errno.h)
   @return Any of the standard Android error code (defined in frameworks/base/include/utils/Errors.h)
 */
status_t ErrorUtils::posixToAndroidError(int error)
{
    switch(error)
        {
        case 0:
            return NO_ERROR;
        case EINVAL:
        case EFBIG:
        case EMSGSIZE:
        case E2BIG:
        case EFAULT:
        case EILSEQ:
            return BAD_VALUE;
        case ENOSYS:
            return INVALID_OPERATION;
        case EACCES:
        case EPERM:
            return PERMISSION_DENIED;
        case EADDRINUSE:
        case EAGAIN:
        case EALREADY:
        case EBUSY:
        case EEXIST:
        case EINPROGRESS:
            return ALREADY_EXISTS;
        case ENOMEM:
            return NO_MEMORY;
        default:
            return UNKNOWN_ERROR;
        };

    return NO_ERROR;
}


/**
   @brief Method to convert from TI OSAL to Android errors

   @param error Any of the standard TI OSAL error codes (defined in
                                                                                            hardware/ti/omx/ducati/domx/system/mm_osal/inc/timm_osal_error.h)
   @return Any of the standard Android error code  (defined in frameworks/base/include/utils/Errors.h)
 */
status_t ErrorUtils::osalToAndroidError(TIMM_OSAL_ERRORTYPE error)
{
    switch(error)
    {
    case TIMM_OSAL_ERR_NONE:
        return NO_ERROR;
    case TIMM_OSAL_ERR_ALLOC:
        return NO_MEMORY;
    default:
        return UNKNOWN_ERROR;
    }

    return NO_ERROR;
}

/**
   @brief Method to convert from OMX to Android errors

   @param error Any of the standard OMX error codes (defined in hardware/ti/omx/ducati/domx/system/omx_core/inc/OMX_Core.h)
   @return Any of the standard Android error code (defined in frameworks/base/include/utils/Errors.h)
 */
status_t ErrorUtils::omxToAndroidError(OMX_ERRORTYPE error)
{
    switch(error)
        {
        case OMX_ErrorNone:
            return NO_ERROR;
        case OMX_ErrorBadParameter:
        case OMX_ErrorInvalidComponentName:
        case OMX_ErrorUndefined:
        case OMX_ErrorInvalidState:
        case OMX_ErrorStreamCorrupt:
        case OMX_ErrorPortsNotCompatible:
        case OMX_ErrorVersionMismatch:
        case OMX_ErrorMbErrorsInFrame:
            return BAD_VALUE;
        case OMX_ErrorInsufficientResources:
            return NO_MEMORY;
        case OMX_ErrorComponentNotFound:
        case OMX_ErrorNotImplemented:
        case OMX_ErrorFormatNotDetected:
        case OMX_ErrorUnsupportedSetting:
            return NAME_NOT_FOUND;
        case OMX_ErrorUnderflow:
        case OMX_ErrorOverflow:
        case OMX_ErrorUnsupportedIndex:
        case OMX_ErrorBadPortIndex:
            return BAD_INDEX;
        case OMX_ErrorHardware:
        case OMX_ErrorContentPipeCreationFailed:
        case OMX_ErrorContentPipeOpenFailed:
            return FAILED_TRANSACTION;
        case OMX_ErrorTimeout:
           return TIMED_OUT;
        case OMX_ErrorSameState:
        case OMX_ErrorIncorrectStateTransition:
        case OMX_ErrorIncorrectStateOperation:
           return PERMISSION_DENIED;
        case OMX_ErrorTunnelingUnsupported:
           return INVALID_OPERATION;
        default:
            return UNKNOWN_ERROR;
        }

    return NO_ERROR;
}


};