summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUwe Freese <thebreaker@rockbox.org>2002-12-16 22:58:48 +0000
committerUwe Freese <thebreaker@rockbox.org>2002-12-16 22:58:48 +0000
commit0bf70e65e8b61fceb4b2833277b36ba3ad14fdbf (patch)
tree20e05355105f0bbbddef5a20a4cbbc7d01013364
parentae1ba1d5de779ff66d5a86bfb6c5326f3e902ac3 (diff)
downloadrockbox-0bf70e65e8b61fceb4b2833277b36ba3ad14fdbf.zip
rockbox-0bf70e65e8b61fceb4b2833277b36ba3ad14fdbf.tar.gz
rockbox-0bf70e65e8b61fceb4b2833277b36ba3ad14fdbf.tar.bz2
rockbox-0bf70e65e8b61fceb4b2833277b36ba3ad14fdbf.tar.xz
battery capacity (1500-2400 in 50mAh steps) saved to disk
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3008 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/settings.c8
-rw-r--r--apps/settings.h9
-rw-r--r--apps/settings_menu.c25
-rw-r--r--firmware/powermgmt.c6
-rw-r--r--firmware/powermgmt.h1
5 files changed, 20 insertions, 29 deletions
diff --git a/apps/settings.c b/apps/settings.c
index 64a1a8c..9d0a9f6 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -126,6 +126,7 @@ modified unless the header & checksum test fails.
Rest of config block, only saved to disk:
+0xB1 (int) battery capacity
0xB5 scroll step in pixels
0xB6 scroll start and endpoint delay
0xB7 bidir scroll setting (bidi if 0-200% longer than screen width)
@@ -368,6 +369,7 @@ int settings_save( void )
config_block[0x29]=(unsigned char)(global_settings.topruntime >> 8);
}
+ memcpy(&config_block[0xb1], &global_settings.battery_capacity, 4);
config_block[0xb5]=(unsigned char)global_settings.scroll_step;
config_block[0xb6]=(unsigned char)global_settings.scroll_delay;
config_block[0xb7]=(unsigned char)global_settings.bidir_limit;
@@ -466,6 +468,8 @@ void settings_apply(void)
enable_trickle_charge(global_settings.trickle_charge);
#endif
+ set_battery_capacity(global_settings.battery_capacity);
+
#ifdef HAVE_LCD_BITMAP
settings_apply_pm_range();
peak_meter_init_times(
@@ -648,6 +652,8 @@ void settings_load(void)
global_settings.topruntime =
config_block[0x28] | (config_block[0x29] << 8);
+ memcpy(&global_settings.battery_capacity, &config_block[0xb1], 4);
+
if (config_block[0xb5] != 0xff)
global_settings.scroll_step = config_block[0xb5];
@@ -831,7 +837,7 @@ void settings_reset(void) {
global_settings.backlight_timeout = DEFAULT_BACKLIGHT_TIMEOUT_SETTING;
global_settings.backlight_on_when_charging =
DEFAULT_BACKLIGHT_ON_WHEN_CHARGING_SETTING;
- global_settings.battery_capacity = 0; /* 1500 mAh */
+ global_settings.battery_capacity = 1500; /* mAh */
global_settings.trickle_charge = true;
global_settings.dirfilter = SHOW_MUSIC;
global_settings.sort_case = false;
diff --git a/apps/settings.h b/apps/settings.h
index a2f7692..41f9b80 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -85,14 +85,7 @@ struct user_settings
bool backlight_on_when_charging;
bool discharge; /* maintain charge of at least: false = 85%, true = 10% */
bool trickle_charge; /* do trickle charging: 0=off, 1=on */
- int battery_capacity; /* 0 = 1500 mAh
- 1 = 1600 mAh
- 2 = 1700 mAh
- 3 = 1800 mAh
- 4 = 1900 mAh
- 5 = 2000 mAh
- 6 = 2100 mAh
- 7 = 2200 mAh */
+ int battery_capacity; /* in mAh */
/* resume settings */
diff --git a/apps/settings_menu.c b/apps/settings_menu.c
index 9e7320e..94f6cc7 100644
--- a/apps/settings_menu.c
+++ b/apps/settings_menu.c
@@ -428,27 +428,16 @@ static bool bidir_limit(void)
}
#endif
+#ifndef SIMULATOR
/**
* Menu to set the battery capacity
*/
-static bool battery_capacity(void) {
- bool retval = false;
-
- char* names[] = { "1500 mAh ", "1600 mAh ",
- "1700 mAh ", "1800 mAh ",
- "1900 mAh ", "2000 mAh ",
- "2100 mAh ", "2200 mAh "
- };
-
- retval = set_option( str(LANG_BATTERY_CAPACITY),
- &global_settings.battery_capacity, names, 8, NULL);
-
-#ifndef SIMULATOR
- set_battery_capacity(global_settings.battery_capacity);
-#endif /* SIMULATOR */
-
- return retval;
+static bool battery_capacity(void)
+{
+ return set_int(str(LANG_BATTERY_CAPACITY), " mAh", &global_settings.battery_capacity,
+ &set_battery_capacity, 50, 1500, BATTERY_CAPACITY_MAX );
}
+#endif
#ifdef HAVE_CHARGE_CTRL
static bool deep_discharge(void)
@@ -742,7 +731,9 @@ static bool system_settings_menu(void)
#ifdef HAVE_ATA_POWER_OFF
{ str(LANG_POWEROFF), poweroff },
#endif
+#ifndef SIMULATOR
{ str(LANG_BATTERY_CAPACITY), battery_capacity },
+#endif
#ifdef HAVE_CHARGE_CTRL
{ str(LANG_DISCHARGE), deep_discharge },
{ str(LANG_TRICKLE_CHARGE), trickle_charge },
diff --git a/firmware/powermgmt.c b/firmware/powermgmt.c
index 7dcecb1..febcb78 100644
--- a/firmware/powermgmt.c
+++ b/firmware/powermgmt.c
@@ -73,9 +73,9 @@ int battery_capacity = 1500; /* only a default value */
void set_battery_capacity(int capacity)
{
- int values[8] = {1500, 1600, 1700, 1800, 1900, 2000, 2100, 2200};
-
- battery_capacity = values[capacity];
+ battery_capacity = capacity;
+ if ((battery_capacity > BATTERY_CAPACITY_MAX) || (battery_capacity < 1500))
+ battery_capacity = 1500;
}
#ifdef HAVE_CHARGE_CTRL
diff --git a/firmware/powermgmt.h b/firmware/powermgmt.h
index b7f8b01..ea6319c 100644
--- a/firmware/powermgmt.h
+++ b/firmware/powermgmt.h
@@ -27,6 +27,7 @@
#define BATTERY_LEVEL_FULL 585 /* 5.85V */
#define BATTERY_RANGE (BATTERY_LEVEL_FULL - BATTERY_LEVEL_EMPTY)
+#define BATTERY_CAPACITY_MAX 2400 /* max. capacity that can be selected in settings menu, min. is always 1500 */
#define POWER_HISTORY_LEN 2*60 /* 2 hours of samples, one per minute */
#define POWER_AVG_N 4 /* how many samples to take for each measurement */