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 buffer[20];
|
||||
static char buffer[12];
|
||||
char *i;
|
||||
|
||||
buffer[19] = '\0';
|
||||
@@ -315,7 +315,7 @@ static char *int_to_asc(size_t number)
|
||||
|
||||
char *seconds_to_asc(size_t seconds)
|
||||
{
|
||||
static char buffer[70];
|
||||
static char buffer[50];
|
||||
size_t hours, minutes;
|
||||
|
||||
hours = seconds/3600;
|
||||
@@ -347,7 +347,9 @@ char *seconds_to_asc(size_t seconds)
|
||||
}
|
||||
|
||||
#ifdef __WIN32__
|
||||
int WinCheckBatteryTime();
|
||||
int CheckBattery();
|
||||
int CheckBatteryTime();
|
||||
int CheckBatteryPercent();
|
||||
#endif
|
||||
extern unsigned int MessageOn;
|
||||
extern unsigned int MsgCount;
|
||||
@@ -358,25 +360,47 @@ extern char CSStatus3[70];
|
||||
void DisplayBatteryStatus()
|
||||
{
|
||||
#ifdef __WIN32__
|
||||
int batteryTime = WinCheckBatteryTime();
|
||||
*CSStatus2 = 0;
|
||||
*CSStatus3 = 0;
|
||||
|
||||
strcpy(CSStatus2, "");
|
||||
strcpy(CSStatus3, "");
|
||||
switch (CheckBattery())
|
||||
{
|
||||
case -1: //No battery
|
||||
strcpy(CSStatus, "No battery present");
|
||||
break;
|
||||
|
||||
if (batteryTime > 0)
|
||||
{
|
||||
strcpy(CSStatus, "Battery time remaining\0");
|
||||
strcpy(CSStatus2, seconds_to_asc(batteryTime));
|
||||
Msgptr = CSStatus;
|
||||
MessageOn = 100;
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy(CSStatus, "No battery present\0");
|
||||
case 0: //Plugged in
|
||||
{
|
||||
int percent = CheckBatteryPercent();
|
||||
|
||||
strcpy(CSStatus, "PC is plugged in");
|
||||
if (percent > 0)
|
||||
{
|
||||
sprintf(CSStatus2, "%d%% charged", percent);
|
||||
}
|
||||
}
|
||||
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;
|
||||
MessageOn = 100;
|
||||
Msgptr = CSStatus;
|
||||
MessageOn = 100;
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -3089,13 +3089,43 @@ void InitDebugger()
|
||||
}
|
||||
}
|
||||
|
||||
signed int WinCheckBatteryTime()
|
||||
int CheckBattery()
|
||||
{
|
||||
SYSTEM_POWER_STATUS 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;
|
||||
}
|
||||
|
||||
int CheckBatteryPercent()
|
||||
{
|
||||
SYSTEM_POWER_STATUS SysPowerStat;
|
||||
GetSystemPowerStatus(&SysPowerStat);
|
||||
return((SysPowerStat.BatteryLifePercent == 255) ? -1 : SysPowerStat.BatteryLifePercent);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user