1 /***************************************************************************
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
10 * Copyright (C) 2007 Jonathan Gordon
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 ****************************************************************************/
24 #include "string-extra.h"
31 #include "backlight.h"
34 #include "settings_list.h"
39 #include "powermgmt.h"
41 #include "lcd-remote.h"
43 #include "rbunicode.h"
44 #ifdef HAVE_LCD_BITMAP
45 #include "peakmeter.h"
47 #include "menus/eq_menu.h"
51 #ifdef IPOD_ACCESSORY_PROTOCOL
54 #include "statusbar.h"
55 #ifdef HAVE_TOUCHSCREEN
56 #include "touchscreen.h"
57 #include "ctype.h" /* For isspace() */
63 #define NVRAM(bytes) (bytes<<F_NVRAM_MASK_SHIFT)
64 /** NOTE: NVRAM_CONFIG_VERSION is in settings_list.h
65 and you may need to update it if you edit this file */
67 #define UNUSED {.RESERVED=NULL}
68 #define INT(a) {.int_ = a}
69 #define UINT(a) {.uint_ = a}
70 #define BOOL(a) {.bool_ = a}
71 #define CHARPTR(a) {.charptr = a}
72 #define UCHARPTR(a) {.ucharptr = a}
73 #define FUNCTYPE(a) {.func = a}
74 #define NODEFAULT INT(0)
76 /* in all the following macros the args are:
77 - flags: bitwise | or the F_ bits in settings_list.h
78 - var: pointer to the variable being changed (usually in global_settings)
79 - lang_id: LANG_* id to display in menus and setting screens for the setting
80 - default: the default value for the variable, set if settings are reset
81 - name: the name of the setting in config files
82 - cfg_vals: comma separated list of legal values to write to cfg files.
83 The values correspond to the values 0,1,2,etc. of the setting.
84 NULL if just the number itself should be written to the file.
85 No spaces between the values and the commas!
86 - cb: the callback used by the setting screen.
89 /* Use for int settings which use the set_sound() function to set them */
90 #define SOUND_SETTING(flags,var,lang_id,name,setting) \
91 {flags|F_T_INT|F_T_SOUND|F_SOUNDSETTING, &global_settings.var, \
92 lang_id, NODEFAULT,name,NULL, \
93 {.sound_setting=(struct sound_setting[]){{setting}}} }
95 /* Use for bool variables which don't use LANG_SET_BOOL_YES and LANG_SET_BOOL_NO
96 or dont save as "off" or "on" in the cfg.
97 cfgvals are comma separated values (without spaces after the comma!) to write
98 for 'false' and 'true' (in this order)
99 yes_id is the lang_id for the 'yes' (or 'on') option in the menu
100 no_id is the lang_id for the 'no' (or 'off') option in the menu
102 #define BOOL_SETTING(flags,var,lang_id,default,name,cfgvals,yes_id,no_id,cb)\
103 {flags|F_BOOL_SETTING, &global_settings.var, \
104 lang_id, BOOL(default),name,cfgvals, \
105 {.bool_setting=(struct bool_setting[]){{cb,yes_id,no_id}}} }
107 /* bool setting which does use LANG_YES and _NO and save as "off,on" */
108 #define OFFON_SETTING(flags,var,lang_id,default,name,cb) \
109 BOOL_SETTING(flags,var,lang_id,default,name,off_on, \
110 LANG_SET_BOOL_YES,LANG_SET_BOOL_NO,cb)
112 /* int variable which is NOT saved to .cfg files,
113 (Use NVRAM() in the flags to save to the nvram (or nvram.bin file) */
114 #define SYSTEM_SETTING(flags,var,default) \
115 {flags|F_T_INT, &global_status.var,-1, INT(default), \
118 /* setting which stores as a filename (or another string) in the .cfgvals
119 The string must be a char array (which all of our string settings are),
120 not just a char pointer.
121 prefix: The absolute path to not save in the variable, ex /.rockbox/wps_file
122 suffix: The file extention (usually...) e.g .wps_file
123 If the prefix is set (not NULL), then the suffix must be set as well.
125 #define TEXT_SETTING(flags,var,name,default,prefix,suffix) \
126 {flags|F_T_UCHARPTR, &global_settings.var,-1, \
127 CHARPTR(default),name,NULL, \
128 {.filename_setting= \
129 (struct filename_setting[]){ \
130 {prefix,suffix,sizeof(global_settings.var)}}} }
132 /* Used for settings which use the set_option() setting screen.
133 The ... arg is a list of pointers to strings to display in the setting
134 screen. These can either be literal strings, or ID2P(LANG_*) */
135 #define CHOICE_SETTING(flags,var,lang_id,default,name,cfg_vals,cb,count,...) \
136 {flags|F_CHOICE_SETTING|F_T_INT, &global_settings.var, lang_id, \
137 INT(default), name, cfg_vals, \
138 {.choice_setting = (struct choice_setting[]){ \
139 {cb, count, {.desc = (const unsigned char*[]) \
142 /* Similar to above, except the strings to display are taken from cfg_vals,
143 the ... arg is a list of ID's to talk for the strings, can use TALK_ID()'s */
144 #define STRINGCHOICE_SETTING(flags,var,lang_id,default,name,cfg_vals, \
146 {flags|F_CHOICE_SETTING|F_T_INT|F_CHOICETALKS, \
147 &global_settings.var, lang_id, \
148 INT(default), name, cfg_vals, \
149 {.choice_setting = (struct choice_setting[]){ \
150 {cb, count, {.talks = (const int[]){__VA_ARGS__}}}}}}
152 /* for settings which use the set_int() setting screen.
153 unit is the UNIT_ define to display/talk.
154 the first one saves a string to the config file,
155 the second one saves the variable value to the config file */
156 #define INT_SETTING_W_CFGVALS(flags, var, lang_id, default, name, cfg_vals, \
157 unit, min, max, step, formatter, get_talk_id, cb) \
158 {flags|F_INT_SETTING|F_T_INT, &global_settings.var, \
159 lang_id, INT(default), name, cfg_vals, \
160 {.int_setting = (struct int_setting[]){ \
161 {cb, unit, min, max, step, formatter, get_talk_id}}}}
162 #define INT_SETTING(flags, var, lang_id, default, name, \
163 unit, min, max, step, formatter, get_talk_id, cb) \
164 {flags|F_INT_SETTING|F_T_INT, &global_settings.var, \
165 lang_id, INT(default), name, NULL, \
166 {.int_setting = (struct int_setting[]){ \
167 {cb, unit, min, max, step, formatter, get_talk_id}}}}
168 #define INT_SETTING_NOWRAP(flags, var, lang_id, default, name, \
169 unit, min, max, step, formatter, get_talk_id, cb) \
170 {flags|F_INT_SETTING|F_T_INT|F_NO_WRAP, &global_settings.var, \
171 lang_id, INT(default), name, NULL, \
172 {.int_setting = (struct int_setting[]){ \
173 {cb, unit, min, max, step, formatter, get_talk_id}}}}
175 #define TABLE_SETTING(flags, var, lang_id, default, name, cfg_vals, \
176 unit, formatter, get_talk_id, cb, count, ...) \
177 {flags|F_TABLE_SETTING|F_T_INT, &global_settings.var, \
178 lang_id, INT(default), name, cfg_vals, \
179 {.table_setting = (struct table_setting[]) { \
180 {cb, formatter, get_talk_id, unit, count, \
181 (const int[]){__VA_ARGS__}}}}}
183 #define CUSTOM_SETTING(flags, var, lang_id, default, name, \
184 load_from_cfg, write_to_cfg, \
185 is_change, set_default) \
186 {flags|F_CUSTOM_SETTING|F_T_CUSTOM|F_BANFROMQS, \
187 &global_settings.var, lang_id, \
188 {.custom = (void*)default}, name, NULL, \
189 {.custom_setting = (struct custom_setting[]){ \
190 {load_from_cfg, write_to_cfg, is_change, set_default}}}}
192 #define VIEWPORT_SETTING(var,name) \
193 TEXT_SETTING(F_THEMESETTING,var,name,"-", NULL, NULL)
195 /* some sets of values which are used more than once, to save memory */
196 static const char off_on
[] = "off,on";
197 static const char off_on_ask
[] = "off,on,ask";
198 static const char off_number_spell
[] = "off,number,spell";
199 #ifdef HAVE_LCD_BITMAP
200 static const char graphic_numeric
[] = "graphic,numeric";
203 /* Default theme settings */
204 #define DEFAULT_WPSNAME "cabbiev2"
205 #define DEFAULT_SBSNAME "-"
206 #define DEFAULT_FMS_NAME DEFAULT_WPSNAME
208 #ifdef HAVE_LCD_BITMAP
211 #define DEFAULT_FONTNAME "08-Rockfont"
212 #elif LCD_HEIGHT <= 80
213 #define DEFAULT_FONTNAME "11-Sazanami-Mincho"
214 #elif LCD_HEIGHT <= 220
215 #define DEFAULT_FONTNAME "12-Adobe-Helvetica"
216 #elif LCD_HEIGHT <= 320
217 #define DEFAULT_FONTNAME "15-Adobe-Helvetica"
218 #elif LCD_HEIGHT <= 400
219 #define DEFAULT_FONTNAME "16-Adobe-Helvetica"
220 #elif LCD_HEIGHT <= 480 && !(CONFIG_PLATFORM & (PLATFORM_MAEMO|PLATFORM_PANDORA))
221 #define DEFAULT_FONTNAME "27-Adobe-Helvetica"
223 #define DEFAULT_FONTNAME "35-Adobe-Helvetica"
227 #define DEFAULT_FONTNAME ""
230 #ifdef HAVE_REMOTE_LCD
231 #if LCD_REMOTE_HEIGHT <= 64
232 #define DEFAULT_REMOTE_FONTNAME "08-Rockfont"
234 #define DEFAULT_REMOTE_FONTNAME "-"
236 #endif /* HAVE_REMOTE_LCD */
238 #ifdef HAVE_LCD_COLOR
239 #define DEFAULT_ICONSET "tango_small"
240 #define DEFAULT_VIEWERS_ICONSET "tango_small_viewers"
242 #define DEFAULT_ICONSET "tango_small_mono"
243 #define DEFAULT_VIEWERS_ICONSET "tango_small_viewers_mono"
244 #else /* monochrome */
245 #define DEFAULT_ICONSET ""
246 #define DEFAULT_VIEWERS_ICONSET ""
249 #define DEFAULT_THEME_FOREGROUND LCD_RGBPACK(0xce, 0xcf, 0xce)
250 #define DEFAULT_THEME_BACKGROUND LCD_RGBPACK(0x00, 0x00, 0x00)
251 #define DEFAULT_THEME_SELECTOR_START LCD_RGBPACK(0xff, 0xeb, 0x9c)
252 #define DEFAULT_THEME_SELECTOR_END LCD_RGBPACK(0xb5, 0x8e, 0x00)
253 #define DEFAULT_THEME_SELECTOR_TEXT LCD_RGBPACK(0x00, 0x00, 0x00)
255 #define DEFAULT_BACKDROP BACKDROP_DIR "/cabbiev2.bmp"
257 #ifdef HAVE_RECORDING
258 /* these should be in the config.h files */
259 #if CONFIG_CODEC == MAS3587F
260 # define DEFAULT_REC_MIC_GAIN 8
261 # define DEFAULT_REC_LEFT_GAIN 2
262 # define DEFAULT_REC_RIGHT_GAIN 2
263 #elif CONFIG_CODEC == SWCODEC
265 # define DEFAULT_REC_MIC_GAIN 16
266 # define DEFAULT_REC_LEFT_GAIN 0
267 # define DEFAULT_REC_RIGHT_GAIN 0
268 # elif defined(HAVE_TLV320)
269 # define DEFAULT_REC_MIC_GAIN 0
270 # define DEFAULT_REC_LEFT_GAIN 0
271 # define DEFAULT_REC_RIGHT_GAIN 0
272 # elif defined(HAVE_WM8975)
273 # define DEFAULT_REC_MIC_GAIN 16
274 # define DEFAULT_REC_LEFT_GAIN 0
275 # define DEFAULT_REC_RIGHT_GAIN 0
276 # elif defined(HAVE_WM8758)
277 # define DEFAULT_REC_MIC_GAIN 16
278 # define DEFAULT_REC_LEFT_GAIN 0
279 # define DEFAULT_REC_RIGHT_GAIN 0
280 # elif defined(HAVE_WM8731)
281 # define DEFAULT_REC_MIC_GAIN 16
282 # define DEFAULT_REC_LEFT_GAIN 0
283 # define DEFAULT_REC_RIGHT_GAIN 0
287 #endif /* HAVE_RECORDING */
289 static const char* formatter_unit_0_is_off(char *buffer
, size_t buffer_size
,
290 int val
, const char *unit
)
293 return str(LANG_OFF
);
295 snprintf(buffer
, buffer_size
, "%d %s", val
, unit
);
299 static int32_t getlang_unit_0_is_off(int value
, int unit
)
304 return TALK_ID(value
,unit
);
307 static const char* formatter_unit_0_is_skip_track(char *buffer
, size_t buffer_size
,
308 int val
, const char *unit
)
312 return str(LANG_SKIP_OUTRO
);
314 return str(LANG_SKIP_TRACK
);
315 else if (val
% 60 == 0)
316 snprintf(buffer
, buffer_size
, "%d min", val
/60);
318 snprintf(buffer
, buffer_size
, "%d s", val
);
322 static int32_t getlang_unit_0_is_skip_track(int value
, int unit
)
326 return LANG_SKIP_OUTRO
;
328 return LANG_SKIP_TRACK
;
329 else if (value
% 60 == 0)
330 return TALK_ID(value
/60, UNIT_MIN
);
332 return TALK_ID(value
, UNIT_SEC
);
335 #ifdef HAVE_BACKLIGHT
337 #define DEFAULT_BACKLIGHT_TIMEOUT 0
339 #define DEFAULT_BACKLIGHT_TIMEOUT 15
341 static const char* backlight_formatter(char *buffer
, size_t buffer_size
,
342 int val
, const char *unit
)
345 return str(LANG_OFF
);
349 snprintf(buffer
, buffer_size
, "%d %s", val
, unit
);
352 static int32_t backlight_getlang(int value
, int unit
)
359 return TALK_ID(value
, unit
);
363 #ifndef HAVE_WHEEL_ACCELERATION
364 static const char* scanaccel_formatter(char *buffer
, size_t buffer_size
,
365 int val
, const char *unit
)
369 return str(LANG_OFF
);
371 snprintf(buffer
, buffer_size
, "Speed up every %ds", val
);
376 #if CONFIG_CODEC == SWCODEC
377 static void crossfeed_cross_set(int val
)
380 dsp_set_crossfeed_cross_params(global_settings
.crossfeed_cross_gain
,
381 global_settings
.crossfeed_hf_attenuation
,
382 global_settings
.crossfeed_hf_cutoff
);
385 static void compressor_set(int val
)
388 dsp_set_compressor(global_settings
.compressor_threshold
,
389 global_settings
.compressor_makeup_gain
,
390 global_settings
.compressor_ratio
,
391 global_settings
.compressor_knee
,
392 global_settings
.compressor_release_time
);
395 static const char* db_format(char* buffer
, size_t buffer_size
, int value
,
400 snprintf(buffer
, buffer_size
, "%s%d.%d %s", value
< 0 ? "-" : "",
401 v
/ 10, v
% 10, unit
);
405 static int32_t get_dec_talkid(int value
, int unit
)
407 return TALK_ID_DECIMAL(value
, 1, unit
);
410 static int32_t get_precut_talkid(int value
, int unit
)
412 return TALK_ID_DECIMAL(-value
, 1, unit
);
416 #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
417 static void set_mdb_enable(bool value
)
419 sound_set_mdb_enable((int)value
);
421 static void set_superbass(bool value
)
423 sound_set_superbass((int)value
);
427 #ifdef HAVE_QUICKSCREEN
428 static int find_setting_by_name(char*name
)
431 const struct settings_list
*setting
;
432 while (i
<nb_settings
)
434 setting
= &settings
[i
];
435 if (setting
->cfg_name
&& !strcmp(setting
->cfg_name
, name
))
443 static void qs_load_from_cfg(void* var
, char*value
)
445 *(int*)var
= find_setting_by_name(value
);
447 static char* qs_write_to_cfg(void* setting
, char*buf
, int buf_len
)
449 const struct settings_list
*var
= &settings
[*(int*)setting
];
450 strlcpy(buf
, var
->cfg_name
, buf_len
);
453 static bool qs_is_changed(void* setting
, void* defaultval
)
455 int i
= *(int*)setting
;
456 if (i
< 0 || i
>= nb_settings
)
458 const struct settings_list
*var
= &settings
[i
];
459 return var
!= find_setting(defaultval
, NULL
);
461 static void qs_set_default(void* setting
, void* defaultval
)
463 if (defaultval
== NULL
)
465 find_setting(defaultval
, (int*)setting
);
468 #ifdef HAVE_TOUCHSCREEN
470 #if defined(APPLICATION) \
471 || defined(ONDA_VX747) \
472 || defined(ONDA_VX767) \
473 || defined(ONDA_VX747P) \
474 || defined(ONDA_VX777)
476 #define DEFAULT_TOUCHSCREEN_MODE TOUCHSCREEN_POINT
478 #define DEFAULT_TOUCHSCREEN_MODE TOUCHSCREEN_BUTTON
481 static void tsc_load_from_cfg(void* setting
, char*value
)
483 struct touchscreen_parameter
*var
= (struct touchscreen_parameter
*) setting
;
485 /* Replacement for sscanf(value, "%d ..., &var->A, ...); */
486 int vals
[7], count
= 0;
487 while(*value
!= 0 && count
< 7)
493 vals
[count
++] = atoi(value
);
494 while(!isspace(*value
))
504 var
->divider
= vals
[6];
507 static char* tsc_write_to_cfg(void* setting
, char*buf
, int buf_len
)
509 const struct touchscreen_parameter
*var
= (const struct touchscreen_parameter
*) setting
;
510 snprintf(buf
, buf_len
, "%d %d %d %d %d %d %d", var
->A
, var
->B
, var
->C
, var
->D
, var
->E
, var
->F
, var
->divider
);
513 static bool tsc_is_changed(void* setting
, void* defaultval
)
515 return memcmp(setting
, defaultval
, sizeof(struct touchscreen_parameter
)) != 0;
517 static void tsc_set_default(void* setting
, void* defaultval
)
519 memcpy(setting
, defaultval
, sizeof(struct touchscreen_parameter
));
523 static const char* hotkey_formatter(char* buffer
, size_t buffer_size
, int value
,
529 return str(get_hotkey_lang_id(value
));
531 static int32_t hotkey_getlang(int value
, int unit
)
534 return get_hotkey_lang_id(value
);
536 #endif /* HAVE_HOTKEY */
537 const struct settings_list settings
[] = {
539 SOUND_SETTING(F_NO_WRAP
,volume
, LANG_VOLUME
, "volume", SOUND_VOLUME
),
540 SOUND_SETTING(0, balance
, LANG_BALANCE
, "balance", SOUND_BALANCE
),
542 #ifdef AUDIOHW_HAVE_BASS
543 SOUND_SETTING(F_NO_WRAP
,bass
, LANG_BASS
, "bass", SOUND_BASS
),
545 #ifdef AUDIOHW_HAVE_TREBLE
546 SOUND_SETTING(F_NO_WRAP
,treble
, LANG_TREBLE
, "treble", SOUND_TREBLE
),
548 /* Hardware EQ tone controls */
549 #ifdef AUDIOHW_HAVE_EQ
550 /* Band gain is generic */
551 SOUND_SETTING(F_NO_WRAP
, hw_eq_bands
[AUDIOHW_EQ_BAND1
].gain
,
552 LANG_HW_EQ_GAIN
, "tone band1 gain", SOUND_EQ_BAND1_GAIN
),
553 #ifdef AUDIOHW_HAVE_EQ_BAND2
554 SOUND_SETTING(F_NO_WRAP
, hw_eq_bands
[AUDIOHW_EQ_BAND2
].gain
,
555 LANG_HW_EQ_GAIN
, "tone band2 gain", SOUND_EQ_BAND2_GAIN
),
556 #endif /* AUDIOHW_HAVE_EQ_BAND2 */
557 #ifdef AUDIOHW_HAVE_EQ_BAND3
558 SOUND_SETTING(F_NO_WRAP
, hw_eq_bands
[AUDIOHW_EQ_BAND3
].gain
,
559 LANG_HW_EQ_GAIN
, "tone band3 gain", SOUND_EQ_BAND3_GAIN
),
560 #endif /* AUDIOHW_HAVE_EQ_BAND3 */
561 #ifdef AUDIOHW_HAVE_EQ_BAND4
562 SOUND_SETTING(F_NO_WRAP
, hw_eq_bands
[AUDIOHW_EQ_BAND4
].gain
,
563 LANG_HW_EQ_GAIN
, "tone band4 gain", SOUND_EQ_BAND4_GAIN
),
564 #endif /* AUDIOHW_HAVE_EQ_BAND4 */
565 #ifdef AUDIOHW_HAVE_EQ_BAND5
566 SOUND_SETTING(F_NO_WRAP
, hw_eq_bands
[AUDIOHW_EQ_BAND5
].gain
,
567 LANG_HW_EQ_GAIN
, "tone band5 gain", SOUND_EQ_BAND5_GAIN
),
568 #endif /* AUDIOHW_HAVE_EQ_BAND5 */
570 /* Frequencies vary with samplerate but at least the user has an idea
571 * about the bands and it will be correct with normal playback rates. */
573 STRINGCHOICE_SETTING(F_SOUNDSETTING
,
574 hw_eq_bands
[AUDIOHW_EQ_BAND1
].frequency
,
575 LANG_HW_EQ_FREQUENCY
, 0,"tone band1 frequency",
576 "80 Hz,105 Hz,135 Hz,175 Hz",
577 sound_set_hw_eq_band1_frequency
, 4,
578 TALK_ID(80, UNIT_HERTZ
), TALK_ID(105, UNIT_HERTZ
),
579 TALK_ID(135, UNIT_HERTZ
), TALK_ID(175, UNIT_HERTZ
)),
581 STRINGCHOICE_SETTING(F_SOUNDSETTING
,
582 hw_eq_bands
[AUDIOHW_EQ_BAND2
].frequency
,
583 LANG_HW_EQ_FREQUENCY
, 0,"tone band2 frequency",
584 "230 Hz,300 Hz,385 Hz,500 Hz",
585 sound_set_hw_eq_band2_frequency
, 4,
586 TALK_ID(230, UNIT_HERTZ
), TALK_ID(300, UNIT_HERTZ
),
587 TALK_ID(385, UNIT_HERTZ
), TALK_ID(500, UNIT_HERTZ
)),
588 CHOICE_SETTING(F_SOUNDSETTING
, hw_eq_bands
[AUDIOHW_EQ_BAND2
].width
,
589 LANG_HW_EQ_WIDTH
, 0, "tone band2 width", "narrow,wide",
590 sound_set_hw_eq_band2_width
, 2,
591 ID2P(LANG_HW_EQ_WIDTH_NARROW
), ID2P(LANG_HW_EQ_WIDTH_WIDE
)),
593 STRINGCHOICE_SETTING(F_SOUNDSETTING
,
594 hw_eq_bands
[AUDIOHW_EQ_BAND3
].frequency
,
595 LANG_HW_EQ_FREQUENCY
, 0, "tone band3 frequency",
596 "650 Hz,850 Hz,1.1 kHz,1.4 kHz",
597 sound_set_hw_eq_band3_frequency
, 4,
598 TALK_ID(650, UNIT_HERTZ
), TALK_ID(850, UNIT_HERTZ
),
599 TALK_ID_DECIMAL(11, 1, UNIT_KHZ
),
600 TALK_ID_DECIMAL(14, 1, UNIT_KHZ
)),
601 CHOICE_SETTING(F_SOUNDSETTING
,hw_eq_bands
[AUDIOHW_EQ_BAND3
].width
,
602 LANG_HW_EQ_WIDTH
, 0, "tone band3 width", "narrow,wide",
603 sound_set_hw_eq_band3_width
, 2,
604 ID2P(LANG_HW_EQ_WIDTH_NARROW
), ID2P(LANG_HW_EQ_WIDTH_WIDE
)),
606 STRINGCHOICE_SETTING(F_SOUNDSETTING
,
607 hw_eq_bands
[AUDIOHW_EQ_BAND4
].frequency
,
608 LANG_HW_EQ_FREQUENCY
, 0, "tone band4 frequency",
609 "1.8 kHz,2.4 kHz,3.2 kHz,4.1 kHz",
610 sound_set_hw_eq_band4_frequency
, 4,
611 TALK_ID_DECIMAL(18, 1, UNIT_KHZ
),
612 TALK_ID_DECIMAL(24, 1, UNIT_KHZ
),
613 TALK_ID_DECIMAL(32, 1, UNIT_KHZ
),
614 TALK_ID_DECIMAL(41, 1, UNIT_KHZ
)),
615 CHOICE_SETTING(F_SOUNDSETTING
, hw_eq_bands
[AUDIOHW_EQ_BAND4
].width
,
616 LANG_HW_EQ_WIDTH
, 0, "tone band4 width", "narrow,wide",
617 sound_set_hw_eq_band4_width
, 2,
618 ID2P(LANG_HW_EQ_WIDTH_NARROW
), ID2P(LANG_HW_EQ_WIDTH_WIDE
)),
620 STRINGCHOICE_SETTING(F_SOUNDSETTING
,
621 hw_eq_bands
[AUDIOHW_EQ_BAND5
].frequency
,
622 LANG_HW_EQ_FREQUENCY
, 0, "tone band5 frequency",
623 "5.3 kHz,6.9 kHz,9.0 kHz,11.7 kHz",
624 sound_set_hw_eq_band5_frequency
, 4,
625 TALK_ID_DECIMAL(53, 1, UNIT_KHZ
),
626 TALK_ID_DECIMAL(69, 1, UNIT_KHZ
),
627 TALK_ID_DECIMAL(90, 1, UNIT_KHZ
),
628 TALK_ID_DECIMAL(117, 1, UNIT_KHZ
)),
629 #endif /* HAVE_WM8978 */
630 #endif /* AUDIOHW_HAVE_EQ */
631 /* 3-d enhancement effect */
632 #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
633 SOUND_SETTING(0,loudness
, LANG_LOUDNESS
, "loudness", SOUND_LOUDNESS
),
634 STRINGCHOICE_SETTING(F_SOUNDSETTING
,avc
,LANG_AUTOVOL
,0,"auto volume",
635 "off,20ms,2,4,8,", sound_set_avc
, 5,
636 LANG_OFF
,TALK_ID(20, UNIT_MS
),TALK_ID(2, UNIT_SEC
),
637 TALK_ID(4, UNIT_SEC
),TALK_ID(8, UNIT_SEC
)),
638 OFFON_SETTING(F_SOUNDSETTING
, superbass
, LANG_SUPERBASS
, false, "superbass",
642 CHOICE_SETTING(F_SOUNDSETTING
, channel_config
, LANG_CHANNEL_CONFIGURATION
,
644 "stereo,mono,custom,mono left,mono right,karaoke",
645 sound_set_channels
, 6,
646 ID2P(LANG_CHANNEL_STEREO
), ID2P(LANG_CHANNEL_MONO
),
647 ID2P(LANG_CHANNEL_CUSTOM
), ID2P(LANG_CHANNEL_LEFT
),
648 ID2P(LANG_CHANNEL_RIGHT
), ID2P(LANG_CHANNEL_KARAOKE
)),
649 SOUND_SETTING(F_SOUNDSETTING
, stereo_width
, LANG_STEREO_WIDTH
,
650 "stereo_width", SOUND_STEREO_WIDTH
),
651 #ifdef AUDIOHW_HAVE_DEPTH_3D
652 SOUND_SETTING(0,depth_3d
, LANG_DEPTH_3D
, "3-d enhancement",
656 OFFON_SETTING(0, playlist_shuffle
, LANG_SHUFFLE
, false, "shuffle", NULL
),
657 SYSTEM_SETTING(NVRAM(4), resume_index
, -1),
658 SYSTEM_SETTING(NVRAM(4), resume_offset
, -1),
659 CHOICE_SETTING(0, repeat_mode
, LANG_REPEAT
, REPEAT_OFF
, "repeat",
660 "off,all,one,shuffle"
661 #ifdef AB_REPEAT_ENABLE
665 #ifdef AB_REPEAT_ENABLE
670 ID2P(LANG_OFF
), ID2P(LANG_ALL
), ID2P(LANG_REPEAT_ONE
),
672 #ifdef AB_REPEAT_ENABLE
673 ,ID2P(LANG_REPEAT_AB
)
675 ), /* CHOICE_SETTING( repeat_mode ) */
677 #ifdef HAVE_LCD_CONTRAST
678 /* its easier to leave this one un-macro()ed for the time being */
679 { F_T_INT
|F_DEF_ISFUNC
|F_INT_SETTING
, &global_settings
.contrast
,
680 LANG_CONTRAST
, FUNCTYPE(lcd_default_contrast
), "contrast", NULL
, {
681 .int_setting
= (struct int_setting
[]) {
682 { lcd_set_contrast
, UNIT_INT
, MIN_CONTRAST_SETTING
,
683 MAX_CONTRAST_SETTING
, 1, NULL
, NULL
}}}},
685 #ifdef HAVE_BACKLIGHT
686 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, backlight_timeout
, LANG_BACKLIGHT
,
687 DEFAULT_BACKLIGHT_TIMEOUT
,
688 "backlight timeout", off_on
, UNIT_SEC
, backlight_formatter
,
689 backlight_getlang
, backlight_set_timeout
, 20,
690 -1,0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,120),
692 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, backlight_timeout_plugged
,
693 LANG_BACKLIGHT_ON_WHEN_CHARGING
, 10,
694 "backlight timeout plugged", off_on
, UNIT_SEC
,
695 backlight_formatter
, backlight_getlang
,
696 backlight_set_timeout_plugged
, 20,
697 -1,0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,120),
699 #endif /* HAVE_BACKLIGHT */
700 #ifdef HAVE_LCD_BITMAP
701 #ifdef HAVE_LCD_INVERT
702 BOOL_SETTING(0, invert
, LANG_INVERT
, false ,"invert", off_on
,
703 LANG_INVERT_LCD_INVERSE
, LANG_NORMAL
, lcd_set_invert_display
),
706 OFFON_SETTING(0, flip_display
, LANG_FLIP_DISPLAY
, false, "flip display",
710 CHOICE_SETTING(F_TEMPVAR
|F_THEMESETTING
, cursor_style
, LANG_INVERT_CURSOR
,
711 #ifdef HAVE_LCD_COLOR
713 "pointer,bar (inverse),bar (color),bar (gradient)", NULL
, 4,
714 ID2P(LANG_INVERT_CURSOR_POINTER
),
715 ID2P(LANG_INVERT_CURSOR_BAR
),
716 ID2P(LANG_INVERT_CURSOR_COLOR
),
717 ID2P(LANG_INVERT_CURSOR_GRADIENT
)),
719 1, "selector type", "pointer,bar (inverse)", NULL
, 2,
720 ID2P(LANG_INVERT_CURSOR_POINTER
),
721 ID2P(LANG_INVERT_CURSOR_BAR
)),
723 CHOICE_SETTING(F_THEMESETTING
|F_TEMPVAR
, statusbar
,
724 LANG_STATUS_BAR
, STATUSBAR_TOP
, "statusbar","off,top,bottom",
725 NULL
, 3, ID2P(LANG_OFF
), ID2P(LANG_STATUSBAR_TOP
),
726 ID2P(LANG_STATUSBAR_BOTTOM
)),
727 #ifdef HAVE_REMOTE_LCD
728 CHOICE_SETTING(F_THEMESETTING
|F_TEMPVAR
, remote_statusbar
,
729 LANG_REMOTE_STATUSBAR
, STATUSBAR_TOP
, "remote statusbar","off,top,bottom",
730 NULL
, 3, ID2P(LANG_OFF
), ID2P(LANG_STATUSBAR_TOP
),
731 ID2P(LANG_STATUSBAR_BOTTOM
)),
733 CHOICE_SETTING(F_THEMESETTING
|F_TEMPVAR
, scrollbar
,
734 LANG_SCROLL_BAR
, SCROLLBAR_LEFT
, "scrollbar","off,left,right",
735 NULL
, 3, ID2P(LANG_OFF
), ID2P(LANG_LEFT
), ID2P(LANG_RIGHT
)),
736 INT_SETTING(F_THEMESETTING
, scrollbar_width
, LANG_SCROLLBAR_WIDTH
, 6,
737 "scrollbar width",UNIT_INT
, 3, MAX(LCD_WIDTH
/10,25), 1,
739 #if CONFIG_KEYPAD == RECORDER_PAD
740 OFFON_SETTING(F_THEMESETTING
,buttonbar
, LANG_BUTTON_BAR
,true,"buttonbar", NULL
),
742 CHOICE_SETTING(F_THEMESETTING
, volume_type
, LANG_VOLUME_DISPLAY
, 0,
743 "volume display", graphic_numeric
, NULL
, 2,
744 ID2P(LANG_DISPLAY_GRAPHIC
),
745 ID2P(LANG_DISPLAY_NUMERIC
)),
746 CHOICE_SETTING(F_THEMESETTING
, battery_display
, LANG_BATTERY_DISPLAY
, 0,
747 "battery display", graphic_numeric
, NULL
, 2,
748 ID2P(LANG_DISPLAY_GRAPHIC
), ID2P(LANG_DISPLAY_NUMERIC
)),
750 CHOICE_SETTING(0, timeformat
, LANG_TIMEFORMAT
, 0,
751 "time format", "24hour,12hour", NULL
, 2,
752 ID2P(LANG_24_HOUR_CLOCK
), ID2P(LANG_12_HOUR_CLOCK
)),
754 #endif /* HAVE_LCD_BITMAP */
755 OFFON_SETTING(0,show_icons
, LANG_SHOW_ICONS
,true,"show icons", NULL
),
757 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, poweroff
, LANG_POWEROFF_IDLE
, 10,
758 "idle poweroff", "off", UNIT_MIN
, formatter_unit_0_is_off
,
759 getlang_unit_0_is_off
, set_poweroff_timeout
, 15,
760 0,1,2,3,4,5,6,7,8,9,10,15,30,45,60),
761 SYSTEM_SETTING(NVRAM(4), runtime
, 0),
762 SYSTEM_SETTING(NVRAM(4), topruntime
, 0),
763 INT_SETTING(F_BANFROMQS
, max_files_in_playlist
,
764 LANG_MAX_FILES_IN_PLAYLIST
,
770 "max files in playlist", UNIT_INT
, 1000, 32000, 1000,
772 INT_SETTING(F_BANFROMQS
, max_files_in_dir
, LANG_MAX_FILES_IN_DIR
,
778 "max files in dir", UNIT_INT
, 50, 10000, 50,
780 /* use this setting for user code even if there's no exchangable battery
782 #ifdef BATTERY_CAPACITY_DEFAULT
783 /* define min/max/inc for this file if there's only one battery */
784 #ifndef BATTERY_CAPACITY_MIN
785 #define BATTERY_CAPACITY_MIN BATTERY_CAPACITY_DEFAULT
786 #define BATTERY_CAPACITY_MAX BATTERY_CAPACITY_DEFAULT
787 #define BATTERY_CAPACITY_INC 0
789 #if defined(IPOD_VIDEO) && !defined(SIMULATOR)
790 /* its easier to leave this one un-macro()ed for the time being */
791 { F_T_INT
|F_DEF_ISFUNC
|F_INT_SETTING
, &global_settings
.battery_capacity
,
792 LANG_BATTERY_CAPACITY
, FUNCTYPE(battery_default_capacity
),
793 "battery capacity", NULL
, {
794 .int_setting
= (struct int_setting
[]) {
795 { set_battery_capacity
, UNIT_MAH
, BATTERY_CAPACITY_MIN
,
796 BATTERY_CAPACITY_MAX
, BATTERY_CAPACITY_INC
, NULL
, NULL
}}}},
797 #else /* IPOD_VIDEO */
798 INT_SETTING(0, battery_capacity
, LANG_BATTERY_CAPACITY
,
799 BATTERY_CAPACITY_DEFAULT
, "battery capacity", UNIT_MAH
,
800 BATTERY_CAPACITY_MIN
, BATTERY_CAPACITY_MAX
,
801 BATTERY_CAPACITY_INC
, NULL
, NULL
, set_battery_capacity
),
802 #endif /* IPOD_VIDEO */
805 OFFON_SETTING(NVRAM(1), car_adapter_mode
,
806 LANG_CAR_ADAPTER_MODE
, false, "car adapter mode", NULL
),
808 #ifdef IPOD_ACCESSORY_PROTOCOL
809 CHOICE_SETTING(0, serial_bitrate
, LANG_SERIAL_BITRATE
, 0, "serial bitrate",
810 "auto,9600,19200,38400,57600", iap_bitrate_set
, 5, ID2P(LANG_SERIAL_BITRATE_AUTO
),
811 ID2P(LANG_SERIAL_BITRATE_9600
),ID2P(LANG_SERIAL_BITRATE_19200
),
812 ID2P(LANG_SERIAL_BITRATE_38400
),ID2P(LANG_SERIAL_BITRATE_57600
)),
814 #ifdef HAVE_ACCESSORY_SUPPLY
815 OFFON_SETTING(0, accessory_supply
, LANG_ACCESSORY_SUPPLY
,
816 true, "accessory power supply", accessory_supply_set
),
818 #ifdef HAVE_LINEOUT_POWEROFF
819 OFFON_SETTING(0, lineout_active
, LANG_LINEOUT_ONOFF
,
820 true, "lineout", lineout_set
),
824 OFFON_SETTING(0,fm_force_mono
, LANG_FM_MONO_MODE
,
825 false, "force fm mono", toggle_mono_mode
),
826 SYSTEM_SETTING(NVRAM(4),last_frequency
,0),
829 #if BATTERY_TYPES_COUNT > 1
830 CHOICE_SETTING(0, battery_type
, LANG_BATTERY_TYPE
, 0, "battery type",
831 "alkaline,nimh", NULL
, 2, ID2P(LANG_BATTERY_TYPE_ALKALINE
),
832 ID2P(LANG_BATTERY_TYPE_NIMH
)),
834 #ifdef HAVE_REMOTE_LCD
836 INT_SETTING(0, remote_contrast
, LANG_CONTRAST
,
837 DEFAULT_REMOTE_CONTRAST_SETTING
, "remote contrast", UNIT_INT
,
838 MIN_REMOTE_CONTRAST_SETTING
, MAX_REMOTE_CONTRAST_SETTING
, 1,
839 NULL
, NULL
, lcd_remote_set_contrast
),
840 BOOL_SETTING(0, remote_invert
, LANG_INVERT
, false ,"remote invert", off_on
,
841 LANG_INVERT_LCD_INVERSE
, LANG_NORMAL
,
842 lcd_remote_set_invert_display
),
843 OFFON_SETTING(0,remote_flip_display
, LANG_FLIP_DISPLAY
,
844 false,"remote flip display", NULL
),
845 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, remote_backlight_timeout
,
846 LANG_BACKLIGHT
, 5, "remote backlight timeout", off_on
,
847 UNIT_SEC
, backlight_formatter
, backlight_getlang
,
848 remote_backlight_set_timeout
, 20,
849 -1,0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,120),
851 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, remote_backlight_timeout_plugged
,
852 LANG_BACKLIGHT_ON_WHEN_CHARGING
, 10,
853 "remote backlight timeout plugged", off_on
, UNIT_SEC
,
854 backlight_formatter
, backlight_getlang
,
855 remote_backlight_set_timeout_plugged
, 20,
856 -1,0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,120),
858 #ifdef HAVE_REMOTE_LCD_TICKING
859 OFFON_SETTING(0, remote_reduce_ticking
, LANG_REDUCE_TICKING
,
860 false,"remote reduce ticking", NULL
),
864 #ifdef HAVE_BACKLIGHT
865 OFFON_SETTING(0, bl_filter_first_keypress
,
866 LANG_BACKLIGHT_FILTER_FIRST_KEYPRESS
, false,
867 "backlight filters first keypress", NULL
),
868 #ifdef HAVE_REMOTE_LCD
869 OFFON_SETTING(0, remote_bl_filter_first_keypress
,
870 LANG_BACKLIGHT_FILTER_FIRST_KEYPRESS
, false,
871 "backlight filters first remote keypress", NULL
),
873 #endif /* HAVE_BACKLIGHT */
875 /** End of old RTC config block **/
877 #ifdef HAVE_BACKLIGHT
878 OFFON_SETTING(0, caption_backlight
, LANG_CAPTION_BACKLIGHT
,
879 false, "caption backlight", NULL
),
880 #ifdef HAVE_REMOTE_LCD
881 OFFON_SETTING(0, remote_caption_backlight
, LANG_CAPTION_BACKLIGHT
,
882 false, "remote caption backlight", NULL
),
884 #ifdef HAVE_BACKLIGHT_BRIGHTNESS
885 INT_SETTING(F_NO_WRAP
, brightness
, LANG_BRIGHTNESS
,
886 DEFAULT_BRIGHTNESS_SETTING
, "brightness",UNIT_INT
,
887 MIN_BRIGHTNESS_SETTING
, MAX_BRIGHTNESS_SETTING
, 1,
888 NULL
, NULL
, backlight_set_brightness
),
890 /* backlight fading */
891 #if defined(HAVE_BACKLIGHT_FADING_INT_SETTING)
892 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, backlight_fade_in
,
893 LANG_BACKLIGHT_FADE_IN
, 300, "backlight fade in", "off",
894 UNIT_MS
, formatter_unit_0_is_off
, getlang_unit_0_is_off
,
895 backlight_set_fade_in
, 7, 0,100,200,300,500,1000,2000),
896 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, backlight_fade_out
,
897 LANG_BACKLIGHT_FADE_OUT
, 2000, "backlight fade out", "off",
898 UNIT_MS
, formatter_unit_0_is_off
, getlang_unit_0_is_off
,
899 backlight_set_fade_out
, 10,
900 0,100,200,300,500,1000,2000,3000,5000,10000),
901 #elif defined(HAVE_BACKLIGHT_FADING_BOOL_SETTING)
902 OFFON_SETTING(0, backlight_fade_in
, LANG_BACKLIGHT_FADE_IN
,
903 true, "backlight fade in", backlight_set_fade_in
),
904 OFFON_SETTING(0, backlight_fade_out
, LANG_BACKLIGHT_FADE_OUT
,
905 true, "backlight fade out", backlight_set_fade_out
),
907 #endif /* HAVE_BACKLIGHT */
908 INT_SETTING(F_PADTITLE
, scroll_speed
, LANG_SCROLL_SPEED
, 9,"scroll speed",
909 UNIT_INT
, 0, 15, 1, NULL
, NULL
, lcd_scroll_speed
),
910 INT_SETTING(F_PADTITLE
, scroll_delay
, LANG_SCROLL_DELAY
, 1000,
911 "scroll delay", UNIT_MS
, 0, 2500, 100, NULL
,
912 NULL
, lcd_scroll_delay
),
913 INT_SETTING(0, bidir_limit
, LANG_BIDIR_SCROLL
, 50, "bidir limit",
914 UNIT_PERCENT
, 0, 200, 25, NULL
, NULL
, lcd_bidir_scroll
),
915 #ifdef HAVE_REMOTE_LCD
916 INT_SETTING(0, remote_scroll_speed
, LANG_SCROLL_SPEED
, 9,
917 "remote scroll speed", UNIT_INT
, 0,15, 1,
918 NULL
, NULL
, lcd_remote_scroll_speed
),
919 INT_SETTING(0, remote_scroll_step
, LANG_SCROLL_STEP
, 6,
920 "remote scroll step", UNIT_PIXEL
, 1, LCD_REMOTE_WIDTH
, 1, NULL
,
921 NULL
, lcd_remote_scroll_step
),
922 INT_SETTING(0, remote_scroll_delay
, LANG_SCROLL_DELAY
, 1000,
923 "remote scroll delay", UNIT_MS
, 0, 2500, 100, NULL
, NULL
,
924 lcd_remote_scroll_delay
),
925 INT_SETTING(0, remote_bidir_limit
, LANG_BIDIR_SCROLL
, 50,
926 "remote bidir limit", UNIT_PERCENT
, 0, 200, 25, NULL
, NULL
,
927 lcd_remote_bidir_scroll
),
929 #ifdef HAVE_LCD_BITMAP
930 OFFON_SETTING(0, offset_out_of_view
, LANG_SCREEN_SCROLL_VIEW
,
931 false, "Screen Scrolls Out Of View",
932 gui_list_screen_scroll_out_of_view
),
933 INT_SETTING(F_PADTITLE
, scroll_step
, LANG_SCROLL_STEP
, 6, "scroll step",
934 UNIT_PIXEL
, 1, LCD_WIDTH
, 1, NULL
, NULL
, lcd_scroll_step
),
935 INT_SETTING(F_PADTITLE
, screen_scroll_step
, LANG_SCREEN_SCROLL_STEP
, 16,
936 "screen scroll step", UNIT_PIXEL
, 1, LCD_WIDTH
, 1, NULL
, NULL
,
937 gui_list_screen_scroll_step
),
938 #endif /* HAVE_LCD_BITMAP */
939 OFFON_SETTING(0,scroll_paginated
,LANG_SCROLL_PAGINATED
,
940 false,"scroll paginated",NULL
),
941 #ifdef HAVE_LCD_COLOR
943 {F_T_INT
|F_RGB
|F_THEMESETTING
,&global_settings
.fg_color
,-1,
944 INT(DEFAULT_THEME_FOREGROUND
),"foreground color",NULL
,UNUSED
},
945 {F_T_INT
|F_RGB
|F_THEMESETTING
,&global_settings
.bg_color
,-1,
946 INT(DEFAULT_THEME_BACKGROUND
),"background color",NULL
,UNUSED
},
947 {F_T_INT
|F_RGB
|F_THEMESETTING
,&global_settings
.lss_color
,-1,
948 INT(DEFAULT_THEME_SELECTOR_START
),"line selector start color",NULL
,
950 {F_T_INT
|F_RGB
|F_THEMESETTING
,&global_settings
.lse_color
,-1,
951 INT(DEFAULT_THEME_SELECTOR_END
),"line selector end color",NULL
,UNUSED
},
952 {F_T_INT
|F_RGB
|F_THEMESETTING
,&global_settings
.lst_color
,-1,
953 INT(DEFAULT_THEME_SELECTOR_TEXT
),"line selector text color",NULL
,
958 OFFON_SETTING(0,play_selected
,LANG_PLAY_SELECTED
,true,"play selected",NULL
),
959 OFFON_SETTING(0,party_mode
,LANG_PARTY_MODE
,false,"party mode",NULL
),
960 OFFON_SETTING(0,fade_on_stop
,LANG_FADE_ON_STOP
,true,"volume fade",NULL
),
961 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, ff_rewind_min_step
,
962 LANG_FFRW_STEP
, 1, "scan min step", NULL
, UNIT_SEC
,
963 NULL
, NULL
, NULL
, 14, 1,2,3,4,5,6,8,10,15,20,25,30,45,60),
964 CHOICE_SETTING(0, ff_rewind_accel
, LANG_FFRW_ACCEL
, 2,
965 "seek acceleration", "very fast,fast,normal,slow,very slow", NULL
, 5,
966 ID2P(LANG_VERY_FAST
), ID2P(LANG_FAST
), ID2P(LANG_NORMAL
),
967 ID2P(LANG_SLOW
) , ID2P(LANG_VERY_SLOW
)),
968 #if (CONFIG_CODEC == SWCODEC) && defined(HAVE_DISK_STORAGE)
969 STRINGCHOICE_SETTING(0, buffer_margin
, LANG_MP3BUFFER_MARGIN
, 0,"antiskip",
970 "5s,15s,30s,1min,2min,3min,5min,10min", NULL
, 8,
971 TALK_ID(5, UNIT_SEC
), TALK_ID(15, UNIT_SEC
),
972 TALK_ID(30, UNIT_SEC
), TALK_ID(1, UNIT_MIN
),
973 TALK_ID(2, UNIT_MIN
), TALK_ID(3, UNIT_MIN
),
974 TALK_ID(5, UNIT_MIN
), TALK_ID(10, UNIT_MIN
)),
975 #elif defined(HAVE_DISK_STORAGE)
976 INT_SETTING(0, buffer_margin
, LANG_MP3BUFFER_MARGIN
, 0, "antiskip",
977 UNIT_SEC
, 0, 7, 1, NULL
, NULL
, audio_set_buffer_margin
),
980 #ifdef HAVE_DISK_STORAGE
981 INT_SETTING(0, disk_spindown
, LANG_SPINDOWN
, 5, "disk spindown",
982 UNIT_SEC
, 3, 254, 1, NULL
, NULL
, storage_spindown
),
983 #endif /* HAVE_DISK_STORAGE */
985 TEXT_SETTING(0, start_directory
, "start directory", "/", NULL
, NULL
),
986 CHOICE_SETTING(0, dirfilter
, LANG_FILTER
, SHOW_SUPPORTED
, "show files",
987 "all,supported,music,playlists", NULL
, 4, ID2P(LANG_ALL
),
988 ID2P(LANG_FILTER_SUPPORTED
), ID2P(LANG_FILTER_MUSIC
),
989 ID2P(LANG_PLAYLISTS
)),
991 OFFON_SETTING(0, sort_case
, LANG_SORT_CASE
, false, "sort case", NULL
),
992 CHOICE_SETTING(0, sort_dir
, LANG_SORT_DIR
, 0 ,
993 "sort dirs", "alpha,oldest,newest", NULL
, 3,
994 ID2P(LANG_SORT_ALPHA
), ID2P(LANG_SORT_DATE
),
995 ID2P(LANG_SORT_DATE_REVERSE
)),
996 CHOICE_SETTING(0, sort_file
, LANG_SORT_FILE
, 0 ,
997 "sort files", "alpha,oldest,newest,type", NULL
, 4,
998 ID2P(LANG_SORT_ALPHA
), ID2P(LANG_SORT_DATE
),
999 ID2P(LANG_SORT_DATE_REVERSE
) , ID2P(LANG_SORT_TYPE
)),
1000 CHOICE_SETTING(0, interpret_numbers
, LANG_SORT_INTERPRET_NUMBERS
, 1,
1001 "sort interpret number", "digits,numbers",NULL
, 2,
1002 ID2P(LANG_SORT_INTERPRET_AS_DIGIT
),
1003 ID2P(LANG_SORT_INTERPRET_AS_NUMBERS
)),
1004 CHOICE_SETTING(0, show_filename_ext
, LANG_SHOW_FILENAME_EXT
, 3,
1005 "show filename exts", "off,on,unknown,view_all", NULL
, 4 ,
1006 ID2P(LANG_OFF
), ID2P(LANG_ON
), ID2P(LANG_UNKNOWN_TYPES
),
1007 ID2P(LANG_EXT_ONLY_VIEW_ALL
)),
1008 OFFON_SETTING(0,browse_current
,LANG_FOLLOW
,false,"follow playlist",NULL
),
1009 OFFON_SETTING(0,playlist_viewer_icons
,LANG_SHOW_ICONS
,true,
1010 "playlist viewer icons",NULL
),
1011 OFFON_SETTING(0,playlist_viewer_indices
,LANG_SHOW_INDICES
,true,
1012 "playlist viewer indices",NULL
),
1013 CHOICE_SETTING(0, playlist_viewer_track_display
, LANG_TRACK_DISPLAY
, 0,
1014 "playlist viewer track display","track name,full path",
1015 NULL
, 2, ID2P(LANG_DISPLAY_TRACK_NAME_ONLY
),
1016 ID2P(LANG_DISPLAY_FULL_PATH
)),
1017 CHOICE_SETTING(0, recursive_dir_insert
, LANG_RECURSE_DIRECTORY
, RECURSE_ON
,
1018 "recursive directory insert", off_on_ask
, NULL
, 3 ,
1019 ID2P(LANG_OFF
), ID2P(LANG_ON
), ID2P(LANG_ASK
)),
1021 CHOICE_SETTING(0, autocreatebookmark
, LANG_BOOKMARK_SETTINGS_AUTOCREATE
,
1022 BOOKMARK_NO
, "autocreate bookmarks",
1023 "off,on,ask,recent only - on,recent only - ask", NULL
, 5,
1024 ID2P(LANG_SET_BOOL_NO
), ID2P(LANG_SET_BOOL_YES
),
1025 ID2P(LANG_ASK
), ID2P(LANG_BOOKMARK_SETTINGS_RECENT_ONLY_YES
),
1026 ID2P(LANG_BOOKMARK_SETTINGS_RECENT_ONLY_ASK
)),
1027 OFFON_SETTING(0, autoupdatebookmark
, LANG_BOOKMARK_SETTINGS_AUTOUPDATE
,
1028 false, "autoupdate bookmarks", NULL
),
1029 CHOICE_SETTING(0, autoloadbookmark
, LANG_BOOKMARK_SETTINGS_AUTOLOAD
,
1030 BOOKMARK_NO
, "autoload bookmarks", off_on_ask
, NULL
, 3,
1031 ID2P(LANG_SET_BOOL_NO
), ID2P(LANG_SET_BOOL_YES
),
1033 CHOICE_SETTING(0, usemrb
, LANG_BOOKMARK_SETTINGS_MAINTAIN_RECENT_BOOKMARKS
,
1034 BOOKMARK_NO
, "use most-recent-bookmarks",
1035 "off,on,unique only", NULL
, 3, ID2P(LANG_SET_BOOL_NO
),
1036 ID2P(LANG_SET_BOOL_YES
),
1037 ID2P(LANG_BOOKMARK_SETTINGS_UNIQUE_ONLY
)),
1038 #ifdef HAVE_LCD_BITMAP
1040 STRINGCHOICE_SETTING(0, peak_meter_clip_hold
, LANG_PM_CLIP_HOLD
, 16,
1041 "peak meter clip hold",
1042 "on,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,2min"
1043 ",3min,5min,10min,20min,45min,90min",
1044 peak_meter_set_clip_hold
, 25, LANG_PM_ETERNAL
,
1045 TALK_ID(1, UNIT_SEC
), TALK_ID(2, UNIT_SEC
),
1046 TALK_ID(3, UNIT_SEC
), TALK_ID(4, UNIT_SEC
),
1047 TALK_ID(5, UNIT_SEC
), TALK_ID(6, UNIT_SEC
),
1048 TALK_ID(7, UNIT_SEC
), TALK_ID(8, UNIT_SEC
),
1049 TALK_ID(9, UNIT_SEC
), TALK_ID(10, UNIT_SEC
),
1050 TALK_ID(15, UNIT_SEC
), TALK_ID(20, UNIT_SEC
),
1051 TALK_ID(25, UNIT_SEC
), TALK_ID(30, UNIT_SEC
),
1052 TALK_ID(45, UNIT_SEC
), TALK_ID(60, UNIT_SEC
),
1053 TALK_ID(90, UNIT_SEC
), TALK_ID(2, UNIT_MIN
),
1054 TALK_ID(3, UNIT_MIN
), TALK_ID(5, UNIT_MIN
),
1055 TALK_ID(10, UNIT_MIN
), TALK_ID(20, UNIT_MIN
),
1056 TALK_ID(45, UNIT_MIN
), TALK_ID(90, UNIT_MIN
)),
1057 STRINGCHOICE_SETTING(0, peak_meter_hold
, LANG_PM_PEAK_HOLD
, 3,
1059 "off,200ms,300ms,500ms,1,2,3,4,5,6,7,8,9,10,15,20,30,1min",
1060 NULL
, 18, LANG_OFF
, TALK_ID(200, UNIT_MS
),
1061 TALK_ID(300, UNIT_MS
), TALK_ID(500, UNIT_MS
),
1062 TALK_ID(1, UNIT_SEC
), TALK_ID(2, UNIT_SEC
),
1063 TALK_ID(3, UNIT_SEC
), TALK_ID(4, UNIT_SEC
),
1064 TALK_ID(5, UNIT_SEC
), TALK_ID(6, UNIT_SEC
),
1065 TALK_ID(7, UNIT_SEC
), TALK_ID(8, UNIT_SEC
),
1066 TALK_ID(9, UNIT_SEC
), TALK_ID(10, UNIT_SEC
),
1067 TALK_ID(15, UNIT_SEC
), TALK_ID(20, UNIT_SEC
),
1068 TALK_ID(30, UNIT_SEC
), TALK_ID(60, UNIT_SEC
)),
1069 INT_SETTING(0, peak_meter_release
, LANG_PM_RELEASE
, 8, "peak meter release",
1070 UNIT_PM_TICK
, 1, 0x7e, 1, NULL
, NULL
,NULL
),
1071 OFFON_SETTING(0,peak_meter_dbfs
,LANG_PM_DBFS
,true,"peak meter dbfs",NULL
),
1072 {F_T_INT
, &global_settings
.peak_meter_min
, LANG_PM_MIN
,INT(60),
1073 "peak meter min", NULL
, UNUSED
},
1074 {F_T_INT
, &global_settings
.peak_meter_max
, LANG_PM_MAX
,INT(0),
1075 "peak meter max", NULL
, UNUSED
},
1076 #ifdef HAVE_RECORDING
1077 OFFON_SETTING(0, peak_meter_clipcounter
, LANG_PM_CLIPCOUNTER
, false,
1078 "peak meter clipcounter", NULL
),
1079 #endif /* HAVE_RECORDING */
1080 #endif /* HAVE_LCD_BITMAP */
1081 #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
1082 SOUND_SETTING(F_SOUNDSETTING
, mdb_strength
, LANG_MDB_STRENGTH
,
1083 "mdb strength", SOUND_MDB_STRENGTH
),
1084 SOUND_SETTING(F_SOUNDSETTING
, mdb_harmonics
, LANG_MDB_HARMONICS
,
1085 "mdb harmonics", SOUND_MDB_HARMONICS
),
1086 SOUND_SETTING(F_SOUNDSETTING
, mdb_center
, LANG_MDB_CENTER
,
1087 "mdb center", SOUND_MDB_CENTER
),
1088 SOUND_SETTING(F_SOUNDSETTING
, mdb_shape
, LANG_MDB_SHAPE
,
1089 "mdb shape", SOUND_MDB_SHAPE
),
1090 OFFON_SETTING(F_SOUNDSETTING
, mdb_enable
, LANG_MDB_ENABLE
,
1091 false, "mdb enable", set_mdb_enable
),
1093 #if CONFIG_CODEC == MAS3507D
1094 OFFON_SETTING(F_SOUNDSETTING
, line_in
,LANG_LINE_IN
,false,"line in",NULL
),
1097 OFFON_SETTING(F_TEMPVAR
, talk_menu
, LANG_VOICE_MENU
, true, "talk menu", NULL
),
1098 CHOICE_SETTING(0, talk_dir
, LANG_VOICE_DIR
, 0,
1099 "talk dir", off_number_spell
, NULL
, 3,
1100 ID2P(LANG_OFF
), ID2P(LANG_VOICE_NUMBER
),
1101 ID2P(LANG_VOICE_SPELL
)),
1102 OFFON_SETTING(F_TEMPVAR
, talk_dir_clip
, LANG_VOICE_DIR_TALK
, false,
1103 "talk dir clip", NULL
),
1104 CHOICE_SETTING(0, talk_file
, LANG_VOICE_FILE
, 0,
1105 "talk file", off_number_spell
, NULL
, 3,
1106 ID2P(LANG_OFF
), ID2P(LANG_VOICE_NUMBER
),
1107 ID2P(LANG_VOICE_SPELL
)),
1108 OFFON_SETTING(F_TEMPVAR
, talk_file_clip
, LANG_VOICE_FILE_TALK
, false,
1109 "talk file clip", NULL
),
1110 OFFON_SETTING(F_TEMPVAR
, talk_filetype
, LANG_VOICE_FILETYPE
, false,
1111 "talk filetype", NULL
),
1112 OFFON_SETTING(F_TEMPVAR
, talk_battery_level
, LANG_TALK_BATTERY_LEVEL
, false,
1113 "Announce Battery Level", NULL
),
1115 #ifdef HAVE_RECORDING
1117 STRINGCHOICE_SETTING(F_RECSETTING
, rec_timesplit
, LANG_SPLIT_TIME
, 0,
1119 "off,00:05,00:10,00:15,00:30,01:00,01:14,01:20,02:00,"
1120 "04:00,06:00,08:00,10:00,12:00,18:00,24:00",
1122 TALK_ID(5, UNIT_MIN
), TALK_ID(10, UNIT_MIN
),
1123 TALK_ID(15, UNIT_MIN
), TALK_ID(30, UNIT_MIN
),
1124 TALK_ID(60, UNIT_MIN
), TALK_ID(74, UNIT_MIN
),
1125 TALK_ID(80, UNIT_MIN
), TALK_ID(2, UNIT_HOUR
),
1126 TALK_ID(4, UNIT_HOUR
), TALK_ID(6, UNIT_HOUR
),
1127 TALK_ID(8, UNIT_HOUR
), TALK_ID(10, UNIT_HOUR
),
1128 TALK_ID(12, UNIT_HOUR
), TALK_ID(18, UNIT_HOUR
),
1129 TALK_ID(20, UNIT_HOUR
), TALK_ID(24, UNIT_HOUR
)),
1130 STRINGCHOICE_SETTING(F_RECSETTING
, rec_sizesplit
, LANG_SPLIT_SIZE
, 0,
1132 "off,5MB,10MB,15MB,32MB,64MB,75MB,100MB,128MB,"
1133 "256MB,512MB,650MB,700MB,1GB,1.5GB,1.75GB",
1135 TALK_ID(5, UNIT_MB
), TALK_ID(10, UNIT_MB
),
1136 TALK_ID(15, UNIT_MB
), TALK_ID(32, UNIT_MB
),
1137 TALK_ID(64, UNIT_MB
), TALK_ID(75, UNIT_MB
),
1138 TALK_ID(100, UNIT_MB
), TALK_ID(128, UNIT_MB
),
1139 TALK_ID(256, UNIT_MB
), TALK_ID(512, UNIT_MB
),
1140 TALK_ID(650, UNIT_MB
), TALK_ID(700, UNIT_MB
),
1141 TALK_ID(1024, UNIT_MB
), TALK_ID(1536, UNIT_MB
),
1142 TALK_ID(1792, UNIT_MB
)),
1143 {F_T_INT
|F_RECSETTING
, &global_settings
.rec_channels
, LANG_CHANNELS
, INT(0),
1144 "rec channels","stereo,mono",UNUSED
},
1145 #if CONFIG_CODEC == SWCODEC
1146 {F_T_INT
|F_RECSETTING
, &global_settings
.rec_mono_mode
,
1147 LANG_RECORDING_MONO_MODE
, INT(0), "rec mono mode","L+R,L,R",UNUSED
},
1149 CHOICE_SETTING(F_RECSETTING
, rec_split_type
, LANG_SPLIT_TYPE
, 0,
1150 "rec split type", "Split,Stop,Shutdown", NULL
, 3,
1151 ID2P(LANG_START_NEW_FILE
), ID2P(LANG_STOP_RECORDING
),ID2P(LANG_STOP_RECORDING_AND_SHUTDOWN
)),
1152 CHOICE_SETTING(F_RECSETTING
, rec_split_method
, LANG_SPLIT_MEASURE
, 0,
1153 "rec split method", "Time,Filesize", NULL
, 2,
1154 ID2P(LANG_TIME
), ID2P(LANG_FILESIZE
)),
1155 {F_T_INT
|F_RECSETTING
, &global_settings
.rec_source
, LANG_RECORDING_SOURCE
,
1156 INT(0), "rec source",
1157 &HAVE_MIC_REC_(",mic")
1158 HAVE_LINE_REC_(",line")
1159 HAVE_SPDIF_REC_(",spdif")
1160 HAVE_FMRADIO_REC_(",fmradio")[1],
1162 INT_SETTING(F_RECSETTING
, rec_prerecord_time
, LANG_RECORD_PRERECORD_TIME
, 0,
1163 "prerecording time", UNIT_SEC
, 0, 30, 1,
1164 formatter_unit_0_is_off
, getlang_unit_0_is_off
, NULL
),
1166 TEXT_SETTING(F_RECSETTING
, rec_directory
, "rec path",
1167 REC_BASE_DIR
, NULL
, NULL
),
1168 #ifdef HAVE_BACKLIGHT
1169 CHOICE_SETTING(F_RECSETTING
, cliplight
, LANG_CLIP_LIGHT
, 0,
1170 "cliplight", "off,main,both,remote", NULL
,
1171 #ifdef HAVE_REMOTE_LCD
1172 4, ID2P(LANG_OFF
), ID2P(LANG_MAIN_UNIT
),
1173 ID2P(LANG_REMOTE_MAIN
), ID2P(LANG_REMOTE_UNIT
)
1175 2, ID2P(LANG_OFF
), ID2P(LANG_ON
)
1179 #ifdef DEFAULT_REC_MIC_GAIN
1180 {F_T_INT
|F_RECSETTING
,&global_settings
.rec_mic_gain
,
1181 LANG_GAIN
,INT(DEFAULT_REC_MIC_GAIN
),
1182 "rec mic gain",NULL
,UNUSED
},
1183 #endif /* DEFAULT_REC_MIC_GAIN */
1184 #ifdef DEFAULT_REC_LEFT_GAIN
1185 {F_T_INT
|F_RECSETTING
,&global_settings
.rec_left_gain
,
1186 LANG_GAIN_LEFT
,INT(DEFAULT_REC_LEFT_GAIN
),
1187 "rec left gain",NULL
,UNUSED
},
1188 #endif /* DEFAULT_REC_LEFT_GAIN */
1189 #ifdef DEFAULT_REC_RIGHT_GAIN
1190 {F_T_INT
|F_RECSETTING
,&global_settings
.rec_right_gain
,LANG_GAIN_RIGHT
,
1191 INT(DEFAULT_REC_RIGHT_GAIN
),
1192 "rec right gain",NULL
,UNUSED
},
1193 #endif /* DEFAULT_REC_RIGHT_GAIN */
1194 #if CONFIG_CODEC == MAS3587F
1195 {F_T_INT
|F_RECSETTING
,&global_settings
.rec_frequency
,
1196 LANG_RECORDING_FREQUENCY
, INT(0),
1197 "rec frequency","44,48,32,22,24,16", UNUSED
},
1198 INT_SETTING(F_RECSETTING
, rec_quality
, LANG_RECORDING_QUALITY
, 5,
1199 "rec quality", UNIT_INT
, 0, 7, 1, NULL
, NULL
, NULL
),
1200 OFFON_SETTING(F_RECSETTING
, rec_editable
, LANG_RECORDING_EDITABLE
, false,
1201 "editable recordings", NULL
),
1202 #endif /* CONFIG_CODEC == MAS3587F */
1203 #if CONFIG_CODEC == SWCODEC
1204 {F_T_INT
|F_RECSETTING
,&global_settings
.rec_frequency
,
1205 LANG_RECORDING_FREQUENCY
,INT(REC_FREQ_DEFAULT
),
1206 "rec frequency",REC_FREQ_CFG_VAL_LIST
,UNUSED
},
1207 {F_T_INT
|F_RECSETTING
,&global_settings
.rec_format
,
1208 LANG_RECORDING_FORMAT
,INT(REC_FORMAT_DEFAULT
),
1209 "rec format",REC_FORMAT_CFG_VAL_LIST
,UNUSED
},
1210 /** Encoder settings start - keep these together **/
1212 /* (no settings yet) */
1214 {F_T_INT
|F_RECSETTING
, &global_settings
.mp3_enc_config
.bitrate
,-1,
1215 INT(MP3_ENC_BITRATE_CFG_DEFAULT
),
1216 "mp3_enc bitrate",MP3_ENC_BITRATE_CFG_VALUE_LIST
,UNUSED
},
1218 /* (no settings yet) */
1220 /* (no settings yet) */
1221 /** Encoder settings end **/
1222 #endif /* CONFIG_CODEC == SWCODEC */
1223 /* values for the trigger */
1224 INT_SETTING(F_RECSETTING
, rec_start_thres_db
, LANG_RECORD_START_THRESHOLD
, -35,
1225 "trigger start threshold dB", UNIT_DB
, VOLUME_MIN
/10, 0, 1, NULL
, NULL
, NULL
),
1226 INT_SETTING(F_RECSETTING
, rec_start_thres_linear
, LANG_RECORD_START_THRESHOLD
, 5,
1227 "trigger start threshold linear", UNIT_PERCENT
, 0, 100, 1, NULL
, NULL
, NULL
),
1228 INT_SETTING(F_RECSETTING
, rec_stop_thres_db
, LANG_RECORD_STOP_THRESHOLD
, -45,
1229 "trigger stop threshold dB", UNIT_DB
, VOLUME_MIN
/10, 0, 1, NULL
, NULL
, NULL
),
1230 INT_SETTING(F_RECSETTING
, rec_stop_thres_linear
, LANG_RECORD_STOP_THRESHOLD
, 10,
1231 "trigger stop threshold linear", UNIT_PERCENT
, 0, 100, 1, NULL
, NULL
, NULL
),
1232 TABLE_SETTING(F_RECSETTING
, rec_start_duration
, LANG_MIN_DURATION
, 0,
1233 "trigger start duration",
1234 "0s,1s,2s,5s,10s,15s,20s,25s,30s,1min,2min,5min,10min",
1235 UNIT_SEC
, NULL
, NULL
, NULL
, 13,
1236 0,1,2,5,10,15,20,25,30,60,120,300,600),
1237 TABLE_SETTING(F_RECSETTING
, rec_stop_postrec
, LANG_MIN_DURATION
, 0,
1238 "trigger stop duration",
1239 "0s,1s,2s,5s,10s,15s,20s,25s,30s,1min,2min,5min,10min",
1240 UNIT_SEC
, NULL
, NULL
, NULL
, 13,
1241 0,1,2,5,10,15,20,25,30,60,120,300,600),
1242 TABLE_SETTING(F_RECSETTING
, rec_stop_gap
, LANG_RECORD_STOP_GAP
, 1,
1244 "0s,1s,2s,5s,10s,15s,20s,25s,30s,1min,2min,5min,10min",
1245 UNIT_SEC
, NULL
, NULL
, NULL
, 13,
1246 0,1,2,5,10,15,20,25,30,60,120,300,600),
1247 CHOICE_SETTING(F_RECSETTING
, rec_trigger_mode
, LANG_RECORD_TRIGGER
, TRIG_MODE_OFF
,
1248 "trigger mode","off,once,repeat", NULL
,3,
1249 ID2P(LANG_OFF
), ID2P(LANG_RECORD_TRIG_NOREARM
), ID2P(LANG_REPEAT
)),
1250 CHOICE_SETTING(F_RECSETTING
, rec_trigger_type
, LANG_RECORD_TRIGGER_TYPE
, TRIG_TYPE_STOP
,
1251 "trigger type","stop,pause,nf stp", NULL
,3,
1252 ID2P(LANG_RECORD_TRIGGER_STOP
), ID2P(LANG_PAUSE
), ID2P(LANG_RECORD_TRIGGER_NEWFILESTP
)),
1253 #endif /* HAVE_RECORDING */
1255 #ifdef HAVE_HISTOGRAM
1256 /* TO DO: additional restictions of following REP items? */
1257 TABLE_SETTING(F_RECSETTING
, histogram_interval
, LANG_HISTOGRAM_INTERVAL
, 0,
1258 "histogram interval","0s,1s,2s,4s",
1259 UNIT_SEC
, NULL
, NULL
, NULL
, 4, 0,1,2,4),
1260 #endif /* HAVE_HISTOGRAM */
1262 #ifdef HAVE_SPDIF_POWER
1263 OFFON_SETTING(F_SOUNDSETTING
, spdif_enable
, LANG_SPDIF_ENABLE
, false,
1264 "spdif enable", spdif_power_enable
),
1266 CHOICE_SETTING(0, next_folder
, LANG_NEXT_FOLDER
, FOLDER_ADVANCE_OFF
,
1267 "folder navigation", "off,on,random",NULL
,3,
1268 ID2P(LANG_SET_BOOL_NO
), ID2P(LANG_SET_BOOL_YES
),
1271 #ifdef HAVE_TAGCACHE
1272 #if CONFIG_CODEC == SWCODEC
1273 BOOL_SETTING(0, autoresume_enable
, LANG_AUTORESUME
, false,
1274 "autoresume enable", off_on
,
1275 LANG_SET_BOOL_YES
, LANG_SET_BOOL_NO
, NULL
),
1276 CHOICE_SETTING(0, autoresume_automatic
, LANG_AUTORESUME_AUTOMATIC
,
1277 AUTORESUME_NEXTTRACK_NEVER
,
1278 "autoresume next track", "never,all,custom",
1280 ID2P(LANG_SET_BOOL_NO
),
1282 ID2P(LANG_AUTORESUME_CUSTOM
)),
1283 TEXT_SETTING(0, autoresume_paths
, "autoresume next track paths",
1284 "/podcast:/podcasts", NULL
, NULL
),
1287 OFFON_SETTING(0, runtimedb
, LANG_RUNTIMEDB_ACTIVE
, false,
1288 "gather runtime data", NULL
),
1291 #if CONFIG_CODEC == SWCODEC
1293 CHOICE_SETTING(F_SOUNDSETTING
, replaygain_type
, LANG_REPLAYGAIN_MODE
,
1294 REPLAYGAIN_SHUFFLE
, "replaygain type",
1295 "track,album,track shuffle,off", NULL
, 4, ID2P(LANG_TRACK_GAIN
),
1296 ID2P(LANG_ALBUM_GAIN
), ID2P(LANG_SHUFFLE_GAIN
), ID2P(LANG_OFF
)),
1297 OFFON_SETTING(F_SOUNDSETTING
, replaygain_noclip
, LANG_REPLAYGAIN_NOCLIP
,
1298 false, "replaygain noclip", NULL
),
1299 INT_SETTING_NOWRAP(F_SOUNDSETTING
, replaygain_preamp
,
1300 LANG_REPLAYGAIN_PREAMP
, 0, "replaygain preamp",
1301 UNIT_DB
, -120, 120, 5, db_format
, get_dec_talkid
, NULL
),
1303 CHOICE_SETTING(0, beep
, LANG_BEEP
, 0, "beep", "off,weak,moderate,strong",
1304 NULL
, 4, ID2P(LANG_OFF
), ID2P(LANG_WEAK
),
1305 ID2P(LANG_MODERATE
), ID2P(LANG_STRONG
)),
1307 #ifdef HAVE_CROSSFADE
1309 CHOICE_SETTING(F_SOUNDSETTING
, crossfade
, LANG_CROSSFADE_ENABLE
, 0,
1311 "off,auto track change,man track skip,shuffle,shuffle or man track skip,always",
1312 NULL
, 6, ID2P(LANG_OFF
), ID2P(LANG_AUTOTRACKSKIP
),
1313 ID2P(LANG_MANTRACKSKIP
), ID2P(LANG_SHUFFLE
),
1314 ID2P(LANG_SHUFFLE_TRACKSKIP
), ID2P(LANG_ALWAYS
)),
1315 INT_SETTING(F_SOUNDSETTING
, crossfade_fade_in_delay
,
1316 LANG_CROSSFADE_FADE_IN_DELAY
, 0,
1317 "crossfade fade in delay", UNIT_SEC
, 0, 7, 1, NULL
, NULL
, NULL
),
1318 INT_SETTING(F_SOUNDSETTING
, crossfade_fade_out_delay
,
1319 LANG_CROSSFADE_FADE_OUT_DELAY
, 0,
1320 "crossfade fade out delay", UNIT_SEC
, 0, 7, 1, NULL
, NULL
,NULL
),
1321 INT_SETTING(F_SOUNDSETTING
, crossfade_fade_in_duration
,
1322 LANG_CROSSFADE_FADE_IN_DURATION
, 2,
1323 "crossfade fade in duration", UNIT_SEC
, 0, 15, 1, NULL
, NULL
,
1325 INT_SETTING(F_SOUNDSETTING
, crossfade_fade_out_duration
,
1326 LANG_CROSSFADE_FADE_OUT_DURATION
, 2,
1327 "crossfade fade out duration", UNIT_SEC
, 0, 15, 1, NULL
, NULL
,
1329 CHOICE_SETTING(F_SOUNDSETTING
, crossfade_fade_out_mixmode
,
1330 LANG_CROSSFADE_FADE_OUT_MODE
, 0,
1331 "crossfade fade out mode", "crossfade,mix", NULL
, 2,
1332 ID2P(LANG_CROSSFADE
), ID2P(LANG_MIX
)),
1336 OFFON_SETTING(F_SOUNDSETTING
, crossfeed
, LANG_CROSSFEED
, false,
1337 "crossfeed", dsp_set_crossfeed
),
1338 INT_SETTING_NOWRAP(F_SOUNDSETTING
, crossfeed_direct_gain
,
1339 LANG_CROSSFEED_DIRECT_GAIN
, -15,
1340 "crossfeed direct gain", UNIT_DB
, -60, 0, 5,
1341 db_format
, get_dec_talkid
,dsp_set_crossfeed_direct_gain
),
1342 INT_SETTING_NOWRAP(F_SOUNDSETTING
, crossfeed_cross_gain
,
1343 LANG_CROSSFEED_CROSS_GAIN
, -60,
1344 "crossfeed cross gain", UNIT_DB
, -120, -30, 5,
1345 db_format
, get_dec_talkid
, crossfeed_cross_set
),
1346 INT_SETTING_NOWRAP(F_SOUNDSETTING
, crossfeed_hf_attenuation
,
1347 LANG_CROSSFEED_HF_ATTENUATION
, -160,
1348 "crossfeed hf attenuation", UNIT_DB
, -240, -60, 5,
1349 db_format
, get_dec_talkid
, crossfeed_cross_set
),
1350 INT_SETTING_NOWRAP(F_SOUNDSETTING
, crossfeed_hf_cutoff
,
1351 LANG_CROSSFEED_HF_CUTOFF
, 700,
1352 "crossfeed hf cutoff", UNIT_HERTZ
, 500, 2000, 100,
1353 NULL
, NULL
, crossfeed_cross_set
),
1356 OFFON_SETTING(F_EQSETTING
, eq_enabled
, LANG_EQUALIZER_ENABLED
, false,
1357 "eq enabled", NULL
),
1358 INT_SETTING_NOWRAP(F_EQSETTING
, eq_precut
, LANG_EQUALIZER_PRECUT
, 0,
1359 "eq precut", UNIT_DB
, 0, 240, 5, eq_precut_format
,
1360 get_precut_talkid
, dsp_set_eq_precut
),
1362 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band0_cutoff
, LANG_EQUALIZER_BAND_CUTOFF
,
1363 60, "eq band 0 cutoff", UNIT_HERTZ
, EQ_CUTOFF_MIN
,
1364 EQ_CUTOFF_MAX
, EQ_CUTOFF_STEP
, NULL
, NULL
, NULL
),
1365 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band1_cutoff
, LANG_EQUALIZER_BAND_CENTER
,
1366 200, "eq band 1 cutoff", UNIT_HERTZ
, EQ_CUTOFF_MIN
,
1367 EQ_CUTOFF_MAX
, EQ_CUTOFF_STEP
, NULL
, NULL
, NULL
),
1368 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band2_cutoff
, LANG_EQUALIZER_BAND_CENTER
,
1369 800, "eq band 2 cutoff", UNIT_HERTZ
, EQ_CUTOFF_MIN
,
1370 EQ_CUTOFF_MAX
, EQ_CUTOFF_STEP
, NULL
, NULL
, NULL
),
1371 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band3_cutoff
, LANG_EQUALIZER_BAND_CENTER
,
1372 4000, "eq band 3 cutoff", UNIT_HERTZ
, EQ_CUTOFF_MIN
,
1373 EQ_CUTOFF_MAX
, EQ_CUTOFF_STEP
, NULL
, NULL
, NULL
),
1374 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band4_cutoff
, LANG_EQUALIZER_BAND_CUTOFF
,
1375 12000, "eq band 4 cutoff", UNIT_HERTZ
, EQ_CUTOFF_MIN
,
1376 EQ_CUTOFF_MAX
, EQ_CUTOFF_STEP
, NULL
, NULL
, NULL
),
1377 /* 0..64 (or 0.0 to 6.4) */
1378 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band0_q
, LANG_EQUALIZER_BAND_Q
, 7,
1379 "eq band 0 q", UNIT_INT
, EQ_Q_MIN
, EQ_Q_MAX
, EQ_Q_STEP
,
1380 eq_q_format
, get_dec_talkid
, NULL
),
1381 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band1_q
, LANG_EQUALIZER_BAND_Q
, 10,
1382 "eq band 1 q", UNIT_INT
, EQ_Q_MIN
, EQ_Q_MAX
, EQ_Q_STEP
,
1383 eq_q_format
, get_dec_talkid
, NULL
),
1384 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band2_q
, LANG_EQUALIZER_BAND_Q
, 10,
1385 "eq band 2 q", UNIT_INT
, EQ_Q_MIN
, EQ_Q_MAX
, EQ_Q_STEP
,
1386 eq_q_format
, get_dec_talkid
, NULL
),
1387 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band3_q
, LANG_EQUALIZER_BAND_Q
, 10,
1388 "eq band 3 q", UNIT_INT
, EQ_Q_MIN
, EQ_Q_MAX
, EQ_Q_STEP
,
1389 eq_q_format
, get_dec_talkid
, NULL
),
1390 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band4_q
, LANG_EQUALIZER_BAND_Q
, 7,
1391 "eq band 4 q", UNIT_INT
, EQ_Q_MIN
, EQ_Q_MAX
, EQ_Q_STEP
,
1392 eq_q_format
, get_dec_talkid
, NULL
),
1393 /* -240..240 (or -24db to +24db) */
1394 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band0_gain
, LANG_GAIN
, 0,
1395 "eq band 0 gain", UNIT_DB
, EQ_GAIN_MIN
, EQ_GAIN_MAX
,
1396 EQ_GAIN_STEP
, db_format
, get_dec_talkid
, NULL
),
1397 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band1_gain
, LANG_GAIN
, 0,
1398 "eq band 1 gain", UNIT_DB
, EQ_GAIN_MIN
, EQ_GAIN_MAX
,
1399 EQ_GAIN_STEP
, db_format
, get_dec_talkid
, NULL
),
1400 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band2_gain
, LANG_GAIN
, 0,
1401 "eq band 2 gain", UNIT_DB
, EQ_GAIN_MIN
, EQ_GAIN_MAX
,
1402 EQ_GAIN_STEP
, db_format
, get_dec_talkid
, NULL
),
1403 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band3_gain
, LANG_GAIN
, 0,
1404 "eq band 3 gain", UNIT_DB
, EQ_GAIN_MIN
, EQ_GAIN_MAX
,
1405 EQ_GAIN_STEP
, db_format
, get_dec_talkid
, NULL
),
1406 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band4_gain
, LANG_GAIN
, 0,
1407 "eq band 4 gain", UNIT_DB
, EQ_GAIN_MIN
, EQ_GAIN_MAX
,
1408 EQ_GAIN_STEP
, db_format
, get_dec_talkid
, NULL
),
1411 OFFON_SETTING(F_SOUNDSETTING
, dithering_enabled
, LANG_DITHERING
, false,
1412 "dithering enabled", dsp_dither_enable
),
1414 #ifdef HAVE_PITCHSCREEN
1416 OFFON_SETTING(F_SOUNDSETTING
, timestretch_enabled
, LANG_TIMESTRETCH
, false,
1417 "timestretch enabled", dsp_timestretch_enable
),
1421 INT_SETTING_NOWRAP(F_SOUNDSETTING
, compressor_threshold
,
1422 LANG_COMPRESSOR_THRESHOLD
, 0,
1423 "compressor threshold", UNIT_DB
, 0, -24,
1424 -3, formatter_unit_0_is_off
, getlang_unit_0_is_off
, compressor_set
),
1425 CHOICE_SETTING(F_SOUNDSETTING
|F_NO_WRAP
, compressor_makeup_gain
,
1426 LANG_COMPRESSOR_GAIN
, 1, "compressor makeup gain",
1427 "off,auto", compressor_set
, 2,
1428 ID2P(LANG_OFF
), ID2P(LANG_AUTO
)),
1429 CHOICE_SETTING(F_SOUNDSETTING
|F_NO_WRAP
, compressor_ratio
,
1430 LANG_COMPRESSOR_RATIO
, 1, "compressor ratio",
1431 "2:1,4:1,6:1,10:1,limit", compressor_set
, 5,
1432 ID2P(LANG_COMPRESSOR_RATIO_2
), ID2P(LANG_COMPRESSOR_RATIO_4
),
1433 ID2P(LANG_COMPRESSOR_RATIO_6
), ID2P(LANG_COMPRESSOR_RATIO_10
),
1434 ID2P(LANG_COMPRESSOR_RATIO_LIMIT
)),
1435 CHOICE_SETTING(F_SOUNDSETTING
|F_NO_WRAP
, compressor_knee
,
1436 LANG_COMPRESSOR_KNEE
, 1, "compressor knee",
1437 "hard knee,soft knee", compressor_set
, 2,
1438 ID2P(LANG_COMPRESSOR_HARD_KNEE
), ID2P(LANG_COMPRESSOR_SOFT_KNEE
)),
1439 INT_SETTING_NOWRAP(F_SOUNDSETTING
, compressor_release_time
,
1440 LANG_COMPRESSOR_RELEASE
, 500,
1441 "compressor release time", UNIT_MS
, 100, 1000,
1442 100, NULL
, NULL
, compressor_set
),
1444 #ifdef AUDIOHW_HAVE_BASS_CUTOFF
1445 SOUND_SETTING(F_NO_WRAP
, bass_cutoff
, LANG_BASS_CUTOFF
,
1446 "bass cutoff", SOUND_BASS_CUTOFF
),
1448 #ifdef AUDIOHW_HAVE_TREBLE_CUTOFF
1449 SOUND_SETTING(F_NO_WRAP
, treble_cutoff
, LANG_TREBLE_CUTOFF
,
1450 "treble cutoff", SOUND_TREBLE_CUTOFF
),
1452 #ifdef HAVE_DIRCACHE
1453 /*enable dircache for all targets > 2MB of RAM by default*/
1454 OFFON_SETTING(F_BANFROMQS
,dircache
,LANG_DIRCACHE_ENABLE
,true,"dircache",NULL
),
1455 SYSTEM_SETTING(NVRAM(4),dircache_size
,0),
1458 #ifdef HAVE_TAGCACHE
1459 #ifdef HAVE_TC_RAMCACHE
1460 OFFON_SETTING(F_BANFROMQS
,tagcache_ram
,LANG_TAGCACHE_RAM
,false,"tagcache_ram",NULL
),
1462 OFFON_SETTING(F_BANFROMQS
, tagcache_autoupdate
, LANG_TAGCACHE_AUTOUPDATE
, false,
1463 "tagcache_autoupdate", NULL
),
1465 CHOICE_SETTING(0, default_codepage
, LANG_DEFAULT_CODEPAGE
, 0,
1467 #ifdef HAVE_LCD_BITMAP
1468 /* The order must match with that in unicode.c */
1469 "iso8859-1,iso8859-7,iso8859-8,cp1251,iso8859-11,cp1256,"
1470 "iso8859-9,iso8859-2,cp1250,sjis,gb2312,ksx1001,big5,utf-8",
1472 ID2P(LANG_CODEPAGE_LATIN1
), ID2P(LANG_CODEPAGE_GREEK
),
1473 ID2P(LANG_CODEPAGE_HEBREW
), ID2P(LANG_CODEPAGE_CYRILLIC
),
1474 ID2P(LANG_CODEPAGE_THAI
), ID2P(LANG_CODEPAGE_ARABIC
),
1475 ID2P(LANG_CODEPAGE_TURKISH
),
1476 ID2P(LANG_CODEPAGE_LATIN_EXTENDED
),
1477 ID2P(LANG_CODEPAGE_CENTRAL_EUROPEAN
),
1478 ID2P(LANG_CODEPAGE_JAPANESE
),
1479 ID2P(LANG_CODEPAGE_SIMPLIFIED
), ID2P(LANG_CODEPAGE_KOREAN
),
1480 ID2P(LANG_CODEPAGE_TRADITIONAL
), ID2P(LANG_CODEPAGE_UTF8
)),
1481 #else /* !HAVE_LCD_BITMAP */
1482 /* The order must match with that in unicode.c */
1483 "iso8859-1,iso8859-7,cp1251,iso8859-9,iso8859-2,cp1250,utf-8",
1485 ID2P(LANG_CODEPAGE_LATIN1
), ID2P(LANG_CODEPAGE_GREEK
),
1486 ID2P(LANG_CODEPAGE_CYRILLIC
), ID2P(LANG_CODEPAGE_TURKISH
),
1487 ID2P(LANG_CODEPAGE_LATIN_EXTENDED
),
1488 ID2P(LANG_CODEPAGE_CENTRAL_EUROPEAN
),
1489 ID2P(LANG_CODEPAGE_UTF8
)),
1491 OFFON_SETTING(0, warnon_erase_dynplaylist
, LANG_WARN_ERASEDYNPLAYLIST_MENU
,
1492 true, "warn when erasing dynamic playlist",NULL
),
1494 #ifdef HAVE_BACKLIGHT
1495 #ifdef HAS_BUTTON_HOLD
1496 CHOICE_SETTING(0, backlight_on_button_hold
, LANG_BACKLIGHT_ON_BUTTON_HOLD
,
1497 1, "backlight on button hold", "normal,off,on",
1498 backlight_set_on_button_hold
, 3,
1499 ID2P(LANG_NORMAL
), ID2P(LANG_OFF
), ID2P(LANG_ON
)),
1502 #ifdef HAVE_LCD_SLEEP_SETTING
1503 STRINGCHOICE_SETTING(0, lcd_sleep_after_backlight_off
,
1504 LANG_LCD_SLEEP_AFTER_BACKLIGHT_OFF
, 3,
1505 "lcd sleep after backlight off",
1506 "always,never,5,10,15,20,30,45,60,90",
1507 lcd_set_sleep_after_backlight_off
, 10,
1508 LANG_ALWAYS
, LANG_NEVER
, TALK_ID(5, UNIT_SEC
),
1509 TALK_ID(10, UNIT_SEC
), TALK_ID(15, UNIT_SEC
),
1510 TALK_ID(20, UNIT_SEC
), TALK_ID(30, UNIT_SEC
),
1511 TALK_ID(45, UNIT_SEC
),TALK_ID(60, UNIT_SEC
),
1512 TALK_ID(90, UNIT_SEC
)),
1513 #endif /* HAVE_LCD_SLEEP_SETTING */
1514 #endif /* HAVE_BACKLIGHT */
1516 OFFON_SETTING(0, hold_lr_for_scroll_in_list
, -1, true,
1517 "hold_lr_for_scroll_in_list",NULL
),
1518 #ifdef HAVE_LCD_BITMAP
1519 CHOICE_SETTING(0, show_path_in_browser
, LANG_SHOW_PATH
, SHOW_PATH_CURRENT
,
1520 "show path in browser", "off,current directory,full path",
1521 NULL
, 3, ID2P(LANG_OFF
), ID2P(LANG_SHOW_PATH_CURRENT
),
1522 ID2P(LANG_DISPLAY_FULL_PATH
)),
1526 {F_T_INT
,&global_settings
.rec_agc_preset_mic
,LANG_RECORDING_AGC_PRESET
,
1527 INT(1),"agc mic preset",NULL
,UNUSED
},
1528 {F_T_INT
,&global_settings
.rec_agc_preset_line
,LANG_RECORDING_AGC_PRESET
,
1529 INT(1),"agc line preset",NULL
,UNUSED
},
1530 {F_T_INT
,&global_settings
.rec_agc_maxgain_mic
,-1,INT(104),
1531 "agc maximum mic gain",NULL
,UNUSED
},
1532 {F_T_INT
,&global_settings
.rec_agc_maxgain_line
,-1,INT(96),
1533 "agc maximum line gain",NULL
,UNUSED
},
1534 {F_T_INT
,&global_settings
.rec_agc_cliptime
,LANG_RECORDING_AGC_CLIPTIME
,
1535 INT(1),"agc cliptime","0.2s,0.4s,0.6s,0.8,1s",UNUSED
},
1538 #ifdef HAVE_REMOTE_LCD
1539 #ifdef HAS_REMOTE_BUTTON_HOLD
1540 CHOICE_SETTING(0, remote_backlight_on_button_hold
,
1541 LANG_BACKLIGHT_ON_BUTTON_HOLD
, 0,
1542 "remote backlight on button hold",
1543 "normal,off,on", remote_backlight_set_on_button_hold
, 3,
1544 ID2P(LANG_NORMAL
), ID2P(LANG_OFF
), ID2P(LANG_ON
)),
1547 #ifdef HAVE_HEADPHONE_DETECTION
1548 CHOICE_SETTING(0, unplug_mode
, LANG_HEADPHONE_UNPLUG
, 0,
1549 "pause on headphone unplug", "off,pause,pause and resume",
1550 NULL
, 3, ID2P(LANG_OFF
), ID2P(LANG_PAUSE
),
1551 ID2P(LANG_HEADPHONE_UNPLUG_RESUME
)),
1552 OFFON_SETTING(0, unplug_autoresume
,
1553 LANG_HEADPHONE_UNPLUG_DISABLE_AUTORESUME
, false,
1554 "disable autoresume if phones not present",NULL
),
1556 INT_SETTING(0, pause_rewind
, LANG_PAUSE_REWIND
, 0,
1557 "rewind duration on pause", UNIT_SEC
, 0, 15, 1, NULL
, NULL
,
1560 CHOICE_SETTING(0, fm_region
, LANG_FM_REGION
, 0,
1561 "fm_region", "eu,us,jp,kr,it,wo", set_radio_region
, 6,
1562 ID2P(LANG_FM_EUROPE
), ID2P(LANG_FM_US
),
1563 ID2P(LANG_FM_JAPAN
), ID2P(LANG_FM_KOREA
),
1564 ID2P(LANG_FM_ITALY
), ID2P(LANG_FM_OTHER
)),
1567 OFFON_SETTING(F_BANFROMQS
, audioscrobbler
, LANG_AUDIOSCROBBLER
, false,
1568 "Last.fm Logging", NULL
),
1570 TEXT_SETTING(0, fmr_file
, "fmr", "-",
1571 FMPRESET_PATH
"/", ".fmr"),
1572 TEXT_SETTING(F_THEMESETTING
,fms_file
, "fms",
1573 DEFAULT_FMS_NAME
, SBS_DIR
"/", ".fms"),
1574 #ifdef HAVE_REMOTE_LCD
1575 TEXT_SETTING(F_THEMESETTING
,rfms_file
, "rfms",
1576 DEFAULT_FMS_NAME
, SBS_DIR
"/", ".rfms"),
1578 #endif /* CONFIG_TUNER */
1579 #ifdef HAVE_LCD_BITMAP
1580 TEXT_SETTING(F_THEMESETTING
, font_file
, "font",
1581 DEFAULT_FONTNAME
, FONT_DIR
"/", ".fnt"),
1583 #ifdef HAVE_REMOTE_LCD
1584 TEXT_SETTING(F_THEMESETTING
, remote_font_file
, "remote font",
1585 DEFAULT_REMOTE_FONTNAME
, FONT_DIR
"/", ".fnt"),
1587 TEXT_SETTING(F_THEMESETTING
,wps_file
, "wps",
1588 DEFAULT_WPSNAME
, WPS_DIR
"/", ".wps"),
1589 #ifdef HAVE_LCD_BITMAP
1590 TEXT_SETTING(F_THEMESETTING
,sbs_file
, "sbs",
1591 DEFAULT_SBSNAME
, SBS_DIR
"/", ".sbs"),
1593 #ifdef HAVE_REMOTE_LCD
1594 TEXT_SETTING(F_THEMESETTING
,rwps_file
,"rwps",
1595 DEFAULT_WPSNAME
, WPS_DIR
"/", ".rwps"),
1596 TEXT_SETTING(F_THEMESETTING
,rsbs_file
, "rsbs",
1597 DEFAULT_SBSNAME
, SBS_DIR
"/", ".rsbs"),
1599 TEXT_SETTING(0,lang_file
,"lang","",LANG_DIR
"/",".lng"),
1601 TEXT_SETTING(F_THEMESETTING
,backdrop_file
,"backdrop",
1602 DEFAULT_BACKDROP
, NULL
, NULL
),
1604 #ifdef HAVE_LCD_BITMAP
1605 TEXT_SETTING(0,kbd_file
,"kbd","-",ROCKBOX_DIR
"/",".kbd"),
1607 #ifdef HAVE_USB_CHARGING_ENABLE
1608 CHOICE_SETTING(0, usb_charging
, LANG_USB_CHARGING
, 1, "usb charging",
1609 "off,on,force", NULL
, 3, ID2P(LANG_SET_BOOL_NO
),
1610 ID2P(LANG_SET_BOOL_YES
), ID2P(LANG_FORCE
)),
1612 OFFON_SETTING(F_BANFROMQS
,cuesheet
,LANG_CUESHEET_ENABLE
,false,"cuesheet support",
1614 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, skip_length
,
1615 LANG_SKIP_LENGTH
, 0, "skip length",
1616 "outro,track,1s,2s,3s,5s,7s,10s,15s,20s,30s,45s,1min,90s,2min,3min,5min,10min,15min",
1617 UNIT_SEC
, formatter_unit_0_is_skip_track
,
1618 getlang_unit_0_is_skip_track
, NULL
,
1619 19, -1,0,1,2,3,5,7,10,15,20,30,45,60,90,120,180,300,600,900),
1620 CHOICE_SETTING(0, start_in_screen
, LANG_START_SCREEN
, 1,
1621 "start in screen", "previous,root,files,"
1622 #ifdef HAVE_TAGCACHE
1623 #define START_DB_COUNT 1
1626 #define START_DB_COUNT 0
1629 #ifdef HAVE_RECORDING
1630 #define START_REC_COUNT 1
1633 #define START_REC_COUNT 0
1636 #define START_TUNER_COUNT 1
1639 #define START_TUNER_COUNT 0
1642 #ifdef HAVE_PICTUREFLOW_INTEGRATION
1643 #define START_PF_COUNT 1
1646 #define START_PF_COUNT 0
1649 (6 + START_DB_COUNT
+ START_REC_COUNT
+ START_TUNER_COUNT
+ START_PF_COUNT
),
1650 ID2P(LANG_PREVIOUS_SCREEN
), ID2P(LANG_MAIN_MENU
),
1651 ID2P(LANG_DIR_BROWSER
),
1652 #ifdef HAVE_TAGCACHE
1653 ID2P(LANG_TAGCACHE
),
1655 ID2P(LANG_RESUME_PLAYBACK
), ID2P(LANG_SETTINGS
),
1656 #ifdef HAVE_RECORDING
1657 ID2P(LANG_RECORDING
),
1660 ID2P(LANG_FM_RADIO
),
1662 ID2P(LANG_BOOKMARK_MENU_RECENT_BOOKMARKS
)
1663 #ifdef HAVE_PICTUREFLOW_INTEGRATION
1664 ,ID2P(LANG_ONPLAY_PICTUREFLOW
)
1667 SYSTEM_SETTING(NVRAM(1),last_screen
,-1),
1668 #if defined(HAVE_RTC_ALARM) && \
1669 (defined(HAVE_RECORDING) || CONFIG_TUNER)
1670 {F_T_INT
, &global_settings
.alarm_wake_up_screen
, LANG_ALARM_WAKEUP_SCREEN
,
1671 INT(ALARM_START_WPS
), "alarm wakeup screen", ALARM_SETTING_TEXT
,UNUSED
},
1672 #endif /* HAVE_RTC_ALARM */
1674 /* Customizable icons */
1675 #ifdef HAVE_LCD_BITMAP
1676 TEXT_SETTING(F_THEMESETTING
, icon_file
, "iconset", DEFAULT_ICONSET
,
1677 ICON_DIR
"/", ".bmp"),
1678 TEXT_SETTING(F_THEMESETTING
, viewers_icon_file
, "viewers iconset",
1679 DEFAULT_VIEWERS_ICONSET
,
1680 ICON_DIR
"/", ".bmp"),
1682 #ifdef HAVE_REMOTE_LCD
1683 TEXT_SETTING(F_THEMESETTING
, remote_icon_file
, "remote iconset", "-",
1684 ICON_DIR
"/", ".bmp"),
1685 TEXT_SETTING(F_THEMESETTING
, remote_viewers_icon_file
,
1686 "remote viewers iconset", "-",
1687 ICON_DIR
"/", ".bmp"),
1688 #endif /* HAVE_REMOTE_LCD */
1689 #ifdef HAVE_LCD_COLOR
1690 TEXT_SETTING(F_THEMESETTING
, colors_file
, "filetype colours", "-",
1691 THEME_DIR
"/", ".colours"),
1693 #ifdef HAVE_BUTTON_LIGHT
1694 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, buttonlight_timeout
,
1695 LANG_BUTTONLIGHT_TIMEOUT
, 5, "button light timeout", off_on
,
1696 UNIT_SEC
, backlight_formatter
, backlight_getlang
,
1697 buttonlight_set_timeout
, 20,
1698 -1,0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,120),
1700 #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS
1701 INT_SETTING(F_NO_WRAP
, buttonlight_brightness
, LANG_BUTTONLIGHT_BRIGHTNESS
,
1702 DEFAULT_BRIGHTNESS_SETTING
,
1703 "button light brightness",UNIT_INT
, MIN_BRIGHTNESS_SETTING
,
1704 MAX_BRIGHTNESS_SETTING
, 1, NULL
, NULL
,
1705 buttonlight_set_brightness
),
1707 #ifndef HAVE_WHEEL_ACCELERATION
1708 INT_SETTING(0, list_accel_start_delay
, LANG_LISTACCEL_START_DELAY
,
1709 2, "list_accel_start_delay", UNIT_SEC
, 0, 10, 1,
1710 formatter_unit_0_is_off
, getlang_unit_0_is_off
, NULL
),
1711 INT_SETTING(0, list_accel_wait
, LANG_LISTACCEL_ACCEL_SPEED
,
1712 3, "list_accel_wait", UNIT_SEC
, 1, 10, 1,
1713 scanaccel_formatter
, getlang_unit_0_is_off
, NULL
),
1714 #endif /* HAVE_WHEEL_ACCELERATION */
1715 #if CONFIG_CODEC == SWCODEC
1717 CHOICE_SETTING(0, keyclick
, LANG_KEYCLICK
, 0,
1718 "keyclick", "off,weak,moderate,strong", NULL
, 4,
1719 ID2P(LANG_OFF
), ID2P(LANG_WEAK
), ID2P(LANG_MODERATE
),
1721 OFFON_SETTING(0, keyclick_repeats
, LANG_KEYCLICK_REPEATS
, false,
1722 "keyclick repeats", NULL
),
1723 #endif /* CONFIG_CODEC == SWCODEC */
1724 TEXT_SETTING(0, playlist_catalog_dir
, "playlist catalog directory",
1725 PLAYLIST_CATALOG_DEFAULT_DIR
, NULL
, NULL
),
1726 #ifdef HAVE_TOUCHPAD_SENSITIVITY_SETTING
1727 CHOICE_SETTING(0, touchpad_sensitivity
, LANG_TOUCHPAD_SENSITIVITY
, 0,
1728 "touchpad sensitivity", "normal,high", touchpad_set_sensitivity
, 2,
1729 ID2P(LANG_NORMAL
), ID2P(LANG_HIGH
)),
1731 #ifdef HAVE_QUICKSCREEN
1732 CUSTOM_SETTING(0, qs_items
[QUICKSCREEN_TOP
], LANG_TOP_QS_ITEM
,
1734 qs_load_from_cfg
, qs_write_to_cfg
,
1735 qs_is_changed
, qs_set_default
),
1736 CUSTOM_SETTING(0, qs_items
[QUICKSCREEN_LEFT
], LANG_LEFT_QS_ITEM
,
1737 &global_settings
.playlist_shuffle
, "qs left",
1738 qs_load_from_cfg
, qs_write_to_cfg
,
1739 qs_is_changed
, qs_set_default
),
1740 CUSTOM_SETTING(0, qs_items
[QUICKSCREEN_RIGHT
], LANG_RIGHT_QS_ITEM
,
1741 &global_settings
.repeat_mode
, "qs right",
1742 qs_load_from_cfg
, qs_write_to_cfg
,
1743 qs_is_changed
, qs_set_default
),
1744 CUSTOM_SETTING(0, qs_items
[QUICKSCREEN_BOTTOM
], LANG_BOTTOM_QS_ITEM
,
1746 qs_load_from_cfg
, qs_write_to_cfg
,
1747 qs_is_changed
, qs_set_default
),
1750 OFFON_SETTING(0, speaker_enabled
, LANG_ENABLE_SPEAKER
, false, "speaker",
1751 audiohw_enable_speaker
),
1753 #ifdef HAVE_TOUCHSCREEN
1754 CHOICE_SETTING(0, touch_mode
, LANG_TOUCHSCREEN_MODE
, DEFAULT_TOUCHSCREEN_MODE
,
1755 "touchscreen mode", "point,grid", NULL
, 2,
1756 ID2P(LANG_TOUCHSCREEN_POINT
), ID2P(LANG_TOUCHSCREEN_GRID
)),
1757 CUSTOM_SETTING(0, ts_calibration_data
, -1,
1758 &default_calibration_parameters
, "touchscreen calibration",
1759 tsc_load_from_cfg
, tsc_write_to_cfg
,
1760 tsc_is_changed
, tsc_set_default
),
1762 OFFON_SETTING(0, prevent_skip
, LANG_PREVENT_SKIPPING
, false, "prevent track skip", NULL
),
1764 #ifdef HAVE_PITCHSCREEN
1765 OFFON_SETTING(0, pitch_mode_semitone
, LANG_SEMITONE
, false,
1766 "Semitone pitch change", NULL
),
1767 #if CONFIG_CODEC == SWCODEC
1768 OFFON_SETTING(0, pitch_mode_timestretch
, LANG_TIMESTRETCH
, false,
1769 "Timestretch mode", NULL
),
1773 #ifdef USB_ENABLE_HID
1774 OFFON_SETTING(0, usb_hid
, LANG_USB_HID
, true, "usb hid", usb_set_hid
),
1775 CHOICE_SETTING(0, usb_keypad_mode
, LANG_USB_KEYPAD_MODE
, 0,
1776 "usb keypad mode", "multimedia,presentation,browser"
1777 #ifdef HAVE_USB_HID_MOUSE
1781 #ifdef HAVE_USB_HID_MOUSE
1786 ID2P(LANG_MULTIMEDIA_MODE
), ID2P(LANG_PRESENTATION_MODE
),
1787 ID2P(LANG_BROWSER_MODE
)
1788 #ifdef HAVE_USB_HID_MOUSE
1789 , ID2P(LANG_MOUSE_MODE
)
1791 ), /* CHOICE_SETTING( usb_keypad_mode ) */
1794 /* Customizable list */
1795 #ifdef HAVE_LCD_BITMAP
1796 VIEWPORT_SETTING(ui_vp_config
, "ui viewport"),
1797 #ifdef HAVE_REMOTE_LCD
1798 VIEWPORT_SETTING(remote_ui_vp_config
, "remote ui viewport"),
1802 #ifdef HAVE_MORSE_INPUT
1803 OFFON_SETTING(0, morse_input
, LANG_MORSE_INPUT
, false, "morse input", NULL
),
1807 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, hotkey_wps
,
1808 LANG_HOTKEY_WPS
, HOTKEY_VIEW_PLAYLIST
, "hotkey wps",
1809 "off,view playlist,show track info,pitchscreen,open with,delete"
1810 #ifdef HAVE_PICTUREFLOW_INTEGRATION
1813 ,UNIT_INT
, hotkey_formatter
, hotkey_getlang
, NULL
,
1814 #ifdef HAVE_PICTUREFLOW_INTEGRATION
1820 HOTKEY_VIEW_PLAYLIST
, HOTKEY_SHOW_TRACK_INFO
, HOTKEY_PITCHSCREEN
,
1821 HOTKEY_OPEN_WITH
, HOTKEY_DELETE
1822 #ifdef HAVE_PICTUREFLOW_INTEGRATION
1823 , HOTKEY_PICTUREFLOW
1826 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, hotkey_tree
,
1827 LANG_HOTKEY_FILE_BROWSER
, HOTKEY_OFF
, "hotkey tree",
1828 "off,open with,delete,insert,insert shuffled",
1829 UNIT_INT
, hotkey_formatter
, hotkey_getlang
, NULL
, 5, HOTKEY_OFF
,
1830 HOTKEY_OPEN_WITH
, HOTKEY_DELETE
, HOTKEY_INSERT
, HOTKEY_INSERT_SHUFFLED
),
1833 #if CONFIG_CODEC == SWCODEC
1834 INT_SETTING(0, resume_rewind
, LANG_RESUME_REWIND
, 0,
1835 "resume rewind", UNIT_SEC
, 0, 60, 5,
1840 const int nb_settings
= sizeof(settings
)/sizeof(*settings
);
1842 const struct settings_list
* get_settings_list(int*count
)
1844 *count
= nb_settings
;