|
@@ -39,14 +39,16 @@
|
|
|
#define DONGLE_QUECTEL 1
|
|
|
#define DONGLE_UBLOX 2
|
|
|
|
|
|
-// Define Module mode
|
|
|
-#define NO_SERVICE 0
|
|
|
-#define CDMA 1
|
|
|
-#define GMS_GPRS 2
|
|
|
-#define WCDMA 3
|
|
|
-#define GMS_WCDMA 4
|
|
|
-#define TD_SCDMA 5
|
|
|
-#define UNKNOW 6
|
|
|
+// Define Module network mode
|
|
|
+#define NET_MODE_NO_SERVICE 0
|
|
|
+#define NET_MODE_CDMA 1
|
|
|
+#define NET_MODE_GMS_GPRS 2
|
|
|
+#define NET_MODE_WCDMA 3
|
|
|
+#define NET_MODE_GSM_WCDMA 4
|
|
|
+#define NET_MODE_TD_SCDMA 5
|
|
|
+#define NET_MODE_HSPA 6
|
|
|
+#define NET_MODE_LTE 7
|
|
|
+#define NET_MODE_UNKNOWN 9
|
|
|
|
|
|
// Define interval
|
|
|
#define SystemInterval 30 // Seconds
|
|
@@ -80,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.09","2021-03-11"};
|
|
|
+char *Version_And_Date[2] = {"V0.10","2021-03-16"};
|
|
|
pid_t pid;
|
|
|
|
|
|
struct dongle_info
|
|
@@ -286,7 +288,6 @@ int isReadInfo(void)
|
|
|
char rx[512];
|
|
|
char tmp[512];
|
|
|
char Length;
|
|
|
- int modeStatus;
|
|
|
|
|
|
if((uart = openPort(portName[Dongle.Model])) != FAIL)
|
|
|
{
|
|
@@ -411,31 +412,30 @@ int isReadInfo(void)
|
|
|
//==============================
|
|
|
// Read Mode
|
|
|
//==============================
|
|
|
- Length = at_command(uart, "at+qcfg= \"nwscanmode\"\r", rx);
|
|
|
+ Length = at_command(uart, "at+qnwinfo\r", rx);
|
|
|
if(Length > 0)
|
|
|
{
|
|
|
memset(tmp, 0, sizeof tmp);
|
|
|
- memcpy(tmp, rx, strcspn(rx,"OK"));
|
|
|
- strncpy(rx, tmp + strcspn(tmp,",")+1, 1);
|
|
|
-
|
|
|
- modeStatus = atoi(rx);
|
|
|
-
|
|
|
- if(modeStatus == 0)
|
|
|
- Dongle.MODE = UNKNOW;
|
|
|
- else if(modeStatus == 1)
|
|
|
- Dongle.MODE = GMS_GPRS;
|
|
|
- else if(modeStatus == 2)
|
|
|
- Dongle.MODE = WCDMA;
|
|
|
- else if(modeStatus == 3)
|
|
|
- Dongle.MODE = UNKNOW;
|
|
|
- else if(modeStatus == 4)
|
|
|
- Dongle.MODE = TD_SCDMA;
|
|
|
- else if(modeStatus == 5)
|
|
|
- Dongle.MODE = UNKNOW;
|
|
|
- else if(modeStatus == 6)
|
|
|
- Dongle.MODE = CDMA;
|
|
|
+
|
|
|
+ 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;
|
|
|
else
|
|
|
- Dongle.MODE = UNKNOW;
|
|
|
+ Dongle.MODE = NET_MODE_UNKNOWN;
|
|
|
}
|
|
|
else
|
|
|
result = FAIL;
|
|
@@ -1174,6 +1174,28 @@ void substr(char *dest, const char* src, unsigned int start, unsigned int cnt)
|
|
|
dest[cnt] = 0;
|
|
|
}
|
|
|
|
|
|
+int csq2rssi(int csq)
|
|
|
+{
|
|
|
+ int result = 0;
|
|
|
+
|
|
|
+ switch(csq)
|
|
|
+ {
|
|
|
+ case 0 ... 31:
|
|
|
+ result = -113+(2*csq);
|
|
|
+ break;
|
|
|
+ case 100 ... 191:
|
|
|
+ result = -116 + (csq-102);
|
|
|
+ break;
|
|
|
+ case 99:
|
|
|
+ case 199:
|
|
|
+ default:
|
|
|
+ result = csq;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
//==========================================
|
|
|
// Main process
|
|
|
//==========================================
|
|
@@ -1232,7 +1254,7 @@ TOP:
|
|
|
memset(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModemImei, 0x00, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModemImei));
|
|
|
memcpy(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModemImei, Dongle.IMEI, sizeof Dongle.IMEI);
|
|
|
|
|
|
- ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomRssi = Dongle.CSQ;
|
|
|
+ ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomRssi = csq2rssi(Dongle.CSQ);
|
|
|
ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModemMode = Dongle.MODE;
|
|
|
|
|
|
DEBUG_INFO("========================================\n");
|
|
@@ -1242,7 +1264,7 @@ TOP:
|
|
|
DEBUG_INFO("Device MODEL: %s\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModelName);
|
|
|
DEBUG_INFO("Device REVISION: %s\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSoftwareVer);
|
|
|
DEBUG_INFO("Device IMEI: %s\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModemImei);
|
|
|
- DEBUG_INFO("Device RSSI: %d\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomRssi);
|
|
|
+ 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("========================================\n");
|
|
|
|
|
@@ -1289,7 +1311,7 @@ TOP:
|
|
|
if(CheckSignalRssi() != PASS)
|
|
|
DEBUG_INFO("No RSSI\n");
|
|
|
else
|
|
|
- ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomRssi = Dongle.CSQ;
|
|
|
+ ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomRssi = csq2rssi(Dongle.CSQ);
|
|
|
|
|
|
DEBUG_INFO("========================================\n");
|
|
|
DEBUG_INFO("Status: 4G Device connecting...\n");
|
|
@@ -1409,7 +1431,7 @@ TOP:
|
|
|
{
|
|
|
DEBUG_ERROR("Device info read error fail: %d\n", Dongle.cnt_ReadInfoFail);
|
|
|
|
|
|
- Dongle.MODE = NO_SERVICE;
|
|
|
+ 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);
|
|
|
memset(ShmSysConfigAndInfo->SysInfo.TelcomModemFwRev, 0, sizeof ShmSysConfigAndInfo->SysInfo.TelcomModemFwRev);
|
|
@@ -1423,7 +1445,7 @@ TOP:
|
|
|
DEBUG_INFO("Device MODEL: %s\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModelName);
|
|
|
DEBUG_INFO("Device REVISION: %s\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSoftwareVer);
|
|
|
DEBUG_INFO("Device IMEI: %s\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModemImei);
|
|
|
- DEBUG_INFO("Device RSSI: %d\n", ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomRssi);
|
|
|
+ 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("========================================\n");
|
|
|
|