File tree Expand file tree Collapse file tree 4 files changed +30
-8
lines changed
Expand file tree Collapse file tree 4 files changed +30
-8
lines changed Original file line number Diff line number Diff line change @@ -419,8 +419,16 @@ void ISO15118_chargerImpl::handle_send_error(types::iso15118_charger::EvseError&
419419
420420void ISO15118_chargerImpl::handle_reset_error () {
421421 v2g_ctx->evse_v2g_data .rcd = 0 ;
422- memset (v2g_ctx->evse_v2g_data .evse_status_code , (int )iso1DC_EVSEStatusCodeType_EVSE_Ready,
423- sizeof (v2g_ctx->evse_v2g_data .evse_status_code ));
422+
423+ v2g_ctx->evse_v2g_data .evse_status_code [PHASE_INIT] = iso1DC_EVSEStatusCodeType_EVSE_NotReady;
424+ v2g_ctx->evse_v2g_data .evse_status_code [PHASE_AUTH] = iso1DC_EVSEStatusCodeType_EVSE_NotReady;
425+ v2g_ctx->evse_v2g_data .evse_status_code [PHASE_PARAMETER] = iso1DC_EVSEStatusCodeType_EVSE_Ready; // [V2G-DC-453]
426+ v2g_ctx->evse_v2g_data .evse_status_code [PHASE_ISOLATION] = iso1DC_EVSEStatusCodeType_EVSE_IsolationMonitoringActive;
427+ v2g_ctx->evse_v2g_data .evse_status_code [PHASE_PRECHARGE] = iso1DC_EVSEStatusCodeType_EVSE_Ready;
428+ v2g_ctx->evse_v2g_data .evse_status_code [PHASE_CHARGE] = iso1DC_EVSEStatusCodeType_EVSE_Ready;
429+ v2g_ctx->evse_v2g_data .evse_status_code [PHASE_WELDING] = iso1DC_EVSEStatusCodeType_EVSE_NotReady;
430+ v2g_ctx->evse_v2g_data .evse_status_code [PHASE_STOP] = iso1DC_EVSEStatusCodeType_EVSE_NotReady;
431+
424432 // Todo(sl): check if emergency should be cleared here?
425433}
426434
Original file line number Diff line number Diff line change @@ -723,15 +723,20 @@ static enum v2g_event handle_din_cable_check(struct v2g_connection* conn) {
723723 res->DC_EVSEStatus .EVSEIsolationStatus = (dinisolationLevelType)conn->ctx ->evse_v2g_data .evse_isolation_status ;
724724 res->DC_EVSEStatus .EVSEIsolationStatus_isUsed = conn->ctx ->evse_v2g_data .evse_isolation_status_is_used ;
725725 res->DC_EVSEStatus .EVSENotification = (dinEVSENotificationType)conn->ctx ->evse_v2g_data .evse_notification ;
726- res->DC_EVSEStatus .EVSEStatusCode =
727- (conn->ctx ->intl_emergency_shutdown == true )
728- ? dinDC_EVSEStatusCodeType_EVSE_EmergencyShutdown
729- : (dinDC_EVSEStatusCodeType)conn->ctx ->evse_v2g_data .evse_status_code [PHASE_ISOLATION];
730726 res->DC_EVSEStatus .NotificationMaxDelay = (uint32_t )conn->ctx ->evse_v2g_data .notification_max_delay ;
731727 res->EVSEProcessing = (conn->ctx ->evse_v2g_data .evse_processing [PHASE_ISOLATION] == (uint8_t )0 )
732728 ? dinEVSEProcessingType_Finished
733729 : dinEVSEProcessingType_Ongoing;
734730
731+ if (conn->ctx ->intl_emergency_shutdown == true ) {
732+ res->DC_EVSEStatus .EVSEStatusCode = dinDC_EVSEStatusCodeType_EVSE_EmergencyShutdown;
733+ } else if (res->EVSEProcessing == dinEVSEProcessingType_Finished) {
734+ res->DC_EVSEStatus .EVSEStatusCode = dinDC_EVSEStatusCodeType_EVSE_Ready;
735+ } else {
736+ res->DC_EVSEStatus .EVSEStatusCode =
737+ static_cast <dinDC_EVSEStatusCodeType>(conn->ctx ->evse_v2g_data .evse_status_code [PHASE_ISOLATION]);
738+ }
739+
735740 /* Check the current response code and check if no external error has occurred */
736741 nextEvent = din_validate_response_code (&res->ResponseCode , conn);
737742
Original file line number Diff line number Diff line change @@ -2004,10 +2004,15 @@ static enum v2g_event handle_iso_cable_check(struct v2g_connection* conn) {
20042004 res->DC_EVSEStatus .EVSEIsolationStatus = (iso1isolationLevelType)conn->ctx ->evse_v2g_data .evse_isolation_status ;
20052005 res->DC_EVSEStatus .EVSEIsolationStatus_isUsed = conn->ctx ->evse_v2g_data .evse_isolation_status_is_used ;
20062006 res->DC_EVSEStatus .EVSENotification = (iso1EVSENotificationType)conn->ctx ->evse_v2g_data .evse_notification ;
2007- res->DC_EVSEStatus .EVSEStatusCode = get_emergency_status_code (conn->ctx , PHASE_ISOLATION);
20082007 res->DC_EVSEStatus .NotificationMaxDelay = (uint16_t )conn->ctx ->evse_v2g_data .notification_max_delay ;
20092008 res->EVSEProcessing = (iso1EVSEProcessingType)conn->ctx ->evse_v2g_data .evse_processing [PHASE_ISOLATION];
20102009
2010+ if (conn->ctx ->intl_emergency_shutdown == false && res->EVSEProcessing == dinEVSEProcessingType_Finished) {
2011+ res->DC_EVSEStatus .EVSEStatusCode = iso1DC_EVSEStatusCodeType_EVSE_Ready;
2012+ } else {
2013+ res->DC_EVSEStatus .EVSEStatusCode = get_emergency_status_code (conn->ctx , PHASE_ISOLATION);
2014+ }
2015+
20112016 /* Check the current response code and check if no external error has occurred */
20122017 next_event = (v2g_event)iso_validate_response_code (&res->ResponseCode , conn);
20132018
Original file line number Diff line number Diff line change @@ -149,10 +149,14 @@ void v2g_ctx_init_charging_values(struct v2g_context* const ctx) {
149149 ctx->evse_v2g_data .evse_isolation_status = (uint8_t )iso1isolationLevelType_Invalid;
150150 ctx->evse_v2g_data .evse_isolation_status_is_used = (unsigned int )1 ; // Shall be used in DIN
151151 ctx->evse_v2g_data .evse_notification = (uint8_t )0 ;
152+ ctx->evse_v2g_data .evse_status_code [PHASE_INIT] = iso1DC_EVSEStatusCodeType_EVSE_NotReady;
153+ ctx->evse_v2g_data .evse_status_code [PHASE_AUTH] = iso1DC_EVSEStatusCodeType_EVSE_NotReady;
152154 ctx->evse_v2g_data .evse_status_code [PHASE_PARAMETER] = iso1DC_EVSEStatusCodeType_EVSE_Ready; // [V2G-DC-453]
153- ctx->evse_v2g_data .evse_status_code [PHASE_ISOLATION] = iso1DC_EVSEStatusCodeType_EVSE_Ready ;
155+ ctx->evse_v2g_data .evse_status_code [PHASE_ISOLATION] = iso1DC_EVSEStatusCodeType_EVSE_IsolationMonitoringActive ;
154156 ctx->evse_v2g_data .evse_status_code [PHASE_PRECHARGE] = iso1DC_EVSEStatusCodeType_EVSE_Ready;
155157 ctx->evse_v2g_data .evse_status_code [PHASE_CHARGE] = iso1DC_EVSEStatusCodeType_EVSE_Ready;
158+ ctx->evse_v2g_data .evse_status_code [PHASE_WELDING] = iso1DC_EVSEStatusCodeType_EVSE_NotReady;
159+ ctx->evse_v2g_data .evse_status_code [PHASE_STOP] = iso1DC_EVSEStatusCodeType_EVSE_NotReady;
156160 memset (ctx->evse_v2g_data .evse_processing , iso1EVSEProcessingType_Ongoing, PHASE_LENGTH);
157161 ctx->evse_v2g_data .evse_processing [PHASE_PARAMETER] = iso1EVSEProcessingType_Finished; // Skip parameter phase
158162
You can’t perform that action at this time.
0 commit comments