summaryrefslogtreecommitdiff
path: root/library/power.cpp
Side-by-side diff
Diffstat (limited to 'library/power.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/power.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/library/power.cpp b/library/power.cpp
index d53ecfe..ec5b309 100644
--- a/library/power.cpp
+++ b/library/power.cpp
@@ -1,71 +1,71 @@
/**********************************************************************
** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
**
** This file is part of the Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include "power.h"
-#ifdef QT_QWS_CUSTOM
+#ifdef QT_QWS_SHARP
#include "custom.h"
#endif
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#ifdef QT_QWS_IPAQ_NO_APM
#include <linux/h3600_ts.h>
#endif
PowerStatusManager *PowerStatusManager::powerManager = 0;
PowerStatus *PowerStatusManager::ps = 0;
static bool haveProcApm = false;
PowerStatusManager::PowerStatusManager()
{
powerManager = this;
ps = new PowerStatus;
FILE *f = fopen("/proc/apm", "r");
if ( f ) {
fclose(f);
haveProcApm = TRUE;
}
}
const PowerStatus &PowerStatusManager::readStatus()
{
if ( !powerManager )
(void)new PowerStatusManager;
powerManager->getStatus();
return *ps;
}
// Standard /proc/apm reader
bool PowerStatusManager::getProcApmStatus( int &ac, int &bs, int &bf, int &pc, int &sec )
{
bool ok = false;
ac = 0xff;
bs = 0xff;
bf = 0xff;
pc = -1;
@@ -87,97 +87,97 @@ bool PowerStatusManager::getProcApmStatus( int &ac, int &bs, int &bf, int &pc, i
// extract data
switch ( bs ) {
case 0x00:
ps->bs = PowerStatus::High;
break;
case 0x01:
ps->bs = PowerStatus::Low;
break;
case 0x7f:
ps->bs = PowerStatus::VeryLow;
break;
case 0x02:
ps->bs = PowerStatus::Critical;
break;
case 0x03:
ps->bs = PowerStatus::Charging;
break;
case 0x04:
case 0xff: // 0xff is Unknown but we map to NotPresent
default:
ps->bs = PowerStatus::NotPresent;
break;
}
switch ( ac ) {
case 0x00:
ps->ac = PowerStatus::Offline;
break;
case 0x01:
ps->ac = PowerStatus::Online;
break;
case 0x02:
ps->ac = PowerStatus::Backup;
break;
}
if ( pc > 100 )
pc = -1;
ps->percentRemain = pc;
ps->secsRemain = sec;
ok = true;
}
return ok;
}
-#ifdef QT_QWS_CUSTOM
+#ifdef QT_QWS_SHARP
void PowerStatusManager::getStatus()
{
int ac, bs, bf, pc, sec;
ps->percentAccurate = TRUE; // not for long...
if ( haveProcApm && getProcApmStatus( ac, bs, bf, pc, sec ) ) {
// special case
if ( bs == 0x7f )
ps->bs = PowerStatus::VeryLow;
pc = -1; // fake percentage
if ( pc < 0 ) {
switch ( bs ) {
case 0x00: ps->percentRemain = 100; break; // High
case 0x01: ps->percentRemain = 30; break; // Low
case 0x7f: ps->percentRemain = 10; break; // Very Low
case 0x02: ps->percentRemain = 5; break; // Critical
case 0x03: ps->percentRemain = -1; break; // Charging
}
ps->percentAccurate = FALSE;
}
}
char *device = "/dev/apm_bios";
int fd = ::open (device, O_WRONLY);
if ( fd >= 0 ) {
int bbat_status = ioctl( fd, APM_IOC_BATTERY_BACK_CHK, 0 );
switch ( bbat_status ) {
case 0x00:
ps->bbs = PowerStatus::High;
break;
case 0x01:
ps->bbs = PowerStatus::Low;
break;
case 0x7f:
ps->bbs = PowerStatus::VeryLow;
break;
case 0x02:
ps->bbs = PowerStatus::Critical;
break;
case 0x03:
ps->bbs = PowerStatus::Charging;
break;
case 0x04:
ps->bbs = PowerStatus::NotPresent;
break;
}
::close(fd);