|
@@ -2270,7 +2270,15 @@ int upgrade_check()
|
|
DEBUG_INFO("New firmware type: %X\n", ShmCharger->fwUpgradeInfo.fwType);
|
|
DEBUG_INFO("New firmware type: %X\n", ShmCharger->fwUpgradeInfo.fwType);
|
|
DEBUG_INFO("New firmware model name: %s, %s\n", ShmCharger->fwUpgradeInfo.modelName, ShmSysConfigAndInfo->SysConfig.ModelName);
|
|
DEBUG_INFO("New firmware model name: %s, %s\n", ShmCharger->fwUpgradeInfo.modelName, ShmSysConfigAndInfo->SysConfig.ModelName);
|
|
|
|
|
|
- if((strcmp(ShmCharger->fwUpgradeInfo.modelName, (char*)ShmSysConfigAndInfo->SysConfig.ModelName)==0) && (ShmCharger->fwUpgradeInfo.fwType>0))
|
|
|
|
|
|
+ if((ShmCharger->fwUpgradeInfo.modelName[0] == ShmSysConfigAndInfo->SysConfig.ModelName[0]) &&
|
|
|
|
+ (ShmCharger->fwUpgradeInfo.modelName[1] == ShmSysConfigAndInfo->SysConfig.ModelName[1]) &&
|
|
|
|
+ (ShmCharger->fwUpgradeInfo.modelName[7] == ShmSysConfigAndInfo->SysConfig.ModelName[7]) &&
|
|
|
|
+ (ShmCharger->fwUpgradeInfo.modelName[8] == ShmSysConfigAndInfo->SysConfig.ModelName[8]) &&
|
|
|
|
+ (ShmCharger->fwUpgradeInfo.modelName[9] == ShmSysConfigAndInfo->SysConfig.ModelName[9]) &&
|
|
|
|
+ (ShmCharger->fwUpgradeInfo.modelName[11] == ShmSysConfigAndInfo->SysConfig.ModelName[11]) &&
|
|
|
|
+ (ShmCharger->fwUpgradeInfo.modelName[12] == ShmSysConfigAndInfo->SysConfig.ModelName[12]) &&
|
|
|
|
+ (ShmCharger->fwUpgradeInfo.modelName[13] == ShmSysConfigAndInfo->SysConfig.ModelName[13]) &&
|
|
|
|
+ (ShmCharger->fwUpgradeInfo.fwType>0))
|
|
{
|
|
{
|
|
switch(ShmCharger->fwUpgradeInfo.fwType)
|
|
switch(ShmCharger->fwUpgradeInfo.fwType)
|
|
{
|
|
{
|
|
@@ -2721,7 +2729,6 @@ int isReachableInternet()
|
|
pclose(fp);
|
|
pclose(fp);
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -3145,7 +3152,6 @@ void checkReset()
|
|
DEBUG_INFO("%s reset request by OCPP.\n", ShmOCPP20Data->Reset.type);
|
|
DEBUG_INFO("%s reset request by OCPP.\n", ShmOCPP20Data->Reset.type);
|
|
if(strcmp((char*)ShmOCPP20Data->Reset.type, "Immediate") == 0)
|
|
if(strcmp((char*)ShmOCPP20Data->Reset.type, "Immediate") == 0)
|
|
{
|
|
{
|
|
-
|
|
|
|
system("sync");
|
|
system("sync");
|
|
sleep(5);
|
|
sleep(5);
|
|
system("reboot -f");
|
|
system("reboot -f");
|
|
@@ -3670,15 +3676,30 @@ int main(void)
|
|
* TODO:
|
|
* TODO:
|
|
* 1. Power saving logic
|
|
* 1. Power saving logic
|
|
*/
|
|
*/
|
|
|
|
+ if(ShmCharger->gun_info[gun_index].GPIO_Input.Button_Mode_Switch == ON)
|
|
|
|
+ {
|
|
|
|
+ ftime(&startTime[gun_index][TMR_IDX_POWERSAVING_LCD]);
|
|
|
|
+ ftime(&startTime[gun_index][TMR_IDX_POWERSAVING_RFID]);
|
|
|
|
+ ftime(&startTime[gun_index][TMR_IDX_POWERSAVING_METER]);
|
|
|
|
+ }
|
|
|
|
+
|
|
if(DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD]) > TIMEOUT_SPEC_POWERSAVING_LCD)
|
|
if(DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD]) > TIMEOUT_SPEC_POWERSAVING_LCD)
|
|
{
|
|
{
|
|
- if(DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD]) < (TIMEOUT_SPEC_POWERSAVING_LCD+600))
|
|
|
|
- DEBUG_INFO("LCD into power saving...%d\n", DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD]));
|
|
|
|
|
|
+ if(ShmCharger->isLcdOn == ON)
|
|
|
|
+ {
|
|
|
|
+ //if(DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD]) < (TIMEOUT_SPEC_POWERSAVING_LCD+600))
|
|
|
|
+ DEBUG_INFO("LCD into power saving...%d\n", DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD]));
|
|
|
|
+ ShmCharger->isLcdOn = OFF;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- if((0 < DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD])) && (DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD]) < 600))
|
|
|
|
- DEBUG_INFO("LCD exit power saving...%d\n", DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD]));
|
|
|
|
|
|
+ if(ShmCharger->isLcdOn == OFF)
|
|
|
|
+ {
|
|
|
|
+ //if((0 < DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD])) && (DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD]) < 600))
|
|
|
|
+ DEBUG_INFO("LCD exit power saving...%d\n", DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD]));
|
|
|
|
+ ShmCharger->isLcdOn = ON;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
if(DiffTimebWithNow(startTime[ShmCharger->gun_selectd][TMR_IDX_POWERSAVING_RFID]) > TIMEOUT_SPEC_POWERSAVING_RFID)
|
|
if(DiffTimebWithNow(startTime[ShmCharger->gun_selectd][TMR_IDX_POWERSAVING_RFID]) > TIMEOUT_SPEC_POWERSAVING_RFID)
|
|
@@ -3832,11 +3853,38 @@ int main(void)
|
|
// Set max current to rating current
|
|
// Set max current to rating current
|
|
ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current = ShmCharger->gun_info[gun_index].primaryMcuState.rating_current;
|
|
ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current = ShmCharger->gun_info[gun_index].primaryMcuState.rating_current;
|
|
|
|
|
|
- // Default Ethernet / Wifi / 4G to 1:disconnected
|
|
|
|
- ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet = ON;
|
|
|
|
- ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaWiFi = ON;
|
|
|
|
- ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi = ON;
|
|
|
|
-
|
|
|
|
|
|
+ // Default Ethernet / Wifi / 4G to 1:disconnected
|
|
|
|
+ switch(ShmSysConfigAndInfo->SysConfig.ModelName[10])
|
|
|
|
+ {
|
|
|
|
+ case 'E':
|
|
|
|
+ ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet = ON;
|
|
|
|
+ ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaWiFi = OFF;
|
|
|
|
+ ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi = OFF;
|
|
|
|
+
|
|
|
|
+ break;
|
|
|
|
+ case 'W':
|
|
|
|
+ ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet = ON;
|
|
|
|
+ ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaWiFi = ON;
|
|
|
|
+ ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi = OFF;
|
|
|
|
+
|
|
|
|
+ break;
|
|
|
|
+ case 'T':
|
|
|
|
+ ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet = ON;
|
|
|
|
+ ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaWiFi = OFF;
|
|
|
|
+ ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi = ON;
|
|
|
|
+
|
|
|
|
+ break;
|
|
|
|
+ case 'D':
|
|
|
|
+ ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet = ON;
|
|
|
|
+ ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaWiFi = ON;
|
|
|
|
+ ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi = ON;
|
|
|
|
+
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // Default LCM brightness to 100
|
|
|
|
+ ShmCharger->isLcdOn = ON;
|
|
|
|
+
|
|
// If Web Server OPCC URL is empty kill Module_OcppBackend
|
|
// If Web Server OPCC URL is empty kill Module_OcppBackend
|
|
if(strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0)
|
|
if(strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0)
|
|
{
|
|
{
|
|
@@ -3886,6 +3934,7 @@ int main(void)
|
|
ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current = CCS_PWM_DUTY_100;
|
|
ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current = CCS_PWM_DUTY_100;
|
|
ShmCharger->gun_info[gun_index].mcuFlag.isSetCpPwmDuty = ON;
|
|
ShmCharger->gun_info[gun_index].mcuFlag.isSetCpPwmDuty = ON;
|
|
ShmCharger->gun_info[gun_index].isDoEvReadyOnce = OFF;
|
|
ShmCharger->gun_info[gun_index].isDoEvReadyOnce = OFF;
|
|
|
|
+ ShmCharger->gun_info[gun_index].resultAuthorization = DEFAULT_RFID;
|
|
if(ShmCharger->isCcsEnable)system("pkill Module_CCS");
|
|
if(ShmCharger->isCcsEnable)system("pkill Module_CCS");
|
|
}
|
|
}
|
|
|
|
|
|
@@ -4031,6 +4080,9 @@ int main(void)
|
|
switch(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod)
|
|
switch(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod)
|
|
{
|
|
{
|
|
case START_METHOD_RFID:
|
|
case START_METHOD_RFID:
|
|
|
|
+
|
|
|
|
+ ShmCharger->gun_info[gun_index].resultAuthorization = UNKNOW_RFID;
|
|
|
|
+
|
|
if((ocpp_get_auth_conf()) ||
|
|
if((ocpp_get_auth_conf()) ||
|
|
(!ocpp_get_connection_status() && ((ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE) || (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_NOCHARGE))) ||
|
|
(!ocpp_get_connection_status() && ((ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE) || (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_NOCHARGE))) ||
|
|
(!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST) && (strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0))
|
|
(!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST) && (strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0))
|
|
@@ -4042,6 +4094,7 @@ int main(void)
|
|
{
|
|
{
|
|
memcpy((char*)ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartUserId, ShmSysConfigAndInfo->SysConfig.UserId, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
|
|
memcpy((char*)ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartUserId, ShmSysConfigAndInfo->SysConfig.UserId, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
|
|
|
|
|
|
|
|
+ ShmCharger->gun_info[gun_index].resultAuthorization = VALIDATED_RFID;
|
|
DEBUG_INFO("Authorize pass.\n");
|
|
DEBUG_INFO("Authorize pass.\n");
|
|
setSpeaker(ON,SPEAKER_SHORT);
|
|
setSpeaker(ON,SPEAKER_SHORT);
|
|
setLedMotion(gun_index,LED_ACTION_RFID_PASS);
|
|
setLedMotion(gun_index,LED_ACTION_RFID_PASS);
|
|
@@ -4050,6 +4103,8 @@ int main(void)
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
|
|
+ ShmCharger->gun_info[gun_index].resultAuthorization = UNVALIDATED_RFID;
|
|
|
|
+
|
|
DEBUG_INFO("Authorize fail.\n");
|
|
DEBUG_INFO("Authorize fail.\n");
|
|
setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
|
|
setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
|
|
setLedMotion(gun_index,LED_ACTION_RFID_FAIL);
|
|
setLedMotion(gun_index,LED_ACTION_RFID_FAIL);
|
|
@@ -4077,6 +4132,7 @@ int main(void)
|
|
{
|
|
{
|
|
ftime(&startTime[gun_index][TMR_IDX_HANDSHAKING]);
|
|
ftime(&startTime[gun_index][TMR_IDX_HANDSHAKING]);
|
|
setLedMotion(gun_index,LED_ACTION_AUTHED);
|
|
setLedMotion(gun_index,LED_ACTION_AUTHED);
|
|
|
|
+ ShmCharger->gun_info[gun_index].resultAuthorization = DEFAULT_RFID;
|
|
|
|
|
|
if(ShmCharger->isCcsEnable)
|
|
if(ShmCharger->isCcsEnable)
|
|
ShmCharger->gun_info[gun_index].ccsHandshakeState = HANDSHAKE_DUTY_5;
|
|
ShmCharger->gun_info[gun_index].ccsHandshakeState = HANDSHAKE_DUTY_5;
|
|
@@ -4437,6 +4493,7 @@ int main(void)
|
|
ocpp_reset_smartcharging_profileId(gun_index);
|
|
ocpp_reset_smartcharging_profileId(gun_index);
|
|
ocpp_set_profile_req(gun_index, ON);
|
|
ocpp_set_profile_req(gun_index, ON);
|
|
ShmCharger->gun_info[gun_index].isChargerStopByCondition = NO;
|
|
ShmCharger->gun_info[gun_index].isChargerStopByCondition = NO;
|
|
|
|
+ ShmCharger->gun_info[gun_index].resultAuthorization = DEFAULT_RFID;
|
|
}
|
|
}
|
|
|
|
|
|
//if time up, clear CCS MSG count
|
|
//if time up, clear CCS MSG count
|
|
@@ -4566,6 +4623,8 @@ int main(void)
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
|
|
+ ShmCharger->gun_info[gun_index].resultAuthorization = UNKNOW_RFID;
|
|
|
|
+
|
|
if(ocpp_get_auth_conf() ||
|
|
if(ocpp_get_auth_conf() ||
|
|
(ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_DISABLE) ||
|
|
(ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_DISABLE) ||
|
|
(!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST) && (strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0)) ||
|
|
(!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST) && (strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0)) ||
|
|
@@ -4586,6 +4645,7 @@ int main(void)
|
|
setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
|
|
setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
|
|
setLedMotion(gun_index,LED_ACTION_RFID_FAIL);
|
|
setLedMotion(gun_index,LED_ACTION_RFID_FAIL);
|
|
sleep(3);
|
|
sleep(3);
|
|
|
|
+ ShmCharger->gun_info[gun_index].resultAuthorization = DEFAULT_RFID;
|
|
}
|
|
}
|
|
|
|
|
|
startTime[gun_index][TMR_IDX_AUTH].time -= TIMEOUT_SPEC_AUTH;
|
|
startTime[gun_index][TMR_IDX_AUTH].time -= TIMEOUT_SPEC_AUTH;
|
|
@@ -4852,6 +4912,7 @@ int main(void)
|
|
{}
|
|
{}
|
|
|
|
|
|
getDateTimeString((char*)ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StopDateTime);
|
|
getDateTimeString((char*)ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StopDateTime);
|
|
|
|
+ ShmCharger->gun_info[gun_index].resultAuthorization = DEFAULT_RFID;
|
|
}
|
|
}
|
|
|
|
|
|
// End authorize pass
|
|
// End authorize pass
|
|
@@ -4872,6 +4933,7 @@ int main(void)
|
|
if(((ShmCharger->gun_info[gun_index].rfidReq == ON) && isMatchStartUser(gun_index)) ||
|
|
if(((ShmCharger->gun_info[gun_index].rfidReq == ON) && isMatchStartUser(gun_index)) ||
|
|
(ShmCharger->gun_info[gun_index].isAuthPassEnd))
|
|
(ShmCharger->gun_info[gun_index].isAuthPassEnd))
|
|
{
|
|
{
|
|
|
|
+ ShmCharger->gun_info[gun_index].resultAuthorization = VALIDATED_RFID;
|
|
DEBUG_INFO("Authorize pass.\n");
|
|
DEBUG_INFO("Authorize pass.\n");
|
|
setSpeaker(ON,SPEAKER_SHORT);
|
|
setSpeaker(ON,SPEAKER_SHORT);
|
|
setLedMotion(gun_index,LED_ACTION_RFID_PASS);
|
|
setLedMotion(gun_index,LED_ACTION_RFID_PASS);
|
|
@@ -5012,6 +5074,8 @@ int main(void)
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
|
|
+ ShmCharger->gun_info[gun_index].resultAuthorization = UNKNOW_RFID;
|
|
|
|
+
|
|
if(ocpp_get_auth_conf() ||
|
|
if(ocpp_get_auth_conf() ||
|
|
(ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_DISABLE) ||
|
|
(ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_DISABLE) ||
|
|
(!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST)) ||
|
|
(!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST)) ||
|
|
@@ -5023,15 +5087,18 @@ int main(void)
|
|
(!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE)))
|
|
(!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE)))
|
|
{
|
|
{
|
|
ShmCharger->gun_info[gun_index].isAuthPassEnd = ON;
|
|
ShmCharger->gun_info[gun_index].isAuthPassEnd = ON;
|
|
|
|
+ ShmCharger->gun_info[gun_index].resultAuthorization = VALIDATED_RFID;
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
|
|
+ ShmCharger->gun_info[gun_index].resultAuthorization = UNVALIDATED_RFID;
|
|
ShmCharger->gun_info[gun_index].rfidReq = OFF;
|
|
ShmCharger->gun_info[gun_index].rfidReq = OFF;
|
|
ocpp_set_auth_req(OFF);
|
|
ocpp_set_auth_req(OFF);
|
|
DEBUG_INFO("Authorize fail... \n");
|
|
DEBUG_INFO("Authorize fail... \n");
|
|
setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
|
|
setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
|
|
setLedMotion(gun_index,LED_ACTION_RFID_FAIL);
|
|
setLedMotion(gun_index,LED_ACTION_RFID_FAIL);
|
|
sleep(3);
|
|
sleep(3);
|
|
|
|
+ ShmCharger->gun_info[gun_index].resultAuthorization = DEFAULT_RFID;
|
|
}
|
|
}
|
|
|
|
|
|
startTime[gun_index][TMR_IDX_AUTH].time -= TIMEOUT_SPEC_AUTH;
|
|
startTime[gun_index][TMR_IDX_AUTH].time -= TIMEOUT_SPEC_AUTH;
|
|
@@ -5080,6 +5147,7 @@ int main(void)
|
|
setLedMotion(gun_index, LED_ACTION_STOP);
|
|
setLedMotion(gun_index, LED_ACTION_STOP);
|
|
setRelay(gun_index, OFF);
|
|
setRelay(gun_index, OFF);
|
|
setRequest(gun_index, OFF);
|
|
setRequest(gun_index, OFF);
|
|
|
|
+ sleep(5);
|
|
}
|
|
}
|
|
|
|
|
|
ShmCharger->gun_info[gun_index].rfidReq = OFF;
|
|
ShmCharger->gun_info[gun_index].rfidReq = OFF;
|