Os traits que podem ser usados depois que o dispositivo é provisionado são:
Trait OtaSoftwareUpdateRequestor
Esse trait fornece uma interface para monitorar uma atualização de software OTA no dispositivo da câmera. Depois de provisionada, a câmera inicia a atualização e informa o estado dela ao app. Quando o app recebe o status de que a atualização de software foi concluída, a câmera pode começar a transmitir ao vivo.
O exemplo de código e a explicação a seguir demonstram como o trait pode ser usado.
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
}
}
Tempo limite:
withTimeoutimpõe uma duração máxima (OTA_TIMEOUT_MS) para o processo de monitoramento. Se a atualização não for concluída dentro desse período, ela vai expirar.Observação das mudanças de trait: o operador
.distinctUntilChanged()garante que o código subsequente na cadeia só reaja quando o estado do trait mudar de verdade, o que o torna mais eficiente do que a pesquisa constante.Processamento até a conclusão: o operador
.transformWhilecontinua processando atualizações enquanto oupdateStateda OTA não for um estado terminal (como sucesso ou falha).Coleta de status: para cada mudança de estado, o bloco
.collecté executado para atualizar as variáveisupdateStateeupdateStateProgresscom os valores mais recentes do trait.
Para mais informações, consulte a referência do trait
OtaSoftwareUpdateRequestor.
Trait ConfigurationDone
Esse trait não é necessário para a ativação da câmera, mas permite que o app acompanhe quando o dispositivo estiver totalmente configurado e utilizável, definindo o atributo AppConfigurationComplete como true.
Esse trait precisa ser usado depois do trait OtaSoftwareUpdateRequestor.
device.trait(ConfigurationDone).first().update { setAppConfigurationComplete(true) }