diff options
| author | Thomas Martitz <kugel@rockbox.org> | 2013-07-02 08:24:00 +0200 |
|---|---|---|
| committer | Thomas Martitz <kugel@rockbox.org> | 2014-02-02 19:40:39 +0100 |
| commit | dac40fdd60872da55b60ae9912b31e6549f1cf4a (patch) | |
| tree | 76a0571260eb097d8936bd33edf15120dd2ef158 /apps/debug_menu.c | |
| parent | 57000b513bd54b9dba3b308b7734c88962b81ae3 (diff) | |
| download | rockbox-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.c | 64 |
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) |