|
@@ -487,11 +487,11 @@ static int qrCodeUrlInfoHandle(uint8_t *data)
|
|
|
tm->tm_mday,
|
|
|
tm->tm_hour,
|
|
|
tm->tm_min);
|
|
|
-
|
|
|
+ memset(pSysConfig->SystemId, '\0', sizeof(pSysConfig->SystemId));
|
|
|
+ string2ByteArray((char *)data, (uint8_t *)pSysConfig->SystemId);
|
|
|
+
|
|
|
|
|
|
if (strncmp((char *)localTime, (char *)&data[0], timeLen - 2) != 0) {
|
|
|
- memset(pSysConfig->SystemId, '\0', sizeof(pSysConfig->SystemId));
|
|
|
-
|
|
|
|
|
|
for (int i = 0; i < pSysConfig->TotalConnectorCount; i++) {
|
|
|
pDcChargingInfo = (struct ChargingInfoData*)GetDcChargingInfoData(i);
|
|
@@ -499,9 +499,8 @@ static int qrCodeUrlInfoHandle(uint8_t *data)
|
|
|
is_idle = FALSE;
|
|
|
}
|
|
|
|
|
|
- string2ByteArray((char *)data, (uint8_t *)pSysConfig->SystemId);
|
|
|
string2Date((char*)data, (uint8_t*)_setTime);
|
|
|
-
|
|
|
+
|
|
|
if (!timecmp(localTime, _setTime) && is_idle) {
|
|
|
|
|
|
sprintf((char*)cmdBuf, "date -u -s \"%s\" >> /dev/null &", _setTime);
|
|
@@ -741,11 +740,15 @@ static int miscCommandHandle(uint8_t dataLen, uint8_t plugNum, uint8_t *data)
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
+ if (ShmDcCommonData->pGunInfo[plugNum].ParkingStatus) {
|
|
|
+ log_info("Gun%d is in the Parking status can't access Remote Start",plugNum);
|
|
|
+ break;
|
|
|
+ }
|
|
|
setConfirmSelGun(plugNum);
|
|
|
|
|
|
ShmOCPP16Data->CsMsg.bits[plugNum].RemoteStartTransactionReq = YES;
|
|
|
ShmSelectGunInfo->PricesInfo[plugNum].Balance = 0.00;
|
|
|
+
|
|
|
clearMiscCommand();
|
|
|
break;
|
|
|
|
|
@@ -945,12 +948,12 @@ static int chargingbillHandle(uint8_t* data, uint8_t gunIndex)
|
|
|
ShmDcCommonData->PriceBill.ParkingFee = transPricesUnit(ntohl(pBillInfo->ParkingFee));
|
|
|
pBillInfo->RemainAmount = ntohl(pBillInfo->RemainAmount);
|
|
|
memcpy((char*)&ShmDcCommonData->PriceBill.RemainAmount, (char*)&pBillInfo->RemainAmount, sizeof(uint32_t));
|
|
|
- log_info("\t ******* TxId %d Charging Bill *******\n", ShmDcCommonData->PriceBill.TransactionId);
|
|
|
- log_info("\t Total Cost = %.2f\n", ShmDcCommonData->PriceBill.TotalCost);
|
|
|
- log_info("\t Discount = %.2f\n", ShmDcCommonData->PriceBill.Discount);
|
|
|
- log_info("\t EnergyCost = %.2f\n", ShmDcCommonData->PriceBill.EnergyCost);
|
|
|
- log_info("\t ParkingFee = %.2f\n", ShmDcCommonData->PriceBill.ParkingFee);
|
|
|
- log_info("\t RemainAmount = %.2f\n", ShmDcCommonData->PriceBill.RemainAmount);
|
|
|
+ log_info("\t ******* TxId %d Charging Bill *******", ShmDcCommonData->PriceBill.TransactionId);
|
|
|
+ log_info("\t Total Cost = %.2f", ShmDcCommonData->PriceBill.TotalCost);
|
|
|
+ log_info("\t Discount = %.2f", ShmDcCommonData->PriceBill.Discount);
|
|
|
+ log_info("\t EnergyCost = %.2f", ShmDcCommonData->PriceBill.EnergyCost);
|
|
|
+ log_info("\t ParkingFee = %.2f", ShmDcCommonData->PriceBill.ParkingFee);
|
|
|
+ log_info("\t RemainAmount = %.2f", ShmDcCommonData->PriceBill.RemainAmount);
|
|
|
if (ShmDcCommonData->PriceBill.TransactionId != ShmDcCommonData->TransactionInfo[gunIndex].TransactionId)
|
|
|
UpdateRedeuctBill(ShmDcCommonData->PriceBill.TransactionId, ShmDcCommonData->PriceBill.TotalCost);
|
|
|
}
|
|
@@ -1556,10 +1559,13 @@ static int responsePackeHandle(int fd, uint8_t *pResult, uint8_t plugNum, uint8_
|
|
|
memcpy(ShmDcCommonData->ParkingInfo[plugNum].OccupancySN,&pCsuResult->Data.Data[1],36);
|
|
|
}
|
|
|
if (ShmDcCommonData->pGunInfo[plugNum].ParkingStatus != pCsuResult->Data.Data[0]) {
|
|
|
- if (ShmDcCommonData->pGunInfo[plugNum].ParkingStatus)
|
|
|
- ShmDcCommonData->pGunInfo[plugNum].isParking = TRUE;
|
|
|
ShmDcCommonData->pGunInfo[plugNum].ParkingStatus = pCsuResult->Data.Data[0];
|
|
|
- log_info("Gun%d Parking STATUS is [%d] SN:[%s]",plugNum,pCsuResult->Data.Data[0],cmd);
|
|
|
+ if (ShmDcCommonData->pGunInfo[plugNum].ParkingStatus == _TCC_PARKING_NONE )
|
|
|
+ ShmDcCommonData->pGunInfo[plugNum].isParking = FALSE;
|
|
|
+ else {
|
|
|
+ ShmDcCommonData->pGunInfo[plugNum].isParking = TRUE;
|
|
|
+ }
|
|
|
+ log_info("Gun%d Parking STATUS is [%d] SN:[%s] isParking:[%s]",plugNum,pCsuResult->Data.Data[0],cmd,(ShmDcCommonData->pGunInfo[plugNum].isParking ? "ON":"OFF"));
|
|
|
if (!ShmDcCommonData->pGunInfo[plugNum].ParkingStatus) {
|
|
|
|
|
|
|
|
@@ -2483,7 +2489,7 @@ static int messageTrigger(int fd, uint8_t plugNum, uint8_t gunID, uint8_t curReg
|
|
|
log_info("Gun %d get final cost %f", plugNum, ShmDcCommonData->TransactionInfo[plugNum].Amount);
|
|
|
if (ShmDcCommonData->is_AutoStart[plugNum] || ShmDcCommonData->is_RemoteStart[plugNum]) {
|
|
|
ShmDcCommonData->PayPass_flag[plugNum] = TRUE;
|
|
|
- if (pSysInfo->CurGunSelected == plugNum && !ShmDcCommonData->pGunInfo[plugNum].isParking)
|
|
|
+ if (pSysInfo->CurGunSelected == plugNum )
|
|
|
pSysInfo->SystemPage = _PAGE_COMPLETE;
|
|
|
} else {
|
|
|
UpdateDeductInfoStatus(plugNum, &ShmDcCommonData->TransactionInfo[plugNum]);
|
|
@@ -2537,14 +2543,15 @@ static int messageTrigger(int fd, uint8_t plugNum, uint8_t gunID, uint8_t curReg
|
|
|
curReg = REG_PARKING_BILL;
|
|
|
break;
|
|
|
case REG_PARKING_BILL:
|
|
|
- if (ShmDcCommonData->pGunInfo[plugNum].ParkingStatus == _TCC_WAIT_PAY && ShmDcCommonData->pGunInfo[plugNum].GetParkingBill == FALSE) {
|
|
|
+ if (ShmDcCommonData->pGunInfo[plugNum].ParkingStatus == _TCC_WAIT_PAY && ShmDcCommonData->pGunInfo[plugNum].GetParkingBill == FALSE &&
|
|
|
+ pSysInfo->SystemPage == _PAGE_PAYING) {
|
|
|
if (DiffTimeb(gRegTimeUp[plugNum][curReg], NowTime) > LOOP_RETRY_TIME ||
|
|
|
DiffTimeb(gRegTimeUp[plugNum][curReg], NowTime) < 0) {
|
|
|
|
|
|
if (readParkingBill(fd, gunID) == PASS)
|
|
|
{
|
|
|
ShmDcCommonData->pGunInfo[plugNum].GetParkingBill = TRUE;
|
|
|
- if (pSysInfo->CurGunSelected == plugNum && pSysInfo->SystemPage == _PAGE_PAYING &&
|
|
|
+ if (pSysInfo->CurGunSelected == plugNum &&
|
|
|
ShmDcCommonData->pGunInfo[plugNum].ReqParkingBill)
|
|
|
pSysInfo->SystemPage = _PAGE_BILL;
|
|
|
}
|
|
@@ -2554,14 +2561,14 @@ static int messageTrigger(int fd, uint8_t plugNum, uint8_t gunID, uint8_t curReg
|
|
|
curReg = REG_QRCODE_URL_INFO;
|
|
|
break;
|
|
|
case REG_QRCODE_URL_INFO:
|
|
|
- if (gunID == 1) {
|
|
|
+
|
|
|
if (DiffTimeb(gRegTimeUp[plugNum][curReg], NowTime) > (LOOP_RETRY_TIME * 10) ||
|
|
|
DiffTimeb(gRegTimeUp[plugNum][curReg], NowTime) < 0
|
|
|
) {
|
|
|
readQRcodeURLAndSystemDate(fd);
|
|
|
ftime(&gRegTimeUp[plugNum][curReg]);
|
|
|
}
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
|
|
|
if (gDoCommGblData.MiscCmd != 0) {
|
|
@@ -3108,7 +3115,8 @@ void CreditCardProcess(int fd,int plugNum,int gunID,bool isPark, RecordTransacti
|
|
|
struct timeb AuthNowTime = {0};
|
|
|
|
|
|
if (isPark) {
|
|
|
- if (pInfo->IsUpload == TRUE || (strcmp((char*)pInfo->pCreditCard.ApprovalNo,"") == 0))
|
|
|
+ if (pInfo->IsUpload == TRUE || (strcmp((char*)pInfo->pCreditCard.ApprovalNo,"") == 0) ||
|
|
|
+ pInfo->DeductResult != _TCC_ONLINEPAY_PASS)
|
|
|
return;
|
|
|
ftime(&AuthNowTime);
|
|
|
if (DiffTimeb(gRegTimeUp[plugNum][REG_DEDUCT_INFO], AuthNowTime) > LOOP_RETRY_TIME * 5 ||
|