מאפיינים של צירוף מצלמות לאחר ההפעלה

   הטמעה באפליקציה לדוגמה ל-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.

  • הגדרת זמן קצוב לתפוגה: מגדיר זמן קצוב לתפוגה של 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)
}