/* * Authors: * Jon Trulson * Copyright (c) 2016 Intel Corporation. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef UPM_UTILITIES_H_ #define UPM_UTILITIES_H_ #include #ifdef __cplusplus extern "C" { #endif #if defined(UPM_PLATFORM_LINUX) #include #include #include #include #include typedef struct timeval upm_clock_t; #endif /* UPM_PLATFORM_LINUX */ #if defined(UPM_PLATFORM_ZEPHYR) #include #include #include #include #include #if defined(CONFIG_STDOUT_CONSOLE) #include #define PRINT printf #else #include #define PRINT printk #endif typedef uint32_t upm_clock_t; #endif /* UPM_PLATFORM_ZEPHYR */ /* Get filename w/o path */ #define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) /** * Delay for a number of seconds * * @param time The number of seconds to delay for */ void upm_delay(int time); /** * Delay for a number of milliseconds * * @param time The number of milliseconds to delay for */ void upm_delay_ms(int time); /** * Delay for a number of microseconds * * @param time The number of microseconds to delay for */ void upm_delay_us(int time); /** * Initialize a clock. This can be used with upm_elapsed_ms() and * upm_elapsed_us() for measuring a duration. * * @param clock The upm_clock_t to initialize to the current time */ void upm_clock_init(upm_clock_t *clock); /** * Return the elapsed time in milliseconds since upm_init_clock() was * last called. * * @param clock A upm_clock_t initialized by upm_init_clock() * @return the number of milliseconds elapsed since upm_init_clock() * was called on the clock parameter. */ uint32_t upm_elapsed_ms(upm_clock_t *clock); /** * Return the elapsed time in microseconds since upm_init_clock() was * last called. * * @param clock A upm_clock_t initialized by upm_init_clock() * @return the number of microseconds elapsed since upm_init_clock() * was called on the clock parameter. */ uint32_t upm_elapsed_us(upm_clock_t *clock); #ifdef __cplusplus } #endif #endif /* UPM_UTILITIES_H_ */