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") \
36    _VERBOSE_TAG(sensors,      "emulated sensors") \
37    _VERBOSE_TAG(memcheck,     "memory checker") \
38    _VERBOSE_TAG(camera,       "camera") \
39    _VERBOSE_TAG(adevice,      "android device connected via port forwarding") \
40    _VERBOSE_TAG(sensors_port, "sensors emulator connected to android device") \
41    _VERBOSE_TAG(mtport,       "multi-touch emulator connected to android device") \
42    _VERBOSE_TAG(mtscreen,     "multi-touch screen emulation") \
43    _VERBOSE_TAG(gles,         "hardware OpenGLES emulation") \
44    _VERBOSE_TAG(adbserver,    "ADB server") \
45    _VERBOSE_TAG(adbclient,    "ADB QEMU client") \
46    _VERBOSE_TAG(adb,          "ADB debugger") \
47    _VERBOSE_TAG(asconnector,  "Asynchronous socket connector") \
48    _VERBOSE_TAG(asyncsocket,  "Asynchronous socket") \
49    _VERBOSE_TAG(sdkctlsocket, "Socket tethering to SdkControl server") \
50
51#define  _VERBOSE_TAG(x,y)  VERBOSE_##x,
52typedef enum {
53    VERBOSE_TAG_LIST
54    VERBOSE_MAX  /* do not remove */
55} VerboseTag;
56#undef  _VERBOSE_TAG
57
58/* defined in android_main.c */
59extern unsigned long  android_verbose;
60
61#define  VERBOSE_ENABLE(tag)    \
62    android_verbose |= (1 << VERBOSE_##tag)
63
64#define  VERBOSE_DISABLE(tag)   \
65    android_verbose &= (1 << VERBOSE_##tag)
66
67#define  VERBOSE_CHECK(tag)    \
68    ((android_verbose & (1 << VERBOSE_##tag)) != 0)
69
70#define  VERBOSE_CHECK_ANY()    \
71    (android_verbose != 0)
72
73#define  VERBOSE_PRINT(tag,...)  \
74    do { if (VERBOSE_CHECK(tag)) dprint(__VA_ARGS__); } while (0)
75
76/** DEBUG TRACE SUPPORT
77 **
78 ** debug messages can be sent by calling these function
79 **
80 ** 'dprint' prints the message, then appends a '\n\
81 ** 'dprintn' simply prints the message as is
82 ** 'dprintnv' allows you to use a va_list argument
83 ** 'dwarning' prints a warning message, then appends a '\n'
84 ** 'derror' prints a severe error message, then appends a '\n'
85 */
86
87extern void   dprint( const char*  format, ... );
88extern void   dprintn( const char*  format, ... );
89extern void   dprintnv( const char*  format, va_list  args );
90extern void   dwarning( const char*  format, ... );
91extern void   derror( const char*  format, ... );
92
93/** STDOUT/STDERR REDIRECTION
94 **
95 ** allows you to shut temporarily shutdown stdout/stderr
96 ** this is useful to get rid of debug messages from ALSA and esd
97 ** on Linux.
98 **/
99
100extern void  stdio_disable( void );
101extern void  stdio_enable( void );
102
103/* */
104
105#endif /* _ANDROID_UTILS_DEBUG_H */
106