Caratteristiche post-commissioning per l'onboarding della videocamera

Le caratteristiche che possono essere utilizzate dopo la configurazione del dispositivo sono:

OtaSoftwareUpdateRequestor trait

Questo tratto fornisce un'interfaccia per monitorare un aggiornamento software OTA sul dispositivo videocamera. Una volta commissionata, la videocamera avvia l'aggiornamento e comunica il suo stato all'app. Quando l'app riceve la notifica che l'aggiornamento software è stato completato, la videocamera può iniziare a trasmettere in live streaming.

Il seguente codice di esempio e la relativa spiegazione mostrano come può essere utilizzata la caratteristica.

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: withTimeout impone una durata massima (OTA_TIMEOUT_MS) per la procedura di monitoraggio. Se l'aggiornamento non viene completato entro questo periodo di tempo, scade.

  • Osservazione delle modifiche delle caratteristiche: l'operatore .distinctUntilChanged() garantisce che il codice successivo nella catena reagisca solo quando lo stato della caratteristica cambia effettivamente, il che lo rende più efficiente del polling costante.

  • Elaborazione fino al completamento: l'operatore .transformWhile continua a elaborare gli aggiornamenti finché l'OTA updateState non è in uno stato terminale (ad esempio riuscito o non riuscito).

  • Stato di raccolta: per ogni modifica dello stato, viene eseguito il blocco .collect per aggiornare le variabili updateState e updateStateProgress con i valori più recenti del tratto.

Per saperne di più, consulta il riferimento all'attributo OtaSoftwareUpdateRequestor.

Tratto ConfigurationDone

Questa caratteristica non è necessaria 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) }