Przeglądaj źródła

2021-12-06 / Eason Yang
Action:
1. Improve : Decrease log print out.
2. Improve : ApnDisconnectVia4gi & InternetDisconnectVia4gi status change logic.

File:
1. Module_4g.c
Action 1
Action 2

Version : V0.12

8009 3 lat temu
rodzic
commit
4aea0433f8
1 zmienionych plików z 51 dodań i 17 usunięć
  1. 51 17
      EVSE/Modularization/Module_4g.c

+ 51 - 17
EVSE/Modularization/Module_4g.c

@@ -2,9 +2,9 @@
  *  Module_4g.c
  *
  *  Created on: 2019-11-29
- *  Update on: 2020-11-26
- *  Author: Eason Yang
- *  Version: V0.07
+ *  Update on: 2021-12-06
+ *  Author: Eason Yang / Folus Wen
+ *  Version: V0.12
  */
 
 #include    <sys/types.h>
@@ -87,7 +87,7 @@ void substr(char *dest, const char* src, unsigned int start, unsigned int cnt);
 
 char *portName[3] 				= {"/dev/ttyUSB2", "/dev/ttyACM2", "/dev/ttyACM2"};
 char *valid_Internet[2] 		= {"8.8.8.8", "180.76.76.76"};
-char *Version_And_Date[2]		= {"V0.11","2021-07-06"};
+char *Version_And_Date[2]		= {"V0.12","2021-12-06"};
 pid_t	pid;
 
 struct dongle_info
@@ -237,7 +237,6 @@ int Check4GModem(void)
     else
     {}
 
