diff options
Diffstat (limited to 'apps/settings.c')
-rw-r--r-- | apps/settings.c | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/apps/settings.c b/apps/settings.c index c7ab9e411c..946286dc75 100644 --- a/apps/settings.c +++ b/apps/settings.c | |||
@@ -519,6 +519,8 @@ void settings_apply(void) | |||
519 | cpu_sleep(global_settings.cpu_sleep); | 519 | cpu_sleep(global_settings.cpu_sleep); |
520 | } | 520 | } |
521 | 521 | ||
522 | static void set_cfg_bool(bool* variable, char* value); | ||
523 | |||
522 | /* | 524 | /* |
523 | * load settings from disk or RTC RAM | 525 | * load settings from disk or RTC RAM |
524 | */ | 526 | */ |
@@ -527,6 +529,8 @@ void settings_load(void) | |||
527 | 529 | ||
528 | DEBUGF( "reload_all_settings()\n" ); | 530 | DEBUGF( "reload_all_settings()\n" ); |
529 | 531 | ||
532 | // set_cfg_bool(&global_settings.playlist_shuffle, "off"); | ||
533 | |||
530 | /* populate settings with default values */ | 534 | /* populate settings with default values */ |
531 | settings_reset(); | 535 | settings_reset(); |
532 | 536 | ||
@@ -776,6 +780,39 @@ static void set_sound(char* value, int type, int* setting) | |||
776 | #endif | 780 | #endif |
777 | } | 781 | } |
778 | 782 | ||
783 | static void set_cfg_bool(bool* variable, char* value) | ||
784 | { | ||
785 | /* look for the 'n' in 'on' */ | ||
786 | if ((value[1] & 0xdf) == 'N') | ||
787 | *variable = true; | ||
788 | else | ||
789 | *variable = false; | ||
790 | } | ||
791 | |||
792 | static void set_cfg_int(int* variable, char* value, int min, int max ) | ||
793 | { | ||
794 | *variable = atoi(value); | ||
795 | |||
796 | if (*variable < min) | ||
797 | *variable = min; | ||
798 | else | ||
799 | if (*variable > max) | ||
800 | *variable = max; | ||
801 | } | ||
802 | |||
803 | static void set_cfg_option(int* variable, char* value, | ||
804 | char* options[], int numoptions ) | ||
805 | { | ||
806 | int i; | ||
807 | |||
808 | for (i=0; i<numoptions; i++) { | ||
809 | if (!strcasecmp(options[i], value)) { | ||
810 | *variable = i; | ||
811 | break; | ||
812 | } | ||
813 | } | ||
814 | } | ||
815 | |||
779 | bool settings_load_config(char* file) | 816 | bool settings_load_config(char* file) |
780 | { | 817 | { |
781 | int fd; | 818 | int fd; |
@@ -803,6 +840,111 @@ bool settings_load_config(char* file) | |||
803 | set_sound(value, SOUND_BALANCE, &global_settings.balance); | 840 | set_sound(value, SOUND_BALANCE, &global_settings.balance); |
804 | else if (!strcasecmp(name, "channels")) | 841 | else if (!strcasecmp(name, "channels")) |
805 | set_sound(value, SOUND_CHANNELS, &global_settings.channel_config); | 842 | set_sound(value, SOUND_CHANNELS, &global_settings.channel_config); |
843 | else if (!strcasecmp(name, "wps")) | ||
844 | strncpy(global_settings.wps_file, value, MAX_FILENAME); | ||
845 | else if (!strcasecmp(name, "lang")) | ||
846 | strncpy(global_settings.lang_file, value, MAX_FILENAME); | ||
847 | #ifdef HAVE_LCD_BITMAP | ||
848 | else if (!strcasecmp(name, "font")) | ||
849 | strncpy(global_settings.font_file, value, MAX_FILENAME); | ||
850 | else if (!strcasecmp(name, "scroll step")) | ||
851 | set_cfg_int(&global_settings.scroll_step, value, 1, LCD_WIDTH); | ||
852 | else if (!strcasecmp(name, "bidir limit")) | ||
853 | set_cfg_int(&global_settings.bidir_limit, value, 0, 200); | ||
854 | else if (!strcasecmp(name, "statusbar")) | ||
855 | set_cfg_bool(&global_settings.statusbar, value); | ||
856 | else if (!strcasecmp(name, "peak meter release")) | ||
857 | set_cfg_int(&global_settings.peak_meter_release, value, 1, 0x7e); | ||
858 | else if (!strcasecmp(name, "peak meter hold")) { | ||
859 | static char* options[] = { | ||
860 | "off","200ms","300ms","500ms", | ||
861 | "1","2","3","4","5","6","7","8","9","10", | ||
862 | "15","20","25","30","45","60","90", | ||
863 | "2min","3min","5min","10min","20min","45min","90min"}; | ||
864 | set_cfg_option(&global_settings.peak_meter_hold, value, | ||
865 | options, 28); | ||
866 | } | ||
867 | else if (!strcasecmp(name, "peak meter clip hold")) { | ||
868 | static char* options[] = { | ||
869 | "on","1","2","3","4","5","6","7","8","9","10", | ||
870 | "15","20","25","30","45","60","90", | ||
871 | "2min","3min","5min","10min","20min","45min","90min"}; | ||
872 | set_cfg_option(&global_settings.peak_meter_clip_hold, value, | ||
873 | options, 25); | ||
874 | } | ||
875 | else if (!strcasecmp(name, "peak meter dbfs")) | ||
876 | set_cfg_bool(&global_settings.peak_meter_dbfs, value); | ||
877 | else if (!strcasecmp(name, "peak meter min")) | ||
878 | set_cfg_int(&global_settings.peak_meter_min, value, 0, 100); | ||
879 | else if (!strcasecmp(name, "peak meter max")) | ||
880 | set_cfg_int(&global_settings.peak_meter_max, value, 0, 100); | ||
881 | else if (!strcasecmp(name, "peak meter busy")) | ||
882 | set_cfg_bool(&global_settings.peak_meter_performance, value); | ||
883 | #endif | ||
884 | else if (!strcasecmp(name, "shuffle")) | ||
885 | set_cfg_bool(&global_settings.playlist_shuffle, value); | ||
886 | else if (!strcasecmp(name, "repeat")) { | ||
887 | static char* options[] = {"off", "all", "one"}; | ||
888 | set_cfg_option(&global_settings.repeat_mode, value, options, 3); | ||
889 | } | ||
890 | else if (!strcasecmp(name, "resume")) | ||
891 | set_cfg_int(&global_settings.resume, value, 0, 3); | ||
892 | else if (!strcasecmp(name, "sort case")) | ||
893 | set_cfg_bool(&global_settings.sort_case, value); | ||
894 | else if (!strcasecmp(name, "show files")) { | ||
895 | static char* options[] = {"all", "supported","music"}; | ||
896 | set_cfg_option(&global_settings.dirfilter, value, options, 3); | ||
897 | } | ||
898 | else if (!strcasecmp(name, "follow playlist")) | ||
899 | set_cfg_bool(&global_settings.browse_current, value); | ||
900 | else if (!strcasecmp(name, "play selected")) | ||
901 | set_cfg_bool(&global_settings.play_selected, value); | ||
902 | else if (!strcasecmp(name, "volume display")) { | ||
903 | static char* options[] = {"numeric", "graphic"}; | ||
904 | set_cfg_option(&global_settings.volume_type, value, options, 2); | ||
905 | } | ||
906 | else if (!strcasecmp(name, "battery display")) { | ||
907 | static char* options[] = {"numeric", "graphic"}; | ||
908 | set_cfg_option(&global_settings.battery_type, value, options, 2); | ||
909 | } | ||
910 | else if (!strcasecmp(name, "time format")) { | ||
911 | static char* options[] = {"24hour", "12hour"}; | ||
912 | set_cfg_option(&global_settings.timeformat, value, options, 2); | ||
913 | } | ||
914 | else if (!strcasecmp(name, "contrast")) | ||
915 | set_cfg_int(&global_settings.contrast, value, | ||
916 | 0, MAX_CONTRAST_SETTING); | ||
917 | else if (!strcasecmp(name, "scrollbar")) | ||
918 | set_cfg_bool(&global_settings.scrollbar, value); | ||
919 | else if (!strcasecmp(name, "scroll speed")) | ||
920 | set_cfg_int(&global_settings.scroll_speed, value, 1, 10); | ||
921 | else if (!strcasecmp(name, "scan min step")) { | ||
922 | static char* options[] = | ||
923 | {"1","2","3","4","5","6","8","10","15","20","25"}; | ||
924 | set_cfg_option(&global_settings.ff_rewind_min_step, value, | ||
925 | options, 11); | ||
926 | } | ||
927 | else if (!strcasecmp(name, "scan accel")) | ||
928 | set_cfg_int(&global_settings.ff_rewind_min_step, value, 0, 15); | ||
929 | else if (!strcasecmp(name, "scroll delay")) | ||
930 | set_cfg_int(&global_settings.scroll_delay, value, 0, 250); | ||
931 | else if (!strcasecmp(name, "backlight timeout")) { | ||
932 | static char* options[] = { | ||
933 | "off","on","1","2","3","4","5","6","7","8","9", | ||
934 | "10","15","20","30","45","60","90"}; | ||
935 | set_cfg_option(&global_settings.backlight_timeout, value, | ||
936 | options, 18); | ||
937 | } | ||
938 | else if (!strcasecmp(name, "backlight when plugged")) | ||
939 | set_cfg_bool(&global_settings.backlight_on_when_charging, value); | ||
940 | else if (!strcasecmp(name, "antiskip")) | ||
941 | set_cfg_int(&global_settings.buffer_margin, value, 0, 7); | ||
942 | else if (!strcasecmp(name, "disk spindown")) | ||
943 | set_cfg_int(&global_settings.disk_spindown, value, 3, 254); | ||
944 | #ifdef HAVE_ATA_POWER_OFF | ||
945 | else if (!strcasecmp(name, "disk poweroff")) | ||
946 | set_cfg_bool(&global_settings.disk_poweroff, value); | ||
947 | #endif | ||
806 | #ifdef HAVE_MAS3587F | 948 | #ifdef HAVE_MAS3587F |
807 | else if (!strcasecmp(name, "loudness")) | 949 | else if (!strcasecmp(name, "loudness")) |
808 | set_sound(value, SOUND_LOUDNESS, &global_settings.loudness); | 950 | set_sound(value, SOUND_LOUDNESS, &global_settings.loudness); |
@@ -810,10 +952,42 @@ bool settings_load_config(char* file) | |||
810 | set_sound(value, SOUND_SUPERBASS, &global_settings.bass_boost); | 952 | set_sound(value, SOUND_SUPERBASS, &global_settings.bass_boost); |
811 | else if (!strcasecmp(name, "auto volume")) | 953 | else if (!strcasecmp(name, "auto volume")) |
812 | set_sound(value, SOUND_AVC, &global_settings.avc); | 954 | set_sound(value, SOUND_AVC, &global_settings.avc); |
955 | else if (!strcasecmp(name, "rec mic gain")) | ||
956 | set_sound(value, SOUND_MIC_GAIN, &global_settings.rec_mic_gain); | ||
957 | else if (!strcasecmp(name, "rec left gain")) | ||
958 | set_sound(value, SOUND_LEFT_GAIN, &global_settings.rec_left_gain); | ||
959 | else if (!strcasecmp(name, "rec right gain")) | ||
960 | set_sound(value, SOUND_RIGHT_GAIN, &global_settings.rec_right_gain); | ||
961 | else if (!strcasecmp(name, "rec quality")) | ||
962 | set_cfg_int(&global_settings.rec_quality, value, 0, 7); | ||
963 | else if (!strcasecmp(name, "rec source")) { | ||
964 | static char* options[] = {"mic", "line", "spdif"}; | ||
965 | set_cfg_option(&global_settings.rec_source, value, options, 3); | ||
966 | } | ||
967 | else if (!strcasecmp(name, "rec frequency")) { | ||
968 | static char* options[] = {"44", "48", "32", "22", "24", "16"}; | ||
969 | set_cfg_option(&global_settings.rec_frequency, value, options, 6); | ||
970 | } | ||
971 | else if (!strcasecmp(name, "rec channels")) { | ||
972 | static char* options[] = {"stereo", "mono"}; | ||
973 | set_cfg_option(&global_settings.rec_channels, value, options, 2); | ||
974 | } | ||
975 | #endif | ||
976 | else if (!strcasecmp(name, "poweroff")) | ||
977 | set_cfg_int(&global_settings.poweroff, value, 0, 15); | ||
978 | else if (!strcasecmp(name, "battery capacity")) | ||
979 | set_cfg_int(&global_settings.battery_capacity, value, | ||
980 | 1500, BATTERY_CAPACITY_MAX); | ||
981 | #ifdef HAVE_CHARGE_CTRL | ||
982 | else if (!strcasecmp(name, "deep discharge")) | ||
983 | set_cfg_bool(&global_settings.discharge, value); | ||
984 | else if (!strcasecmp(name, "trickle charge")) | ||
985 | set_cfg_bool(&global_settings.trickle_charge, value); | ||
813 | #endif | 986 | #endif |
814 | } | 987 | } |
815 | 988 | ||
816 | close(fd); | 989 | close(fd); |
990 | settings_apply(); | ||
817 | settings_save(); | 991 | settings_save(); |
818 | return true; | 992 | return true; |
819 | } | 993 | } |