Przeglądaj źródła

2022-02-17 / Simon Xue

Action
1. Fix Authorize problem.
2. Add CTS-8
3. Modify Complete problem.

Files
As the commit history files

Image Version: V2.03.XX.XXXX.XX
Simon Xue 3 lat temu
rodzic
commit
4727026c0c

+ 76 - 63
EVSE/Projects/DD360Tcci/Apps/CSU/RFID.c

@@ -243,7 +243,7 @@ static void UserScanFunction(void)
             confirmSelGun(pSysInfo->CurGunSelected);
             setSelGunWaitToAuthor(pSysInfo->CurGunSelected);
             StartSystemTimeoutDet(Timeout_Authorizing);
-
+            AuthorizingStart();
 			pDcChargingInfo->SystemStatus = S_AUTHORIZING;
 			AuthorizingStart();
 
@@ -278,9 +278,9 @@ void AuthorizeToCharge()
     if(isAuthorizedComplete())
     {
        // StopSystemTimeoutDet();
-        StartSystemTimeoutDet(Timeout_WaitBalance);
-        if (ShmSelectGunInfo->PricesInfo[pSysInfo->CurGunSelected].Balance != FAIL_BALANCE_PRICES) {
-            StopSystemTimeoutDet();
+        //StartSystemTimeoutDet(Timeout_WaitBalance);
+       // if (ShmSelectGunInfo->PricesInfo[pSysInfo->CurGunSelected].Balance != FAIL_BALANCE_PRICES) {
+        //    StopSystemTimeoutDet();
             // 判斷後台回覆狀態
             if (canStartCharging()) {
             // LCM => Authorize complete
@@ -288,16 +288,17 @@ void AuthorizeToCharge()
                 //pSysInfo->SystemPage = _PAGE_PLUGIN;
                 //log_info("Wait Gun(%d) plugin",pSysInfo->CurGunSelected);
                 DetectPluginStart();
-                if (ShmDcCommonData->AuthPass_flag[pSysInfo->CurGunSelected] == TRUE)
-                	pSysInfo->SystemPage = _PAGE_PLUGIN;
+                if (ShmDcCommonData->AuthPass_flag[pSysInfo->CurGunSelected] == TRUE) {
+                    pSysInfo->SystemPage = _PAGE_PLUGIN;
+                }
                 //log_info("Gun(%d) Balance: %f",pSysInfo->CurGunSelected,
                 //        ShmSelectGunInfo->PricesInfo[pSysInfo->CurGunSelected].Balance);
             } else {
                 log_info("LCM => Authorize fail");
-                //pSysInfo->SystemPage = _PAGE_AUTHORIZE_FAIL;
+                pSysInfo->SystemPage = _PAGE_AUTHORIZE_FAIL;
                 strcpy((char *)pSysConfig->UserId, "");
             }
-        }
+        //}
         ClearAuthorizedFlag();
     }
 }
