18c2d3d5afc51d3f35150f748f263870367771b6fEd Tam/*
28c2d3d5afc51d3f35150f748f263870367771b6fEd TamCopyright (c) 2009, QUALCOMM USA, INC.
38c2d3d5afc51d3f35150f748f263870367771b6fEd Tam
48c2d3d5afc51d3f35150f748f263870367771b6fEd TamAll rights reserved.
58c2d3d5afc51d3f35150f748f263870367771b6fEd Tam
68c2d3d5afc51d3f35150f748f263870367771b6fEd TamRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
78c2d3d5afc51d3f35150f748f263870367771b6fEd Tam
88c2d3d5afc51d3f35150f748f263870367771b6fEd Tam�         Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
98c2d3d5afc51d3f35150f748f263870367771b6fEd Tam
108c2d3d5afc51d3f35150f748f263870367771b6fEd Tam�         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.
118c2d3d5afc51d3f35150f748f263870367771b6fEd Tam
128c2d3d5afc51d3f35150f748f263870367771b6fEd Tam�         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.
138c2d3d5afc51d3f35150f748f263870367771b6fEd Tam
148c2d3d5afc51d3f35150f748f263870367771b6fEd TamTHIS 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.
158c2d3d5afc51d3f35150f748f263870367771b6fEd Tam*/
168c2d3d5afc51d3f35150f748f263870367771b6fEd Tam
178c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#ifndef DEBUG_H
188c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#define DEBUG_H
198c2d3d5afc51d3f35150f748f263870367771b6fEd Tam
208c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#include <stdio.h>
218c2d3d5afc51d3f35150f748f263870367771b6fEd Tam
228c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#define LOG_TAG "libgps-rpc"
238c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#include <utils/Log.h>
248c2d3d5afc51d3f35150f748f263870367771b6fEd Tam
258c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#define PRINT(x...) do {                                    \
268c2d3d5afc51d3f35150f748f263870367771b6fEd Tam        fprintf(stdout, "%s(%d) ", __FUNCTION__, __LINE__); \
278c2d3d5afc51d3f35150f748f263870367771b6fEd Tam        fprintf(stdout, ##x);                               \
288c2d3d5afc51d3f35150f748f263870367771b6fEd Tam        LOGD(x);                               \
298c2d3d5afc51d3f35150f748f263870367771b6fEd Tam    } while(0)
308c2d3d5afc51d3f35150f748f263870367771b6fEd Tam
318c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#ifdef DEBUG
328c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#define D PRINT
338c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#else
348c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#define D(x...) do { } while(0)
358c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#endif
368c2d3d5afc51d3f35150f748f263870367771b6fEd Tam
378c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#ifdef VERBOSE
388c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#define V PRINT
398c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#else
408c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#define V(x...) do { } while(0)
418c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#endif
428c2d3d5afc51d3f35150f748f263870367771b6fEd Tam
438c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#define E(x...) do {                                        \
448c2d3d5afc51d3f35150f748f263870367771b6fEd Tam        fprintf(stderr, "%s(%d) ", __FUNCTION__, __LINE__); \
458c2d3d5afc51d3f35150f748f263870367771b6fEd Tam        fprintf(stderr, ##x);                               \
468c2d3d5afc51d3f35150f748f263870367771b6fEd Tam        LOGE(x);                                            \
478c2d3d5afc51d3f35150f748f263870367771b6fEd Tam    } while(0)
488c2d3d5afc51d3f35150f748f263870367771b6fEd Tam
498c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#define FAILIF(cond, msg...) do {                                              \
508c2d3d5afc51d3f35150f748f263870367771b6fEd Tam        if (__builtin_expect (cond, 0)) {                                      \
518c2d3d5afc51d3f35150f748f263870367771b6fEd Tam            fprintf(stderr, "%s:%s:(%d): ", __FILE__, __FUNCTION__, __LINE__); \
528c2d3d5afc51d3f35150f748f263870367771b6fEd Tam            fprintf(stderr, ##msg);                                            \
538c2d3d5afc51d3f35150f748f263870367771b6fEd Tam            LOGE(##msg);                                                       \
548c2d3d5afc51d3f35150f748f263870367771b6fEd Tam        }                                                                      \
558c2d3d5afc51d3f35150f748f263870367771b6fEd Tam    } while(0)
568c2d3d5afc51d3f35150f748f263870367771b6fEd Tam
578c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#endif/*DEBUG_H*/
58