Björn Stenberg | f80d8a70 | 2002-06-27 00:20:00 +0000 | [diff] [blame] | 1 | /*************************************************************************** |
| 2 | * __________ __ ___. |
| 3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ |
| 4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / |
| 5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < |
| 6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ |
| 7 | * \/ \/ \/ \/ \/ |
| 8 | * $Id$ |
| 9 | * |
Steve Bavin | cd88e2a | 2008-03-25 15:24:03 +0000 | [diff] [blame] | 10 | * Copyright (C) 2002 by Stuart Martin |
Björn Stenberg | f80d8a70 | 2002-06-27 00:20:00 +0000 | [diff] [blame] | 11 | * |
Daniel Stenberg | 2acc0ac | 2008-06-28 18:10:04 +0000 | [diff] [blame] | 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. |
Björn Stenberg | f80d8a70 | 2002-06-27 00:20:00 +0000 | [diff] [blame] | 16 | * |
| 17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| 18 | * KIND, either express or implied. |
| 19 | * |
| 20 | ****************************************************************************/ |
| 21 | |
| 22 | #ifndef __SETTINGS_H__ |
| 23 | #define __SETTINGS_H__ |
| 24 | |
| 25 | #include <stdbool.h> |
Bertrik Sikken | b24fafb | 2009-03-08 20:28:15 +0000 | [diff] [blame] | 26 | #include <stddef.h> |
Jens Arnold | fb7368e | 2006-03-03 01:12:50 +0000 | [diff] [blame] | 27 | #include "inttypes.h" |
Hardeep Sidhu | e9d4058 | 2003-07-15 02:34:10 +0000 | [diff] [blame] | 28 | #include "config.h" |
Thomas Martitz | 19f44a6 | 2009-08-23 23:44:31 +0000 | [diff] [blame] | 29 | #include "statusbar.h" /* for the statusbar values */ |
Nils Wallménius | ff197a4 | 2009-10-28 20:41:34 +0000 | [diff] [blame] | 30 | #include "quickscreen.h" |
Thomas Martitz | d33bff2 | 2009-03-09 23:13:50 +0000 | [diff] [blame] | 31 | #include "button.h" |
Michael Sevakis | 0f5cb94 | 2006-11-06 18:07:30 +0000 | [diff] [blame] | 32 | #if CONFIG_CODEC == SWCODEC |
| 33 | #include "audio.h" |
| 34 | #endif |
| 35 | |
Stéphane Doyon | 0279c71 | 2007-10-10 01:41:48 +0000 | [diff] [blame] | 36 | struct opt_items { |
| 37 | unsigned const char* string; |
Nils Wallménius | acbd780 | 2007-11-20 19:50:52 +0000 | [diff] [blame] | 38 | int32_t voice_id; |
Stéphane Doyon | 0279c71 | 2007-10-10 01:41:48 +0000 | [diff] [blame] | 39 | }; |
| 40 | |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 41 | /** Setting values defines **/ |
| 42 | |
| 43 | /* name of directory where configuration, fonts and other data |
| 44 | * files are stored */ |
Miika Pekkarinen | 0dd7ea2 | 2006-11-10 08:03:33 +0000 | [diff] [blame] | 45 | #ifdef __PCTOOL__ |
Frank Gevaerts | 5d22e3c | 2008-08-29 21:08:38 +0000 | [diff] [blame] | 46 | #undef ROCKBOX_DIR |
| 47 | #undef ROCKBOX_DIR_LEN |
| 48 | #undef WPS_DIR |
Miika Pekkarinen | 0dd7ea2 | 2006-11-10 08:03:33 +0000 | [diff] [blame] | 49 | #define ROCKBOX_DIR "." |
| 50 | #define ROCKBOX_DIR_LEN 1 |
| 51 | #else |
Björn Stenberg | ad8d603 | 2008-11-24 22:16:07 +0000 | [diff] [blame] | 52 | |
| 53 | /* ROCKBOX_DIR is now defined in autoconf.h for flexible build types */ |
| 54 | #ifndef ROCKBOX_DIR |
| 55 | #error ROCKBOX_DIR not defined (should be in autoconf.h) |
Miika Pekkarinen | 0dd7ea2 | 2006-11-10 08:03:33 +0000 | [diff] [blame] | 56 | #endif |
Björn Stenberg | ad8d603 | 2008-11-24 22:16:07 +0000 | [diff] [blame] | 57 | #define ROCKBOX_DIR_LEN sizeof(ROCKBOX_DIR) |
| 58 | #endif |
| 59 | |
Miika Pekkarinen | 0dd7ea2 | 2006-11-10 08:03:33 +0000 | [diff] [blame] | 60 | |
Jonathan Gordon | 7ae8e44 | 2006-10-03 10:38:27 +0000 | [diff] [blame] | 61 | #define FONT_DIR ROCKBOX_DIR "/fonts" |
| 62 | #define LANG_DIR ROCKBOX_DIR "/langs" |
| 63 | #define WPS_DIR ROCKBOX_DIR "/wps" |
Thomas Martitz | 1016ee4 | 2009-10-19 15:28:15 +0000 | [diff] [blame] | 64 | #define SBS_DIR WPS_DIR |
Jonathan Gordon | 7ae8e44 | 2006-10-03 10:38:27 +0000 | [diff] [blame] | 65 | #define THEME_DIR ROCKBOX_DIR "/themes" |
Jonathan Gordon | 6a5cc0b | 2007-04-16 09:14:36 +0000 | [diff] [blame] | 66 | #define ICON_DIR ROCKBOX_DIR "/icons" |
Jonathan Gordon | fda7d72 | 2007-08-06 13:42:52 +0000 | [diff] [blame] | 67 | |
| 68 | #define PLUGIN_DIR ROCKBOX_DIR "/rocks" |
| 69 | #define PLUGIN_GAMES_DIR PLUGIN_DIR "/games" |
| 70 | #define PLUGIN_APPS_DIR PLUGIN_DIR "/apps" |
| 71 | #define PLUGIN_DEMOS_DIR PLUGIN_DIR "/demos" |
| 72 | #define VIEWERS_DIR PLUGIN_DIR "/viewers" |
| 73 | |
Jonathan Gordon | 7ae8e44 | 2006-10-03 10:38:27 +0000 | [diff] [blame] | 74 | #define BACKDROP_DIR ROCKBOX_DIR "/backdrops" |
Jonathan Gordon | 415e9d7 | 2007-07-10 07:41:37 +0000 | [diff] [blame] | 75 | #define REC_BASE_DIR "/" |
Jonathan Gordon | 7ae8e44 | 2006-10-03 10:38:27 +0000 | [diff] [blame] | 76 | #define EQS_DIR ROCKBOX_DIR "/eqs" |
Jonathan Gordon | 9adf056 | 2007-05-29 04:39:11 +0000 | [diff] [blame] | 77 | #define CODECS_DIR ROCKBOX_DIR "/codecs" |
| 78 | #define RECPRESETS_DIR ROCKBOX_DIR "/recpresets" |
Jonathan Gordon | b2e5090 | 2007-01-23 13:40:44 +0000 | [diff] [blame] | 79 | #define FMPRESET_PATH ROCKBOX_DIR "/fmpresets" |
Jonathan Gordon | ba75e60 | 2008-01-29 06:57:54 +0000 | [diff] [blame] | 80 | #define PLAYLIST_CATALOG_DEFAULT_DIR "/Playlists" |
Jonathan Gordon | b2e5090 | 2007-01-23 13:40:44 +0000 | [diff] [blame] | 81 | |
Jonathan Gordon | 21165a3 | 2007-03-29 06:16:00 +0000 | [diff] [blame] | 82 | #define VIEWERS_CONFIG ROCKBOX_DIR "/viewers.config" |
| 83 | #define CONFIGFILE ROCKBOX_DIR "/config.cfg" |
| 84 | #define FIXEDSETTINGSFILE ROCKBOX_DIR "/fixed.cfg" |
Björn Stenberg | 26964fd | 2002-09-01 19:50:45 +0000 | [diff] [blame] | 85 | |
Marianne Arnold | 28aa131 | 2007-02-03 10:52:57 +0000 | [diff] [blame] | 86 | #define MAX_FILENAME 32 |
Björn Stenberg | dea3122 | 2002-10-08 15:42:40 +0000 | [diff] [blame] | 87 | |
Björn Stenberg | f80d8a70 | 2002-06-27 00:20:00 +0000 | [diff] [blame] | 88 | |
Thomas Martitz | 40b0920 | 2009-08-07 00:56:39 +0000 | [diff] [blame] | 89 | enum { |
Jeffrey Goode | 24bd492 | 2009-08-12 18:42:13 +0000 | [diff] [blame] | 90 | BOOKMARK_NO = 0, |
Thomas Martitz | 40b0920 | 2009-08-07 00:56:39 +0000 | [diff] [blame] | 91 | BOOKMARK_YES, |
| 92 | BOOKMARK_ASK, |
Jeffrey Goode | 24bd492 | 2009-08-12 18:42:13 +0000 | [diff] [blame] | 93 | BOOKMARK_UNIQUE_ONLY = 2, |
Thomas Martitz | 40b0920 | 2009-08-07 00:56:39 +0000 | [diff] [blame] | 94 | BOOKMARK_RECENT_ONLY_YES, |
| 95 | BOOKMARK_RECENT_ONLY_ASK, |
| 96 | }; |
Eric Linenberg | 7eb2711 | 2002-09-04 03:38:37 +0000 | [diff] [blame] | 97 | |
Jonathan Gordon | ff469ab | 2008-05-28 10:55:39 +0000 | [diff] [blame] | 98 | enum |
| 99 | { |
| 100 | TRIG_MODE_OFF = 0, |
| 101 | TRIG_MODE_NOREARM, |
| 102 | TRIG_MODE_REARM |
| 103 | }; |
Linus Nielsen Feltzing | 68482bb | 2005-04-04 09:12:12 +0000 | [diff] [blame] | 104 | |
Jonathan Gordon | ff469ab | 2008-05-28 10:55:39 +0000 | [diff] [blame] | 105 | enum |
| 106 | { |
| 107 | TRIG_TYPE_STOP = 0, |
| 108 | TRIG_TYPE_PAUSE, |
| 109 | TRIG_TYPE_NEW_FILE |
| 110 | }; |
Björn Stenberg | de5477c | 2003-09-29 21:26:53 +0000 | [diff] [blame] | 111 | |
Thomas Martitz | 40b0920 | 2009-08-07 00:56:39 +0000 | [diff] [blame] | 112 | enum { |
Teruaki Kawashima | 90ea3e9 | 2009-08-16 12:27:21 +0000 | [diff] [blame] | 113 | CROSSFADE_ENABLE_OFF = 0, |
Thomas Martitz | 40b0920 | 2009-08-07 00:56:39 +0000 | [diff] [blame] | 114 | CROSSFADE_ENABLE_SHUFFLE, |
| 115 | CROSSFADE_ENABLE_TRACKSKIP, |
| 116 | CROSSFADE_ENABLE_SHUFFLE_AND_TRACKSKIP, |
| 117 | CROSSFADE_ENABLE_ALWAYS, |
| 118 | }; |
Miika Pekkarinen | 90161c9 | 2005-07-22 16:46:27 +0000 | [diff] [blame] | 119 | |
Thomas Martitz | 40b0920 | 2009-08-07 00:56:39 +0000 | [diff] [blame] | 120 | enum { |
Teruaki Kawashima | 90ea3e9 | 2009-08-16 12:27:21 +0000 | [diff] [blame] | 121 | FOLDER_ADVANCE_OFF = 0, |
Thomas Martitz | 40b0920 | 2009-08-07 00:56:39 +0000 | [diff] [blame] | 122 | FOLDER_ADVANCE_NEXT, |
| 123 | FOLDER_ADVANCE_RANDOM, |
Thomas Martitz | 6e5448d | 2009-08-07 00:59:22 +0000 | [diff] [blame] | 124 | }; |
Jonathan Gordon | 27ad51f | 2006-10-09 10:54:17 +0000 | [diff] [blame] | 125 | |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 126 | /* repeat mode options */ |
| 127 | enum |
| 128 | { |
Teruaki Kawashima | 90ea3e9 | 2009-08-16 12:27:21 +0000 | [diff] [blame] | 129 | REPEAT_OFF = 0, |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 130 | REPEAT_ALL, |
| 131 | REPEAT_ONE, |
| 132 | REPEAT_SHUFFLE, |
Daniel Stenberg | 7bcfc1d | 2007-02-17 22:26:14 +0000 | [diff] [blame] | 133 | #ifdef AB_REPEAT_ENABLE |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 134 | REPEAT_AB, |
| 135 | #endif |
| 136 | NUM_REPEAT_MODES |
| 137 | }; |
| 138 | |
Alexander Levin | 8589fcb | 2009-06-20 21:13:24 +0000 | [diff] [blame] | 139 | |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 140 | /* dir filter options */ |
| 141 | /* Note: Any new filter modes need to be added before NUM_FILTER_MODES. |
| 142 | * Any new rockbox browse filter modes (accessible through the menu) |
| 143 | * must be added after NUM_FILTER_MODES. */ |
| 144 | enum { SHOW_ALL, SHOW_SUPPORTED, SHOW_MUSIC, SHOW_PLAYLIST, SHOW_ID3DB, |
| 145 | NUM_FILTER_MODES, |
Thomas Martitz | de7f241 | 2009-10-19 16:08:43 +0000 | [diff] [blame] | 146 | SHOW_WPS, SHOW_RWPS, SHOW_SBS, SHOW_RSBS, SHOW_FMR, SHOW_CFG, |
| 147 | SHOW_LNG, SHOW_MOD, SHOW_FONT, SHOW_PLUGINS}; |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 148 | |
Nils Wallménius | 48b52ae | 2008-10-08 16:32:01 +0000 | [diff] [blame] | 149 | /* file and dir sort options */ |
| 150 | enum { SORT_ALPHA, SORT_DATE, SORT_DATE_REVERSED, SORT_TYPE, /* available as settings */ |
| 151 | SORT_ALPHA_REVERSED, SORT_TYPE_REVERSED }; /* internal use only */ |
Thomas Martitz | d13f1a4 | 2009-03-01 17:55:59 +0000 | [diff] [blame] | 152 | enum { SORT_INTERPRET_AS_DIGIT, SORT_INTERPRET_AS_NUMBER }; |
Nils Wallménius | 48b52ae | 2008-10-08 16:32:01 +0000 | [diff] [blame] | 153 | |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 154 | /* recursive dir insert options */ |
| 155 | enum { RECURSE_OFF, RECURSE_ON, RECURSE_ASK }; |
| 156 | |
| 157 | /* replaygain types */ |
Alexander Levin | 8589fcb | 2009-06-20 21:13:24 +0000 | [diff] [blame] | 158 | enum { REPLAYGAIN_TRACK = 0, REPLAYGAIN_ALBUM, REPLAYGAIN_SHUFFLE, REPLAYGAIN_OFF }; |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 159 | |
| 160 | /* show path types */ |
| 161 | enum { SHOW_PATH_OFF = 0, SHOW_PATH_CURRENT, SHOW_PATH_FULL }; |
| 162 | |
Alexander Levin | 07d0bfd | 2009-08-19 12:36:40 +0000 | [diff] [blame] | 163 | /* scrollbar visibility/position */ |
Tomer Shalev | 1acacc2 | 2009-10-05 18:11:41 +0000 | [diff] [blame] | 164 | enum { SCROLLBAR_OFF = 0, SCROLLBAR_LEFT, SCROLLBAR_RIGHT }; |
Alexander Levin | 07d0bfd | 2009-08-19 12:36:40 +0000 | [diff] [blame] | 165 | |
Jonathan Gordon | 9e554a8 | 2007-03-07 01:16:25 +0000 | [diff] [blame] | 166 | /* Alarm settings */ |
| 167 | #ifdef HAVE_RTC_ALARM |
| 168 | enum { ALARM_START_WPS = 0, |
| 169 | #if CONFIG_TUNER |
| 170 | ALARM_START_FM, |
| 171 | #endif |
| 172 | #ifdef HAVE_RECORDING |
| 173 | ALARM_START_REC, |
| 174 | #endif |
| 175 | ALARM_START_COUNT |
| 176 | }; |
| 177 | #if CONFIG_TUNER && defined(HAVE_RECORDING) |
| 178 | #define ALARM_SETTING_TEXT "wps,fm,rec" |
| 179 | #elif CONFIG_TUNER |
| 180 | #define ALARM_SETTING_TEXT "wps,fm" |
| 181 | #elif defined(HAVE_RECORDING) |
| 182 | #define ALARM_SETTING_TEXT "wps,rec" |
| 183 | #endif |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 184 | |
Jonathan Gordon | 9e554a8 | 2007-03-07 01:16:25 +0000 | [diff] [blame] | 185 | #endif /* HAVE_RTC_ALARM */ |
Michael Sevakis | 93572e2 | 2008-12-13 06:01:08 +0000 | [diff] [blame] | 186 | |
| 187 | /* Keyclick stuff */ |
| 188 | |
| 189 | /* Not really a setting but several files should stay synced */ |
| 190 | #define KEYCLICK_DURATION 2 |
| 191 | |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 192 | /** virtual pointer stuff.. move to another .h maybe? **/ |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 193 | /* These define "virtual pointers", which could either be a literal string, |
| 194 | or a mean a string ID if the pointer is in a certain range. |
| 195 | This helps to save space for menus and options. */ |
| 196 | |
| 197 | #define VIRT_SIZE 0xFFFF /* more than enough for our string ID range */ |
Michael Sparmann | 112bc15 | 2009-10-05 14:42:18 +0000 | [diff] [blame] | 198 | #if defined(CPU_S5L870X) |
| 199 | /* the S5L870X has IRAM at 0, so we use 0xffff bytes right after that */ |
| 200 | #define VIRT_PTR ((unsigned char*)0x40000) |
| 201 | #elif CONFIG_CPU==DM320 |
Catalin Patulea | 01ddb56 | 2007-11-02 02:50:02 +0000 | [diff] [blame] | 202 | /* the DM320 has IRAM at 0, so we use 0xffff bytes right after that */ |
| 203 | #define VIRT_PTR ((unsigned char*)0x4000) |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 204 | #else |
| 205 | /* a location where we won't store strings, 0 is the fastest */ |
| 206 | #define VIRT_PTR ((unsigned char*)0) |
| 207 | #endif |
| 208 | |
| 209 | /* form a "virtual pointer" out of a language ID */ |
| 210 | #define ID2P(id) (VIRT_PTR + id) |
| 211 | |
| 212 | /* resolve a pointer which could be a virtualized ID or a literal */ |
Nils Wallménius | 01729e7 | 2008-08-15 08:27:39 +0000 | [diff] [blame] | 213 | #define P2STR(p) (char *)((p>=VIRT_PTR && p<VIRT_PTR+VIRT_SIZE) ? str(p-VIRT_PTR) : p) |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 214 | |
| 215 | /* get the string ID from a virtual pointer, -1 if not virtual */ |
Nils Wallménius | 01729e7 | 2008-08-15 08:27:39 +0000 | [diff] [blame] | 216 | #define P2ID(p) ((p>=VIRT_PTR && p<VIRT_PTR+VIRT_SIZE) ? p-VIRT_PTR : -1) |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 217 | |
Rani Hod | cc839a2 | 2006-07-31 19:13:21 +0000 | [diff] [blame] | 218 | /* !defined(HAVE_LCD_COLOR) implies HAVE_LCD_CONTRAST with default 40. |
| 219 | Explicitly define HAVE_LCD_CONTRAST in config file for newer ports for |
| 220 | simplicity. */ |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 221 | |
| 222 | |
| 223 | |
| 224 | /** function prototypes **/ |
| 225 | |
| 226 | /* argument bits for settings_load() */ |
Thomas Martitz | 40b0920 | 2009-08-07 00:56:39 +0000 | [diff] [blame] | 227 | #define SETTINGS_RTC (BIT_N(0)) /* only the settings from the RTC nonvolatile RAM */ |
| 228 | #define SETTINGS_HD (BIT_N(1)) /* only the settings from the disk sector */ |
| 229 | #define SETTINGS_ALL (SETTINGS_RTC|SETTINGS_HD) /* both */ |
Steve Bavin | 135cc75 | 2008-03-28 12:51:33 +0000 | [diff] [blame] | 230 | void settings_load(int which); |
| 231 | bool settings_load_config(const char* file, bool apply); |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 232 | |
Steve Bavin | cd88e2a | 2008-03-25 15:24:03 +0000 | [diff] [blame] | 233 | void status_save(void); |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 234 | int settings_save(void); |
Jonathan Gordon | f0d2861 | 2007-02-01 13:57:14 +0000 | [diff] [blame] | 235 | /* defines for the options paramater */ |
Jonathan Gordon | 9adf056 | 2007-05-29 04:39:11 +0000 | [diff] [blame] | 236 | enum { |
| 237 | SETTINGS_SAVE_CHANGED = 0, |
| 238 | SETTINGS_SAVE_ALL, |
| 239 | SETTINGS_SAVE_THEME, |
Jonathan Gordon | b8bc45d | 2007-12-24 22:35:31 +0000 | [diff] [blame] | 240 | SETTINGS_SAVE_SOUND, |
Jonathan Gordon | 9adf056 | 2007-05-29 04:39:11 +0000 | [diff] [blame] | 241 | #ifdef HAVE_RECORDING |
| 242 | SETTINGS_SAVE_RECPRESETS, |
| 243 | #endif |
Dan Everton | 5886efa | 2007-12-07 10:59:07 +0000 | [diff] [blame] | 244 | #if CONFIG_CODEC == SWCODEC |
| 245 | SETTINGS_SAVE_EQPRESET, |
| 246 | #endif |
Jonathan Gordon | 9adf056 | 2007-05-29 04:39:11 +0000 | [diff] [blame] | 247 | }; |
Steve Bavin | 135cc75 | 2008-03-28 12:51:33 +0000 | [diff] [blame] | 248 | bool settings_save_config(int options); |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 249 | |
Stéphane Doyon | b2aa86a | 2008-04-20 14:12:28 +0000 | [diff] [blame] | 250 | struct settings_list; |
| 251 | void reset_setting(const struct settings_list *setting, void *var); |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 252 | void settings_reset(void); |
| 253 | void sound_settings_apply(void); |
Thomas Martitz | c426628 | 2009-08-16 20:12:17 +0000 | [diff] [blame] | 254 | |
| 255 | /* call this after loading a .wps/.rwps pr other skin files, so that the |
| 256 | * skin buffer is reset properly |
| 257 | */ |
| 258 | void settings_apply_skins(void); |
| 259 | |
Steve Bavin | 135cc75 | 2008-03-28 12:51:33 +0000 | [diff] [blame] | 260 | void settings_apply(bool read_disk); |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 261 | void settings_apply_pm_range(void); |
| 262 | void settings_display(void); |
| 263 | |
| 264 | enum optiontype { INT, BOOL }; |
| 265 | |
Steve Bavin | cd88e2a | 2008-03-25 15:24:03 +0000 | [diff] [blame] | 266 | const struct settings_list* find_setting(const void* variable, int *id); |
Steve Bavin | 135cc75 | 2008-03-28 12:51:33 +0000 | [diff] [blame] | 267 | bool cfg_int_to_string(int setting_id, int val, char* buf, int buf_len); |
Antoine Cellerier | 3ad5350 | 2008-12-07 16:19:25 +0000 | [diff] [blame] | 268 | bool cfg_to_string(int setting_id, char* buf, int buf_len); |
Steve Bavin | cd88e2a | 2008-03-25 15:24:03 +0000 | [diff] [blame] | 269 | bool set_bool_options(const char* string, const bool* variable, |
Steve Bavin | 135cc75 | 2008-03-28 12:51:33 +0000 | [diff] [blame] | 270 | const char* yes_str, int yes_voice, |
| 271 | const char* no_str, int no_voice, |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 272 | void (*function)(bool)); |
| 273 | |
Steve Bavin | cd88e2a | 2008-03-25 15:24:03 +0000 | [diff] [blame] | 274 | bool set_bool(const char* string, const bool* variable); |
Steve Bavin | 135cc75 | 2008-03-28 12:51:33 +0000 | [diff] [blame] | 275 | bool set_int(const unsigned char* string, const char* unit, int voice_unit, |
Steve Bavin | cd88e2a | 2008-03-25 15:24:03 +0000 | [diff] [blame] | 276 | const int* variable, |
Steve Bavin | 135cc75 | 2008-03-28 12:51:33 +0000 | [diff] [blame] | 277 | void (*function)(int), int step, int min, int max, |
Nils Wallménius | 3200d04 | 2009-08-20 16:47:44 +0000 | [diff] [blame] | 278 | const char* (*formatter)(char*, size_t, int, const char*) ); |
Steve Bavin | cd88e2a | 2008-03-25 15:24:03 +0000 | [diff] [blame] | 279 | |
Jonathan Gordon | fb62831 | 2007-02-12 14:22:35 +0000 | [diff] [blame] | 280 | /* use this one if you need to create a lang from the value (i.e with TALK_ID()) */ |
Steve Bavin | 135cc75 | 2008-03-28 12:51:33 +0000 | [diff] [blame] | 281 | bool set_int_ex(const unsigned char* string, const char* unit, int voice_unit, |
Steve Bavin | cd88e2a | 2008-03-25 15:24:03 +0000 | [diff] [blame] | 282 | const int* variable, |
Steve Bavin | 135cc75 | 2008-03-28 12:51:33 +0000 | [diff] [blame] | 283 | void (*function)(int), int step, int min, int max, |
Nils Wallménius | 3200d04 | 2009-08-20 16:47:44 +0000 | [diff] [blame] | 284 | const char* (*formatter)(char*, size_t, int, const char*), |
Jens Arnold | 09a7861 | 2007-11-26 23:10:20 +0000 | [diff] [blame] | 285 | int32_t (*get_talk_id)(int, int)); |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 286 | |
Steve Bavin | 135cc75 | 2008-03-28 12:51:33 +0000 | [diff] [blame] | 287 | void set_file(const char* filename, char* setting, int maxlen); |
Steve Bavin | cd88e2a | 2008-03-25 15:24:03 +0000 | [diff] [blame] | 288 | |
Steve Bavin | 135cc75 | 2008-03-28 12:51:33 +0000 | [diff] [blame] | 289 | bool set_option(const char* string, const void* variable, enum optiontype type, |
| 290 | const struct opt_items* options, int numoptions, void (*function)(int)); |
Steve Bavin | cd88e2a | 2008-03-25 15:24:03 +0000 | [diff] [blame] | 291 | |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 292 | |
| 293 | |
| 294 | /** global_settings and global_status struct definitions **/ |
| 295 | |
Jonathan Gordon | 228d62d | 2007-01-24 02:19:22 +0000 | [diff] [blame] | 296 | struct system_status |
| 297 | { |
| 298 | int resume_index; /* index in playlist (-1 for no active resume) */ |
Jonathan Gordon | 228d62d | 2007-01-24 02:19:22 +0000 | [diff] [blame] | 299 | uint32_t resume_offset; /* byte offset in mp3 file */ |
Jonathan Gordon | 228d62d | 2007-01-24 02:19:22 +0000 | [diff] [blame] | 300 | int runtime; /* current runtime since last charge */ |
| 301 | int topruntime; /* top known runtime */ |
| 302 | #ifdef HAVE_DIRCACHE |
| 303 | int dircache_size; /* directory cache structure last size, 22 bits */ |
| 304 | #endif |
Jens Arnold | c652218 | 2007-02-18 08:46:12 +0000 | [diff] [blame] | 305 | #if CONFIG_TUNER |
Jonathan Gordon | 228d62d | 2007-01-24 02:19:22 +0000 | [diff] [blame] | 306 | int last_frequency; /* Last frequency for resuming, in FREQ_STEP units, |
| 307 | relative to MIN_FREQ */ |
| 308 | #endif |
Jonathan Gordon | ee0111a | 2008-11-03 09:40:45 +0000 | [diff] [blame] | 309 | signed char last_screen; |
Jonathan Gordon | 9d3694c | 2007-04-22 08:50:24 +0000 | [diff] [blame] | 310 | int viewer_icon_count; |
Jonathan Gordon | 235d1ae | 2009-11-01 02:36:51 +0000 | [diff] [blame] | 311 | int last_volume_change; /* tick the last volume change happened. skins use this */ |
Jonathan Gordon | 228d62d | 2007-01-24 02:19:22 +0000 | [diff] [blame] | 312 | }; |
Michael Sevakis | eed62f1 | 2007-02-07 04:24:21 +0000 | [diff] [blame] | 313 | |
Björn Stenberg | f80d8a70 | 2002-06-27 00:20:00 +0000 | [diff] [blame] | 314 | struct user_settings |
| 315 | { |
| 316 | /* audio settings */ |
| 317 | |
Nils Wallménius | fedc7dc | 2007-11-18 16:45:58 +0000 | [diff] [blame] | 318 | int volume; /* audio output volume in decibels range depends on the dac */ |
| 319 | int balance; /* stereo balance: 0-100 0=left 50=bal 100=right */ |
| 320 | int bass; /* bass boost/cut in decibels */ |
| 321 | int treble; /* treble boost/cut in decibels */ |
Jens Arnold | 76b257f | 2005-01-12 00:24:15 +0000 | [diff] [blame] | 322 | int channel_config; /* Stereo, Mono, Custom, Mono left, Mono right, Karaoke */ |
| 323 | int stereo_width; /* 0-255% */ |
Nils Wallménius | fedc7dc | 2007-11-18 16:45:58 +0000 | [diff] [blame] | 324 | |
| 325 | #if CONFIG_CODEC != SWCODEC |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 326 | int loudness; /* loudness eq: 0-100 0=off 100=max */ |
| 327 | int avc; /* auto volume correct: 0=off, 1=20ms, 2=2s 3=4s 4=8s */ |
| 328 | int mdb_strength; /* 0-127dB */ |
| 329 | int mdb_harmonics; /* 0-100% */ |
| 330 | int mdb_center; /* 20-300Hz */ |
| 331 | int mdb_shape; /* 50-300Hz */ |
| 332 | bool mdb_enable; /* true/false */ |
| 333 | bool superbass; /* true/false */ |
Nils Wallménius | fedc7dc | 2007-11-18 16:45:58 +0000 | [diff] [blame] | 334 | #endif |
Linus Nielsen Feltzing | afe0da9 | 2002-11-10 23:18:33 +0000 | [diff] [blame] | 335 | |
Dan Everton | d7e1f77 | 2007-11-24 07:51:00 +0000 | [diff] [blame] | 336 | #ifdef HAVE_WM8758 |
| 337 | int bass_cutoff; |
| 338 | int treble_cutoff; |
| 339 | #endif |
| 340 | |
Jens Arnold | d6c0545 | 2005-08-29 21:15:27 +0000 | [diff] [blame] | 341 | #if CONFIG_CODEC == SWCODEC |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 342 | /* Crossfade */ |
| 343 | int crossfade; /* Enable crossfade (0=off, 1=shuffle, 2=trackskip, |
| 344 | 3=shuff&trackskip, 4=always) */ |
Miika Pekkarinen | e7461b3 | 2005-11-06 16:40:20 +0000 | [diff] [blame] | 345 | int crossfade_fade_in_delay; /* Fade in delay (0-15s) */ |
| 346 | int crossfade_fade_out_delay; /* Fade out delay (0-15s) */ |
| 347 | int crossfade_fade_in_duration; /* Fade in duration (0-15s) */ |
| 348 | int crossfade_fade_out_duration; /* Fade out duration (0-15s) */ |
| 349 | int crossfade_fade_out_mixmode; /* Fade out mode (0=crossfade,1=mix) */ |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 350 | |
| 351 | /* Replaygain */ |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 352 | bool replaygain_noclip; /* scale to prevent clips */ |
| 353 | int replaygain_type; /* 0=track gain, 1=album gain, 2=track gain if |
Alexander Levin | 8589fcb | 2009-06-20 21:13:24 +0000 | [diff] [blame] | 354 | shuffle is on, album gain otherwise, 4=off */ |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 355 | int replaygain_preamp; /* scale replaygained tracks by this */ |
| 356 | |
| 357 | /* Crossfeed */ |
| 358 | bool crossfeed; /* enable crossfeed */ |
| 359 | unsigned int crossfeed_direct_gain; /* dB x 10 */ |
| 360 | unsigned int crossfeed_cross_gain; /* dB x 10 */ |
| 361 | unsigned int crossfeed_hf_attenuation; /* dB x 10 */ |
| 362 | unsigned int crossfeed_hf_cutoff; /* Frequency in Hz */ |
| 363 | |
| 364 | /* EQ */ |
| 365 | bool eq_enabled; /* Enable equalizer */ |
| 366 | unsigned int eq_precut; /* dB */ |
| 367 | |
| 368 | /* Order is important here, must be cutoff, q, then gain for each band. |
| 369 | See dsp_set_eq_coefs in dsp.c for why. */ |
| 370 | |
| 371 | /* Band 0 settings */ |
| 372 | int eq_band0_cutoff; /* Hz */ |
| 373 | int eq_band0_q; |
| 374 | int eq_band0_gain; /* +/- dB */ |
| 375 | |
| 376 | /* Band 1 settings */ |
| 377 | int eq_band1_cutoff; /* Hz */ |
| 378 | int eq_band1_q; |
| 379 | int eq_band1_gain; /* +/- dB */ |
| 380 | |
| 381 | /* Band 2 settings */ |
| 382 | int eq_band2_cutoff; /* Hz */ |
| 383 | int eq_band2_q; |
| 384 | int eq_band2_gain; /* +/- dB */ |
| 385 | |
| 386 | /* Band 3 settings */ |
| 387 | int eq_band3_cutoff; /* Hz */ |
| 388 | int eq_band3_q; |
| 389 | int eq_band3_gain; /* +/- dB */ |
| 390 | |
| 391 | /* Band 4 settings */ |
| 392 | int eq_band4_cutoff; /* Hz */ |
| 393 | int eq_band4_q; |
| 394 | int eq_band4_gain; /* +/- dB */ |
| 395 | |
| 396 | /* Misc. swcodec */ |
| 397 | int beep; /* system beep volume when changing tracks etc. */ |
| 398 | int keyclick; /* keyclick volume */ |
| 399 | int keyclick_repeats; /* keyclick on repeats */ |
| 400 | bool dithering_enabled; |
Steve Bavin | fb23807 | 2009-06-12 07:20:50 +0000 | [diff] [blame] | 401 | bool timestretch_enabled; |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 402 | #endif /* CONFIG_CODEC == SWCODEC */ |
| 403 | |
Jonathan Gordon | 415e9d7 | 2007-07-10 07:41:37 +0000 | [diff] [blame] | 404 | #ifdef HAVE_RECORDING |
Michael Sevakis | 0f5cb94 | 2006-11-06 18:07:30 +0000 | [diff] [blame] | 405 | #if CONFIG_CODEC == SWCODEC |
| 406 | int rec_format; /* record format index */ |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 407 | int rec_mono_mode; /* how to create mono: L, R, L+R */ |
| 408 | |
| 409 | /* Encoder Settings Start - keep these together */ |
| 410 | struct mp3_enc_config mp3_enc_config; |
| 411 | #if 0 /* These currently contain no members but their places in line |
| 412 | should be held */ |
| 413 | struct aiff_enc_config aiff_enc_config; |
| 414 | struct wav_enc_config wav_enc_config; |
| 415 | struct wavpack_enc_config wavpack_enc_config; |
| 416 | #endif |
| 417 | /* Encoder Settings End */ |
| 418 | |
Michael Sevakis | 0f5cb94 | 2006-11-06 18:07:30 +0000 | [diff] [blame] | 419 | #else |
Linus Nielsen Feltzing | afe0da9 | 2002-11-10 23:18:33 +0000 | [diff] [blame] | 420 | int rec_quality; /* 0-7 */ |
Michael Sevakis | 0f5cb94 | 2006-11-06 18:07:30 +0000 | [diff] [blame] | 421 | #endif /* CONFIG_CODEC == SWCODEC */ |
| 422 | int rec_source; /* 0=mic, 1=line, 2=S/PDIF, 2 or 3=FM Radio */ |
| 423 | int rec_frequency; /* 0 = 44.1kHz (depends on target) |
Linus Nielsen Feltzing | afe0da9 | 2002-11-10 23:18:33 +0000 | [diff] [blame] | 424 | 1 = 48kHz |
| 425 | 2 = 32kHz |
| 426 | 3 = 22.05kHz |
| 427 | 4 = 24kHz |
| 428 | 5 = 16kHz */ |
| 429 | int rec_channels; /* 0=Stereo, 1=Mono */ |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 430 | |
Michael Sevakis | 0f5cb94 | 2006-11-06 18:07:30 +0000 | [diff] [blame] | 431 | int rec_mic_gain; /* depends on target */ |
| 432 | int rec_left_gain; /* depends on target */ |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 433 | int rec_right_gain; /* depends on target */ |
| 434 | bool peak_meter_clipcounter; /* clipping count indicator */ |
Linus Nielsen Feltzing | 478da62 | 2003-04-20 22:00:30 +0000 | [diff] [blame] | 435 | bool rec_editable; /* true means that the bit reservoir is off */ |
Björn Stenberg | 56f771e | 2003-06-04 13:48:50 +0000 | [diff] [blame] | 436 | |
| 437 | /* note: timesplit setting is not saved */ |
Björn Stenberg | cd82560 | 2003-06-10 19:24:51 +0000 | [diff] [blame] | 438 | int rec_timesplit; /* 0 = off, |
| 439 | 1 = 00:05, 2 = 00:10, 3 = 00:15, 4 = 00:30 |
| 440 | 5 = 01:00, 6 = 02:00, 7 = 04:00, 8 = 06:00 |
| 441 | 9 = 08:00, 10= 10:00, 11= 12:00, 12= 18:00, |
| 442 | 13= 24:00 */ |
Martin Scarratt | 9130a2a | 2006-07-22 17:23:05 +0000 | [diff] [blame] | 443 | int rec_sizesplit; /* 0 = off, |
| 444 | 1 = 5MB, 2 = 10MB, 3 = 15MB, 4 = 32MB |
| 445 | 5 = 64MB, 6 = 75MB, 7 = 100MB, 8 = 128MB |
| 446 | 9 = 256MB, 10= 512MB, 11= 650MB, 12= 700MB, |
| 447 | 13= 1GB, 14 = 1.5GB 15 = 1.75MB*/ |
| 448 | int rec_split_type; /* split/stop */ |
| 449 | int rec_split_method; /* time/filesize */ |
Jens Arnold | fa9dee0 | 2006-09-18 12:41:12 +0000 | [diff] [blame] | 450 | |
Linus Nielsen Feltzing | 74976c1 | 2003-12-31 03:13:29 +0000 | [diff] [blame] | 451 | int rec_prerecord_time; /* In seconds, 0-30, 0 means OFF */ |
Jonathan Gordon | 415e9d7 | 2007-07-10 07:41:37 +0000 | [diff] [blame] | 452 | char rec_directory[MAX_FILENAME+1]; |
Peter D'Hoye | 3467ba6 | 2006-02-17 22:47:56 +0000 | [diff] [blame] | 453 | int cliplight; /* 0 = off |
| 454 | 1 = main lcd |
| 455 | 2 = main and remote lcd |
| 456 | 3 = remote lcd */ |
Steve Bavin | ea358a1 | 2008-01-21 09:48:44 +0000 | [diff] [blame] | 457 | |
Jonathan Gordon | ff469ab | 2008-05-28 10:55:39 +0000 | [diff] [blame] | 458 | int rec_start_thres_db; |
| 459 | int rec_start_thres_linear; |
Linus Nielsen Feltzing | 68482bb | 2005-04-04 09:12:12 +0000 | [diff] [blame] | 460 | int rec_start_duration; /* index of trig_durations */ |
Jonathan Gordon | ff469ab | 2008-05-28 10:55:39 +0000 | [diff] [blame] | 461 | int rec_stop_thres_db; |
| 462 | int rec_stop_thres_linear; |
| 463 | int rec_stop_postrec; |
Linus Nielsen Feltzing | 68482bb | 2005-04-04 09:12:12 +0000 | [diff] [blame] | 464 | int rec_stop_gap; /* index of trig_durations */ |
| 465 | int rec_trigger_mode; /* see TRIG_MODE_XXX constants */ |
Martin Scarratt | d8103f3 | 2006-11-09 12:27:56 +0000 | [diff] [blame] | 466 | int rec_trigger_type; /* what to do when trigger released */ |
Linus Nielsen Feltzing | 68482bb | 2005-04-04 09:12:12 +0000 | [diff] [blame] | 467 | |
Peter D'Hoye | 5fc66e5 | 2006-08-16 23:26:55 +0000 | [diff] [blame] | 468 | #ifdef HAVE_AGC |
| 469 | int rec_agc_preset_mic; /* AGC mic preset modes: |
| 470 | 0 = Off |
| 471 | 1 = Safety (clip) |
| 472 | 2 = Live (slow) |
| 473 | 3 = DJ-Set (slow) |
| 474 | 4 = Medium |
| 475 | 5 = Voice (fast) */ |
| 476 | int rec_agc_preset_line; /* AGC line-in preset modes: |
| 477 | 0 = Off |
| 478 | 1 = Safety (clip) |
| 479 | 2 = Live (slow) |
| 480 | 3 = DJ-Set (slow) |
| 481 | 4 = Medium |
| 482 | 5 = Voice (fast) */ |
| 483 | int rec_agc_maxgain_mic; /* AGC maximum mic gain */ |
| 484 | int rec_agc_maxgain_line; /* AGC maximum line-in gain */ |
| 485 | int rec_agc_cliptime; /* 0.2, 0.4, 0.6, 0.8, 1s */ |
| 486 | #endif |
Jonathan Gordon | 415e9d7 | 2007-07-10 07:41:37 +0000 | [diff] [blame] | 487 | #endif /* HAVE_RECORDING */ |
Jens Arnold | ec9b202 | 2005-09-10 12:28:16 +0000 | [diff] [blame] | 488 | |
Jens Arnold | c652218 | 2007-02-18 08:46:12 +0000 | [diff] [blame] | 489 | #if CONFIG_TUNER |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 490 | int fm_region; |
| 491 | bool fm_force_mono; /* Forces Mono mode if true */ |
Hristo Kovachev | 009853f | 2006-04-02 12:23:08 +0000 | [diff] [blame] | 492 | unsigned char fmr_file[MAX_FILENAME+1]; /* last fmr preset */ |
| 493 | #endif |
Martin Scarratt | 22e7e94 | 2006-09-27 21:36:50 +0000 | [diff] [blame] | 494 | |
Björn Stenberg | f80d8a70 | 2002-06-27 00:20:00 +0000 | [diff] [blame] | 495 | /* misc options */ |
Thomas Martitz | fd14cac | 2009-03-02 19:25:50 +0000 | [diff] [blame] | 496 | #ifndef HAVE_WHEEL_ACCELERATION |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 497 | int list_accel_start_delay; /* ms before we start increaseing step size */ |
| 498 | int list_accel_wait; /* ms between increases */ |
| 499 | #endif |
Björn Stenberg | f80d8a70 | 2002-06-27 00:20:00 +0000 | [diff] [blame] | 500 | |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 501 | #ifdef HAVE_TOUCHPAD_SENSITIVITY_SETTING |
| 502 | int touchpad_sensitivity; |
| 503 | #endif |
| 504 | |
| 505 | #ifdef HAVE_HEADPHONE_DETECTION |
| 506 | int unplug_mode; /* pause on headphone unplug */ |
| 507 | int unplug_rw; /* time in s to rewind when pausing */ |
| 508 | bool unplug_autoresume; /* disable auto-resume if no phones */ |
| 509 | #endif |
| 510 | |
| 511 | #ifdef HAVE_QUICKSCREEN |
Nils Wallménius | ff197a4 | 2009-10-28 20:41:34 +0000 | [diff] [blame] | 512 | int qs_items[QUICKSCREEN_ITEM_COUNT]; |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 513 | #endif |
| 514 | |
| 515 | #if CONFIG_RTC |
Markus Braun | 22a7a2d | 2002-10-14 12:50:20 +0000 | [diff] [blame] | 516 | int timeformat; /* time format: 0=24 hour clock, 1=12 hour clock */ |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 517 | #endif |
Nils Wallménius | 0bfa3e7 | 2007-08-01 08:50:44 +0000 | [diff] [blame] | 518 | |
Frank Gevaerts | 4657301 | 2008-10-07 19:37:33 +0000 | [diff] [blame] | 519 | #ifdef HAVE_DISK_STORAGE |
Björn Stenberg | 457b8a0 | 2002-08-26 13:21:14 +0000 | [diff] [blame] | 520 | int disk_spindown; /* time until disk spindown, in seconds (0=off) */ |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 521 | int buffer_margin; /* audio buffer watermark margin, in seconds */ |
Nils Wallménius | 0bfa3e7 | 2007-08-01 08:50:44 +0000 | [diff] [blame] | 522 | #endif |
Björn Stenberg | f80d8a70 | 2002-06-27 00:20:00 +0000 | [diff] [blame] | 523 | |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 524 | int dirfilter; /* 0=display all, 1=only supported, 2=only music, |
| 525 | 3=dirs+playlists, 4=ID3 database */ |
| 526 | int show_filename_ext; /* show filename extensions in file browser? |
| 527 | 0 = no, 1 = yes, 2 = only unknown 0 */ |
| 528 | int default_codepage; /* set default codepage for tag conversion */ |
| 529 | bool hold_lr_for_scroll_in_list; /* hold L/R scrolls the list left/right */ |
| 530 | bool play_selected; /* Plays selected file even in shuffle mode */ |
| 531 | bool party_mode; /* party mode - unstoppable music */ |
| 532 | bool audioscrobbler; /* Audioscrobbler logging */ |
| 533 | bool cuesheet; |
| 534 | bool car_adapter_mode; /* 0=off 1=on */ |
| 535 | int start_in_screen; |
| 536 | #if defined(HAVE_RTC_ALARM) && \ |
| 537 | (defined(HAVE_RECORDING) || CONFIG_TUNER) |
| 538 | int alarm_wake_up_screen; |
| 539 | #endif |
| 540 | int ff_rewind_min_step; /* FF/Rewind minimum step size */ |
| 541 | int ff_rewind_accel; /* FF/Rewind acceleration (in seconds per doubling) */ |
| 542 | |
Linus Nielsen Feltzing | bb572c4 | 2002-09-27 09:31:31 +0000 | [diff] [blame] | 543 | int peak_meter_release; /* units per read out */ |
| 544 | int peak_meter_hold; /* hold time for peak meter in 1/100 s */ |
| 545 | int peak_meter_clip_hold; /* hold time for clips */ |
Linus Nielsen Feltzing | fd0cc3b | 2002-10-29 12:09:15 +0000 | [diff] [blame] | 546 | bool peak_meter_dbfs; /* show linear or dbfs values */ |
Björn Stenberg | 9c16e12 | 2003-02-14 14:14:55 +0000 | [diff] [blame] | 547 | int peak_meter_min; /* range minimum */ |
| 548 | int peak_meter_max; /* range maximum */ |
Linus Nielsen Feltzing | bb572c4 | 2002-09-27 09:31:31 +0000 | [diff] [blame] | 549 | |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 550 | unsigned char wps_file[MAX_FILENAME+1]; /* last wps */ |
Thomas Martitz | 1016ee4 | 2009-10-19 15:28:15 +0000 | [diff] [blame] | 551 | #ifdef HAVE_LCD_BITMAP |
| 552 | unsigned char sbs_file[MAX_FILENAME+1]; /* last statusbar skin */ |
| 553 | #endif |
| 554 | #ifdef HAVE_REMOTE_LCD |
| 555 | unsigned char rwps_file[MAX_FILENAME+1]; /* last remote-wps */ |
| 556 | unsigned char rsbs_file[MAX_FILENAME+1]; /* last remote statusbar skin */ |
| 557 | #endif |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 558 | unsigned char lang_file[MAX_FILENAME+1]; /* last language */ |
| 559 | unsigned char playlist_catalog_dir[MAX_FILENAME+1]; |
| 560 | int skip_length; /* skip length */ |
| 561 | int max_files_in_dir; /* Max entries in directory (file browser) */ |
| 562 | int max_files_in_playlist; /* Max entries in playlist */ |
| 563 | int volume_type; /* how volume is displayed: 0=graphic, 1=percent */ |
| 564 | int battery_display; /* how battery is displayed: 0=graphic, 1=percent */ |
| 565 | bool show_icons; /* 0=hide 1=show */ |
Andrew Mahone | 9b6d3d7 | 2009-11-07 01:26:22 +0000 | [diff] [blame] | 566 | int statusbar; /* STATUSBAR_* enum values */ |
Jonathan Gordon | f1034e0 | 2009-07-05 18:07:58 +0000 | [diff] [blame] | 567 | #ifdef HAVE_REMOTE_LCD |
Andrew Mahone | 9b6d3d7 | 2009-11-07 01:26:22 +0000 | [diff] [blame] | 568 | int remote_statusbar; |
Jonathan Gordon | f1034e0 | 2009-07-05 18:07:58 +0000 | [diff] [blame] | 569 | #endif |
Daniel Stenberg | 053d904 | 2002-08-22 15:47:30 +0000 | [diff] [blame] | 570 | |
Nils Wallménius | fedc7dc | 2007-11-18 16:45:58 +0000 | [diff] [blame] | 571 | #if CONFIG_KEYPAD == RECORDER_PAD |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 572 | bool buttonbar; /* 0=hide, 1=show */ |
Nils Wallménius | fedc7dc | 2007-11-18 16:45:58 +0000 | [diff] [blame] | 573 | #endif |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 574 | |
Alexander Levin | 07d0bfd | 2009-08-19 12:36:40 +0000 | [diff] [blame] | 575 | #ifdef HAVE_LCD_BITMAP |
| 576 | int scrollbar; /* SCROLLBAR_* enum values */ |
| 577 | int scrollbar_width; |
| 578 | #endif |
| 579 | |
Eric Linenberg | ecca123 | 2002-09-09 14:25:39 +0000 | [diff] [blame] | 580 | /* goto current song when exiting WPS */ |
| 581 | bool browse_current; /* 1=goto current song, |
| 582 | 0=goto previous location */ |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 583 | bool scroll_paginated; /* 0=dont 1=do */ |
| 584 | int scroll_speed; /* long texts scrolling speed: 1-30 */ |
| 585 | int bidir_limit; /* bidir scroll length limit */ |
| 586 | int scroll_delay; /* delay (in 1/10s) before starting scroll */ |
| 587 | int scroll_step; /* pixels to advance per update */ |
Björn Stenberg | a108ec2 | 2004-01-14 00:13:04 +0000 | [diff] [blame] | 588 | |
| 589 | /* auto bookmark settings */ |
| 590 | int autoloadbookmark; /* auto load option: 0=off, 1=ask, 2=on */ |
| 591 | int autocreatebookmark; /* auto create option: 0=off, 1=ask, 2=on */ |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 592 | int usemrb; /* use MRB list: 0=No, 1=Yes*/ |
| 593 | |
| 594 | #ifdef HAVE_DIRCACHE |
| 595 | bool dircache; /* enable directory cache */ |
Kjell Ericson | 53f156a | 2003-05-22 06:42:14 +0000 | [diff] [blame] | 596 | #endif |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 597 | #ifdef HAVE_TAGCACHE |
| 598 | #ifdef HAVE_TC_RAMCACHE |
| 599 | bool tagcache_ram; /* load tagcache to ram? */ |
| 600 | #endif |
| 601 | bool tagcache_autoupdate; /* automatically keep tagcache in sync? */ |
| 602 | bool runtimedb; /* runtime database active? */ |
| 603 | #endif /* HAVE_TAGCACHE */ |
| 604 | |
| 605 | #if LCD_DEPTH > 1 |
| 606 | unsigned char backdrop_file[MAX_FILENAME+1]; /* backdrop bitmap file */ |
| 607 | #endif |
| 608 | |
| 609 | #ifdef HAVE_LCD_COLOR |
| 610 | int bg_color; /* background color native format */ |
| 611 | int fg_color; /* foreground color native format */ |
| 612 | int lss_color; /* background color for the selector or start color for the gradient */ |
| 613 | int lse_color; /* end color for the selector gradient */ |
| 614 | int lst_color; /* color of the text for the selector */ |
| 615 | unsigned char colors_file[MAX_FILENAME+1]; |
| 616 | #endif |
| 617 | |
| 618 | /* playlist/playback settings */ |
| 619 | int repeat_mode; /* 0=off 1=repeat all 2=repeat one 3=shuffle 4=ab */ |
| 620 | int next_folder; /* move to next folder */ |
| 621 | int recursive_dir_insert; /* should directories be inserted recursively */ |
Björn Stenberg | e2628d9 | 2003-02-14 15:54:52 +0000 | [diff] [blame] | 622 | bool fade_on_stop; /* fade on pause/unpause/stop */ |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 623 | bool playlist_shuffle; |
| 624 | bool warnon_erase_dynplaylist; /* warn when erasing dynamic playlist */ |
Hardeep Sidhu | 107ebc5 | 2004-01-26 17:05:21 +0000 | [diff] [blame] | 625 | |
| 626 | /* playlist viewer settings */ |
| 627 | bool playlist_viewer_icons; /* display icons on viewer */ |
| 628 | bool playlist_viewer_indices; /* display playlist indices on viewer */ |
| 629 | int playlist_viewer_track_display; /* how to display tracks in viewer */ |
Jörg Hohensohn | 3aa99e1 | 2004-03-27 00:11:01 +0000 | [diff] [blame] | 630 | |
| 631 | /* voice UI settings */ |
| 632 | bool talk_menu; /* enable voice UI */ |
Steve Bavin | 6fd10ba | 2007-06-07 09:24:53 +0000 | [diff] [blame] | 633 | int talk_dir; /* voiced directories mode: 0=off 1=number 2=spell */ |
| 634 | bool talk_dir_clip; /* use directory .talk clips */ |
Steve Bavin | ea358a1 | 2008-01-21 09:48:44 +0000 | [diff] [blame] | 635 | int talk_file; /* voice file mode: 0=off, 1=number, 2=spell */ |
Steve Bavin | 6fd10ba | 2007-06-07 09:24:53 +0000 | [diff] [blame] | 636 | bool talk_file_clip; /* use file .talk clips */ |
Stéphane Doyon | a4f491c | 2007-11-07 03:25:33 +0000 | [diff] [blame] | 637 | bool talk_filetype; /* say file type */ |
Stéphane Doyon | da93299 | 2007-11-03 05:00:49 +0000 | [diff] [blame] | 638 | bool talk_battery_level; |
Jörg Hohensohn | 5c8a2f5 | 2004-06-22 09:16:44 +0000 | [diff] [blame] | 639 | |
| 640 | /* file browser sorting */ |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 641 | bool sort_case; /* dir sort order: 0=case insensitive, 1=sensitive */ |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 642 | int sort_dir; /* 0=alpha, 1=date (old first), 2=date (new first) */ |
Thomas Martitz | d13f1a4 | 2009-03-01 17:55:59 +0000 | [diff] [blame] | 643 | int sort_file; /* 0=alpha, 1=date, 2=date (new first), 3=type */ |
| 644 | int interpret_numbers; /* true=strnatcmp, false=strcmp */ |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 645 | |
| 646 | /* power settings */ |
| 647 | int poweroff; /* idle power off timer */ |
| 648 | int battery_capacity; /* in mAh */ |
| 649 | |
| 650 | #if BATTERY_TYPES_COUNT > 1 |
| 651 | int battery_type; /* for units which can take multiple types (Ondio). */ |
| 652 | #endif |
| 653 | #ifdef HAVE_SPDIF_POWER |
| 654 | bool spdif_enable; /* S/PDIF power on/off */ |
| 655 | #endif |
| 656 | #ifdef HAVE_USB_CHARGING_ENABLE |
| 657 | bool usb_charging; |
| 658 | #endif |
| 659 | |
| 660 | /* device settings */ |
| 661 | #ifdef HAVE_LCD_CONTRAST |
| 662 | int contrast; /* lcd contrast */ |
| 663 | #endif |
| 664 | |
| 665 | #ifdef HAVE_LCD_BITMAP |
| 666 | #ifdef HAVE_LCD_INVERT |
| 667 | bool invert; /* invert display */ |
| 668 | #endif |
| 669 | #ifdef HAVE_LCD_FLIP |
| 670 | bool flip_display; /* turn display (and button layout) by 180 degrees */ |
| 671 | #endif |
| 672 | int cursor_style; /* style of the selection cursor */ |
| 673 | int screen_scroll_step; |
| 674 | int show_path_in_browser; /* 0=off, 1=current directory, 2=full path */ |
| 675 | bool offset_out_of_view; |
| 676 | unsigned char icon_file[MAX_FILENAME+1]; |
| 677 | unsigned char viewers_icon_file[MAX_FILENAME+1]; |
| 678 | unsigned char font_file[MAX_FILENAME+1]; /* last font */ |
| 679 | unsigned char kbd_file[MAX_FILENAME+1]; /* last keyboard */ |
| 680 | #endif /* HAVE_LCD_BITMAP */ |
| 681 | |
| 682 | #ifdef HAVE_LCD_CHARCELLS |
| 683 | int jump_scroll; /* Fast jump when scrolling */ |
| 684 | int jump_scroll_delay; /* Delay between jump scroll screens */ |
| 685 | #endif |
| 686 | |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 687 | int backlight_timeout; /* backlight off timeout: 0-18 0=never, |
| 688 | 1=always, |
| 689 | then according to timeout_values[] */ |
| 690 | bool caption_backlight; /* turn on backlight at end and start of track */ |
| 691 | bool bl_filter_first_keypress; /* filter first keypress when dark? */ |
| 692 | #if CONFIG_CHARGING |
| 693 | int backlight_timeout_plugged; |
| 694 | #endif |
Thomas Martitz | d33bff2 | 2009-03-09 23:13:50 +0000 | [diff] [blame] | 695 | #ifdef HAVE_BACKLIGHT |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 696 | #ifdef HAS_BUTTON_HOLD |
| 697 | int backlight_on_button_hold; /* what to do with backlight when hold |
| 698 | switch is on */ |
| 699 | #endif |
| 700 | #ifdef HAVE_LCD_SLEEP_SETTING |
| 701 | int lcd_sleep_after_backlight_off; /* when to put lcd to sleep after backlight |
| 702 | has turned off */ |
| 703 | #endif |
Thomas Martitz | d33bff2 | 2009-03-09 23:13:50 +0000 | [diff] [blame] | 704 | #endif |
Thomas Martitz | 12a0ed3 | 2009-01-26 23:21:49 +0000 | [diff] [blame] | 705 | #if defined(HAVE_BACKLIGHT_FADING_INT_SETTING) |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 706 | int backlight_fade_in; /* backlight fade in timing: 0..3 */ |
| 707 | int backlight_fade_out; /* backlight fade in timing: 0..7 */ |
Thomas Martitz | 12a0ed3 | 2009-01-26 23:21:49 +0000 | [diff] [blame] | 708 | #elif defined(HAVE_BACKLIGHT_FADING_BOOL_SETTING) |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 709 | bool backlight_fade_in; |
| 710 | bool backlight_fade_out; |
| 711 | #endif |
| 712 | #ifdef HAVE_BACKLIGHT_BRIGHTNESS |
| 713 | int brightness; |
| 714 | #endif |
Steve Bavin | ea358a1 | 2008-01-21 09:48:44 +0000 | [diff] [blame] | 715 | |
Christian Gmeiner | 7c1879b | 2005-04-15 12:08:49 +0000 | [diff] [blame] | 716 | #ifdef HAVE_REMOTE_LCD |
Christi Scarborough | be78945 | 2005-07-05 22:27:54 +0000 | [diff] [blame] | 717 | /* remote lcd */ |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 718 | int remote_contrast; /* lcd contrast: 0-63 0=low 63=high */ |
| 719 | int remote_backlight_timeout; /* backlight off timeout: 0-18 0=never, |
| 720 | 1=always, then according to timeout_values[] */ |
| 721 | int remote_backlight_timeout_plugged; |
| 722 | int remote_scroll_speed; /* long texts scrolling speed: 1-30 */ |
| 723 | int remote_scroll_delay; /* delay (in 1/10s) before starting scroll */ |
| 724 | int remote_scroll_step; /* pixels to advance per update */ |
| 725 | int remote_bidir_limit; /* bidir scroll length limit */ |
| 726 | bool remote_invert; /* invert display */ |
| 727 | bool remote_flip_display; /* turn display (and button layout) by 180 degrees */ |
Jens Arnold | b51f7df | 2005-11-21 23:55:39 +0000 | [diff] [blame] | 728 | bool remote_caption_backlight; /* turn on backlight at end and start of track */ |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 729 | bool remote_bl_filter_first_keypress; /* filter first remote keypress when remote dark? */ |
| 730 | unsigned char remote_icon_file[MAX_FILENAME+1]; |
| 731 | unsigned char remote_viewers_icon_file[MAX_FILENAME+1]; |
Michael Sevakis | 3d2e10b | 2006-09-10 02:00:40 +0000 | [diff] [blame] | 732 | #ifdef HAS_REMOTE_BUTTON_HOLD |
| 733 | int remote_backlight_on_button_hold; /* what to do with remote backlight when hold |
| 734 | switch is on */ |
| 735 | #endif |
Jens Arnold | b51f7df | 2005-11-21 23:55:39 +0000 | [diff] [blame] | 736 | #ifdef HAVE_REMOTE_LCD_TICKING |
Miika Pekkarinen | 05fdb1a | 2005-11-19 07:58:20 +0000 | [diff] [blame] | 737 | bool remote_reduce_ticking; /* 0=normal operation, |
| 738 | 1=EMI reduce on with cost more CPU. */ |
Christian Gmeiner | 7c1879b | 2005-04-15 12:08:49 +0000 | [diff] [blame] | 739 | #endif |
Michael Sevakis | 3d2e10b | 2006-09-10 02:00:40 +0000 | [diff] [blame] | 740 | #endif /* HAVE_REMOTE_LCD */ |
Steve Bavin | ea358a1 | 2008-01-21 09:48:44 +0000 | [diff] [blame] | 741 | |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 742 | #if CONFIG_CODEC == MAS3507D |
| 743 | bool line_in; /* false=off, true=active */ |
Christi Scarborough | 4c0b83f | 2005-11-17 20:14:59 +0000 | [diff] [blame] | 744 | #endif |
Dan Everton | 88abdd9 | 2006-02-07 14:07:46 +0000 | [diff] [blame] | 745 | |
Jonathan Gordon | 4b1d1b4 | 2007-04-22 13:02:24 +0000 | [diff] [blame] | 746 | #ifdef HAVE_BUTTON_LIGHT |
Jens Arnold | 5f1ec30 | 2007-10-07 15:02:02 +0000 | [diff] [blame] | 747 | int buttonlight_timeout; |
Jonathan Gordon | 4b1d1b4 | 2007-04-22 13:02:24 +0000 | [diff] [blame] | 748 | #endif |
Karl Kurbjun | 6f95ab7 | 2007-05-08 06:45:38 +0000 | [diff] [blame] | 749 | #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS |
| 750 | int buttonlight_brightness; |
| 751 | #endif |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 752 | |
| 753 | #ifdef IPOD_ACCESSORY_PROTOCOL |
| 754 | int serial_bitrate; /* 0=auto 1=9600 2=19200 3=38400 4=57600 */ |
Michael Sevakis | 873e0fd | 2007-07-22 21:02:24 +0000 | [diff] [blame] | 755 | #endif |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 756 | #ifdef HAVE_ACCESSORY_SUPPLY |
| 757 | bool accessory_supply; /* 0=off 1=on, accessory power supply for iPod */ |
Christian Gmeiner | 8181a0c | 2007-08-27 16:04:32 +0000 | [diff] [blame] | 758 | #endif |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 759 | |
Maurus Cuelenaere | 6c252a6 | 2009-03-02 18:18:24 +0000 | [diff] [blame] | 760 | #ifdef HAVE_SPEAKER |
| 761 | bool speaker_enabled; |
| 762 | #endif |
Thomas Martitz | 62f3e95 | 2009-03-27 13:53:29 +0000 | [diff] [blame] | 763 | bool prevent_skip; |
Maurus Cuelenaere | 6c252a6 | 2009-03-02 18:18:24 +0000 | [diff] [blame] | 764 | |
Rob Purchase | ed1a335 | 2009-03-24 21:55:05 +0000 | [diff] [blame] | 765 | #ifdef HAVE_TOUCHSCREEN |
| 766 | int touch_mode; |
Maurus Cuelenaere | b8435f5 | 2009-06-16 17:04:47 +0000 | [diff] [blame] | 767 | struct touchscreen_parameter ts_calibration_data; |
Rob Purchase | ed1a335 | 2009-03-24 21:55:05 +0000 | [diff] [blame] | 768 | #endif |
| 769 | |
Jens Arnold | 4c75ece | 2009-07-11 21:21:33 +0000 | [diff] [blame] | 770 | #ifdef HAVE_PITCHSCREEN |
Alexander Levin | cc7c665 | 2009-07-11 16:46:19 +0000 | [diff] [blame] | 771 | /* pitch screen settings */ |
| 772 | bool pitch_mode_semitone; |
| 773 | #if CONFIG_CODEC == SWCODEC |
| 774 | bool pitch_mode_timestretch; |
| 775 | #endif |
Jens Arnold | 4c75ece | 2009-07-11 21:21:33 +0000 | [diff] [blame] | 776 | #endif |
Nils Wallménius | 3681ff1 | 2009-01-03 12:48:06 +0000 | [diff] [blame] | 777 | /* If values are just added to the end, no need to bump plugin API |
| 778 | version. */ |
| 779 | /* new stuff to be added at the end */ |
Tomer Shalev | 8c5141b | 2009-09-30 10:06:04 +0000 | [diff] [blame] | 780 | |
| 781 | #ifdef USB_ENABLE_HID |
Tomer Shalev | 83d24f8 | 2009-10-23 13:29:19 +0000 | [diff] [blame] | 782 | bool usb_hid; |
Tomer Shalev | 8c5141b | 2009-09-30 10:06:04 +0000 | [diff] [blame] | 783 | int usb_keypad_mode; |
| 784 | #endif |
| 785 | |
Thomas Martitz | 4c48b59 | 2009-08-16 22:20:11 +0000 | [diff] [blame] | 786 | #ifdef HAVE_LCD_BITMAP |
| 787 | unsigned char ui_vp_config[64]; /* viewport string for the lists */ |
| 788 | #ifdef HAVE_REMOTE_LCD |
| 789 | unsigned char remote_ui_vp_config[64]; /* viewport string for the remote lists */ |
| 790 | #endif |
Maurus Cuelenaere | e183259 | 2009-08-18 00:43:36 +0000 | [diff] [blame] | 791 | #endif |
Jeffrey Goode | 2b7ef6b | 2009-08-18 03:24:45 +0000 | [diff] [blame] | 792 | |
| 793 | #if CONFIG_CODEC == SWCODEC |
Jeffrey Goode | cf19ba5 | 2009-09-25 15:46:38 +0000 | [diff] [blame] | 794 | int compressor_threshold; |
Jeffrey Goode | cf19ba5 | 2009-09-25 15:46:38 +0000 | [diff] [blame] | 795 | int compressor_makeup_gain; |
Jeffrey Goode | 95e2d72 | 2009-11-04 18:14:36 +0000 | [diff] [blame] | 796 | int compressor_ratio; |
Jeffrey Goode | cf19ba5 | 2009-09-25 15:46:38 +0000 | [diff] [blame] | 797 | int compressor_knee; |
| 798 | int compressor_release_time; |
Jeffrey Goode | 2b7ef6b | 2009-08-18 03:24:45 +0000 | [diff] [blame] | 799 | #endif |
| 800 | |
Teruaki Kawashima | 92fb1df | 2009-11-08 13:14:50 +0000 | [diff] [blame] | 801 | #ifdef HAVE_MORSE_INPUT |
| 802 | bool morse_input; /* text input method setting */ |
| 803 | #endif |
| 804 | |
Björn Stenberg | f80d8a70 | 2002-06-27 00:20:00 +0000 | [diff] [blame] | 805 | }; |
| 806 | |
Jonathan Gordon | 41bd24e | 2007-01-29 13:18:57 +0000 | [diff] [blame] | 807 | /** global variables **/ |
| 808 | extern long lasttime; |
Björn Stenberg | f80d8a70 | 2002-06-27 00:20:00 +0000 | [diff] [blame] | 809 | /* global settings */ |
| 810 | extern struct user_settings global_settings; |
Jonathan Gordon | 228d62d | 2007-01-24 02:19:22 +0000 | [diff] [blame] | 811 | /* global status */ |
| 812 | extern struct system_status global_status; |
Dan Everton | eb1dd38 | 2006-08-15 09:38:13 +0000 | [diff] [blame] | 813 | |
Björn Stenberg | f80d8a70 | 2002-06-27 00:20:00 +0000 | [diff] [blame] | 814 | #endif /* __SETTINGS_H__ */ |