Greatly overhauled battery info.
This commit is contained in:
@@ -300,7 +300,7 @@ void zstart ()
|
|||||||
|
|
||||||
static char *int_to_asc(size_t number)
|
static char *int_to_asc(size_t number)
|
||||||
{
|
{
|
||||||
static char buffer[20];
|
static char buffer[12];
|
||||||
char *i;
|
char *i;
|
||||||
|
|
||||||
buffer[19] = '\0';
|
buffer[19] = '\0';
|
||||||
@@ -315,7 +315,7 @@ static char *int_to_asc(size_t number)
|
|||||||
|
|
||||||
char *seconds_to_asc(size_t seconds)
|
char *seconds_to_asc(size_t seconds)
|
||||||
{
|
{
|
||||||
static char buffer[70];
|
static char buffer[50];
|
||||||
size_t hours, minutes;
|
size_t hours, minutes;
|
||||||
|
|
||||||
hours = seconds/3600;
|
hours = seconds/3600;
|
||||||
@@ -347,7 +347,9 @@ char *seconds_to_asc(size_t seconds)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __WIN32__
|
#ifdef __WIN32__
|
||||||
int WinCheckBatteryTime();
|
int CheckBattery();
|
||||||
|
int CheckBatteryTime();
|
||||||
|
int CheckBatteryPercent();
|
||||||
#endif
|
#endif
|
||||||
extern unsigned int MessageOn;
|
extern unsigned int MessageOn;
|
||||||
extern unsigned int MsgCount;
|
extern unsigned int MsgCount;
|
||||||
@@ -358,25 +360,47 @@ extern char CSStatus3[70];
|
|||||||
void DisplayBatteryStatus()
|
void DisplayBatteryStatus()
|
||||||
{
|
{
|
||||||
#ifdef __WIN32__
|
#ifdef __WIN32__
|
||||||
int batteryTime = WinCheckBatteryTime();
|
*CSStatus2 = 0;
|
||||||
|
*CSStatus3 = 0;
|
||||||
|
|
||||||
strcpy(CSStatus2, "");
|
switch (CheckBattery())
|
||||||
strcpy(CSStatus3, "");
|
{
|
||||||
|
case -1: //No battery
|
||||||
|
strcpy(CSStatus, "No battery present");
|
||||||
|
break;
|
||||||
|
|
||||||
if (batteryTime > 0)
|
case 0: //Plugged in
|
||||||
{
|
{
|
||||||
strcpy(CSStatus, "Battery time remaining\0");
|
int percent = CheckBatteryPercent();
|
||||||
strcpy(CSStatus2, seconds_to_asc(batteryTime));
|
|
||||||
Msgptr = CSStatus;
|
strcpy(CSStatus, "PC is plugged in");
|
||||||
MessageOn = 100;
|
if (percent > 0)
|
||||||
}
|
{
|
||||||
else
|
sprintf(CSStatus2, "%d%% charged", percent);
|
||||||
{
|
}
|
||||||
strcpy(CSStatus, "No battery present\0");
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1: //Not plugged in
|
||||||
|
{
|
||||||
|
int percent = CheckBatteryPercent();
|
||||||
|
int battery_time = CheckBatteryTime();
|
||||||
|
|
||||||
|
strcpy(CSStatus, "PC is running off of battery");
|
||||||
|
if (battery_time > 0)
|
||||||
|
{
|
||||||
|
sprintf(CSStatus2, "Time remaining: %s", seconds_to_asc(battery_time));
|
||||||
|
}
|
||||||
|
if (percent > 0)
|
||||||
|
{
|
||||||
|
sprintf(CSStatus3, "%d%% remaining", percent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
Msgptr = CSStatus;
|
Msgptr = CSStatus;
|
||||||
MessageOn = 100;
|
MessageOn = 100;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3089,13 +3089,43 @@ void InitDebugger()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
signed int WinCheckBatteryTime()
|
int CheckBattery()
|
||||||
{
|
{
|
||||||
SYSTEM_POWER_STATUS SysPowerStat;
|
SYSTEM_POWER_STATUS SysPowerStat;
|
||||||
|
|
||||||
GetSystemPowerStatus(&SysPowerStat);
|
GetSystemPowerStatus(&SysPowerStat);
|
||||||
|
|
||||||
|
if (SysPowerStat.ACLineStatus == 0) //Definitly running off of battery
|
||||||
|
{
|
||||||
|
return(1); //Running off of battery
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((SysPowerStat.BatteryFlag == 255) || //Unknown
|
||||||
|
(SysPowerStat.BatteryFlag & 128)) //No battery
|
||||||
|
{
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((SysPowerStat.BatteryFlag & 8) || //Charging
|
||||||
|
(SysPowerStat.ACLineStatus == 1)) //Plugged in
|
||||||
|
{
|
||||||
|
return(0); //Plugged in
|
||||||
|
}
|
||||||
|
|
||||||
|
return(1); //Running off of battery
|
||||||
|
}
|
||||||
|
|
||||||
|
int CheckBatteryTime()
|
||||||
|
{
|
||||||
|
SYSTEM_POWER_STATUS SysPowerStat;
|
||||||
|
GetSystemPowerStatus(&SysPowerStat);
|
||||||
return SysPowerStat.BatteryLifeTime;
|
return SysPowerStat.BatteryLifeTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CheckBatteryPercent()
|
||||||
|
{
|
||||||
|
SYSTEM_POWER_STATUS SysPowerStat;
|
||||||
|
GetSystemPowerStatus(&SysPowerStat);
|
||||||
|
return((SysPowerStat.BatteryLifePercent == 255) ? -1 : SysPowerStat.BatteryLifePercent);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user