Bladeren bron

[New feature][DM30][DW30][network]: Modify network option of model name to 'D' and add relative function.

2020.08.14 / TC Hsu

Actions: Add network option switch case 'D'. when network option is 'D', create both Module_Wifi and Module_4g task for ethernet+Wi-Fi+3G/4G feature, check both of Module_Wifi and Module_4g task is alive or not, check both of InternetDisconnectViaWiFi and InternetDisconnectVia4Gi for ethernet connection status. In CheckIsAlternatvieByModelName() function, add relative model name for network option 'D'. In factory config, if network option is 'D', set default Wi-Fi mode to AP mode. finally, add CheckEthernetUsage() function to modify network priority (ethernet higher, Wi-Fi middle, 4g lower).

Image version    : N/A
Image checksum   : N/A

Hardware PWB P/N : N/A
Hardware Version : N/A

Files:

	modified:   EVSE/Projects/DM30/Apps/Config.h
	modified:   EVSE/Projects/DM30/Apps/FactoryConfig.c
	modified:   EVSE/Projects/DM30/Apps/main.c
	modified:   EVSE/Projects/DW30/Apps/Config.h
	modified:   EVSE/Projects/DW30/Apps/FactoryConfig.c
	modified:   EVSE/Projects/DW30/Apps/main.c
TC_Hsu 4 jaren geleden
bovenliggende
commit
0163d3b3bb

+ 7 - 0
EVSE/Projects/DM30/Apps/Config.h

@@ -192,4 +192,11 @@ enum _CCS_COMM_PROTOCOL
     _CCS_COMM_V2GMessage_ISO15118_2018  = 0x03,
 };
 
+enum _ETHERNET_USAGE
+{
+    _ETHERNET_USAGE_NONE                = 0,
+    _ETHERNET_USAGE_LAN                 = 1,
+    _ETHERNET_USAGE_WIFI                = 2,
+    _ETHERNET_USAGE_3G_4g               = 3,
+};
 #endif /* CONFIG_H_ */

+ 3 - 2
EVSE/Projects/DM30/Apps/FactoryConfig.c

@@ -105,7 +105,7 @@ int main(int argc,char *argv[])
      */
     //********** System **********// udhcpc -i eth1 -s ./dhcp_script/eth1.script
     //
-    strcpy((char *)SysConfig.ModelName, "DMYE301E00W2PH");
+    strcpy((char *)SysConfig.ModelName, "DMYE301E00D2PH");
     strcpy((char *)SysConfig.SerialNumber, "NeedSetupSN");
 
     memset(SysConfig.SystemId, 0x00, sizeof(SysConfig.SystemId));
@@ -146,7 +146,8 @@ int main(int argc,char *argv[])
     strcpy((char *) SysConfig.Eth1Interface.EthIpAddress, "192.168.0.10");
     strcpy((char *) SysConfig.Eth1Interface.EthSubmaskAddress, "255.255.255.0");
     strcpy((char *) SysConfig.Eth1Interface.EthGatewayAddress, "192.168.0.254");
-    if(SysConfig.ModelName[10] == 'W')
+    if(SysConfig.ModelName[10] == 'W' ||
+       SysConfig.ModelName[10] == 'D')
         SysConfig.AthInterface.WifiMode = _SYS_WIFI_MODE_AP;
     else
         SysConfig.AthInterface.WifiMode = _SYS_WIFI_MODE_DISABLE;

+ 67 - 7
EVSE/Projects/DM30/Apps/main.c

@@ -80,6 +80,7 @@ unsigned char mask_table[] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 };
 int whileLoopTime = 10000; // 10 ms
 int wtdFd = -1;
 byte _authorizeIndex = NO_DEFINE;
+byte _eThernetUsage = _ETHERNET_USAGE_NONE;
 
 bool IsAuthorizingMode();
 void ClearAuthorizedFlag();
@@ -1027,12 +1028,16 @@ void InitEthernet()
                 ethResult = NO;
             }
 
