-rw-r--r-- | library/alarmserver.cpp | 91 |
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 | ||
41 | struct timerEventItem { | 41 | |
42 | #undef USE_ATD // not used anymore -- we run opie-alarm on suspend/resume | ||
43 | |||
44 | |||
45 | struct timerEventItem | ||
46 | { | ||
42 | time_t UTCtime; | 47 | time_t UTCtime; |
@@ -56,4 +61,6 @@ class TimerReceiverObject : public QObject | |||
56 | public: | 61 | public: |
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 | ||
64 | private: | 73 | private: |
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 | |||
185 | static 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 | |||
171 | void TimerReceiverObject::deleteTimer() | 201 | void 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 | } |