@@ -347,7 +348,7 @@ void WritePayResult(int result ,uint8_t gunIndex)
 void PreAuthCompleteToCardReader(int fd,uint8_t gunIndex)
 {
 	int result = 0;
-	result = CreditCardPreAuthComplete(fd,(int)ShmDcCommonData->finalcost[pSysInfo->CurGunSelected] ,"TCC Test",
+	result = CreditCardPreAuthComplete(fd,(int)ShmDcCommonData->finalcost[pSysInfo->CurGunSelected], "TCC Test",
 											&ShmDcCommonData->pCreditCard[gunIndex].VemData[0],
 											&ShmDcCommonData->pCreditCard[gunIndex]);
 
@@ -356,8 +357,7 @@ void PreAuthCompleteToCardReader(int fd,uint8_t gunIndex)
 		log_info("Credit Card Spend Money:%.1f",ShmDcCommonData->finalcost[gunIndex]);
 		pSysInfo->SystemPage = _PAGE_COMPLETE;
 		WritePayResult(TRUE,gunIndex);
-		ShmDcCommonData->PayPass_flag[gunIndex] = TRUE;
-
+        ShmDcCommonData->PayPass_flag[gunIndex] = TRUE;
 	} else {
 		log_info("PAYING FAIL");
 		ShmDcCommonData->PayPass_flag[gunIndex] = FALSE;
@@ -393,7 +393,27 @@ static int InitialRfidPort(void)
 
     return fd;
 }
+int CreditCardCancelPreAuth(int fd,uint8_t gunIndex)
+{
+    struct SysConfigData* pSysConfig = (struct SysConfigData*)GetShmSysConfigData();
+    ShmDcCommonData->PreAuth_Result = CreditCardPreAuthCancel(fd, PREAUTHMONEY, "TCC Test",
+        &ShmDcCommonData->pCreditCard[gunIndex].ApprovalNo[0],
+        &ShmDcCommonData->pCreditCard[gunIndex].CardNo[0],
+        &ShmDcCommonData->pCreditCard[gunIndex].VemData[0]);
+    sleep(10);
+    if (ShmDcCommonData->PreAuth_Result > 0) {
+        strcpy((char*)pSysConfig->UserId, "");
+        ShmDcCommonData->PayFinish[gunIndex] = TRUE;
+        log_info("Card Reader PreAuth Cancel Success");
+        memset(&ShmDcCommonData->pCreditCard[gunIndex], 0, sizeof(TransInfo));
 
+    }
+    else if (ShmDcCommonData->PreAuth_Result < 0) {
+        log_info("Card Reader PreAuth Cancel Failure");
+    }
+    ShmDcCommonData->PreAuth_Config = _CREDITCARD_IDLE;
+    return ShmDcCommonData->PreAuth_Result;
+}
 void CreateRfidFork(void)
 {
     pid_t rfidRecPid;
@@ -457,7 +477,34 @@ void CreateRfidFork(void)
 					ShmDcCommonData->reupload_deduct_status = 0;
 				}
 			}
+            if (is_idle == TRUE && tm->tm_min % 15 == 0 &&
+                pSysInfo->SystemPage == _PAGE_IDLE && ShmDcCommonData->reupload_deduct_status == 0) {
+                sleep(1);
+                if (DB_GetReDeductInfo(&ReAuthComplete_Index, &ShmDcCommonData->ReAuthComplete) == PASS) {
+
+                    result = CreditCardPreAuthComplete(fd, (int)ShmDcCommonData->ReAuthComplete.Amount, "TCC Test",
+                        &ShmDcCommonData->ReAuthComplete.VemData[0],
+                        &ShmDcCommonData->pCreditCard[0]);
+                    sleep(10);
+                    if (result > 0) {
+                        ShmDcCommonData->ReAuthComplete.DeductResult = YES;
+                        ShmDcCommonData->ReAuthComplete.IsUpload = NO;
+                        UpdateDeductInfoStatus(&ReAuthComplete_Index, &ShmDcCommonData->ReAuthComplete);
+                        log_info("PreAuthComplete OK");
+                    }
+                    else if (result < 0) {
+                        log_info("Backgroud ID:%d Amount:%d VemData:%s PreAuthComplete fail",
+                            ShmDcCommonData->ReAuthComplete.TransactionId,
+                            (int)ShmDcCommonData->ReAuthComplete.Amount,
+                            ShmDcCommonData->ReAuthComplete.VemData);
+                    }
+                }
+                else {
+                    //log_info("DB_GetReDeductInfo Fail");
+                }
+            }
 
+            // Scan Card to get card number
             if (pSysInfo->SystemPage == _PAGE_AUTHORIZE && ShmDcCommonData->GetCardNo[pSysInfo->CurGunSelected] == FALSE) {
             	result = CreditCardSearch(fd,"TCC Test",&ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected]);
             	//result = 1;
@@ -480,75 +527,41 @@ void CreateRfidFork(void)
 				if (pDcChargingInfo->SystemStatus == S_IDLE) {
 					is_idle = TRUE;
 				}
