Add TW_QCOM_ATS_OFFSET flag to manually set time/date offset

Needed if no ats_ files are present on qcom device

Offset is the difference between the current time
and the time since_epoch

To calculate the offset in Android, the following expression
(from a root shell) can be used:
echo "$(( ($(date +%s) - $(cat /sys/class/rtc/rtc0/since_epoch)) ))"

Add 3 zeros to the output and use that in the TW_QCOM_ATS_OFFSET
flag in your BoardConfig.mk

For example, if the result of the calculation is 1642433544,
use 1642433544000 as the offset

Change-Id: I5d58125dffc3fdbfb76a5ffde4e27659376185f1
diff --git a/Android.mk b/Android.mk
index f084bc6..cdbfe2a 100755
--- a/Android.mk
+++ b/Android.mk
@@ -418,6 +418,9 @@
 else
     LOCAL_CFLAGS += -DTW_DEFAULT_LANGUAGE=en
 endif
+ifneq ($(TW_QCOM_ATS_OFFSET),)
+	LOCAL_CFLAGS += -DTW_QCOM_ATS_OFFSET=$(TW_QCOM_ATS_OFFSET)
+endif
 ifneq ($(TW_CLOCK_OFFSET),)
 	LOCAL_CFLAGS += -DTW_CLOCK_OFFSET=$(TW_CLOCK_OFFSET)
 endif
diff --git a/twrp-functions.cpp b/twrp-functions.cpp
index 96163f1..463f77c 100755
--- a/twrp-functions.cpp
+++ b/twrp-functions.cpp
@@ -1068,6 +1068,16 @@
 	}
 
 	if (!fixed) {
+#ifdef TW_QCOM_ATS_OFFSET
+		// Offset is the difference between the current time and the time since_epoch
+		// To calculate the offset in Android, the following expression (from a root shell) can be used:
+		// echo "$(( ($(date +%s) - $(cat /sys/class/rtc/rtc0/since_epoch)) ))"
+		// Add 3 zeros to the output and use that in the TW_QCOM_ATS_OFFSET flag in your BoardConfig.mk
+		// For example, if the result of the calculation is 1642433544, use 1642433544000 as the offset
+		offset = (uint64_t) TW_QCOM_ATS_OFFSET;
+		DataManager::SetValue("tw_qcom_ats_offset", (unsigned long long) offset, 1);
+		LOGINFO("TWFunc::Fixup_Time: Setting time offset from TW_QCOM_ATS_OFFSET, offset %llu\n", (unsigned long long) offset);
+#else
 		// Failed to get offset from ats file, check twrp settings
 		unsigned long long value;
 		if (DataManager::GetValue("tw_qcom_ats_offset", value) < 0) {
@@ -1077,6 +1087,7 @@
 			LOGINFO("TWFunc::Fixup_Time: Setting time offset from twrp setting file, offset %llu\n", (unsigned long long) offset);
 			// Do not consider the settings file as a definitive answer, keep fixed=false so next run will try ats files again
 		}
+#endif
 	}
 
 	gettimeofday(&tv, NULL);