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*/ 40typedef 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 74when the core ID macro isn't defined. Defined here instead of CoreID.h to avoid 75introducing 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