Traits после инициализации для добавления камеры

После ввода устройства в эксплуатацию можно использовать следующие характеристики:

Свойство 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 продолжает обрабатывать обновления, пока OTA updateState не перейдет в конечное состояние (например, успешное или неудачное).

  • Сбор данных. При каждом изменении состояния выполняется блок .collect, чтобы обновить переменные updateState и updateStateProgress последними значениями из признака.

Подробнее о характеристике OtaSoftwareUpdateRequestor…

Свойство ConfigurationDone

Этот атрибут не требуется для активации камеры, но позволяет приложению отслеживать, когда устройство полностью настроено и готово к использованию. Для этого нужно задать атрибуту AppConfigurationComplete значение true. Этот признак следует использовать после признака OtaSoftwareUpdateRequestor.

device.trait(ConfigurationDone).first().update { setAppConfigurationComplete(true) }