1 /* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 /** 17 ************************************************************************ 18 * @file M4OSA_Error.h 19 * @ingroup OSAL 20 * @brief Definition of common error types 21 * @note This file contains macros to generate and analyze error codes. 22 ************************************************************************ 23 */ 24 25 26 #ifndef M4OSA_ERROR_H 27 #define M4OSA_ERROR_H 28 29 #include "M4OSA_Types.h" 30 31 /** M4OSA_ERR is a 32 bits unsigned integer. 32 * To sort returned code, a specific naming convention must be followed: 33 * - Severity (2 bits): It may br either 0b00 (no error), 0b01 (warning) or 34 * 0b01 (fatal error) 35 * - Core ID (14 bits): It is a unique ID for each core component 36 * - ErrorID (16 bits): It is the specific error code 37 38 * EACH CORE COMPONENT FUNCTION SHOULD RETURN AN M4OSA_ERR 39 */ 40 typedef M4OSA_UInt32 M4OSA_ERR; 41 42 #define M4_OK 0 43 #define M4_WAR 1 44 #define M4_ERR 2 45 46 47 /* Macro to process M4OSA_ERR */ 48 49 /** This macro tests if the provided M4OSA_ERR is a warning or not*/ 50 #define M4OSA_ERR_IS_WARNING(error) ((((error)>>30) == M4_WAR) ? 1:0) 51 52 /** This macro tests if the provided M4OSA_ERR is a fatal error or not*/ 53 #define M4OSA_ERR_IS_ERROR(error) ((((error)>>30) == M4_ERR) ? 1:0) 54 55 /** This macro returns an error code accroding to the 3 provided fields: 56 * @arg severity: (IN) [M4OSA_UInt32] Severity to put in the error code 57 * @arg coreID: (IN) [M4OSA_UInt32] CoreID to put in the error code 58 * @arg errorID: (IN) [M4OSA_UInt32] ErrorID to put in the error code*/ 59 #define M4OSA_ERR_CREATE(severity, coreID, errorID)\ 60 (M4OSA_Int32)((((M4OSA_UInt32)severity)<<30)+((((M4OSA_UInt32)coreID)&0x003FFF)<<16)+(((M4OSA_UInt32)errorID)&0x00FFFF)) 61 62 /** This macro extracts the 3 fields from the error: 63 * @arg error: (IN) [M4OSA_ERR] Error code 64 * @arg severity: (OUT) [M4OSA_UInt32] Severity to put in the error code 65 * @arg coreID: (OUT) [M4OSA_UInt32] CoreID to put in the error code 66 * @arg errorID: (OUT) [M4OSA_UInt32] ErrorID to put in the error code*/ 67 #define M4OSA_ERR_SPLIT(error, severity, coreID, errorID)\ 68 { severity=(M4OSA_UInt32)((error)>>30);\ 69 coreID=(M4OSA_UInt32)(((error)>>16)&0x003FFF);\ 70 (M4OSA_UInt32)(errorID=(error)&0x00FFFF); } 71 72 73 /* "fake" CoreID, is used to report an unknown CoreID. Used by the trace system 74 when the core ID macro isn't defined. Defined here instead of CoreID.h to avoid 75 introducing dependencies to common/inc. */ 76 77 #define M4UNKNOWN_COREID 0x3FFF /* max possible CoreID */ 78 79 #define M4_COMMON 0x00 /**<Common*/ 80 #define M4MP4_COMMON 0x01 /**<Core MP4 (common)*/ 81 #define M4MP4_WRITER 0x02 /**<Core MP4 writer*/ 82 #define M4MP4_READER 0x03 /**<Core MP4 reader*/ 83 #define M4RTSP_COMMON 0x11 /**<Core RTSP common*/ 84 #define M4RTSP_WRITER 0x12 /**<Core RTSP transmitter*/ 85 #define M4RTSP_READER 0x13 /**<Core RTSP receiver*/ 86 #define M4RTP_WRITER 0x14 /**<Core RTP/RTCP receiver*/ 87 #define M4RTP_READER 0x15 /**<Core RTP/RTCP transmitter*/ 88 #define M4SAP_WRITER 0x16 /**<Core SAP transmitter*/ 89 #define M4SAP_READER 0x17 /**<Core SAP receiver*/ 90 #define M4DVBH_READER 0x18 /**<Core DVBH receiver*/ 91 #define M4SDP_WRITER 0x22 /**<Core SDP writer*/ 92 #define M4SDP_READER 0x31 /**<Core SDP reader*/ 93 #define M4PAK_AMR 0x32 /**<Core packetizer AMR (RFC3267)*/ 94 #define M4DEPAK_AMR 0x33 /**<Core de-packetizer AMR (RFC3267)*/ 95 #define M4PAK_H263 0x34 /**<Core packetizer H263 (RFC2429)*/ 96 #define M4DEPAK_H263 0x35 /**<Core de-packetizer H263(RFC2429)*/ 97 #define M4PAK_SIMPLE 0x36 /**<Core packetizer SimpleDraft (RFC xxxx)*/ 98 #define M4DEPAK_SIMPLE 0x37 /**<Core de-packetizer SimpleDraft (RFC xxxx)*/ 99 #define M4PAK_3016_VIDEO 0x38 /**<Core packetizer RFC3016 video*/ 100 #define M4DEPAK_3016_VIDEO 0x39 /**<Core de-packetizer RFC3016 video*/ 101 #define M4PAK_3016_AUDIO 0x3A /**<Core packetizer RFC3016 audio (LATM)*/ 102 #define M4DEPAK_3016_AUDIO 0x3B /**<Core de-packetizer RFC3016 audio (LATM)*/ 103 #define M4DEPAK_H264 0x3C /**<Core de-packetizer H264*/ 104 #define M4DEPAK_REALV 0x3D /**<Core de-packetizer Real Video */ 105 #define M4DEPAK_REALA 0x3E /**<Core de-packetizer Real Audio */ 106 #define M4RDT_READER 0x3F /**<Core RDT receiver*/ 107 #define M4TCP_DMUX 0x50 /**<Core TCP demux*/ 108 #define M4IOD_PARSER 0x51 /**<Core IOD parser*/ 109 #define M4OSA_FILE_COMMON 0x61 /**<OSAL file common*/ 110 #define M4OSA_FILE_WRITER 0x62 /**<OSAL file writer*/ 111 #define M4OSA_FILE_READER 0x63 /**<OSAL file reader*/ 112 #define M4OSA_FILE_EXTRA 0x64 /**<OSAL file extra*/ 113 #define M4OSA_DIRECTORY 0x65 /**<OSAL directory*/ 114 #define M4OSA_SOCKET 0x71 /**<OSAL socket (both reader and writer)*/ 115 #define M4OSA_THREAD 0x81 /**<OSAL thread*/ 116 #define M4OSA_MUTEX 0x82 /**<OSAL mutex*/ 117 #define M4OSA_SEMAPHORE 0x83 /**<OSAL semaphore*/ 118 #define M4OSA_CLOCK 0x84 /**<OSAL clock*/ 119 #define M4OSA_MEMORY 0x91 /**<OSAL memory*/ 120 #define M4CALL_BACK 0xA1 /**<Call Back error*/ 121 #define M4OSA_URI 0xB1 /**<OSAL URI handler*/ 122 #define M4OSA_STRING 0xB2 /**<OSAL string*/ 123 #define M4SYS_CMAPI 0xB3 /**<SYSTEM Common Medi API*/ 124 #define M4OSA_CHARSTAR 0xB4 /**<OSAL CharStar*/ 125 #define M4REACTOR 0xC1 /**<Core reactor*/ 126 #define M4TEST 0xD1 /**<Test component*/ 127 #define M4STACK 0xE1 /**< Core ID of the integrated stack*/ 128 #define M4STACK_REAL 0xE2 /**<Core ID of the Real integrated stack */ 129 #define M4TOOL_LBVT_PARAM 0xF1 /**<LB_VT config file manager*/ 130 #define M4TOOL_LINK_LIST 0xF2 /**<Tool linked list*/ 131 #define M4TOOL_BASE64 0xF3 /**<Core base64 encoder/decoder*/ 132 133 134 135 /* Definition of common error codes */ 136 /** there is no error*/ 137 #define M4NO_ERROR 0x00000000 138 139 /** At least one parameter is NULL*/ 140 #define M4ERR_PARAMETER M4OSA_ERR_CREATE(M4_ERR,M4_COMMON,0x000001) 141 /** This function cannot be called now*/ 142 #define M4ERR_STATE M4OSA_ERR_CREATE(M4_ERR,M4_COMMON,0x000002) 143 /** There is no more memory available*/ 144 #define M4ERR_ALLOC M4OSA_ERR_CREATE(M4_ERR,M4_COMMON,0x000003) 145 /** Provided context is not a valid one*/ 146 #define M4ERR_BAD_CONTEXT M4OSA_ERR_CREATE(M4_ERR,M4_COMMON,0x000004) 147 #define M4ERR_CONTEXT_FAILED M4OSA_ERR_CREATE(M4_ERR,M4_COMMON,0x000005) 148 #define M4ERR_BAD_STREAM_ID M4OSA_ERR_CREATE(M4_ERR,M4_COMMON,0x000006) 149 /** The optionID is not a valid one*/ 150 #define M4ERR_BAD_OPTION_ID M4OSA_ERR_CREATE(M4_ERR,M4_COMMON,0x000007) 151 /** This option is a write only one*/ 152 #define M4ERR_WRITE_ONLY M4OSA_ERR_CREATE(M4_ERR,M4_COMMON,0x000008) 153 /** This option is a read only one*/ 154 #define M4ERR_READ_ONLY M4OSA_ERR_CREATE(M4_ERR,M4_COMMON,0x000009) 155 /** This function is not supported yet*/ 156 #define M4ERR_NOT_IMPLEMENTED M4OSA_ERR_CREATE(M4_ERR,M4_COMMON,0x00000A) 157 158 #define M4ERR_UNSUPPORTED_MEDIA_TYPE M4OSA_ERR_CREATE(M4_ERR, M4_COMMON, 0x00000B) 159 160 #define M4WAR_NO_DATA_YET M4OSA_ERR_CREATE(M4_WAR,M4_COMMON,0x000001) 161 #define M4WAR_NO_MORE_STREAM M4OSA_ERR_CREATE(M4_WAR,M4_COMMON,0x000002) 162 #define M4WAR_INVALID_TIME M4OSA_ERR_CREATE(M4_WAR,M4_COMMON,0x000003) 163 #define M4WAR_NO_MORE_AU M4OSA_ERR_CREATE(M4_WAR,M4_COMMON,0x000004) 164 #define M4WAR_TIME_OUT M4OSA_ERR_CREATE(M4_WAR,M4_COMMON,0x000005) 165 /** The buffer is full*/ 166 #define M4WAR_BUFFER_FULL M4OSA_ERR_CREATE(M4_WAR,M4_COMMON,0x000006) 167 /* The server asks for a redirection */ 168 #define M4WAR_REDIRECT M4OSA_ERR_CREATE(M4_WAR,M4_COMMON,0x000007) 169 #define M4WAR_TOO_MUCH_STREAMS M4OSA_ERR_CREATE(M4_WAR,M4_COMMON,0x000008) 170 /* SF Codec detected INFO_FORMAT_CHANGE during decode */ 171 #define M4WAR_INFO_FORMAT_CHANGE M4OSA_ERR_CREATE(M4_WAR, M4_COMMON, 0x000009) 172 173 #endif /*M4OSA_ERROR_H*/ 174 175