aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/recorder/recording_clock.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/recorder/recording_clock.h')
-rw-r--r--include/recorder/recording_clock.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/include/recorder/recording_clock.h b/include/recorder/recording_clock.h
new file mode 100644
index 0000000..4e302b6
--- /dev/null
+++ b/include/recorder/recording_clock.h
@@ -0,0 +1,29 @@
+#ifndef GSR_RECORDER_RECORDING_CLOCK_H
+#define GSR_RECORDER_RECORDING_CLOCK_H
+
+#include <stdbool.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Monotonic clock that excludes the time the recording has been paused. Safe to use from multiple threads */
+typedef struct gsr_recording_clock gsr_recording_clock;
+
+gsr_recording_clock* gsr_recording_clock_create(void);
+void gsr_recording_clock_destroy(gsr_recording_clock *self);
+
+/* Sets the time the recording started to now */
+void gsr_recording_clock_start(gsr_recording_clock *self);
+double gsr_recording_clock_get_start_time(const gsr_recording_clock *self);
+/* Returns the current time, excluding the time the recording has been paused */
+double gsr_recording_clock_get_time(const gsr_recording_clock *self);
+
+void gsr_recording_clock_set_paused(gsr_recording_clock *self, bool paused);
+bool gsr_recording_clock_is_paused(const gsr_recording_clock *self);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GSR_RECORDER_RECORDING_CLOCK_H */