00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <sys/irq.h>
00028 #include <dsensor.h>
00029 #include <dlcd.h>
00030
00031 #include <sys/battery.h>
00032
00034
00035
00036
00038 #ifdef CONF_BATTERY_INDICATOR
00039 unsigned int battery_refresh_counter = 0;
00040 unsigned int battery_refresh_period = 2000;
00041 #endif
00042
00044
00045
00046
00048
00050 #if defined(CONF_DSENSOR)
00051 int get_battery_mv()
00052 {
00053 long b = ds_scale(BATTERY) * 0xABD4L;
00054 return (int)(b / 0x618L);
00055 }
00056 #endif // CONF_DSENSOR
00057
00058 #ifdef CONF_BATTERY_INDICATOR
00059
00060 #ifndef CONF_TM
00061
00062 #ifdef CONF_RCX_COMPILER
00063 void battery_refresh(void) {
00064 #else // CONF_RCX_COMPILER
00065 HANDLER_WRAPPER("battery_refresh","battery_refresh_core");
00066 void battery_refresh_core(void) {
00067 #endif // CONF_RCX_COMPILER
00068 int bmv = get_battery_mv();
00069
00070 if (bmv > BATTERY_NORMAL_THRESHOLD_MV)
00071 dlcd_hide(LCD_BATTERY_X);
00072 else if (bmv > BATTERY_LOW_THRESHOLD_MV)
00073 dlcd_show(LCD_BATTERY_X);
00074 }
00075 #endif // CONF_TM
00076 #endif // CONF_BATTERY_INDICATOR