카메라 온보딩을 위한 커미셔닝 후 특성

기기가 커미셔닝된 후 사용할 수 있는 특성은 다음과 같습니다.

OtaSoftwareUpdateRequestor 트레이트

이 특성은 카메라 기기에서 OTA 소프트웨어 업데이트를 모니터링하는 인터페이스를 제공합니다. 커미셔닝이 완료되면 카메라가 업데이트를 시작하고 앱에 상태를 보고합니다. 앱이 소프트웨어 업데이트가 완료되었다는 상태를 수신하면 카메라가 라이브 스트리밍을 시작할 수 있습니다.

다음 샘플 코드와 설명은 특성을 사용하는 방법을 보여줍니다.

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
    }
}
  • 타임아웃: withTimeout은 모니터링 프로세스의 최대 기간 (OTA_TIMEOUT_MS)을 적용합니다. 이 시간 내에 업데이트가 완료되지 않으면 시간이 초과됩니다.

  • 특성 변경사항 관찰: .distinctUntilChanged() 연산자는 체인의 후속 코드가 특성의 상태가 실제로 변경될 때만 반응하도록 보장하므로, 이는 지속적인 폴링보다 효율적입니다.

  • 완료될 때까지 처리: OTA updateState가 종료 상태 (예: 성공 또는 실패)가 아닌 한 .transformWhile 연산자는 업데이트 처리를 계속합니다.

  • 상태 수집: 각 상태 변경에 대해 .collect 블록이 실행되어 특성의 최신 값으로 updateStateupdateStateProgress 변수를 업데이트합니다.

자세한 내용은 OtaSoftwareUpdateRequestor 특성 참조를 확인하세요.

ConfigurationDone 트레이트

이 특성은 카메라 활성화에 필요하지 않지만 앱이 AppConfigurationComplete 속성을 true로 설정하여 기기가 완전히 설정되고 사용 가능한 시점을 추적할 수 있습니다. 이 특성은 OtaSoftwareUpdateRequestor 특성 다음에 사용해야 합니다.

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