-            if (!ethResult && ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W')
+            if (!ethResult &&
+                (ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W' ||
+                 ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D'))
             {
                 ethResult = !ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaWiFi;
             }
 
-            if (!ethResult && ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T')
+            if (!ethResult &&
+                (ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T' ||
+                 ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D'))
             {
                 ethResult = !ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi;
             }
@@ -1165,6 +1170,10 @@ void GetFirmwareVersion()
             // 3G/4G
             ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev[9] = '2';
             break;
+        case 'D':
+            // Wi-Fi + 3G/4G
+            ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev[9] = '5';
+            break;
         default:
             // LAN
             ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev[9] = '0';
@@ -1611,12 +1620,14 @@ int SpawnTask()
         system("/root/OcppBackend &");
     }
 
-    if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T')
+    if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T' ||
+       ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D')
     {
         system("/root/Module_4g &");
     }
 
-    if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W')
+    if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W' ||
+       ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D')
     {
         system("/root/Module_Wifi &");
     }
@@ -4496,12 +4507,15 @@ void CheckIsAlternatvieByModelName()
     if(strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWWU301J0UE1PH") == EQUAL ||
        strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWWU301J0UW1PH") == EQUAL ||
        strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWWU301J0UT1PH") == EQUAL ||
+       strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWWU301J0UD1PH") == EQUAL ||
        strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWYE301J0EE1PH") == EQUAL ||
        strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWYE301J0EW1PH") == EQUAL ||
        strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWYE301J0ET1PH") == EQUAL ||
+       strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWYE301J0ED1PH") == EQUAL ||
        strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWYC301J0UE1PH") == EQUAL ||
        strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWYC301J0UW1PH") == EQUAL ||
-       strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWYC301J0UT1PH") == EQUAL)
+       strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWYC301J0UT1PH") == EQUAL ||
+       strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWYC301J0UD1PH") == EQUAL)
         ShmSysConfigAndInfo->SysInfo.IsAlternatvieConf = YES;
     else
         ShmSysConfigAndInfo->SysInfo.IsAlternatvieConf = NO;
@@ -4568,7 +4582,8 @@ void ClearAlarmCodeWhenAcOff()
 //==========================================
 void CheckTask()
 {
-    if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T')
+    if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T' ||
+       ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D')
     {
         if(system("pidof -s Module_4g > /dev/null") != 0)
         {
@@ -4576,7 +4591,9 @@ void CheckTask()
             system("/root/Module_4g &");
         }
     }
-    else if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W')
+
+    if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W' ||
+       ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D')
     {
         if(system("pidof -s Module_Wifi > /dev/null") != 0)
         {
@@ -4602,6 +4619,48 @@ void CheckTask()
     }
 }
 
+//==========================================
+// Check task processing
+//==========================================
+void CheckEthernetUsage()
+{
+    if (!ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet)
+    {
+        if (_eThernetUsage != _ETHERNET_USAGE_LAN)
+        {
+            system("ifmetric eth0 0");
+            system("ifmetric mlan0 1");
+            system("ifmetric ppp0 2");
+            _eThernetUsage = _ETHERNET_USAGE_LAN;
+        }
+        return;
+    }
+
+    if (!ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaWiFi)
+    {
+        if (_eThernetUsage != _ETHERNET_USAGE_WIFI)
+        {
+            system("ifmetric eth0 0");
+            system("ifmetric mlan0 1");
+            system("ifmetric ppp0 2");
+            _eThernetUsage = _ETHERNET_USAGE_WIFI;
+        }
+        return;
+    }
+
+    if (!ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi)
+    {
+        if (_eThernetUsage != _ETHERNET_USAGE_3G_4g)
+        {
+            system("ifmetric eth0 0");
+            system("ifmetric mlan0 1");
+            system("ifmetric ppp0 2");
+            _eThernetUsage = _ETHERNET_USAGE_3G_4g;
+        }
+        return;
+    }
+}
+
 //==========================================
 // Check Smart Charging Profile
 //==========================================
@@ -4907,6 +4966,7 @@ int main(void)
         if ((GetTimeoutValue(_cmdMainPriority_time) / 1000) > 5000)
         {
             CheckTask();
+            CheckEthernetUsage();
             for (byte _index = 0; _index < ShmSysConfigAndInfo->SysConfig.TotalConnectorCount; _index++)
             {
                 if (chargingInfo[_index]->SystemStatus == S_CHARGING)

+ 7 - 0
EVSE/Projects/DW30/Apps/Config.h

@@ -192,4 +192,11 @@ enum _CCS_COMM_PROTOCOL
     _CCS_COMM_V2GMessage_ISO15118_2018  = 0x03,
 };
 
+enum _ETHERNET_USAGE
+{
+    _ETHERNET_USAGE_NONE                = 0,
+    _ETHERNET_USAGE_LAN                 = 1,
+    _ETHERNET_USAGE_WIFI                = 2,
+    _ETHERNET_USAGE_3G_4g               = 3,
+};
 #endif /* CONFIG_H_ */

+ 3 - 2
EVSE/Projects/DW30/Apps/FactoryConfig.c

@@ -105,7 +105,7 @@ int main(int argc,char *argv[])
      */
     //********** System **********// udhcpc -i eth1 -s ./dhcp_script/eth1.script
     //
-    strcpy((char *)SysConfig.ModelName, "DWWU301U00W1PH");
+    strcpy((char *)SysConfig.ModelName, "DWWU301U00D1PH");
     strcpy((char *)SysConfig.SerialNumber, "NeedSetupSN");
 
     memset(SysConfig.SystemId, 0x00, sizeof(SysConfig.SystemId));
@@ -146,7 +146,8 @@ int main(int argc,char *argv[])
     strcpy((char *) SysConfig.Eth1Interface.EthIpAddress, "192.168.0.10");
     strcpy((char *) SysConfig.Eth1Interface.EthSubmaskAddress, "255.255.255.0");
     strcpy((char *) SysConfig.Eth1Interface.EthGatewayAddress, "192.168.0.254");
-    if(SysConfig.ModelName[10] == 'W')
+    if(SysConfig.ModelName[10] == 'W' ||
+       SysConfig.ModelName[10] == 'D')
         SysConfig.AthInterface.WifiMode = _SYS_WIFI_MODE_AP;
     else
         SysConfig.AthInterface.WifiMode = _SYS_WIFI_MODE_DISABLE;

+ 67 - 7
EVSE/Projects/DW30/Apps/main.c

@@ -80,6 +80,7 @@ unsigned char mask_table[] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 };
 int whileLoopTime = 10000; // 10 ms
 int wtdFd = -1;
 byte _authorizeIndex = NO_DEFINE;
+byte _eThernetUsage = _ETHERNET_USAGE_NONE;
 
 bool IsAuthorizingMode();
 void ClearAuthorizedFlag();
@@ -1027,12 +1028,16 @@ void InitEthernet()
                 ethResult = NO;
             }
 
-            if (!ethResult && ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W')
+            if (!ethResult &&
+                (ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W' ||
+                 ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D'))
             {
                 ethResult = !ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaWiFi;
             }
 
-            if (!ethResult && ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T')
+            if (!ethResult &&
+                (ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T' ||
+                 ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D'))
             {
                 ethResult = !ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi;
             }
@@ -1165,6 +1170,10 @@ void GetFirmwareVersion()
             // 3G/4G
             ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev[9] = '2';
             break;
+        case 'D':
+            // Wi-Fi + 3G/4G
+            ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev[9] = '5';
+            break;
         default:
             // LAN
             ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev[9] = '0';
@@ -1611,12 +1620,14 @@ int SpawnTask()
         system("/root/OcppBackend &");
     }
 
-    if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T')
+    if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T' ||
+       ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D')
     {
         system("/root/Module_4g &");
     }
 
-    if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W')
+    if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W' ||
+       ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D')
     {
         system("/root/Module_Wifi &");
     }
@@ -4496,12 +4507,15 @@ void CheckIsAlternatvieByModelName()
     if(strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWWU301J0UE1PH") == EQUAL ||
        strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWWU301J0UW1PH") == EQUAL ||
        strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWWU301J0UT1PH") == EQUAL ||
+       strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWWU301J0UD1PH") == EQUAL ||
        strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWYE301J0EE1PH") == EQUAL ||
        strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWYE301J0EW1PH") == EQUAL ||
        strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWYE301J0ET1PH") == EQUAL ||
+       strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWYE301J0ED1PH") == EQUAL ||
        strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWYC301J0UE1PH") == EQUAL ||
        strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWYC301J0UW1PH") == EQUAL ||
-       strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWYC301J0UT1PH") == EQUAL)
+       strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWYC301J0UT1PH") == EQUAL ||
+       strcmp((char *)ShmSysConfigAndInfo->SysConfig.ModelName, "DWYC301J0UD1PH") == EQUAL)
         ShmSysConfigAndInfo->SysInfo.IsAlternatvieConf = YES;
     else
         ShmSysConfigAndInfo->SysInfo.IsAlternatvieConf = NO;
@@ -4568,7 +4582,8 @@ void ClearAlarmCodeWhenAcOff()
 //==========================================
 void CheckTask()
 {
-    if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T')
+    if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T' ||
+       ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D')
     {
         if(system("pidof -s Module_4g > /dev/null") != 0)
         {
@@ -4576,7 +4591,9 @@ void CheckTask()
             system("/root/Module_4g &");
         }
     }
-    else if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W')
+
+    if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W' ||
+       ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D')
     {
         if(system("pidof -s Module_Wifi > /dev/null") != 0)
         {
@@ -4602,6 +4619,48 @@ void CheckTask()
     }
 }
 
+//==========================================
+// Check task processing
+//==========================================
+void CheckEthernetUsage()
+{
+    if (!ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet)
+    {
+        if (_eThernetUsage != _ETHERNET_USAGE_LAN)
+        {
+            system("ifmetric eth0 0");
+            system("ifmetric mlan0 1");
+            system("ifmetric ppp0 2");
+            _eThernetUsage = _ETHERNET_USAGE_LAN;
+        }
+        return;
+    }
+
+    if (!ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaWiFi)
+    {
+        if (_eThernetUsage != _ETHERNET_USAGE_WIFI)
+        {
+            system("ifmetric eth0 0");
+            system("ifmetric mlan0 1");
+            system("ifmetric ppp0 2");
+            _eThernetUsage = _ETHERNET_USAGE_WIFI;
+        }
+        return;
+    }
+
+    if (!ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi)
+    {
+        if (_eThernetUsage != _ETHERNET_USAGE_3G_4g)
+        {
+            system("ifmetric eth0 0");
+            system("ifmetric mlan0 1");
+            system("ifmetric ppp0 2");
+            _eThernetUsage = _ETHERNET_USAGE_3G_4g;
+        }
+        return;
+    }
+}
+
 //==========================================
 // Check Smart Charging Profile
 //==========================================
@@ -4907,6 +4966,7 @@ int main(void)
         if ((GetTimeoutValue(_cmdMainPriority_time) / 1000) > 5000)
         {
             CheckTask();
+            CheckEthernetUsage();
             for (byte _index = 0; _index < ShmSysConfigAndInfo->SysConfig.TotalConnectorCount; _index++)
             {
                 if (chargingInfo[_index]->SystemStatus == S_CHARGING)