Browse Source

2022-03-22 / Simon Xue

Action:
1. [Modify] Stop process in prepare mode will keep LCM in terminating 2
min.
2. [Add] Check EV Board communication status in 3 sec.
3. [Modify] On fan time as the chiller on.

Files
As the following commit history files

Image Version: v2.04.XX.XXXX.XX
Simon Xue 3 years ago
parent
commit
d13d228f26

+ 28 - 14
EVSE/Projects/DD360UCar/Apps/CSU/main.c

@@ -82,8 +82,8 @@ uint8_t bd0_2_status = 0;
 uint8_t bd1_1_status = 0;
 uint8_t bd1_2_status = 0;
 
-char *fwVersion = "V2.03.00.0000.00"; // Phihong version
-char* DebugVersion = "v2.03.00";      // Software debug version
+char *fwVersion = "V2.04.00.0000.00"; // Phihong version
+char* DebugVersion = "v2.04.00";      // Software debug version
 //sqlite3 *localDb;
 bool isDb_ready;
 
@@ -3747,6 +3747,8 @@ void ResetIdleData(uint8_t gunIndex)
     strcpy((char *)pDcChargingInfo->StartUserId, "");
     strcpy((char *)pSysConfig->UserId, "");
     strcpy((char *)ShmOCPP16Data->StopTransaction[gunIndex].StopReason, "");
+    ShmDcCommonData->isIntoCharge[gunIndex] = FALSE;
+
     ClearDetectPluginFlag();
     //Jerry add
     memset(&ShmSelectGunInfo->PricesInfo[gunIndex], 0, sizeof(PricesInfo));
@@ -3833,6 +3835,7 @@ void showversion()
     }
     log_info("\t==================================== ");
 }
+
 int main(void)
 {
     bool isModelNameMatch = true;
@@ -4021,6 +4024,7 @@ int main(void)
                 pDcChargingInfo->SystemStatus == S_CCS_PRECHARGE_ST1) {
                 is_idle = FALSE;
             }