-
 				if (ShmDcCommonData->StopCharge[gunIndex] == TRUE && ShmDcCommonData->finalcost_flag[gunIndex]) {
-					if (ShmDcCommonData->finalcost[gunIndex] <= 0) {
-
-					} else {
-						ShmDcCommonData->StopCharge[gunIndex] = FALSE;
-						StopGunInfoTimeoutDet(gunIndex); //Timeout_FinalCost
+                    ShmDcCommonData->StopCharge[gunIndex] = FALSE;
+                    pSysInfo->SystemPage = _PAGE_PAYING;
+                    StopGunInfoTimeoutDet(gunIndex); //Timeout_FinalCost
+					if (ShmDcCommonData->finalcost[gunIndex] < 1) {
+                        log_info("Final Cost less 1 , Cancel Trade!!");
+                        if (CreditCardCancelPreAuth(fd, gunIndex) > 0) {
+                            pSysInfo->SystemPage = _PAGE_COMPLETE;
+                            ShmDcCommonData->PayPass_flag[gunIndex] = TRUE;
+                        }
+                        else {
+                            pSysInfo->SystemPage = _PAGE_PAYFAIL;
+                            ShmDcCommonData->PayPass_flag[gunIndex] = FALSE;
+                        }
+					} else {                        		
 						PreAuthCompleteToCardReader(fd,gunIndex);
-						ShmDcCommonData->PayFinish[gunIndex] = TRUE;
 					}
 				}
 			} // for
-			if (is_idle == TRUE && tm->tm_min%15 == 0 &&
-					pSysInfo->SystemPage == _PAGE_IDLE && ShmDcCommonData->reupload_deduct_status == 0) {
-				sleep(1);
-				if (DB_GetReDeductInfo(&ReAuthComplete_Index,&ShmDcCommonData->ReAuthComplete) == PASS ) {
-
-					result = CreditCardPreAuthComplete(fd,(int)ShmDcCommonData->ReAuthComplete.Amount ,"TCC Test",
-															&ShmDcCommonData->ReAuthComplete.VemData[0],
-															&ShmDcCommonData->pCreditCard[0]);
-                    sleep(10);
-					if (result > 0) {
-						ShmDcCommonData->ReAuthComplete.DeductResult = YES;
-						ShmDcCommonData->ReAuthComplete.IsUpload = NO;
-						UpdateDeductInfoStatus(&ReAuthComplete_Index,&ShmDcCommonData->ReAuthComplete);
-						log_info("PreAuthComplete OK");
-					} else if ( result < 0) {
-						log_info("Backgroud ID:%d Amount:%d VemData:%s PreAuthComplete fail",
-								ShmDcCommonData->ReAuthComplete.TransactionId,
-								(int)ShmDcCommonData->ReAuthComplete.Amount,
-								ShmDcCommonData->ReAuthComplete.VemData);
-					}
-				} else {
-					log_info("DB_GetReDeductInfo Fail");
-				}
-			}
-            if(ShmDcCommonData->PreAuth_Config == _CREDITCARD_CANCEL) {
-            	ShmDcCommonData->PreAuth_Result = CreditCardPreAuthCancel(fd,PREAUTHMONEY,"TCC Test",
-					&ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected].ApprovalNo[0],
-					&ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected].CardNo[0],
-					&ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected].VemData[0]);
-                sleep(10);
-				if (ShmDcCommonData->PreAuth_Result > 0 ) {
-					strcpy((char *)pSysConfig->UserId,"");
-					log_info("Card Reader Stop");
-					memset(&ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected], 0, sizeof(TransInfo));
-				} else if (ShmDcCommonData->PreAuth_Result < 0) {
-					log_info("Car Reader Stop Fail");
 
-				}
-				ShmDcCommonData->PreAuth_Config = _CREDITCARD_IDLE;
-            } else if (ShmDcCommonData->PreAuth_Config == _CREDITCARD_PREAUTH) {
+            if(ShmDcCommonData->PreAuth_Config == _CREDITCARD_CANCEL) {
+                CreditCardCancelPreAuth(fd,pSysInfo->CurGunSelected);
+            } else if (ShmDcCommonData->PreAuth_Config == _CREDITCARD_PREAUTH && ShmDcCommonData->GetCardNo[pSysInfo->CurGunSelected]) {
         		result = CreditCardPreAuth(fd, PREAUTHMONEY,"TCC Test", &ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected]);
-                sleep(10);
+                sleep(7);
 				//result = 1;
 				if (result > 0) {
 					ShmDcCommonData->AuthPass_flag[pSysInfo->CurGunSelected] = TRUE;
-					//pSysInfo->SystemPage = _PAGE_PLUGIN;
-					//strncpy((char *)pSysConfig->UserId,ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected].CardNo,20);
 					log_info("PreAuth OK");
 				} else if (result < 0) {
 				    struct ChargingInfoData *pDcChargingInfo = NULL;
-				    //pDcChargingInfo = (struct ChargingInfoData *)GetDcChargingInfoData(pSysInfo->CurGunSelected);
 					pSysInfo->SystemPage = _PAGE_AUTHORIZE_FAIL;
-					//pDcChargingInfo->SystemStatus = S_IDLE;
 					ShmDcCommonData->AuthPass_flag[pSysInfo->CurGunSelected] = FALSE;
 					memset(&ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected], 0, sizeof(TransInfo));
 					log_info("PreAuth Fail");
-					ShmDcCommonData->PreAuth_Config = _CREDITCARD_CANCEL;
 				}
 				ShmDcCommonData->PreAuth_Config = _CREDITCARD_IDLE;
             }

