|
@@ -71,6 +71,72 @@ void ShowSocketData(struct PACKET_STRUCTURE *packet)
|
|
|
printf("\n");
|
|
|
}
|
|
|
|
|
|
+void CheckEvRxCommMsg(struct PACKET_STRUCTURE *packet)
|
|
|
+{
|
|
|
+ if(ShmChargerInfo->Control.DebugCtrl.bits.MsgEvComm)
|
|
|
+ {
|
|
|
+ int regValCnt = 0, regBitCnt = 0;
|
|
|
+
|
|
|
+ regValCnt = packet->Payload.reg / 32;
|
|
|
+ regBitCnt = packet->Payload.reg % 32;
|
|
|
+
|
|
|
+ if(((ShmChargerInfo->Control.EvCommCtrl.MsgFlag.DebugVal[regValCnt] & (1 << regBitCnt)) || ShmChargerInfo->Control.EvCommCtrl.MsgFlag.bits.Reg_All) &&
|
|
|
+ ((ShmChargerInfo->Control.EvCommCtrl.IdFlag.DebugVal & (1 << packet->Header.id)) || ShmChargerInfo->Control.EvCommCtrl.IdFlag.DebugVal == 0))
|
|
|
+ {
|
|
|
+ int len = 0;
|
|
|
+ char msg[1024];
|
|
|
+
|
|
|
+ sprintf(msg, "Rx: SE: %02X, ID: %02X, OP: %d, Len: %d, Reg: %02X",
|
|
|
+ packet->Header.se, packet->Header.id, packet->Header.op, packet->Header.len, packet->Payload.reg);
|
|
|
+
|
|
|
+ if(packet->Header.len > 1)
|
|
|
+ {
|
|
|
+ len = strlen(msg);
|
|
|
+ sprintf(&msg[len], ", Data:");
|
|
|
+ for(int i = 0; i < packet->Header.len - 1; i++)
|
|
|
+ {
|
|
|
+ len = strlen(msg);
|
|
|
+ sprintf(&msg[len], " %02X", packet->Payload.data[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ EvMsg_INFO("%s", msg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void CheckTvRxCommMsg(struct PACKET_STRUCTURE *packet)
|
|
|
+{
|
|
|
+ if(ShmChargerInfo->Control.DebugCtrl.bits.MsgEvComm)
|
|
|
+ {
|
|
|
+ int regValCnt = 0, regBitCnt = 0;
|
|
|
+
|
|
|
+ regValCnt = packet->Payload.reg / 32;
|
|
|
+ regBitCnt = packet->Payload.reg % 32;
|
|
|
+
|
|
|
+ if(((ShmChargerInfo->Control.EvCommCtrl.MsgFlag.DebugVal[regValCnt] & (1 << regBitCnt)) || ShmChargerInfo->Control.EvCommCtrl.MsgFlag.bits.Reg_All) &&
|
|
|
+ ((ShmChargerInfo->Control.EvCommCtrl.IdFlag.DebugVal & (1 << packet->Header.id)) || ShmChargerInfo->Control.EvCommCtrl.IdFlag.DebugVal == 0))
|
|
|
+ {
|
|
|
+ int len = 0;
|
|
|
+ char msg[1024];
|
|
|
+
|
|
|
+ sprintf(msg, "Tx: SE: %02X, ID: %02X, OP: %d, Len: %d, Reg: %02X",
|
|
|
+ packet->Header.se, packet->Header.id, packet->Header.op, packet->Header.len, packet->Payload.reg);
|
|
|
+
|
|
|
+ if(packet->Header.len > 1)
|
|
|
+ {
|
|
|
+ len = strlen(msg);
|
|
|
+ sprintf(&msg[len], ", Data:");
|
|
|
+ for(int i = 0; i < packet->Header.len - 1; i++)
|
|
|
+ {
|
|
|
+ len = strlen(msg);
|
|
|
+ sprintf(&msg[len], " %02X", packet->Payload.data[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ EvMsg_INFO("%s", msg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
//==========================================
|
|
|
// Init all share memory
|
|
|
//==========================================
|
|
@@ -833,6 +899,8 @@ void SendPacket(int socket, struct PACKET_STRUCTURE *packet)
|
|
|
{
|
|
|
//ShowSocketData(packet);
|
|
|
send(socket, packet, packet->Header.len + 4, 0);
|
|
|
+
|
|
|
+ CheckTvRxCommMsg(packet);
|
|
|
}
|
|
|
|
|
|
void ModelNameResponse(int socket, struct PACKET_STRUCTURE *packet, unsigned char result)
|
|
@@ -1111,9 +1179,10 @@ void ChargingCapabilityResponse(int socket, struct PACKET_STRUCTURE *packet)
|
|
|
struct PACKET_STRUCTURE sendBuffer;
|
|
|
unsigned short voltage = 0, current = 0, power = 0;
|
|
|
unsigned char currency = 0;
|
|
|
- float fPrice = 0, fCost = 0, fBalance = 0, fDiscount = 0;
|
|
|
+ float fPrice = 0, fCost = 0, fBalance = 0, fDiscount = 0, fEnergyCost = 0, fParkingFee = 0;
|
|
|
unsigned int lPrice = 0, lCost = 0, lBalance = 0, lDiscount = 0;
|
|
|
int transaction = 0;
|
|
|
+ int energyCost = 0, parkingFee = 0;
|
|
|
|
|
|
memset(&sendBuffer, 0x00, sizeof(sendBuffer));
|
|
|
voltage = ShmSysConfigAndInfo->SysInfo.ConnectorInfo[packet->Header.id - 1].GeneralChargingData.MaximumChargingVoltage;
|
|
@@ -1132,17 +1201,21 @@ void ChargingCapabilityResponse(int socket, struct PACKET_STRUCTURE *packet)
|
|
|
fBalance = ShmSysConfigAndInfo->SysInfo.ConnectorInfo[packet->Header.id - 1].AccountBalance;
|
|
|
transaction = ShmChargerInfo->UserTransaction[packet->Header.id - 1].TransactionId;
|
|
|
fDiscount = ShmSysConfigAndInfo->SysInfo.ConnectorInfo[packet->Header.id - 1].CostDiscount;
|
|
|
+ fEnergyCost = ShmSysConfigAndInfo->SysInfo.ConnectorInfo[packet->Header.id - 1].EnergyCost;
|
|
|
+ fParkingFee = ShmSysConfigAndInfo->SysInfo.ConnectorInfo[packet->Header.id - 1].ParkingFee;
|
|
|
|
|
|
lPrice = (unsigned int)(fPrice * 100);
|
|
|
lCost = (unsigned int)(fCost * 100);
|
|
|
lBalance = (int)(fBalance * 100);
|
|
|
lDiscount = (int)(fDiscount * 100);
|
|
|
+ energyCost = fEnergyCost >= 0 ? (int)(fEnergyCost * 100) : -1;
|
|
|
+ parkingFee = fParkingFee >= 0 ? (int)(fParkingFee * 100) : -1;
|
|
|
|
|
|
if((ConnectorCapability[packet->Header.id - 1].MaxOuputVoltage / 10) != (voltage / 10) ||
|
|
|
(ConnectorCapability[packet->Header.id - 1].MaxOuputCurrent / 10) != (current / 10) ||
|
|
|
(ConnectorCapability[packet->Header.id - 1].MaxOuputPower / 10) != (power / 10))
|
|
|
{
|
|
|
- LOG_INFO("Connector %d Capability Voltage: %4d.%d V, Current: %3d.%d A, Power: %d kW", packet->Header.id,
|
|
|
+ LOG_INFO("Gun %d Capability Voltage: %4d.%d V, Current: %3d.%d A, Power: %d kW", packet->Header.id,
|
|
|
(voltage / 10), (voltage % 10), (current / 10), (current % 10), (power / 10));
|
|
|
}
|
|
|
|
|
@@ -1155,7 +1228,7 @@ void ChargingCapabilityResponse(int socket, struct PACKET_STRUCTURE *packet)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- LOG_INFO("Connector %d unknown currency: %d", packet->Header.id, (int)(currency));
|
|
|
+ LOG_INFO("Gun %d unknown currency: %d", packet->Header.id, (int)(currency));
|
|
|
memcpy(ConnectorCapability[packet->Header.id - 1].CurrencyString, "???", 3);
|
|
|
}
|
|
|
}
|
|
@@ -1163,16 +1236,18 @@ void ChargingCapabilityResponse(int socket, struct PACKET_STRUCTURE *packet)
|
|
|
if(ConnectorCapability[packet->Header.id - 1].Currency != currency ||
|
|
|
ConnectorCapability[packet->Header.id - 1].UserPrice != lPrice ||
|
|
|
ConnectorCapability[packet->Header.id - 1].TotalCost != lCost ||
|
|
|
- ConnectorCapability[packet->Header.id - 1].TransactionId != transaction)
|
|
|
+ ConnectorCapability[packet->Header.id - 1].TransactionId != transaction ||
|
|
|
+ ConnectorCapability[packet->Header.id - 1].EnergyCost != energyCost ||
|
|
|
+ ConnectorCapability[packet->Header.id - 1].ParkingFee != parkingFee)
|
|
|
{
|
|
|
- LOG_INFO("Connector %d TransactionId: %d UserPrice: %6.2f, Cost: %.2f [%s]",
|
|
|
- packet->Header.id, transaction, fPrice, fCost, ConnectorCapability[packet->Header.id - 1].CurrencyString);
|
|
|
+ LOG_INFO("Gun %d TxId: %d UserPrice: %6.2f, Cost: %.2f, EnergyCost: %.2f, ParkingFee: %.2f [%s]",
|
|
|
+ packet->Header.id, transaction, fPrice, fCost, fEnergyCost, fParkingFee, ConnectorCapability[packet->Header.id - 1].CurrencyString);
|
|
|
}
|
|
|
|
|
|
if(ConnectorCapability[packet->Header.id - 1].AccountBalance != lBalance ||
|
|
|
ConnectorCapability[packet->Header.id - 1].CostDiscount != lDiscount)
|
|
|
{
|
|
|
- LOG_INFO("Connector %d TransactionId: %d Account: %8.2f, Discount: %.2f [%s]",
|
|
|
+ LOG_INFO("Gun %d TxId: %d Account: %8.2f, Discount: %.2f [%s]",
|
|
|
packet->Header.id, transaction, fBalance, fDiscount, ConnectorCapability[packet->Header.id - 1].CurrencyString);
|
|
|
}
|
|
|
|
|
@@ -1185,6 +1260,8 @@ void ChargingCapabilityResponse(int socket, struct PACKET_STRUCTURE *packet)
|
|
|
ConnectorCapability[packet->Header.id - 1].AccountBalance = lBalance;
|
|
|
ConnectorCapability[packet->Header.id - 1].CostDiscount = lDiscount;
|
|
|
ConnectorCapability[packet->Header.id - 1].TransactionId = transaction;
|
|
|
+ ConnectorCapability[packet->Header.id - 1].EnergyCost = energyCost;
|
|
|
+ ConnectorCapability[packet->Header.id - 1].ParkingFee = parkingFee;
|
|
|
|
|
|
ShmSysConfigAndInfo->SysInfo.ConnectorInfo[packet->Header.id - 1].CapabilityVoltage = voltage;
|
|
|
ShmSysConfigAndInfo->SysInfo.ConnectorInfo[packet->Header.id - 1].CapabilityCurrent = current;
|
|
@@ -1193,7 +1270,7 @@ void ChargingCapabilityResponse(int socket, struct PACKET_STRUCTURE *packet)
|
|
|
sendBuffer.Header.se = packet->Header.se;
|
|
|
sendBuffer.Header.id = packet->Header.id;
|
|
|
sendBuffer.Header.op = _Header_Response;
|
|
|
- sendBuffer.Header.len = 29;
|
|
|
+ sendBuffer.Header.len = 37;
|
|
|
sendBuffer.Payload.reg = _Reg_Charging_Capability;
|
|
|
sendBuffer.Payload.data[0] = _R_OK;
|
|
|
sendBuffer.Payload.data[1] = ((voltage >> 8) & 0xFF);
|
|
@@ -1223,6 +1300,14 @@ void ChargingCapabilityResponse(int socket, struct PACKET_STRUCTURE *packet)
|
|
|
sendBuffer.Payload.data[25] = ((transaction >> 16) & 0xFF);
|
|
|
sendBuffer.Payload.data[26] = ((transaction >> 8) & 0xFF);
|
|
|
sendBuffer.Payload.data[27] = (transaction & 0xFF);
|
|
|
+ sendBuffer.Payload.data[28] = ((energyCost >> 24) & 0xFF);
|
|
|
+ sendBuffer.Payload.data[29] = ((energyCost >> 16) & 0xFF);
|
|
|
+ sendBuffer.Payload.data[30] = ((energyCost >> 8) & 0xFF);
|
|
|
+ sendBuffer.Payload.data[31] = (energyCost & 0xFF);
|
|
|
+ sendBuffer.Payload.data[32] = ((parkingFee >> 24) & 0xFF);
|
|
|
+ sendBuffer.Payload.data[33] = ((parkingFee >> 16) & 0xFF);
|
|
|
+ sendBuffer.Payload.data[34] = ((parkingFee >> 8) & 0xFF);
|
|
|
+ sendBuffer.Payload.data[35] = (parkingFee & 0xFF);
|
|
|
|
|
|
SendPacket(socket, &sendBuffer);
|
|
|
}
|
|
@@ -1382,15 +1467,35 @@ void Clean_LcmPage_Req(int gun_index, int lcm_req)
|
|
|
ShmChargerInfo->ConnectorPageReq[gun_index].CtrlValue &= ~lcm_req;
|
|
|
}
|
|
|
|
|
|
+bool Is_DispenserForceChargingTriggerWebApi(int gun_index)
|
|
|
+{
|
|
|
+ int dispenserIndex = ShmSysConfigAndInfo->SysInfo.ConnectorInfo[gun_index].ParentDispensetIndex;
|
|
|
+
|
|
|
+ for(int i = 0; i < ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[dispenserIndex].ConnectorQuantity; i++)
|
|
|
+ {
|
|
|
+ int gun = ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[dispenserIndex].ConnectorID[i] - 1;
|
|
|
+
|
|
|
+ if(ShmChargerInfo->Control.FCharging[gun].FCtrl.bits.EnableForceCharging && ShmChargerInfo->Control.FCharging[gun].FCtrl.bits.WebApiTrigger)
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
+}
|
|
|
+
|
|
|
// LOG_INFO("Cabinet >> Connector %d Availability [SelfTestFail]", packet->Header.id);
|
|
|
// LOG_INFO("Cabinet >> Connector %d Availability [Disable]", packet->Header.id);
|
|
|
// LOG_INFO("Cabinet >> Connector %d Availability [Inoperative]", packet->Header.id);
|
|
|
// LOG_INFO("Cabinet >> Connector %d Availability [Enable]", packet->Header.id);
|
|
|
// LOG_INFO("Cabinet >> Connector %d RemoteStart [%d]", packet->Header.id, misc.Value);
|
|
|
// LOG_INFO("Cabinet >> Connector %d Balance [%d]", packet->Header.id, (misc.Value));
|
|
|
-// LOG_INFO("Cabinet >> Connector %d Reservation [Enable]", packet->Header.id);
|
|
|
-// LOG_INFO("Cabinet >> Connector %d QR Code [Enable]", packet->Header.id);
|
|
|
-// LOG_INFO("Cabinet >> Connector %d Final Cost [Enable]", packet->Header.id);
|
|
|
+// LOG_INFO("Cabinet >> Connector %d Reservation [Trigger]", packet->Header.id);
|
|
|
+// LOG_INFO("Cabinet >> Connector %d QR Code [Trigger]", packet->Header.id);
|
|
|
+// LOG_INFO("Cabinet >> Connector %d Final Cost [Trigger]", packet->Header.id);
|
|
|
+// LOG_INFO("Cabinet >> Connector %d Line Status [%d]", packet->Header.id, misc.Value);
|
|
|
+// LOG_INFO("Cabinet >> Connector %d User Price [Trigger]", packet->Header.id);
|
|
|
+// LOG_INFO("Cabinet >> Connector %d Receipt URL [Trigger]", packet->Header.id);
|
|
|
// LOG_INFO("Cabinet >> Dispenser %d PlugTimeout [%d]", dispenserIndex + 1, misc.Value);
|
|
|
// LOG_INFO("Cabinet >> Dispenser %d DefaultPrice [%d]", dispenserIndex + 1, misc.Value);
|
|
|
// LOG_INFO("Cabinet >> Dispenser %d Currency [%d]", dispenserIndex + 1, misc.Value);
|
|
@@ -1410,10 +1515,11 @@ void Clean_LcmPage_Req(int gun_index, int lcm_req)
|
|
|
// LOG_INFO("Cabinet >> Dispenser %d EVCCID [%s]", dispenserIndex + 1, misc.Value ? "Enable" : "Disable");
|
|
|
// LOG_INFO("Cabinet >> Dispenser %d LEDIntensity [%s]", dispenserIndex + 1, strIntensity[misc.Value]);
|
|
|
// LOG_INFO("Cabinet >> Dispenser %d LEDIntensity [%d]", dispenserIndex + 1, misc.Value);
|
|
|
-// LOG_INFO("Cabinet >> Dispenser %d Station Info [%s]", dispenserIndex + 1, misc.Value ? "Enable" : "Disable");
|
|
|
+// LOG_INFO("Cabinet >> Dispenser %d Station Info [Trigger]", dispenserIndex + 1);
|
|
|
// LOG_INFO("Cabinet >> Dispenser %d Time Offset [%s%02d:%02d]", dispenserIndex + 1, misc.Value >= 0 ? "+" : "-", (abs(misc.Value) / 60), (abs(misc.Value) % 60));
|
|
|
// LOG_INFO("Cabinet >> Dispenser %d Time Offset [+%d]", dispenserIndex + 1, misc.Value);
|
|
|
// LOG_INFO("Cabinet >> Dispenser %d Time Offset [%d]", dispenserIndex + 1, misc.Value);
|
|
|
+// LOG_INFO("Cabinet >> Dispenser %d DefaultPrice [Trigger]", dispenserIndex + 1);
|
|
|
void MiscCmdRes(int socket, struct PACKET_STRUCTURE *packet, unsigned char dispenserIndex, unsigned char result)
|
|
|
{
|
|
|
char *strConnection[] = {STR_CONN_DISABLE, STR_CONN_CONNECTED, STR_CONN_DISCONNECTED};
|
|
@@ -1445,6 +1551,11 @@ void MiscCmdRes(int socket, struct PACKET_STRUCTURE *packet, unsigned char dispe
|
|
|
IsAvailable = false;
|
|
|
LOG_INFO("Cabinet >> Connector %d Availability [SelfTestFail]", packet->Header.id);
|
|
|
}
|
|
|
+ else if(Is_DispenserForceChargingTriggerWebApi(packet->Header.id - 1))
|
|
|
+ {
|
|
|
+ IsAvailable = false;
|
|
|
+ LOG_INFO("Cabinet >> Connector %d Availability [Disable][ForceCharging]", packet->Header.id);
|
|
|
+ }
|
|
|
else if(!ShmChargerInfo->Control.GunAvailable[packet->Header.id - 1])
|
|
|
{
|
|
|
IsAvailable = false;
|
|
@@ -1512,7 +1623,7 @@ void MiscCmdRes(int socket, struct PACKET_STRUCTURE *packet, unsigned char dispe
|
|
|
misc.Command = _MiscCmd_Reservation;
|
|
|
misc.Value = true;
|
|
|
|
|
|
- LOG_INFO("Cabinet >> Connector %d Reservation [Enable]", packet->Header.id);
|
|
|
+ LOG_INFO("Cabinet >> Connector %d Reservation [Trigger]", packet->Header.id);
|
|
|
AddMiscCommand(&sendBuffer, &misc);
|
|
|
}
|
|
|
|
|
@@ -1522,7 +1633,7 @@ void MiscCmdRes(int socket, struct PACKET_STRUCTURE *packet, unsigned char dispe
|
|
|
misc.Command = _MiscCmd_QRCodeRequest;
|
|
|
misc.Value = true;
|
|
|
|
|
|
- LOG_INFO("Cabinet >> Connector %d QR Code [Enable]", packet->Header.id);
|
|
|
+ LOG_INFO("Cabinet >> Connector %d QR Code [Trigger]", packet->Header.id);
|
|
|
AddMiscCommand(&sendBuffer, &misc);
|
|
|
}
|
|
|
|
|
@@ -1532,7 +1643,7 @@ void MiscCmdRes(int socket, struct PACKET_STRUCTURE *packet, unsigned char dispe
|
|
|
misc.Command = _MiscCmd_FinalCost;
|
|
|
misc.Value = true;
|
|
|
|
|
|
- LOG_INFO("Cabinet >> Connector %d Final Cost [Enable]", packet->Header.id);
|
|
|
+ LOG_INFO("Cabinet >> Connector %d Final Cost [Trigger]", packet->Header.id);
|
|
|
AddMiscCommand(&sendBuffer, &misc);
|
|
|
}
|
|
|
|
|
@@ -1546,6 +1657,26 @@ void MiscCmdRes(int socket, struct PACKET_STRUCTURE *packet, unsigned char dispe
|
|
|
AddMiscCommand(&sendBuffer, &misc);
|
|
|
}
|
|
|
|
|
|
+ if(Is_Connector_MiscCommand(packet->Header.id - 1, MISC_CONN_USER_PRICE_STRING))
|
|
|
+ {
|
|
|
+ Clean_Connector_MiscCommand(packet->Header.id - 1, MISC_CONN_USER_PRICE_STRING);
|
|
|
+ misc.Command = _MiscCmd_UserPriceString;
|
|
|
+ misc.Value = true;
|
|
|
+
|
|
|
+ LOG_INFO("Cabinet >> Connector %d User Price [Trigger]", packet->Header.id);
|
|
|
+ AddMiscCommand(&sendBuffer, &misc);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(Is_Connector_MiscCommand(packet->Header.id - 1, MISC_CONN_RECEIPT))
|
|
|
+ {
|
|
|
+ Clean_Connector_MiscCommand(packet->Header.id - 1, MISC_CONN_RECEIPT);
|
|
|
+ misc.Command = _MiscCmd_Receipt;
|
|
|
+ misc.Value = true;
|
|
|
+
|
|
|
+ LOG_INFO("Cabinet >> Connector %d Receipt URL [Trigger]", packet->Header.id);
|
|
|
+ AddMiscCommand(&sendBuffer, &misc);
|
|
|
+ }
|
|
|
+
|
|
|
// announce misc command to first connector of the dispenser
|
|
|
if(ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[dispenserIndex].ConnectorID[0] == packet->Header.id)
|
|
|
{
|
|
@@ -1705,7 +1836,7 @@ void MiscCmdRes(int socket, struct PACKET_STRUCTURE *packet, unsigned char dispe
|
|
|
misc.Command = _MiscCmd_EVCCIDEnable;
|
|
|
|
|
|
if(ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[dispenserIndex].ModelName[0] == 'D' &&
|
|
|
- ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[dispenserIndex].ModelName[0] == 'X')
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[dispenserIndex].ModelName[1] == 'X')
|
|
|
{
|
|
|
misc.Value = ShmChargerInfo->CabinetMiscValue.AuthModeConfig > 0 ? 0 : 1;
|
|
|
}
|
|
@@ -1741,7 +1872,7 @@ void MiscCmdRes(int socket, struct PACKET_STRUCTURE *packet, unsigned char dispe
|
|
|
misc.Command = _MiscCmd_StationInfo;
|
|
|
misc.Value = true;
|
|
|
|
|
|
- LOG_INFO("Cabinet >> Dispenser %d Station Info [%s]", dispenserIndex + 1, misc.Value ? "Enable" : "Disable");
|
|
|
+ LOG_INFO("Cabinet >> Dispenser %d Station Info [Trigger]", dispenserIndex + 1);
|
|
|
AddMiscCommand(&sendBuffer, &misc);
|
|
|
}
|
|
|
|
|
@@ -1755,6 +1886,16 @@ void MiscCmdRes(int socket, struct PACKET_STRUCTURE *packet, unsigned char dispe
|
|
|
dispenserIndex + 1, misc.Value >= 0 ? "+" : "-", (abs(misc.Value) / 60), (abs(misc.Value) % 60));
|
|
|
AddMiscCommand(&sendBuffer, &misc);
|
|
|
}
|
|
|
+
|
|
|
+ if(Is_Dispenser_MiscCommand(dispenserIndex, MISC_DISP_DEFAULT_PRICE_STRING))
|
|
|
+ {
|
|
|
+ Clean_Dispenser_MiscCommand(dispenserIndex, MISC_DISP_DEFAULT_PRICE_STRING);
|
|
|
+ misc.Command = _MiscCmd_DefaultPriceString;
|
|
|
+ misc.Value = true;
|
|
|
+
|
|
|
+ LOG_INFO("Cabinet >> Dispenser %d DefaultPrice [Trigger]", dispenserIndex + 1);
|
|
|
+ AddMiscCommand(&sendBuffer, &misc);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if(Is_Dispenser_MiscCommand(dispenserIndex, MISC_DISP_CHANGE_LCM_INFO))
|
|
@@ -1870,7 +2011,8 @@ int GetChargerSystemId(char *id)
|
|
|
|
|
|
case _QR_MODE_Default:
|
|
|
default:
|
|
|
- strcat((char *)id, (char *)ShmSysConfigAndInfo->SysConfig.SystemId);
|
|
|
+ strcat((char *)id, (char *)ShmSysConfigAndInfo->SysConfig.ModelName);
|
|
|
+ strcat((char *)id, (char *)ShmSysConfigAndInfo->SysConfig.SerialNumber);
|
|
|
break;
|
|
|
}
|
|
|
|
|
@@ -1879,7 +2021,7 @@ int GetChargerSystemId(char *id)
|
|
|
return len;
|
|
|
}
|
|
|
|
|
|
-void ChargerSystemIdResponse(int socket, struct PACKET_STRUCTURE *packet, unsigned char dispenserIndex, unsigned char result)
|
|
|
+void ChargerQrCodeDateResponse(int socket, struct PACKET_STRUCTURE *packet, unsigned char dispenserIndex, unsigned char result)
|
|
|
{
|
|
|
struct PACKET_STRUCTURE sendBuffer;
|
|
|
char system_id[128];
|
|
@@ -1889,7 +2031,7 @@ void ChargerSystemIdResponse(int socket, struct PACKET_STRUCTURE *packet, unsign
|
|
|
sendBuffer.Header.id = packet->Header.id;
|
|
|
sendBuffer.Header.op = _Header_Response;
|
|
|
sendBuffer.Header.len = 2;
|
|
|
- sendBuffer.Payload.reg = _Reg_Charger_System_Id;
|
|
|
+ sendBuffer.Payload.reg = _Reg_QR_Code_Date;
|
|
|
sendBuffer.Payload.data[0] = result;
|
|
|
if(result == _R_OK)
|
|
|
{
|
|
@@ -2291,6 +2433,108 @@ void DeductResultResponse(int socket, struct PACKET_STRUCTURE *packet, unsigned
|
|
|
SendPacket(socket, &sendBuffer);
|
|
|
}
|
|
|
|
|
|
+void CabinetSystemIDResponse(int socket, struct PACKET_STRUCTURE *packet, unsigned char result)
|
|
|
+{
|
|
|
+ struct PACKET_STRUCTURE sendBuffer;
|
|
|
+
|
|
|
+ memset(&sendBuffer, 0x00, sizeof(sendBuffer));
|
|
|
+ sendBuffer.Header.se = packet->Header.se;
|
|
|
+ sendBuffer.Header.id = packet->Header.id;
|
|
|
+ sendBuffer.Header.op = _Header_Response;
|
|
|
+ sendBuffer.Header.len = 2;
|
|
|
+ sendBuffer.Payload.reg = _Reg_CabinetSystemID;
|
|
|
+ sendBuffer.Payload.data[0] = result;
|
|
|
+ if(result == _R_OK)
|
|
|
+ {
|
|
|
+ strcpy((char *)&sendBuffer.Payload.data[1], (char *)ShmSysConfigAndInfo->SysConfig.SystemId);
|
|
|
+ sendBuffer.Header.len += strlen((char *)ShmSysConfigAndInfo->SysConfig.SystemId);
|
|
|
+ }
|
|
|
+ SendPacket(socket, &sendBuffer);
|
|
|
+}
|
|
|
+
|
|
|
+void DefaultPriceStringResponse(int socket, struct PACKET_STRUCTURE *packet, unsigned char result)
|
|
|
+{
|
|
|
+ struct PACKET_STRUCTURE sendBuffer;
|
|
|
+
|
|
|
+ memset(&sendBuffer, 0x00, sizeof(sendBuffer));
|
|
|
+ sendBuffer.Header.se = packet->Header.se;
|
|
|
+ sendBuffer.Header.id = packet->Header.id;
|
|
|
+ sendBuffer.Header.op = _Header_Response;
|
|
|
+ sendBuffer.Header.len = 2;
|
|
|
+ sendBuffer.Payload.reg = _Reg_DefaultPriceString;
|
|
|
+ sendBuffer.Payload.data[0] = result;
|
|
|
+ if(result == _R_OK)
|
|
|
+ {
|
|
|
+ strcpy((char *)&sendBuffer.Payload.data[1], &ShmChargerInfo->PriceAndReceiptInfo.DefaultPriceString[0]);
|
|
|
+ sendBuffer.Header.len += strlen(&ShmChargerInfo->PriceAndReceiptInfo.DefaultPriceString[0]);
|
|
|
+ }
|
|
|
+ SendPacket(socket, &sendBuffer);
|
|
|
+}
|
|
|
+
|
|
|
+void UserPriceStringResponse(int socket, struct PACKET_STRUCTURE *packet, unsigned char result)
|
|
|
+{
|
|
|
+ struct PACKET_STRUCTURE sendBuffer;
|
|
|
+
|
|
|
+ memset(&sendBuffer, 0x00, sizeof(sendBuffer));
|
|
|
+ sendBuffer.Header.se = packet->Header.se;
|
|
|
+ sendBuffer.Header.id = packet->Header.id;
|
|
|
+ sendBuffer.Header.op = _Header_Response;
|
|
|
+ sendBuffer.Header.len = 2;
|
|
|
+ sendBuffer.Payload.reg = _Reg_UserPriceString;
|
|
|
+ sendBuffer.Payload.data[0] = result;
|
|
|
+ if(result == _R_OK)
|
|
|
+ {
|
|
|
+ strcpy((char *)&sendBuffer.Payload.data[1], &ShmChargerInfo->PriceAndReceiptInfo.UserPriceString[packet->Header.id - 1][0]);
|
|
|
+ sendBuffer.Header.len += strlen(&ShmChargerInfo->PriceAndReceiptInfo.UserPriceString[packet->Header.id - 1][0]);
|
|
|
+ }
|
|
|
+ SendPacket(socket, &sendBuffer);
|
|
|
+}
|
|
|
+
|
|
|
+void ReceiptResponse(int socket, struct PACKET_STRUCTURE *packet, unsigned char result)
|
|
|
+{
|
|
|
+ struct PACKET_STRUCTURE sendBuffer;
|
|
|
+
|
|
|
+ memset(&sendBuffer, 0x00, sizeof(sendBuffer));
|
|
|
+ sendBuffer.Header.se = packet->Header.se;
|
|
|
+ sendBuffer.Header.id = packet->Header.id;
|
|
|
+ sendBuffer.Header.op = _Header_Response;
|
|
|
+ sendBuffer.Header.len = 2;
|
|
|
+ sendBuffer.Payload.reg = _Reg_Receipt;
|
|
|
+ sendBuffer.Payload.data[0] = result;
|
|
|
+ if(result == _R_OK)
|
|
|
+ {
|
|
|
+ strcpy((char *)&sendBuffer.Payload.data[1], &ShmChargerInfo->PriceAndReceiptInfo.ReceiptUrl[packet->Header.id - 1][0]);
|
|
|
+ sendBuffer.Header.len += strlen(&ShmChargerInfo->PriceAndReceiptInfo.ReceiptUrl[packet->Header.id - 1][0]);
|
|
|
+ }
|
|
|
+ SendPacket(socket, &sendBuffer);
|
|
|
+}
|
|
|
+
|
|
|
+void PowerConsumptionResponse(int socket, struct PACKET_STRUCTURE *packet, unsigned char result)
|
|
|
+{
|
|
|
+ struct PACKET_STRUCTURE sendBuffer;
|
|
|
+
|
|
|
+ memset(&sendBuffer, 0x00, sizeof(sendBuffer));
|
|
|
+ sendBuffer.Header.se = packet->Header.se;
|
|
|
+ sendBuffer.Header.id = packet->Header.id;
|
|
|
+ sendBuffer.Header.op = _Header_Response;
|
|
|
+ sendBuffer.Header.len = 2;
|
|
|
+ sendBuffer.Payload.reg = _Reg_PowerConsumption;
|
|
|
+ sendBuffer.Payload.data[0] = result;
|
|
|
+ if(result == _R_OK)
|
|
|
+ {
|
|
|
+ for(int i = 0; i < GENERAL_GUN_QUANTITY; i++)
|
|
|
+ {
|
|
|
+ char *ptr = (char *)&chargingInfo[i]->PowerConsumption;
|
|
|
+ sendBuffer.Payload.data[1 + (i * 4) + 0] = *(ptr + 3);
|
|
|
+ sendBuffer.Payload.data[1 + (i * 4) + 1] = *(ptr + 2);
|
|
|
+ sendBuffer.Payload.data[1 + (i * 4) + 2] = *(ptr + 1);
|
|
|
+ sendBuffer.Payload.data[1 + (i * 4) + 3] = *ptr;
|
|
|
+ sendBuffer.Header.len += 4;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ SendPacket(socket, &sendBuffer);
|
|
|
+}
|
|
|
+
|
|
|
BOOL FindConnectorID(unsigned char dispenserIndex, unsigned char id)
|
|
|
{
|
|
|
BOOL find = false;
|
|
@@ -2316,9 +2560,13 @@ void ConnectorPhysicalLimitBindingHandler(unsigned char connectorIndex, unsigned
|
|
|
switch(physical)
|
|
|
{
|
|
|
case 'J':
|
|
|
+ ShmSysConfigAndInfo->SysInfo.ConnectorInfo[connectorIndex].RemoteMaxPhysicalVoltage = CHA_MAX_PHYSICAL_VOLTAGE;
|
|
|
+ ShmSysConfigAndInfo->SysInfo.ConnectorInfo[connectorIndex].RemoteMaxPhysicalCurrent = CHA_NATURAL_J_MAX_CURRENT;
|
|
|
+ break;
|
|
|
+
|
|
|
case 'K':
|
|
|
ShmSysConfigAndInfo->SysInfo.ConnectorInfo[connectorIndex].RemoteMaxPhysicalVoltage = CHA_MAX_PHYSICAL_VOLTAGE;
|
|
|
- ShmSysConfigAndInfo->SysInfo.ConnectorInfo[connectorIndex].RemoteMaxPhysicalCurrent = CHA_NATURAL_MAX_CURRENT;
|
|
|
+ ShmSysConfigAndInfo->SysInfo.ConnectorInfo[connectorIndex].RemoteMaxPhysicalCurrent = CHA_NATURAL_K_MAX_CURRENT;
|
|
|
break;
|
|
|
|
|
|
case 'U':
|
|
@@ -2470,7 +2718,7 @@ BOOL CheckNewDispenserSequence(unsigned char index, unsigned char quantity)
|
|
|
ShmSysConfigAndInfo->SysConfig.WiringInfo.DispenserSequence = index + 1;
|
|
|
ShmSysConfigAndInfo->SysConfig.WiringInfo.MaxConnectorQuantity += quantity;
|
|
|
ShmSysConfigAndInfo->SysConfig.WiringInfo.WiringSetting[index] = quantity;
|
|
|
- ShmSysConfigAndInfo->SysInfo.CabinetSetting.bits.FlashConfigChanged = true;
|
|
|
+ ShmChargerInfo->Control.SysCtrl.bits.WriteFlashEnable = true;
|
|
|
|
|
|
ShmSysConfigAndInfo->SysInfo.DispenserInfo.DispenserQuantity = ShmSysConfigAndInfo->SysConfig.WiringInfo.DispenserSequence;
|
|
|
ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity = ShmSysConfigAndInfo->SysConfig.WiringInfo.MaxConnectorQuantity;
|
|
@@ -2796,6 +3044,14 @@ BOOL ConnectorStateHandler(struct PACKET_STRUCTURE *packet, unsigned char dispen
|
|
|
ShmSysConfigAndInfo->SysInfo.ConnectorInfo[packet->Header.id - 1].Parameter.bits.NormalStopRequest = true;
|
|
|
}
|
|
|
}
|
|
|
+ if(ConnectionState == _CRS_Terminating && ShmSysConfigAndInfo->SysInfo.ConnectorInfo[packet->Header.id - 1].RemoteStatus == _CRS_Idle)
|
|
|
+ {
|
|
|
+ if(chargingInfo[packet->Header.id - 1]->SystemStatus == S_RESERVATION)
|
|
|
+ {
|
|
|
+ chargingInfo[packet->Header.id - 1]->ReservationId = -1;
|
|
|
+ LOG_INFO("*********** Connector id %d Clean ReservationId ***********\n", packet->Header.id);
|
|
|
+ }
|
|
|
+ }
|
|
|
break;
|
|
|
|
|
|
case _CRS_Alarm:
|
|
@@ -2833,7 +3089,7 @@ BOOL ConnectorStateHandler(struct PACKET_STRUCTURE *packet, unsigned char dispen
|
|
|
|
|
|
bool IsEnableForceCharging(byte dispenserIndex, byte connectorId)
|
|
|
{
|
|
|
- if(connectorId != AUTO_GUN_SELECTION)
|
|
|
+ if(connectorId != AUTO_GUN_SELECTION_ID)
|
|
|
{
|
|
|
return ShmChargerInfo->Control.FCharging[connectorId - 1].FCtrl.bits.EnableForceCharging ? true : false;
|
|
|
}
|
|
@@ -2866,8 +3122,19 @@ unsigned char UserIDHandler(struct PACKET_STRUCTURE *packet, unsigned char dispe
|
|
|
AuthorizingInfoData *AuthInfo;
|
|
|
AuthorizingInfoData *preAuthInfo;
|
|
|
int length = 0;
|
|
|
-
|
|
|
- if(find || packet->Header.id == AUTO_GUN_SELECTION)
|
|
|
+ int cardNumberLength = 0;
|
|
|
+ unsigned char idType = _Type_ISO14443;
|
|
|
+ char *str_IdType[] = {
|
|
|
+ STR_ID_TYPE_CENTRAL,
|
|
|
+ STR_ID_TYPE_EMAID,
|
|
|
+ STR_ID_TYPE_ISO14443,
|
|
|
+ STR_ID_TYPE_ISO15693,
|
|
|
+ STR_ID_TYPE_KEYCODE,
|
|
|
+ STR_ID_TYPE_LOCAL,
|
|
|
+ STR_ID_TYPE_MAC_ADDRESS,
|
|
|
+ STR_ID_TYPE_NO_AUTHORIZATION};
|
|
|
+
|
|
|
+ if(find || packet->Header.id == AUTO_GUN_SELECTION_ID)
|
|
|
{
|
|
|
if(IsEnableForceCharging(dispenserIndex, packet->Header.id))
|
|
|
{
|
|
@@ -2877,8 +3144,18 @@ unsigned char UserIDHandler(struct PACKET_STRUCTURE *packet, unsigned char dispe
|
|
|
length = packet->Header.len - 1;
|
|
|
memset(CardNumber, 0x00, sizeof(CardNumber));
|
|
|
memcpy(CardNumber, packet->Payload.data, length);
|
|
|
+ cardNumberLength = strlen((char *)&CardNumber);
|
|
|
+
|
|
|
+ if(length - cardNumberLength >= 2)
|
|
|
+ {
|
|
|
+ idType = packet->Payload.data[cardNumberLength + 1];
|
|
|
+ if(idType > _Type_NoAuthorization)
|
|
|
+ {
|
|
|
+ idType = _Type_ISO14443;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- if(packet->Header.id != AUTO_GUN_SELECTION)
|
|
|
+ if(packet->Header.id != AUTO_GUN_SELECTION_ID)
|
|
|
{
|
|
|
//result = &ShmSysConfigAndInfo->SysInfo.ConnectorInfo[packet->Header.id - 1].AuthorizingResult;
|
|
|
AuthInfo = &ShmSysConfigAndInfo->SysInfo.ConnectorInfo[packet->Header.id - 1].AuthInfo;
|
|
@@ -2913,17 +3190,20 @@ unsigned char UserIDHandler(struct PACKET_STRUCTURE *packet, unsigned char dispe
|
|
|
{
|
|
|
if(AuthInfo->AuthStatus == _AuthorizeStatus_Idle && AuthInfo->AuthRequest == NO)
|
|
|
{
|
|
|
- memcpy(AuthInfo->AuthId, CardNumber, sizeof(CardNumber));
|
|
|
+ strcpy((char *)&AuthInfo->AuthId, (char *)&CardNumber);
|
|
|
AuthInfo->AuthTarget = packet->Header.id;
|
|
|
AuthInfo->AuthRequest = YES;
|
|
|
+ AuthInfo->AuthIdType = idType;
|
|
|
|
|
|
- if(AuthInfo->AuthTarget != AUTO_GUN_SELECTION)
|
|
|
+ if(AuthInfo->AuthTarget != AUTO_GUN_SELECTION_ID)
|
|
|
{
|
|
|
- LOG_INFO("Gun %d user id [%s] need authorize", packet->Header.id, CardNumber);
|
|
|
+ LOG_INFO("Gun %d user id [%s] type [%s] need authorize",
|
|
|
+ packet->Header.id, CardNumber, str_IdType[idType]);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- LOG_INFO("Dispenser %d user id [%s] need authorize", dispenserIndex + 1, CardNumber);
|
|
|
+ LOG_INFO("Dispenser %d user id [%s] type [%s] need authorize",
|
|
|
+ dispenserIndex + 1, CardNumber, str_IdType[idType]);
|
|
|
}
|
|
|
authorize = _DAS_Wait;
|
|
|
}
|
|
@@ -3235,7 +3515,7 @@ unsigned char DispenserWriteChargingInfoHandler(struct PACKET_STRUCTURE *packet,
|
|
|
return find;
|
|
|
}
|
|
|
|
|
|
-unsigned char ReadChargerSystemIdHandler(struct PACKET_STRUCTURE *packet, unsigned char dispenserIndex)
|
|
|
+unsigned char ReadQrCodeAndDateHandler(struct PACKET_STRUCTURE *packet, unsigned char dispenserIndex)
|
|
|
{
|
|
|
BOOL find = TRUE;
|
|
|
|
|
@@ -3507,7 +3787,7 @@ unsigned char GetStationInfoHandler(struct PACKET_STRUCTURE *packet, int dispens
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if(packet->Header.id == 0xFF)
|
|
|
+ if(packet->Header.id == AUTO_GUN_SELECTION_ID)
|
|
|
{
|
|
|
find = true;
|
|
|
}
|
|
@@ -3533,11 +3813,11 @@ unsigned char WriteDeductResultHandler(struct PACKET_STRUCTURE *packet, int disp
|
|
|
memset(vemData, 0x00, sizeof(vemData));
|
|
|
memset(cardNo, 0x00, sizeof(cardNo));
|
|
|
|
|
|
- if(find || packet->Header.id == 0xFF)
|
|
|
+ if(find || packet->Header.id == AUTO_GUN_SELECTION_ID)
|
|
|
{
|
|
|
memset(&deduct, 0x00, sizeof(DeductResultInfoData));
|
|
|
|
|
|
- deduct.ConnectorId = packet->Header.id != 0xFF ?
|
|
|
+ deduct.ConnectorId = packet->Header.id != AUTO_GUN_SELECTION_ID ?
|
|
|
packet->Header.id : ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[dispenserIndex].ConnectorID[0];
|
|
|
gun = packet->Header.id - 1;
|
|
|
deduct.DeductResult = packet->Payload.data[0];
|
|
@@ -3566,7 +3846,7 @@ unsigned char WriteDeductResultHandler(struct PACKET_STRUCTURE *packet, int disp
|
|
|
|
|
|
if(deduct.DeductResult == _Deduct_Fail || deduct.DeductResult == _Deduct_Pass)
|
|
|
{
|
|
|
- if(packet->Header.id != 0xFF)
|
|
|
+ if(packet->Header.id != AUTO_GUN_SELECTION_ID)
|
|
|
{
|
|
|
if(deduct.TransactionId == ShmChargerInfo->DeductResultReq[gun].TransactionId)
|
|
|
{
|
|
@@ -3599,7 +3879,7 @@ unsigned char WriteDeductResultHandler(struct PACKET_STRUCTURE *packet, int disp
|
|
|
done = true;
|
|
|
}
|
|
|
LOG_INFO("Gun %d%s ReDeduct %s",
|
|
|
- gun + 1, packet->Header.id != 0xFF ? "" : "(Default)", done ? "Done" : "Wait");
|
|
|
+ gun + 1, packet->Header.id != AUTO_GUN_SELECTION_ID ? "" : "(Default)", done ? "Done" : "Wait");
|
|
|
LOG_INFO("Gun %d ReDeduct TxId: [%d], Card: [%s], [%s], Amount: [%d.%02d], Donate: [%s], ApprovalNo: [%s], VemData: [%s]",
|
|
|
gun + 1,
|
|
|
deduct.TransactionId,
|
|
@@ -3614,7 +3894,7 @@ unsigned char WriteDeductResultHandler(struct PACKET_STRUCTURE *packet, int disp
|
|
|
}
|
|
|
else if(deduct.DeductResult == _Deduct_Cancel || deduct.DeductResult == _Deduct_PreAuth)
|
|
|
{
|
|
|
- if(packet->Header.id != 0xFF)
|
|
|
+ if(packet->Header.id != AUTO_GUN_SELECTION_ID)
|
|
|
{
|
|
|
if(!ShmChargerInfo->ReaderStatus[gun].ReaderStatusReq)
|
|
|
{
|
|
@@ -3645,6 +3925,66 @@ unsigned char WriteDeductResultHandler(struct PACKET_STRUCTURE *packet, int disp
|
|
|
return find;
|
|
|
}
|
|
|
|
|
|
+unsigned char ReadCabinetSystemIDHandler(struct PACKET_STRUCTURE *packet, int dispenserIndex)
|
|
|
+{
|
|
|
+ BOOL find = FindConnectorID(dispenserIndex, packet->Header.id);
|
|
|
+
|
|
|
+ if(packet->Header.id == AUTO_GUN_SELECTION_ID)
|
|
|
+ {
|
|
|
+ find = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ return find;
|
|
|
+}
|
|
|
+
|
|
|
+unsigned char ReadDefaultPriceStringHandler(struct PACKET_STRUCTURE *packet, int dispenserIndex)
|
|
|
+{
|
|
|
+ BOOL find = FindConnectorID(dispenserIndex, packet->Header.id);
|
|
|
+
|
|
|
+ if(packet->Header.id == AUTO_GUN_SELECTION_ID)
|
|
|
+ {
|
|
|
+ find = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ return find;
|
|
|
+}
|
|
|
+
|
|
|
+unsigned char ReadUserPriceStringHandler(struct PACKET_STRUCTURE *packet, int dispenserIndex)
|
|
|
+{
|
|
|
+ BOOL find = FindConnectorID(dispenserIndex, packet->Header.id);
|
|
|
+
|
|
|
+ if(find)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return find;
|
|
|
+}
|
|
|
+
|
|
|
+unsigned char ReadReceiptHandler(struct PACKET_STRUCTURE *packet, int dispenserIndex)
|
|
|
+{
|
|
|
+ BOOL find = FindConnectorID(dispenserIndex, packet->Header.id);
|
|
|
+
|
|
|
+ if(find)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return find;
|
|
|
+}
|
|
|
+
|
|
|
+unsigned char ReadPowerConsumptionHandler(struct PACKET_STRUCTURE *packet, int dispenserIndex)
|
|
|
+{
|
|
|
+ BOOL find = FindConnectorID(dispenserIndex, packet->Header.id);
|
|
|
+
|
|
|
+ if(packet->Header.id == AUTO_GUN_SELECTION_ID)
|
|
|
+ {
|
|
|
+ find = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ return find;
|
|
|
+}
|
|
|
+
|
|
|
void DisableConnector(unsigned char dispenserIndex)
|
|
|
{
|
|
|
for(int i = 0; i < ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[dispenserIndex].ConnectorQuantity; i++)
|
|
@@ -3674,6 +4014,7 @@ void DispenserSocketProcess(int socketFd, struct sockaddr_in clientInfo, unsigne
|
|
|
{
|
|
|
ackResult = _R_NG;
|
|
|
//ShowSocketData(&receiveBuffer);
|
|
|
+ CheckEvRxCommMsg(&receiveBuffer);
|
|
|
|
|
|
if(ShmSysConfigAndInfo->SysInfo.DispenserInfo.ConnectionInfo[index].Status == _CNS_WaitModelName)
|
|
|
{
|
|
@@ -3772,6 +4113,11 @@ void DispenserSocketProcess(int socketFd, struct sockaddr_in clientInfo, unsigne
|
|
|
Set_Dispenser_MiscCommand(dispenserIndex, MISC_DISP_STATION_INFO);
|
|
|
}
|
|
|
|
|
|
+ if(strlen(ShmChargerInfo->PriceAndReceiptInfo.DefaultPriceString) > 0)
|
|
|
+ {
|
|
|
+ Set_Dispenser_MiscCommand(dispenserIndex, MISC_DISP_DEFAULT_PRICE_STRING);
|
|
|
+ }
|
|
|
+
|
|
|
for(int i = 0; i < ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[dispenserIndex].ConnectorQuantity; i++)
|
|
|
{
|
|
|
unsigned char gun = ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[dispenserIndex].ConnectorID[i] - 1;
|
|
@@ -3906,14 +4252,14 @@ void DispenserSocketProcess(int socketFd, struct sockaddr_in clientInfo, unsigne
|
|
|
WriteChargingInfoResponse(socketFd, &receiveBuffer, ackResult);
|
|
|
}
|
|
|
|
|
|
- // Reg: 0x10, Charger system id
|
|
|
- if(receiveBuffer.Header.op == _Header_Read && receiveBuffer.Payload.reg == _Reg_Charger_System_Id)
|
|
|
+ // Reg: 0x10, QR Code And Date
|
|
|
+ if(receiveBuffer.Header.op == _Header_Read && receiveBuffer.Payload.reg == _Reg_QR_Code_Date)
|
|
|
{
|
|
|
- if(ReadChargerSystemIdHandler(&receiveBuffer, dispenserIndex))
|
|
|
+ if(ReadQrCodeAndDateHandler(&receiveBuffer, dispenserIndex))
|
|
|
{
|
|
|
ackResult = _R_OK;
|
|
|
}
|
|
|
- ChargerSystemIdResponse(socketFd, &receiveBuffer, dispenserIndex, ackResult);
|
|
|
+ ChargerQrCodeDateResponse(socketFd, &receiveBuffer, dispenserIndex, ackResult);
|
|
|
}
|
|
|
|
|
|
// Reg: 0x11, Wait plug in
|
|
@@ -4068,6 +4414,56 @@ void DispenserSocketProcess(int socketFd, struct sockaddr_in clientInfo, unsigne
|
|
|
}
|
|
|
DeductResultResponse(socketFd, &receiveBuffer, ackResult);
|
|
|
}
|
|
|
+
|
|
|
+ // Reg: 0x20, Read Cabinet System ID
|
|
|
+ if(receiveBuffer.Header.op == _Header_Read && receiveBuffer.Payload.reg == _Reg_CabinetSystemID)
|
|
|
+ {
|
|
|
+ if(ReadCabinetSystemIDHandler(&receiveBuffer, dispenserIndex))
|
|
|
+ {
|
|
|
+ ackResult = _R_OK;
|
|
|
+ }
|
|
|
+ CabinetSystemIDResponse(socketFd, &receiveBuffer, ackResult);
|
|
|
+ }
|
|
|
+
|
|
|
+ // Reg: 0x21, Read Default Price String
|
|
|
+ if(receiveBuffer.Header.op == _Header_Read && receiveBuffer.Payload.reg == _Reg_DefaultPriceString)
|
|
|
+ {
|
|
|
+ if(ReadDefaultPriceStringHandler(&receiveBuffer, dispenserIndex))
|
|
|
+ {
|
|
|
+ ackResult = _R_OK;
|
|
|
+ }
|
|
|
+ DefaultPriceStringResponse(socketFd, &receiveBuffer, ackResult);
|
|
|
+ }
|
|
|
+
|
|
|
+ // Reg: 0x22, Read User Price String
|
|
|
+ if(receiveBuffer.Header.op == _Header_Read && receiveBuffer.Payload.reg == _Reg_UserPriceString)
|
|
|
+ {
|
|
|
+ if(ReadUserPriceStringHandler(&receiveBuffer, dispenserIndex))
|
|
|
+ {
|
|
|
+ ackResult = _R_OK;
|
|
|
+ }
|
|
|
+ UserPriceStringResponse(socketFd, &receiveBuffer, ackResult);
|
|
|
+ }
|
|
|
+
|
|
|
+ // Reg: 0x23, Read Receipt
|
|
|
+ if(receiveBuffer.Header.op == _Header_Read && receiveBuffer.Payload.reg == _Reg_Receipt)
|
|
|
+ {
|
|
|
+ if(ReadReceiptHandler(&receiveBuffer, dispenserIndex))
|
|
|
+ {
|
|
|
+ ackResult = _R_OK;
|
|
|
+ }
|
|
|
+ ReceiptResponse(socketFd, &receiveBuffer, ackResult);
|
|
|
+ }
|
|
|
+
|
|
|
+ // Reg: 0x24, Read Power Consumption
|
|
|
+ if(receiveBuffer.Header.op == _Header_Read && receiveBuffer.Payload.reg == _Reg_PowerConsumption)
|
|
|
+ {
|
|
|
+ if(ReadPowerConsumptionHandler(&receiveBuffer, dispenserIndex))
|
|
|
+ {
|
|
|
+ ackResult = _R_OK;
|
|
|
+ }
|
|
|
+ PowerConsumptionResponse(socketFd, &receiveBuffer, ackResult);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// clean timeout
|