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