보고 모드

센서는 보고 모드라 불리는 다양한 방식으로 이벤트를 생성할 수 있으며 각 센서 유형에는 단 하나의 보고 모드만 연결됩니다. 4가지의 보고 모드가 존재합니다.

연속

이벤트가 batch 함수에 전달된 sampling_period_ns 매개변수에 의해 정의된 일정한 속도로 생성됩니다. 연속 보고 모드를 사용하는 센서의 예로는 가속도계자이로스코프가 있습니다.

변경 시

측정된 값이 변경된 경우에만 이벤트가 생성됩니다. HAL 수준에서 activate(..., enable=1)을 호출하여 센서를 활성화해도 이벤트가 트리거됩니다. 즉, 변경 시 센서가 활성화되면 HAL이 즉시 이벤트를 반환해야 합니다. 변경 시 보고 모드를 사용하는 센서의 예로는 걸음 수, 근접, 심박수 센서 유형이 있습니다.

batch 함수로 전달된 sampling_period_ns 매개변수는 연속 이벤트 간에 소요되는 최소 시간을 설정하는 데 사용됩니다. 즉, 마지막 이벤트 이후로 sampling_period_ns나노초가 경과될 때까지 이벤트가 생성되면 안 됩니다. 이는 해당 시점 이후에 값이 변경된 경우도 마찬가지입니다. 값이 변경된 경우에는 마지막 이벤트 이후로 sampling_period_ns가 경과되는 즉시 이벤트가 생성되어야 합니다.

예를 들어 다음과 같이 가정해 보세요.

  • sampling_period_ns = 10 * 10^9(10초)로 걸음 수를 활성화합니다.
  • 55초 동안 걷다가 1분 동안 가만히 서 있습니다.
  • 최초 1분(센서 활성화에 따른 시간 t=0t=60초 포함) 동안 10초마다 이벤트가 생성됩니다(총 7개의 이벤트). 걸음 수의 값이 t=60초 후에 변경되지 않았으므로 2분에는 이벤트가 생성되지 않습니다.

원샷

이벤트가 감지되면 센서는 자체적으로 비활성화된 다음 HAL을 통해 단일 이벤트를 전송합니다. 경합 조건을 피하려면 순서가 중요합니다. 센서는 이벤트가 HAL을 통해 보고되기 전에 비활성화되어야 합니다. 센서가 재활성화될 때까지 다른 이벤트가 전송되지 않습니다. 중요한 모션은 이러한 센서 유형의 한 예입니다.

원샷 센서는 트리거 센서라고도 부릅니다.

batch 함수에 전달된 sampling_period_nsmax_report_latency_ns 매개변수는 무시됩니다. 원샷 이벤트의 이벤트는 하드웨어 FIFO에 저장할 수 없습니다. 이벤트는 생성되는 즉시 보고해야 합니다.

특수

이벤트 생성 시기에 관한 자세한 내용은 개별 센서 유형 설명을 참고하세요.