Remove arduino support 3/3
[iotivity.git] / resource / c_common / oic_time / include / oic_time.h
1 //******************************************************************
2 //
3 // Copyright 2015 Intel Mobile Communications GmbH All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20
21 /**
22  * @file
23  * Support for working with elapsed time.
24  */
25
26 #ifndef OIC_TIME_H_
27 #define OIC_TIME_H_
28
29 #include <stdint.h>
30
31 /**
32  * @name
33  * Useful constants for time unit conversions.
34  *
35  * @{
36  */
37 #define MS_PER_SEC  (1000)
38 #define US_PER_SEC  (1000000)
39 #define US_PER_MS   (1000)
40 #define NS_PER_US   (1000)
41 #define NS_PER_MS   (1000000)
42 #define HNS_PER_US  (10)
43 /** @} */
44
45
46 #ifdef __cplusplus
47 extern "C"
48 {
49 #endif // __cplusplus
50
51 typedef enum
52 {
53     TIME_IN_MS = 0,     //!< milliseconds
54     TIME_IN_US,         //!< microseconds
55 } OICTimePrecision;
56
57 /**
58  * Get the current time using the specified precision.
59  *
60  * Return the time in units of `precision`.
61  * If the implementation supports a monotonic clock, then
62  * the returned value will be from the monotonic clock,
63  * and the difference between two retrieved times can be considered
64  * an accurate elapsed time. The time base is unspecified
65  * in this case. If a monotonic clock is not supported,
66  * the time returned will be `precision` time units since the epoch,
67  * without adjustment for any external changes to the clock.
68  *
69  * @param     precision   based on this parameter, current time is
70  * returned in milliseconds or microseconds
71  *
72  * @warning   This function may be sensitive to system time changes on
73  * platforms which do not support a monotonic clock.
74  *
75  * @return
76  *         Returns current time in milliseconds or microseconds.
77  */
78 uint64_t OICGetCurrentTime(OICTimePrecision precision);
79
80 #ifdef __cplusplus
81 }
82 #endif // __cplusplus
83 #endif // OIC_TIME_H_