Документация
ОС Аврора 5.1.5

Класс SystemUpdate

(Sailfish::Mdm::SystemUpdate)

Класс SystemUpdate предоставляет высокоуровневый API для управления обновлениями ОС. Подробнее…

Заголовочный файл: #include <mdm-systemupdate.h>

Публичные типы

Свойства

Публичные методы

Публичные слоты

void cancelDownload()
void cancelUpdate()
void clearDownloadedData()
void downloadUpdate(const QString &version, Method method, const QString &vendorDataUrl = {})
void installUpdate()
void onScheduledInstallationError(const QString &details)
void scheduleDownload(const QDateTime from, const QDateTime to, const Method method, const QString &version, const QString &vendorDataUrl)
void scheduleDownload(const QTime from, const QTime to, const Method method, const QString &version, const QString &vendorDataUrl)
void scheduleUpdate(QDateTime from, QDateTime to)
void scheduleUpdate(QDateTime from, QDateTime to, bool allowRecharge)
void scheduleUpdate(QTime from, QTime to, bool allowRecharge)

Сигналы

Подробное описание

Класс SystemUpdate предоставляет высокоуровневый API для управления обновлениями ОС.

Доступное обновление ОС может быть подготовлено для установки с помощью SystemUpdate::download(), а затем запланировано для установки в нужное время с помощью SystemUpdate::scheduleUpdate(). Также обновление ОС может быть установлено без отсрочки с помощью SystemUpdate::installUpdate().

Для использования данного класса в qmake-настройки проекта клиента следует добавить следующее:

 CONFIG += link_pkgconfig
 PKGCONFIG += sailfishmdm

и затем #include <mdm-systemupdate.h>.

Пример использования:

 #include <mdm-systemupdate.h>
 void scheduleUpdate(const QString &version,
                     Sailfish::Mdm::SystemUpdate::Method method,
                     const QString &vendorDataUrl,
                     QDateTime from, QDateTime to)
 {
     auto updates = new Sailfish::Mdm::SystemUpdate(this);
     updates->download(version, method, vendorDataUrl);
     QObject::connect(updates, &Sailfish::Mdm::SystemUpdate::readyChanged,
                      = {
                          if (updates->ready())
                              updates->scheduleUpdate(from, to, true);
                      });
     QObject::connect(updates, &Sailfish::Mdm::SystemUpdate::scheduledChanged,
                      = {
                          if (updates->scheduled())
                              qInfo() << "System update is scheduled successfully";
                      });
     QObject::connect(updates, &Sailfish::Mdm::SystemUpdate::error,
                      [](Sailfish::Mdm::SystemUpdate::Error error, const QString &details) {
                          qWarning() << "OS update error:" << error << details;
                      });
 }

Описание типов класса

enum SystemUpdate::Error

Типы ошибок.

