summaryrefslogtreecommitdiffstats
path: root/apps/settings_list.h
diff options
context:
space:
mode:
Diffstat (limited to 'apps/settings_list.h')
-rw-r--r--apps/settings_list.h100
1 files changed, 100 insertions, 0 deletions
diff --git a/apps/settings_list.h b/apps/settings_list.h
new file mode 100644
index 0000000000..01e8cea1e7
--- /dev/null
+++ b/apps/settings_list.h
@@ -0,0 +1,100 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id: $
+ *
+ * Copyright (C) 2007 Jonathan Gordon
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+#ifndef __SETTINGSLIST_H
+#define __SETTINGSLIST_H
+#include <stdio.h>
+#include <stddef.h>
+#include <stdbool.h>
+#include <limits.h>
+#include "inttypes.h"
+
+union storage_type {
+ int int_;
+ unsigned int uint_;
+ bool bool_;
+ char *charptr;
+ unsigned char *ucharptr;
+};
+/* the variable type for the setting */
+#define F_T_INT 1
+#define F_T_UINT 2
+#define F_T_BOOL 3
+#define F_T_CHARPTR 4
+#define F_T_UCHARPTR 5
+#define F_T_MASK 0x7
+
+struct sound_setting {
+ int setting; /* from the enum in firmware/sound.h */
+};
+#define F_T_SOUND 0x8 /* this variable uses the set_sound stuff, \
+ | with one of the above types (usually F_T_INT) \
+ These settings get the default from sound_default(setting); */
+struct bool_setting {
+ void (*option_callback)(bool);
+ int lang_yes;
+ int lang_no;
+};
+#define F_BOOL_SETTING F_T_BOOL|0x10
+#define F_RGB 0x20
+
+struct int_setting {
+ void (*option_callback)(int);
+ int min;
+ int max;
+ int step;
+};
+#define F_NVRAM_BYTES_MASK 0xE00 /*0-4 bytes can be stored */
+#define F_NVRAM_MASK_SHIFT 9
+#define NVRAM_CONFIG_VERSION 1
+/* Above define should be bumped if
+- a new NVRAM setting is added between 2 other NVRAM settings
+- number of bytes for a NVRAM setting is changed
+- a NVRAM setting is removed
+*/
+
+struct filename_setting {
+ const char* prefix;
+ const char* suffix;
+ int max_len;
+};
+#define F_FILENAME 0x40
+struct settings_list {
+ uint32_t flags; /* ____ ____ ____ ____ ____ NNN_ _FRB STTT */
+ void *setting;
+ union storage_type default_val;
+ const char *cfg_name; /* this settings name in the cfg file */
+ const char *cfg_vals; /*comma seperated legal values, or NULL */
+ /* used with F_T_UCHARPTR this is the folder prefix */
+ union {
+ void *RESERVED; /* to stop compile errors, will be removed */
+ struct sound_setting *sound_setting; /* use F_T_SOUND for this */
+ struct bool_setting *bool_setting; /* F_BOOL_SETTING */
+ struct filename_setting *filename_setting; /* use F_FILENAME */
+ };
+};
+
+#ifndef PLUGIN
+/* not needed for plugins and just causes compile error,
+ possibly fix proberly later */
+extern const struct settings_list settings[];
+extern const int nb_settings;
+
+#endif
+
+#endif