Jelajahi Sumber

[Improve][Modularization][Module_OcppBackend / Module_OcppBackend20]

2021.03.17 / Folus Wen

Actions:
1. Ocpp task implemet process watch dog timer logic.

Files:
1. As follow commit history

Image version: D0.00.XX.XXXX.XX
Image checksum: XXXXXXXX

Hardware PWB P/N : XXXXXXX
Hardware Version : XXXXXXX
FolusWen 4 tahun lalu
induk
melakukan
592a581be4

+ 5 - 0
EVSE/Modularization/ocpp20/MessageHandler.c

@@ -16638,6 +16638,11 @@ int isConnectorInitMode(int gun_index)
 	return result;
 }
 
+void refreshProcDogTimer()
+{
+	ShmOCPP20Data->procDogTime = time((time_t*)NULL);
+}
+
 void InitialSystemValue(void)
 {
 	int connectorIndex = 0;

+ 1 - 0
EVSE/Modularization/ocpp20/MessageHandler.h

@@ -1006,6 +1006,7 @@ void splitstring(char *src,const char *separator,char **dest,int *num);
 int GetWebSocketPingInterval(void);
 int GetInternetConn(void);
 int isConnectorInitMode(int gun_index);
+void refreshProcDogTimer();
 int GetServerSign(void);
 void SetServerSign(int value);
 int GetBootNotificationInterval(void);

+ 2 - 0
EVSE/Modularization/ocpp20/Module_OcppBackend20.c

@@ -1225,6 +1225,8 @@ int main(void)
 		{
 			lws_service(context, 0);//timeout_ms
 		}while((SendBufLen>0) && (context!=NULL) && GetInternetConn());
+
+		refreshProcDogTimer();
 		usleep(100000);
 	}
 	pthread_join(tid_ProcQueue, NULL);

+ 5 - 0
EVSE/Modularization/ocppfiles/MessageHandler.c

@@ -16695,6 +16695,11 @@ int isConnectorInitMode(int gun_index)
 	return result;
 }
 
+void refreshProcDogTimer()
+{
+	ShmOCPP16Data->procDogTime = time((time_t*)NULL);
+}
+
 void InitialSystemValue(void)
 {
 	int connectorIndex = 0;

+ 1 - 0
EVSE/Modularization/ocppfiles/MessageHandler.h

@@ -552,6 +552,7 @@ void splitstring(char *src,const char *separator,char **dest,int *num);
 int GetWebSocketPingInterval(void);
 int GetInternetConn(void);
 int isConnectorInitMode(int gun_index);
+void refreshProcDogTimer();
 int GetServerSign(void);
 void SetServerSign(int value);
 int GetBootNotificationInterval(void);

+ 2 - 0
EVSE/Modularization/ocppfiles/Module_OcppBackend.c

@@ -1546,6 +1546,8 @@ int main(void)
 		{
 			lws_service(context, 0);//timeout_ms
 		}while((SendBufLen>0) && (context!=NULL) && GetOcppConnStatus());
+
+		refreshProcDogTimer();
 		usleep(100000);
 	}
 	pthread_join(tid_ProcQueue, NULL);

+ 34 - 0
EVSE/Projects/AW-CCS/Apps/main.c

@@ -1749,6 +1749,26 @@ void InitEthernet()
 				if(cnt_pingDNS_Fail >= 3)
 				{
 					ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet=ON;
+					if((ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthDhcpClient==0))
+					{
+						system("pgrep -f \"udhcpc -i eth0\" | xargs kill");
+						sprintf(tmpbuf, "/sbin/udhcpc -i eth0 -x hostname:CSU3_%s -s /root/dhcp_script/eth0.script > /dev/null &", ShmSysConfigAndInfo->SysConfig.SystemId);
+						system(tmpbuf);
+					}
+					else
+					{
+						system("pgrep -f \"udhcpc -i eth0\" | xargs kill");
+						memset(tmpbuf,0,256);
+						sprintf(tmpbuf,"/sbin/ifconfig eth0 %s netmask %s up &",
+								ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthIpAddress,
+								ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthSubmaskAddress);
+						system(tmpbuf);
+						memset(tmpbuf,0,256);
+						sprintf(tmpbuf,"route add default gw %s eth0 &",
+						ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthGatewayAddress);
+						system(tmpbuf);
+					}
+					cnt_pingDNS_Fail = 0;
 				}
 				else
 				{
@@ -2975,6 +2995,13 @@ void checkTask()
 	{
 		if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16)
 		{
+			if((time((time_t*)NULL) - ShmOCPP16Data->procDogTime) > 180)
+			{
+				DEBUG_WARN("OcppBackend watch dog timeout task restart.\n");
+				ShmOCPP16Data->procDogTime =  time((time_t*)NULL);
+				system("pkill OcppBackend");
+			}
+
 			if(system("pidof -s OcppBackend > /dev/null") != 0)
 			{
 				DEBUG_INFO("OcppBackend not running, restart it.\n");
@@ -2983,6 +3010,13 @@ void checkTask()
 		}
 		else if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20)
 		{
+			if((time((time_t*)NULL) - ShmOCPP20Data->procDogTime) > 180)
+			{
+				DEBUG_WARN("OcppBackend20 watch dog timeout task restart.\n");
+				ShmOCPP16Data->procDogTime =  time((time_t*)NULL);
+				system("pkill OcppBackend20");
+			}
+
 			if(system("pidof -s OcppBackend20 > /dev/null") != 0)
 			{
 				DEBUG_INFO("OcppBackend20 not running, restart it.\n");

+ 2 - 0
EVSE/Projects/define.h

@@ -4206,6 +4206,7 @@ struct OCPP16Data
     unsigned char                           OcppConnStatus;         //0: disconnected, 1: connected
     unsigned int                            Timeout_Secs;
     unsigned short                          Ping_Pong_Interval;
+    unsigned int 							procDogTime;			// Process watch dog refresh timer
     union
     {
         //Operations Initiated by Charge Point
@@ -5476,6 +5477,7 @@ struct OCPP20Data
 	unsigned char 							OcppConnStatus;			//0: disconnected, 1: connected
 	unsigned int 							Timeout_Secs;
 	unsigned short 							Ping_Pong_Interval;
+	unsigned int 							procDogTime;			// Process watch dog refresh timer
 	struct ReportDataType                   ControllerComponentVariable[CtrlrVariable_CNT];
 	struct NetworkConnectionProfile_20      NetworkConnectionProfile[10];
 

TEMPAT SAMPAH
EVSE/rootfs/lib/modules/mt7601u_nat.ko