The Android Open Source Project | 8b23a6c | 2009-03-03 19:30:32 -0800 | [diff] [blame] | 1 | /* Copyright (C) 2007-2008 The Android Open Source Project |
| 2 | ** |
| 3 | ** This software is licensed under the terms of the GNU General Public |
| 4 | ** License version 2, as published by the Free Software Foundation, and |
| 5 | ** may be copied, distributed, and modified under those terms. |
| 6 | ** |
| 7 | ** This program is distributed in the hope that it will be useful, |
| 8 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 9 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 10 | ** GNU General Public License for more details. |
| 11 | */ |
| 12 | #ifndef _ANDROID_UTILS_DEBUG_H |
| 13 | #define _ANDROID_UTILS_DEBUG_H |
| 14 | |
| 15 | #include <stdarg.h> |
| 16 | |
| 17 | #define VERBOSE_TAG_LIST \ |
| 18 | _VERBOSE_TAG(init, "emulator initialization") \ |
| 19 | _VERBOSE_TAG(console, "control console") \ |
| 20 | _VERBOSE_TAG(modem, "emulated GSM modem") \ |
| 21 | _VERBOSE_TAG(radio, "emulated GSM AT Command channel") \ |
| 22 | _VERBOSE_TAG(keys, "key bindings & presses") \ |
| 23 | _VERBOSE_TAG(slirp, "internal router/firewall") \ |
| 24 | _VERBOSE_TAG(timezone, "host timezone detection" ) \ |
| 25 | _VERBOSE_TAG(socket, "network sockets") \ |
| 26 | _VERBOSE_TAG(proxy, "network proxy support") \ |
| 27 | _VERBOSE_TAG(audio, "audio sub-system") \ |
| 28 | _VERBOSE_TAG(audioin, "audio input backend") \ |
| 29 | _VERBOSE_TAG(audioout, "audio output backend") \ |
| 30 | _VERBOSE_TAG(surface, "video surface support") \ |
| 31 | _VERBOSE_TAG(qemud, "qemud multiplexer daemon") \ |
| 32 | _VERBOSE_TAG(gps, "emulated GPS") \ |
| 33 | _VERBOSE_TAG(nand_limits, "nand/flash read/write thresholding") \ |
| 34 | _VERBOSE_TAG(hw_control, "emulated power/flashlight/led/vibrator") \ |
| 35 | _VERBOSE_TAG(avd_config, "android virtual device configuration") \ |
The Android Open Source Project | 9877e2e | 2009-03-18 17:39:44 -0700 | [diff] [blame] | 36 | _VERBOSE_TAG(sensors, "emulated sensors") \ |
Vladimir Chtchetkine | 5389aa1 | 2010-02-16 10:38:35 -0800 | [diff] [blame] | 37 | _VERBOSE_TAG(memcheck, "memory checker") \ |
Vladimir Chtchetkine | 4ed09fd | 2011-08-18 09:42:40 -0700 | [diff] [blame^] | 38 | _VERBOSE_TAG(camera, "camera") \ |
The Android Open Source Project | 8b23a6c | 2009-03-03 19:30:32 -0800 | [diff] [blame] | 39 | |
| 40 | #define _VERBOSE_TAG(x,y) VERBOSE_##x, |
| 41 | typedef enum { |
| 42 | VERBOSE_TAG_LIST |
| 43 | VERBOSE_MAX /* do not remove */ |
| 44 | } VerboseTag; |
| 45 | #undef _VERBOSE_TAG |
| 46 | |
| 47 | /* defined in android_main.c */ |
| 48 | extern unsigned long android_verbose; |
| 49 | |
| 50 | #define VERBOSE_ENABLE(tag) \ |
| 51 | android_verbose |= (1 << VERBOSE_##tag) |
| 52 | |
| 53 | #define VERBOSE_DISABLE(tag) \ |
| 54 | android_verbose &= (1 << VERBOSE_##tag) |
| 55 | |
| 56 | #define VERBOSE_CHECK(tag) \ |
| 57 | ((android_verbose & (1 << VERBOSE_##tag)) != 0) |
| 58 | |
| 59 | #define VERBOSE_CHECK_ANY() \ |
| 60 | (android_verbose != 0) |
| 61 | |
| 62 | #define VERBOSE_PRINT(tag,...) \ |
| 63 | do { if (VERBOSE_CHECK(tag)) dprint(__VA_ARGS__); } while (0) |
| 64 | |
| 65 | /** DEBUG TRACE SUPPORT |
| 66 | ** |
| 67 | ** debug messages can be sent by calling these function |
| 68 | ** |
| 69 | ** 'dprint' prints the message, then appends a '\n\ |
| 70 | ** 'dprintn' simply prints the message as is |
| 71 | ** 'dprintnv' allows you to use a va_list argument |
| 72 | ** 'dwarning' prints a warning message, then appends a '\n' |
| 73 | ** 'derror' prints a severe error message, then appends a '\n' |
| 74 | */ |
| 75 | |
| 76 | extern void dprint( const char* format, ... ); |
| 77 | extern void dprintn( const char* format, ... ); |
| 78 | extern void dprintnv( const char* format, va_list args ); |
| 79 | extern void dwarning( const char* format, ... ); |
| 80 | extern void derror( const char* format, ... ); |
| 81 | |
| 82 | /** STDOUT/STDERR REDIRECTION |
| 83 | ** |
| 84 | ** allows you to shut temporarily shutdown stdout/stderr |
| 85 | ** this is useful to get rid of debug messages from ALSA and esd |
| 86 | ** on Linux. |
| 87 | **/ |
| 88 | |
| 89 | extern void stdio_disable( void ); |
| 90 | extern void stdio_enable( void ); |
| 91 | |
| 92 | /* */ |
| 93 | |
| 94 | #endif /* _ANDROID_UTILS_DEBUG_H */ |