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
This commit is contained in:
Nicolas Pennequin 2007-04-24 23:58:57 +00:00
parent 4ddc764a7c
commit 6ac306a515
3 changed files with 58 additions and 40 deletions

View file

@ -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 */

View file

@ -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);

View file

@ -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);
}
}