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