안녕하세요!
수고가 많으십니다.
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 분 제각각 수면데이터를 모았다가 주고 있습니다.
관련하여,
방법이 있다면 도움 요청 드립니다.
감사합니다.