+ 23 - 9
EVSE/Projects/DD360Tcci/Apps/CSU/main.c

@@ -81,8 +81,8 @@ uint8_t bd0_2_status = 0;
 uint8_t bd1_1_status = 0;
 uint8_t bd1_2_status = 0;
 
-char *fwVersion = "V2.01.00.0000.00"; // Phihong version
-char* DebugVersion = "v2.01.00";      // Software debug version
+char *fwVersion = "V2.03.00.0000.00"; // Phihong version
+char* DebugVersion = "v2.03.01";      // Software debug version
 //sqlite3 *localDb;
 bool isDb_ready;
 
@@ -1748,11 +1748,17 @@ void ReleaseAlarmCode(uint8_t gunIndex)
 //===============================================
 void ChargingTerminalProcess(uint8_t gunIndex)
 {
+    pDcChargingInfo = (struct ChargingInfoData*)GetDcChargingInfoData(gunIndex);
+    if (pDcChargingInfo->SystemStatus == S_CHARGING)
+        ShmDcCommonData->StopCharge[gunIndex] = TRUE;
     setChargerMode(gunIndex, MODE_TERMINATING);
 }
 
 void ChargingAlarmProcess(uint8_t gunIndex)
 {
+    pDcChargingInfo = (struct ChargingInfoData*)GetDcChargingInfoData(gunIndex);
+    if (pDcChargingInfo->SystemStatus == S_CHARGING)
+        ShmDcCommonData->StopCharge[gunIndex] = TRUE;
     UpdateErrorCodeToOcpp(gunIndex);
     setChargerMode(gunIndex, MODE_ALARM);
 }
@@ -3968,7 +3974,7 @@ int main(void)
     log_info(" ********************************************************");
     log_info(" ******************  FileSystem Boot up *****************");
     log_info(" ********************************************************");
-    log_info(" ******************  Project:DD360Tcci  *****************");
+    log_info(" ******************  Project:DD360Tcc   *****************");
     log_info(" ********************************************************");
     int is_plugout[2];
     if (!InitialSystemDefaultConfig()) {
@@ -4056,7 +4062,7 @@ int main(void)
     CheckTaskAlive();
 
     CreateWatchdog();
-
+    system("export TZ=CST-8&");
     for (;;) {
 
         CheckOcppStatus();
@@ -4490,8 +4496,10 @@ CheckStatus:
                         strcpy((char *)ShmOCPP16Data->StopTransaction[gunIndex].StopReason, "Local");
                     }
                     StopGunInfoTimeoutDet(gunIndex);
+                    StartGunInfoTimeoutDet(gunIndex, Timeout_FinalCost);
                     StartSystemTimeoutDet(Timeout_Terminating);
                     pSysInfo->CurGunSelected = gunIndex;
+                    pSysInfo->SystemPage = _PAGE_PAYING;
                 }
                 // For Precharging timeout
 
