summaryrefslogtreecommitdiff
path: root/EmbeddedPkg/Include/Library/TimeBaseLib.h
diff options
context:
space:
mode:
Diffstat (limited to 'EmbeddedPkg/Include/Library/TimeBaseLib.h')
-rw-r--r--EmbeddedPkg/Include/Library/TimeBaseLib.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/EmbeddedPkg/Include/Library/TimeBaseLib.h b/EmbeddedPkg/Include/Library/TimeBaseLib.h
new file mode 100644
index 0000000..fe3618e
--- /dev/null
+++ b/EmbeddedPkg/Include/Library/TimeBaseLib.h
@@ -0,0 +1,68 @@
+/** @file
+*
+* Copyright (c) 2016, Hisilicon Limited. All rights reserved.
+* Copyright (c) 2016, Linaro Limited. All rights reserved.
+*
+* This program and the accompanying materials
+* are licensed and made available under the terms and conditions of the BSD License
+* which accompanies this distribution. The full text of the license may be found at
+* http://opensource.org/licenses/bsd-license.php
+*
+* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+*
+**/
+
+#ifndef _TIME_BASE_LIB_H_
+#define _TIME_BASE_LIB_H_
+
+#include <Uefi/UefiBaseType.h>
+
+// Define EPOCH (1970-JANUARY-01) in the Julian Date representation
+#define EPOCH_JULIAN_DATE 2440588
+
+// Seconds per unit
+#define SEC_PER_MIN ((UINTN) 60)
+#define SEC_PER_HOUR ((UINTN) 3600)
+#define SEC_PER_DAY ((UINTN) 86400)
+#define SEC_PER_MONTH ((UINTN) 2,592,000)
+#define SEC_PER_YEAR ((UINTN) 31,536,000)
+
+BOOLEAN
+EFIAPI
+IsLeapYear (
+ IN EFI_TIME *Time
+ );
+
+BOOLEAN
+EFIAPI
+IsDayValid (
+ IN EFI_TIME *Time
+ );
+
+BOOLEAN
+EFIAPI
+IsTimeValid (
+ IN EFI_TIME *Time
+ );
+
+/**
+ Converts Epoch seconds (elapsed since 1970 JANUARY 01, 00:00:00 UTC) to EFI_TIME
+ **/
+VOID
+EFIAPI
+EpochToEfiTime (
+ IN UINTN EpochSeconds,
+ OUT EFI_TIME *Time
+ );
+
+/**
+ Converts EFI_TIME to Epoch seconds (elapsed since 1970 JANUARY 01, 00:00:00 UTC)
+ **/
+UINTN
+EFIAPI
+EfiTimeToEpoch (
+ IN EFI_TIME *Time
+ );
+
+#endif