summaryrefslogtreecommitdiff
path: root/library
authorkergoth <kergoth>2002-11-06 04:50:40 (UTC)
committer kergoth <kergoth>2002-11-06 04:50:40 (UTC)
commit21f27ec4a1f18321ac00d28d93cb1cb7dc957d1f (patch) (unidiff)
treebbe53dd1f3749541be4f1616f20d9a0d9ee6ea0b /library
parentac1509552bf764ff136690e0e7014d37a59d073e (diff)
downloadopie-21f27ec4a1f18321ac00d28d93cb1cb7dc957d1f.zip
opie-21f27ec4a1f18321ac00d28d93cb1cb7dc957d1f.tar.gz
opie-21f27ec4a1f18321ac00d28d93cb1cb7dc957d1f.tar.bz2
Changing sharp define. if someone doesnt like it, let me know :)
Diffstat (limited to 'library') (more/less context) (ignore whitespace changes)
-rw-r--r--library/alarmserver.cpp2
-rw-r--r--library/power.cpp4
-rw-r--r--library/storage.cpp2
3 files changed, 4 insertions, 4 deletions
diff --git a/library/alarmserver.cpp b/library/alarmserver.cpp
index 02bca3d..7e6e515 100644
--- a/library/alarmserver.cpp
+++ b/library/alarmserver.cpp
@@ -65,193 +65,193 @@ private:
65 QString atfilename; 65 QString atfilename;
66}; 66};
67 67
68TimerReceiverObject *timerEventReceiver = NULL; 68TimerReceiverObject *timerEventReceiver = NULL;
69QList<timerEventItem> timerEventList; 69QList<timerEventItem> timerEventList;
70timerEventItem *nearestTimerEvent = NULL; 70timerEventItem *nearestTimerEvent = NULL;
71 71
72 72
73// set the timer to go off on the next event in the list 73// set the timer to go off on the next event in the list
74void setNearestTimerEvent() 74void setNearestTimerEvent()
75{ 75{
76 nearestTimerEvent = NULL; 76 nearestTimerEvent = NULL;
77 QListIterator<timerEventItem> it( timerEventList ); 77 QListIterator<timerEventItem> it( timerEventList );
78 if ( *it ) 78 if ( *it )
79 nearestTimerEvent = *it; 79 nearestTimerEvent = *it;
80 for ( ; *it; ++it ) 80 for ( ; *it; ++it )
81 if ( (*it)->UTCtime < nearestTimerEvent->UTCtime ) 81 if ( (*it)->UTCtime < nearestTimerEvent->UTCtime )
82 nearestTimerEvent = *it; 82 nearestTimerEvent = *it;
83 if (nearestTimerEvent) 83 if (nearestTimerEvent)
84 timerEventReceiver->resetTimer(); 84 timerEventReceiver->resetTimer();
85 else 85 else
86 timerEventReceiver->deleteTimer(); 86 timerEventReceiver->deleteTimer();
87} 87}
88 88
89 89
90//store current state to file 90//store current state to file
91//Simple implementation. Should run on a timer. 91//Simple implementation. Should run on a timer.
92 92
93static void saveState() 93static void saveState()
94{ 94{
95 QString savefilename = Global::applicationFileName( "AlarmServer", "saveFile" ); 95 QString savefilename = Global::applicationFileName( "AlarmServer", "saveFile" );
96 if ( timerEventList.isEmpty() ) { 96 if ( timerEventList.isEmpty() ) {
97 unlink( savefilename ); 97 unlink( savefilename );
98 return; 98 return;
99 } 99 }
100 100
101 QFile savefile(savefilename+".new"); 101 QFile savefile(savefilename+".new");
102 if ( savefile.open(IO_WriteOnly) ) { 102 if ( savefile.open(IO_WriteOnly) ) {
103 QDataStream ds( &savefile ); 103 QDataStream ds( &savefile );
104 104
105 //save 105 //save
106 106
107 QListIterator<timerEventItem> it( timerEventList ); 107 QListIterator<timerEventItem> it( timerEventList );
108 for ( ; *it; ++it ) { 108 for ( ; *it; ++it ) {
109 ds << it.current()->UTCtime; 109 ds << it.current()->UTCtime;
110 ds << it.current()->channel; 110 ds << it.current()->channel;
111 ds << it.current()->message; 111 ds << it.current()->message;
112 ds << it.current()->data; 112 ds << it.current()->data;
113 } 113 }
114 114
115 115
116 savefile.close(); 116 savefile.close();
117 unlink( savefilename ); 117 unlink( savefilename );
118 QDir d; d.rename(savefilename+".new",savefilename); 118 QDir d; d.rename(savefilename+".new",savefilename);
119 119
120 } 120 }
121} 121}
122 122
123/*! 123/*!
124 Sets up the alarm server. Restoring to previous state (session management). 124 Sets up the alarm server. Restoring to previous state (session management).
125 */ 125 */
126void AlarmServer::initialize() 126void AlarmServer::initialize()
127{ 127{
128 //read autosave file and put events in timerEventList 128 //read autosave file and put events in timerEventList
129 129
130 QString savefilename = Global::applicationFileName( "AlarmServer", "saveFile" ); 130 QString savefilename = Global::applicationFileName( "AlarmServer", "saveFile" );
131 131
132 QFile savefile(savefilename); 132 QFile savefile(savefilename);
133 if ( savefile.open(IO_ReadOnly) ) { 133 if ( savefile.open(IO_ReadOnly) ) {
134 QDataStream ds( &savefile ); 134 QDataStream ds( &savefile );
135 while ( !ds.atEnd() ) { 135 while ( !ds.atEnd() ) {
136 timerEventItem *newTimerEventItem = new timerEventItem; 136 timerEventItem *newTimerEventItem = new timerEventItem;
137 ds >> newTimerEventItem->UTCtime; 137 ds >> newTimerEventItem->UTCtime;
138 ds >> newTimerEventItem->channel; 138 ds >> newTimerEventItem->channel;
139 ds >> newTimerEventItem->message; 139 ds >> newTimerEventItem->message;
140 ds >> newTimerEventItem->data; 140 ds >> newTimerEventItem->data;
141 timerEventList.append( newTimerEventItem ); 141 timerEventList.append( newTimerEventItem );
142 } 142 }
143 savefile.close(); 143 savefile.close();
144 if (!timerEventReceiver) 144 if (!timerEventReceiver)
145 timerEventReceiver = new TimerReceiverObject; 145 timerEventReceiver = new TimerReceiverObject;
146 setNearestTimerEvent(); 146 setNearestTimerEvent();
147 } 147 }
148} 148}
149 149
150 150
151 151
152 152
153static const char* atdir = "/var/spool/at/"; 153static const char* atdir = "/var/spool/at/";
154 154
155static bool triggerAtd( bool writeHWClock = FALSE ) 155static bool triggerAtd( bool writeHWClock = FALSE )
156{ 156{
157 QFile trigger(QString(atdir) + "trigger"); 157 QFile trigger(QString(atdir) + "trigger");
158 if ( trigger.open(IO_WriteOnly|IO_Raw) ) { 158 if ( trigger.open(IO_WriteOnly|IO_Raw) ) {
159 159
160 const char* data = 160 const char* data =
161#ifdef QT_QWS_CUSTOM 161#ifdef QT_QWS_SHARP
162 //custom atd only writes HW Clock if we write a 'W' 162 //custom atd only writes HW Clock if we write a 'W'
163 ( writeHWClock ) ? "W\n" : 163 ( writeHWClock ) ? "W\n" :
164#endif 164#endif
165 data = "\n"; 165 data = "\n";
166 int len = strlen(data); 166 int len = strlen(data);
167 int total_written = trigger.writeBlock(data,len); 167 int total_written = trigger.writeBlock(data,len);
168 if ( total_written != len ) { 168 if ( total_written != len ) {
169 QMessageBox::critical( 0, QObject::tr( "Out of Space" ), 169 QMessageBox::critical( 0, QObject::tr( "Out of Space" ),
170 QObject::tr( "Unable to schedule alarm.\nFree some memory and try again." ) ); 170 QObject::tr( "Unable to schedule alarm.\nFree some memory and try again." ) );
171 trigger.close(); 171 trigger.close();
172 QFile::remove( trigger.name() ); 172 QFile::remove( trigger.name() );
173 return FALSE; 173 return FALSE;
174 } 174 }
175 return TRUE; 175 return TRUE;
176 } 176 }
177 return FALSE; 177 return FALSE;
178} 178}
179 179
180void TimerReceiverObject::deleteTimer() 180void TimerReceiverObject::deleteTimer()
181{ 181{
182 if ( !atfilename.isEmpty() ) { 182 if ( !atfilename.isEmpty() ) {
183 unlink( atfilename ); 183 unlink( atfilename );
184 atfilename = QString::null; 184 atfilename = QString::null;
185 triggerAtd( FALSE ); 185 triggerAtd( FALSE );
186 } 186 }
187} 187}
188 188
189void TimerReceiverObject::resetTimer() 189void TimerReceiverObject::resetTimer()
190{ 190{
191 const int maxsecs = 2147000; 191 const int maxsecs = 2147000;
192 int total_written; 192 int total_written;
193 QDateTime nearest = TimeConversion::fromUTC(nearestTimerEvent->UTCtime); 193 QDateTime nearest = TimeConversion::fromUTC(nearestTimerEvent->UTCtime);
194 QDateTime now = QDateTime::currentDateTime(); 194 QDateTime now = QDateTime::currentDateTime();
195 if ( nearest < now ) 195 if ( nearest < now )
196 nearest = now; 196 nearest = now;
197 int secs = TimeConversion::secsTo( now, nearest ); 197 int secs = TimeConversion::secsTo( now, nearest );
198 if ( secs > maxsecs ) { 198 if ( secs > maxsecs ) {
199 // too far for millisecond timing 199 // too far for millisecond timing
200 secs = maxsecs; 200 secs = maxsecs;
201 } 201 }
202 202
203 // System timer (needed so that we wake from deep sleep), 203 // System timer (needed so that we wake from deep sleep),
204 // from the Epoch in seconds. 204 // from the Epoch in seconds.
205 // 205 //
206 int at_secs = TimeConversion::toUTC(nearest); 206 int at_secs = TimeConversion::toUTC(nearest);
207 // qDebug("reset timer to %d seconds from Epoch",at_secs); 207 // qDebug("reset timer to %d seconds from Epoch",at_secs);
208 QString fn = atdir + QString::number(at_secs) + "." 208 QString fn = atdir + QString::number(at_secs) + "."
209 + QString::number(getpid()); 209 + QString::number(getpid());
210 if ( fn != atfilename ) { 210 if ( fn != atfilename ) {
211 QFile atfile(fn+".new"); 211 QFile atfile(fn+".new");
212 if ( atfile.open(IO_WriteOnly|IO_Raw) ) { 212 if ( atfile.open(IO_WriteOnly|IO_Raw) ) {
213 // just wake up and delete the at file 213 // just wake up and delete the at file
214 QString cmd = "#!/bin/sh\nrm " + fn; 214 QString cmd = "#!/bin/sh\nrm " + fn;
215 total_written = atfile.writeBlock(cmd.latin1(),cmd.length()); 215 total_written = atfile.writeBlock(cmd.latin1(),cmd.length());
216 if ( total_written != int(cmd.length()) ) { 216 if ( total_written != int(cmd.length()) ) {
217 QMessageBox::critical( 0, tr("Out of Space"), 217 QMessageBox::critical( 0, tr("Out of Space"),
218 tr("Unable to schedule alarm.\n" 218 tr("Unable to schedule alarm.\n"
219 "Please free up space and try again") ); 219 "Please free up space and try again") );
220 atfile.close(); 220 atfile.close();
221 QFile::remove( atfile.name() ); 221 QFile::remove( atfile.name() );
222 return; 222 return;
223 } 223 }
224 atfile.close(); 224 atfile.close();
225 unlink( atfilename ); 225 unlink( atfilename );
226 QDir d; d.rename(fn+".new",fn); 226 QDir d; d.rename(fn+".new",fn);
227 chmod(fn.latin1(),0755); 227 chmod(fn.latin1(),0755);
228 atfilename = fn; 228 atfilename = fn;
229 triggerAtd( FALSE ); 229 triggerAtd( FALSE );
230 } else { 230 } else {
231 qWarning("Cannot open atd file %s",fn.latin1()); 231 qWarning("Cannot open atd file %s",fn.latin1());
232 } 232 }
233 } 233 }
234 // Qt timers (does the actual alarm) 234 // Qt timers (does the actual alarm)
235 // from now in milliseconds 235 // from now in milliseconds
236 // 236 //
237 qDebug("AlarmServer waiting %d seconds",secs); 237 qDebug("AlarmServer waiting %d seconds",secs);
238 startTimer( 1000 * secs + 500 ); 238 startTimer( 1000 * secs + 500 );
239} 239}
240 240
241void TimerReceiverObject::timerEvent( QTimerEvent * ) 241void TimerReceiverObject::timerEvent( QTimerEvent * )
242{ 242{
243 bool needSave = FALSE; 243 bool needSave = FALSE;
244 killTimers(); 244 killTimers();
245 if (nearestTimerEvent) { 245 if (nearestTimerEvent) {
246 if ( nearestTimerEvent->UTCtime 246 if ( nearestTimerEvent->UTCtime
247 <= TimeConversion::toUTC(QDateTime::currentDateTime()) ) { 247 <= TimeConversion::toUTC(QDateTime::currentDateTime()) ) {
248#ifndef QT_NO_COP 248#ifndef QT_NO_COP
249 QCopEnvelope e( nearestTimerEvent->channel, 249 QCopEnvelope e( nearestTimerEvent->channel,
250 nearestTimerEvent->message ); 250 nearestTimerEvent->message );
251 e << TimeConversion::fromUTC( nearestTimerEvent->UTCtime ) 251 e << TimeConversion::fromUTC( nearestTimerEvent->UTCtime )
252 << nearestTimerEvent->data; 252 << nearestTimerEvent->data;
253#endif 253#endif
254 timerEventList.remove( nearestTimerEvent ); 254 timerEventList.remove( nearestTimerEvent );
255 needSave = TRUE; 255 needSave = TRUE;
256 } 256 }
257 setNearestTimerEvent(); 257 setNearestTimerEvent();
diff --git a/library/power.cpp b/library/power.cpp
index d53ecfe..ec5b309 100644
--- a/library/power.cpp
+++ b/library/power.cpp
@@ -1,228 +1,228 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include "power.h" 21#include "power.h"
22 22
23#ifdef QT_QWS_CUSTOM 23#ifdef QT_QWS_SHARP
24#include "custom.h" 24#include "custom.h"
25#endif 25#endif
26 26
27#include <unistd.h> 27#include <unistd.h>
28#include <stdlib.h> 28#include <stdlib.h>
29#include <stdio.h> 29#include <stdio.h>
30#include <fcntl.h> 30#include <fcntl.h>
31#include <sys/ioctl.h> 31#include <sys/ioctl.h>
32 32
33#ifdef QT_QWS_IPAQ_NO_APM 33#ifdef QT_QWS_IPAQ_NO_APM
34#include <linux/h3600_ts.h> 34#include <linux/h3600_ts.h>
35#endif 35#endif
36 36
37PowerStatusManager *PowerStatusManager::powerManager = 0; 37PowerStatusManager *PowerStatusManager::powerManager = 0;
38PowerStatus *PowerStatusManager::ps = 0; 38PowerStatus *PowerStatusManager::ps = 0;
39 39
40static bool haveProcApm = false; 40static bool haveProcApm = false;
41 41
42PowerStatusManager::PowerStatusManager() 42PowerStatusManager::PowerStatusManager()
43{ 43{
44 powerManager = this; 44 powerManager = this;
45 ps = new PowerStatus; 45 ps = new PowerStatus;
46 FILE *f = fopen("/proc/apm", "r"); 46 FILE *f = fopen("/proc/apm", "r");
47 if ( f ) { 47 if ( f ) {
48 fclose(f); 48 fclose(f);
49 haveProcApm = TRUE; 49 haveProcApm = TRUE;
50 } 50 }
51} 51}
52 52
53const PowerStatus &PowerStatusManager::readStatus() 53const PowerStatus &PowerStatusManager::readStatus()
54{ 54{
55 if ( !powerManager ) 55 if ( !powerManager )
56 (void)new PowerStatusManager; 56 (void)new PowerStatusManager;
57 57
58 powerManager->getStatus(); 58 powerManager->getStatus();
59 59
60 return *ps; 60 return *ps;
61} 61}
62 62
63// Standard /proc/apm reader 63// Standard /proc/apm reader
64bool PowerStatusManager::getProcApmStatus( int &ac, int &bs, int &bf, int &pc, int &sec ) 64bool PowerStatusManager::getProcApmStatus( int &ac, int &bs, int &bf, int &pc, int &sec )
65{ 65{
66 bool ok = false; 66 bool ok = false;
67 67
68 ac = 0xff; 68 ac = 0xff;
69 bs = 0xff; 69 bs = 0xff;
70 bf = 0xff; 70 bf = 0xff;
71 pc = -1; 71 pc = -1;
72 sec = -1; 72 sec = -1;
73 73
74 FILE *f = fopen("/proc/apm", "r"); 74 FILE *f = fopen("/proc/apm", "r");
75 if ( f ) { 75 if ( f ) {
76 //I 1.13 1.2 0x02 0x00 0xff 0xff 49% 147 sec 76 //I 1.13 1.2 0x02 0x00 0xff 0xff 49% 147 sec
77 char u; 77 char u;
78 fscanf(f, "%*[^ ] %*d.%*d 0x%*x 0x%x 0x%x 0x%x %d%% %i %c", 78 fscanf(f, "%*[^ ] %*d.%*d 0x%*x 0x%x 0x%x 0x%x %d%% %i %c",
79 &ac, &bs, &bf, &pc, &sec, &u); 79 &ac, &bs, &bf, &pc, &sec, &u);
80 fclose(f); 80 fclose(f);
81 switch ( u ) { 81 switch ( u ) {
82 case 'm': sec *= 60; 82 case 'm': sec *= 60;
83 case 's': break; // ok 83 case 's': break; // ok
84 default: sec = -1; // unknown 84 default: sec = -1; // unknown
85 } 85 }
86 86
87 // extract data 87 // extract data
88 switch ( bs ) { 88 switch ( bs ) {
89 case 0x00: 89 case 0x00:
90 ps->bs = PowerStatus::High; 90 ps->bs = PowerStatus::High;
91 break; 91 break;
92 case 0x01: 92 case 0x01:
93 ps->bs = PowerStatus::Low; 93 ps->bs = PowerStatus::Low;
94 break; 94 break;
95 case 0x7f: 95 case 0x7f:
96 ps->bs = PowerStatus::VeryLow; 96 ps->bs = PowerStatus::VeryLow;
97 break; 97 break;
98 case 0x02: 98 case 0x02:
99 ps->bs = PowerStatus::Critical; 99 ps->bs = PowerStatus::Critical;
100 break; 100 break;
101 case 0x03: 101 case 0x03:
102 ps->bs = PowerStatus::Charging; 102 ps->bs = PowerStatus::Charging;
103 break; 103 break;
104 case 0x04: 104 case 0x04:
105 case 0xff: // 0xff is Unknown but we map to NotPresent 105 case 0xff: // 0xff is Unknown but we map to NotPresent
106 default: 106 default:
107 ps->bs = PowerStatus::NotPresent; 107 ps->bs = PowerStatus::NotPresent;
108 break; 108 break;
109 } 109 }
110 110
111 switch ( ac ) { 111 switch ( ac ) {
112 case 0x00: 112 case 0x00:
113 ps->ac = PowerStatus::Offline; 113 ps->ac = PowerStatus::Offline;
114 break; 114 break;
115 case 0x01: 115 case 0x01:
116 ps->ac = PowerStatus::Online; 116 ps->ac = PowerStatus::Online;
117 break; 117 break;
118 case 0x02: 118 case 0x02:
119 ps->ac = PowerStatus::Backup; 119 ps->ac = PowerStatus::Backup;
120 break; 120 break;
121 } 121 }
122 122
123 if ( pc > 100 ) 123 if ( pc > 100 )
124 pc = -1; 124 pc = -1;
125 125
126 ps->percentRemain = pc; 126 ps->percentRemain = pc;
127 ps->secsRemain = sec; 127 ps->secsRemain = sec;
128 128
129 ok = true; 129 ok = true;
130 } 130 }
131 131
132 return ok; 132 return ok;
133} 133}
134 134
135#ifdef QT_QWS_CUSTOM 135#ifdef QT_QWS_SHARP
136 136
137void PowerStatusManager::getStatus() 137void PowerStatusManager::getStatus()
138{ 138{
139 int ac, bs, bf, pc, sec; 139 int ac, bs, bf, pc, sec;
140 ps->percentAccurate = TRUE; // not for long... 140 ps->percentAccurate = TRUE; // not for long...
141 141
142 if ( haveProcApm && getProcApmStatus( ac, bs, bf, pc, sec ) ) { 142 if ( haveProcApm && getProcApmStatus( ac, bs, bf, pc, sec ) ) {
143 // special case 143 // special case
144 if ( bs == 0x7f ) 144 if ( bs == 0x7f )
145 ps->bs = PowerStatus::VeryLow; 145 ps->bs = PowerStatus::VeryLow;
146 pc = -1; // fake percentage 146 pc = -1; // fake percentage
147 if ( pc < 0 ) { 147 if ( pc < 0 ) {
148 switch ( bs ) { 148 switch ( bs ) {
149 case 0x00: ps->percentRemain = 100; break; // High 149 case 0x00: ps->percentRemain = 100; break; // High
150 case 0x01: ps->percentRemain = 30; break; // Low 150 case 0x01: ps->percentRemain = 30; break; // Low
151 case 0x7f: ps->percentRemain = 10; break; // Very Low 151 case 0x7f: ps->percentRemain = 10; break; // Very Low
152 case 0x02: ps->percentRemain = 5; break; // Critical 152 case 0x02: ps->percentRemain = 5; break; // Critical
153 case 0x03: ps->percentRemain = -1; break; // Charging 153 case 0x03: ps->percentRemain = -1; break; // Charging
154 } 154 }
155 ps->percentAccurate = FALSE; 155 ps->percentAccurate = FALSE;
156 } 156 }
157 } 157 }
158 158
159 char *device = "/dev/apm_bios"; 159 char *device = "/dev/apm_bios";
160 int fd = ::open (device, O_WRONLY); 160 int fd = ::open (device, O_WRONLY);
161 if ( fd >= 0 ) { 161 if ( fd >= 0 ) {
162 int bbat_status = ioctl( fd, APM_IOC_BATTERY_BACK_CHK, 0 ); 162 int bbat_status = ioctl( fd, APM_IOC_BATTERY_BACK_CHK, 0 );
163 switch ( bbat_status ) { 163 switch ( bbat_status ) {
164 case 0x00: 164 case 0x00:
165 ps->bbs = PowerStatus::High; 165 ps->bbs = PowerStatus::High;
166 break; 166 break;
167 case 0x01: 167 case 0x01:
168 ps->bbs = PowerStatus::Low; 168 ps->bbs = PowerStatus::Low;
169 break; 169 break;
170 case 0x7f: 170 case 0x7f:
171 ps->bbs = PowerStatus::VeryLow; 171 ps->bbs = PowerStatus::VeryLow;
172 break; 172 break;
173 case 0x02: 173 case 0x02:
174 ps->bbs = PowerStatus::Critical; 174 ps->bbs = PowerStatus::Critical;
175 break; 175 break;
176 case 0x03: 176 case 0x03:
177 ps->bbs = PowerStatus::Charging; 177 ps->bbs = PowerStatus::Charging;
178 break; 178 break;
179 case 0x04: 179 case 0x04:
180 ps->bbs = PowerStatus::NotPresent; 180 ps->bbs = PowerStatus::NotPresent;
181 break; 181 break;
182 } 182 }
183 ::close(fd); 183 ::close(fd);
184 } 184 }
185} 185}
186 186
187#else 187#else
188 188
189void PowerStatusManager::getStatus() 189void PowerStatusManager::getStatus()
190{ 190{
191 bool usedApm = FALSE; 191 bool usedApm = FALSE;
192 192
193 ps->percentAccurate = TRUE; 193 ps->percentAccurate = TRUE;
194 194
195 // Some iPAQ kernel builds don't have APM. If this is not the case we 195 // Some iPAQ kernel builds don't have APM. If this is not the case we
196 // save ourselves an ioctl by testing if /proc/apm exists in the 196 // save ourselves an ioctl by testing if /proc/apm exists in the
197 // constructor and we use /proc/apm instead 197 // constructor and we use /proc/apm instead
198 int ac, bs, bf, pc, sec; 198 int ac, bs, bf, pc, sec;
199 if ( haveProcApm ) 199 if ( haveProcApm )
200 usedApm = getProcApmStatus( ac, bs, bf, pc, sec ); 200 usedApm = getProcApmStatus( ac, bs, bf, pc, sec );
201 201
202 if ( !usedApm ) { 202 if ( !usedApm ) {
203#ifdef QT_QWS_IPAQ_NO_APM 203#ifdef QT_QWS_IPAQ_NO_APM
204 int fd; 204 int fd;
205 int err; 205 int err;
206 struct bat_dev batt_info; 206 struct bat_dev batt_info;
207 207
208 memset(&batt_info, 0, sizeof(batt_info)); 208 memset(&batt_info, 0, sizeof(batt_info));
209 209
210 fd = ::open("/dev/ts",O_RDONLY); 210 fd = ::open("/dev/ts",O_RDONLY);
211 if( fd < 0 ) 211 if( fd < 0 )
212 return; 212 return;
213 213
214 ioctl(fd, GET_BATTERY_STATUS, &batt_info); 214 ioctl(fd, GET_BATTERY_STATUS, &batt_info);
215 ac_status = batt_info.ac_status; 215 ac_status = batt_info.ac_status;
216 ps->percentRemain = ( 425 * batt_info.batt1_voltage ) / 1000 - 298; // from h3600_ts.c 216 ps->percentRemain = ( 425 * batt_info.batt1_voltage ) / 1000 - 298; // from h3600_ts.c
217 ps->secsRemain = -1; // seconds is bogus on iPAQ 217 ps->secsRemain = -1; // seconds is bogus on iPAQ
218 ::close (fd); 218 ::close (fd);
219#else 219#else
220 ps->percentRemain = 100; 220 ps->percentRemain = 100;
221 ps->secsRemain = -1; 221 ps->secsRemain = -1;
222 ps->percentAccurate = FALSE; 222 ps->percentAccurate = FALSE;
223#endif 223#endif
224 } 224 }
225} 225}
226 226
227#endif 227#endif
228 228
diff --git a/library/storage.cpp b/library/storage.cpp
index 937908d..3668d29 100644
--- a/library/storage.cpp
+++ b/library/storage.cpp
@@ -1,119 +1,119 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) Holger 'zecke' Freyther <freyther@kde.org> 2** Copyright (C) Holger 'zecke' Freyther <freyther@kde.org>
3** Copyright (C) 2000 Trolltech AS. All rights reserved. 3** Copyright (C) 2000 Trolltech AS. All rights reserved.
4** 4**
5** This file is part of Qtopia Environment. 5** This file is part of Qtopia Environment.
6** 6**
7** This file may be distributed and/or modified under the terms of the 7** This file may be distributed and/or modified under the terms of the
8** GNU General Public License version 2 as published by the Free Software 8** GNU General Public License version 2 as published by the Free Software
9** Foundation and appearing in the file LICENSE.GPL included in the 9** Foundation and appearing in the file LICENSE.GPL included in the
10** packaging of this file. 10** packaging of this file.
11** 11**
12** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 12** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
13** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 13** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
14** 14**
15** See http://www.trolltech.com/gpl/ for GPL licensing information. 15** See http://www.trolltech.com/gpl/ for GPL licensing information.
16** 16**
17** Contact info@trolltech.com if any conditions of this licensing are 17** Contact info@trolltech.com if any conditions of this licensing are
18** not clear to you. 18** not clear to you.
19** 19**
20**********************************************************************/ 20**********************************************************************/
21 21
22#include <qpe/storage.h> 22#include <qpe/storage.h>
23#ifdef QT_QWS_CUSTOM 23#ifdef QT_QWS_SHARP
24#include <qpe/custom.h> 24#include <qpe/custom.h>
25#endif 25#endif
26 26
27#include <qfile.h> 27#include <qfile.h>
28#include <qtimer.h> 28#include <qtimer.h>
29#include <qcopchannel_qws.h> 29#include <qcopchannel_qws.h>
30 30
31#include <stdio.h> 31#include <stdio.h>
32 32
33#if defined(_OS_LINUX_) || defined(Q_OS_LINUX) 33#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)
34#include <sys/vfs.h> 34#include <sys/vfs.h>
35#include <mntent.h> 35#include <mntent.h>
36#endif 36#endif
37 37
38#include <qstringlist.h> 38#include <qstringlist.h>
39 39
40static bool isCF(const QString& m) 40static bool isCF(const QString& m)
41{ 41{
42 FILE* f = fopen("/var/run/stab", "r"); 42 FILE* f = fopen("/var/run/stab", "r");
43 if (!f) f = fopen("/var/state/pcmcia/stab", "r"); 43 if (!f) f = fopen("/var/state/pcmcia/stab", "r");
44 if (!f) f = fopen("/var/lib/pcmcia/stab", "r"); 44 if (!f) f = fopen("/var/lib/pcmcia/stab", "r");
45 if ( f ) { 45 if ( f ) {
46 char line[1024]; 46 char line[1024];
47 char devtype[80]; 47 char devtype[80];
48 char devname[80]; 48 char devname[80];
49 while ( fgets( line, 1024, f ) ) { 49 while ( fgets( line, 1024, f ) ) {
50 // 0 ide ide-cs 0 hda 3 0 50 // 0 ide ide-cs 0 hda 3 0
51 if ( sscanf(line,"%*d %s %*s %*s %s", devtype, devname )==2 ) 51 if ( sscanf(line,"%*d %s %*s %*s %s", devtype, devname )==2 )
52 { 52 {
53 if ( QString(devtype) == "ide" && m.find(devname)>0 ) { 53 if ( QString(devtype) == "ide" && m.find(devname)>0 ) {
54 fclose(f); 54 fclose(f);
55 return TRUE; 55 return TRUE;
56 } 56 }
57 } 57 }
58 } 58 }
59 fclose(f); 59 fclose(f);
60 } 60 }
61 return FALSE; 61 return FALSE;
62} 62}
63 63
64StorageInfo::StorageInfo( QObject *parent ) 64StorageInfo::StorageInfo( QObject *parent )
65 : QObject( parent ) 65 : QObject( parent )
66{ 66{
67 mFileSystems.setAutoDelete( TRUE ); 67 mFileSystems.setAutoDelete( TRUE );
68 channel = new QCopChannel( "QPE/Card", this ); 68 channel = new QCopChannel( "QPE/Card", this );
69 connect( channel, SIGNAL(received(const QCString &, const QByteArray &)), 69 connect( channel, SIGNAL(received(const QCString &, const QByteArray &)),
70 this, SLOT(cardMessage( const QCString &, const QByteArray &)) ); 70 this, SLOT(cardMessage( const QCString &, const QByteArray &)) );
71 update(); 71 update();
72} 72}
73 73
74const FileSystem *StorageInfo::fileSystemOf( const QString &filename ) 74const FileSystem *StorageInfo::fileSystemOf( const QString &filename )
75{ 75{
76 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) { 76 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) {
77 if ( filename.startsWith( (*i)->path() ) ) 77 if ( filename.startsWith( (*i)->path() ) )
78 return (*i); 78 return (*i);
79 } 79 }
80 return 0; 80 return 0;
81} 81}
82 82
83 83
84void StorageInfo::cardMessage( const QCString& msg, const QByteArray& ) 84void StorageInfo::cardMessage( const QCString& msg, const QByteArray& )
85{ 85{
86 if ( msg == "mtabChanged()" ) 86 if ( msg == "mtabChanged()" )
87 update(); 87 update();
88} 88}
89// cause of the lack of a d pointer we need 89// cause of the lack of a d pointer we need
90// to store informations in a config file :( 90// to store informations in a config file :(
91void StorageInfo::update() 91void StorageInfo::update()
92{ 92{
93 //qDebug("StorageInfo::updating"); 93 //qDebug("StorageInfo::updating");
94#if defined(_OS_LINUX_) || defined(Q_OS_LINUX) 94#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)
95 struct mntent *me; 95 struct mntent *me;
96 FILE *mntfp = setmntent( "/etc/mtab", "r" ); 96 FILE *mntfp = setmntent( "/etc/mtab", "r" );
97 97
98 QStringList curdisks; 98 QStringList curdisks;
99 QStringList curopts; 99 QStringList curopts;
100 QStringList curfs; 100 QStringList curfs;
101 bool rebuild = FALSE; 101 bool rebuild = FALSE;
102 int n=0; 102 int n=0;
103 if ( mntfp ) { 103 if ( mntfp ) {
104 while ( (me = getmntent( mntfp )) != 0 ) { 104 while ( (me = getmntent( mntfp )) != 0 ) {
105 QString fs = me->mnt_fsname; 105 QString fs = me->mnt_fsname;
106 if ( fs.left(7)=="/dev/hd" || fs.left(7)=="/dev/sd" 106 if ( fs.left(7)=="/dev/hd" || fs.left(7)=="/dev/sd"
107 || fs.left(8)=="/dev/mtd" || fs.left(9) == "/dev/mmcd" 107 || fs.left(8)=="/dev/mtd" || fs.left(9) == "/dev/mmcd"
108 || fs.left( 14 ) == "/dev/mmc/part1" 108 || fs.left( 14 ) == "/dev/mmc/part1"
109 || fs.left(5)=="tmpfs" ) 109 || fs.left(5)=="tmpfs" )
110 { 110 {
111 n++; 111 n++;
112 curdisks.append(fs); 112 curdisks.append(fs);
113 curopts.append( me->mnt_opts ); 113 curopts.append( me->mnt_opts );
114 //qDebug("-->fs %s opts %s", fs.latin1(), me->mnt_opts ); 114 //qDebug("-->fs %s opts %s", fs.latin1(), me->mnt_opts );
115 curfs.append( me->mnt_dir ); 115 curfs.append( me->mnt_dir );
116 bool found = FALSE; 116 bool found = FALSE;
117 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) { 117 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) {
118 if ( (*i)->disk() == fs ) { 118 if ( (*i)->disk() == fs ) {
119 found = TRUE; 119 found = TRUE;