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
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 "cabbiev2"
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
, "2x/%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 find_setting(defaultval
, (int*)setting
);
466 #ifdef HAVE_TOUCHSCREEN
468 #if defined(APPLICATION) \
469 || defined(ONDA_VX747) \
470 || defined(ONDA_VX767) \
471 || defined(ONDA_VX747P) \
472 || defined(ONDA_VX777)
474 #define DEFAULT_TOUCHSCREEN_MODE TOUCHSCREEN_POINT
476 #define DEFAULT_TOUCHSCREEN_MODE TOUCHSCREEN_BUTTON
479 static void tsc_load_from_cfg(void* setting
, char*value
)
481 struct touchscreen_parameter
*var
= (struct touchscreen_parameter
*) setting
;
483 /* Replacement for sscanf(value, "%d ..., &var->A, ...); */
484 int vals
[7], count
= 0;
485 while(*value
!= 0 && count
< 7)
491 vals
[count
++] = atoi(value
);
492 while(!isspace(*value
))
502 var
->divider
= vals
[6];
505 static char* tsc_write_to_cfg(void* setting
, char*buf
, int buf_len
)
507 const struct touchscreen_parameter
*var
= (const struct touchscreen_parameter
*) setting
;
508 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
);
511 static bool tsc_is_changed(void* setting
, void* defaultval
)
513 return memcmp(setting
, defaultval
, sizeof(struct touchscreen_parameter
)) != 0;
515 static void tsc_set_default(void* setting
, void* defaultval
)
517 memcpy(setting
, defaultval
, sizeof(struct touchscreen_parameter
));
521 static const char* hotkey_formatter(char* buffer
, size_t buffer_size
, int value
,
527 return str(get_hotkey_lang_id(value
));
529 static int32_t hotkey_getlang(int value
, int unit
)
532 return get_hotkey_lang_id(value
);
534 #endif /* HAVE_HOTKEY */
535 const struct settings_list settings
[] = {
537 SOUND_SETTING(F_NO_WRAP
,volume
, LANG_VOLUME
, "volume", SOUND_VOLUME
),
538 SOUND_SETTING(0, balance
, LANG_BALANCE
, "balance", SOUND_BALANCE
),
540 #ifdef AUDIOHW_HAVE_BASS
541 SOUND_SETTING(F_NO_WRAP
,bass
, LANG_BASS
, "bass", SOUND_BASS
),
543 #ifdef AUDIOHW_HAVE_TREBLE
544 SOUND_SETTING(F_NO_WRAP
,treble
, LANG_TREBLE
, "treble", SOUND_TREBLE
),
546 /* Hardware EQ tone controls */
547 #ifdef AUDIOHW_HAVE_EQ
548 /* Band gain is generic */
549 SOUND_SETTING(F_NO_WRAP
, hw_eq_bands
[AUDIOHW_EQ_BAND1
].gain
,
550 LANG_HW_EQ_GAIN
, "tone band1 gain", SOUND_EQ_BAND1_GAIN
),
551 #ifdef AUDIOHW_HAVE_EQ_BAND2
552 SOUND_SETTING(F_NO_WRAP
, hw_eq_bands
[AUDIOHW_EQ_BAND2
].gain
,
553 LANG_HW_EQ_GAIN
, "tone band2 gain", SOUND_EQ_BAND2_GAIN
),
554 #endif /* AUDIOHW_HAVE_EQ_BAND2 */
555 #ifdef AUDIOHW_HAVE_EQ_BAND3
556 SOUND_SETTING(F_NO_WRAP
, hw_eq_bands
[AUDIOHW_EQ_BAND3
].gain
,
557 LANG_HW_EQ_GAIN
, "tone band3 gain", SOUND_EQ_BAND3_GAIN
),
558 #endif /* AUDIOHW_HAVE_EQ_BAND3 */
559 #ifdef AUDIOHW_HAVE_EQ_BAND4
560 SOUND_SETTING(F_NO_WRAP
, hw_eq_bands
[AUDIOHW_EQ_BAND4
].gain
,
561 LANG_HW_EQ_GAIN
, "tone band4 gain", SOUND_EQ_BAND4_GAIN
),
562 #endif /* AUDIOHW_HAVE_EQ_BAND4 */
563 #ifdef AUDIOHW_HAVE_EQ_BAND5
564 SOUND_SETTING(F_NO_WRAP
, hw_eq_bands
[AUDIOHW_EQ_BAND5
].gain
,
565 LANG_HW_EQ_GAIN
, "tone band5 gain", SOUND_EQ_BAND5_GAIN
),
566 #endif /* AUDIOHW_HAVE_EQ_BAND5 */
568 /* Frequencies vary with samplerate but at least the user has an idea
569 * about the bands and it will be correct with normal playback rates. */
571 STRINGCHOICE_SETTING(F_SOUNDSETTING
,
572 hw_eq_bands
[AUDIOHW_EQ_BAND1
].frequency
,
573 LANG_HW_EQ_FREQUENCY
, 0,"tone band1 frequency",
574 "80 Hz,105 Hz,135 Hz,175 Hz",
575 sound_set_hw_eq_band1_frequency
, 4,
576 TALK_ID(80, UNIT_HERTZ
), TALK_ID(105, UNIT_HERTZ
),
577 TALK_ID(135, UNIT_HERTZ
), TALK_ID(175, UNIT_HERTZ
)),
579 STRINGCHOICE_SETTING(F_SOUNDSETTING
,
580 hw_eq_bands
[AUDIOHW_EQ_BAND2
].frequency
,
581 LANG_HW_EQ_FREQUENCY
, 0,"tone band2 frequency",
582 "230 Hz,300 Hz,385 Hz,500 Hz",
583 sound_set_hw_eq_band2_frequency
, 4,
584 TALK_ID(230, UNIT_HERTZ
), TALK_ID(300, UNIT_HERTZ
),
585 TALK_ID(385, UNIT_HERTZ
), TALK_ID(500, UNIT_HERTZ
)),
586 CHOICE_SETTING(F_SOUNDSETTING
, hw_eq_bands
[AUDIOHW_EQ_BAND2
].width
,
587 LANG_HW_EQ_WIDTH
, 0, "tone band2 width", "narrow,wide",
588 sound_set_hw_eq_band2_width
, 2,
589 ID2P(LANG_HW_EQ_WIDTH_NARROW
), ID2P(LANG_HW_EQ_WIDTH_WIDE
)),
591 STRINGCHOICE_SETTING(F_SOUNDSETTING
,
592 hw_eq_bands
[AUDIOHW_EQ_BAND3
].frequency
,
593 LANG_HW_EQ_FREQUENCY
, 0, "tone band3 frequency",
594 "650 Hz,850 Hz,1.1 kHz,1.4 kHz",
595 sound_set_hw_eq_band3_frequency
, 4,
596 TALK_ID(650, UNIT_HERTZ
), TALK_ID(850, UNIT_HERTZ
),
597 TALK_ID_DECIMAL(11, 1, UNIT_KHZ
),
598 TALK_ID_DECIMAL(14, 1, UNIT_KHZ
)),
599 CHOICE_SETTING(F_SOUNDSETTING
,hw_eq_bands
[AUDIOHW_EQ_BAND3
].width
,
600 LANG_HW_EQ_WIDTH
, 0, "tone band3 width", "narrow,wide",
601 sound_set_hw_eq_band3_width
, 2,
602 ID2P(LANG_HW_EQ_WIDTH_NARROW
), ID2P(LANG_HW_EQ_WIDTH_WIDE
)),
604 STRINGCHOICE_SETTING(F_SOUNDSETTING
,
605 hw_eq_bands
[AUDIOHW_EQ_BAND4
].frequency
,
606 LANG_HW_EQ_FREQUENCY
, 0, "tone band4 frequency",
607 "1.8 kHz,2.4 kHz,3.2 kHz,4.1 kHz",
608 sound_set_hw_eq_band4_frequency
, 4,
609 TALK_ID_DECIMAL(18, 1, UNIT_KHZ
),
610 TALK_ID_DECIMAL(24, 1, UNIT_KHZ
),
611 TALK_ID_DECIMAL(32, 1, UNIT_KHZ
),
612 TALK_ID_DECIMAL(41, 1, UNIT_KHZ
)),
613 CHOICE_SETTING(F_SOUNDSETTING
, hw_eq_bands
[AUDIOHW_EQ_BAND4
].width
,
614 LANG_HW_EQ_WIDTH
, 0, "tone band4 width", "narrow,wide",
615 sound_set_hw_eq_band4_width
, 2,
616 ID2P(LANG_HW_EQ_WIDTH_NARROW
), ID2P(LANG_HW_EQ_WIDTH_WIDE
)),
618 STRINGCHOICE_SETTING(F_SOUNDSETTING
,
619 hw_eq_bands
[AUDIOHW_EQ_BAND5
].frequency
,
620 LANG_HW_EQ_FREQUENCY
, 0, "tone band5 frequency",
621 "5.3 kHz,6.9 kHz,9.0 kHz,11.7 kHz",
622 sound_set_hw_eq_band5_frequency
, 4,
623 TALK_ID_DECIMAL(53, 1, UNIT_KHZ
),
624 TALK_ID_DECIMAL(69, 1, UNIT_KHZ
),
625 TALK_ID_DECIMAL(90, 1, UNIT_KHZ
),
626 TALK_ID_DECIMAL(117, 1, UNIT_KHZ
)),
627 #endif /* HAVE_WM8978 */
628 #endif /* AUDIOHW_HAVE_EQ */
629 /* 3-d enhancement effect */
630 #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
631 SOUND_SETTING(0,loudness
, LANG_LOUDNESS
, "loudness", SOUND_LOUDNESS
),
632 STRINGCHOICE_SETTING(F_SOUNDSETTING
,avc
,LANG_AUTOVOL
,0,"auto volume",
633 "off,20ms,2,4,8,", sound_set_avc
, 5,
634 LANG_OFF
,TALK_ID(20, UNIT_MS
),TALK_ID(2, UNIT_SEC
),
635 TALK_ID(4, UNIT_SEC
),TALK_ID(8, UNIT_SEC
)),
636 OFFON_SETTING(F_SOUNDSETTING
, superbass
, LANG_SUPERBASS
, false, "superbass",
640 CHOICE_SETTING(F_SOUNDSETTING
, channel_config
, LANG_CHANNEL_CONFIGURATION
,
642 "stereo,mono,custom,mono left,mono right,karaoke",
643 sound_set_channels
, 6,
644 ID2P(LANG_CHANNEL_STEREO
), ID2P(LANG_CHANNEL_MONO
),
645 ID2P(LANG_CHANNEL_CUSTOM
), ID2P(LANG_CHANNEL_LEFT
),
646 ID2P(LANG_CHANNEL_RIGHT
), ID2P(LANG_CHANNEL_KARAOKE
)),
647 SOUND_SETTING(F_SOUNDSETTING
, stereo_width
, LANG_STEREO_WIDTH
,
648 "stereo_width", SOUND_STEREO_WIDTH
),
649 #ifdef AUDIOHW_HAVE_DEPTH_3D
650 SOUND_SETTING(0,depth_3d
, LANG_DEPTH_3D
, "3-d enhancement",
654 OFFON_SETTING(0, playlist_shuffle
, LANG_SHUFFLE
, false, "shuffle", NULL
),
655 SYSTEM_SETTING(NVRAM(4), resume_index
, -1),
656 SYSTEM_SETTING(NVRAM(4), resume_offset
, -1),
657 CHOICE_SETTING(0, repeat_mode
, LANG_REPEAT
, REPEAT_OFF
, "repeat",
658 "off,all,one,shuffle"
659 #ifdef AB_REPEAT_ENABLE
663 #ifdef AB_REPEAT_ENABLE
668 ID2P(LANG_OFF
), ID2P(LANG_ALL
), ID2P(LANG_REPEAT_ONE
),
670 #ifdef AB_REPEAT_ENABLE
671 ,ID2P(LANG_REPEAT_AB
)
673 ), /* CHOICE_SETTING( repeat_mode ) */
675 #ifdef HAVE_LCD_CONTRAST
676 /* its easier to leave this one un-macro()ed for the time being */
677 { F_T_INT
|F_DEF_ISFUNC
|F_INT_SETTING
, &global_settings
.contrast
,
678 LANG_CONTRAST
, FUNCTYPE(lcd_default_contrast
), "contrast", NULL
, {
679 .int_setting
= (struct int_setting
[]) {
680 { lcd_set_contrast
, UNIT_INT
, MIN_CONTRAST_SETTING
,
681 MAX_CONTRAST_SETTING
, 1, NULL
, NULL
}}}},
683 #ifdef HAVE_BACKLIGHT
684 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, backlight_timeout
, LANG_BACKLIGHT
,
685 DEFAULT_BACKLIGHT_TIMEOUT
,
686 "backlight timeout", off_on
, UNIT_SEC
, backlight_formatter
,
687 backlight_getlang
, backlight_set_timeout
, 20,
688 -1,0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,120),
690 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, backlight_timeout_plugged
,
691 LANG_BACKLIGHT_ON_WHEN_CHARGING
, 10,
692 "backlight timeout plugged", off_on
, UNIT_SEC
,
693 backlight_formatter
, backlight_getlang
,
694 backlight_set_timeout_plugged
, 20,
695 -1,0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,120),
697 #endif /* HAVE_BACKLIGHT */
698 #ifdef HAVE_LCD_BITMAP
699 #ifdef HAVE_LCD_INVERT
700 BOOL_SETTING(0, invert
, LANG_INVERT
, false ,"invert", off_on
,
701 LANG_INVERT_LCD_INVERSE
, LANG_NORMAL
, lcd_set_invert_display
),
704 OFFON_SETTING(0, flip_display
, LANG_FLIP_DISPLAY
, false, "flip display",
708 CHOICE_SETTING(F_TEMPVAR
|F_THEMESETTING
, cursor_style
, LANG_INVERT_CURSOR
,
709 #ifdef HAVE_LCD_COLOR
711 "pointer,bar (inverse),bar (color),bar (gradient)", NULL
, 4,
712 ID2P(LANG_INVERT_CURSOR_POINTER
),
713 ID2P(LANG_INVERT_CURSOR_BAR
),
714 ID2P(LANG_INVERT_CURSOR_COLOR
),
715 ID2P(LANG_INVERT_CURSOR_GRADIENT
)),
717 1, "selector type", "pointer,bar (inverse)", NULL
, 2,
718 ID2P(LANG_INVERT_CURSOR_POINTER
),
719 ID2P(LANG_INVERT_CURSOR_BAR
)),
721 CHOICE_SETTING(F_THEMESETTING
|F_TEMPVAR
, statusbar
,
722 LANG_STATUS_BAR
, STATUSBAR_TOP
, "statusbar","off,top,bottom",
723 NULL
, 3, ID2P(LANG_OFF
), ID2P(LANG_STATUSBAR_TOP
),
724 ID2P(LANG_STATUSBAR_BOTTOM
)),
725 #ifdef HAVE_REMOTE_LCD
726 CHOICE_SETTING(F_THEMESETTING
|F_TEMPVAR
, remote_statusbar
,
727 LANG_REMOTE_STATUSBAR
, STATUSBAR_TOP
, "remote statusbar","off,top,bottom",
728 NULL
, 3, ID2P(LANG_OFF
), ID2P(LANG_STATUSBAR_TOP
),
729 ID2P(LANG_STATUSBAR_BOTTOM
)),
731 CHOICE_SETTING(F_THEMESETTING
|F_TEMPVAR
, scrollbar
,
732 LANG_SCROLL_BAR
, SCROLLBAR_LEFT
, "scrollbar","off,left,right",
733 NULL
, 3, ID2P(LANG_OFF
), ID2P(LANG_LEFT
), ID2P(LANG_RIGHT
)),
734 INT_SETTING(F_THEMESETTING
, scrollbar_width
, LANG_SCROLLBAR_WIDTH
, 6,
735 "scrollbar width",UNIT_INT
, 3, MAX(LCD_WIDTH
/10,25), 1,
737 #if CONFIG_KEYPAD == RECORDER_PAD
738 OFFON_SETTING(F_THEMESETTING
,buttonbar
, LANG_BUTTON_BAR
,true,"buttonbar", NULL
),
740 CHOICE_SETTING(F_THEMESETTING
, volume_type
, LANG_VOLUME_DISPLAY
, 0,
741 "volume display", graphic_numeric
, NULL
, 2,
742 ID2P(LANG_DISPLAY_GRAPHIC
),
743 ID2P(LANG_DISPLAY_NUMERIC
)),
744 CHOICE_SETTING(F_THEMESETTING
, battery_display
, LANG_BATTERY_DISPLAY
, 0,
745 "battery display", graphic_numeric
, NULL
, 2,
746 ID2P(LANG_DISPLAY_GRAPHIC
), ID2P(LANG_DISPLAY_NUMERIC
)),
748 CHOICE_SETTING(0, timeformat
, LANG_TIMEFORMAT
, 0,
749 "time format", "24hour,12hour", NULL
, 2,
750 ID2P(LANG_24_HOUR_CLOCK
), ID2P(LANG_12_HOUR_CLOCK
)),
752 #endif /* HAVE_LCD_BITMAP */
753 OFFON_SETTING(0,show_icons
, LANG_SHOW_ICONS
,true,"show icons", NULL
),
755 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, poweroff
, LANG_POWEROFF_IDLE
, 10,
756 "idle poweroff", "off", UNIT_MIN
, formatter_unit_0_is_off
,
757 getlang_unit_0_is_off
, set_poweroff_timeout
, 15,
758 0,1,2,3,4,5,6,7,8,9,10,15,30,45,60),
759 SYSTEM_SETTING(NVRAM(4), runtime
, 0),
760 SYSTEM_SETTING(NVRAM(4), topruntime
, 0),
761 INT_SETTING(F_BANFROMQS
, max_files_in_playlist
,
762 LANG_MAX_FILES_IN_PLAYLIST
,
768 "max files in playlist", UNIT_INT
, 1000, 32000, 1000,
770 INT_SETTING(F_BANFROMQS
, max_files_in_dir
, LANG_MAX_FILES_IN_DIR
,
776 "max files in dir", UNIT_INT
, 50, 10000, 50,
778 /* use this setting for user code even if there's no exchangable battery
780 #ifdef BATTERY_CAPACITY_DEFAULT
781 /* define min/max/inc for this file if there's only one battery */
782 #ifndef BATTERY_CAPACITY_MIN
783 #define BATTERY_CAPACITY_MIN BATTERY_CAPACITY_DEFAULT
784 #define BATTERY_CAPACITY_MAX BATTERY_CAPACITY_DEFAULT
785 #define BATTERY_CAPACITY_INC 0
787 INT_SETTING(0, battery_capacity
, LANG_BATTERY_CAPACITY
,
788 BATTERY_CAPACITY_DEFAULT
, "battery capacity", UNIT_MAH
,
789 BATTERY_CAPACITY_MIN
, BATTERY_CAPACITY_MAX
,
790 BATTERY_CAPACITY_INC
, NULL
, NULL
, NULL
),
793 OFFON_SETTING(NVRAM(1), car_adapter_mode
,
794 LANG_CAR_ADAPTER_MODE
, false, "car adapter mode", NULL
),
796 #ifdef IPOD_ACCESSORY_PROTOCOL
797 CHOICE_SETTING(0, serial_bitrate
, LANG_SERIAL_BITRATE
, 0, "serial bitrate",
798 "auto,9600,19200,38400,57600", iap_bitrate_set
, 5, ID2P(LANG_SERIAL_BITRATE_AUTO
),
799 ID2P(LANG_SERIAL_BITRATE_9600
),ID2P(LANG_SERIAL_BITRATE_19200
),
800 ID2P(LANG_SERIAL_BITRATE_38400
),ID2P(LANG_SERIAL_BITRATE_57600
)),
802 #ifdef HAVE_ACCESSORY_SUPPLY
803 OFFON_SETTING(0, accessory_supply
, LANG_ACCESSORY_SUPPLY
,
804 true, "accessory power supply", accessory_supply_set
),
806 #ifdef HAVE_LINEOUT_POWEROFF
807 OFFON_SETTING(0, lineout_active
, LANG_LINEOUT_ONOFF
,
808 true, "lineout", lineout_set
),
812 OFFON_SETTING(0,fm_force_mono
, LANG_FM_MONO_MODE
,
813 false, "force fm mono", toggle_mono_mode
),
814 SYSTEM_SETTING(NVRAM(4),last_frequency
,0),
817 #if BATTERY_TYPES_COUNT > 1
818 CHOICE_SETTING(0, battery_type
, LANG_BATTERY_TYPE
, 0, "battery type",
819 "alkaline,nimh", NULL
, 2, ID2P(LANG_BATTERY_TYPE_ALKALINE
),
820 ID2P(LANG_BATTERY_TYPE_NIMH
)),
822 #ifdef HAVE_REMOTE_LCD
824 INT_SETTING(0, remote_contrast
, LANG_CONTRAST
,
825 DEFAULT_REMOTE_CONTRAST_SETTING
, "remote contrast", UNIT_INT
,
826 MIN_REMOTE_CONTRAST_SETTING
, MAX_REMOTE_CONTRAST_SETTING
, 1,
827 NULL
, NULL
, lcd_remote_set_contrast
),
828 BOOL_SETTING(0, remote_invert
, LANG_INVERT
, false ,"remote invert", off_on
,
829 LANG_INVERT_LCD_INVERSE
, LANG_NORMAL
,
830 lcd_remote_set_invert_display
),
831 OFFON_SETTING(0,remote_flip_display
, LANG_FLIP_DISPLAY
,
832 false,"remote flip display", NULL
),
833 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, remote_backlight_timeout
,
834 LANG_BACKLIGHT
, 5, "remote backlight timeout", off_on
,
835 UNIT_SEC
, backlight_formatter
, backlight_getlang
,
836 remote_backlight_set_timeout
, 20,
837 -1,0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,120),
839 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, remote_backlight_timeout_plugged
,
840 LANG_BACKLIGHT_ON_WHEN_CHARGING
, 10,
841 "remote backlight timeout plugged", off_on
, UNIT_SEC
,
842 backlight_formatter
, backlight_getlang
,
843 remote_backlight_set_timeout_plugged
, 20,
844 -1,0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,120),
846 #ifdef HAVE_REMOTE_LCD_TICKING
847 OFFON_SETTING(0, remote_reduce_ticking
, LANG_REDUCE_TICKING
,
848 false,"remote reduce ticking", NULL
),
852 #ifdef HAVE_BACKLIGHT
853 OFFON_SETTING(0, bl_filter_first_keypress
,
854 LANG_BACKLIGHT_FILTER_FIRST_KEYPRESS
, false,
855 "backlight filters first keypress", NULL
),
856 #ifdef HAVE_REMOTE_LCD
857 OFFON_SETTING(0, remote_bl_filter_first_keypress
,
858 LANG_BACKLIGHT_FILTER_FIRST_KEYPRESS
, false,
859 "backlight filters first remote keypress", NULL
),
861 #endif /* HAVE_BACKLIGHT */
863 /** End of old RTC config block **/
865 #ifdef HAVE_BACKLIGHT
866 OFFON_SETTING(0, caption_backlight
, LANG_CAPTION_BACKLIGHT
,
867 false, "caption backlight", NULL
),
868 #ifdef HAVE_REMOTE_LCD
869 OFFON_SETTING(0, remote_caption_backlight
, LANG_CAPTION_BACKLIGHT
,
870 false, "remote caption backlight", NULL
),
872 #ifdef HAVE_BACKLIGHT_BRIGHTNESS
873 INT_SETTING(F_NO_WRAP
, brightness
, LANG_BRIGHTNESS
,
874 DEFAULT_BRIGHTNESS_SETTING
, "brightness",UNIT_INT
,
875 MIN_BRIGHTNESS_SETTING
, MAX_BRIGHTNESS_SETTING
, 1,
876 NULL
, NULL
, backlight_set_brightness
),
878 /* backlight fading */
879 #if defined(HAVE_BACKLIGHT_FADING_INT_SETTING)
880 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, backlight_fade_in
,
881 LANG_BACKLIGHT_FADE_IN
, 300, "backlight fade in", "off",
882 UNIT_MS
, formatter_unit_0_is_off
, getlang_unit_0_is_off
,
883 backlight_set_fade_in
, 7, 0,100,200,300,500,1000,2000),
884 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, backlight_fade_out
,
885 LANG_BACKLIGHT_FADE_OUT
, 2000, "backlight fade out", "off",
886 UNIT_MS
, formatter_unit_0_is_off
, getlang_unit_0_is_off
,
887 backlight_set_fade_out
, 10,
888 0,100,200,300,500,1000,2000,3000,5000,10000),
889 #elif defined(HAVE_BACKLIGHT_FADING_BOOL_SETTING)
890 OFFON_SETTING(0, backlight_fade_in
, LANG_BACKLIGHT_FADE_IN
,
891 true, "backlight fade in", backlight_set_fade_in
),
892 OFFON_SETTING(0, backlight_fade_out
, LANG_BACKLIGHT_FADE_OUT
,
893 true, "backlight fade out", backlight_set_fade_out
),
895 #endif /* HAVE_BACKLIGHT */
896 INT_SETTING(F_PADTITLE
, scroll_speed
, LANG_SCROLL_SPEED
, 9,"scroll speed",
897 UNIT_INT
, 0, 15, 1, NULL
, NULL
, lcd_scroll_speed
),
898 INT_SETTING(F_PADTITLE
, scroll_delay
, LANG_SCROLL_DELAY
, 1000,
899 "scroll delay", UNIT_MS
, 0, 2500, 100, NULL
,
900 NULL
, lcd_scroll_delay
),
901 INT_SETTING(0, bidir_limit
, LANG_BIDIR_SCROLL
, 50, "bidir limit",
902 UNIT_PERCENT
, 0, 200, 25, NULL
, NULL
, lcd_bidir_scroll
),
903 #ifdef HAVE_REMOTE_LCD
904 INT_SETTING(0, remote_scroll_speed
, LANG_SCROLL_SPEED
, 9,
905 "remote scroll speed", UNIT_INT
, 0,15, 1,
906 NULL
, NULL
, lcd_remote_scroll_speed
),
907 INT_SETTING(0, remote_scroll_step
, LANG_SCROLL_STEP
, 6,
908 "remote scroll step", UNIT_PIXEL
, 1, LCD_REMOTE_WIDTH
, 1, NULL
,
909 NULL
, lcd_remote_scroll_step
),
910 INT_SETTING(0, remote_scroll_delay
, LANG_SCROLL_DELAY
, 1000,
911 "remote scroll delay", UNIT_MS
, 0, 2500, 100, NULL
, NULL
,
912 lcd_remote_scroll_delay
),
913 INT_SETTING(0, remote_bidir_limit
, LANG_BIDIR_SCROLL
, 50,
914 "remote bidir limit", UNIT_PERCENT
, 0, 200, 25, NULL
, NULL
,
915 lcd_remote_bidir_scroll
),
917 #ifdef HAVE_LCD_BITMAP
918 OFFON_SETTING(0, offset_out_of_view
, LANG_SCREEN_SCROLL_VIEW
,
919 false, "Screen Scrolls Out Of View",
920 gui_list_screen_scroll_out_of_view
),
921 INT_SETTING(F_PADTITLE
, scroll_step
, LANG_SCROLL_STEP
, 6, "scroll step",
922 UNIT_PIXEL
, 1, LCD_WIDTH
, 1, NULL
, NULL
, lcd_scroll_step
),
923 INT_SETTING(F_PADTITLE
, screen_scroll_step
, LANG_SCREEN_SCROLL_STEP
, 16,
924 "screen scroll step", UNIT_PIXEL
, 1, LCD_WIDTH
, 1, NULL
, NULL
,
925 gui_list_screen_scroll_step
),
926 #endif /* HAVE_LCD_BITMAP */
927 OFFON_SETTING(0,scroll_paginated
,LANG_SCROLL_PAGINATED
,
928 false,"scroll paginated",NULL
),
929 #ifdef HAVE_LCD_COLOR
931 {F_T_INT
|F_RGB
|F_THEMESETTING
,&global_settings
.fg_color
,-1,
932 INT(DEFAULT_THEME_FOREGROUND
),"foreground color",NULL
,UNUSED
},
933 {F_T_INT
|F_RGB
|F_THEMESETTING
,&global_settings
.bg_color
,-1,
934 INT(DEFAULT_THEME_BACKGROUND
),"background color",NULL
,UNUSED
},
935 {F_T_INT
|F_RGB
|F_THEMESETTING
,&global_settings
.lss_color
,-1,
936 INT(DEFAULT_THEME_SELECTOR_START
),"line selector start color",NULL
,
938 {F_T_INT
|F_RGB
|F_THEMESETTING
,&global_settings
.lse_color
,-1,
939 INT(DEFAULT_THEME_SELECTOR_END
),"line selector end color",NULL
,UNUSED
},
940 {F_T_INT
|F_RGB
|F_THEMESETTING
,&global_settings
.lst_color
,-1,
941 INT(DEFAULT_THEME_SELECTOR_TEXT
),"line selector text color",NULL
,
946 OFFON_SETTING(0,play_selected
,LANG_PLAY_SELECTED
,true,"play selected",NULL
),
947 OFFON_SETTING(0,party_mode
,LANG_PARTY_MODE
,false,"party mode",NULL
),
948 OFFON_SETTING(0,fade_on_stop
,LANG_FADE_ON_STOP
,true,"volume fade",NULL
),
949 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, ff_rewind_min_step
,
950 LANG_FFRW_STEP
, 1, "scan min step", NULL
, UNIT_SEC
,
951 NULL
, NULL
, NULL
, 14, 1,2,3,4,5,6,8,10,15,20,25,30,45,60),
952 CHOICE_SETTING(0, ff_rewind_accel
, LANG_FFRW_ACCEL
, 2,
953 "seek acceleration", "very fast,fast,normal,slow,very slow", NULL
, 5,
954 ID2P(LANG_VERY_FAST
), ID2P(LANG_FAST
), ID2P(LANG_NORMAL
),
955 ID2P(LANG_SLOW
) , ID2P(LANG_VERY_SLOW
)),
956 #if (CONFIG_CODEC == SWCODEC) && defined(HAVE_DISK_STORAGE)
957 STRINGCHOICE_SETTING(0, buffer_margin
, LANG_MP3BUFFER_MARGIN
, 0,"antiskip",
958 "5s,15s,30s,1min,2min,3min,5min,10min", NULL
, 8,
959 TALK_ID(5, UNIT_SEC
), TALK_ID(15, UNIT_SEC
),
960 TALK_ID(30, UNIT_SEC
), TALK_ID(1, UNIT_MIN
),
961 TALK_ID(2, UNIT_MIN
), TALK_ID(3, UNIT_MIN
),
962 TALK_ID(5, UNIT_MIN
), TALK_ID(10, UNIT_MIN
)),
963 #elif defined(HAVE_DISK_STORAGE)
964 INT_SETTING(0, buffer_margin
, LANG_MP3BUFFER_MARGIN
, 0, "antiskip",
965 UNIT_SEC
, 0, 7, 1, NULL
, NULL
, audio_set_buffer_margin
),
968 #ifdef HAVE_DISK_STORAGE
969 INT_SETTING(0, disk_spindown
, LANG_SPINDOWN
, 5, "disk spindown",
970 UNIT_SEC
, 3, 254, 1, NULL
, NULL
, storage_spindown
),
971 #endif /* HAVE_DISK_STORAGE */
973 TEXT_SETTING(0, start_directory
, "start directory", "/", NULL
, NULL
),
974 CHOICE_SETTING(0, dirfilter
, LANG_FILTER
, SHOW_SUPPORTED
, "show files",
975 "all,supported,music,playlists", NULL
, 4, ID2P(LANG_ALL
),
976 ID2P(LANG_FILTER_SUPPORTED
), ID2P(LANG_FILTER_MUSIC
),
977 ID2P(LANG_PLAYLISTS
)),
979 OFFON_SETTING(0, sort_case
, LANG_SORT_CASE
, false, "sort case", NULL
),
980 CHOICE_SETTING(0, sort_dir
, LANG_SORT_DIR
, 0 ,
981 "sort dirs", "alpha,oldest,newest", NULL
, 3,
982 ID2P(LANG_SORT_ALPHA
), ID2P(LANG_SORT_DATE
),
983 ID2P(LANG_SORT_DATE_REVERSE
)),
984 CHOICE_SETTING(0, sort_file
, LANG_SORT_FILE
, 0 ,
985 "sort files", "alpha,oldest,newest,type", NULL
, 4,
986 ID2P(LANG_SORT_ALPHA
), ID2P(LANG_SORT_DATE
),
987 ID2P(LANG_SORT_DATE_REVERSE
) , ID2P(LANG_SORT_TYPE
)),
988 CHOICE_SETTING(0, interpret_numbers
, LANG_SORT_INTERPRET_NUMBERS
, 1,
989 "sort interpret number", "digits,numbers",NULL
, 2,
990 ID2P(LANG_SORT_INTERPRET_AS_DIGIT
),
991 ID2P(LANG_SORT_INTERPRET_AS_NUMBERS
)),
992 CHOICE_SETTING(0, show_filename_ext
, LANG_SHOW_FILENAME_EXT
, 3,
993 "show filename exts", "off,on,unknown,view_all", NULL
, 4 ,
994 ID2P(LANG_OFF
), ID2P(LANG_ON
), ID2P(LANG_UNKNOWN_TYPES
),
995 ID2P(LANG_EXT_ONLY_VIEW_ALL
)),
996 OFFON_SETTING(0,browse_current
,LANG_FOLLOW
,false,"follow playlist",NULL
),
997 OFFON_SETTING(0,playlist_viewer_icons
,LANG_SHOW_ICONS
,true,
998 "playlist viewer icons",NULL
),
999 OFFON_SETTING(0,playlist_viewer_indices
,LANG_SHOW_INDICES
,true,
1000 "playlist viewer indices",NULL
),
1001 CHOICE_SETTING(0, playlist_viewer_track_display
, LANG_TRACK_DISPLAY
, 0,
1002 "playlist viewer track display","track name,full path",
1003 NULL
, 2, ID2P(LANG_DISPLAY_TRACK_NAME_ONLY
),
1004 ID2P(LANG_DISPLAY_FULL_PATH
)),
1005 CHOICE_SETTING(0, recursive_dir_insert
, LANG_RECURSE_DIRECTORY
, RECURSE_ON
,
1006 "recursive directory insert", off_on_ask
, NULL
, 3 ,
1007 ID2P(LANG_OFF
), ID2P(LANG_ON
), ID2P(LANG_ASK
)),
1009 CHOICE_SETTING(0, autocreatebookmark
, LANG_BOOKMARK_SETTINGS_AUTOCREATE
,
1010 BOOKMARK_NO
, "autocreate bookmarks",
1011 "off,on,ask,recent only - on,recent only - ask", NULL
, 5,
1012 ID2P(LANG_SET_BOOL_NO
), ID2P(LANG_SET_BOOL_YES
),
1013 ID2P(LANG_ASK
), ID2P(LANG_BOOKMARK_SETTINGS_RECENT_ONLY_YES
),
1014 ID2P(LANG_BOOKMARK_SETTINGS_RECENT_ONLY_ASK
)),
1015 OFFON_SETTING(0, autoupdatebookmark
, LANG_BOOKMARK_SETTINGS_AUTOUPDATE
,
1016 false, "autoupdate bookmarks", NULL
),
1017 CHOICE_SETTING(0, autoloadbookmark
, LANG_BOOKMARK_SETTINGS_AUTOLOAD
,
1018 BOOKMARK_NO
, "autoload bookmarks", off_on_ask
, NULL
, 3,
1019 ID2P(LANG_SET_BOOL_NO
), ID2P(LANG_SET_BOOL_YES
),
1021 CHOICE_SETTING(0, usemrb
, LANG_BOOKMARK_SETTINGS_MAINTAIN_RECENT_BOOKMARKS
,
1022 BOOKMARK_NO
, "use most-recent-bookmarks",
1023 "off,on,unique only", NULL
, 3, ID2P(LANG_SET_BOOL_NO
),
1024 ID2P(LANG_SET_BOOL_YES
),
1025 ID2P(LANG_BOOKMARK_SETTINGS_UNIQUE_ONLY
)),
1026 #ifdef HAVE_LCD_BITMAP
1028 STRINGCHOICE_SETTING(0, peak_meter_clip_hold
, LANG_PM_CLIP_HOLD
, 16,
1029 "peak meter clip hold",
1030 "on,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,2min"
1031 ",3min,5min,10min,20min,45min,90min",
1032 peak_meter_set_clip_hold
, 25, LANG_PM_ETERNAL
,
1033 TALK_ID(1, UNIT_SEC
), TALK_ID(2, UNIT_SEC
),
1034 TALK_ID(3, UNIT_SEC
), TALK_ID(4, UNIT_SEC
),
1035 TALK_ID(5, UNIT_SEC
), TALK_ID(6, UNIT_SEC
),
1036 TALK_ID(7, UNIT_SEC
), TALK_ID(8, UNIT_SEC
),
1037 TALK_ID(9, UNIT_SEC
), TALK_ID(10, UNIT_SEC
),
1038 TALK_ID(15, UNIT_SEC
), TALK_ID(20, UNIT_SEC
),
1039 TALK_ID(25, UNIT_SEC
), TALK_ID(30, UNIT_SEC
),
1040 TALK_ID(45, UNIT_SEC
), TALK_ID(60, UNIT_SEC
),
1041 TALK_ID(90, UNIT_SEC
), TALK_ID(2, UNIT_MIN
),
1042 TALK_ID(3, UNIT_MIN
), TALK_ID(5, UNIT_MIN
),
1043 TALK_ID(10, UNIT_MIN
), TALK_ID(20, UNIT_MIN
),
1044 TALK_ID(45, UNIT_MIN
), TALK_ID(90, UNIT_MIN
)),
1045 STRINGCHOICE_SETTING(0, peak_meter_hold
, LANG_PM_PEAK_HOLD
, 3,
1047 "off,200ms,300ms,500ms,1,2,3,4,5,6,7,8,9,10,15,20,30,1min",
1048 NULL
, 18, LANG_OFF
, TALK_ID(200, UNIT_MS
),
1049 TALK_ID(300, UNIT_MS
), TALK_ID(500, UNIT_MS
),
1050 TALK_ID(1, UNIT_SEC
), TALK_ID(2, UNIT_SEC
),
1051 TALK_ID(3, UNIT_SEC
), TALK_ID(4, UNIT_SEC
),
1052 TALK_ID(5, UNIT_SEC
), TALK_ID(6, UNIT_SEC
),
1053 TALK_ID(7, UNIT_SEC
), TALK_ID(8, UNIT_SEC
),
1054 TALK_ID(9, UNIT_SEC
), TALK_ID(10, UNIT_SEC
),
1055 TALK_ID(15, UNIT_SEC
), TALK_ID(20, UNIT_SEC
),
1056 TALK_ID(30, UNIT_SEC
), TALK_ID(60, UNIT_SEC
)),
1057 INT_SETTING(0, peak_meter_release
, LANG_PM_RELEASE
, 8, "peak meter release",
1058 UNIT_PM_TICK
, 1, 0x7e, 1, NULL
, NULL
,NULL
),
1059 OFFON_SETTING(0,peak_meter_dbfs
,LANG_PM_DBFS
,true,"peak meter dbfs",NULL
),
1060 {F_T_INT
, &global_settings
.peak_meter_min
, LANG_PM_MIN
,INT(60),
1061 "peak meter min", NULL
, UNUSED
},
1062 {F_T_INT
, &global_settings
.peak_meter_max
, LANG_PM_MAX
,INT(0),
1063 "peak meter max", NULL
, UNUSED
},
1064 #ifdef HAVE_RECORDING
1065 OFFON_SETTING(0, peak_meter_clipcounter
, LANG_PM_CLIPCOUNTER
, false,
1066 "peak meter clipcounter", NULL
),
1067 #endif /* HAVE_RECORDING */
1068 #endif /* HAVE_LCD_BITMAP */
1069 #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
1070 SOUND_SETTING(F_SOUNDSETTING
, mdb_strength
, LANG_MDB_STRENGTH
,
1071 "mdb strength", SOUND_MDB_STRENGTH
),
1072 SOUND_SETTING(F_SOUNDSETTING
, mdb_harmonics
, LANG_MDB_HARMONICS
,
1073 "mdb harmonics", SOUND_MDB_HARMONICS
),
1074 SOUND_SETTING(F_SOUNDSETTING
, mdb_center
, LANG_MDB_CENTER
,
1075 "mdb center", SOUND_MDB_CENTER
),
1076 SOUND_SETTING(F_SOUNDSETTING
, mdb_shape
, LANG_MDB_SHAPE
,
1077 "mdb shape", SOUND_MDB_SHAPE
),
1078 OFFON_SETTING(F_SOUNDSETTING
, mdb_enable
, LANG_MDB_ENABLE
,
1079 false, "mdb enable", set_mdb_enable
),
1081 #if CONFIG_CODEC == MAS3507D
1082 OFFON_SETTING(F_SOUNDSETTING
, line_in
,LANG_LINE_IN
,false,"line in",NULL
),
1085 OFFON_SETTING(F_TEMPVAR
, talk_menu
, LANG_VOICE_MENU
, true, "talk menu", NULL
),
1086 CHOICE_SETTING(0, talk_dir
, LANG_VOICE_DIR
, 0,
1087 "talk dir", off_number_spell
, NULL
, 3,
1088 ID2P(LANG_OFF
), ID2P(LANG_VOICE_NUMBER
),
1089 ID2P(LANG_VOICE_SPELL
)),
1090 OFFON_SETTING(F_TEMPVAR
, talk_dir_clip
, LANG_VOICE_DIR_TALK
, false,
1091 "talk dir clip", NULL
),
1092 CHOICE_SETTING(0, talk_file
, LANG_VOICE_FILE
, 0,
1093 "talk file", off_number_spell
, NULL
, 3,
1094 ID2P(LANG_OFF
), ID2P(LANG_VOICE_NUMBER
),
1095 ID2P(LANG_VOICE_SPELL
)),
1096 OFFON_SETTING(F_TEMPVAR
, talk_file_clip
, LANG_VOICE_FILE_TALK
, false,
1097 "talk file clip", NULL
),
1098 OFFON_SETTING(F_TEMPVAR
, talk_filetype
, LANG_VOICE_FILETYPE
, false,
1099 "talk filetype", NULL
),
1100 OFFON_SETTING(F_TEMPVAR
, talk_battery_level
, LANG_TALK_BATTERY_LEVEL
, false,
1101 "Announce Battery Level", NULL
),
1103 #ifdef HAVE_RECORDING
1105 STRINGCHOICE_SETTING(F_RECSETTING
, rec_timesplit
, LANG_SPLIT_TIME
, 0,
1107 "off,00:05,00:10,00:15,00:30,01:00,01:14,01:20,02:00,"
1108 "04:00,06:00,08:00,10:00,12:00,18:00,24:00",
1110 TALK_ID(5, UNIT_MIN
), TALK_ID(10, UNIT_MIN
),
1111 TALK_ID(15, UNIT_MIN
), TALK_ID(30, UNIT_MIN
),
1112 TALK_ID(60, UNIT_MIN
), TALK_ID(74, UNIT_MIN
),
1113 TALK_ID(80, UNIT_MIN
), TALK_ID(2, UNIT_HOUR
),
1114 TALK_ID(4, UNIT_HOUR
), TALK_ID(6, UNIT_HOUR
),
1115 TALK_ID(8, UNIT_HOUR
), TALK_ID(10, UNIT_HOUR
),
1116 TALK_ID(12, UNIT_HOUR
), TALK_ID(18, UNIT_HOUR
),
1117 TALK_ID(20, UNIT_HOUR
), TALK_ID(24, UNIT_HOUR
)),
1118 STRINGCHOICE_SETTING(F_RECSETTING
, rec_sizesplit
, LANG_SPLIT_SIZE
, 0,
1120 "off,5MB,10MB,15MB,32MB,64MB,75MB,100MB,128MB,"
1121 "256MB,512MB,650MB,700MB,1GB,1.5GB,1.75GB",
1123 TALK_ID(5, UNIT_MB
), TALK_ID(10, UNIT_MB
),
1124 TALK_ID(15, UNIT_MB
), TALK_ID(32, UNIT_MB
),
1125 TALK_ID(64, UNIT_MB
), TALK_ID(75, UNIT_MB
),
1126 TALK_ID(100, UNIT_MB
), TALK_ID(128, UNIT_MB
),
1127 TALK_ID(256, UNIT_MB
), TALK_ID(512, UNIT_MB
),
1128 TALK_ID(650, UNIT_MB
), TALK_ID(700, UNIT_MB
),
1129 TALK_ID(1024, UNIT_MB
), TALK_ID(1536, UNIT_MB
),
1130 TALK_ID(1792, UNIT_MB
)),
1131 {F_T_INT
|F_RECSETTING
, &global_settings
.rec_channels
, LANG_CHANNELS
, INT(0),
1132 "rec channels","stereo,mono",UNUSED
},
1133 #if CONFIG_CODEC == SWCODEC
1134 {F_T_INT
|F_RECSETTING
, &global_settings
.rec_mono_mode
,
1135 LANG_RECORDING_MONO_MODE
, INT(0), "rec mono mode","L+R,L,R",UNUSED
},
1137 CHOICE_SETTING(F_RECSETTING
, rec_split_type
, LANG_SPLIT_TYPE
, 0,
1138 "rec split type", "Split,Stop,Shutdown", NULL
, 3,
1139 ID2P(LANG_START_NEW_FILE
), ID2P(LANG_STOP_RECORDING
),ID2P(LANG_STOP_RECORDING_AND_SHUTDOWN
)),
1140 CHOICE_SETTING(F_RECSETTING
, rec_split_method
, LANG_SPLIT_MEASURE
, 0,
1141 "rec split method", "Time,Filesize", NULL
, 2,
1142 ID2P(LANG_TIME
), ID2P(LANG_FILESIZE
)),
1143 {F_T_INT
|F_RECSETTING
, &global_settings
.rec_source
, LANG_RECORDING_SOURCE
,
1144 INT(0), "rec source",
1145 &HAVE_MIC_REC_(",mic")
1146 HAVE_LINE_REC_(",line")
1147 HAVE_SPDIF_REC_(",spdif")
1148 HAVE_FMRADIO_REC_(",fmradio")[1],
1150 INT_SETTING(F_RECSETTING
, rec_prerecord_time
, LANG_RECORD_PRERECORD_TIME
, 0,
1151 "prerecording time", UNIT_SEC
, 0, 30, 1,
1152 formatter_unit_0_is_off
, getlang_unit_0_is_off
, NULL
),
1154 TEXT_SETTING(F_RECSETTING
, rec_directory
, "rec path",
1155 REC_BASE_DIR
, NULL
, NULL
),
1156 #ifdef HAVE_BACKLIGHT
1157 CHOICE_SETTING(F_RECSETTING
, cliplight
, LANG_CLIP_LIGHT
, 0,
1158 "cliplight", "off,main,both,remote", NULL
,
1159 #ifdef HAVE_REMOTE_LCD
1160 4, ID2P(LANG_OFF
), ID2P(LANG_MAIN_UNIT
),
1161 ID2P(LANG_REMOTE_MAIN
), ID2P(LANG_REMOTE_UNIT
)
1163 2, ID2P(LANG_OFF
), ID2P(LANG_ON
)
1167 #ifdef DEFAULT_REC_MIC_GAIN
1168 {F_T_INT
|F_RECSETTING
,&global_settings
.rec_mic_gain
,
1169 LANG_GAIN
,INT(DEFAULT_REC_MIC_GAIN
),
1170 "rec mic gain",NULL
,UNUSED
},
1171 #endif /* DEFAULT_REC_MIC_GAIN */
1172 #ifdef DEFAULT_REC_LEFT_GAIN
1173 {F_T_INT
|F_RECSETTING
,&global_settings
.rec_left_gain
,
1174 LANG_GAIN_LEFT
,INT(DEFAULT_REC_LEFT_GAIN
),
1175 "rec left gain",NULL
,UNUSED
},
1176 #endif /* DEFAULT_REC_LEFT_GAIN */
1177 #ifdef DEFAULT_REC_RIGHT_GAIN
1178 {F_T_INT
|F_RECSETTING
,&global_settings
.rec_right_gain
,LANG_GAIN_RIGHT
,
1179 INT(DEFAULT_REC_RIGHT_GAIN
),
1180 "rec right gain",NULL
,UNUSED
},
1181 #endif /* DEFAULT_REC_RIGHT_GAIN */
1182 #if CONFIG_CODEC == MAS3587F
1183 {F_T_INT
|F_RECSETTING
,&global_settings
.rec_frequency
,
1184 LANG_RECORDING_FREQUENCY
, INT(0),
1185 "rec frequency","44,48,32,22,24,16", UNUSED
},
1186 INT_SETTING(F_RECSETTING
, rec_quality
, LANG_RECORDING_QUALITY
, 5,
1187 "rec quality", UNIT_INT
, 0, 7, 1, NULL
, NULL
, NULL
),
1188 OFFON_SETTING(F_RECSETTING
, rec_editable
, LANG_RECORDING_EDITABLE
, false,
1189 "editable recordings", NULL
),
1190 #endif /* CONFIG_CODEC == MAS3587F */
1191 #if CONFIG_CODEC == SWCODEC
1192 {F_T_INT
|F_RECSETTING
,&global_settings
.rec_frequency
,
1193 LANG_RECORDING_FREQUENCY
,INT(REC_FREQ_DEFAULT
),
1194 "rec frequency",REC_FREQ_CFG_VAL_LIST
,UNUSED
},
1195 {F_T_INT
|F_RECSETTING
,&global_settings
.rec_format
,
1196 LANG_RECORDING_FORMAT
,INT(REC_FORMAT_DEFAULT
),
1197 "rec format",REC_FORMAT_CFG_VAL_LIST
,UNUSED
},
1198 /** Encoder settings start - keep these together **/
1200 /* (no settings yet) */
1202 {F_T_INT
|F_RECSETTING
, &global_settings
.mp3_enc_config
.bitrate
,-1,
1203 INT(MP3_ENC_BITRATE_CFG_DEFAULT
),
1204 "mp3_enc bitrate",MP3_ENC_BITRATE_CFG_VALUE_LIST
,UNUSED
},
1206 /* (no settings yet) */
1208 /* (no settings yet) */
1209 /** Encoder settings end **/
1210 #endif /* CONFIG_CODEC == SWCODEC */
1211 /* values for the trigger */
1212 INT_SETTING(F_RECSETTING
, rec_start_thres_db
, LANG_RECORD_START_THRESHOLD
, -35,
1213 "trigger start threshold dB", UNIT_DB
, VOLUME_MIN
/10, 0, 1, NULL
, NULL
, NULL
),
1214 INT_SETTING(F_RECSETTING
, rec_start_thres_linear
, LANG_RECORD_START_THRESHOLD
, 5,
1215 "trigger start threshold linear", UNIT_PERCENT
, 0, 100, 1, NULL
, NULL
, NULL
),
1216 INT_SETTING(F_RECSETTING
, rec_stop_thres_db
, LANG_RECORD_STOP_THRESHOLD
, -45,
1217 "trigger stop threshold dB", UNIT_DB
, VOLUME_MIN
/10, 0, 1, NULL
, NULL
, NULL
),
1218 INT_SETTING(F_RECSETTING
, rec_stop_thres_linear
, LANG_RECORD_STOP_THRESHOLD
, 10,
1219 "trigger stop threshold linear", UNIT_PERCENT
, 0, 100, 1, NULL
, NULL
, NULL
),
1220 TABLE_SETTING(F_RECSETTING
, rec_start_duration
, LANG_MIN_DURATION
, 0,
1221 "trigger start duration",
1222 "0s,1s,2s,5s,10s,15s,20s,25s,30s,1min,2min,5min,10min",
1223 UNIT_SEC
, NULL
, NULL
, NULL
, 13,
1224 0,1,2,5,10,15,20,25,30,60,120,300,600),
1225 TABLE_SETTING(F_RECSETTING
, rec_stop_postrec
, LANG_MIN_DURATION
, 0,
1226 "trigger stop duration",
1227 "0s,1s,2s,5s,10s,15s,20s,25s,30s,1min,2min,5min,10min",
1228 UNIT_SEC
, NULL
, NULL
, NULL
, 13,
1229 0,1,2,5,10,15,20,25,30,60,120,300,600),
1230 TABLE_SETTING(F_RECSETTING
, rec_stop_gap
, LANG_RECORD_STOP_GAP
, 1,
1232 "0s,1s,2s,5s,10s,15s,20s,25s,30s,1min,2min,5min,10min",
1233 UNIT_SEC
, NULL
, NULL
, NULL
, 13,
1234 0,1,2,5,10,15,20,25,30,60,120,300,600),
1235 CHOICE_SETTING(F_RECSETTING
, rec_trigger_mode
, LANG_RECORD_TRIGGER
, TRIG_MODE_OFF
,
1236 "trigger mode","off,once,repeat", NULL
,3,
1237 ID2P(LANG_OFF
), ID2P(LANG_RECORD_TRIG_NOREARM
), ID2P(LANG_REPEAT
)),
1238 CHOICE_SETTING(F_RECSETTING
, rec_trigger_type
, LANG_RECORD_TRIGGER_TYPE
, TRIG_TYPE_STOP
,
1239 "trigger type","stop,pause,nf stp", NULL
,3,
1240 ID2P(LANG_RECORD_TRIGGER_STOP
), ID2P(LANG_PAUSE
), ID2P(LANG_RECORD_TRIGGER_NEWFILESTP
)),
1241 #ifdef HAVE_RECORDING_HISTOGRAM
1242 /* TO DO: additional restictions of following REP items? */
1243 TABLE_SETTING(F_RECSETTING
, rec_histogram_interval
, LANG_RECORDING_HISTOGRAM_INTERVAL
, 0,
1244 "histogram interval","0s,1s,2s,4s",
1245 UNIT_SEC
, NULL
, NULL
, NULL
, 4, 0,1,2,4),
1246 #endif /* HAVE_RECORDING_HISTOGRAM */
1248 #endif /* HAVE_RECORDING */
1250 #ifdef HAVE_SPDIF_POWER
1251 OFFON_SETTING(F_SOUNDSETTING
, spdif_enable
, LANG_SPDIF_ENABLE
, false,
1252 "spdif enable", spdif_power_enable
),
1254 CHOICE_SETTING(0, next_folder
, LANG_NEXT_FOLDER
, FOLDER_ADVANCE_OFF
,
1255 "folder navigation", "off,on,random",NULL
,3,
1256 ID2P(LANG_SET_BOOL_NO
), ID2P(LANG_SET_BOOL_YES
),
1259 #ifdef HAVE_TAGCACHE
1260 #if CONFIG_CODEC == SWCODEC
1261 BOOL_SETTING(0, autoresume_enable
, LANG_AUTORESUME_ENABLE
, false,
1262 "autoresume enable", off_on
,
1263 LANG_AUTORESUME_ENABLE_YES
, LANG_SET_BOOL_NO
, NULL
),
1266 OFFON_SETTING(0, runtimedb
, LANG_RUNTIMEDB_ACTIVE
, false,
1267 "gather runtime data", NULL
),
1270 #if CONFIG_CODEC == SWCODEC
1272 CHOICE_SETTING(F_SOUNDSETTING
, replaygain_type
, LANG_REPLAYGAIN_MODE
,
1273 REPLAYGAIN_SHUFFLE
, "replaygain type",
1274 "track,album,track shuffle,off", NULL
, 4, ID2P(LANG_TRACK_GAIN
),
1275 ID2P(LANG_ALBUM_GAIN
), ID2P(LANG_SHUFFLE_GAIN
), ID2P(LANG_OFF
)),
1276 OFFON_SETTING(F_SOUNDSETTING
, replaygain_noclip
, LANG_REPLAYGAIN_NOCLIP
,
1277 false, "replaygain noclip", NULL
),
1278 INT_SETTING_NOWRAP(F_SOUNDSETTING
, replaygain_preamp
,
1279 LANG_REPLAYGAIN_PREAMP
, 0, "replaygain preamp",
1280 UNIT_DB
, -120, 120, 5, db_format
, get_dec_talkid
, NULL
),
1282 CHOICE_SETTING(0, beep
, LANG_BEEP
, 0, "beep", "off,weak,moderate,strong",
1283 NULL
, 4, ID2P(LANG_OFF
), ID2P(LANG_WEAK
),
1284 ID2P(LANG_MODERATE
), ID2P(LANG_STRONG
)),
1286 #ifdef HAVE_CROSSFADE
1288 CHOICE_SETTING(F_SOUNDSETTING
, crossfade
, LANG_CROSSFADE_ENABLE
, 0,
1290 "off,auto track change,man track skip,shuffle,shuffle or man track skip,always",
1291 NULL
, 6, ID2P(LANG_OFF
), ID2P(LANG_AUTOTRACKSKIP
),
1292 ID2P(LANG_MANTRACKSKIP
), ID2P(LANG_SHUFFLE
),
1293 ID2P(LANG_SHUFFLE_TRACKSKIP
), ID2P(LANG_ALWAYS
)),
1294 INT_SETTING(F_SOUNDSETTING
, crossfade_fade_in_delay
,
1295 LANG_CROSSFADE_FADE_IN_DELAY
, 0,
1296 "crossfade fade in delay", UNIT_SEC
, 0, 7, 1, NULL
, NULL
, NULL
),
1297 INT_SETTING(F_SOUNDSETTING
, crossfade_fade_out_delay
,
1298 LANG_CROSSFADE_FADE_OUT_DELAY
, 0,
1299 "crossfade fade out delay", UNIT_SEC
, 0, 7, 1, NULL
, NULL
,NULL
),
1300 INT_SETTING(F_SOUNDSETTING
, crossfade_fade_in_duration
,
1301 LANG_CROSSFADE_FADE_IN_DURATION
, 2,
1302 "crossfade fade in duration", UNIT_SEC
, 0, 15, 1, NULL
, NULL
,
1304 INT_SETTING(F_SOUNDSETTING
, crossfade_fade_out_duration
,
1305 LANG_CROSSFADE_FADE_OUT_DURATION
, 2,
1306 "crossfade fade out duration", UNIT_SEC
, 0, 15, 1, NULL
, NULL
,
1308 CHOICE_SETTING(F_SOUNDSETTING
, crossfade_fade_out_mixmode
,
1309 LANG_CROSSFADE_FADE_OUT_MODE
, 0,
1310 "crossfade fade out mode", "crossfade,mix", NULL
, 2,
1311 ID2P(LANG_CROSSFADE
), ID2P(LANG_MIX
)),
1315 OFFON_SETTING(F_SOUNDSETTING
, crossfeed
, LANG_CROSSFEED
, false,
1316 "crossfeed", dsp_set_crossfeed
),
1317 INT_SETTING_NOWRAP(F_SOUNDSETTING
, crossfeed_direct_gain
,
1318 LANG_CROSSFEED_DIRECT_GAIN
, -15,
1319 "crossfeed direct gain", UNIT_DB
, -60, 0, 5,
1320 db_format
, get_dec_talkid
,dsp_set_crossfeed_direct_gain
),
1321 INT_SETTING_NOWRAP(F_SOUNDSETTING
, crossfeed_cross_gain
,
1322 LANG_CROSSFEED_CROSS_GAIN
, -60,
1323 "crossfeed cross gain", UNIT_DB
, -120, -30, 5,
1324 db_format
, get_dec_talkid
, crossfeed_cross_set
),
1325 INT_SETTING_NOWRAP(F_SOUNDSETTING
, crossfeed_hf_attenuation
,
1326 LANG_CROSSFEED_HF_ATTENUATION
, -160,
1327 "crossfeed hf attenuation", UNIT_DB
, -240, -60, 5,
1328 db_format
, get_dec_talkid
, crossfeed_cross_set
),
1329 INT_SETTING_NOWRAP(F_SOUNDSETTING
, crossfeed_hf_cutoff
,
1330 LANG_CROSSFEED_HF_CUTOFF
, 700,
1331 "crossfeed hf cutoff", UNIT_HERTZ
, 500, 2000, 100,
1332 NULL
, NULL
, crossfeed_cross_set
),
1335 OFFON_SETTING(F_EQSETTING
, eq_enabled
, LANG_EQUALIZER_ENABLED
, false,
1336 "eq enabled", NULL
),
1337 INT_SETTING_NOWRAP(F_EQSETTING
, eq_precut
, LANG_EQUALIZER_PRECUT
, 0,
1338 "eq precut", UNIT_DB
, 0, 240, 5, eq_precut_format
,
1339 get_precut_talkid
, dsp_set_eq_precut
),
1341 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band0_cutoff
, LANG_EQUALIZER_BAND_CUTOFF
,
1342 60, "eq band 0 cutoff", UNIT_HERTZ
, EQ_CUTOFF_MIN
,
1343 EQ_CUTOFF_MAX
, EQ_CUTOFF_STEP
, NULL
, NULL
, NULL
),
1344 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band1_cutoff
, LANG_EQUALIZER_BAND_CENTER
,
1345 200, "eq band 1 cutoff", UNIT_HERTZ
, EQ_CUTOFF_MIN
,
1346 EQ_CUTOFF_MAX
, EQ_CUTOFF_STEP
, NULL
, NULL
, NULL
),
1347 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band2_cutoff
, LANG_EQUALIZER_BAND_CENTER
,
1348 800, "eq band 2 cutoff", UNIT_HERTZ
, EQ_CUTOFF_MIN
,
1349 EQ_CUTOFF_MAX
, EQ_CUTOFF_STEP
, NULL
, NULL
, NULL
),
1350 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band3_cutoff
, LANG_EQUALIZER_BAND_CENTER
,
1351 4000, "eq band 3 cutoff", UNIT_HERTZ
, EQ_CUTOFF_MIN
,
1352 EQ_CUTOFF_MAX
, EQ_CUTOFF_STEP
, NULL
, NULL
, NULL
),
1353 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band4_cutoff
, LANG_EQUALIZER_BAND_CUTOFF
,
1354 12000, "eq band 4 cutoff", UNIT_HERTZ
, EQ_CUTOFF_MIN
,
1355 EQ_CUTOFF_MAX
, EQ_CUTOFF_STEP
, NULL
, NULL
, NULL
),
1356 /* 0..64 (or 0.0 to 6.4) */
1357 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band0_q
, LANG_EQUALIZER_BAND_Q
, 7,
1358 "eq band 0 q", UNIT_INT
, EQ_Q_MIN
, EQ_Q_MAX
, EQ_Q_STEP
,
1359 eq_q_format
, get_dec_talkid
, NULL
),
1360 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band1_q
, LANG_EQUALIZER_BAND_Q
, 10,
1361 "eq band 1 q", UNIT_INT
, EQ_Q_MIN
, EQ_Q_MAX
, EQ_Q_STEP
,
1362 eq_q_format
, get_dec_talkid
, NULL
),
1363 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band2_q
, LANG_EQUALIZER_BAND_Q
, 10,
1364 "eq band 2 q", UNIT_INT
, EQ_Q_MIN
, EQ_Q_MAX
, EQ_Q_STEP
,
1365 eq_q_format
, get_dec_talkid
, NULL
),
1366 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band3_q
, LANG_EQUALIZER_BAND_Q
, 10,
1367 "eq band 3 q", UNIT_INT
, EQ_Q_MIN
, EQ_Q_MAX
, EQ_Q_STEP
,
1368 eq_q_format
, get_dec_talkid
, NULL
),
1369 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band4_q
, LANG_EQUALIZER_BAND_Q
, 7,
1370 "eq band 4 q", UNIT_INT
, EQ_Q_MIN
, EQ_Q_MAX
, EQ_Q_STEP
,
1371 eq_q_format
, get_dec_talkid
, NULL
),
1372 /* -240..240 (or -24db to +24db) */
1373 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band0_gain
, LANG_GAIN
, 0,
1374 "eq band 0 gain", UNIT_DB
, EQ_GAIN_MIN
, EQ_GAIN_MAX
,
1375 EQ_GAIN_STEP
, db_format
, get_dec_talkid
, NULL
),
1376 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band1_gain
, LANG_GAIN
, 0,
1377 "eq band 1 gain", UNIT_DB
, EQ_GAIN_MIN
, EQ_GAIN_MAX
,
1378 EQ_GAIN_STEP
, db_format
, get_dec_talkid
, NULL
),
1379 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band2_gain
, LANG_GAIN
, 0,
1380 "eq band 2 gain", UNIT_DB
, EQ_GAIN_MIN
, EQ_GAIN_MAX
,
1381 EQ_GAIN_STEP
, db_format
, get_dec_talkid
, NULL
),
1382 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band3_gain
, LANG_GAIN
, 0,
1383 "eq band 3 gain", UNIT_DB
, EQ_GAIN_MIN
, EQ_GAIN_MAX
,
1384 EQ_GAIN_STEP
, db_format
, get_dec_talkid
, NULL
),
1385 INT_SETTING_NOWRAP(F_EQSETTING
, eq_band4_gain
, LANG_GAIN
, 0,
1386 "eq band 4 gain", UNIT_DB
, EQ_GAIN_MIN
, EQ_GAIN_MAX
,
1387 EQ_GAIN_STEP
, db_format
, get_dec_talkid
, NULL
),
1390 OFFON_SETTING(F_SOUNDSETTING
, dithering_enabled
, LANG_DITHERING
, false,
1391 "dithering enabled", dsp_dither_enable
),
1393 #ifdef HAVE_PITCHSCREEN
1395 OFFON_SETTING(F_SOUNDSETTING
, timestretch_enabled
, LANG_TIMESTRETCH
, false,
1396 "timestretch enabled", dsp_timestretch_enable
),
1400 INT_SETTING_NOWRAP(F_SOUNDSETTING
, compressor_threshold
,
1401 LANG_COMPRESSOR_THRESHOLD
, 0,
1402 "compressor threshold", UNIT_DB
, 0, -24,
1403 -3, formatter_unit_0_is_off
, getlang_unit_0_is_off
, compressor_set
),
1404 CHOICE_SETTING(F_SOUNDSETTING
|F_NO_WRAP
, compressor_makeup_gain
,
1405 LANG_COMPRESSOR_GAIN
, 1, "compressor makeup gain",
1406 "off,auto", compressor_set
, 2,
1407 ID2P(LANG_OFF
), ID2P(LANG_AUTO
)),
1408 CHOICE_SETTING(F_SOUNDSETTING
|F_NO_WRAP
, compressor_ratio
,
1409 LANG_COMPRESSOR_RATIO
, 1, "compressor ratio",
1410 "2:1,4:1,6:1,10:1,limit", compressor_set
, 5,
1411 ID2P(LANG_COMPRESSOR_RATIO_2
), ID2P(LANG_COMPRESSOR_RATIO_4
),
1412 ID2P(LANG_COMPRESSOR_RATIO_6
), ID2P(LANG_COMPRESSOR_RATIO_10
),
1413 ID2P(LANG_COMPRESSOR_RATIO_LIMIT
)),
1414 CHOICE_SETTING(F_SOUNDSETTING
|F_NO_WRAP
, compressor_knee
,
1415 LANG_COMPRESSOR_KNEE
, 1, "compressor knee",
1416 "hard knee,soft knee", compressor_set
, 2,
1417 ID2P(LANG_COMPRESSOR_HARD_KNEE
), ID2P(LANG_COMPRESSOR_SOFT_KNEE
)),
1418 INT_SETTING_NOWRAP(F_SOUNDSETTING
, compressor_release_time
,
1419 LANG_COMPRESSOR_RELEASE
, 500,
1420 "compressor release time", UNIT_MS
, 100, 1000,
1421 100, NULL
, NULL
, compressor_set
),
1423 #ifdef AUDIOHW_HAVE_BASS_CUTOFF
1424 SOUND_SETTING(F_NO_WRAP
, bass_cutoff
, LANG_BASS_CUTOFF
,
1425 "bass cutoff", SOUND_BASS_CUTOFF
),
1427 #ifdef AUDIOHW_HAVE_TREBLE_CUTOFF
1428 SOUND_SETTING(F_NO_WRAP
, treble_cutoff
, LANG_TREBLE_CUTOFF
,
1429 "treble cutoff", SOUND_TREBLE_CUTOFF
),
1431 #ifdef HAVE_DIRCACHE
1432 /*enable dircache for all targets > 2MB of RAM by default*/
1433 OFFON_SETTING(F_BANFROMQS
,dircache
,LANG_DIRCACHE_ENABLE
,true,"dircache",NULL
),
1434 SYSTEM_SETTING(NVRAM(4),dircache_size
,0),
1437 #ifdef HAVE_TAGCACHE
1438 #ifdef HAVE_TC_RAMCACHE
1439 OFFON_SETTING(F_BANFROMQS
,tagcache_ram
,LANG_TAGCACHE_RAM
,false,"tagcache_ram",NULL
),
1441 OFFON_SETTING(F_BANFROMQS
, tagcache_autoupdate
, LANG_TAGCACHE_AUTOUPDATE
, false,
1442 "tagcache_autoupdate", NULL
),
1444 CHOICE_SETTING(0, default_codepage
, LANG_DEFAULT_CODEPAGE
, 0,
1446 #ifdef HAVE_LCD_BITMAP
1447 /* The order must match with that in unicode.c */
1448 "iso8859-1,iso8859-7,iso8859-8,cp1251,iso8859-11,cp1256,"
1449 "iso8859-9,iso8859-2,cp1250,sjis,gb2312,ksx1001,big5,utf-8",
1451 ID2P(LANG_CODEPAGE_LATIN1
), ID2P(LANG_CODEPAGE_GREEK
),
1452 ID2P(LANG_CODEPAGE_HEBREW
), ID2P(LANG_CODEPAGE_CYRILLIC
),
1453 ID2P(LANG_CODEPAGE_THAI
), ID2P(LANG_CODEPAGE_ARABIC
),
1454 ID2P(LANG_CODEPAGE_TURKISH
),
1455 ID2P(LANG_CODEPAGE_LATIN_EXTENDED
),
1456 ID2P(LANG_CODEPAGE_CENTRAL_EUROPEAN
),
1457 ID2P(LANG_CODEPAGE_JAPANESE
),
1458 ID2P(LANG_CODEPAGE_SIMPLIFIED
), ID2P(LANG_CODEPAGE_KOREAN
),
1459 ID2P(LANG_CODEPAGE_TRADITIONAL
), ID2P(LANG_CODEPAGE_UTF8
)),
1460 #else /* !HAVE_LCD_BITMAP */
1461 /* The order must match with that in unicode.c */
1462 "iso8859-1,iso8859-7,cp1251,iso8859-9,iso8859-2,cp1250,utf-8",
1464 ID2P(LANG_CODEPAGE_LATIN1
), ID2P(LANG_CODEPAGE_GREEK
),
1465 ID2P(LANG_CODEPAGE_CYRILLIC
), ID2P(LANG_CODEPAGE_TURKISH
),
1466 ID2P(LANG_CODEPAGE_LATIN_EXTENDED
),
1467 ID2P(LANG_CODEPAGE_CENTRAL_EUROPEAN
),
1468 ID2P(LANG_CODEPAGE_UTF8
)),
1470 OFFON_SETTING(0, warnon_erase_dynplaylist
, LANG_WARN_ERASEDYNPLAYLIST_MENU
,
1471 true, "warn when erasing dynamic playlist",NULL
),
1473 #ifdef HAVE_BACKLIGHT
1474 #ifdef HAS_BUTTON_HOLD
1475 CHOICE_SETTING(0, backlight_on_button_hold
, LANG_BACKLIGHT_ON_BUTTON_HOLD
,
1476 1, "backlight on button hold", "normal,off,on",
1477 backlight_set_on_button_hold
, 3,
1478 ID2P(LANG_NORMAL
), ID2P(LANG_OFF
), ID2P(LANG_ON
)),
1481 #ifdef HAVE_LCD_SLEEP_SETTING
1482 STRINGCHOICE_SETTING(0, lcd_sleep_after_backlight_off
,
1483 LANG_LCD_SLEEP_AFTER_BACKLIGHT_OFF
, 3,
1484 "lcd sleep after backlight off",
1485 "always,never,5,10,15,20,30,45,60,90",
1486 lcd_set_sleep_after_backlight_off
, 10,
1487 LANG_ALWAYS
, LANG_NEVER
, TALK_ID(5, UNIT_SEC
),
1488 TALK_ID(10, UNIT_SEC
), TALK_ID(15, UNIT_SEC
),
1489 TALK_ID(20, UNIT_SEC
), TALK_ID(30, UNIT_SEC
),
1490 TALK_ID(45, UNIT_SEC
),TALK_ID(60, UNIT_SEC
),
1491 TALK_ID(90, UNIT_SEC
)),
1492 #endif /* HAVE_LCD_SLEEP_SETTING */
1493 #endif /* HAVE_BACKLIGHT */
1495 OFFON_SETTING(0, hold_lr_for_scroll_in_list
, -1, true,
1496 "hold_lr_for_scroll_in_list",NULL
),
1497 #ifdef HAVE_LCD_BITMAP
1498 CHOICE_SETTING(0, show_path_in_browser
, LANG_SHOW_PATH
, SHOW_PATH_CURRENT
,
1499 "show path in browser", "off,current directory,full path",
1500 NULL
, 3, ID2P(LANG_OFF
), ID2P(LANG_SHOW_PATH_CURRENT
),
1501 ID2P(LANG_DISPLAY_FULL_PATH
)),
1505 {F_T_INT
,&global_settings
.rec_agc_preset_mic
,LANG_RECORDING_AGC_PRESET
,
1506 INT(1),"agc mic preset",NULL
,UNUSED
},
1507 {F_T_INT
,&global_settings
.rec_agc_preset_line
,LANG_RECORDING_AGC_PRESET
,
1508 INT(1),"agc line preset",NULL
,UNUSED
},
1509 {F_T_INT
,&global_settings
.rec_agc_maxgain_mic
,-1,INT(104),
1510 "agc maximum mic gain",NULL
,UNUSED
},
1511 {F_T_INT
,&global_settings
.rec_agc_maxgain_line
,-1,INT(96),
1512 "agc maximum line gain",NULL
,UNUSED
},
1513 {F_T_INT
,&global_settings
.rec_agc_cliptime
,LANG_RECORDING_AGC_CLIPTIME
,
1514 INT(1),"agc cliptime","0.2s,0.4s,0.6s,0.8,1s",UNUSED
},
1517 #ifdef HAVE_REMOTE_LCD
1518 #ifdef HAS_REMOTE_BUTTON_HOLD
1519 CHOICE_SETTING(0, remote_backlight_on_button_hold
,
1520 LANG_BACKLIGHT_ON_BUTTON_HOLD
, 0,
1521 "remote backlight on button hold",
1522 "normal,off,on", remote_backlight_set_on_button_hold
, 3,
1523 ID2P(LANG_NORMAL
), ID2P(LANG_OFF
), ID2P(LANG_ON
)),
1526 #ifdef HAVE_HEADPHONE_DETECTION
1527 CHOICE_SETTING(0, unplug_mode
, LANG_HEADPHONE_UNPLUG
, 0,
1528 "pause on headphone unplug", "off,pause,pause and resume",
1529 NULL
, 3, ID2P(LANG_OFF
), ID2P(LANG_PAUSE
),
1530 ID2P(LANG_HEADPHONE_UNPLUG_RESUME
)),
1531 INT_SETTING(0, unplug_rw
, LANG_HEADPHONE_UNPLUG_RW
, 0,
1532 "rewind duration on pause", UNIT_SEC
, 0, 15, 1, NULL
, NULL
,
1534 OFFON_SETTING(0, unplug_autoresume
,
1535 LANG_HEADPHONE_UNPLUG_DISABLE_AUTORESUME
, false,
1536 "disable autoresume if phones not present",NULL
),
1539 CHOICE_SETTING(0, fm_region
, LANG_FM_REGION
, 0,
1540 "fm_region", "eu,us,jp,kr,it,wo", set_radio_region
, 6,
1541 ID2P(LANG_FM_EUROPE
), ID2P(LANG_FM_US
),
1542 ID2P(LANG_FM_JAPAN
), ID2P(LANG_FM_KOREA
),
1543 ID2P(LANG_FM_ITALY
), ID2P(LANG_FM_OTHER
)),
1546 OFFON_SETTING(F_BANFROMQS
, audioscrobbler
, LANG_AUDIOSCROBBLER
, false,
1547 "Last.fm Logging", NULL
),
1549 TEXT_SETTING(0, fmr_file
, "fmr", "-",
1550 FMPRESET_PATH
"/", ".fmr"),
1551 TEXT_SETTING(F_THEMESETTING
,fms_file
, "fms",
1552 DEFAULT_FMS_NAME
, SBS_DIR
"/", ".fms"),
1553 #ifdef HAVE_REMOTE_LCD
1554 TEXT_SETTING(F_THEMESETTING
,rfms_file
, "rfms",
1555 DEFAULT_FMS_NAME
, SBS_DIR
"/", ".rfms"),
1557 #endif /* CONFIG_TUNER */
1558 #ifdef HAVE_LCD_BITMAP
1559 TEXT_SETTING(F_THEMESETTING
, font_file
, "font",
1560 DEFAULT_FONTNAME
, FONT_DIR
"/", ".fnt"),
1562 #ifdef HAVE_REMOTE_LCD
1563 TEXT_SETTING(F_THEMESETTING
, remote_font_file
, "remote font",
1564 DEFAULT_REMOTE_FONTNAME
, FONT_DIR
"/", ".fnt"),
1566 TEXT_SETTING(F_THEMESETTING
,wps_file
, "wps",
1567 DEFAULT_WPSNAME
, WPS_DIR
"/", ".wps"),
1568 #ifdef HAVE_LCD_BITMAP
1569 TEXT_SETTING(F_THEMESETTING
,sbs_file
, "sbs",
1570 DEFAULT_SBSNAME
, SBS_DIR
"/", ".sbs"),
1572 #ifdef HAVE_REMOTE_LCD
1573 TEXT_SETTING(F_THEMESETTING
,rwps_file
,"rwps",
1574 DEFAULT_WPSNAME
, WPS_DIR
"/", ".rwps"),
1575 TEXT_SETTING(F_THEMESETTING
,rsbs_file
, "rsbs",
1576 DEFAULT_SBSNAME
, SBS_DIR
"/", ".rsbs"),
1578 TEXT_SETTING(0,lang_file
,"lang","",LANG_DIR
"/",".lng"),
1580 TEXT_SETTING(F_THEMESETTING
,backdrop_file
,"backdrop",
1581 DEFAULT_BACKDROP
, BACKDROP_DIR
"/", ".bmp"),
1583 #ifdef HAVE_LCD_BITMAP
1584 TEXT_SETTING(0,kbd_file
,"kbd","-",ROCKBOX_DIR
"/",".kbd"),
1586 #ifdef HAVE_USB_CHARGING_ENABLE
1587 CHOICE_SETTING(0, usb_charging
, LANG_USB_CHARGING
, 1, "usb charging",
1588 "off,on,force", NULL
, 3, ID2P(LANG_SET_BOOL_NO
),
1589 ID2P(LANG_SET_BOOL_YES
), ID2P(LANG_FORCE
)),
1591 OFFON_SETTING(F_BANFROMQS
,cuesheet
,LANG_CUESHEET_ENABLE
,false,"cuesheet support",
1593 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, skip_length
,
1594 LANG_SKIP_LENGTH
, 0, "skip length",
1595 "outro,track,1s,2s,3s,5s,7s,10s,15s,20s,30s,45s,1min,90s,2min,3min,5min,10min,15min",
1596 UNIT_SEC
, formatter_unit_0_is_skip_track
,
1597 getlang_unit_0_is_skip_track
, NULL
,
1598 19, -1,0,1,2,3,5,7,10,15,20,30,45,60,90,120,180,300,600,900),
1599 CHOICE_SETTING(0, start_in_screen
, LANG_START_SCREEN
, 1,
1600 "start in screen", "previous,root,files,"
1601 #ifdef HAVE_TAGCACHE
1602 #define START_DB_COUNT 1
1605 #define START_DB_COUNT 0
1608 #ifdef HAVE_RECORDING
1609 #define START_REC_COUNT 1
1612 #define START_REC_COUNT 0
1615 #define START_TUNER_COUNT 1
1618 #define START_TUNER_COUNT 0
1621 #ifdef HAVE_PICTUREFLOW_INTEGRATION
1622 #define START_PF_COUNT 1
1625 #define START_PF_COUNT 0
1628 (6 + START_DB_COUNT
+ START_REC_COUNT
+ START_TUNER_COUNT
+ START_PF_COUNT
),
1629 ID2P(LANG_PREVIOUS_SCREEN
), ID2P(LANG_MAIN_MENU
),
1630 ID2P(LANG_DIR_BROWSER
),
1631 #ifdef HAVE_TAGCACHE
1632 ID2P(LANG_TAGCACHE
),
1634 ID2P(LANG_RESUME_PLAYBACK
), ID2P(LANG_SETTINGS
),
1635 #ifdef HAVE_RECORDING
1636 ID2P(LANG_RECORDING
),
1639 ID2P(LANG_FM_RADIO
),
1641 ID2P(LANG_BOOKMARK_MENU_RECENT_BOOKMARKS
)
1642 #ifdef HAVE_PICTUREFLOW_INTEGRATION
1643 ,ID2P(LANG_ONPLAY_PICTUREFLOW
)
1646 SYSTEM_SETTING(NVRAM(1),last_screen
,-1),
1647 #if defined(HAVE_RTC_ALARM) && \
1648 (defined(HAVE_RECORDING) || CONFIG_TUNER)
1649 {F_T_INT
, &global_settings
.alarm_wake_up_screen
, LANG_ALARM_WAKEUP_SCREEN
,
1650 INT(ALARM_START_WPS
), "alarm wakeup screen", ALARM_SETTING_TEXT
,UNUSED
},
1651 #endif /* HAVE_RTC_ALARM */
1653 /* Customizable icons */
1654 #ifdef HAVE_LCD_BITMAP
1655 TEXT_SETTING(F_THEMESETTING
, icon_file
, "iconset", DEFAULT_ICONSET
,
1656 ICON_DIR
"/", ".bmp"),
1657 TEXT_SETTING(F_THEMESETTING
, viewers_icon_file
, "viewers iconset",
1658 DEFAULT_VIEWERS_ICONSET
,
1659 ICON_DIR
"/", ".bmp"),
1661 #ifdef HAVE_REMOTE_LCD
1662 TEXT_SETTING(F_THEMESETTING
, remote_icon_file
, "remote iconset", "-",
1663 ICON_DIR
"/", ".bmp"),
1664 TEXT_SETTING(F_THEMESETTING
, remote_viewers_icon_file
,
1665 "remote viewers iconset", "-",
1666 ICON_DIR
"/", ".bmp"),
1667 #endif /* HAVE_REMOTE_LCD */
1668 #ifdef HAVE_LCD_COLOR
1669 TEXT_SETTING(F_THEMESETTING
, colors_file
, "filetype colours", "-",
1670 THEME_DIR
"/", ".colours"),
1672 #ifdef HAVE_BUTTON_LIGHT
1673 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, buttonlight_timeout
,
1674 LANG_BUTTONLIGHT_TIMEOUT
, 5, "button light timeout", off_on
,
1675 UNIT_SEC
, backlight_formatter
, backlight_getlang
,
1676 buttonlight_set_timeout
, 20,
1677 -1,0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,120),
1679 #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS
1680 INT_SETTING(F_NO_WRAP
, buttonlight_brightness
, LANG_BUTTONLIGHT_BRIGHTNESS
,
1681 DEFAULT_BRIGHTNESS_SETTING
,
1682 "button light brightness",UNIT_INT
, MIN_BRIGHTNESS_SETTING
,
1683 MAX_BRIGHTNESS_SETTING
, 1, NULL
, NULL
,
1684 buttonlight_set_brightness
),
1686 #ifndef HAVE_WHEEL_ACCELERATION
1687 INT_SETTING(0, list_accel_start_delay
, LANG_LISTACCEL_START_DELAY
,
1688 2, "list_accel_start_delay", UNIT_MS
, 0, 10, 1,
1689 formatter_unit_0_is_off
, getlang_unit_0_is_off
, NULL
),
1690 INT_SETTING(0, list_accel_wait
, LANG_LISTACCEL_ACCEL_SPEED
,
1691 3, "list_accel_wait", UNIT_SEC
, 1, 10, 1,
1692 scanaccel_formatter
, getlang_unit_0_is_off
, NULL
),
1693 #endif /* HAVE_WHEEL_ACCELERATION */
1694 #if CONFIG_CODEC == SWCODEC
1696 CHOICE_SETTING(0, keyclick
, LANG_KEYCLICK
, 0,
1697 "keyclick", "off,weak,moderate,strong", NULL
, 4,
1698 ID2P(LANG_OFF
), ID2P(LANG_WEAK
), ID2P(LANG_MODERATE
),
1700 OFFON_SETTING(0, keyclick_repeats
, LANG_KEYCLICK_REPEATS
, false,
1701 "keyclick repeats", NULL
),
1702 #endif /* CONFIG_CODEC == SWCODEC */
1703 TEXT_SETTING(0, playlist_catalog_dir
, "playlist catalog directory",
1704 PLAYLIST_CATALOG_DEFAULT_DIR
, NULL
, NULL
),
1705 #ifdef HAVE_TOUCHPAD_SENSITIVITY_SETTING
1706 CHOICE_SETTING(0, touchpad_sensitivity
, LANG_TOUCHPAD_SENSITIVITY
, 0,
1707 "touchpad sensitivity", "normal,high", touchpad_set_sensitivity
, 2,
1708 ID2P(LANG_NORMAL
), ID2P(LANG_HIGH
)),
1710 #ifdef HAVE_QUICKSCREEN
1711 CUSTOM_SETTING(0, qs_items
[QUICKSCREEN_TOP
], LANG_TOP_QS_ITEM
,
1712 &global_settings
.dirfilter
, "qs top",
1713 qs_load_from_cfg
, qs_write_to_cfg
,
1714 qs_is_changed
, qs_set_default
),
1715 CUSTOM_SETTING(0, qs_items
[QUICKSCREEN_LEFT
], LANG_LEFT_QS_ITEM
,
1716 &global_settings
.playlist_shuffle
, "qs left",
1717 qs_load_from_cfg
, qs_write_to_cfg
,
1718 qs_is_changed
, qs_set_default
),
1719 CUSTOM_SETTING(0, qs_items
[QUICKSCREEN_RIGHT
], LANG_RIGHT_QS_ITEM
,
1720 &global_settings
.repeat_mode
, "qs right",
1721 qs_load_from_cfg
, qs_write_to_cfg
,
1722 qs_is_changed
, qs_set_default
),
1723 CUSTOM_SETTING(0, qs_items
[QUICKSCREEN_BOTTOM
], LANG_BOTTOM_QS_ITEM
,
1724 &global_settings
.dirfilter
, "qs bottom",
1725 qs_load_from_cfg
, qs_write_to_cfg
,
1726 qs_is_changed
, qs_set_default
),
1729 OFFON_SETTING(0, speaker_enabled
, LANG_ENABLE_SPEAKER
, false, "speaker",
1730 audiohw_enable_speaker
),
1732 #ifdef HAVE_TOUCHSCREEN
1733 CHOICE_SETTING(0, touch_mode
, LANG_TOUCHSCREEN_MODE
, DEFAULT_TOUCHSCREEN_MODE
,
1734 "touchscreen mode", "point,grid", NULL
, 2,
1735 ID2P(LANG_TOUCHSCREEN_POINT
), ID2P(LANG_TOUCHSCREEN_GRID
)),
1736 CUSTOM_SETTING(0, ts_calibration_data
, -1,
1737 &default_calibration_parameters
, "touchscreen calibration",
1738 tsc_load_from_cfg
, tsc_write_to_cfg
,
1739 tsc_is_changed
, tsc_set_default
),
1741 OFFON_SETTING(0, prevent_skip
, LANG_PREVENT_SKIPPING
, false, "prevent track skip", NULL
),
1743 #ifdef HAVE_PITCHSCREEN
1744 OFFON_SETTING(0, pitch_mode_semitone
, LANG_SEMITONE
, false,
1745 "Semitone pitch change", NULL
),
1746 #if CONFIG_CODEC == SWCODEC
1747 OFFON_SETTING(0, pitch_mode_timestretch
, LANG_TIMESTRETCH
, false,
1748 "Timestretch mode", NULL
),
1752 #ifdef USB_ENABLE_HID
1753 OFFON_SETTING(0, usb_hid
, LANG_USB_HID
, true, "usb hid", usb_set_hid
),
1754 CHOICE_SETTING(0, usb_keypad_mode
, LANG_USB_KEYPAD_MODE
, 0,
1755 "usb keypad mode", "multimedia,presentation,browser"
1756 #ifdef HAVE_USB_HID_MOUSE
1760 #ifdef HAVE_USB_HID_MOUSE
1765 ID2P(LANG_MULTIMEDIA_MODE
), ID2P(LANG_PRESENTATION_MODE
),
1766 ID2P(LANG_BROWSER_MODE
)
1767 #ifdef HAVE_USB_HID_MOUSE
1768 , ID2P(LANG_MOUSE_MODE
)
1770 ), /* CHOICE_SETTING( usb_keypad_mode ) */
1773 /* Customizable list */
1774 #ifdef HAVE_LCD_BITMAP
1775 VIEWPORT_SETTING(ui_vp_config
, "ui viewport"),
1776 #ifdef HAVE_REMOTE_LCD
1777 VIEWPORT_SETTING(remote_ui_vp_config
, "remote ui viewport"),
1781 #ifdef HAVE_MORSE_INPUT
1782 OFFON_SETTING(0, morse_input
, LANG_MORSE_INPUT
, false, "morse input", NULL
),
1786 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, hotkey_wps
,
1787 LANG_HOTKEY_WPS
, HOTKEY_VIEW_PLAYLIST
, "hotkey wps",
1788 "off,view playlist,show track info,pitchscreen,open with,delete"
1789 #ifdef HAVE_PICTUREFLOW_INTEGRATION
1792 ,UNIT_INT
, hotkey_formatter
, hotkey_getlang
, NULL
,
1793 #ifdef HAVE_PICTUREFLOW_INTEGRATION
1799 HOTKEY_VIEW_PLAYLIST
, HOTKEY_SHOW_TRACK_INFO
, HOTKEY_PITCHSCREEN
,
1800 HOTKEY_OPEN_WITH
, HOTKEY_DELETE
1801 #ifdef HAVE_PICTUREFLOW_INTEGRATION
1802 , HOTKEY_PICTUREFLOW
1805 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS
, hotkey_tree
,
1806 LANG_HOTKEY_FILE_BROWSER
, HOTKEY_OFF
, "hotkey tree",
1807 "off,open with,delete,insert,insert shuffled",
1808 UNIT_INT
, hotkey_formatter
, hotkey_getlang
, NULL
, 5, HOTKEY_OFF
,
1809 HOTKEY_OPEN_WITH
, HOTKEY_DELETE
, HOTKEY_INSERT
, HOTKEY_INSERT_SHUFFLED
),
1812 #if CONFIG_CODEC == SWCODEC
1813 INT_SETTING(0, resume_rewind
, LANG_RESUME_REWIND
, 0,
1814 "resume rewind", UNIT_SEC
, 0, 60, 5,
1819 const int nb_settings
= sizeof(settings
)/sizeof(*settings
);
1821 const struct settings_list
* get_settings_list(int*count
)
1823 *count
= nb_settings
;