После ввода устройства в эксплуатацию можно использовать следующие характеристики:
Свойство OtaSoftwareUpdateRequestor
Реализовано в тестовом приложении для Android
Этот признак предоставляет интерфейс для отслеживания обновлений ПО камеры по беспроводной сети. После инициализации камера начинает обновление и сообщает о своем состоянии приложению. Когда приложение получает статус о том, что обновление ПО завершено, камера может начать трансляцию.
Ниже приведен образец кода и объяснение того, как можно использовать этот трейт.
withTimeout(OTA_TIMEOUT_MS) {
device.type(OtaRequestorDevice)
.mapNotNull { it?.trait(OtaSoftwareUpdateRequestor) }
.distinctUntilChanged()
.transformWhile { trait ->
emit(trait)
!isTerminalState(trait.updateState)
}
.collect { trait ->
updateState = trait.updateState
updateStateProgress = trait.updateStateProgress
}
}
Тайм-аут.
withTimeoutустанавливает максимальную продолжительность (OTA_TIMEOUT_MS) для процесса мониторинга. Если обновление не будет завершено в течение этого времени, оно будет отменено.Отслеживание изменений признаков. Оператор
.distinctUntilChanged()гарантирует, что последующий код в цепочке будет реагировать только на фактическое изменение состояния признака, что эффективнее постоянного опроса.Обработка до завершения. Оператор
.transformWhileпродолжает обрабатывать обновления, пока OTAupdateStateне перейдет в конечное состояние (например, успешное или неудачное).Сбор данных. При каждом изменении состояния выполняется блок
.collect, чтобы обновить переменныеupdateStateиupdateStateProgressпоследними значениями из признака.
Подробнее о характеристике OtaSoftwareUpdateRequestor…
Свойство ConfigurationDone
Этот атрибут не требуется для активации камеры, но позволяет приложению отслеживать, когда устройство полностью настроено и готово к использованию. Для этого нужно задать атрибуту AppConfigurationComplete значение true.
Этот признак следует использовать после признака OtaSoftwareUpdateRequestor.
device.trait(ConfigurationDone).first().update { setAppConfigurationComplete(true) }