Sensor Monitor 에서 Event Callback 호출되었을 때 정확한 timestamp 계산

Sensor Monitor 에서 Event Callback 호출되었을 때 정확한 timestamp 계산

BY 12 Apr 2017 Native Application Development

안녕하세요!

수고가 많으십니다.

 

Sensor Monitor 에서 Event Callback 호출되었을 때 정확한 timestamp 계산과 관련하여

문의사항이 있어서 글을 남깁니다.

 

Sleep Listener를 생성 및 시작한 후,수면데이터를 callback 함수로 받을 때,

callback 함수에서 실제 수면측정된 시간 정보를 어떻게 구할 수 있는지 문의 드리고자 합니다.

 

sensor_event_s 구조체의 event->timestamp는 monotonic time stamp 값으로 측정시간으로 사용할 수 없으므로,

제가 생각한 방법은 최초 callback이 호출된 시점에 현재 시간을 구해서 측정된 시간을 계산하는 방향으로 검토하고 있습니다.

(수면시간은 1분 단위로 측정되며, 자고/깨고/모름 상태 값을 전달함.)

 

문제는,

– callback 함수는 수면측정 단위인 1분마다 호출이 아니고,

   os에서 얼마간(그때그때 다름)의 데이터를가지고 있다가 버퍼가 차면 flush 하는 구조라서 정확한 시간 측정이 어렵다는 것입니다.

 

예를들어 아래와 같이 호출됩니다.

  – 10:00에서 Sleep Listener를 생성 및 시작 ->

  – 10:20분에 콜백함수 20번 호출하면서 10:00 ~ 10:20 사이의 수면데이터를 전달(이때 timestamp는 monotonic timestamp값)

  – 첫 번째 callback 함수가 호출되었을 때의 시간은 20분전 수면의 상태, 두 번째 호출되면 19분 전 수면의 상태…..

 

callback 함수 호출되는 시점에,

os에서 전달되는 데이터가 20분전 수면상태인지 15분전 상태인지 알 방법이 없으므로 정확한 시간계산을 할 수 없습니다.

 

실제 테스트 해보면, 20, 15, 10 분  제각각 수면데이터를 모았다가 주고 있습니다.

 

관련하여,

방법이 있다면 도움 요청 드립니다.

 

감사합니다.

Written by