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
diff --git a/apps/gui/wps_debug.c b/apps/gui/wps_debug.c
index ad9395b..335c994 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 @@
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 @@
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 @@
}
#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 @@
}
#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 d3e8454..ec98d95 100644
--- a/apps/gui/wps_parser.c
+++ b/apps/gui/wps_parser.c
@@ -69,11 +69,8 @@
#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 @@
}
#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 54175ce..bac11ff 100644
--- a/uisimulator/sdl/uisdl.c
+++ b/uisimulator/sdl/uisdl.c
@@ -55,6 +55,8 @@
bool debug_audio = false;
+bool debug_wps = false;
+
long start_tick;
Uint32 tick_timer(Uint32 interval, void *param)
@@ -200,6 +202,9 @@
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 @@
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);
}
}