diff options
author | Philip Chen <philipchen@google.com> | 2017-09-13 15:04:37 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2017-09-26 18:24:07 -0700 |
commit | 72ea08f9db07160177afdf92ba8a7f7e1230331a (patch) | |
tree | f30c50edd992f6105db3140e2dd530c8edcfd05e /include | |
parent | be96cd65ed78a15c843e513cebd4345a29e6b2fa (diff) | |
download | chrome-ec-72ea08f9db07160177afdf92ba8a7f7e1230331a.tar.gz |
rtc: Add functions and tests for time conversion
To implement rtc driver for some ec chips, we
need to convert between calandar date and seconds
(since epoch time, 01-01-1970 00:00:00).
Sicne these functions are HW-independent, let's add
common/rtc.c, include/rtc.h, and unit test for this.
BUG=b:63908519
BRANCH=none
TEST=make buildall test -j
Change-Id: Icb1e768d2b3674d5225b83e09475e984eb104d06
Signed-off-by: Philip Chen <philipchen@google.com>
Reviewed-on: https://chromium-review.googlesource.com/666985
Commit-Ready: Philip Chen <philipchen@chromium.org>
Tested-by: Philip Chen <philipchen@chromium.org>
Reviewed-by: Shawn N <shawnn@chromium.org>
Reviewed-by: Brian Norris <briannorris@chromium.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/rtc.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/include/rtc.h b/include/rtc.h new file mode 100644 index 0000000000..fa56634c5b --- /dev/null +++ b/include/rtc.h @@ -0,0 +1,45 @@ +/* Copyright 2017 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +/* RTC cross-platform functions */ + +#ifndef __CROS_EC_RTC_H +#define __CROS_EC_RTC_H + +#include "common.h" + +#define SECS_PER_DAY (60 * 60 * 24) +#define SECS_PER_YEAR (365 * SECS_PER_DAY) +/* The seconds elapsed from 01-01-1970 to 01-01-2000 */ +#define SECS_TILL_YEAR_2K (946684800) +#define IS_LEAP_YEAR(x) \ + (((x) % 4 == 0) && (((x) % 100 != 0) || ((x) % 400 == 0))) + +struct calendar_date { + /* The number of years since A.D. 2000, i.e. year = 17 for y2017 */ + uint8_t year; + /* 1-based indexing, i.e. sane values range from 1 to 12 */ + uint8_t month; + /* 1-based indexing, i.e. sane values range from 1 to 31 */ + uint8_t day; +}; + +/** + * Convert calendar date to seconds elapsed since epoch time. + * + * @param time The calendar date (years, months, and days). + * @return the seconds elapsed since epoch time (01-01-1970 00:00:00). + */ +uint32_t date_to_sec(struct calendar_date time); + +/** + * Convert seconds elapsed since epoch time to calendar date + * + * @param sec The seconds elapsed since epoch time (01-01-1970 00:00:00). + * @return the calendar date (years, months, and days). + */ +struct calendar_date sec_to_date(uint32_t sec); + +#endif /* __CROS_EC_RTC_H */ |