/** * @file timing.h * @brief High-precision timing utilities * @author ASCII3D Project * @version 1.0.0 */ #ifndef ASCII3D_TIMING_H #define ASCII3D_TIMING_H #ifdef __cplusplus extern "C" { #endif /** * @brief Get current time in seconds (monotonic clock) * @return Time in seconds with nanosecond precision */ double timing_get_seconds(void); /** * @brief Sleep for specified microseconds * @param microseconds Duration to sleep */ void timing_sleep_us(unsigned int microseconds); /** * @brief Frame rate limiter - sleeps to maintain target FPS * @param frame_start_time Time when frame started (from timing_get_seconds) * @param target_fps Target frames per second */ void timing_limit_fps(double frame_start_time, int target_fps); #ifdef __cplusplus } #endif #endif /* ASCII3D_TIMING_H */