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

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

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() 연산자는 체인의 후속 코드가 특성의 상태가 실제로 변경될 때만 반응하도록 보장하므로 지속적인 폴링보다 더 효율적입니다.

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

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

자세한 내용은 OtaSoftwareUpdateRequestor 트레이트 참조를 확인하세요.

ConfigurationDone 트레이트

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

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