+
         }
         if (is_idle == FALSE) {
             ShmFanModuleData->SetFan1Speed = 7000;
@@ -4334,6 +4338,7 @@ CheckStatus:
                     pSysInfo->SystemPage = _LCM_VIEW;
                     StartGunInfoTimeoutDet(gunIndex,Timeout_DetailView);
                     ShmDcCommonData->finalcost_flag[gunIndex] = FALSE;
+                    ShmDcCommonData->isIntoCharge[gunIndex] = TRUE;
                 }
 
                 if (ShmOCPP16Data->CpMsg.bits[gunIndex].StartTransactionConf) {
@@ -4407,25 +4412,34 @@ CheckStatus:
                 }
                 // For Precharging timeout
                 if (pDcChargingInfo->Type == _Type_Chademo) {
-                    if ((isEvStopCharging_chademo(gunIndex) == YES ||
-                            isPrechargeStatus_chademo(gunIndex) <= 0) &&
-                        ShmDcCommonData->finalcost_flag[gunIndex]) {
-                        setChargerMode(gunIndex, MODE_COMPLETE);
+                    if (isEvStopCharging_chademo(gunIndex) == YES ||
+                            isPrechargeStatus_chademo(gunIndex) <= 0 ) {
+                        if (!ShmDcCommonData->isIntoCharge[gunIndex]) {
+                            setChargerMode(gunIndex, MODE_COMPLETE);
+                        } else if (ShmDcCommonData->finalcost_flag[gunIndex]) {
+                            setChargerMode(gunIndex, MODE_COMPLETE);
+                        }
                     }
                 } else if (pDcChargingInfo->Type == _Type_GB) {
-                    if ((isEvStopCharging_gb(gunIndex) == YES ||
-                            isPrechargeStatus_gb(gunIndex) <= 0) &&
-                        ShmDcCommonData->finalcost_flag[gunIndex]){
-                        setChargerMode(gunIndex, MODE_COMPLETE);
+                    if (isEvStopCharging_gb(gunIndex) == YES ||
+                            isPrechargeStatus_gb(gunIndex) <= 0){
+                        if (!ShmDcCommonData->isIntoCharge[gunIndex]) {
+                            setChargerMode(gunIndex, MODE_COMPLETE);
+                        } else if (ShmDcCommonData->finalcost_flag[gunIndex]) {
+                            setChargerMode(gunIndex, MODE_COMPLETE);
+                        }
                     }
                 } else if (pDcChargingInfo->Type == _Type_CCS_2) {
-                    if ((isEvStopCharging_ccs(gunIndex) == YES &&
+                    if (isEvStopCharging_ccs(gunIndex) == YES &&
                             (isPrechargeStatus_ccs(gunIndex) >= 53 ||
                              isPrechargeStatus_ccs(gunIndex) == 0  ||
                              isPrechargeStatus_ccs(gunIndex) == 13 ||
-                             isPrechargeStatus_ccs(gunIndex) == 14) &&
-                        ShmDcCommonData->finalcost_flag[gunIndex])) {
-                        setChargerMode(gunIndex, MODE_COMPLETE);
+                             isPrechargeStatus_ccs(gunIndex) == 14) ) {
+                        if (!ShmDcCommonData->isIntoCharge[gunIndex]) {
+                            setChargerMode(gunIndex, MODE_COMPLETE);
+                        } else if (ShmDcCommonData->finalcost_flag[gunIndex]) {
+                            setChargerMode(gunIndex, MODE_COMPLETE);
+                        }
                     }
                 }
                 if (pSysInfo->CurGunSelected == gunIndex) {

+ 3 - 2
EVSE/Projects/DD360UCar/Apps/Config.h

@@ -503,11 +503,12 @@ typedef struct StDcCommonInfo {
     unsigned int TradeCancel;
     int reupload_deduct_status;		// 0:Not ReUpload 1:ReUpload 2:ReUpload finish
     RecordTransactionInfo TransactionInfo[2];
-    RecordTransactionInfo UploadRedectInfo;
-    RecordTransactionInfo ReAuthComplete;
     int TzOffset;
     int DebugFlag;
     int chillerCtrl;
+    time_t EVDisconnectTime[2];
+    int EVDisconnectFlag[2];
+    int isIntoCharge[2];
 } DcCommonInfo;
 
 #endif /* CONFIG_H_ */

+ 2 - 1
EVSE/Projects/DD360UCar/Apps/ModuleEvComm/Ev_Comm.c

@@ -10,9 +10,10 @@
 #include <fcntl.h>      /*檔控制定義*/
 #include <termios.h>    /*PPSIX 終端控制定義*/
 #include <errno.h>      /*錯誤號定義*/
-
+#include "../Log/log.h"
 #include "Ev_Comm.h"
 #include "Module_EvComm.h"
+#include "../ShareMemory/shmMem.h"
 
 //------------------------------------------------------------------------------
 int PackageIdCmd(int cmd)

+ 63 - 2
EVSE/Projects/DD360UCar/Apps/ModuleEvComm/Module_EvRxComm.c

@@ -225,7 +225,53 @@ static void AddrAssignment(uint8_t *data)
     SetTargetAddr(target_number, index);
     //}
 }
+void CheckEvConnect(int gunIndex)
+{
+    int isSameType = FALSE;
+    int isDisconnect = FALSE;
+    int gunType = _Type_CCS_2;
+    struct ChargingInfoData* pDcChargingInfo = (struct ChargingInfoData*)GetDcChargingInfoData(gunIndex);
+    struct InfoCodeData* pInfoCode = (struct InfoCodeData*)GetShmInfoCodeData();
+    struct ChargingInfoData* pDcChargingInfo_0 = (struct ChargingInfoData*)GetDcChargingInfoData(0);
+    struct ChargingInfoData* pDcChargingInfo_1 = (struct ChargingInfoData*)GetDcChargingInfoData(1);
+
+    if (pDcChargingInfo_0->Type == pDcChargingInfo_1->Type) {
+        isSameType = TRUE;
+        isDisconnect = ShmDcCommonData->EVDisconnectFlag[0] | ShmDcCommonData->EVDisconnectFlag[1];
+        gunType = pDcChargingInfo_0->Type;
+    } else {
+        isDisconnect = ShmDcCommonData->EVDisconnectFlag[gunIndex];
+        gunType = pDcChargingInfo->Type;
+    }
+
+    //log_info("ShmDcCommonData->EVDisconnectFlag[%d]:%d", gunIndex, ShmDcCommonData->EVDisconnectFlag[gunIndex]);
+    if (isDisconnect) {
+        switch (gunType) {
+        case _Type_Chademo:
+            pInfoCode->InfoEvents.bits.ChademoEvCommFail = YES;
+            break;
+        case _Type_CCS_2:
+            pInfoCode->InfoEvents.bits.CcsEvCommFail = YES;
+            break;
+        case _Type_GB:
+            pInfoCode->InfoEvents.bits.GbEvCommFail = YES;
+            break;
+        }
 
+    } else {
+        switch (gunType) {
+        case _Type_Chademo:
+            pInfoCode->InfoEvents.bits.ChademoEvCommFail = NO;
+            break;
+        case _Type_CCS_2:
+            pInfoCode->InfoEvents.bits.CcsEvCommFail = NO;
+            break;
+        case _Type_GB:
+            pInfoCode->InfoEvents.bits.GbEvCommFail = NO;
+            break;
+        }
+    }
+}
 void CANReceiver(int fd)
 {
     pid_t canRecPid;
@@ -269,11 +315,23 @@ void CANReceiver(int fd)
         ShmDcCommonData = (DcCommonInfo *)GetShmDcCommonData();
         ShmFanModuleData = (struct FanModuleData *)GetShmFanModuleData();
 
+        ShmDcCommonData->EVDisconnectTime[0] = time((time_t*)NULL);
+        ShmDcCommonData->EVDisconnectTime[1] = time((time_t*)NULL);
         //log_info("Module_EvRXComm Child's PID is %d", getpid());
 
         while (isContinue) {
             memset(&frame, 0, sizeof(struct can_frame));
 
+            for (_index = 0; _index < pSysConfig->TotalConnectorCount; _index++) {
+                // 檢查是否有收到EV小板訊號
+                if ((time((time_t*)NULL) - ShmDcCommonData->EVDisconnectTime[_index]) > 3 && !ShmDcCommonData->EVDisconnectFlag[_index]) {
+                    ShmDcCommonData->EVDisconnectTime[_index] = time((time_t*)NULL);
+                    ShmDcCommonData->EVDisconnectFlag[_index] = TRUE;
+                    log_info("Lost ev board %d can bus data.", _index);
+                }
+                CheckEvConnect(_index);
+            }
+            
             nbytes = read(fd, &frame, sizeof(struct can_frame));
             if (nbytes <= 0) {
                 usleep(10000);
@@ -325,11 +383,13 @@ void CANReceiver(int fd)
                 usleep(10000);
                 continue;
             }
+            // Reset Connect Timer
+            ShmDcCommonData->EVDisconnectTime[targetGun] = time((time_t*)NULL);
+            ShmDcCommonData->EVDisconnectFlag[targetGun] = FALSE;
 
             pDcChargingInfo = (struct ChargingInfoData *)GetDcChargingInfoData(targetGun);
             gunTypeIndex = pDcChargingInfo->type_index;
 
-
             switch (intCmd) {
             case NOTIFICATION_EV_STATUS:
                 if (pDcChargingInfo->ConnectorPlugIn != frame.data[0]) {
@@ -352,7 +412,7 @@ void CANReceiver(int fd)
                 }
 
                 pDcChargingInfo->ConnectorPlugIn = frame.data[0];
-                pDcChargingInfo->PilotVoltage = frame.data[1];
+                pDcChargingInfo->PilotVoltage = frame.data[1];           
 
                 //log_info("index = %d, ConnectorPlugIn = %x, data[0] = %x ",
                 //         targetGun,
@@ -504,6 +564,7 @@ void CANReceiver(int fd)
                 break;
 
             case ACK_GET_MISCELLANEOUS_INFO:
+
                 pDcChargingInfo->GunLocked = frame.data[0];
                 pDcChargingInfo->PilotVoltage = ((float)(-120 + frame.data[3])) / 10;
 

+ 83 - 25
EVSE/Projects/DD360UCar/Apps/ModuleLcmCtrl/Module_LcmControl.c

@@ -280,7 +280,6 @@ void ChangeCurPage()
             }
             break;
         case _LCM_START_SCAN:
-            log_info("Gun%d Enter Start Scan", pSysInfo->CurGunSelected);
             if (pSysInfo->CurGunSelected == LEFT_GUN_NUM)
                 pSysInfo->PageIndex = __START_SCAN_LEFT;
             else
@@ -409,9 +408,10 @@ void ShowViewChargingSoc(uint8_t gunIndex,int soc)
 void ShowViewChargingTime(uint8_t gunIndex,int time)
 {
     uint8_t value[10] = {0};
-    int min;
+    int min,sec;
     min = time/60;
-    sprintf((char *)value,"%d",min);
+    sec = time % 60;
+    sprintf((char *)value,"%d:%02d",min,sec);
     if (gunIndex == LEFT_GUN_NUM) {
         DisplayValueToLcm(_LeftGun_info_time, (uint8_t *)value, sizeof(value));
     } else
@@ -420,8 +420,11 @@ void ShowViewChargingTime(uint8_t gunIndex,int time)
 void ShowViewChargingEngery(uint8_t gunIndex, float energy)
 {
     uint8_t value[10] = { 0 };
-    int min;
-    sprintf((char*)value, "%.1f", energy);
+
+    if(energy < 100)
+        sprintf((char*)value, "%.1f", energy);
+    else
+        sprintf((char*)value, "%d", (int)energy);
     //log_info("gun[%d] energy:%.1f", gunIndex, energy);
     if (gunIndex == LEFT_GUN_NUM) {
         DisplayValueToLcm(_LeftGun_info_cap, (uint8_t*)value, sizeof(value));
@@ -432,7 +435,7 @@ void ShowViewChargingEngery(uint8_t gunIndex, float energy)
 void ShowViewCharingMoney(uint8_t gunIndex,float money)
 {
     uint8_t value[10] = {0};
-    sprintf((char *)value,"%.1f",money);
+    sprintf((char *)value,"%d",(int)money);
     //log_info("gun[%d] money:%.1f", gunIndex, money);
     if (gunIndex == LEFT_GUN_NUM) {
         DisplayValueToLcm(_LeftGun_info_money, (uint8_t *)value, sizeof(value));
@@ -744,6 +747,21 @@ void ShowGunCountDownTimer()
     sprintf((char *)value,"%02d:%02d",min,sec);
     DisplayValueToLcm(_Count_Down_Time, (uint8_t *)value, sizeof(value));
 }
+void ClearQrCode()
+{
+    char cmd[200];
+    memset(cmd, 0, 200);
+    DisplayValueToLcm(_QR_CODE_AUTHORIZE, cmd, 200);
+}
+void ChangeQrCode()
+{
+    char cmd[250];
+    pDcChargingInfo = (struct ChargingInfoData*)GetDcChargingInfoData(pSysInfo->CurGunSelected);
+    // https://nhoatcc.lineapid.tw/web/tologin?sn=ABC123&cid=2
+    memset(cmd, '\0', 256);
+    int len = sprintf(cmd, "https://nhoatcc.lineapid.tw/web/tologin?sn=%s&cid=%d", pSysConfig->SystemId, ShmDcCommonData->ConnectorId[pSysInfo->CurGunSelected]);
+    DisplayValueToLcm(_QR_CODE_AUTHORIZE, cmd, len + 1);
+}
 void ShowProgressBar()
 {
     /*
@@ -762,7 +780,7 @@ void ShowSummaryPage()
     // Show Money
     data = pDcChargingInfo->ChargingFee;
     sprintf((char *)value,"%.1f",data);
-    //int discount,settlement = 0;
+    int discount,settlement = 0;
     //DisplayValueToLcm(_Summary_total_money, (uint8_t *)value, sizeof(value));
     //DisplayValueToLcm(_Summary_cal_Total_money, (uint8_t *)value, sizeof(value));
     ChangeDisplay2Value(_Summary_total_money, (int)pDcChargingInfo->ChargingFee);
@@ -793,12 +811,14 @@ void ShowSummaryPage()
     DisplayValueToLcm(_Summary_end_time_min, (uint8_t *)end_min, sizeof(end_min));
     */
 
-    uint8_t min = (pDcChargingInfo->PresentChargedDuration)/60;
+    uint8_t _min = (pDcChargingInfo->PresentChargedDuration)/60;
+    uint8_t _sec = (pDcChargingInfo->PresentChargedDuration) % 60;
     /*
     sprintf((char *)value,"%d",min);
     DisplayValueToLcm(_Summary_duration_time, (uint8_t *)value, sizeof(value));
     */
-    ChangeDisplay2Value(_Summary_duration_time, (int)min);
+    ChangeDisplay2Value(_Summary_duration_min, (int)_min);
+    ChangeDisplay2Value(_Summary_duration_sec, (int)_sec);
 
     if (pDcChargingInfo->PresentChargedEnergy >= 0.1 &&
             pDcChargingInfo->PresentChargedEnergy <= ENERGY_MAX_KWH) {
@@ -808,13 +828,13 @@ void ShowSummaryPage()
     //sprintf((char *)value,"%.1f",data);
     ChangeDisplay2Value(_Summary_cap, data);
     //DisplayValueToLcm(_Summary_cap, (uint8_t *)value, sizeof(value));
-    /*
-    sprintf((char *)value,"%.1f",discount);
+    discount = ShmSelectGunInfo->PricesInfo[pSysInfo->CurGunSelected].Discount;
+    sprintf((char *)value,"%.1f", discount);
     DisplayValueToLcm(_Summary_cal_discount, (uint8_t *)value, sizeof(value));
     settlement = pDcChargingInfo->ChargingFee - discount;
     sprintf((char *)value,"%.1f",settlement);
     DisplayValueToLcm(_Summary_cal_Settlement, (char *)value, sizeof(value));
-   
+    /*
     if(pSysInfo->CurGunSelected == LEFT_GUN_NUM) {
         sprintf((char *)value,"%.1f",ChargeMaxPower_0);
     } else if (pSysInfo->CurGunSelected == RIGHT_GUN_NUM) {
@@ -856,6 +876,7 @@ void ProcessPageInfo()
         SetDetailViewPage();
         break;
     case _LCM_START_SCAN:
+        ChangeQrCode();
     case _LCM_STOP_RFID:
     case _LCM_STOP_APP:
         ShowSelectGunIcon();
@@ -935,18 +956,20 @@ void DemoFunction()
         case __VIEW_LEFT_CHARGE_:
             for(i=0;i<=100;i++) {
                 ShowViewChargingSoc(LEFT_GUN_NUM,i);
-                ShowViewChargingTime(LEFT_GUN_NUM,i*60);
+                ShowViewChargingTime(LEFT_GUN_NUM,i);
                 ShowViewCharingMoney(LEFT_GUN_NUM,i);
                 ShowViewChargingPower(LEFT_GUN_NUM,i);
+                ShowViewChargingEngery(LEFT_GUN_NUM,i);
                 usleep(100000);
             }
             break;
         case __VIEW_RIGHT_CHARGE_:
             for(i=0;i<=100;i++) {
                 ShowViewChargingSoc(RIGHT_GUN_NUM,i);
-                ShowViewChargingTime(RIGHT_GUN_NUM,i*60);
+                ShowViewChargingTime(RIGHT_GUN_NUM,i);
                 ShowViewCharingMoney(RIGHT_GUN_NUM,i);
                 ShowViewChargingPower(RIGHT_GUN_NUM,i);
+                ShowViewChargingEngery(RIGHT_GUN_NUM, i);
                 usleep(100000);
             }
             break;
@@ -956,16 +979,20 @@ void DemoFunction()
                 ShowViewChargingTime(LEFT_GUN_NUM,i*60);
                 ShowViewCharingMoney(LEFT_GUN_NUM,i);
                 ShowViewChargingPower(LEFT_GUN_NUM,i);
+                ShowViewChargingEngery(LEFT_GUN_NUM, i/10);
 
                 ShowViewChargingSoc(RIGHT_GUN_NUM,i);
-                ShowViewChargingTime(RIGHT_GUN_NUM,i*60);
+                ShowViewChargingTime(RIGHT_GUN_NUM,i);
                 ShowViewCharingMoney(RIGHT_GUN_NUM,i);
                 ShowViewChargingPower(RIGHT_GUN_NUM,i);
+                ShowViewChargingEngery(RIGHT_GUN_NUM, i/10);
                 usleep(100000);
             }
             break;
         case 7:
         case 9:
+        case 23:
+        case 24:
             break;
         case 11:
             for(i = 0 ; i <= 100 ; i++) {
@@ -1006,6 +1033,7 @@ void DemoFunction()
         case 13:
         case 15:
         case 17:
+        case 28:
             ftime(&SeqEndTime);
             SeqEndTime.time = time(NULL);
             tm = localtime(&SeqEndTime.time);
@@ -1014,8 +1042,24 @@ void DemoFunction()
             sprintf((char *)value,"%02d:%02d",tm->tm_hour,tm->tm_min);
 
             DisplayValueToLcm(_Count_Down_Time, (uint8_t *)value, sizeof(value));
-            if (pSysInfo->PageIndex == 17 ) {
-
+            if (pSysInfo->PageIndex == 17 || pSysInfo->PageIndex == 28) {
+                for (i = 0; i <= 100; i++) {
+                    ChangeDisplay2Value(_Summary_total_money, i);
+                    ChangeDisplay2Value(_Summary_cal_Total_money, i);
+                    ChangeDisplay2Value(_Summary_Start_time_hr, i/60);
+                    ChangeDisplay2Value(_Summary_Start_time_min, i%60);
+                    ChangeDisplay2Value(_Summary_end_time_hr, i/60);
+                    ChangeDisplay2Value(_Summary_end_time_min, i%60);
+                    ChangeDisplay2Value(_Summary_duration_min, i);
+                    ChangeDisplay2Value(_Summary_duration_sec, i%60);
+
+                    ChangeDisplay2Value(_Summary_cap, i);
+                    ChangeDisplay2Value(_Summary_cal_discount,i);
+                    ChangeDisplay2Value(_Summary_cal_Settlement,i);
+                    ChangeDisplay2Value(_Summary_max_power, i);
+                    ChangeDisplay2Value(_Summary_average_power, i);
+                    usleep(100000);
+                }
             }
             break;
         case __START_AUTHORIZE_:
@@ -1032,9 +1076,12 @@ void DemoFunction()
             break;
         case 8:
         case 16:
+        case 27:
         case 18:
         case 19:
         case 20:
+        case 29:
+        case 30:
             break;
         case 21:
             ShowCabientVersion();
@@ -1042,6 +1089,17 @@ void DemoFunction()
         case 22:
             ShowDispenserVersion();
             break;
+        case 25:
+        case 26:
+            break;
+        case 5:
+            pSysInfo->CurGunSelected = 0;
+            ChangeQrCode();
+            break;
+        case 31:
+            pSysInfo->CurGunSelected = 1;
+            ChangeQrCode();
+            break;
     }
 }
 void ShowCabientVersionDefaultText()
@@ -1212,7 +1270,7 @@ int main(void)
     //printf("_LCM_COMPLETE ");
     //ChangeToOtherPage(_LCM_COMPLETE);
     //return 0;
-    //uint8_t index = 21;
+    uint8_t index = 1;
     ShmDcCommonData->PSU_Number = 12;
     while (_port != -1) {
         if (strcmp((char *)pSysInfo->LcmHwRev, moduleName) != 0x00) {
@@ -1251,7 +1309,7 @@ int main(void)
             }
 
             // 頁面資訊處理
-
+            
             ProcessPageInfo();
 
             // 換頁處理
@@ -1266,18 +1324,18 @@ int main(void)
                 if (is_show)
                     _showInformIndex >= 1 ? _showInformIndex = 0 : _showInformIndex++;
                 is_show = false;
-            }
-            */
+            }*/
+            
             GetCurrentPage(); //DS60-120 add
             ChangeCurPage();
-
+            
             /*
-            pSysInfo->PageIndex = index;
+            pSysInfo->PageIndex = _LCM_WAIT_PLUGIN;
             GetCurrentPage();
-            ChangeToOtherPage(index);
+            ChangeToOtherPage(_LCM_WAIT_PLUGIN);
             GetCurrentPage();
             DemoFunction();
-            index >= 22 ? index = 21 : index++;
+            index >= 34 ? index = 1 : index++;
             */
             //usleep(100000);
             usleep(1000000);

+ 3 - 1
EVSE/Projects/DD360UCar/Apps/ModuleLcmCtrl/Module_LcmControl.h

@@ -111,13 +111,15 @@
 #define _Summary_Start_time_min     0x0420
 #define _Summary_end_time_hr        0x0430
 #define _Summary_end_time_min       0x0440
-#define _Summary_duration_time      0x0450
+#define _Summary_duration_min       0x0450
 #define _Summary_max_power          0x0460
 #define _Summary_average_power      0x0470
 #define _Summary_cap                0x0480
 #define _Summary_cal_Total_money    0x0490
 #define _Summary_cal_discount       0x04A0
 #define _Summary_cal_Settlement     0x04B0
+#define _Summary_duration_sec       0x04C0
+#define _QR_CODE_AUTHORIZE          0x04D0
 
 enum _ICON_LIST_ {
     _ICON_Empty,

+ 4 - 0
EVSE/Projects/DD360UCar/Apps/ModulePrimary/Module_PrimaryComm.c

@@ -187,6 +187,7 @@ static void checkChillerStatus(Gpio_out *gpio)
     struct ChargingInfoData *pDcChargingInfo = NULL;
     static ChillerInfo fChillerInfo[2] = {0}, *pChillerInfo = NULL;
     static ChillerInfo _chiller;
+    struct FanModuleData* ShmFanModuleData = (struct FanModuleData*)GetShmFanModuleData();;
     Gpio_out *pGpio = (Gpio_out *)gpio;
 
     if ((strncmp((char *)&pSysConfig->ModelName[7], "V", 1) == 0) ||
@@ -213,6 +214,7 @@ static void checkChillerStatus(Gpio_out *gpio)
         {
             pChillerInfo->ChillerSwitch = YES;
             pChillerInfo->ChillerOnTime = time((time_t *)NULL);
+            ShmFanModuleData->SetFan1Speed = 7000;
         }
         else
         {
@@ -222,11 +224,13 @@ static void checkChillerStatus(Gpio_out *gpio)
                 if ((time((time_t *)NULL) - pChillerInfo->ChillerOnTime) >= 600)
                 {
                     pChillerInfo->ChillerSwitch = NO;
+                    ShmFanModuleData->SetFan1Speed = 0;
                 }
             }
             else
             {
                 pChillerInfo->ChillerSwitch = NO;
+                ShmFanModuleData->SetFan1Speed = 0;
             }
         }
 /*

BIN
EVSE/Projects/DD360UCar/Images/ramdisk.gz


BIN
EVSE/Projects/DD360UCar/output/FactoryConfig


BIN
EVSE/Projects/DD360UCar/output/Module_ChkSysTask


BIN
EVSE/Projects/DD360UCar/output/Module_DoComm


BIN
EVSE/Projects/DD360UCar/output/Module_EvComm


BIN
EVSE/Projects/DD360UCar/output/Module_EventLogging


BIN
EVSE/Projects/DD360UCar/output/Module_InternalComm


BIN
EVSE/Projects/DD360UCar/output/Module_LcmControl


BIN
EVSE/Projects/DD360UCar/output/Module_PrimaryComm


BIN
EVSE/Projects/DD360UCar/output/Module_UpdateFW


BIN
EVSE/Projects/DD360UCar/output/ReadCmdline


BIN
EVSE/Projects/DD360UCar/output/main


BIN
EVSE/Projects/DD360UCar/output/simulation