1c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*
2c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Copyright (C) Texas Instruments - http://www.ti.com/
3c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
4c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Licensed under the Apache License, Version 2.0 (the "License");
5c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * you may not use this file except in compliance with the License.
6c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * You may obtain a copy of the License at
7c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
8c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *      http://www.apache.org/licenses/LICENSE-2.0
9c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
10c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Unless required by applicable law or agreed to in writing, software
11c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * distributed under the License is distributed on an "AS IS" BASIS,
12c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * See the License for the specific language governing permissions and
14c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * limitations under the License.
15c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
16c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
17c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
18c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include "ErrorUtils.h"
19c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
20f7a4d11e9f710e2cd0592310ac1baecccb85f1d1Jason Simmonsnamespace Ti {
21f7a4d11e9f710e2cd0592310ac1baecccb85f1d1Jason Simmonsnamespace Utils {
22c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
23c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
24c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   @brief Method to convert from POSIX to Android errors
25c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
26c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   @param error Any of the standard POSIX error codes (defined in bionic/libc/kernel/common/asm-generic/errno.h)
27c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   @return Any of the standard Android error code (defined in frameworks/base/include/utils/Errors.h)
28c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
29c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevstatus_t ErrorUtils::posixToAndroidError(int error)
30c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
31c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    switch(error)
32c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        {
33c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case 0:
34c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            return NO_ERROR;
35c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case EINVAL:
36c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case EFBIG:
37c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case EMSGSIZE:
38c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case E2BIG:
39c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case EFAULT:
40c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case EILSEQ:
41c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            return BAD_VALUE;
42c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case ENOSYS:
43c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            return INVALID_OPERATION;
44c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case EACCES:
45c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case EPERM:
46c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            return PERMISSION_DENIED;
47c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case EADDRINUSE:
48c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case EAGAIN:
49c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case EALREADY:
50c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case EBUSY:
51c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case EEXIST:
52c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case EINPROGRESS:
53c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            return ALREADY_EXISTS;
54c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case ENOMEM:
55c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            return NO_MEMORY;
56c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        default:
57c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            return UNKNOWN_ERROR;
58c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        };
59c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
60c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    return NO_ERROR;
61c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}
62c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
63c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
64c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
65c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   @brief Method to convert from TI OSAL to Android errors
66c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
67c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   @param error Any of the standard TI OSAL error codes (defined in
68c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                                                            hardware/ti/omx/ducati/domx/system/mm_osal/inc/timm_osal_error.h)
69c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   @return Any of the standard Android error code  (defined in frameworks/base/include/utils/Errors.h)
70c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
71c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevstatus_t ErrorUtils::osalToAndroidError(TIMM_OSAL_ERRORTYPE error)
72c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
73c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    switch(error)
74c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    {
75c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    case TIMM_OSAL_ERR_NONE:
76c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        return NO_ERROR;
77c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    case TIMM_OSAL_ERR_ALLOC:
78c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        return NO_MEMORY;
79c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    default:
80c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        return UNKNOWN_ERROR;
81c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    }
82c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
83c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    return NO_ERROR;
84c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}
85c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
86c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
87c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   @brief Method to convert from OMX to Android errors
88c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
89c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   @param error Any of the standard OMX error codes (defined in hardware/ti/omx/ducati/domx/system/omx_core/inc/OMX_Core.h)
90c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   @return Any of the standard Android error code (defined in frameworks/base/include/utils/Errors.h)
91c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
92c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevstatus_t ErrorUtils::omxToAndroidError(OMX_ERRORTYPE error)
93c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
94c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    switch(error)
95c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        {
96c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorNone:
97c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            return NO_ERROR;
98c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorBadParameter:
99c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorInvalidComponentName:
100c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorUndefined:
101c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorInvalidState:
102c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorStreamCorrupt:
103c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorPortsNotCompatible:
104c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorVersionMismatch:
105c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorMbErrorsInFrame:
106c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            return BAD_VALUE;
107c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorInsufficientResources:
108c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            return NO_MEMORY;
109c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorComponentNotFound:
110c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorNotImplemented:
111c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorFormatNotDetected:
112c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorUnsupportedSetting:
113c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            return NAME_NOT_FOUND;
114c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorUnderflow:
115c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorOverflow:
116c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorUnsupportedIndex:
117c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorBadPortIndex:
118c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            return BAD_INDEX;
119c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorHardware:
120c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorContentPipeCreationFailed:
121c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorContentPipeOpenFailed:
122c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            return FAILED_TRANSACTION;
123c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorTimeout:
124c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev           return TIMED_OUT;
125c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorSameState:
126c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorIncorrectStateTransition:
127c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorIncorrectStateOperation:
128c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev           return PERMISSION_DENIED;
129c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        case OMX_ErrorTunnelingUnsupported:
130c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev           return INVALID_OPERATION;
131c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        default:
132c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev            return UNKNOWN_ERROR;
133c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev        }
134c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
135c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    return NO_ERROR;
136c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}
137c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
138c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
139f7a4d11e9f710e2cd0592310ac1baecccb85f1d1Jason Simmons} // namespace Utils
140f7a4d11e9f710e2cd0592310ac1baecccb85f1d1Jason Simmons} // namespace Ti
141