I tratti che possono essere utilizzati dopo il commissioning del dispositivo sono:
Tratto OtaSoftwareUpdateRequestor
Questo tratto fornisce un'interfaccia per monitorare un aggiornamento software OTA sul dispositivo della videocamera. Una volta eseguito il commissioning, la videocamera avvia l'aggiornamento e segnala il suo stato all'app. Una volta che l'app riceve lo stato di completamento dell'aggiornamento software, la videocamera può iniziare lo streaming live.
Il seguente codice campione e la spiegazione mostrano come utilizzare il tratto.
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
}
}
Timeout:
withTimeoutimpone una durata massima (OTA_TIMEOUT_MS) per il processo di monitoraggio. Se l'aggiornamento non viene completato entro questo periodo di tempo, si verifica un timeout.Osservazione delle modifiche dei tratti: l'operatore
.distinctUntilChanged()garantisce che il codice successivo nella catena reagisca solo quando lo stato del tratto cambia effettivamente, il che lo rende più efficiente del polling costante.Elaborazione fino al completamento: l'operatore
.transformWhilecontinua a elaborare gli aggiornamenti finché l'OTAupdateStatenon è uno stato terminale (ad esempio successo o errore).Raccolta dello stato: per ogni modifica dello stato, viene eseguito il blocco
.collectper aggiornare le variabiliupdateStateeupdateStateProgresscon gli ultimi valori del tratto.
Per ulteriori informazioni, consulta il
OtaSoftwareUpdateRequestor riferimento del tratto.
Tratto ConfigurationDone
Questo tratto non è obbligatorio per l'attivazione della videocamera, ma consente all'app di monitorare quando il dispositivo è completamente configurato e utilizzabile impostando l'attributo AppConfigurationComplete su true.
Questo tratto deve essere utilizzato dopo il tratto OtaSoftwareUpdateRequestor.
device.trait(ConfigurationDone).first().update { setAppConfigurationComplete(true) }