Преглед изворни кода

[Improve][Modularization][Module_4g]

2021.07.06 / Folus Wen

Actions:
1. Add connected network act, band, channel info to debug log.

Files:
1. As follow commit history

Image version: V0.11
Image checksum: XXXXXXXX

Hardware PWB P/N : XXXXXXX
Hardware Version : XXXXXXX
FolusWen пре 3 година
родитељ
комит
6fac332c19
1 измењених фајлова са 47 додато и 23 уклоњено
  1. 47 23
      EVSE/Modularization/Module_4g.c

+ 47 - 23
EVSE/Modularization/Module_4g.c

@@ -82,7 +82,7 @@ void substr(char *dest, const char* src, unsigned int start, unsigned int cnt);
 
 char *portName[3] 				= {"/dev/ttyUSB2", "/dev/ttyUSB2", "/dev/ttyACM2"};
 char *valid_Internet[2] 		= {"8.8.8.8", "180.76.76.76"};
-char *Version_And_Date[2]		= {"V0.10","2021-03-16"};
+char *Version_And_Date[2]		= {"V0.11","2021-07-06"};
 pid_t	pid;
 
 struct dongle_info
@@ -95,6 +95,10 @@ struct dongle_info
 	char MODELNAME[10];
 	char REVISION[18];
 	unsigned char MODE;
+	char act[16];
+	char operator[16];
+	char band[16];
+	int channel;
 	int CSQ;
 	int cnt_InternetFail;
 	int cnt_ReadInfoFail;
@@ -414,26 +418,30 @@ int isReadInfo(void)
 				if(Length > 0)
 				{
 					memset(tmp, 0, sizeof tmp);
-
-					strncpy(tmp, &rx[strcspn(rx,":")+2], strcspn(rx,",")-(strcspn(rx,":")+2));
-
-
-					if(strstr(tmp, "CDMA") != NULL)
-						Dongle.MODE = NET_MODE_CDMA;
-					else if((strstr(tmp, "GPRS") != NULL) || (strstr(tmp, "EDGE") != NULL))
-						Dongle.MODE = NET_MODE_GMS_GPRS;
-					else if(strstr(tmp, "WCDMA") != NULL)
-						Dongle.MODE = NET_MODE_WCDMA;
-					else if(strstr(tmp, "GSM") != NULL)
-						Dongle.MODE = NET_MODE_GSM_WCDMA;
-					else if(strstr(tmp, "TDSCDMA") != NULL)
-						Dongle.MODE = NET_MODE_TD_SCDMA;
-					else if(strstr(tmp, "LTE") != NULL)
-						Dongle.MODE = NET_MODE_LTE;
-					else if((strstr(tmp, "HSDPA") != NULL) || (strstr(tmp, "HSUPA") != NULL) || (strstr(tmp, "HSPA+") != NULL))
-						Dongle.MODE = NET_MODE_HSPA;
+					if(sscanf(rx, "%*[^:]:%[^,],%[^,],%[^,],%d", Dongle.act, Dongle.operator, Dongle.band, &Dongle.channel) == 4)
+					{
+						//strncpy(tmp, &rx[strcspn(rx,":")+2], strcspn(rx,",")-(strcspn(rx,":")+2));
+						if((strstr(Dongle.act, "GPRS") != NULL) || (strstr(Dongle.act, "EDGE") != NULL))
+							Dongle.MODE = NET_MODE_GMS_GPRS;
+						else if(strstr(Dongle.act, "WCDMA") != NULL)
+							Dongle.MODE = NET_MODE_WCDMA;
+						else if(strstr(Dongle.act, "GSM") != NULL)
+							Dongle.MODE = NET_MODE_GSM_WCDMA;
+						else if(strstr(Dongle.act, "TDSCDMA") != NULL)
+							Dongle.MODE = NET_MODE_TD_SCDMA;
+						else if(strstr(Dongle.act, "CDMA") != NULL)
+							Dongle.MODE = NET_MODE_CDMA;
+						else if(strstr(Dongle.act, "LTE") != NULL)
+							Dongle.MODE = NET_MODE_LTE;
+						else if((strstr(Dongle.act, "HSDPA") != NULL) || (strstr(Dongle.act, "HSUPA") != NULL) || (strstr(Dongle.act, "HSPA+") != NULL))
+							Dongle.MODE = NET_MODE_HSPA;
+						else
+							Dongle.MODE = NET_MODE_UNKNOWN;
+					}
 					else
-						Dongle.MODE = NET_MODE_UNKNOWN;
+					{
+						DEBUG_WARN("at+qnwinfo response can not parse.\n");
+					}
 				}
 				else
 					result = FAIL;
@@ -1264,6 +1272,9 @@ TOP:
 						DEBUG_INFO("Device IMEI: %s\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModemImei);
 						DEBUG_INFO("Device RSSI: %d dBm (CSQ:%d)\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomRssi, Dongle.CSQ);
 						DEBUG_INFO("Device MODE: %d\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModemMode);
+						DEBUG_INFO("Device Act: %s\n", Dongle.act);
+						DEBUG_INFO("Device Band: %s\n", Dongle.band);
+						DEBUG_INFO("Device Channel: %d\n", Dongle.channel);
 						DEBUG_INFO("========================================\n");
 						
 						Dongle.cnt_ReadInfoFail = 0;
@@ -1518,9 +1529,22 @@ TOP:
 				memset(ShmSysConfigAndInfo->SysInfo.TelcomModemFwRev, 0, sizeof ShmSysConfigAndInfo->SysInfo.TelcomModemFwRev);
 				memset(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModelName, 0, sizeof ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModelName);
 				
-				system("killall 4GDetection");
-				system("killall pppd");
-				system("ifconfig ppp0 down");
+				if(system("pidof -s 4GDetection > /dev/null") == 0)
+				{
+					DEBUG_INFO("4GDetection running, stop it.\n");
+					system("killall 4GDetection");
+				}
+
+				if(system("pidof -s pppd > /dev/null") == 0)
+				{
+					DEBUG_INFO("pppd running, stop it.\n");
+					system("killall pppd");
+				}
+
+				if(isPppUp() == PASS)
+				{
+					system("ifconfig ppp0 down");
+				}
 				
 				sleep(SystemInterval);