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

   در برنامه نمونه برای iOS پیاده‌سازی شده است   

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

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 را دریافت کند.

  • تنظیم زمان استراحت: زمان استراحت ۳۰ ثانیه‌ای تنظیم می‌کند. اگر در این مدت به‌روزرسانی‌ای از ویژگی دریافت نشود، اشتراک پایان می‌یابد.

  • مدیریت به‌روزرسانی‌های وضعیت OTA‏ (receiveValue): وقتی OtaSoftwareUpdateRequestorTrait وضعیت جدیدی ارائه می‌دهد، این بلوک اجرا می‌شود. این فایل وضعیت فعلی و پیشرفت به‌روزرسانی ازطریق هوا را ثبت می‌کند. سپس وضعیت داخلی برنامه (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)
}