|
@@ -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);
|
|
|
|