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