Класс SystemUpdate
(Sailfish::Mdm::SystemUpdate)
Класс SystemUpdate предоставляет высокоуровневый API для управления обновлениями ОС. Подробнее…
Заголовочный файл: | #include <mdm-systemupdate.h> |
Публичные типы
- class ScheduledDownloadInfo
- class VersionEntry
- enum Error { NoError, IOError, NetworkError, MetadataError, ..., UnknownError }
- enum Method
Свойства
- downloadProgress : const int
- isDownloaded : const int
- lastChecked : const QDateTime
- method : const Method
- progress : const int
- ready : const bool
- scheduled : const bool
- size : const qlonglong
- version : const QString
Публичные методы
- SystemUpdate(QObject *parent = nullptr)
- void cancelScheduled() const
- void cancelScheduledDownload()
- int downloadProgress() const
- bool isDownloaded() const
- bool isVendorDataDownloaded() const
- QDateTime lastChecked() const
- Метод method() const
- int progress() const
- bool ready() const
- void requestAvailableVersions()
- bool scheduled() const
- bool scheduled(QString &schedule)
- qlonglong size() const
- QString version() const
Публичные слоты
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) |
Сигналы
- void availableVersionsReady(const QVector<VersionEntry> listOfVersionsAvailable)
- void downloadProgressChanged()
- void error(Error error, const QString &details)
- void isDownloadedChanged()
- void lastCheckedChanged()
- void methodChanged()
- void progressChanged()
- void readyChanged()
- void scheduledChanged()
- void scheduledDownloadChanged()
- void sizeChanged()
- void versionChanged()
Подробное описание
Класс 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
Сигнал уведомления:
- void lastCheckedChanged()
method : const Method
Свойство содержит выбранный метод обновления системы.
Методы доступа:
- Метод method() const
Сигнал уведомления:
- void methodChanged()
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
Сигнал уведомления:
- void sizeChanged()
version : const QString
Свойство содержит номер версии доступного обновления. Пусто, если обновление не найдено.
Методы доступа:
- QString version() const
Сигнал уведомления:
- void versionChanged()
Описание методов класса
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.