Константа Значение Описание
Sailfish::Mdm::SystemUpdate::NoError 0 Нет ошибки.
Sailfish::Mdm::SystemUpdate::IOError 1 Ошибка файловой системы (например, проблема с уровнем доступа к файловой системе устройства).
Sailfish::Mdm::SystemUpdate::NetworkError 2 Любая сетевая ошибка, кроме аутентификации. (например, сеть отсутствует или сеть не была повторно подключена).
Sailfish::Mdm::SystemUpdate::MetadataError 3 Неверные метаданные. (например, <host>/meta/ или <host>/metav2/ некорректен и не может быть обработан).
Sailfish::Mdm::SystemUpdate::PackageError 4 Ошибка обновления пакета. (например, проблемы с зависимостями, обнаруженные после загрузки данных пакета перед загрузкой самих пакетов).
Sailfish::Mdm::SystemUpdate::DBusError 5 Не удалось установить связь с некоторыми службами D-Bus. Критическая ошибка. (например, некоторые службы dbus не запускаются или работают неправильно).
Sailfish::Mdm::SystemUpdate::SsuError 6 Ошибка протокола SSU. (например, ошибка при аутентификации через SSU — PU не использует этот механизм).
Sailfish::Mdm::SystemUpdate::NotSupportedError 7 Выбранный метод обновления не поддерживается. (например, генерируется ошибка, когда обновление по metav2 не может быть выполнено выбранным способом).
Sailfish::Mdm::SystemUpdate::InternalError 8 Внутренняя ошибка в диспетчере обновлений системы. (например, неправильная последовательность вызовов API).
Sailfish::Mdm::SystemUpdate::BusyError 9 Диспетчер обновлений системы занят другой операцией.
Sailfish::Mdm::SystemUpdate::AuthenticationError 10 Не удалось аутентифицироваться на сервере обновлений. (например, ошибка может быть в случае обновления через сброс при попытке получить образ).
Sailfish::Mdm::SystemUpdate::LowBattery 12 Заряд батареи слишком низкий для обновления ОС. (Например, возникает перед попыткой установить обновление).
Sailfish::Mdm::SystemUpdate::LowDisk 11 Недостаточно места на диске для обновления ОС. (например, оно может быть выдано как перед загрузкой (если размер обновления известен и оно не помещается на устройстве), так и в процессе загрузки (если в процессе загрузки обновления закончилось место, например, пользователь заполнил память в процессе загрузки обновления)).
Sailfish::Mdm::SystemUpdate::VerifyError 13 Целевая версия обновления ниже или равна текущей версии выпуска.
Sailfish::Mdm::SystemUpdate::ConnectionError 14 Нет подключения к сети.
Sailfish::Mdm::SystemUpdate::WlanConditionError 15 Произведена попытка загрузить обновление без подключения к беспроводной сети с условием WlanOnly.
Sailfish::Mdm::SystemUpdate::RoamingConditionError 16 Произведена попытка загрузить обновление в роуминге без условия роуминга.
Sailfish::Mdm::SystemUpdate::NotAvailable 100 Выбранная версия ОС недоступна для обновления.
Sailfish::Mdm::SystemUpdate::ScheduleError 101 Не удалось запланировать обновление ОС. Неверный период времени или пропущенный период времени. (например, недопустимый временной интервал будет, если «от» == «до», затем он будет обработан в клиенте EMM и заменен на «от» = 00:00, «до» = 23:59).
Sailfish::Mdm::SystemUpdate::UnknownError -1 Не должно происходить.

enum SystemUpdate::Method

Какой метод следует использовать для обновления ОС.

Константа Значение Описание
Sailfish::Mdm::SystemUpdate::Any 0 Любой доступный метод.
Sailfish::Mdm::SystemUpdate::PackageUpdate 1 Стандартное обновление с использованием пакетов rpm.
Sailfish::Mdm::SystemUpdate::ResetUpdate 2 Обновление с помощью сброса к заводским настройкам с потерей всех пользовательских данных.

Описание свойств

downloadProgress : const int

Свойство хранит прогресс загрузки в процентах.

Методы доступа:

  • int downloadProgress() const

Сигнал уведомления:

  • void downloadProgressChanged()

isDownloaded : const int

Указывает, завершена ли загрузка обновления или нет.

Методы доступа:

  • bool isDownloaded() const

Сигнал уведомления:

  • void isDownloadedChanged()

lastChecked : const QDateTime

Свойство содержит дату и время последней назначенной проверки обновлений системы.

Методы доступа:

  • QDateTime lastChecked() const

Сигнал уведомления:

method : const Method

Свойство содержит выбранный метод обновления системы.

Методы доступа:

  • Метод method() const

Сигнал уведомления:

progress : const int

Свойство хранит прогресс загрузки в процентах.

Методы доступа:

  • int progress() const

Сигнал уведомления:

  • void progressChanged()

ready : const bool

Истинно, если обновление готово к установке, т. е. SystemUpdate::installUpdate() или SystemUpdate::scheduleUpdate() могут быть вызваны, если для этого свойства установлено значение true.

Методы доступа:

  • bool ready() const

Сигнал уведомления:

  • void readyChanged()

scheduled : const bool

Истинно, если обновление успешно запланировано для установки.

Методы доступа:

  • bool scheduled() const
  • bool scheduled(QString &schedule)

Сигнал уведомления:

  • void scheduledChanged()

size : const qlonglong

Свойство содержит общий размер доступного обновления. Представляет необходимое дисковое пространство в разделе /home и приблизительный загружаемый размер.

Методы доступа:

  • qlonglong size() const

Сигнал уведомления:

version : const QString

Свойство содержит номер версии доступного обновления. Пусто, если обновление не найдено.

