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