1 /***************************************************************************
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
8 * $Id: helloworld.c 17847 2008-06-28 18:10:04Z bagder $
10 * Copyright (C) 2002 Björn Stenberg
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
20 ****************************************************************************/
25 static const struct plugin_api
* rb
;
26 #define FILENAME "/settings_dumper.txt"
27 static int setting_count
= 0;
29 static void write_setting(const struct settings_list
*setting
, int fd
, unsigned int group
)
32 if (setting
->cfg_name
== NULL
)
34 if (group
&& (setting
->flags
&group
) == 0) /* not in the group we are dumping */
36 else if (!group
&& (setting
->flags
&(F_THEMESETTING
|
42 if (setting_count
%10 == 0)
43 rb
->fdprintf(fd
, "\r\n");
44 switch (setting
->flags
&F_T_MASK
)
47 rb
->strcpy(text
, "No information available. Check the manual for valid values");
51 if (setting
->flags
&F_RGB
)
52 rb
->strcpy(text
, "RGB colour value in the form RRGGBB (in hexadecimal)");
53 else if (setting
->flags
&F_T_SOUND
)
54 rb
->snprintf(text
, sizeof(text
), "Min: %d, Max %d",
55 rb
->sound_min(setting
->sound_setting
->setting
),
56 rb
->sound_max(setting
->sound_setting
->setting
));
57 else if (setting
->flags
&F_TABLE_SETTING
)
61 rb
->snprintf(text
, sizeof(text
), "Setting allows the following values%s: ",
62 setting
->flags
&F_ALLOW_ARBITRARY_VALS
? " (And any value between)":"");
63 for(i
=0;i
<setting
->table_setting
->count
;i
++)
65 rb
->snprintf(temp
, 8, "%d, ",
66 setting
->table_setting
->values
[i
]);
67 rb
->strcat(text
, temp
);
70 else if (setting
->flags
&F_INT_SETTING
)
72 int min
= setting
->int_setting
->min
,
73 max
= setting
->int_setting
->max
,
74 step
= setting
->int_setting
->step
;
75 rb
->snprintf(text
, sizeof(text
), "Min: %d, Max: %d, Step size: %d",
78 else if (setting
->flags
&F_CHOICE_SETTING
&&
79 (setting
->cfg_vals
== NULL
))
84 for(i
=0;i
<setting
->choice_setting
->count
;i
++)
86 rb
->snprintf(temp
, 64, "%s, ",
87 setting
->choice_setting
->desc
[i
]);
88 rb
->strcat(text
, temp
);
91 else if (setting
->cfg_vals
!= NULL
)
93 rb
->snprintf(text
, sizeof(text
), "%s", setting
->cfg_vals
);
97 rb
->snprintf(text
, sizeof(text
), "on, off");
101 rb
->snprintf(text
, sizeof(text
), "Text.. Up to %d characters. ",
102 setting
->filename_setting
->max_len
-1);
103 if (setting
->filename_setting
->prefix
&&
104 setting
->filename_setting
->suffix
)
106 rb
->strcat(text
, "Should start with:\"");
107 rb
->strcat(text
, setting
->filename_setting
->prefix
);
108 rb
->strcat(text
, "\" and end with:\"");
109 rb
->strcat(text
, setting
->filename_setting
->suffix
);
110 rb
->strcat(text
, "\"");
114 rb
->fdprintf(fd
, "%s: %s\r\n", setting
->cfg_name
, text
);
119 /* this is the plugin entry point */
120 enum plugin_status
plugin_start(const struct plugin_api
* api
,
121 const void* parameter
)
123 const struct settings_list
*list
;
124 int setting_count
, i
;
129 fd
= rb
->open(FILENAME
, O_CREAT
|O_TRUNC
|O_WRONLY
);
132 list
= rb
->get_settings_list(&setting_count
);
133 rb
->fdprintf(fd
, "# .cfg file created by rockbox %s - "
134 "http://www.rockbox.org\r\n\r\n", rb
->appsversion
);
136 rb
->fdprintf(fd
, "# -- Sound settings -- #\r\n");
137 for(i
=0;i
<setting_count
;i
++)
138 write_setting(&list
[i
], fd
, F_SOUNDSETTING
);
140 rb
->fdprintf(fd
, "\r\n\r\n# -- Theme settings -- #\r\n");
141 for(i
=0;i
<setting_count
;i
++)
142 write_setting(&list
[i
], fd
, F_THEMESETTING
);
143 #ifdef HAVE_RECORDING
144 rb
->fdprintf(fd
, "\r\n\r\n# -- Recording settings -- #\r\n");
145 for(i
=0;i
<setting_count
;i
++)
146 write_setting(&list
[i
], fd
, F_RECSETTING
);
148 rb
->fdprintf(fd
, "\r\n\r\n# -- EQ settings -- #\r\n");
149 for(i
=0;i
<setting_count
;i
++)
150 write_setting(&list
[i
], fd
, F_EQSETTING
);
152 rb
->fdprintf(fd
, "\r\n\r\n# -- Other settings -- #\r\n");
153 for(i
=0;i
<setting_count
;i
++)
154 write_setting(&list
[i
], fd
, 0);
156 rb
->fdprintf(fd
, "\r\n\r\n# Total settings count: %d\r\n", setting_count
);
158 rb
->splash(HZ
, "Done!");