@@ -4519,7 +4527,8 @@ CheckStatus:
                 if (pSysInfo->SystemPage == _PAGE_MAINTAIN) {
 					break;
                 }
-                if (pSysInfo->CurGunSelected == gunIndex && pSysInfo->SystemPage != _PAGE_PAYING) {
+                if (pSysInfo->CurGunSelected == gunIndex && pSysInfo->SystemPage != _PAGE_PAYING &&
+                    ShmDcCommonData->finalcost_flag[gunIndex]) {
                 	if (ShmDcCommonData->PayPass_flag[pSysInfo->CurGunSelected] == TRUE)
                 		pSysInfo->SystemPage = _PAGE_COMPLETE;
                 	else
@@ -4543,6 +4552,7 @@ CheckStatus:
                     break;
                 }
                 if (pSysInfo->CurGunSelected == gunIndex && is_plugout[gunIndex] == TRUE) {
+                    StartGunInfoTimeoutDet(gunIndex, Timeout_PlugOutGun);
                 	pSysInfo->SystemPage = _PAGE_EXIT;
                 	break;
                 }
@@ -4556,7 +4566,8 @@ CheckStatus:
                     }
                 }
 
-                if (pSysInfo->CurGunSelected == gunIndex && pSysInfo->SystemPage != _PAGE_PAYING) {
+                if (pSysInfo->CurGunSelected == gunIndex && pSysInfo->SystemPage != _PAGE_PAYING &&
+                    ShmDcCommonData->finalcost_flag[gunIndex]) {
                 	if (ShmDcCommonData->PayPass_flag[pSysInfo->CurGunSelected] == TRUE)
 						pSysInfo->SystemPage = _PAGE_COMPLETE;
 					else
@@ -4577,15 +4588,17 @@ CheckStatus:
                     }
                     TheEndCharging(gunIndex);
                     StopGunInfoTimeoutDet(gunIndex);
+                    StartGunInfoTimeoutDet(gunIndex, Timeout_FinalCost);
                     if (pDcChargingInfo->Replug_flag == TRUE) {
                 		ShmDcCommonData->PreAuth_Config = _CREDITCARD_CANCEL;
                 		ShmDcCommonData->PreAuth_Result = 0;
+                        pSysInfo->SystemPage = _PAGE_PLUGOUT;
                     } else {
 						if(ShmDcCommonData->PayFinish[gunIndex] == FALSE) {
 							pSysInfo->SystemPage = _PAGE_PAYING;
 						}
-						ShmDcCommonData->StopCharge[gunIndex] = TRUE;
                     }
+
                 }
 
                 if (pSysWarning->Level == WARN_LV_ER) {
@@ -4594,6 +4607,7 @@ CheckStatus:
 					continue;
 				}
                 if (pSysInfo->CurGunSelected == gunIndex && is_plugout[gunIndex] == TRUE) {
+                    StartGunInfoTimeoutDet(gunIndex, Timeout_PlugOutGun);
                 	pSysInfo->SystemPage = _PAGE_EXIT;
                 	break;
                 }
@@ -4612,10 +4626,10 @@ CheckStatus:
                 //if (pSysInfo->SystemPage == _PAGE_PAYING)
                 //	break;
 
