From 6ac306a515e560e01fdfd36495afb034ea6a5080 Mon Sep 17 00:00:00 2001 From: Nicolas Pennequin Date: Tue, 24 Apr 2007 23:58:57 +0000 Subject: [PATCH] Add a new commandline switch to the simulator: "--debugwps". It enables printing of advanced (and very verbose) WPS debugging information. Also make the debugging code a bit cleaner. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13257 a1c6a512-1295-4272-9138-f99709370657 --- apps/gui/wps_debug.c | 53 +++++++++++++++++++++++++++++++++++++---- apps/gui/wps_parser.c | 37 +++------------------------- uisimulator/sdl/uisdl.c | 8 ++++++- 3 files changed, 58 insertions(+), 40 deletions(-) diff --git a/apps/gui/wps_debug.c b/apps/gui/wps_debug.c index ad9395b05d..335c994881 100644 --- a/apps/gui/wps_debug.c +++ b/apps/gui/wps_debug.c @@ -24,11 +24,19 @@ #include "gwps.h" #include "debug.h" +#define PARSE_FAIL_UNCLOSED_COND 1 +#define PARSE_FAIL_INVALID_CHAR 2 +#define PARSE_FAIL_COND_SYNTAX_ERROR 3 + +#ifdef SIMULATOR +extern bool debug_wps; +#endif + static char *next_str(bool next) { - return next ? "next" : ""; + return next ? "next " : ""; } -void dump_wps_tokens(struct wps_data *data) +static void dump_wps_tokens(struct wps_data *data) { struct wps_token *token; int i, j; @@ -358,7 +366,7 @@ void dump_wps_tokens(struct wps_data *data) DEBUGF("\n"); } -void print_line_info(struct wps_data *data) +static void print_line_info(struct wps_data *data) { int i, j; struct wps_line *line; @@ -395,7 +403,7 @@ void print_line_info(struct wps_data *data) DEBUGF("\n"); } -void print_wps_strings(struct wps_data *data) +static void print_wps_strings(struct wps_data *data) { int i, len, total_len = 0, buf_used = 0; @@ -414,7 +422,7 @@ void print_wps_strings(struct wps_data *data) } #ifdef HAVE_LCD_BITMAP -void print_img_cond_indexes(struct wps_data *data) +static void print_img_cond_indexes(struct wps_data *data) { DEBUGF("Image conditional indexes:\n"); int i; @@ -427,4 +435,39 @@ void print_img_cond_indexes(struct wps_data *data) } #endif /*HAVE_LCD_BITMAP */ +void print_debug_info(struct wps_data *data, int fail, int line) +{ +#ifdef SIMULATOR + if (debug_wps) + { + dump_wps_tokens(data); + print_line_info(data); + print_wps_strings(data); +#ifdef HAVE_LCD_BITMAP + print_img_cond_indexes(data); +#endif + } +#endif /* SIMULATOR */ + + if (fail) + { + DEBUGF("Failed parsing on line %d : ", line); + switch (fail) + { + case PARSE_FAIL_UNCLOSED_COND: + DEBUGF("Unclosed conditional"); + break; + + case PARSE_FAIL_INVALID_CHAR: + DEBUGF("Invalid conditional char (not in an open conditional)"); + break; + + case PARSE_FAIL_COND_SYNTAX_ERROR: + DEBUGF("Conditional syntax error"); + break; + } + DEBUGF("\n"); + } +} + #endif /* DEBUG */ diff --git a/apps/gui/wps_parser.c b/apps/gui/wps_parser.c index d3e8454737..ec98d95ee4 100644 --- a/apps/gui/wps_parser.c +++ b/apps/gui/wps_parser.c @@ -69,11 +69,8 @@ static const char *backdrop_bmp_name; #endif #ifdef DEBUG -/* debugging functions */ -extern void dump_wps_tokens(struct wps_data *data); -extern void print_line_info(struct wps_data *data); -extern void print_img_cond_indexes(struct wps_data *data); -extern void print_wps_strings(struct wps_data *data); +/* debugging function */ +extern void print_debug_info(struct wps_data *data, int fail, int line); #endif static void wps_reset(struct wps_data *data); @@ -795,36 +792,8 @@ static bool wps_parse(struct wps_data *data, const char *wps_bufptr) } #ifdef DEBUG - -#if 0 /* optional debugging code */ - dump_wps_tokens(data); - print_line_info(data); - print_wps_strings(data); -#ifdef HAVE_LCD_BITMAP - print_img_cond_indexes(data); + print_debug_info(data, fail, line); #endif -#endif - - if (fail) - { - DEBUGF("Failed parsing on line %d : ", line); - switch (fail) - { - case PARSE_FAIL_UNCLOSED_COND: - DEBUGF("Unclosed conditional"); - break; - - case PARSE_FAIL_INVALID_CHAR: - DEBUGF("Invalid conditional char (not in an open conditional)"); - break; - - case PARSE_FAIL_COND_SYNTAX_ERROR: - DEBUGF("Conditional syntax error"); - break; - } - DEBUGF("\n"); - } -#endif /* DEBUG */ if (fail) wps_reset(data); diff --git a/uisimulator/sdl/uisdl.c b/uisimulator/sdl/uisdl.c index 54175ce727..bac11ff7a9 100644 --- a/uisimulator/sdl/uisdl.c +++ b/uisimulator/sdl/uisdl.c @@ -55,6 +55,8 @@ char having_new_lcd = true; /* Used for player simulator */ bool debug_audio = false; +bool debug_wps = false; + long start_tick; Uint32 tick_timer(Uint32 interval, void *param) @@ -200,6 +202,9 @@ int main(int argc, char *argv[]) if (!strcmp("--debugaudio", argv[x])) { debug_audio = true; printf("Writing debug audio file.\n"); + } else if (!strcmp("--debugwps", argv[x])) { + debug_wps = true; + printf("WPS debug mode enabled.\n"); } else if (!strcmp("--background", argv[x])) { background = true; printf("Using background image.\n"); @@ -217,9 +222,10 @@ int main(int argc, char *argv[]) printf("rockboxui\n"); printf("Arguments:\n"); printf(" --debugaudio \t Write raw PCM data to audiodebug.raw\n"); + printf(" --debugwps \t Print advanced WPS debug info\n"); printf(" --background \t Use background image of hardware\n"); printf(" --old_lcd \t [Player] simulate old playermodel (ROM version<4.51)\n"); - printf(" --zoom \t window zoom (will disable backgrounds)\n"); + printf(" --zoom [VAL]\t window zoom (will disable backgrounds)\n"); exit(0); } }