Heikki Hannikainen | 3f809e7 | 2002-08-06 10:50:50 +0000 | [diff] [blame] | 1 | /*************************************************************************** |
| 2 | * __________ __ ___. |
| 3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ |
| 4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / |
| 5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < |
| 6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ |
| 7 | * \/ \/ \/ \/ \/ |
| 8 | * $Id$ |
| 9 | * |
| 10 | * Copyright (C) 2002 by Heikki Hannikainen |
| 11 | * |
| 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. |
| 14 | * |
| 15 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| 16 | * KIND, either express or implied. |
| 17 | * |
| 18 | ****************************************************************************/ |
| 19 | #ifndef _POWERMGMT_H_ |
| 20 | #define _POWERMGMT_H_ |
| 21 | |
| 22 | #ifndef SIMULATOR |
| 23 | |
Heikki Hannikainen | 38c8a83 | 2002-08-07 11:30:39 +0000 | [diff] [blame] | 24 | #define BATTERY_LEVEL_SHUTDOWN 450 /* 4.5V */ |
| 25 | #define BATTERY_LEVEL_EMPTY 465 /* 4.65V */ |
| 26 | #define BATTERY_LEVEL_DANGEROUS 475 /* 4.75V */ |
| 27 | #define BATTERY_LEVEL_FULL 520 /* 5.2V */ |
| 28 | |
| 29 | #define BATTERY_RANGE (BATTERY_LEVEL_FULL - BATTERY_LEVEL_EMPTY) |
| 30 | |
Heikki Hannikainen | 3f809e7 | 2002-08-06 10:50:50 +0000 | [diff] [blame] | 31 | #define POWER_HISTORY_LEN 2*60 /* 2 hours of samples, one per minute */ |
Heikki Hannikainen | a4cb4af | 2002-08-12 12:19:25 +0000 | [diff] [blame] | 32 | #define POWER_AVG_N 4 /* how many samples to take for each measurement */ |
| 33 | #define POWER_AVG_SLEEP 10 /* how long do we sleep between each measurement */ |
Heikki Hannikainen | 3f809e7 | 2002-08-06 10:50:50 +0000 | [diff] [blame] | 34 | |
| 35 | #define CHARGE_END_NEGD 6 /* stop when N minutes have passed with |
Heikki Hannikainen | a4cb4af | 2002-08-12 12:19:25 +0000 | [diff] [blame] | 36 | * avg delta being < -0.05 V */ |
Heikki Hannikainen | 834a3c2 | 2002-08-21 20:09:13 +0000 | [diff] [blame^] | 37 | #define CHARGE_END_ZEROD 50 /* stop when N minutes have passed with |
Heikki Hannikainen | 3f809e7 | 2002-08-06 10:50:50 +0000 | [diff] [blame] | 38 | * avg delta being < 0.005 V */ |
| 39 | |
| 40 | #ifdef HAVE_CHARGE_CTRL |
| 41 | #define POWER_MESSAGE_LEN 32 /* power thread status message */ |
Heikki Hannikainen | 6a3ff9c | 2002-08-06 11:47:56 +0000 | [diff] [blame] | 42 | #define CHARGE_MAX_TIME 6*60 /* minutes: maximum charging time */ |
Heikki Hannikainen | 3f809e7 | 2002-08-06 10:50:50 +0000 | [diff] [blame] | 43 | #define CHARGE_MIN_TIME 10 /* minutes: minimum charging time */ |
Heikki Hannikainen | 834a3c2 | 2002-08-21 20:09:13 +0000 | [diff] [blame^] | 44 | #define CHARGE_RESTART_HI 95 /* %: when to restart charging in 'charge' mode */ |
Heikki Hannikainen | 3f809e7 | 2002-08-06 10:50:50 +0000 | [diff] [blame] | 45 | #define CHARGE_RESTART_LO 10 /* %: when to restart charging in 'discharge' mode */ |
| 46 | |
| 47 | extern char power_message[POWER_MESSAGE_LEN]; |
| 48 | extern char charge_restart_level; |
| 49 | #endif /* HAVE_CHARGE_CTRL */ |
| 50 | |
| 51 | extern unsigned short power_history[POWER_HISTORY_LEN]; |
| 52 | |
Heikki Hannikainen | 38c8a83 | 2002-08-07 11:30:39 +0000 | [diff] [blame] | 53 | /* Start up power management thread */ |
Heikki Hannikainen | 3f809e7 | 2002-08-06 10:50:50 +0000 | [diff] [blame] | 54 | void power_init(void); |
| 55 | |
Heikki Hannikainen | 38c8a83 | 2002-08-07 11:30:39 +0000 | [diff] [blame] | 56 | #endif /* SIMULATOR */ |
| 57 | |
| 58 | /* Returns battery level in percent */ |
| 59 | int battery_level(void); |
| 60 | |
| 61 | /* Tells if the battery level is safe for disk writes */ |
| 62 | bool battery_level_safe(void); |
Heikki Hannikainen | 3f809e7 | 2002-08-06 10:50:50 +0000 | [diff] [blame] | 63 | |
| 64 | #endif |