|
@@ -71,6 +71,7 @@ void substr(char *dest, const char* src, unsigned int start, unsigned int cnt);
|
|
|
struct SysConfigAndInfo *ShmSysConfigAndInfo;
|
|
|
struct StatusCodeData *ShmStatusCodeData;
|
|
|
struct OCPP16Data *ShmOCPP16Data;
|
|
|
+struct OCPP20Data *ShmOCPP20Data;
|
|
|
struct Charger *ShmCharger;
|
|
|
|
|
|
|
|
@@ -210,6 +211,20 @@ int InitShareMemory()
|
|
|
else
|
|
|
{}
|
|
|
|
|
|
+ //creat ShmOCPP20Data
|
|
|
+ if ((MeterSMId = shmget(ShmOcpp20ModuleKey, sizeof(struct OCPP20Data), 0777)) < 0)
|
|
|
+ {
|
|
|
+ DEBUG_ERROR("shmget ShmOCPP20Data NG\n");
|
|
|
+ result = FAIL;
|
|
|
+ }
|
|
|
+ else if ((ShmOCPP20Data = shmat(MeterSMId, NULL, 0)) == (void *) -1)
|
|
|
+ {
|
|
|
+ DEBUG_ERROR("shmat ShmOCPP20Data NG\n");
|
|
|
+ result = FAIL;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {}
|
|
|
+
|
|
|
return result;
|
|
|
}
|
|
|
|
|
@@ -241,6 +256,14 @@ void substr(char *dest, const char* src, unsigned int start, unsigned int cnt)
|
|
|
dest[cnt] = 0;
|
|
|
}
|
|
|
|
|
|
+void getNowDatetime(uint8_t *data)
|
|
|
+{
|
|
|
+ time_t t = time(NULL);
|
|
|
+ struct tm tm = *localtime(&t);
|
|
|
+
|
|
|
+ sprintf((char*)data, "%04d-%02d-%02dT%02d:%02d:%02dZ", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
|
|
|
+}
|
|
|
+
|
|
|
//==========================================
|
|
|
// Main process
|
|
|
//==========================================
|
|
@@ -1008,150 +1031,572 @@ int main(void)
|
|
|
//=====================================
|
|
|
// OCPP error code message
|
|
|
//=====================================
|
|
|
- if((ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L1_OVER_VOLTAGE) ||
|
|
|
- (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L2_OVER_VOLTAGE) ||
|
|
|
- (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L3_OVER_VOLTAGE))
|
|
|
+ if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16)
|
|
|
{
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputOVP == ON)
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012200");
|
|
|
- else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputOVP == ON)
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012201");
|
|
|
- else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputOVP == ON)
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012202");
|
|
|
-
|
|
|
- }
|
|
|
- else if((ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L1_UNDER_VOLTAGE) ||
|
|
|
- (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L2_UNDER_VOLTAGE) ||
|
|
|
- (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L3_UNDER_VOLTAGE))
|
|
|
- {
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputUVP == ON)
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012203");
|
|
|
- else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputUVP == ON)
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012204");
|
|
|
- else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputUVP == ON)
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012205");
|
|
|
+ if((ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L1_OVER_VOLTAGE) ||
|
|
|
+ (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L2_OVER_VOLTAGE) ||
|
|
|
+ (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L3_OVER_VOLTAGE))
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputOVP == ON)
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012200");
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputOVP == ON)
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012201");
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputOVP == ON)
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012202");
|
|
|
|
|
|
- }
|
|
|
- else if((ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L1_OVER_CURRENT) ||
|
|
|
- (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L2_OVER_CURRENT) ||
|
|
|
- (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L3_OVER_CURRENT))
|
|
|
- {
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemAcOutputOCP == ON)
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012216");
|
|
|
- else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemAcOutputOCPL2 == ON)
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012299");
|
|
|
- else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemAcOutputOCPL3 == ON)
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012300");
|
|
|
-
|
|
|
- }
|
|
|
- else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_OVER_TEMPERATURE)
|
|
|
- {
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012223");
|
|
|
- }
|
|
|
- else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_GROUND_FAIL)
|
|
|
- {
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012256");
|
|
|
- }
|
|
|
- else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_CP_ERROR)
|
|
|
- {
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "023703");
|
|
|
- }
|
|
|
- else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_CURRENT_LEAK_AC)
|
|
|
- {
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012233");
|
|
|
- }
|
|
|
- else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_CURRENT_LEAK_DC)
|
|
|
- {
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012233");
|
|
|
- }
|
|
|
- else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_MCU_TESTFAIL)
|
|
|
- {
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012257");
|
|
|
- }
|
|
|
- else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_HANDSHAKE_TIMEOUT)
|
|
|
- {
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "HandshakeTimeout");
|
|
|
- }
|
|
|
- else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_EMERGENCY_STOP)
|
|
|
- {
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012251");
|
|
|
- }
|
|
|
- else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_RELAY_WELDING)
|
|
|
- {
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "011009");
|
|
|
- }
|
|
|
- else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_LEAK_MODULE_FAIL)
|
|
|
- {
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "011004");
|
|
|
- }
|
|
|
- else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_SHUTTER_FAULT)
|
|
|
- {
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "011034");
|
|
|
- }
|
|
|
- else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_LOCKER_FAULT)
|
|
|
- {
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "011027");
|
|
|
- }
|
|
|
- else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_POWER_DROP)
|
|
|
- {
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputDrop == ON)
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012212");
|
|
|
- else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputDrop == ON)
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012213");
|
|
|
- else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputDrop == ON)
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012214");
|
|
|
+ }
|
|
|
+ else if((ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L1_UNDER_VOLTAGE) ||
|
|
|
+ (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L2_UNDER_VOLTAGE) ||
|
|
|
+ (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L3_UNDER_VOLTAGE))
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputUVP == ON)
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012203");
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputUVP == ON)
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012204");
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputUVP == ON)
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012205");
|
|
|
|
|
|
- }
|
|
|
- else if((ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L1_CIRCUIT_SHORT) ||
|
|
|
- (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L2_CIRCUIT_SHORT) ||
|
|
|
- (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L3_CIRCUIT_SHORT))
|
|
|
- {
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShort == ON)
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012262");
|
|
|
- else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShortL2 == ON)
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012301");
|
|
|
- else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShortL3 == ON)
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012302");
|
|
|
+ }
|
|
|
+ else if((ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L1_OVER_CURRENT) ||
|
|
|
+ (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L2_OVER_CURRENT) ||
|
|
|
+ (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L3_OVER_CURRENT))
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemAcOutputOCP == ON)
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012216");
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemAcOutputOCPL2 == ON)
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012299");
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemAcOutputOCPL3 == ON)
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012300");
|
|
|
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_OVER_TEMPERATURE)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012223");
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_GROUND_FAIL)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012256");
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_CP_ERROR)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "023703");
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_CURRENT_LEAK_AC)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012233");
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_CURRENT_LEAK_DC)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012233");
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_MCU_TESTFAIL)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012257");
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_HANDSHAKE_TIMEOUT)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "HandshakeTimeout");
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_EMERGENCY_STOP)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012251");
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_RELAY_WELDING)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "011009");
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_LEAK_MODULE_FAIL)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "011004");
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_SHUTTER_FAULT)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "011034");
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_LOCKER_FAULT)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "011027");
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_POWER_DROP)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputDrop == ON)
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012212");
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputDrop == ON)
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012213");
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputDrop == ON)
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012214");
|
|
|
+
|
|
|
+ }
|
|
|
+ else if((ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L1_CIRCUIT_SHORT) ||
|
|
|
+ (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L2_CIRCUIT_SHORT) ||
|
|
|
+ (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L3_CIRCUIT_SHORT))
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShort == ON)
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012262");
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShortL2 == ON)
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012301");
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShortL3 == ON)
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012302");
|
|
|
+
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_ROTATORY_SWITCH_FAULT)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "011036");
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_RELAY_DRIVE_FAULT)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "011010");
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_METER_TIMEOUT)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012305");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "NoError");
|
|
|
+ memset(ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode, 0x00, ARRAY_SIZE(ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode));
|
|
|
+ }
|
|
|
}
|
|
|
- else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_ROTATORY_SWITCH_FAULT)
|
|
|
- {
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "011036");
|
|
|
- }
|
|
|
- else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_RELAY_DRIVE_FAULT)
|
|
|
- {
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "011010");
|
|
|
- }
|
|
|
- else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_METER_TIMEOUT)
|
|
|
- {
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "012305");
|
|
|
- }
|
|
|
- else
|
|
|
+ else if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20)
|
|
|
{
|
|
|
- sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "NoError");
|
|
|
- memset(ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode, 0x00, ARRAY_SIZE(ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode));
|
|
|
+ if((ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L1_OVER_VOLTAGE) ||
|
|
|
+ (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L2_OVER_VOLTAGE) ||
|
|
|
+ (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L3_OVER_VOLTAGE))
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputOVP == ON)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012200");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "System L1 input OVP");
|
|
|
+ }
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputOVP == ON)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012201");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "System L2 input OVP");
|
|
|
+ }
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputOVP == ON)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012202");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "System L3 input OVP");
|
|
|
+ }
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "Voltage");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else if((ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L1_UNDER_VOLTAGE) ||
|
|
|
+ (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L2_UNDER_VOLTAGE) ||
|
|
|
+ (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L3_UNDER_VOLTAGE))
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputUVP == ON)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012203");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "System L1 input UVP");
|
|
|
+ }
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputUVP == ON)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012204");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "System L2 input UVP");
|
|
|
+ }
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputUVP == ON)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012205");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "System L3 input UVP");
|
|
|
+ }
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "Voltage");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else if((ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L1_OVER_CURRENT) ||
|
|
|
+ (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L2_OVER_CURRENT) ||
|
|
|
+ (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L3_OVER_CURRENT))
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemAcOutputOCP == ON)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012216");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "System AC output OCP L1");
|
|
|
+ }
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemAcOutputOCPL2 == ON)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012299");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "System AC output OCP L2");
|
|
|
+ }
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemAcOutputOCPL3 == ON)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012300");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "System AC output OCP L3");
|
|
|
+ }
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "Current");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_OVER_TEMPERATURE)
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012223");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "System ambient/inlet OTP");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "Temperature");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_GROUND_FAIL)
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012256");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "AC Ground Fault");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "Ground(PE)");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_CP_ERROR)
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "023703");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "pilot fault");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "Control pilot");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_CURRENT_LEAK_AC)
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012233");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "RCD/CCID trip");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "CCID");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_CURRENT_LEAK_DC)
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012233");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "RCD/CCID trip");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "CCID");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_MCU_TESTFAIL)
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012257");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "MCU self-test Fault");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "MCU");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_HANDSHAKE_TIMEOUT)
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "HandshakeTimeout");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "HandshakeTimeout");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "Operation");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_EMERGENCY_STOP)
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012251");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "Emergency stop");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "Button");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_RELAY_WELDING)
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "011009");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "AC output relay welding");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "Relay");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_LEAK_MODULE_FAIL)
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "011004");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "RCD/CCID self-test fail");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "CCID");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_SHUTTER_FAULT)
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "011034");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "Shutter fault");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "Shutter");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_LOCKER_FAULT)
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "011027");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "AC connector lock fail");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "Locker");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_POWER_DROP)
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputDrop == ON)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012212");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "System L1 input drop");
|
|
|
+ }
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputDrop == ON)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012213");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "System L2 input drop");
|
|
|
+ }
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputDrop == ON)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012214");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "System L3 input drop");
|
|
|
+ }
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "Voltage");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else if((ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L1_CIRCUIT_SHORT) ||
|
|
|
+ (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L2_CIRCUIT_SHORT) ||
|
|
|
+ (ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L3_CIRCUIT_SHORT))
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShort == ON)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012262");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "Circuit Short L1");
|
|
|
+ }
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShortL2 == ON)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012301");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "Circuit Short L2");
|
|
|
+ }
|
|
|
+ else if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShortL3 == ON)
|
|
|
+ {
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012302");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "Circuit Short L3");
|
|
|
+ }
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "Current");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_ROTATORY_SWITCH_FAULT)
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "011036");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "Rotary switch fault");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "Rotary switch");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_RELAY_DRIVE_FAULT)
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "011010");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "AC output relay driving fault");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "Relay");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_METER_TIMEOUT)
|
|
|
+ {
|
|
|
+ getNowDatetime(ShmOCPP20Data->NotifyEvent.eventData[0].timestamp);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].trigger, "Alerting");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].actualValue, "true");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techcode, "012305");
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].techInfo, "Meter communication timeout");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].eventNotificationType, "HardWiredNotification");
|
|
|
+
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].component.name, "Meter");
|
|
|
+ ShmOCPP20Data->NotifyEvent.eventData[0].component.evse.connectorId = (gun_index+1);
|
|
|
+ sprintf((char*)ShmOCPP20Data->NotifyEvent.eventData[0].variable.name, "Problem");
|
|
|
+
|
|
|
+ ShmOCPP20Data->SpMsg.bits.NotifyEventReq = ON;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
//=====================================
|
|
|
// Latch alarm recover in state A
|
|
|
//=====================================
|