Browse Source

[Improve][AW-CCS][Module_LcmControl]
2022-02-23 / Eason Yang
Action
1. Improve: getDateTimeString()function. Date time display consider time offset.

File
1. Module_LcmControl.c
Action 1

LCM VERSION: V0.27
UPDATE ON: 2022-02-23

8009 3 years ago
parent
commit
f28edaeea8
1 changed files with 22 additions and 5 deletions
  1. 22 5
      EVSE/Projects/AW-CCS/Apps/LCM/Module_LcmControl.c

+ 22 - 5
EVSE/Projects/AW-CCS/Apps/LCM/Module_LcmControl.c

@@ -2,7 +2,7 @@
  * Module_LcmControl.c
  *
  * Created on : 2020-10-20
- * Update on : 2022-02-10
+ * Update on : 2022-02-23
  * Author : Folus Wen, Eason Yang
  * Version : V0.27
  *
@@ -121,7 +121,7 @@ int Uart1Fd;
 //=======================================
 // Record version and date
 //=======================================
-char *FIRMWARE_UPDATE_IMAGE[3] = {"V0.27", "2022-02-10", "REV.03.00"};
+char *FIRMWARE_UPDATE_IMAGE[3] = {"V0.27", "2022-02-23", "REV.03.00"};
 
 //=======================================
 // Common routine
@@ -273,14 +273,31 @@ uint8_t split(char **arr, char *str, const char *del)
 
 void getDateTimeString(char* result)
 {
+	struct ParsingResult
+	{
+		int scanedElement;
+		int tz_hour;
+		int tz_min;
+	}timeOffset;
 	time_t CurrentTime;
-	struct tm *tm;
+	struct tm *tmOrg;
+	struct tm *tmTarget;
+	struct timeb tbTarget;
 
 	CurrentTime = time(NULL);
-	tm=localtime(&CurrentTime);
+	tmOrg=localtime(&CurrentTime);
+	tmOrg->tm_gmtoff = 0;
+	tbTarget.time = mktime(tmOrg);
+	tbTarget.timezone = 0;
+
+	if((timeOffset.scanedElement = sscanf((char*)ShmOCPP16Data->ConfigurationTable.CoreProfile[TimeOffset].ItemData, "%d:%d", &timeOffset.tz_hour, &timeOffset.tz_min)) == 2)
+	{
+		tbTarget.time += (timeOffset.tz_hour*3600) + (timeOffset.tz_min*60*(timeOffset.tz_hour>=0?1:-1));
+	}
 
+	tmTarget = gmtime(&tbTarget.time);
 	//sprintf(result, "%04d/%02d/%02d %02d:%02d", tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min);
-	sprintf(result, "%04d/%02d/%02d %02d:%02d %s", tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,(tm->tm_hour%12),tm->tm_min,((tm->tm_hour/12)>0?"p.m.":"a.m."));
+	sprintf(result, "%04d/%02d/%02d %02d:%02d %s", tmTarget->tm_year+1900,tmTarget->tm_mon+1,tmTarget->tm_mday,(tmTarget->tm_hour%12),tmTarget->tm_min,((tmTarget->tm_hour/12)>0?"p.m":"a.m"));
 }
 
 //======================================================