1 /***************************************************************************
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
10 * Copyright (C) 2007 Jonathan Gordon
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.
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
18 ****************************************************************************/
19 #ifndef __SETTINGSLIST_H
20 #define __SETTINGSLIST_H
27 typedef int (*_isfunc_type
)(void);
34 unsigned char *ucharptr
;
37 /* the variable type for the setting */
42 #define F_T_UCHARPTR 5
45 struct sound_setting
{
46 int setting
; /* from the enum in firmware/sound.h */
48 #define F_T_SOUND 0x8 /* this variable uses the set_sound stuff, \
49 | with one of the above types (usually F_T_INT) \
50 These settings get the default from sound_default(setting); */
52 void (*option_callback
)(bool);
56 #define F_BOOL_SETTING (F_T_BOOL|0x10)
59 struct filename_setting
{
64 #define F_FILENAME 0x40
67 void (*option_callback
)(int);
72 void (*formatter
)(char*, size_t, int, const char*);
73 int32_t (*get_talk_id
)(int, int);
75 #define F_INT_SETTING 0x80
77 struct choice_setting
{
78 void (*option_callback
)(int);
81 const unsigned char **desc
;
85 #define F_CHOICE_SETTING 0x100
86 #define F_CHOICETALKS 0x200 /* uses .talks in the above struct for the talks */
87 /* and cfg_vals for the strings to display */
89 struct table_setting
{
90 void (*option_callback
)(int);
91 void (*formatter
)(char*, size_t, int, const char*);
92 int32_t (*get_talk_id
)(int, int);
97 #define F_TABLE_SETTING 0x2000
98 #define F_ALLOW_ARBITRARY_VALS 0x4000
99 /* these use the _isfunc_type type for the function */
100 /* typedef int (*_isfunc_type)(void); */
101 #define F_MIN_ISFUNC 0x100000 /* min(above) is function pointer to above type */
102 #define F_MAX_ISFUNC 0x200000 /* max(above) is function pointer to above type */
103 #define F_DEF_ISFUNC 0x400000 /* default_val is function pointer to above type */
105 #define F_THEMESETTING 0x0800000
106 #define F_RECSETTING 0x1000000
107 #define F_EQSETTING 0x2000000
108 #define F_SOUNDSETTING 0x4000000
110 #define F_NVRAM_BYTES_MASK 0xE0000 /*0-4 bytes can be stored */
111 #define F_NVRAM_MASK_SHIFT 17
112 #define NVRAM_CONFIG_VERSION 4
113 /* Above define should be bumped if
114 - a new NVRAM setting is added between 2 other NVRAM settings
115 - number of bytes for a NVRAM setting is changed
116 - a NVRAM setting is removed
118 #define F_TEMPVAR 0x0400 /* used if the setting should be set using a temp var */
119 #define F_PADTITLE 0x800 /* pad the title with spaces to force it to scroll */
120 #define F_NO_WRAP 0x1000 /* used if the list should not wrap */
122 struct settings_list
{
123 uint32_t flags
; /* ____ _SER TFFF NNN_ _ATW PTVC IFRB STTT */
125 int lang_id
; /* -1 for none */
126 union storage_type default_val
;
127 const char *cfg_name
; /* this settings name in the cfg file */
128 const char *cfg_vals
; /*comma seperated legal values, or NULL */
129 /* used with F_T_UCHARPTR this is the folder prefix */
131 const void *RESERVED
; /* to stop compile errors, will be removed */
132 const struct sound_setting
*sound_setting
; /* use F_T_SOUND for this */
133 const struct bool_setting
*bool_setting
; /* F_BOOL_SETTING */
134 const struct filename_setting
*filename_setting
; /* use F_FILENAME */
135 const struct int_setting
*int_setting
; /* use F_INT_SETTING */
136 const struct choice_setting
*choice_setting
; /* F_CHOICE_SETTING */
137 const struct table_setting
*table_setting
; /* F_TABLE_SETTING */
142 /* not needed for plugins and just causes compile error,
143 possibly fix proberly later */
144 extern const struct settings_list settings
[];
145 extern const int nb_settings
;