ลักษณะหลังการเปิดใช้สำหรับการเริ่มต้นใช้งานกล้อง

ลักษณะที่ใช้ได้หลังจากมอบหมายงานให้อุปกรณ์แล้ว ได้แก่

ลักษณะ OtaSoftwareUpdateRequestor

ลักษณะนี้มีอินเทอร์เฟซสำหรับตรวจสอบการอัปเดตซอฟต์แวร์ OTA ในอุปกรณ์กล้อง เมื่อมอบหมายงานแล้ว กล้องจะเริ่มการอัปเดตและรายงานสถานะไปยังแอป เมื่อแอปได้รับสถานะว่าการอัปเดตซอฟต์แวร์เสร็จสมบูรณ์แล้ว กล้องจะเริ่มไลฟ์สดได้

โค้ดตัวอย่างและการอธิบายต่อไปนี้แสดงวิธีใช้ลักษณะ

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 จะประมวลผลการอัปเดตต่อไปตราบใดที่ updateState ของ OTA ไม่ใช่สถานะสิ้นสุด (เช่น สำเร็จหรือล้มเหลว)

  • การรวบรวมสถานะ: สำหรับการเปลี่ยนแปลงสถานะแต่ละครั้ง ระบบจะเรียกใช้บล็อก .collect เพื่ออัปเดตตัวแปร updateState และ updateStateProgress ด้วยค่าล่าสุดจากลักษณะ

ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลอ้างอิงลักษณะ OtaSoftwareUpdateRequestor

ลักษณะ ConfigurationDone

ลักษณะนี้ไม่จำเป็นสำหรับการเปิดใช้งานกล้อง แต่ช่วยให้แอปติดตามได้ว่าอุปกรณ์ตั้งค่าเสร็จสมบูรณ์และพร้อมใช้งานเมื่อใด โดยการตั้งค่าแอตทริบิวต์ AppConfigurationComplete เป็น true ควรใช้ลักษณะนี้หลังจากลักษณะ OtaSoftwareUpdateRequestor

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