/* * Copyright (c) 2010, Texas Instruments Incorporated * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * * Neither the name of Texas Instruments Incorporated nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * @file timm_timm_osal_error.h * The osal header file defines the error codes * @path * */ /* -------------------------------------------------------------------------- */ /* ========================================================================= *! *! Revision History *! =================================== *! 0.1: Created the first draft version, ksrini@ti.com * ========================================================================= */ #ifndef _TIMM_OSAL_ERROR_H_ #define _TIMM_OSAL_ERROR_H_ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #include "timm_osal_types.h" /** A unique ID for each component*/ typedef TIMM_OSAL_U16 TIMM_OSAL_COMPID; /** TIMM_OSAL_ERROR is a 32 bits unsigned integer. * Each error code can be broken up into three fields as given below: * - Type of error (2 bits): NO_ERROR: 00, WARNING: 01, FATAL_ERROR: 10 * - Component ID (14 bits): A unique ID which indicates which of the component generated the error * - Error ID (16 bits): The specific error generated by a component */ typedef TIMM_OSAL_U32 TIMM_OSAL_ERRORTYPE; #define TIMM_OSAL_OK 0 #define TIMM_OSAL_WAR 1 #define TIMM_OSAL_ERR 2 /* Macro to process TIMM_OSAL_ERROR */ /** This macro tests if the provided M4OSA_ERR is a warning or not*/ #define TIMM_OSAL_IS_WARNING(error) ((((error)>>30) == TIMM_OSAL_WAR) ? 1:0) /** This macro tests if the provided M4OSA_ERR is a fatal error or not*/ #define TIMM_OSAL_IS_ERROR(error) ((((error)>>30) == TIMM_OSAL_ERR) ? 1:0) /** This macro returns an error code accroding to the 3 provided fields: * @arg Type: (IN) [TIMM_OSAL_U32] Type of error to put in the error code * @arg compID: (IN) [TIMM_OSAL_U32] CompID to put in the error code * @arg errorID: (IN) [TIMM_OSAL_U32] ErrorID to put in the error code*/ #define TIMM_OSAL_ERR_CREATE(type, compID, errorID)\ (((type)<<30)+(((compID)&0x003FFF)<<16)+((errorID)&0x00FFFF)) /** This macro extracts the 3 fields from the error: * @arg error: (IN) [TIMM_OSAL_ERRORTYPE] Error code * @arg type: (OUT) [TIMM_OSAL_U32] Type of error in the error code * @arg compID: (OUT) [TIMM_OSAL_U32] CompID to put in the error code * @arg errorID: (OUT) [TIMM_OSAL_U32] ErrorID to put in the error code*/ #define TIMM_OSAL_ERR_SPLIT(error, type, compID, errorID)\ { type=(TIMM_OSAL_U32)((error)>>30);\ compID=(TIMM_OSAL_U32)(((error)>>16)&0x003FFF);\ (TIMM_OSAL_U32)(errorID=(error)&0x00FFFF); } /* Component IDs */ #define TIMM_OSAL_COMP_GENERAL 0x00 #define TIMM_OSAL_COMP_MEMORY 0x01 #define TIMM_OSAL_COMP_PIPES 0x02 #define TIMM_OSAL_COMP_EVENTS 0x03 #define TIMM_OSAL_COMP_SEMAPHORES 0x04 #define TIMM_OSAL_COMP_TASK 0x05 /* Definition of common error codes */ /** there is no error*/ #define TIMM_OSAL_ERR_NONE ((TIMM_OSAL_ERRORTYPE) 0x00000000) /** There is no more memory available*/ #define TIMM_OSAL_ERR_ALLOC ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_GENERAL,0x000001)) #define TIMM_OSAL_ERR_OUT_OF_RESOURCE ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_GENERAL,0x000002)) /** Time out */ #define TIMM_OSAL_WAR_TIMEOUT ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_WAR,TIMM_OSAL_COMP_GENERAL,0x000003)) #define TIMM_OSAL_ERR_PARAMETER ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_GENERAL,0x000004)) #define TIMM_OSAL_ERR_NOT_READY ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_GENERAL,0x000005)) #define TIMM_OSAL_ERR_OMX ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_GENERAL,0x000006)) #define TIMM_OSAL_ERR_PIPE_FULL ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_GENERAL,0x000007)) #define TIMM_OSAL_ERR_PIPE_EMPTY ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_GENERAL,0x000008)) #define TIMM_OSAL_ERR_PIPE_DELETED ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_GENERAL,0x000009)) #define TIMM_OSAL_ERR_PIPE_RESET ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_GENERAL,0x00000A)) #define TIMM_OSAL_ERR_GROUP_DELETED ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_GENERAL,0x00000B)) #define TIMM_OSAL_ERR_UNKNOWN ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_GENERAL,0x00000C)) #define TIMM_OSAL_ERR_SEM_CREATE_FAILED ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_SEMAPHORE,0x000001)) /*Added during Linux Porting*/ #define TIMM_OSAL_ERR_NO_PERMISSIONS ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_GENERAL,0x00000D)) #define TIMM_OSAL_ERR_RESOURCE_EXISTS ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_GENERAL,0x00000E)) #define TIMM_OSAL_ERR_RESOURCE_REMOVED ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_GENERAL,0x00000F)) #define TIMM_OSAL_ERR_SYSTEM_LIMIT_EXCEEDED ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_GENERAL,0x000010)) #define TIMM_OSAL_ERR_NOT_SUPPORTED ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_GENERAL,0x000011)) #define TIMM_OSAL_ERR_SIGNAL_CAUGHT ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_GENERAL,0x000012)) #define TIMM_OSAL_ERR_TIMEOUT ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_GENERAL,0x000013)) #define TIMM_OSAL_COMP_MSG_Q 0x06 #define TIMM_OSAL_ERR_MSG_SIZE_MISMATCH ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_MSG_Q,0x000001)) #define TIMM_OSAL_ERR_MSG_TYPE_NOT_FOUND ((TIMM_OSAL_ERRORTYPE) TIMM_OSAL_ERR_CREATE(TIMM_OSAL_ERR,TIMM_OSAL_COMP_MSG_Q,0x000002)) /* #define GOTO_EXIT_IF(_Cond,_ErrorCode) { \ if ((_Cond)) { \ status = _ErrorCode; \ printf ("Error :: %s : %s : %d :: Exiting because : %s\n", \ __FILE__, __FUNCTION__, __LINE__, #_Cond); \ goto EXIT; \ } \ } */ #define SWITCH_CASE(_Case, _ErrCode, _ErrMsg)\ case _Case:\ TIMM_OSAL_Error(_ErrMsg);\ bReturnStatus = _ErrCode;\ break; #define SWITCH_DEFAULT_CASE(_ErrCode, _ErrMsg )\ default:\ TIMM_OSAL_Error(_ErrMsg);\ bReturnStatus = _ErrCode;\ break; #ifdef __cplusplus } #endif /* __cplusplus */ #endif /*_TIMM_OSAL_ERROR_H_*/