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