1bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo/*
2bfff6343845ad9ff062c5fd97bb3b9be1053340eDante RussoCopyright (c) 2009, QUALCOMM USA, INC.
3bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo
4bfff6343845ad9ff062c5fd97bb3b9be1053340eDante RussoAll rights reserved.
5bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo
6bfff6343845ad9ff062c5fd97bb3b9be1053340eDante RussoRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
7bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo
8bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo�         Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
9bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo
10bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo�         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.
11bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo
12bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo�         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.
13bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo
14bfff6343845ad9ff062c5fd97bb3b9be1053340eDante RussoTHIS 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.
15bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo*/
16bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo
17bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#ifndef DEBUG_H
18bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#define DEBUG_H
19bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo
20bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#include <stdio.h>
21bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo
22bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#define LOG_TAG "libgps-rpc"
23bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#include <utils/Log.h>
24bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo
25bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#define PRINT(x...) do {                                    \
26bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo        fprintf(stdout, "%s(%d) ", __FUNCTION__, __LINE__); \
27bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo        fprintf(stdout, ##x);                               \
28bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo        LOGD(x);                               \
29bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo    } while(0)
30bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo
31bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#ifdef DEBUG
32bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#define D PRINT
33bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#else
34bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#define D(x...) do { } while(0)
35bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#endif
36bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo
37bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#ifdef VERBOSE
38bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#define V PRINT
39bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#else
40bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#define V(x...) do { } while(0)
41bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#endif
42bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo
43bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#define E(x...) do {                                        \
44bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo        fprintf(stderr, "%s(%d) ", __FUNCTION__, __LINE__); \
45bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo        fprintf(stderr, ##x);                               \
46bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo        LOGE(x);                                            \
47bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo    } while(0)
48bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo
49bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#define FAILIF(cond, msg...) do {                                              \
50bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo        if (__builtin_expect (cond, 0)) {                                      \
51bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo            fprintf(stderr, "%s:%s:(%d): ", __FILE__, __FUNCTION__, __LINE__); \
52bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo            fprintf(stderr, ##msg);                                            \
53bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo            LOGE(##msg);                                                       \
54bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo        }                                                                      \
55bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo    } while(0)
56bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo
57bfff6343845ad9ff062c5fd97bb3b9be1053340eDante Russo#endif/*DEBUG_H*/
58