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

Класс 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 scheduleDownload(const QString &from, const QString &to, Method method, const QString &version, const QString &vendorDataUrl)
void scheduleUpdate(const QString &from, const QString &to)

Сигналы

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

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

Доступное обновление ОС может быть подготовлено для установки с помощью SystemUpdate::downloadUpdate(), а затем запланировано для установки в нужное время с помощью 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 Не удалось запланировать обновление ОС. Некорректный временной интервал (например, 'from' == 'to'), указанное действие уже запланировано, невозможно записать информацию о расписании и т.д.
Sailfish::Mdm::SystemUpdate::ScheduledInstallationError 102 Не удалось выполнить запланированную установку.
Sailfish::Mdm::SystemUpdate::UnknownError -1 Не должно происходить.
enum SystemUpdate::Method

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

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

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

downloadProgress : const int

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

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

  • int downloadProgress() const

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

  • void downloadProgressChanged()
isDownloaded : const int

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

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

  • bool isDownloaded() const

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

  • void isDownloadedChanged()
lastChecked : const QDateTime

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

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

  • QDateTime lastChecked() const

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

lastInstallTime : const QDateTime

Дата и время последней установки обновлений. Возвращает QDateTime::fromMSecsSinceEpoch(0), если обновления ещё не проводились.

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

  • QDateTime lastInstallTime() const

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

method : const Method

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

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

  • Method method() const

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

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)

Испускается после завершения вызова SystemUpdate::requestAvailableVersions(). Аргумент 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 = {})

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

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

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

Испускается при ошибке в любых операциях.

  • error определяет код ошибки, а details содержит дополнительную нелокализованную информацию, не предназначенную для показа пользователю.
[slot] void SystemUpdate::installUpdate()

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

ScheduledDownloadInfo SystemUpdate::isDownloadScheduled()

Проверяет, запланирована ли загрузка, и получает информацию об этом.

bool SystemUpdate::isDownloading() const

Возвращает true, если обновление загружается, в противном случае — false.

bool SystemUpdate::isVendorDataDownloaded() const

Возвращает true, если загрузка данных поставщика завершена, в противном случае возвращает false.

[signal] void SystemUpdate::lastCheckedChanged()

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

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

[signal] void SystemUpdate::lastInstallTimeChanged()

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

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

[signal] void SystemUpdate::methodChanged()

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

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

void SystemUpdate::requestAvailableVersions()

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

ы[signal] void SystemUpdate::scheduleCancelled()

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

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

Планирует загрузку указанной version обновления с использованием method. Также можно указать vendorDataUrl, чтобы также загрузить образ данных поставщика. Параметр from содержит информацию о времени начала загрузки. Параметр to содержит информацию о времени завершения начала загрузки.

[signal] void SystemUpdate::scheduleDownloadCancelled()

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

[slot] void SystemUpdate::scheduleUpdate(const QString &from, const QString &to)

Планирует загруженное обновление для установки в указанный временной интервал. Параметр from содержит информацию о времени начала загрузки. Параметр to содержит информацию о времени завершения начала загрузки.

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

bool SystemUpdate::scheduled(QString &schedule)
  • schedule здесь является выходным параметром. Устанавливается пустое значение, если для установки не запланировано обновление, и инициализируется строкой "<от>–<до>", если обновление запланировано между <от> и <до>.

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

Примечание. Геттер для свойства scheduled.

[signal] void SystemUpdate::scheduledDownloadChanged()

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

[signal] void SystemUpdate::sizeChanged()

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

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

[signal] void SystemUpdate::statusChanged()

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

[signal] void SystemUpdate::versionChanged()

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

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

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

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