Skip to content

Commit a53b483

Browse files
committed
EvseIso15118D20: Add callback for response_code from libiso15118, wrap this to string and publish the code via interface.
Signed-off-by: Martin Lukas <martin.lukas@chargebyte.com>
1 parent 0ff2849 commit a53b483

File tree

2 files changed

+133
-0
lines changed

2 files changed

+133
-0
lines changed

interfaces/ISO15118_charger.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,3 +452,7 @@ vars:
452452
The EV termination code as described in ISO15118-20.
453453
type: object
454454
$ref: /iso15118#/EvTermination
455+
response_code:
456+
description:
457+
The response code send to EV
458+
type: string

modules/EVSE/Evse15118D20/charger/ISO15118_chargerImpl.cpp

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -656,6 +656,135 @@ iso15118::session::feedback::Callbacks ISO15118_chargerImpl::create_callbacks()
656656
this->mod->p_charger->publish_ev_termination(termination_ctx);
657657
};
658658

659+
callbacks.response_code = [this](const iso15118::message_20::datatypes::ResponseCode& code) {
660+
namespace rc = iso15118::message_20::datatypes;
661+
662+
switch (code) {
663+
case rc::ResponseCode::OK:
664+
this->mod->p_charger->publish_response_code("OK");
665+
break;
666+
case rc::ResponseCode::OK_CertificateExpiresSoon:
667+
this->mod->p_charger->publish_response_code("OK_CertificateExpiresSoon");
668+
break;
669+
case rc::ResponseCode::OK_NewSessionEstablished:
670+
this->mod->p_charger->publish_response_code("OK_NewSessionEstablished");
671+
break;
672+
case rc::ResponseCode::OK_OldSessionJoined:
673+
this->mod->p_charger->publish_response_code("OK_OldSessionJoined");
674+
break;
675+
case rc::ResponseCode::OK_PowerToleranceConfirmed:
676+
this->mod->p_charger->publish_response_code("OK_PowerToleranceConfirmed");
677+
break;
678+
case rc::ResponseCode::WARNING_AuthorizationSelectionInvalid:
679+
this->mod->p_charger->publish_response_code("WARNING_AuthorizationSelectionInvalid");
680+
break;
681+
case rc::ResponseCode::WARNING_CertificateExpired:
682+
this->mod->p_charger->publish_response_code("WARNING_CertificateExpired");
683+
break;
684+
case rc::ResponseCode::WARNING_CertificateNotYetValid:
685+
this->mod->p_charger->publish_response_code("WARNING_CertificateNotYetValid");
686+
break;
687+
case rc::ResponseCode::WARNING_CertificateRevoked:
688+
this->mod->p_charger->publish_response_code("WARNING_CertificateRevoked");
689+
break;
690+
case rc::ResponseCode::WARNING_CertificateValidationError:
691+
this->mod->p_charger->publish_response_code("WARNING_CertificateValidationError");
692+
break;
693+
case rc::ResponseCode::WARNING_ChallengeInvalid:
694+
this->mod->p_charger->publish_response_code("WARNING_ChallengeInvalid");
695+
break;
696+
case rc::ResponseCode::WARNING_EIMAuthorizationFailure:
697+
this->mod->p_charger->publish_response_code("WARNING_EIMAuthorizationFailure");
698+
break;
699+
case rc::ResponseCode::WARNING_eMSPUnknown:
700+
this->mod->p_charger->publish_response_code("WARNING_eMSPUnknown");
701+
break;
702+
case rc::ResponseCode::WARNING_EVPowerProfileViolation:
703+
this->mod->p_charger->publish_response_code("WARNING_EVPowerProfileViolation");
704+
break;
705+
case rc::ResponseCode::WARNING_GeneralPnCAuthorizationError:
706+
this->mod->p_charger->publish_response_code("WARNING_GeneralPnCAuthorizationError");
707+
break;
708+
case rc::ResponseCode::WARNING_NoCertificateAvailable:
709+
this->mod->p_charger->publish_response_code("WARNING_NoCertificateAvailable");
710+
break;
711+
case rc::ResponseCode::WARNING_NoContractMatchingPCIDFound:
712+
this->mod->p_charger->publish_response_code("WARNING_NoContractMatchingPCIDFound");
713+
break;
714+
case rc::ResponseCode::WARNING_PowerToleranceNotConfirmed:
715+
this->mod->p_charger->publish_response_code("WARNING_PowerToleranceNotConfirmed");
716+
break;
717+
case rc::ResponseCode::WARNING_ScheduleRenegotiationFailed:
718+
this->mod->p_charger->publish_response_code("WARNING_ScheduleRenegotiationFailed");
719+
break;
720+
case rc::ResponseCode::WARNING_StandbyNotAllowed:
721+
this->mod->p_charger->publish_response_code("WARNING_StandbyNotAllowed");
722+
break;
723+
case rc::ResponseCode::WARNING_WPT:
724+
this->mod->p_charger->publish_response_code("WARNING_WPT");
725+
break;
726+
case rc::ResponseCode::FAILED:
727+
this->mod->p_charger->publish_response_code("FAILED");
728+
break;
729+
case rc::ResponseCode::FAILED_AssociationError:
730+
this->mod->p_charger->publish_response_code("FAILED_AssociationError");
731+
break;
732+
case rc::ResponseCode::FAILED_ContactorError:
733+
this->mod->p_charger->publish_response_code("FAILED_ContactorError");
734+
break;
735+
case rc::ResponseCode::FAILED_EVPowerProfileInvalid:
736+
this->mod->p_charger->publish_response_code("FAILED_EVPowerProfileInvalid");
737+
break;
738+
case rc::ResponseCode::FAILED_EVPowerProfileViolation:
739+
this->mod->p_charger->publish_response_code("FAILED_EVPowerProfileViolation");
740+
break;
741+
case rc::ResponseCode::FAILED_MeteringSignatureNotValid:
742+
this->mod->p_charger->publish_response_code("FAILED_MeteringSignatureNotValid");
743+
break;
744+
case rc::ResponseCode::FAILED_NoEnergyTransferServiceSelected:
745+
this->mod->p_charger->publish_response_code("FAILED_NoEnergyTransferServiceSelected");
746+
break;
747+
case rc::ResponseCode::FAILED_NoServiceRenegotiationSupported:
748+
this->mod->p_charger->publish_response_code("FAILED_NoServiceRenegotiationSupported");
749+
break;
750+
case rc::ResponseCode::FAILED_PauseNotAllowed:
751+
this->mod->p_charger->publish_response_code("FAILED_PauseNotAllowed");
752+
break;
753+
case rc::ResponseCode::FAILED_PowerDeliveryNotApplied:
754+
this->mod->p_charger->publish_response_code("FAILED_PowerDeliveryNotApplied");
755+
break;
756+
case rc::ResponseCode::FAILED_PowerToleranceNotConfirmed:
757+
this->mod->p_charger->publish_response_code("FAILED_PowerToleranceNotConfirmed");
758+
break;
759+
case rc::ResponseCode::FAILED_ScheduleRenegotiation:
760+
this->mod->p_charger->publish_response_code("FAILED_ScheduleRenegotiation");
761+
break;
762+
case rc::ResponseCode::FAILED_ScheduleSelectionInvalid:
763+
this->mod->p_charger->publish_response_code("FAILED_ScheduleSelectionInvalid");
764+
break;
765+
case rc::ResponseCode::FAILED_SequenceError:
766+
this->mod->p_charger->publish_response_code("FAILED_SequenceError");
767+
break;
768+
case rc::ResponseCode::FAILED_ServiceIDInvalid:
769+
this->mod->p_charger->publish_response_code("FAILED_ServiceIDInvalid");
770+
break;
771+
case rc::ResponseCode::FAILED_ServiceSelectionInvalid:
772+
this->mod->p_charger->publish_response_code("FAILED_ServiceSelectionInvalid");
773+
break;
774+
case rc::ResponseCode::FAILED_SignatureError:
775+
this->mod->p_charger->publish_response_code("FAILED_SignatureError");
776+
break;
777+
case rc::ResponseCode::FAILED_UnknownSession:
778+
this->mod->p_charger->publish_response_code("FAILED_UnknownSession");
779+
break;
780+
case rc::ResponseCode::FAILED_WrongChargeParameter:
781+
this->mod->p_charger->publish_response_code("FAILED_WrongChargeParameter");
782+
break;
783+
default:
784+
this->mod->p_charger->publish_response_code("FAILED");
785+
}
786+
};
787+
659788
return callbacks;
660789
}
661790

0 commit comments

Comments
 (0)