Ciri-ciri pasca-penyiapan untuk orientasi kamera

Ciri yang dapat digunakan setelah perangkat diaktifkan adalah:

Trait OtaSoftwareUpdateRequestor

Trait ini menyediakan antarmuka untuk memantau update software OTA di perangkat kamera. Setelah di-commissioning, kamera memulai update dan melaporkan statusnya ke aplikasi. Setelah aplikasi menerima status bahwa update software telah selesai, kamera dapat mulai melakukan live streaming.

Contoh kode dan penjelasan berikut menunjukkan cara penggunaan trait.

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
    }
}
  • Waktu tunggu: withTimeout menerapkan durasi maksimum (OTA_TIMEOUT_MS) untuk proses pemantauan. Jika update tidak selesai dalam jangka waktu ini, update akan kehabisan waktu.

  • Mengamati perubahan sifat: Operator .distinctUntilChanged() memastikan bahwa kode berikutnya dalam rantai hanya bereaksi saat status sifat benar-benar berubah, sehingga lebih efisien daripada polling konstan.

  • Pemrosesan hingga selesai: Operator .transformWhile akan terus memproses update selama updateState OTA bukan merupakan status akhir (seperti berhasil atau gagal).

  • Mengumpulkan status: Untuk setiap perubahan status, blok .collect dieksekusi untuk memperbarui variabel updateState dan updateStateProgress dengan nilai terbaru dari trait.

Untuk mengetahui informasi selengkapnya, lihat referensi karakteristik OtaSoftwareUpdateRequestor.

Trait ConfigurationDone

Ciri ini tidak diperlukan untuk aktivasi kamera, tetapi memungkinkan aplikasi melacak saat perangkat disiapkan sepenuhnya dan dapat digunakan dengan menyetel atribut AppConfigurationComplete ke true. Trait ini harus digunakan setelah trait OtaSoftwareUpdateRequestor.

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