diff options
Diffstat (limited to 'apps/settings_list.c')
-rw-r--r-- | apps/settings_list.c | 608 |
1 files changed, 608 insertions, 0 deletions
diff --git a/apps/settings_list.c b/apps/settings_list.c new file mode 100644 index 0000000000..313524ba81 --- /dev/null +++ b/apps/settings_list.c | |||
@@ -0,0 +1,608 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id: $ | ||
9 | * | ||
10 | * Copyright (C) 2007 Jonathan Gordon | ||
11 | * | ||
12 | * All files in this archive are subject to the GNU General Public License. | ||
13 | * See the file COPYING in the source tree root for full license agreement. | ||
14 | * | ||
15 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
16 | * KIND, either express or implied. | ||
17 | * | ||
18 | ****************************************************************************/ | ||
19 | |||
20 | #include "config.h" | ||
21 | #include <stdbool.h> | ||
22 | |||
23 | #include "lang.h" | ||
24 | #include "lcd.h" | ||
25 | #include "settings.h" | ||
26 | #include "settings_list.h" | ||
27 | #include "sound.h" | ||
28 | |||
29 | /* some sets of values which are used more than once, to save memory */ | ||
30 | static const char off_on[] = "off,on"; | ||
31 | static const char off_on_ask[] = "off,on,ask"; | ||
32 | static const char off_number_spell_hover[] = "off,number,spell,hover"; | ||
33 | #ifdef HAVE_LCD_BITMAP | ||
34 | static const char graphic_numeric[] = "graphic,numeric"; | ||
35 | #endif | ||
36 | |||
37 | #ifdef HAVE_RECORDING | ||
38 | /* keep synchronous to trig_durations and | ||
39 | trigger_times in settings_apply_trigger */ | ||
40 | static const char trig_durations_conf [] = | ||
41 | "0s,1s,2s,5s,10s,15s,20s,25s,30s,1min,2min,5min,10min"; | ||
42 | /* these should be in the config.h files */ | ||
43 | #if CONFIG_CODEC == MAS3587F | ||
44 | # define DEFAULT_REC_MIC_GAIN 8 | ||
45 | # define DEFAULT_REC_LEFT_GAIN 2 | ||
46 | # define DEFAULT_REC_RIGHT_GAIN 2 | ||
47 | #elif CONFIG_CODEC == SWCODEC | ||
48 | # ifdef HAVE_UDA1380 | ||
49 | # define DEFAULT_REC_MIC_GAIN 16 | ||
50 | # define DEFAULT_REC_LEFT_GAIN 0 | ||
51 | # define DEFAULT_REC_RIGHT_GAIN 0 | ||
52 | # elif defined(HAVE_TLV320) | ||
53 | # define DEFAULT_REC_MIC_GAIN 0 | ||
54 | # define DEFAULT_REC_LEFT_GAIN 0 | ||
55 | # define DEFAULT_REC_RIGHT_GAIN 0 | ||
56 | # elif defined(HAVE_WM8975) | ||
57 | # define DEFAULT_REC_MIC_GAIN 16 | ||
58 | # define DEFAULT_REC_LEFT_GAIN 0 | ||
59 | # define DEFAULT_REC_RIGHT_GAIN 0 | ||
60 | # elif defined(HAVE_WM8758) | ||
61 | # define DEFAULT_REC_MIC_GAIN 16 | ||
62 | # define DEFAULT_REC_LEFT_GAIN 0 | ||
63 | # define DEFAULT_REC_RIGHT_GAIN 0 | ||
64 | # elif defined(HAVE_WM8731) | ||
65 | # define DEFAULT_REC_MIC_GAIN 16 | ||
66 | # define DEFAULT_REC_LEFT_GAIN 0 | ||
67 | # define DEFAULT_REC_RIGHT_GAIN 0 | ||
68 | # endif | ||
69 | #endif | ||
70 | |||
71 | #endif /* HAVE_RECORDING */ | ||
72 | |||
73 | #if defined(CONFIG_BACKLIGHT) | ||
74 | static const char backlight_times_conf [] = | ||
75 | "off,on,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90"; | ||
76 | #endif | ||
77 | |||
78 | |||
79 | #define GS(a) &global_settings.a | ||
80 | |||
81 | #define NVRAM(bytes) (bytes<<F_NVRAM_MASK_SHIFT) | ||
82 | /** NOTE: NVRAM_CONFIG_VERSION is in settings_list.h | ||
83 | and you may need to update it if you edit this file */ | ||
84 | |||
85 | #define UNUSED {.RESERVED=NULL} | ||
86 | #define INT(a) {.int_ = a} | ||
87 | #define UINT(a) {.uint_ = a} | ||
88 | #define BOOL(a) {.bool_ = a} | ||
89 | #define CHARPTR(a) {.charptr = a} | ||
90 | #define UCHARPTR(a) {.ucharptr = a} | ||
91 | #define NODEFAULT INT(0) | ||
92 | |||
93 | #define SOUND_SETTING(flags,var,setting) \ | ||
94 | {flags|F_T_INT|F_T_SOUND, GS(var), NODEFAULT,#var,NULL,\ | ||
95 | {.sound_setting=(struct sound_setting[]){{setting}}} } | ||
96 | |||
97 | #define BOOL_SETTING(flags,var,default,name,cfgvals,yes,no,opt_cb) \ | ||
98 | {flags|F_T_BOOL, GS(var), BOOL(default),name,cfgvals, \ | ||
99 | {.bool_setting=(struct bool_setting[]){{opt_cb,yes,no}}} } | ||
100 | |||
101 | #define OFFON_SETTING(flags,var,default,name,cb) \ | ||
102 | {flags|F_T_BOOL, GS(var), BOOL(default),name,off_on, \ | ||
103 | {.bool_setting=(struct bool_setting[]) \ | ||
104 | {{cb,LANG_SET_BOOL_YES,LANG_SET_BOOL_NO}}} } | ||
105 | |||
106 | #define SYSTEM_SETTING(flags,var,default) \ | ||
107 | {flags|F_T_INT, GS(var), INT(default), NULL, NULL, UNUSED} | ||
108 | |||
109 | #define FILENAME_SETTING(flags,var,name,default,prefix,suffix,len) \ | ||
110 | {flags|F_T_UCHARPTR, GS(var), CHARPTR(default),name,NULL,\ | ||
111 | {.filename_setting=(struct filename_setting[]){{prefix,suffix,len}}} } | ||
112 | const struct settings_list settings[] = { | ||
113 | /* sound settings */ | ||
114 | SOUND_SETTING(0,volume,SOUND_VOLUME), | ||
115 | SOUND_SETTING(0,balance,SOUND_BALANCE), | ||
116 | SOUND_SETTING(0,bass,SOUND_BASS), | ||
117 | SOUND_SETTING(0,treble,SOUND_TREBLE), | ||
118 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | ||
119 | { F_T_INT, GS(loudness), INT(0), "loudness", NULL, UNUSED }, | ||
120 | { F_T_INT, GS(avc), INT(0), "auto volume", "off,20ms,2,4,8", UNUSED }, | ||
121 | OFFON_SETTING(0,superbass,false,"superbass",NULL), | ||
122 | #endif | ||
123 | { F_T_INT, GS(channel_config), INT(0), "channels", | ||
124 | "stereo,mono,custom,mono left,mono right,karaoke", UNUSED }, | ||
125 | { F_T_INT, GS(stereo_width), INT(100), "stereo width", NULL, UNUSED }, | ||
126 | /* playback */ | ||
127 | OFFON_SETTING(0,resume,false,"resume", NULL), | ||
128 | OFFON_SETTING(0,playlist_shuffle,false,"shuffle", NULL), | ||
129 | SYSTEM_SETTING(NVRAM(4),resume_index,-1), | ||
130 | SYSTEM_SETTING(NVRAM(4),resume_first_index,0), | ||
131 | SYSTEM_SETTING(NVRAM(4),resume_offset,-1), | ||
132 | SYSTEM_SETTING(NVRAM(4),resume_seed,-1), | ||
133 | {F_T_INT, GS(repeat_mode), INT(REPEAT_ALL), "repeat", | ||
134 | "off,all,one,shuffle,ab" , UNUSED}, | ||
135 | /* LCD */ | ||
136 | #ifdef HAVE_LCD_CONTRAST | ||
137 | {F_T_INT, GS(contrast), INT(DEFAULT_CONTRAST_SETTING), | ||
138 | "contrast", NULL , UNUSED}, | ||
139 | #endif | ||
140 | #ifdef CONFIG_BACKLIGHT | ||
141 | {F_T_INT, GS(backlight_timeout), INT(6), | ||
142 | "backlight timeout",backlight_times_conf , UNUSED}, | ||
143 | #ifdef CONFIG_CHARGING | ||
144 | {F_T_INT, GS(backlight_timeout_plugged), INT(11), | ||
145 | "backlight timeout plugged",backlight_times_conf , UNUSED}, | ||
146 | #endif | ||
147 | #endif /* CONFIG_BACKLIGHT */ | ||
148 | #ifdef HAVE_LCD_BITMAP | ||
149 | OFFON_SETTING(0,invert,false,"invert", NULL), | ||
150 | OFFON_SETTING(0,flip_display,false,"flip display", NULL), | ||
151 | /* display */ | ||
152 | OFFON_SETTING(0,invert_cursor,true,"invert cursor", NULL), | ||
153 | OFFON_SETTING(0,statusbar,true,"statusbar", NULL), | ||
154 | OFFON_SETTING(0,scrollbar,true,"scrollbar", NULL), | ||
155 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
156 | OFFON_SETTING(0,buttonbar,true,"buttonbar", NULL), | ||
157 | #endif | ||
158 | {F_T_INT,GS(volume_type),INT(0),"volume display",graphic_numeric,UNUSED}, | ||
159 | {F_T_INT,GS(battery_display),INT(0),"battery display",graphic_numeric,UNUSED}, | ||
160 | {F_T_INT,GS(timeformat),INT(0),"time format","24hour,12hour",UNUSED}, | ||
161 | #endif /* HAVE_LCD_BITMAP */ | ||
162 | OFFON_SETTING(0,show_icons,true,"show icons", NULL), | ||
163 | /* system */ | ||
164 | {F_T_INT,GS(poweroff),INT(10),"idle poweroff", | ||
165 | "off,1,2,3,4,5,6,7,8,9,10,15,30,45,60",UNUSED}, | ||
166 | SYSTEM_SETTING(NVRAM(4),runtime,0), | ||
167 | SYSTEM_SETTING(NVRAM(4),topruntime,0), | ||
168 | #if MEM > 1 | ||
169 | {F_T_INT,GS(max_files_in_playlist),INT(10000), | ||
170 | "max files in playlist",NULL,UNUSED}, | ||
171 | {F_T_INT,GS(max_files_in_dir),INT(400), | ||
172 | "max files in dir",NULL,UNUSED}, | ||
173 | #else | ||
174 | {F_T_INT,GS(max_files_in_playlist),INT(1000), | ||
175 | "max files in playlist",NULL,UNUSED}, | ||
176 | {F_T_INT,GS(max_files_in_dir),INT(200), | ||
177 | "max files in dir",NULL,UNUSED}, | ||
178 | #endif | ||
179 | {F_T_INT,GS(battery_capacity),INT(BATTERY_CAPACITY_DEFAULT), | ||
180 | "battery capacity",NULL,UNUSED}, | ||
181 | #ifdef CONFIG_CHARGING | ||
182 | OFFON_SETTING(0,car_adapter_mode,false,"car adapter mode", NULL), | ||
183 | #endif | ||
184 | /* tuner */ | ||
185 | #ifdef CONFIG_TUNER | ||
186 | OFFON_SETTING(0,fm_force_mono,false,"force fm mono", NULL), | ||
187 | SYSTEM_SETTING(NVRAM(4),last_frequency,0), | ||
188 | #endif | ||
189 | |||
190 | #if BATTERY_TYPES_COUNT > 1 | ||
191 | {F_T_INT,GS(battery_type),INT(0), | ||
192 | "battery type","alkaline,nimh",UNUSED}, | ||
193 | #endif | ||
194 | #ifdef HAVE_REMOTE_LCD | ||
195 | /* remote lcd */ | ||
196 | {F_T_INT,GS(remote_contrast),INT(DEFAULT_REMOTE_CONTRAST_SETTING), | ||
197 | "remote contrast",NULL,UNUSED}, | ||
198 | OFFON_SETTING(0,remote_invert,false,"remote invert", NULL), | ||
199 | OFFON_SETTING(0,remote_flip_display,false,"remote flip display", NULL), | ||
200 | {F_T_INT,GS(remote_backlight_timeout),INT(6), | ||
201 | "remote backlight timeout",backlight_times_conf,UNUSED}, | ||
202 | #ifdef CONFIG_CHARGING | ||
203 | {F_T_INT,GS(remote_backlight_timeout_plugged),INT(11), | ||
204 | "remote backlight timeout plugged",backlight_times_conf,UNUSED}, | ||
205 | #endif | ||
206 | #ifdef HAVE_REMOTE_LCD_TICKING | ||
207 | OFFON_SETTING(0,remote_reduce_ticking,false,"remote reduce ticking", NULL), | ||
208 | #endif | ||
209 | #endif | ||
210 | |||
211 | #ifdef CONFIG_BACKLIGHT | ||
212 | OFFON_SETTING(0,bl_filter_first_keypress,false, | ||
213 | "backlight filters first keypress", NULL), | ||
214 | #ifdef HAVE_REMOTE_LCD | ||
215 | OFFON_SETTING(0,remote_bl_filter_first_keypress,false, | ||
216 | "backlight filters first remote keypress", NULL), | ||
217 | #endif | ||
218 | #endif /* CONFIG_BACKLIGHT */ | ||
219 | |||
220 | /** End of old RTC config block **/ | ||
221 | |||
222 | #ifdef CONFIG_BACKLIGHT | ||
223 | OFFON_SETTING(0,caption_backlight,false,"caption backlight",NULL), | ||
224 | #ifdef HAVE_REMOTE_LCD | ||
225 | OFFON_SETTING(0,remote_caption_backlight,false,"remote caption backlight",NULL), | ||
226 | #endif | ||
227 | #endif /* CONFIG_BACKLIGHT */ | ||
228 | #ifdef HAVE_BACKLIGHT_BRIGHTNESS | ||
229 | {F_T_INT,GS(brightness), INT(DEFAULT_BRIGHTNESS_SETTING), "brightness", NULL ,UNUSED}, | ||
230 | #endif | ||
231 | #ifdef HAVE_BACKLIGHT_PWM_FADING | ||
232 | /* backlight fading */ | ||
233 | {F_T_INT,GS(backlight_fade_in),INT(1), | ||
234 | "backlight fade in","off,500ms,1s,2s",UNUSED}, | ||
235 | {F_T_INT,GS(backlight_fade_out),INT(1), | ||
236 | "backlight fade out","off,500ms,1s,2s,3s,4s,5s,10s",UNUSED}, | ||
237 | #endif | ||
238 | {F_T_INT,GS(scroll_speed),INT(9),"scroll speed",NULL,UNUSED}, | ||
239 | {F_T_INT,GS(scroll_delay),INT(100),"scroll delay",NULL,UNUSED}, | ||
240 | {F_T_INT,GS(bidir_limit),INT(50),"bidir limit",NULL,UNUSED}, | ||
241 | #ifdef HAVE_REMOTE_LCD | ||
242 | {F_T_INT,GS(remote_scroll_speed),INT(9),"remote scroll speed",NULL,UNUSED}, | ||
243 | {F_T_INT,GS(remote_scroll_step),INT(6),"remote scroll step",NULL,UNUSED}, | ||
244 | {F_T_INT,GS(remote_scroll_delay),INT(100),"remote scroll delay",NULL,UNUSED}, | ||
245 | {F_T_INT,GS(remote_bidir_limit),INT(50),"remote bidir limit",NULL,UNUSED}, | ||
246 | #endif | ||
247 | #ifdef HAVE_LCD_BITMAP | ||
248 | OFFON_SETTING(0,offset_out_of_view,false,"Screen Scrolls Out Of View",NULL), | ||
249 | {F_T_INT,GS(scroll_step),INT(6),"scroll step",NULL,UNUSED}, | ||
250 | {F_T_INT,GS(screen_scroll_step),INT(16),"screen scroll step",NULL,UNUSED}, | ||
251 | #endif /* HAVE_LCD_BITMAP */ | ||
252 | OFFON_SETTING(0,scroll_paginated,false,"scroll paginated",NULL), | ||
253 | #ifdef HAVE_LCD_COLOR | ||
254 | {F_T_INT|F_RGB,GS(fg_color),INT(LCD_DEFAULT_FG),"foreground color",NULL,UNUSED}, | ||
255 | {F_T_INT|F_RGB,GS(bg_color),INT(LCD_DEFAULT_BG),"background color",NULL,UNUSED}, | ||
256 | #endif | ||
257 | /* more playback */ | ||
258 | OFFON_SETTING(0,play_selected,true,"play selected",NULL), | ||
259 | OFFON_SETTING(0,fade_on_stop,true,"volume fade",NULL), | ||
260 | {F_T_INT,GS(ff_rewind_min_step),INT(FF_REWIND_1000), | ||
261 | "scan min step","1,2,3,4,5,6,8,10,15,20,25,30,45,60",UNUSED}, | ||
262 | {F_T_INT,GS(ff_rewind_accel),INT(3),"scan accel",NULL,UNUSED}, | ||
263 | #if CONFIG_CODEC == SWCODEC | ||
264 | {F_T_INT,GS(buffer_margin),INT(0),"antiskip", | ||
265 | "5s,15s,30s,1min,2min,3min,5min,10min",UNUSED}, | ||
266 | #else | ||
267 | {F_T_INT,GS(buffer_margin),INT(0),"antiskip",NULL,UNUSED}, | ||
268 | #endif | ||
269 | /* disk */ | ||
270 | #ifndef HAVE_MMC | ||
271 | #ifdef HAVE_ATA_POWER_OFF | ||
272 | OFFON_SETTING(0,disk_poweroff,false,"disk poweroff",NULL), | ||
273 | #endif | ||
274 | {F_T_INT,GS(disk_spindown),INT(5),"disk spindown",NULL,UNUSED}, | ||
275 | #endif /* HAVE_MMC */ | ||
276 | /* browser */ | ||
277 | {F_T_INT,GS(dirfilter),INT(SHOW_SUPPORTED),"show files", | ||
278 | "all,supported,music,playlists" | ||
279 | #ifdef HAVE_TAGCACHE | ||
280 | ",id3 database" | ||
281 | #endif | ||
282 | ,UNUSED}, | ||
283 | OFFON_SETTING(0,sort_case,false,"sort case",NULL), | ||
284 | OFFON_SETTING(0,browse_current,false,"follow playlist",NULL), | ||
285 | OFFON_SETTING(0,playlist_viewer_icons,true, | ||
286 | "playlist viewer icons",NULL), | ||
287 | OFFON_SETTING(0,playlist_viewer_indices,true, | ||
288 | "playlist viewer indices",NULL), | ||
289 | {F_T_INT,GS(recursive_dir_insert),INT(RECURSE_OFF), | ||
290 | "recursive directory insert",off_on_ask,UNUSED}, | ||
291 | /* bookmarks */ | ||
292 | {F_T_INT,GS(autocreatebookmark),INT(BOOKMARK_NO),"autocreate bookmarks", | ||
293 | "off,on,ask,recent only - on,recent only - ask",UNUSED}, | ||
294 | {F_T_INT,GS(autoloadbookmark),INT(BOOKMARK_NO), | ||
295 | "autoload bookmarks",off_on_ask,UNUSED}, | ||
296 | {F_T_INT,GS(usemrb),INT(BOOKMARK_NO), | ||
297 | "use most-recent-bookmarks","off,on,unique only",UNUSED}, | ||
298 | #ifdef HAVE_LCD_BITMAP | ||
299 | /* peak meter */ | ||
300 | {F_T_INT,GS(peak_meter_clip_hold),INT(16),"peak meter clip hold", | ||
301 | "on,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,2min" | ||
302 | ",3min,5min,10min,20min,45min,90min",UNUSED}, | ||
303 | {F_T_INT,GS(peak_meter_hold),INT(3),"peak meter hold", | ||
304 | "off,200ms,300ms,500ms,1,2,3,4,5,6,7,8,9,10,15,20,30,1min",UNUSED}, | ||
305 | {F_T_INT,GS(peak_meter_release),INT(8),"peak meter release",NULL,UNUSED}, | ||
306 | OFFON_SETTING(0,peak_meter_dbfs,true,"peak meter dbfs",NULL), | ||
307 | {F_T_INT,GS(peak_meter_min),INT(60),"peak meter min",NULL,UNUSED}, | ||
308 | {F_T_INT,GS(peak_meter_max),INT(0),"peak meter max",NULL,UNUSED}, | ||
309 | #endif | ||
310 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | ||
311 | {F_T_INT,GS(mdb_strength),INT(0),"mdb strength",NULL,UNUSED}, | ||
312 | {F_T_INT,GS(mdb_harmonics),INT(0),"mdb harmonics",NULL,UNUSED}, | ||
313 | {F_T_INT,GS(mdb_center),INT(0),"mdb center",NULL,UNUSED}, | ||
314 | {F_T_INT,GS(mdb_shape),INT(0),"mdb shape",NULL,UNUSED}, | ||
315 | OFFON_SETTING(0,mdb_enable,false,"mdb enable",NULL), | ||
316 | #endif | ||
317 | #if CONFIG_CODEC == MAS3507D | ||
318 | OFFON_SETTING(0,line_in,false,"line in",NULL), | ||
319 | #endif | ||
320 | /* voice */ | ||
321 | {F_T_INT,GS(talk_dir),INT(0),"talk dir",off_number_spell_hover,UNUSED}, | ||
322 | {F_T_INT,GS(talk_file),INT(0),"talk file",off_number_spell_hover,UNUSED}, | ||
323 | OFFON_SETTING(0,talk_menu,true,"talk menu",NULL), | ||
324 | |||
325 | {F_T_INT,GS(sort_file),INT(0),"sort files","alpha,oldest,newest,type",UNUSED}, | ||
326 | {F_T_INT,GS(sort_dir),INT(0),"sort dirs","alpha,oldest,newest",UNUSED}, | ||
327 | BOOL_SETTING(0,id3_v1_first,false,"id3 tag priority","v2-v1,v1-v2", | ||
328 | LANG_ID3_V2_FIRST,LANG_ID3_V1_FIRST,NULL), | ||
329 | |||
330 | #ifdef HAVE_RECORDING | ||
331 | /* recording */ | ||
332 | OFFON_SETTING(0,recscreen_on,false,"recscreen on",NULL), | ||
333 | OFFON_SETTING(0,rec_startup,false,"rec screen on startup",NULL), | ||
334 | {F_T_INT,GS(rec_timesplit),INT(0),"rec timesplit", | ||
335 | "off,00:05,00:10,00:15,00:30,01:00,01:14,01:20,02:00," | ||
336 | "04:00,06:00,08:00,10:00,12:00,18:00,24:00",UNUSED}, | ||
337 | {F_T_INT,GS(rec_sizesplit),INT(0),"rec sizesplit", | ||
338 | "off,5MB,10MB,15MB,32MB,64MB,75MB,100MB,128MB," | ||
339 | "256MB,512MB,650MB,700MB,1GB,1.5GB,1.75GB",UNUSED}, | ||
340 | {F_T_INT,GS(rec_channels),INT(0),"rec channels","stereo,mono",UNUSED}, | ||
341 | {F_T_INT,GS(rec_split_type),INT(0),"rec split type","Split, Stop",UNUSED}, | ||
342 | {F_T_INT,GS(rec_split_method),INT(0),"rec split method","Time,Filesize",UNUSED}, | ||
343 | {F_T_INT,GS(rec_source),INT(0),"rec source","mic,line" | ||
344 | #ifdef HAVE_SPDIF_IN | ||
345 | ",spdif" | ||
346 | #endif | ||
347 | #ifdef HAVE_FMRADIO_IN | ||
348 | ",fmradio" | ||
349 | #endif | ||
350 | ,UNUSED}, | ||
351 | {F_T_INT,GS(rec_prerecord_time),INT(0),"prerecording time",NULL,UNUSED}, | ||
352 | {F_T_INT,GS(rec_directory),INT(0),"rec directory",REC_BASE_DIR ",current",UNUSED}, | ||
353 | #ifdef CONFIG_BACKLIGHT | ||
354 | {F_T_INT,GS(cliplight),INT(0),"cliplight","off,main,both,remote",UNUSED}, | ||
355 | #endif | ||
356 | {F_T_INT,GS(rec_mic_gain),INT(DEFAULT_REC_MIC_GAIN), | ||
357 | "rec mic gain",NULL,UNUSED}, | ||
358 | {F_T_INT,GS(rec_left_gain),INT(DEFAULT_REC_LEFT_GAIN), | ||
359 | "rec left gain",NULL,UNUSED}, | ||
360 | {F_T_INT,GS(rec_right_gain),INT(DEFAULT_REC_RIGHT_GAIN), | ||
361 | "rec right gain",NULL,UNUSED}, | ||
362 | #if CONFIG_CODEC == MAS3587F | ||
363 | {F_T_INT,GS(rec_frequency),INT(0),"rec frequency","44,48,32,22,24,16",UNUSED}, | ||
364 | {F_T_INT,GS(rec_quality),INT(5),"rec quality",NULL,UNUSED}, | ||
365 | OFFON_SETTING(0,rec_editable,false,"editable recordings",NULL), | ||
366 | #endif /* CONFIG_CODEC == MAS3587F */ | ||
367 | #if CONFIG_CODEC == SWCODEC | ||
368 | {F_T_INT,GS(rec_frequency),INT(REC_FREQ_DEFAULT), | ||
369 | "rec frequency",REC_FREQ_CFG_VAL_LIST,UNUSED}, | ||
370 | {F_T_INT,GS(rec_format),INT(REC_FORMAT_DEFAULT), | ||
371 | "rec format",REC_FORMAT_CFG_VAL_LIST,UNUSED}, | ||
372 | /** Encoder settings start - keep these together **/ | ||
373 | /* aiff_enc */ | ||
374 | /* (no settings yet) */ | ||
375 | /* mp3_enc */ | ||
376 | {F_T_INT,GS(mp3_enc_config.bitrate),INT(MP3_ENC_BITRATE_CFG_DEFAULT), | ||
377 | "mp3_enc bitrate",MP3_ENC_BITRATE_CFG_VALUE_LIST,UNUSED}, | ||
378 | /* wav_enc */ | ||
379 | /* (no settings yet) */ | ||
380 | /* wavpack_enc */ | ||
381 | /* (no settings yet) */ | ||
382 | /** Encoder settings end **/ | ||
383 | #endif /* CONFIG_CODEC == SWCODEC */ | ||
384 | /* values for the trigger */ | ||
385 | {F_T_INT,GS(rec_start_thres),INT(-35), | ||
386 | "trigger start threshold",NULL,UNUSED}, | ||
387 | {F_T_INT,GS(rec_stop_thres),INT(-45), | ||
388 | "trigger stop threshold",NULL,UNUSED}, | ||
389 | {F_T_INT,GS(rec_start_duration),INT(0), | ||
390 | "trigger start duration",trig_durations_conf,UNUSED}, | ||
391 | {F_T_INT,GS(rec_stop_postrec),INT(2), | ||
392 | "trigger stop postrec",trig_durations_conf,UNUSED}, | ||
393 | {F_T_INT,GS(rec_stop_gap),INT(1), | ||
394 | "trigger min gap",trig_durations_conf,UNUSED}, | ||
395 | {F_T_INT,GS(rec_trigger_mode),INT(0), | ||
396 | "trigger mode","off,once,repeat",UNUSED}, | ||
397 | #endif /* HAVE_RECORDING */ | ||
398 | |||
399 | #ifdef HAVE_SPDIF_POWER | ||
400 | OFFON_SETTING(0,spdif_enable,false,"spdif enable",NULL), | ||
401 | #endif | ||
402 | {F_T_INT,GS(next_folder),INT(FOLDER_ADVANCE_OFF), | ||
403 | "folder navigation","off,on,random",UNUSED}, | ||
404 | OFFON_SETTING(0,runtimedb,false,"gather runtime data",NULL), | ||
405 | |||
406 | #if CONFIG_CODEC == SWCODEC | ||
407 | OFFON_SETTING(0,replaygain,false,"replaygain",NULL), | ||
408 | {F_T_INT,GS(replaygain_type),INT(REPLAYGAIN_ALBUM), | ||
409 | "replaygain type","track,album,track shuffle",UNUSED}, | ||
410 | OFFON_SETTING(0,replaygain_noclip,false,"replaygain noclip",NULL), | ||
411 | {F_T_INT,GS(replaygain_preamp),INT(0),"replaygain preamp",NULL,UNUSED}, | ||
412 | {F_T_INT,GS(beep),INT(0),"beep","off,weak,moderate,strong",UNUSED}, | ||
413 | {F_T_INT,GS(crossfade),INT(0),"crossfade", | ||
414 | "off,shuffle,track skip,shuffle and track skip,always",UNUSED}, | ||
415 | {F_T_INT,GS(crossfade_fade_in_delay),INT(0), | ||
416 | "crossfade fade in delay",NULL,UNUSED}, | ||
417 | {F_T_INT,GS(crossfade_fade_out_delay),INT(0), | ||
418 | "crossfade fade out delay",NULL,UNUSED}, | ||
419 | {F_T_INT,GS(crossfade_fade_in_duration),INT(0), | ||
420 | "crossfade fade in duration",NULL,UNUSED}, | ||
421 | {F_T_INT,GS(crossfade_fade_out_duration),INT(0), | ||
422 | "crossfade fade out duration",NULL,UNUSED}, | ||
423 | {F_T_INT,GS(crossfade_fade_out_mixmode),INT(0), | ||
424 | "crossfade fade out mode","crossfade,mix",UNUSED}, | ||
425 | {F_T_INT,GS(crossfade),INT(0),"crossfade", | ||
426 | "off,shuffle,track skip,shuffle and track skip,always",UNUSED}, | ||
427 | OFFON_SETTING(0,crossfeed,false,"crossfeed",NULL), | ||
428 | {F_T_INT,GS(crossfeed_direct_gain),INT(15), | ||
429 | "crossfeed direct gain",NULL,UNUSED}, | ||
430 | {F_T_INT,GS(crossfeed_cross_gain),INT(60), | ||
431 | "crossfeed cross gain",NULL,UNUSED}, | ||
432 | {F_T_INT,GS(crossfeed_hf_attenuation),INT(160), | ||
433 | "crossfeed hf attenuation",NULL,UNUSED}, | ||
434 | {F_T_INT,GS(crossfeed_hf_cutoff),INT(700), | ||
435 | "crossfeed hf cutoff",NULL,UNUSED}, | ||
436 | |||
437 | /* equalizer */ | ||
438 | OFFON_SETTING(0,eq_enabled,false,"eq enabled",NULL), | ||
439 | {F_T_INT,GS(eq_precut),INT(0), | ||
440 | "eq precut",NULL,UNUSED}, | ||
441 | /* 0..32768 Hz */ | ||
442 | {F_T_INT,GS(eq_band0_cutoff),INT(0), | ||
443 | "eq band 0 cutoff",NULL,UNUSED}, | ||
444 | {F_T_INT,GS(eq_band1_cutoff),INT(200), | ||
445 | "eq band 1 cutoff",NULL,UNUSED}, | ||
446 | {F_T_INT,GS(eq_band2_cutoff),INT(800), | ||
447 | "eq band 2 cutoff",NULL,UNUSED}, | ||
448 | {F_T_INT,GS(eq_band3_cutoff),INT(4000), | ||
449 | "eq band 3 cutoff",NULL,UNUSED}, | ||
450 | {F_T_INT,GS(eq_band4_cutoff),INT(12000), | ||
451 | "eq band 4 cutoff",NULL,UNUSED}, | ||
452 | /* 0..64 (or 0.0 to 6.4) */ | ||
453 | {F_T_INT,GS(eq_band0_q),INT(7), | ||
454 | "eq band 0 q",NULL,UNUSED}, | ||
455 | {F_T_INT,GS(eq_band1_q),INT(10), | ||
456 | "eq band 1 q",NULL,UNUSED}, | ||
457 | {F_T_INT,GS(eq_band2_q),INT(10), | ||
458 | "eq band 2 q",NULL,UNUSED}, | ||
459 | {F_T_INT,GS(eq_band3_q),INT(10), | ||
460 | "eq band 3 q",NULL,UNUSED}, | ||
461 | {F_T_INT,GS(eq_band4_q),INT(7), | ||
462 | "eq band 4 q",NULL,UNUSED}, | ||
463 | /* -240..240 (or -24db to +24db) */ | ||
464 | {F_T_INT,GS(eq_band0_gain),INT(0), | ||
465 | "eq band 0 gain",NULL,UNUSED}, | ||
466 | {F_T_INT,GS(eq_band1_gain),INT(0), | ||
467 | "eq band 1 gain",NULL,UNUSED}, | ||
468 | {F_T_INT,GS(eq_band2_gain),INT(0), | ||
469 | "eq band 2 gain",NULL,UNUSED}, | ||
470 | {F_T_INT,GS(eq_band3_gain),INT(0), | ||
471 | "eq band 3 gain",NULL,UNUSED}, | ||
472 | {F_T_INT,GS(eq_band4_gain),INT(0), | ||
473 | "eq band 4 gain",NULL,UNUSED}, | ||
474 | |||
475 | /* dithering */ | ||
476 | OFFON_SETTING(0,dithering_enabled,false,"dithering enabled",NULL), | ||
477 | #endif | ||
478 | #ifdef HAVE_DIRCACHE | ||
479 | OFFON_SETTING(0,dircache,false,"dircache",NULL), | ||
480 | SYSTEM_SETTING(NVRAM(4),dircache_size,0), | ||
481 | #endif | ||
482 | |||
483 | #ifdef HAVE_TAGCACHE | ||
484 | #ifdef HAVE_TC_RAMCACHE | ||
485 | OFFON_SETTING(0,tagcache_ram,false,"tagcache_ram",NULL), | ||
486 | #endif | ||
487 | OFFON_SETTING(0,tagcache_autoupdate,false,"tagcache_autoupdate",NULL), | ||
488 | #endif | ||
489 | |||
490 | {F_T_INT,GS(default_codepage),INT(0),"default codepage", | ||
491 | "iso8859-1,iso8859-7,iso8859-8,cp1251,iso8859-11,cp1256," | ||
492 | "iso8859-9,iso8859-2,sjis,gb2312,ksx1001,big5,utf-8,cp1256",UNUSED}, | ||
493 | |||
494 | OFFON_SETTING(0,warnon_erase_dynplaylist,false, | ||
495 | "warn when erasing dynamic playlist",NULL), | ||
496 | |||
497 | #ifdef CONFIG_BACKLIGHT | ||
498 | #ifdef HAS_BUTTON_HOLD | ||
499 | {F_T_INT,GS(backlight_on_button_hold),INT(0), | ||
500 | "backlight on button hold","normal,off,on",UNUSED}, | ||
501 | #endif | ||
502 | |||
503 | #ifdef HAVE_LCD_SLEEP | ||
504 | {F_T_INT,GS(lcd_sleep_after_backlight_off),INT(3), | ||
505 | "lcd sleep after backlight off", | ||
506 | "always,never,5,10,15,20,30,45,60,90",UNUSED}, | ||
507 | #endif | ||
508 | #endif /* CONFIG_BACKLIGHT */ | ||
509 | |||
510 | #ifdef HAVE_WM8758 | ||
511 | OFFON_SETTING(0,eq_hw_enabled,false, | ||
512 | "eq hardware enabled",NULL), | ||
513 | |||
514 | {F_T_INT,GS(eq_hw_band0_cutoff),INT(1), | ||
515 | "eq hardware band 0 cutoff", | ||
516 | "80Hz,105Hz,135Hz,175Hz",UNUSED}, | ||
517 | {F_T_INT,GS(eq_hw_band0_gain),INT(0), | ||
518 | "eq hardware band 0 gain",NULL,UNUSED}, | ||
519 | |||
520 | {F_T_INT,GS(eq_hw_band1_center),INT(1), | ||
521 | "eq hardware band 1 center", | ||
522 | "230Hz,300Hz,385Hz,500Hz",UNUSED}, | ||
523 | {F_T_INT,GS(eq_hw_band1_bandwidth),INT(0), | ||
524 | "eq hardware band 1 bandwidth","narrow,wide",UNUSED}, | ||
525 | {F_T_INT,GS(eq_hw_band1_gain),INT(0), | ||
526 | "eq hardware band 1 gain",NULL,UNUSED}, | ||
527 | |||
528 | {F_T_INT,GS(eq_hw_band2_center),INT(1), | ||
529 | "eq hardware band 2 center", | ||
530 | "650Hz,850Hz,1.1kHz,1.4kHz",UNUSED}, | ||
531 | {F_T_INT,GS(eq_hw_band2_bandwidth),INT(0), | ||
532 | "eq hardware band 2 bandwidth","narrow,wide",UNUSED}, | ||
533 | {F_T_INT,GS(eq_hw_band2_gain),INT(0), | ||
534 | "eq hardware band 1 gain",NULL,UNUSED}, | ||
535 | |||
536 | {F_T_INT,GS(eq_hw_band3_center),INT(1), | ||
537 | "eq hardware band 3 center", | ||
538 | "1.8kHz,2.4kHz,3.2kHz,4.1kHz",UNUSED}, | ||
539 | {F_T_INT,GS(eq_hw_band3_bandwidth),INT(0), | ||
540 | "eq hardware band 3 bandwidth","narrow,wide",UNUSED}, | ||
541 | {F_T_INT,GS(eq_hw_band3_gain),INT(0), | ||
542 | "eq hardware band 3 gain",NULL,UNUSED}, | ||
543 | |||
544 | {F_T_INT,GS(eq_hw_band4_cutoff),INT(1), | ||
545 | "eq hardware band 4 cutoff", | ||
546 | "5.3kHz,6.9kHz,9kHz,11.7kHz",UNUSED}, | ||
547 | {F_T_INT,GS(eq_hw_band4_gain),INT(0), | ||
548 | "eq hardware band 0 gain",NULL,UNUSED}, | ||
549 | #endif | ||
550 | |||
551 | OFFON_SETTING(0,hold_lr_for_scroll_in_list,true, | ||
552 | "hold_lr_for_scroll_in_list",NULL), | ||
553 | {F_T_INT,GS(show_path_in_browser),INT(SHOW_PATH_OFF), | ||
554 | "show path in browser","off,current directory,full path",UNUSED}, | ||
555 | |||
556 | #ifdef HAVE_AGC | ||
557 | {F_T_INT,GS(rec_agc_preset_mic),INT(1),"agc mic preset",NULL,UNUSED}, | ||
558 | {F_T_INT,GS(rec_agc_preset_line),INT(1),"agc line preset",NULL,UNUSED}, | ||
559 | {F_T_INT,GS(rec_agc_maxgain_mic),INT(104), | ||
560 | "agc maximum mic gain",NULL,UNUSED}, | ||
561 | {F_T_INT,GS(rec_agc_maxgain_line),INT(96), | ||
562 | "agc maximum line gain",NULL,UNUSED}, | ||
563 | {F_T_INT,GS(rec_agc_cliptime),INT(1), | ||
564 | "agc cliptime","0.2s,0.4s,0.6s,0.8,1s",UNUSED}, | ||
565 | #endif | ||
566 | |||
567 | #ifdef HAVE_REMOTE_LCD | ||
568 | #ifdef HAS_REMOTE_BUTTON_HOLD | ||
569 | {F_T_INT,GS(remote_backlight_on_button_hold),INT(0), | ||
570 | "remote backlight on button hold","normal,off,on",UNUSED}, | ||
571 | #endif | ||
572 | #endif | ||
573 | #ifdef HAVE_HEADPHONE_DETECTION | ||
574 | {F_T_INT,GS(unplug_mode),INT(0),"pause on headphone unplug",NULL,UNUSED}, | ||
575 | {F_T_INT,GS(unplug_rw),INT(0),"rewind duration on pause",NULL,UNUSED}, | ||
576 | OFFON_SETTING(0,unplug_autoresume,false, | ||
577 | "disable autoresume if phones not present",NULL), | ||
578 | #endif | ||
579 | #ifdef CONFIG_TUNER | ||
580 | {F_T_INT,GS(fm_region),INT(0),"fm_region","eu,us,jp,kr",UNUSED}, | ||
581 | #endif | ||
582 | |||
583 | OFFON_SETTING(0,audioscrobbler,false,"Last.fm Logging",NULL), | ||
584 | |||
585 | #ifdef HAVE_RECORDING | ||
586 | {F_T_INT,GS(rec_trigger_type),INT(0),"trigger type","stop,pause,nf stp",UNUSED}, | ||
587 | #endif | ||
588 | |||
589 | /** settings not in the old config blocks **/ | ||
590 | #ifdef CONFIG_TUNER | ||
591 | FILENAME_SETTING(0,fmr_file,"fmr","",FMPRESET_PATH "/",".fmr",MAX_FILENAME+1), | ||
592 | #endif | ||
593 | FILENAME_SETTING(0,font_file,"font","",FONT_DIR "/",".fnt",MAX_FILENAME+1), | ||
594 | FILENAME_SETTING(0,wps_file, "wps","",WPS_DIR "/",".wps",MAX_FILENAME+1), | ||
595 | FILENAME_SETTING(0,lang_file,"lang","",LANG_DIR "/",".lng",MAX_FILENAME+1), | ||
596 | #ifdef HAVE_REMOTE_LCD | ||
597 | FILENAME_SETTING(0,rwps_file,"rwps","",WPS_DIR "/",".rwps",MAX_FILENAME+1), | ||
598 | #endif | ||
599 | #if LCD_DEPTH > 1 | ||
600 | FILENAME_SETTING(0,backdrop_file,"backdrop","",BACKDROP_DIR "/",".bmp",MAX_FILENAME+1), | ||
601 | #endif | ||
602 | #ifdef HAVE_LCD_BITMAP | ||
603 | FILENAME_SETTING(0,lang_file,"kbd","",ROCKBOX_DIR "/",".kbd",MAX_FILENAME+1), | ||
604 | #endif | ||
605 | |||
606 | }; | ||
607 | |||
608 | const int nb_settings = sizeof(settings)/sizeof(*settings); | ||