1855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/* 2855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project 3855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * 4855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License"); 5855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * you may not use this file except in compliance with the License. 6855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * You may obtain a copy of the License at 7855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * 8855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * http://www.apache.org/licenses/LICENSE-2.0 9855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * 10855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * Unless required by applicable law or agreed to in writing, software 11855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS, 12855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * See the License for the specific language governing permissions and 14855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * limitations under the License. 15855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi */ 16855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 17855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/******************************************************************************* 18855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* @file LV_Macros.h 19855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* @par NXP Software 20855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* @brief Macros definition for Smartphone team 21855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi*******************************************************************************/ 22855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 23855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#ifndef LV_MACROS_H 24855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define LV_MACROS_H 25855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 26855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/*------------*/ 27855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/* INCLUDES */ 28855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/*------------*/ 29855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#include "M4OSA_Memory.h" 30855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#include "M4OSA_Debug.h" 31855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 32855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/****************************************************************************** 33855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* 34855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* CHECK_PTR(fct, p, err, errValue) 35855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* @note This macro checks the value p. If it is NULL, it sets the variable err 36855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* to errValue and jumps to the label <fct>_cleanUp. A trace is displayed 37855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* signalling the error, the function name and the line number. 38855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* 39855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi******************************************************************************/ 40855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define CHECK_PTR(fct, p, err, errValue) \ 41855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi{ \ 42855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi if(M4OSA_NULL == (p)) \ 43855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi { \ 44855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi (err) = (errValue) ; \ 45855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_TRACE1_1((M4OSA_Char*)"" #fct "(L%d): " #p " is NULL, returning " #errValue "",__LINE__) ; \ 46855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi goto fct##_cleanUp; \ 47855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi } \ 48855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi} 49855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 50855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/****************************************************************************** 51855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* 52855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* CHECK_ERR(fct, err) 53855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* @note This macro checks the value err. If it is not NULL, a trace is displayed 54855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* signalling the error, the function name and the line number. The macro 55855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* jumps to the label <fct>_cleanUp. 56855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* 57855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi******************************************************************************/ 58855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define CHECK_ERR(fct, err) \ 59855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi{ \ 60855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi if(M4NO_ERROR != (err)) \ 61855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi { \ 62855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_TRACE1_2((M4OSA_Char*)"!!! " #fct "(L%d): ERROR 0x%.8x returned",\ 63855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi __LINE__,err) ; \ 64855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi goto fct##_cleanUp; \ 65855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi } \ 66855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi} 67855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 68855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 69855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/****************************************************************************** 70855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* 71855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* CHECK_ERR(fct, err) 72855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* @note This macro compares a current state with a state value. If they are different, 73855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* err is set to M4ERR_STATE. 74855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* A trace is displayed signalling the error, the function name and the line number. 75855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* The macro jumps to the label <fct>_cleanUp. 76855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* 77855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi******************************************************************************/ 78855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define CHECK_STATE(fct, stateValue, state) \ 79855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi{ \ 80855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi if((stateValue) != (state)) \ 81855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi { \ 82855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_TRACE1_1("" #fct " called in bad state %d", state) ; \ 83855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi (err) = M4ERR_STATE ; \ 84855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi goto fct##_cleanUp; \ 85855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi } \ 86855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi} 87855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 88855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/****************************************************************************** 89855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* 90855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* SAFE_FREE(p) 91855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* @note This macro checks the value of p is not NULL. If it is NULL, it does 92855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* nothing. Else, p is de allocated and set to NULL. 93855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi* 94855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi******************************************************************************/ 95855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define SAFE_FREE(p) \ 96855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi{ \ 97855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi if(M4OSA_NULL != (p)) \ 98855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi { \ 99694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free((p)) ; \ 100855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi (p) = M4OSA_NULL ; \ 101855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi } \ 102855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi} 103855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 104855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 105855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 106855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#endif /*--- LV_MACROS_H ---*/ 107855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 108