-                if (pSysInfo->CurGunSelected == gunIndex && pSysInfo->SystemPage != _PAGE_PAYING) {
+                if (pSysInfo->CurGunSelected == gunIndex && pSysInfo->SystemPage != _PAGE_PAYING ) {
                 	if (pDcChargingInfo->Replug_flag == TRUE)
                 		pSysInfo->SystemPage = _PAGE_PLUGOUT;
-                	else {
+                	else if (ShmDcCommonData->finalcost_flag[gunIndex]) {
                 		if (ShmDcCommonData->PayPass_flag[pSysInfo->CurGunSelected] == TRUE)
 							pSysInfo->SystemPage = _PAGE_COMPLETE;
 						else

+ 2 - 1
EVSE/Projects/DD360Tcci/Apps/ModuleDoComm/DoComm.c

@@ -590,7 +590,8 @@ static int miscCommandHandle(uint8_t dataLen, uint8_t plugNum, uint8_t *data)
         case MISC_CMD_DEFAULT_PRICES:
             prices = transPricesUnit((int)value);
             log_info("default prices = %.2f", prices);
-            ShmDcCommonData->ChargingRate = prices;
+	    if(prices > 0 )
+            	ShmDcCommonData->ChargingRate = prices;
             //pSysConfig->BillingData.isBilling = YES;
             for (j = 0; j < 24; j++) {
                 pSysConfig->BillingData.Fee[j] = prices;

+ 17 - 3
EVSE/Projects/DD360Tcci/Apps/ModuleLcmCtrl/Module_LcmControl.c

@@ -284,13 +284,13 @@ void CheckPayCreditCard()
 {
    	pDcChargingInfo = (struct ChargingInfoData *)GetDcChargingInfoData(pSysInfo->CurGunSelected);
 	if (pDcChargingInfo->SystemStatus == S_IDLE) {
-		confirmSelGun(pSysInfo->CurGunSelected);
-		setSelGunWaitToAuthor(pSysInfo->CurGunSelected);
+		//confirmSelGun(pSysInfo->CurGunSelected);
+		//setSelGunWaitToAuthor(pSysInfo->CurGunSelected);
 		pSysInfo->SystemPage = _PAGE_AUTHORIZE;
 		//pDcChargingInfo->SystemStatus = S_AUTHORIZING;
 
 		//
-		AuthorizingStart();
+		//AuthorizingStart();
 	}
 }
 void CheckPayIcash()
@@ -909,7 +909,20 @@ void ChangeChargingPowerValue(float pow)
     string2ByteArray(value, cmd);
     DisplayValueToLcm(_String_ChargePower, cmd, sizeof(cmd));
 }
+void ChangeChargingRateValue(int rate)
+{
+    uint8_t cmd[10];
+    uint8_t value[10];
 
+    memset(cmd, 0x00, sizeof(cmd));
+    if (rate == 0) {
+        log_info("Doesn't get Charge Fee");
+    } 
+    
+    sprintf((char *) value, "%d",rate);
+    string2ByteArray(value, cmd);
+    DisplayValueToLcm(_String_ChargeRate, cmd, sizeof(cmd));
+}
 
 void ChangeChargingFeeValue(float fee)
 {
@@ -1153,6 +1166,7 @@ void ProcessPageInfo()
             		sleep(3);
             		pSysInfo->SystemPage = _PAGE_SENSING;
             	}
+		ChangeChargingRateValue((int)ShmDcCommonData->ChargingRate);
             	_Text_Running_Count = 1;
                 break;
             case _PAGE_PLUGIN:

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


BIN
EVSE/Projects/DD360Tcci/output/Module_DoComm


BIN
EVSE/Projects/DD360Tcci/output/Module_LcmControl


BIN
EVSE/Projects/DD360Tcci/output/main


+ 1 - 1
build_rootfs_copy.sh

@@ -10,5 +10,5 @@ sleep 3
 #sudo make DD360UCar-rootfs
 #cp /opt/ti-processor-sdk-linux-am335x-evm-04.02.00.09/EVSE/Projects/DD360UCar/Images/* /mnt/e/Image/DD360UCar/
 sudo make DD360Tcci-rootfs
-sudo cp /opt/ti-processor-sdk-linux-am335x-evm-04.02.00.09/EVSE/Projects/DD360Tcci/Images/* /mnt/e/Image/DD360Tcci/
+sudo cp /opt/ti-processor-sdk-linux-am335x-evm-04.02.00.09/EVSE/Projects/DD360Tcci/Images/* /mnt/d/Image/DD360Tcci/