summaryrefslogtreecommitdiff
path: root/apps/debug_menu.c
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2013-07-02 08:24:00 +0200
committerThomas Martitz <kugel@rockbox.org>2014-02-02 19:40:39 +0100
commitdac40fdd60872da55b60ae9912b31e6549f1cf4a (patch)
tree76a0571260eb097d8936bd33edf15120dd2ef158 /apps/debug_menu.c
parent57000b513bd54b9dba3b308b7734c88962b81ae3 (diff)
downloadrockbox-dac40fdd60872da55b60ae9912b31e6549f1cf4a.zip
rockbox-dac40fdd60872da55b60ae9912b31e6549f1cf4a.tar.gz
rockbox-dac40fdd60872da55b60ae9912b31e6549f1cf4a.tar.bz2
rockbox-dac40fdd60872da55b60ae9912b31e6549f1cf4a.tar.xz
talk: Add debug menu entry to view statistics about talk engine.
This engine includes voicefile, memory usage and cache hits/misses for TALK_PARTIAL_LOAD. Change-Id: I331981ddda39ea30c57b4b74504accb3c556c3b9
Diffstat (limited to 'apps/debug_menu.c')
-rw-r--r--apps/debug_menu.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/apps/debug_menu.c b/apps/debug_menu.c
index 6f7de6d..7c39935 100644
--- a/apps/debug_menu.c
+++ b/apps/debug_menu.c
@@ -131,6 +131,8 @@
#include "rds.h"
#endif
+#include "talk.h"
+
/*---------------------------------------------------*/
/* SPECIAL DEBUG STUFF */
/*---------------------------------------------------*/
@@ -2130,6 +2132,67 @@ static bool dbg_scrollwheel(void)
}
#endif
+static const char* dbg_talk_get_name(int selected_item, void *data,
+ char *buffer, size_t buffer_len)
+{
+ struct talk_debug_data *talk_data = data;
+ switch(selected_item)
+ {
+ case 0:
+ if (talk_data)
+ snprintf(buffer, buffer_len, "Current voice file: %s",
+ talk_data->voicefile);
+ else
+ buffer = "No voice information available";
+ break;
+ case 1:
+ snprintf(buffer, buffer_len, "Number of (empty) clips in voice file: (%d) %d",
+ talk_data->num_empty_clips, talk_data->num_clips);
+ break;
+ case 2:
+ snprintf(buffer, buffer_len, "Min/Avg/Max size of clips: %d / %d / %d",
+ talk_data->min_clipsize, talk_data->avg_clipsize, talk_data->max_clipsize);
+ break;
+ case 3:
+ snprintf(buffer, buffer_len, "Memory allocated: %ld.%02ld KB",
+ talk_data->memory_allocated / 1024, talk_data->memory_allocated % 1024);
+ break;
+ case 4:
+ snprintf(buffer, buffer_len, "Memory used: %ld.%02ld KB",
+ talk_data->memory_used / 1024, talk_data->memory_used % 1024);
+ break;
+ case 5:
+ snprintf(buffer, buffer_len, "Number of clips in cache: %d",
+ talk_data->cached_clips);
+ break;
+ case 6:
+ snprintf(buffer, buffer_len, "Cache hits / misses: %d / %d",
+ talk_data->cache_hits, talk_data->cache_misses);
+ break;
+ default:
+ buffer = "TODO";
+ break;
+ }
+
+ return buffer;
+}
+
+static bool dbg_talk(void)
+{
+ struct simplelist_info list;
+ struct talk_debug_data data;
+ if (talk_get_debug_data(&data))
+ simplelist_info_init(&list, "Voice Information:", 7, &data);
+ else
+ simplelist_info_init(&list, "Voice Information:", 1, NULL);
+ list.scroll_all = true;
+ list.hide_selection = true;
+ list.timeout = HZ;
+ list.get_name = dbg_talk_get_name;
+
+ return simplelist_show_list(&list);
+}
+
#ifdef HAVE_USBSTACK
#if defined(ROCKBOX_HAS_LOGF) && defined(USB_ENABLE_SERIAL)
static bool toggle_usb_serial(void)
@@ -2361,6 +2424,7 @@ static const struct {
&& !defined(IPOD_MINI) && !defined(SIMULATOR))
{"Debug scrollwheel", dbg_scrollwheel },
#endif
+ {"Talk engine stats", dbg_talk },
};
static int menu_action_callback(int btn, struct gui_synclist *lists)