LINUX.ORG.RU

Suspend с запущенным QtEmbedded приложением.


0

0

Здравствуйте!
Имею следующую проблему. На неком устройстве запускается QtEmbedded приложение. В целях сохранения батареи есть необходимость переводить устройство в suspend режим. Соответсвенно в коде есть таймер который пытается перевести систему в это состояние:

void MApplication::suspendSystem() {
  qDebug() << "MApplication::suspendSystem. Invoke.";
  qDebug() << "MApplication::suspendSystem. Suspending system.";
  QFile powerStateFile("/sys/power/state");
  if( !powerStateFile.open(QIODevice::ReadWrite | QIODevice::Text | QIODevice::Truncate)) {
    qWarning()<<"File not opened";
  } else {
    QTextStream out(&powerStateFile);
    out << "mem";
    powerStateFile.close();
  }
  qDebug() << "MApplication::suspendSystem. Restoring system.";
  QApplication::instance()->processEvents(QEventLoop::AllEvents | QEventLoop::WaitForMoreEvents);

  qDebug() << "MApplication::suspendSystem. Finish.";
  // start timer again
  QTimer::singleShot(1*60*1000, this, SLOT(suspendSystem()));
}

А проблема заключается в том, что устройство засыпает, но при пробуждении qt приложение перестает вести себя адекватно. Т.е. оно перестает получать ввод с клавиатуры, сбиваются таймеры (даже таймер суспенда сначала работает раз в минуту, а потом может и раз в 10 минут сработать) и.д.

PS
Да, забыл сказать, что suspend системы работает. Раньше на железяке крутилось другое приложение под nano-X и тогда с засыпанием проблем небыло.

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.