ویژگی‌های پس از راه‌اندازی برای نصب دوربین

ویژگی‌هایی که پس از راه‌اندازی دستگاه می‌توانند مورد استفاده قرار گیرند عبارتند از:

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 ثانیه‌ای تعیین می‌کند. اگر در این مدت هیچ به‌روزرسانی از trait دریافت نشود، اشتراک پایان می‌یابد.

  • مدیریت به‌روزرسانی‌های وضعیت OTA ( receiveValue ): وقتی OtaSoftwareUpdateRequestorTrait وضعیت جدیدی ارائه می‌دهد، این بلوک اجرا می‌شود. این بلوک وضعیت فعلی و پیشرفت به‌روزرسانی OTA را ثبت می‌کند. سپس وضعیت داخلی برنامه ( step ) را به‌روزرسانی می‌کند تا این اطلاعات جدید را منعکس کند.

  • مدیریت تکمیل ( sink ): این بلوک زمانی اجرا می‌شود که اشتراک پایان یابد و تکمیل را ثبت می‌کند. اگر فرآیند در حالت دانلود باشد، حالت برنامه به مرحله بعدی ( .settings ) می‌رود.

  • مدیریت چرخه حیات اشتراک: خط .store(in: &cancellables) ‎ تضمین می‌کند که اشتراک به درستی مدیریت شده و پس از آزادسازی شیء مالک آن، لغو شود.

برای اطلاعات بیشتر، به مرجع ویژگی OtaSoftwareUpdateRequestorTrait مراجعه کنید.

ConfigurationDoneTrit

این ویژگی برای فعال‌سازی دوربین ضروری نیست، اما به برنامه اجازه می‌دهد تا با تنظیم ویژگی AppConfigurationComplete روی true ، زمانی که دستگاه کاملاً راه‌اندازی و قابل استفاده شد را ردیابی کند. این ویژگی باید پس از OtaSoftwareUpdateRequestorTrait استفاده شود.

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