Методы доступа:

  • QString version() const

Сигнал уведомления:

Описание методов класса

SystemUpdate::SystemUpdate(QObject *parent = nullptr)

Создаёт новый экземпляр SystemUpdate с заданным родителем parent.

[signal] void SystemUpdate::availableVersionsReady(const QVector<VersionEntry> listOfVersionsAvailable)

[slot] void SystemUpdate::cancelDownload()

Отменяет текущую загрузку.

void SystemUpdate::cancelScheduled() const

Отменяет запланированное обновление (если есть), ничего не делает, если запланированного обновления нет.

void SystemUpdate::cancelScheduledDownload()

Отменяет запланированную загрузку.

[slot] void SystemUpdate::cancelUpdate()

Отменяет запланированное обновление. Не влияет на уже установленное обновление.

Устанавливает значение scheduled как false.

[slot] void SystemUpdate::clearDownloadedData()

Очищает загруженные данные.

[slot] void SystemUpdate::downloadUpdate(const QString &version, Method method, const QString &vendorDataUrl = {})

Загружает указанное обновление. Также можно указать vendorDataUrl, чтобы также загрузить образ данных поставщика.

Устанавливает значение ready как true в случае успеха.

[signal] void SystemUpdate::error(Error error, const QString &details)

Испускается при ошибке в любых операциях. error определяет код ошибки, а details содержит дополнительную нелокализованную информацию, не предназначенную для показа пользователю.

[slot] void SystemUpdate::installUpdate()

Немедленно устанавливает загруженное обновление. По окончании этой операции устройство будет перезагружено.

bool SystemUpdate::isVendorDataDownloaded() const

[signal] void SystemUpdate::lastCheckedChanged()

Испускается после завершения последней проверки обновлений.

Примечание — Сигнал уведомления для свойства lastChecked.

[signal] void SystemUpdate::methodChanged()

Испускается при изменении метода обновления или установке значения Unknown.

Примечание — Сигнал уведомления для свойства method.

[slot] void SystemUpdate::onScheduledInstallationError(const QString &details)

void SystemUpdate::requestAvailableVersions()

Запрашивает версии, до которых устройство может быть обновлено. Результат будет доставлен асинхронно с сигналом availableVersionsReady().

[slot] void SystemUpdate::scheduleDownload(const QDateTime from, const QDateTime to, const Method method, const QString &version, const QString &vendorDataUrl)

Планирует загрузку указанного обновления. Также можно указать vendorDataUrl, чтобы также загрузить образ данных поставщика.

[slot] void SystemUpdate::scheduleDownload(const QTime from, const QTime to, const Method method, const QString &version, const QString &vendorDataUrl)

Планирует загрузку указанного обновления. Также можно указать vendorDataUrl, чтобы также загрузить образ данных поставщика.

[slot] void SystemUpdate::scheduleUpdate(QDateTime from, QDateTime to)

Вызывает внутри устаревший scheduleUpdate(from, to, true).

[slot] void SystemUpdate::scheduleUpdate(QDateTime from, QDateTime to, bool allowRecharge)

Планирует загруженное обновление для установки в указанный временной интервал. allowRecharge не используется.

Заставляет SystemUpdate::scheduled() возвращать true в случае успеха.

[slot] void SystemUpdate::scheduleUpdate(QTime from, QTime to, bool allowRecharge)

Ежедневно планирует загруженное обновление для установки в указанный временной интервал. allowRecharge не используется.

Заставляет SystemUpdate::scheduled() возвращать true в случае успеха.

bool SystemUpdate::scheduled(QString &schedule)

schedule здесь является выходным параметром. Устанавливается пустое значение, если для установки не запланировано обновление, и инициализируется строкой "<от>–<до>", если обновление запланировано между <от> и <до>.

Всегда возвращает true.

Примечание: Функция возвращает значение свойства scheduled.

[signal] void SystemUpdate::scheduledDownloadChanged()

[signal] void SystemUpdate::sizeChanged()

Испускается, когда размер обновления, необходимого для загрузки, изменяется или устанавливается равным нулю.

Примечание — Сигнал уведомления для свойства size.

[signal] void SystemUpdate::versionChanged()

Испускается при изменении целевой версии обновления.

Примечание — Сигнал уведомления для свойства version.

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.