134ee09551764b045fdc02df754157473125edf60Kevin Tang/* 234ee09551764b045fdc02df754157473125edf60Kevin TangCopyright (c) 2009, QUALCOMM USA, INC. 334ee09551764b045fdc02df754157473125edf60Kevin Tang 434ee09551764b045fdc02df754157473125edf60Kevin TangAll rights reserved. 534ee09551764b045fdc02df754157473125edf60Kevin Tang 634ee09551764b045fdc02df754157473125edf60Kevin TangRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 734ee09551764b045fdc02df754157473125edf60Kevin Tang 834ee09551764b045fdc02df754157473125edf60Kevin Tang� Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 934ee09551764b045fdc02df754157473125edf60Kevin Tang 1034ee09551764b045fdc02df754157473125edf60Kevin Tang� 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. 1134ee09551764b045fdc02df754157473125edf60Kevin Tang 1234ee09551764b045fdc02df754157473125edf60Kevin Tang� Neither the name of the QUALCOMM USA, INC. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 1334ee09551764b045fdc02df754157473125edf60Kevin Tang 1434ee09551764b045fdc02df754157473125edf60Kevin TangTHIS 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 HOLDER 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. 1534ee09551764b045fdc02df754157473125edf60Kevin Tang*/ 1634ee09551764b045fdc02df754157473125edf60Kevin Tang 1734ee09551764b045fdc02df754157473125edf60Kevin Tang#ifndef DEBUG_H 1834ee09551764b045fdc02df754157473125edf60Kevin Tang#define DEBUG_H 1934ee09551764b045fdc02df754157473125edf60Kevin Tang 2034ee09551764b045fdc02df754157473125edf60Kevin Tang#include <stdio.h> 2134ee09551764b045fdc02df754157473125edf60Kevin Tang 2234ee09551764b045fdc02df754157473125edf60Kevin Tang#define LOG_TAG "libgps-rpc" 2334ee09551764b045fdc02df754157473125edf60Kevin Tang#include <utils/Log.h> 2434ee09551764b045fdc02df754157473125edf60Kevin Tang 2534ee09551764b045fdc02df754157473125edf60Kevin Tang#define PRINT(x...) do { \ 2634ee09551764b045fdc02df754157473125edf60Kevin Tang fprintf(stdout, "%s(%d) ", __FUNCTION__, __LINE__); \ 2734ee09551764b045fdc02df754157473125edf60Kevin Tang fprintf(stdout, ##x); \ 2834ee09551764b045fdc02df754157473125edf60Kevin Tang LOGD(x); \ 2934ee09551764b045fdc02df754157473125edf60Kevin Tang } while(0) 3034ee09551764b045fdc02df754157473125edf60Kevin Tang 3134ee09551764b045fdc02df754157473125edf60Kevin Tang#ifdef DEBUG 3234ee09551764b045fdc02df754157473125edf60Kevin Tang#define D PRINT 3334ee09551764b045fdc02df754157473125edf60Kevin Tang#else 3434ee09551764b045fdc02df754157473125edf60Kevin Tang#define D(x...) do { } while(0) 3534ee09551764b045fdc02df754157473125edf60Kevin Tang#endif 3634ee09551764b045fdc02df754157473125edf60Kevin Tang 3734ee09551764b045fdc02df754157473125edf60Kevin Tang#ifdef VERBOSE 3834ee09551764b045fdc02df754157473125edf60Kevin Tang#define V PRINT 3934ee09551764b045fdc02df754157473125edf60Kevin Tang#else 4034ee09551764b045fdc02df754157473125edf60Kevin Tang#define V(x...) do { } while(0) 4134ee09551764b045fdc02df754157473125edf60Kevin Tang#endif 4234ee09551764b045fdc02df754157473125edf60Kevin Tang 4334ee09551764b045fdc02df754157473125edf60Kevin Tang#define E(x...) do { \ 4434ee09551764b045fdc02df754157473125edf60Kevin Tang fprintf(stderr, "%s(%d) ", __FUNCTION__, __LINE__); \ 4534ee09551764b045fdc02df754157473125edf60Kevin Tang fprintf(stderr, ##x); \ 4634ee09551764b045fdc02df754157473125edf60Kevin Tang LOGE(x); \ 4734ee09551764b045fdc02df754157473125edf60Kevin Tang } while(0) 4834ee09551764b045fdc02df754157473125edf60Kevin Tang 4934ee09551764b045fdc02df754157473125edf60Kevin Tang#define FAILIF(cond, msg...) do { \ 5034ee09551764b045fdc02df754157473125edf60Kevin Tang if (__builtin_expect (cond, 0)) { \ 5134ee09551764b045fdc02df754157473125edf60Kevin Tang fprintf(stderr, "%s:%s:(%d): ", __FILE__, __FUNCTION__, __LINE__); \ 5234ee09551764b045fdc02df754157473125edf60Kevin Tang fprintf(stderr, ##msg); \ 5334ee09551764b045fdc02df754157473125edf60Kevin Tang LOGE(##msg); \ 5434ee09551764b045fdc02df754157473125edf60Kevin Tang } \ 5534ee09551764b045fdc02df754157473125edf60Kevin Tang } while(0) 5634ee09551764b045fdc02df754157473125edf60Kevin Tang 5734ee09551764b045fdc02df754157473125edf60Kevin Tang#endif/*DEBUG_H*/ 58