Folgende Traits können nach der Inbetriebnahme des Geräts verwendet werden:
OtaSoftwareUpdateRequestor-Trait
Dieser Trait bietet eine Schnittstelle zum Überwachen eines OTA-Softwareupdates auf dem Kameragerät. Nach der Inbetriebnahme startet die Kamera das Update und meldet ihren Status an die App. Sobald die App den Status erhält, dass das Softwareupdate abgeschlossen ist, kann die Kamera mit dem Livestreaming beginnen.
Der folgende Beispielcode und die Erläuterung zeigen, wie das Attribut verwendet werden kann.
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
}
}
Zeitüberschreitung:
withTimeouterzwingt eine maximale Dauer (OTA_TIMEOUT_MS) für den Monitoringprozess. Wenn das Update nicht innerhalb dieses Zeitraums abgeschlossen wird, tritt ein Zeitüberschreitungsfehler auf.Eigenschaftsänderungen beobachten: Der Operator
.distinctUntilChanged()sorgt dafür, dass der nachfolgende Code in der Kette nur reagiert, wenn sich der Status der Eigenschaft tatsächlich ändert. Das ist effizienter als das ständige Abrufen des Status.Verarbeitung bis zum Abschluss: Der Operator
.transformWhileverarbeitet Updates so lange, bis der OTA-VorgangupdateStateeinen Endstatus erreicht (z. B. „Erfolg“ oder „Fehler“).Status erfassen: Bei jeder Statusänderung wird der
.collect-Block ausgeführt, um die VariablenupdateStateundupdateStateProgressmit den neuesten Werten aus dem Trait zu aktualisieren.
Weitere Informationen findest du in der Referenz zum OtaSoftwareUpdateRequestor-Trait.
ConfigurationDone-Trait
Dieses Merkmal ist für die Kameraaktivierung nicht erforderlich, ermöglicht es der App jedoch, nachzuverfolgen, wann das Gerät vollständig eingerichtet und nutzbar ist, indem das Attribut AppConfigurationComplete auf true gesetzt wird.
Dieses Merkmal sollte nach dem Merkmal OtaSoftwareUpdateRequestor verwendet werden.
device.trait(ConfigurationDone).first().update { setAppConfigurationComplete(true) }