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