-
     switch(result)
     {
     	case DONGLE_QUECTEL:
@@ -1293,6 +1292,9 @@ int csq2rssi(int csq)
 //==========================================
 int main(void)
 {
+	unsigned char Present_Module_Mode = 0xff;
+	unsigned char Previous_Module_Mode = 0xff;
+
 	//==========================================
 	//Initialization share memory
 	//==========================================
@@ -1319,10 +1321,22 @@ int main(void)
 	for(;;)
 	{
 TOP:
+
+		if(Present_Module_Mode != ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomEnabled)
+		{
+			Present_Module_Mode = ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomEnabled;
+		}
+
 		switch(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomEnabled)
 		{
 			case ENABLE_4G:
-				DEBUG_INFO("4G module : [ Enable ].\n");
+
+				if(Previous_Module_Mode != Present_Module_Mode)
+				{
+					Previous_Module_Mode = Present_Module_Mode;
+					DEBUG_INFO("4G module : [ Enable ].\n");
+				}
+
 				if(((Dongle.Model = Check4GModem()) != FAIL))
 				{
 					ShmStatusCodeData->FaultCode.FaultEvents.bits.Telecom4GModuleBroken = 0;
@@ -1383,24 +1397,26 @@ TOP:
 							DEBUG_INFO("Device ICCID: %.20s\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimIccid);
 							DEBUG_INFO("TelcomSimStatus: %d\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimStatus);
 							DEBUG_INFO("========================================\n");
-						
+
 							Dongle.cnt_ReadSimInfoFail = 0;
 							if(isPppUp() == PASS)
 							{
+								ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomNetworkConn = 1;
+								ShmStatusCodeData->InfoCode.InfoEvents.bits.ApnDisconnectVia4Gi = 0;
+								
 								DEBUG_INFO("========================================\n");
 								DEBUG_INFO("Status: PPP interface found...\n");
 								DEBUG_INFO("========================================\n");
 								DEBUG_INFO("PPP IP: %s\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomIpAddress);
 								DEBUG_INFO("Telecom network connection: %d\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomNetworkConn);
+								DEBUG_INFO("Apn connnection: %s\n", (ShmStatusCodeData->InfoCode.InfoEvents.bits.ApnDisconnectVia4Gi == 0)? "Connected":"Disconnected");
 								DEBUG_INFO("========================================\n");
-								ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomNetworkConn = 1;
 
 								Dongle.cnt_pppFail = 0;
 								if(isReachableInternet() == PASS)
 								{
 									ShmStatusCodeData->AlarmCode.AlarmEvents.bits.Telecom4GModuleCommFail = 0;
 									ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi = 0;
-									ShmStatusCodeData->InfoCode.InfoEvents.bits.ApnDisconnectVia4Gi = 0;
 									Dongle.cnt_InternetFail = 0;
 									
 									// Update Rssi Value
@@ -1428,7 +1444,6 @@ TOP:
 									DEBUG_INFO("Dongle internet valid result: Fail %d time\n", Dongle.cnt_InternetFail);
 
 									ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi = 1;
-									ShmStatusCodeData->InfoCode.InfoEvents.bits.ApnDisconnectVia4Gi = 1;
 
 									Dongle.cnt_InternetFail++;
 									if((Dongle.cnt_InternetFail > 3) && !ShmSysConfigAndInfo->SysInfo.OcppConnStatus)
@@ -1447,6 +1462,7 @@ TOP:
 							else
 							{
 								ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomNetworkConn = 0;
+								ShmStatusCodeData->InfoCode.InfoEvents.bits.ApnDisconnectVia4Gi = 1;
 
 								if(Load4gConfiguration() == FAIL)
 								{
@@ -1457,10 +1473,16 @@ TOP:
 									}
 								}
 								else
-								{
-									DEBUG_WARN("PPP interface not found.\n");
-
+								{	
 									memset(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomIpAddress, 0 , sizeof ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomIpAddress);
+									
+									DEBUG_INFO("========================================\n");
+									DEBUG_WARN("PPP interface not found.\n");
+									DEBUG_INFO("========================================\n");
+									DEBUG_INFO("PPP IP: %s\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomIpAddress);
+									DEBUG_INFO("Telecom network connection: %d\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomNetworkConn);
+									DEBUG_INFO("Apn connnection: %s\n", (ShmStatusCodeData->InfoCode.InfoEvents.bits.ApnDisconnectVia4Gi == 0)? "Connected":"Disconnected");
+									DEBUG_INFO("========================================\n");
 
 									Dongle.cnt_pppFail++;
 									if(Dongle.cnt_pppFail > 3)
@@ -1497,6 +1519,9 @@ TOP:
 						else
 						{
 							DEBUG_ERROR("SIM card info read error fail: %d\n", Dongle.cnt_ReadSimInfoFail);
+							
+							ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi = 1;
+							ShmStatusCodeData->InfoCode.InfoEvents.bits.ApnDisconnectVia4Gi = 1;
 
 							ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimStatus = 0;
 							memset(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimImsi, 0, sizeof ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimImsi);
@@ -1505,8 +1530,9 @@ TOP:
 
 							DEBUG_INFO("========================================\n");
 							DEBUG_INFO("Status: Read Sim card info fail...\n");
-							DEBUG_INFO("Device ICCID: %.20s\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimIccid);
 							DEBUG_INFO("Device IMSI: %s\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimImsi);
+							DEBUG_INFO("Device ICCID: %.20s\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimIccid);
+							DEBUG_INFO("TelcomSimStatus: %d\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimStatus);
 							DEBUG_INFO("========================================\n");
 
 							Dongle.cnt_ReadSimInfoFail ++;
@@ -1527,6 +1553,9 @@ TOP:
 					{
 						DEBUG_ERROR("Device info read error fail: %d\n", Dongle.cnt_ReadInfoFail);
 						
+						ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi = 1;
+						ShmStatusCodeData->InfoCode.InfoEvents.bits.ApnDisconnectVia4Gi = 1;
+						
 						Dongle.MODE = NET_MODE_NO_SERVICE;
 						memset(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModelName, 0, sizeof ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModelName);
 						memset(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSoftwareVer, 0, sizeof ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSoftwareVer);
@@ -1534,7 +1563,7 @@ TOP:
 						memset(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModemImei, 0, sizeof ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModemImei);
 						ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomRssi = 0;
 						ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModemMode = 0;
-						
+
 						DEBUG_INFO("========================================\n");
 						DEBUG_INFO("Status: Read device info fail...\n");
 						DEBUG_INFO("Device MANUFACTURER: %s\n", Dongle.MANUFACTURER);
@@ -1598,8 +1627,13 @@ TOP:
 				
 			case DISABLE_4G_MODULE:
 			default:
-				DEBUG_INFO("4G module : [ Disable ].\n");
-				
+
+				if(Previous_Module_Mode != Present_Module_Mode)
+				{
+					DEBUG_INFO("4G module : [ Disable ].\n");
+					Previous_Module_Mode = Present_Module_Mode;
+				}
+
 				ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi = 0;
 				ShmStatusCodeData->InfoCode.InfoEvents.bits.ApnDisconnectVia4Gi= 0;
 				ShmStatusCodeData->AlarmCode.AlarmEvents.bits.Telecom4GModuleCommFail = 0;