mirror of
https://github.com/openharmony/drivers_framework.git
synced 2026-07-25 06:15:29 -04:00
dd52543e0a
Signed-off-by: jiaziyang <jiaziyang1@huawei.com>
83 lines
2.5 KiB
C
83 lines
2.5 KiB
C
/*
|
|
* Copyright (c) 2020-2021 Huawei Device Co., Ltd.
|
|
*
|
|
* HDF is dual licensed: you can use it either under the terms of
|
|
* the GPL, or the BSD license, at your option.
|
|
* See the LICENSE file in the root of this repository for complete details.
|
|
*/
|
|
|
|
#ifndef HDF_RTC_BASE_H
|
|
#define HDF_RTC_BASE_H
|
|
|
|
#include "rtc_if.h"
|
|
|
|
#ifdef __cplusplus
|
|
#if __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
#endif /* __cplusplus */
|
|
|
|
#define IS_LEAP_YEAR(year) (((((year) % 4) == 0) && (((year) % 100) != 0)) || (((year) % 400) == 0))
|
|
#define RTC_YEAR_DAYS(year) (IS_LEAP_YEAR(year) ? 366 : 365)
|
|
|
|
#define RTC_DAY_SECONDS 86400ULL /* 24 hours * 60 minutes * 60 seconds */
|
|
#define RTC_DAY_HOURS 24 /* 24 hours */
|
|
#define RTC_HOUR_SECONDS 3600UL /* 60 minutes * 60 seconds */
|
|
#define RTC_MAX_MONTH 12
|
|
#define RTC_MAX_WEEKDAY 7
|
|
#define RTC_GREAT_MONTH_DAY 31
|
|
#define RTC_SMALL_MONTH_DAY 30
|
|
#define RTC_TWO_MONTH_DAY 28
|
|
#define RTC_MAX_HOUR 24
|
|
#define RTC_MAX_MINUTE 60UL
|
|
#define RTC_MAX_SECOND 60UL
|
|
#define RTC_MAX_MS 1000
|
|
#define RTC_UNIT_DIFF 1
|
|
#define RTC_ODD_MONTH_MASK 0x1
|
|
#define RTC_TIME_UNIT 60
|
|
#define RTC_FALSE 0
|
|
#define RTC_TRUE 1
|
|
|
|
#define RTC_BEGIN_YEAR 1970 /* UTC started at 00:00:00 January 1, 1970 */
|
|
#define RTC_BEGIN_WEEKDAY 0x04 /* Thursday January 1, 1970 */
|
|
|
|
#define IS_INVALID_YEAR(year) ((year) < RTC_BEGIN_YEAR)
|
|
#define IS_INVALID_MONTH(m) (((m) < RTC_JANUARY) || ((m) > RTC_MAX_MONTH))
|
|
#define IS_INVALID_WEEKDAY(wd) (((wd) < 1) || ((wd) > RTC_MAX_WEEKDAY))
|
|
#define IS_INVALID_HOUR(hour) ((hour) >= RTC_MAX_HOUR)
|
|
#define IS_INVALID_MIN(min) ((min) >= RTC_MAX_MINUTE)
|
|
#define IS_INVALID_SECOND(s) ((s) >= RTC_MAX_SECOND)
|
|
#define IS_INVALID_MS(ms) ((ms) >= RTC_MAX_MS)
|
|
|
|
enum RtcMonth {
|
|
RTC_JANUARY = 1,
|
|
RTC_FEBRUARY,
|
|
RTC_MARCH,
|
|
RTC_APRIL,
|
|
RTC_MAY,
|
|
RTC_JUNE,
|
|
RTC_JULY,
|
|
RTC_AUGUST,
|
|
RTC_SEPTEMBER,
|
|
RTC_OCTOBER,
|
|
RTC_NOVEMBER,
|
|
RTC_DECEMBER,
|
|
};
|
|
|
|
uint8_t RtcGetMonthDays(const uint8_t isLeapYear, const uint8_t month);
|
|
uint8_t RtcIsInvalidDay(const uint8_t day, const uint8_t month, const uint16_t year);
|
|
uint8_t RtcIsInvalid(const struct RtcTime *time);
|
|
uint8_t RtcGetWeekDay(const struct RtcTime *time);
|
|
#ifndef __KERNEL__
|
|
uint64_t RtcTimeToTimestamp(const struct RtcTime *time);
|
|
void TimestampToRtcTime(struct RtcTime *time, const uint64_t seconds);
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
#if __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* __cplusplus */
|
|
|
|
#endif /* HDF_RTC_BASE_H */
|