diff options
author | Björn Stenberg <bjorn@haxx.se> | 2002-12-03 14:18:51 +0000 |
---|---|---|
committer | Björn Stenberg <bjorn@haxx.se> | 2002-12-03 14:18:51 +0000 |
commit | f09c5f4c63e51cc05a9737d3d82dac90054a3b5e (patch) | |
tree | 86b383e83a0d7ccf0aeb8b7155748db5c74eb409 /firmware/powermgmt.h | |
parent | 67938f3451f056d9e1f4b56abf6acc54ea4a38b2 (diff) | |
download | rockbox-f09c5f4c63e51cc05a9737d3d82dac90054a3b5e.tar.gz rockbox-f09c5f4c63e51cc05a9737d3d82dac90054a3b5e.zip |
Finally, merged the improved power code from Uwe Freese:
- The battery level (percentage) is more realistic and considers if the charger is on.
- It considers the "lazyness" a battery shows when the charging has just turned on or off (see below). But this is not perfect by now.
- The battery level is good enough to estimate the remaining running time and the remaining charging time. And so the info screen now shows this info.
- The maximum time of a charging cycle is now dynamically calculated out of the battery level (percentage) and is not a fixed value.
- A minimum of 60 minutes is waited after a charging cycle stops before another one starts.
- Added another screen in the battery debug screen (press down three times).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2913 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/powermgmt.h')
-rw-r--r-- | firmware/powermgmt.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/firmware/powermgmt.h b/firmware/powermgmt.h index 329bf6005f..f0c34a4fb1 100644 --- a/firmware/powermgmt.h +++ b/firmware/powermgmt.h | |||
@@ -24,7 +24,7 @@ | |||
24 | #define BATTERY_LEVEL_SHUTDOWN 450 /* 4.5V */ | 24 | #define BATTERY_LEVEL_SHUTDOWN 450 /* 4.5V */ |
25 | #define BATTERY_LEVEL_EMPTY 465 /* 4.65V */ | 25 | #define BATTERY_LEVEL_EMPTY 465 /* 4.65V */ |
26 | #define BATTERY_LEVEL_DANGEROUS 475 /* 4.75V */ | 26 | #define BATTERY_LEVEL_DANGEROUS 475 /* 4.75V */ |
27 | #define BATTERY_LEVEL_FULL 520 /* 5.2V */ | 27 | #define BATTERY_LEVEL_FULL 585 /* 5.85V */ |
28 | 28 | ||
29 | #define BATTERY_RANGE (BATTERY_LEVEL_FULL - BATTERY_LEVEL_EMPTY) | 29 | #define BATTERY_RANGE (BATTERY_LEVEL_FULL - BATTERY_LEVEL_EMPTY) |
30 | 30 | ||
@@ -39,15 +39,27 @@ | |||
39 | 39 | ||
40 | #ifdef HAVE_CHARGE_CTRL | 40 | #ifdef HAVE_CHARGE_CTRL |
41 | #define POWER_MESSAGE_LEN 32 /* power thread status message */ | 41 | #define POWER_MESSAGE_LEN 32 /* power thread status message */ |
42 | #define CHARGE_MAX_TIME 6*60 /* minutes: maximum charging time */ | 42 | #define CHARGE_MAX_TIME 8*60 /* minutes: maximum charging time */ |
43 | #define CHARGE_MIN_TIME 10 /* minutes: minimum charging time */ | 43 | #define CHARGE_MIN_TIME 10 /* minutes: minimum charging time */ |
44 | #define CHARGE_RESTART_HI 95 /* %: when to restart charging in 'charge' mode */ | 44 | #define CHARGE_RESTART_HI 95 /* %: when to restart charging in 'charge' mode */ |
45 | #define CHARGE_RESTART_LO 10 /* %: when to restart charging in 'discharge' mode */ | 45 | #define CHARGE_RESTART_LO 10 /* %: when to restart charging in 'discharge' mode */ |
46 | #define CHARGE_PAUSE_LEN 60 /* how many minutes to pause between charging cycles */ | ||
46 | 47 | ||
47 | extern char power_message[POWER_MESSAGE_LEN]; | 48 | extern char power_message[POWER_MESSAGE_LEN]; |
48 | extern char charge_restart_level; | 49 | extern char charge_restart_level; |
50 | |||
51 | extern int powermgmt_last_cycle_startstop_min; /* how many minutes ago was the charging started or stopped? */ | ||
52 | extern int powermgmt_last_cycle_level; /* which level had the batteries at this time? */ | ||
53 | |||
54 | extern int battery_lazyness[20]; /* how does the battery react when plugging in/out the charger */ | ||
55 | |||
49 | #endif /* HAVE_CHARGE_CTRL */ | 56 | #endif /* HAVE_CHARGE_CTRL */ |
50 | 57 | ||
58 | #define BATTERY_CAPACITY 1800 /* battery capacity in mAh for runtime estimation */ | ||
59 | #define CURRENT_NORMAL 145 /* usual current in mA when using the AJB including some disk/backlight/... activity */ | ||
60 | #define CURRENT_BACKLIGHT 30 /* additional current when backlight is always on */ | ||
61 | #define CURRENT_CHARGING 300 /* charging current */ | ||
62 | |||
51 | extern unsigned short power_history[POWER_HISTORY_LEN]; | 63 | extern unsigned short power_history[POWER_HISTORY_LEN]; |
52 | 64 | ||
53 | /* Start up power management thread */ | 65 | /* Start up power management thread */ |
@@ -57,6 +69,7 @@ void power_init(void); | |||
57 | 69 | ||
58 | /* Returns battery level in percent */ | 70 | /* Returns battery level in percent */ |
59 | int battery_level(void); | 71 | int battery_level(void); |
72 | int battery_time(void); /* minutes */ | ||
60 | 73 | ||
61 | /* Tells if the battery level is safe for disk writes */ | 74 | /* Tells if the battery level is safe for disk writes */ |
62 | bool battery_level_safe(void); | 75 | bool battery_level_safe(void); |