Add a simple plugin (apps/settings_dumper.rock) which dumps the valid values of all the config settings to /settings_dumper.txt. If you notice any settings its not dumping please let me know.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18882 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
34535494a7
commit
9e2807fc66
7 changed files with 163 additions and 2 deletions
|
@ -618,7 +618,7 @@ static const struct plugin_api rockbox_api = {
|
|||
appsversion,
|
||||
/* new stuff at the end, sort into place next time
|
||||
the API gets incompatible */
|
||||
|
||||
get_settings_list,
|
||||
};
|
||||
|
||||
int plugin_load(const char* plugin, const void* parameter)
|
||||
|
|
|
@ -89,6 +89,7 @@ void* plugin_get_buffer(size_t *buffer_size);
|
|||
#include "tagcache.h"
|
||||
#include "viewport.h"
|
||||
#include "ata_idle_notify.h"
|
||||
#include "settings_list.h"
|
||||
|
||||
#ifdef HAVE_ALBUMART
|
||||
#include "albumart.h"
|
||||
|
@ -774,6 +775,7 @@ struct plugin_api {
|
|||
const char *appsversion;
|
||||
/* new stuff at the end, sort into place next time
|
||||
the API gets incompatible */
|
||||
const struct settings_list* (*get_settings_list)(int*count);
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -68,6 +68,7 @@ rocklife,games
|
|||
rockpaint,apps
|
||||
search,viewers
|
||||
searchengine,viewers
|
||||
settings_dumper,apps
|
||||
shortcuts_append,viewers
|
||||
shortcuts_view,viewers
|
||||
sliding_puzzle,games
|
||||
|
|
|
@ -14,6 +14,7 @@ random_folder_advance_config.c
|
|||
rockblox.c
|
||||
rockbox_flash.c
|
||||
search.c
|
||||
settings_dumper.c
|
||||
snow.c
|
||||
sort.c
|
||||
stats.c
|
||||
|
|
151
apps/plugins/settings_dumper.c
Normal file
151
apps/plugins/settings_dumper.c
Normal file
|
@ -0,0 +1,151 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* $Id: helloworld.c 17847 2008-06-28 18:10:04Z bagder $
|
||||
*
|
||||
* Copyright (C) 2002 Björn Stenberg
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
#include "plugin.h"
|
||||
|
||||
PLUGIN_HEADER
|
||||
|
||||
static const struct plugin_api* rb;
|
||||
#define FILENAME "/settings_dumper.txt"
|
||||
static int setting_count = 0;
|
||||
|
||||
static void write_setting(const struct settings_list *setting, int fd, unsigned int group)
|
||||
{
|
||||
char text[1024];
|
||||
if (setting->cfg_name == NULL)
|
||||
return;
|
||||
if (group && (setting->flags&group) == 0) /* not in the group we are dumping */
|
||||
return;
|
||||
else if (!group && (setting->flags&(F_THEMESETTING|F_RECSETTING|F_EQSETTING|F_SOUNDSETTING)))
|
||||
return;
|
||||
setting_count++;
|
||||
if (setting_count%10 == 0)
|
||||
rb->fdprintf(fd, "\r\n");
|
||||
switch (setting->flags&F_T_MASK)
|
||||
{
|
||||
case F_T_INT:
|
||||
case F_T_UINT:
|
||||
if (setting->flags&F_RGB)
|
||||
rb->strcpy(text, "RGB colour value in the form RRGGBB (in hexadecimal)");
|
||||
else if (setting->flags&F_T_SOUND)
|
||||
rb->snprintf(text, sizeof(text), "Min: %d, Max %d",
|
||||
rb->sound_min(setting->sound_setting->setting),
|
||||
rb->sound_max(setting->sound_setting->setting));
|
||||
else if (setting->flags&F_TABLE_SETTING)
|
||||
{
|
||||
char temp[8];
|
||||
int i;
|
||||
rb->snprintf(text, sizeof(text), "Setting allows the following values%s: ",
|
||||
setting->flags&F_ALLOW_ARBITRARY_VALS? " (And any value between)":"");
|
||||
for(i=0;i<setting->table_setting->count;i++)
|
||||
{
|
||||
rb->snprintf(temp, 8, "%d, ", setting->table_setting->values[i]);
|
||||
rb->strcat(text, temp);
|
||||
}
|
||||
}
|
||||
else if (setting->flags&F_INT_SETTING)
|
||||
{
|
||||
int min = setting->int_setting->min,
|
||||
max = setting->int_setting->max,
|
||||
step = setting->int_setting->step;
|
||||
rb->snprintf(text, sizeof(text), "Min: %d, Max: %d, Step size: %d",
|
||||
min, max, step);
|
||||
}
|
||||
else if (setting->flags&F_CHOICE_SETTING && (setting->cfg_vals == NULL))
|
||||
{
|
||||
char temp[64];
|
||||
int i;
|
||||
temp[0] = '\0';
|
||||
for(i=0;i<setting->choice_setting->count;i++)
|
||||
{
|
||||
rb->snprintf(temp, 64, "%s, ", setting->choice_setting->desc[i]);
|
||||
rb->strcat(text, temp);
|
||||
}
|
||||
}
|
||||
else if (setting->cfg_vals != NULL)
|
||||
{
|
||||
rb->snprintf(text, sizeof(text), "%s", setting->cfg_vals);
|
||||
}
|
||||
break; /* F_T_*INT */
|
||||
case F_T_BOOL:
|
||||
rb->snprintf(text, sizeof(text), "on, off");
|
||||
break;
|
||||
case F_T_CHARPTR:
|
||||
case F_T_UCHARPTR:
|
||||
if (setting->flags&F_FILENAME)
|
||||
{
|
||||
rb->snprintf(text, sizeof(text), "Up to %d characters.", setting->filename_setting->max_len-1);
|
||||
if (setting->filename_setting->prefix && setting->filename_setting->suffix)
|
||||
{
|
||||
rb->strcat(text, "Should start with:\"");
|
||||
rb->strcat(text, setting->filename_setting->prefix);
|
||||
rb->strcat(text, "\" And end with:\"");
|
||||
rb->strcat(text, setting->filename_setting->suffix);
|
||||
rb->strcat(text, "\"");
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
rb->fdprintf(fd, "%s: %s\r\n", setting->cfg_name, text);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* this is the plugin entry point */
|
||||
enum plugin_status plugin_start(const struct plugin_api* api, const void* parameter)
|
||||
{
|
||||
const struct settings_list *list;
|
||||
int setting_count, i;
|
||||
int fd;
|
||||
(void)parameter;
|
||||
rb = api;
|
||||
|
||||
fd = rb->open(FILENAME, O_CREAT|O_TRUNC|O_WRONLY);
|
||||
if (fd < 0)
|
||||
return PLUGIN_ERROR;
|
||||
list = rb->get_settings_list(&setting_count);
|
||||
rb->fdprintf(fd, "# .cfg file created by rockbox %s - "
|
||||
"http://www.rockbox.org\r\n\r\n", rb->appsversion);
|
||||
|
||||
rb->fdprintf(fd, "# -- Sound settings -- #\r\n");
|
||||
for(i=0;i<setting_count;i++)
|
||||
write_setting(&list[i], fd, F_SOUNDSETTING);
|
||||
|
||||
rb->fdprintf(fd, "\r\n\r\n# -- Theme settings -- #\r\n");
|
||||
for(i=0;i<setting_count;i++)
|
||||
write_setting(&list[i], fd, F_THEMESETTING);
|
||||
#ifdef HAVE_RECORDING
|
||||
rb->fdprintf(fd, "\r\n\r\n# -- Recording settings -- #\r\n");
|
||||
for(i=0;i<setting_count;i++)
|
||||
write_setting(&list[i], fd, F_RECSETTING);
|
||||
#endif
|
||||
rb->fdprintf(fd, "\r\n\r\n# -- EQ settings -- #\r\n");
|
||||
for(i=0;i<setting_count;i++)
|
||||
write_setting(&list[i], fd, F_EQSETTING);
|
||||
|
||||
rb->fdprintf(fd, "\r\n\r\n# -- Other settings -- #\r\n");
|
||||
for(i=0;i<setting_count;i++)
|
||||
write_setting(&list[i], fd, 0);
|
||||
|
||||
rb->fdprintf(fd, "\r\n\r\n# Total settings count: %d\r\n", setting_count);
|
||||
rb->close(fd);
|
||||
rb->splash(HZ, "Done!");
|
||||
return PLUGIN_OK;
|
||||
}
|
|
@ -1367,3 +1367,9 @@ const struct settings_list settings[] = {
|
|||
};
|
||||
|
||||
const int nb_settings = sizeof(settings)/sizeof(*settings);
|
||||
|
||||
const struct settings_list* get_settings_list(int*count)
|
||||
{
|
||||
*count = nb_settings;
|
||||
return settings;
|
||||
}
|
||||
|
|
|
@ -139,7 +139,7 @@ struct settings_list {
|
|||
const struct table_setting *table_setting; /* F_TABLE_SETTING */
|
||||
};
|
||||
};
|
||||
|
||||
const struct settings_list* get_settings_list(int*count);
|
||||
#ifndef PLUGIN
|
||||
/* not needed for plugins and just causes compile error,
|
||||
possibly fix proberly later */
|
||||
|
|
Loading…
Reference in a new issue