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