summaryrefslogtreecommitdiff
path: root/library/alarmserver.cpp
Unidiff
Diffstat (limited to 'library/alarmserver.cpp') (more/less context) (show whitespace changes)
-rw-r--r--library/alarmserver.cpp91
1 files changed, 74 insertions, 17 deletions
diff --git a/library/alarmserver.cpp b/library/alarmserver.cpp
index 5e4dd18..2ea4025 100644
--- a/library/alarmserver.cpp
+++ b/library/alarmserver.cpp
@@ -40,3 +40,8 @@
40 40
41struct timerEventItem { 41
42#undef USE_ATD // not used anymore -- we run opie-alarm on suspend/resume
43
44
45struct timerEventItem
46{
42 time_t UTCtime; 47 time_t UTCtime;
@@ -56,4 +61,6 @@ class TimerReceiverObject : public QObject
56public: 61public:
57 TimerReceiverObject() { } 62 TimerReceiverObject()
58 ~TimerReceiverObject() { } 63 { }
64 ~TimerReceiverObject()
65 { }
59 void resetTimer(); 66 void resetTimer();
@@ -63,4 +70,7 @@ protected:
63 void timerEvent( QTimerEvent *te ); 70 void timerEvent( QTimerEvent *te );
71
72#ifdef USE_ATD
64private: 73private:
65 QString atfilename; 74 QString atfilename;
75#endif
66}; 76};
@@ -117,3 +127,4 @@ static void saveState()
117 unlink( savefilename ); 127 unlink( savefilename );
118 QDir d; d.rename(savefilename+".new",savefilename); 128 QDir d;
129 d.rename(savefilename + ".new", savefilename);
119 130
@@ -150,3 +161,3 @@ void AlarmServer::initialize()
150 161
151 162#ifdef USE_ATD
152 163
@@ -162,3 +173,4 @@ static bool triggerAtd( bool writeHWClock = FALSE )
162 trigger.close(); 173 trigger.close();
163 QFile::remove( trigger.name() ); 174 QFile::remove
175 ( trigger.name() );
164 return FALSE; 176 return FALSE;
@@ -170,4 +182,23 @@ static bool triggerAtd( bool writeHWClock = FALSE )
170 182
183#else
184
185static bool writeResumeAt ( time_t wakeup )
186{
187 FILE *fp = ::fopen ( "/var/run/resumeat", "w" );
188
189 if ( fp ) {
190 ::fprintf ( fp, "%d\n", (int) wakeup );
191 ::fclose ( fp );
192 }
193 else
194 qWarning ( "Failed to write wakeup time to /var/run/resumeat" );
195
196 return ( fp );
197}
198
199#endif
200
171void TimerReceiverObject::deleteTimer() 201void TimerReceiverObject::deleteTimer()
172{ 202{
203#ifdef USE_ATD
173 if ( !atfilename.isEmpty() ) { 204 if ( !atfilename.isEmpty() ) {
@@ -177,2 +208,5 @@ void TimerReceiverObject::deleteTimer()
177 } 208 }
209#else
210 writeResumeAt ( 0 );
211#endif
178} 212}
@@ -182,3 +216,2 @@ void TimerReceiverObject::resetTimer()
182 const int maxsecs = 2147000; 216 const int maxsecs = 2147000;
183 int total_written;
184 QDateTime nearest = TimeConversion::fromUTC(nearestTimerEvent->UTCtime); 217 QDateTime nearest = TimeConversion::fromUTC(nearestTimerEvent->UTCtime);
@@ -198,2 +231,5 @@ void TimerReceiverObject::resetTimer()
198 // qDebug("reset timer to %d seconds from Epoch",at_secs); 231 // qDebug("reset timer to %d seconds from Epoch",at_secs);
232
233#ifdef USE_ATD
234
199 QString fn = atdir + QString::number(at_secs) + "." 235 QString fn = atdir + QString::number(at_secs) + "."
@@ -203,2 +239,4 @@ void TimerReceiverObject::resetTimer()
203 if ( atfile.open(IO_WriteOnly|IO_Raw) ) { 239 if ( atfile.open(IO_WriteOnly|IO_Raw) ) {
240 int total_written;
241
204 // just wake up and delete the at file 242 // just wake up and delete the at file
@@ -211,3 +249,4 @@ void TimerReceiverObject::resetTimer()
211 atfile.close(); 249 atfile.close();
212 QFile::remove( atfile.name() ); 250 QFile::remove
251 ( atfile.name() );
213 return; 252 return;
@@ -216,3 +255,4 @@ void TimerReceiverObject::resetTimer()
216 unlink( atfilename ); 255 unlink( atfilename );
217 QDir d; d.rename(fn+".new",fn); 256 QDir d;
257 d.rename(fn + ".new", fn);
218 chmod(fn.latin1(),0755); 258 chmod(fn.latin1(),0755);
@@ -220,3 +260,4 @@ void TimerReceiverObject::resetTimer()
220 triggerAtd( FALSE ); 260 triggerAtd( FALSE );
221 } else { 261 }
262 else {
222 qWarning("Cannot open atd file %s",fn.latin1()); 263 qWarning("Cannot open atd file %s",fn.latin1());
@@ -224,2 +265,7 @@ void TimerReceiverObject::resetTimer()
224 } 265 }
266#else
267 writeResumeAt ( at_secs );
268
269#endif
270
225 // Qt timers (does the actual alarm) 271 // Qt timers (does the actual alarm)
@@ -244,2 +290,3 @@ void TimerReceiverObject::timerEvent( QTimerEvent * )
244#endif 290#endif
291
245 timerEventList.remove( nearestTimerEvent ); 292 timerEventList.remove( nearestTimerEvent );
@@ -248,3 +295,4 @@ void TimerReceiverObject::timerEvent( QTimerEvent * )
248 setNearestTimerEvent(); 295 setNearestTimerEvent();
249 } else { 296 }
297 else {
250 resetTimer(); 298 resetTimer();
@@ -315,3 +363,4 @@ void AlarmServer::addAlarm ( QDateTime when, const QCString& channel,
315 } 363 }
316 } else { 364 }
365 else {
317 nearestTimerEvent = newTimerEventItem; 366 nearestTimerEvent = newTimerEventItem;
@@ -321,3 +370,4 @@ void AlarmServer::addAlarm ( QDateTime when, const QCString& channel,
321 saveState(); 370 saveState();
322 } else { 371 }
372 else {
323#ifndef QT_NO_COP 373#ifndef QT_NO_COP
@@ -326,2 +376,3 @@ void AlarmServer::addAlarm ( QDateTime when, const QCString& channel,
326#endif 376#endif
377
327 } 378 }
@@ -357,4 +408,3 @@ void AlarmServer::deleteAlarm (QDateTime when, const QCString& channel, const QC
357 && ( message.isNull() || (*it)->message == message ) 408 && ( message.isNull() || (*it)->message == message )
358 && ( data==-1 || (*it)->data == data ) ) 409 && ( data == -1 || (*it)->data == data ) ) {
359 {
360 // if it's first, then we need to update the timer 410 // if it's first, then we need to update the timer
@@ -363,3 +413,4 @@ void AlarmServer::deleteAlarm (QDateTime when, const QCString& channel, const QC
363 setNearestTimerEvent(); 413 setNearestTimerEvent();
364 } else { 414 }
415 else {
365 timerEventList.remove(*it); 416 timerEventList.remove(*it);
@@ -374,3 +425,4 @@ void AlarmServer::deleteAlarm (QDateTime when, const QCString& channel, const QC
374 saveState(); 425 saveState();
375 } else { 426 }
427 else {
376#ifndef QT_NO_COP 428#ifndef QT_NO_COP
@@ -379,2 +431,3 @@ void AlarmServer::deleteAlarm (QDateTime when, const QCString& channel, const QC
379#endif 431#endif
432
380 } 433 }
@@ -387,2 +440,3 @@ void Global::writeHWClock()
387{ 440{
441#ifdef USE_ATD
388 if ( !triggerAtd( TRUE ) ) { 442 if ( !triggerAtd( TRUE ) ) {
@@ -391,2 +445,5 @@ void Global::writeHWClock()
391 } 445 }
446#else
447 // hwclock is written on suspend
448#endif
392} 449}