1 /* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 /** @file rs_time.rsh 18 * \brief RenderScript time routines 19 * 20 * This file contains RenderScript functions relating to time and date 21 * manipulation. 22 */ 23 24 #ifndef __RS_TIME_RSH__ 25 #define __RS_TIME_RSH__ 26 27 /** 28 * Calendar time interpreted as seconds elapsed since the Epoch (00:00:00 on 29 * January 1, 1970, Coordinated Universal Time (UTC)). 30 */ 31 typedef int rs_time_t; 32 33 /** 34 * Data structure for broken-down time components. 35 * 36 * tm_sec - Seconds after the minute. This ranges from 0 to 59, but possibly 37 * up to 60 for leap seconds. 38 * tm_min - Minutes after the hour. This ranges from 0 to 59. 39 * tm_hour - Hours past midnight. This ranges from 0 to 23. 40 * tm_mday - Day of the month. This ranges from 1 to 31. 41 * tm_mon - Months since January. This ranges from 0 to 11. 42 * tm_year - Years since 1900. 43 * tm_wday - Days since Sunday. This ranges from 0 to 6. 44 * tm_yday - Days since January 1. This ranges from 0 to 365. 45 * tm_isdst - Flag to indicate whether daylight saving time is in effect. The 46 * value is positive if it is in effect, zero if it is not, and 47 * negative if the information is not available. 48 */ 49 typedef struct { 50 int tm_sec; ///< seconds 51 int tm_min; ///< minutes 52 int tm_hour; ///< hours 53 int tm_mday; ///< day of the month 54 int tm_mon; ///< month 55 int tm_year; ///< year 56 int tm_wday; ///< day of the week 57 int tm_yday; ///< day of the year 58 int tm_isdst; ///< daylight savings time 59 } rs_tm; 60 61 /** 62 * Returns the number of seconds since the Epoch (00:00:00 UTC, January 1, 63 * 1970). If @p timer is non-NULL, the result is also stored in the memory 64 * pointed to by this variable. If an error occurs, a value of -1 is returned. 65 * 66 * @param timer Location to also store the returned calendar time. 67 * 68 * @return Seconds since the Epoch. 69 */ 70 extern rs_time_t __attribute__((overloadable)) 71 rsTime(rs_time_t *timer); 72 73 /** 74 * Converts the time specified by @p timer into broken-down time and stores it 75 * in @p local. This function also returns a pointer to @p local. If @p local 76 * is NULL, this function does nothing and returns NULL. 77 * 78 * @param local Broken-down time. 79 * @param timer Input time as calendar time. 80 * 81 * @return Pointer to broken-down time (same as input @p local). 82 */ 83 extern rs_tm * __attribute__((overloadable)) 84 rsLocaltime(rs_tm *local, const rs_time_t *timer); 85 86 /** 87 * Returns the current system clock (uptime) in milliseconds. 88 * 89 * @return Uptime in milliseconds. 90 */ 91 extern int64_t __attribute__((overloadable)) 92 rsUptimeMillis(void); 93 94 /** 95 * Returns the current system clock (uptime) in nanoseconds. 96 * 97 * @return Uptime in nanoseconds. 98 */ 99 extern int64_t __attribute__((overloadable)) 100 rsUptimeNanos(void); 101 102 /** 103 * Returns the time in seconds since this function was last called in this 104 * script. 105 * 106 * @return Time in seconds. 107 */ 108 extern float __attribute__((overloadable)) 109 rsGetDt(void); 110 111 #endif 112