Характеристики процесса ввода камеры в эксплуатацию после его завершения

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

OtaSoftwareUpdateRequestorTrait

Эта функция предоставляет интерфейс для мониторинга обновления программного обеспечения по воздуху (OTA) на камере. После запуска камера инициирует обновление и сообщает о своем состоянии приложению. Как только приложение получит информацию о завершении обновления программного обеспечения, камера может начать прямую трансляцию.

Приведенный ниже пример кода и пояснение демонстрируют, как можно использовать этот трейт.

device.types.subscribe(OtaRequestorDeviceType.self)
  .receive(on: DispatchQueue.main)
  .compactMap { $0.traits[Matter.OtaSoftwareUpdateRequestorTrait.self] }
  .removeDuplicates()
  .timeout(.seconds(30), scheduler: DispatchQueue.main)
  .sink { [weak self] completion in
    guard let self else { return }
    Logger.debug("OTA trait subscription completed unexpectedly: \(completion).")
    if case .otaDownload = self.step {
      Logger.debug("Advancing to settings step due to OTA trait subscription completion")
      self.step = .settings
    }
  } receiveValue: { [weak self] otaTrait in
    Logger.debug(
      "OTA update is in progress, state: \(otaTrait.attributes.updateState), progress: \(otaTrait.attributes.updateStateProgress ?? 0)"
    )

    self.step = .otaDownload(
      state: otaTrait.attributes.updateState ?? .querying,
      progress: Double(otaTrait.attributes.updateStateProgress ?? 0) / 100.0)
    }
  }
  .store(in: &cancellables)
  • Подписка на характеристики устройства: система подписывается на характеристики устройства, в частности, отслеживая параметр OtaSoftwareUpdateRequestorTrait , чтобы получать информацию об обновлениях по воздуху (OTA).

  • Установка тайм-аута: устанавливается 30-секундный тайм-аут. Если в течение этого времени от трейта не поступает никаких обновлений, подписка завершается.

  • Обработка обновлений статуса OTA ( receiveValue ): Когда OtaSoftwareUpdateRequestorTrait предоставляет новый статус, выполняется этот блок. Он регистрирует текущее состояние и ход выполнения обновления OTA. Затем он обновляет внутреннее состояние приложения ( step ), чтобы отразить эту новую информацию.

  • Обработка завершения ( sink ): Этот блок выполняется по завершении подписки и регистрирует завершение. Если процесс находился в состоянии загрузки, состояние приложения переходит к следующему шагу ( .settings ).

  • Управление жизненным циклом подписки: строка .store(in: &cancellables) гарантирует, что подписка будет корректно управляться и отменена при освобождении объекта, которому она принадлежит.

Для получения более подробной информации обратитесь к справочнику по трейту OtaSoftwareUpdateRequestorTrait .

ConfigurationDoneTrait

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

let configDoneTrait = try await device.types.get(OtaRequestorDeviceType.self)?.traits[Google.ConfigurationDoneTrait.self]
_ = try await configDoneTrait?.update {
  $0.setAppConfigurationComplete(true)
}