Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions interfaces/ISO15118_charger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -452,3 +452,7 @@ vars:
The EV termination code as described in ISO15118-20.
type: object
$ref: /iso15118#/EvTermination
response_code:
description: The response code send from EV
type: string
Comment thread
SebaLukas marked this conversation as resolved.
$ref: /iso15118#/ResponseCode
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
interfaces/ISO15118_charger.yaml,a42b478c5052e4f67522e78e13fb2457be66a964266c471038a59a74634caea4
interfaces/ac_rcd.yaml,3faf5c199216a09953470a1a63e27e9a7b369a5a2bef538c406f0574ca4de465
interfaces/auth.yaml,835403f7b562ba79d9d9795e4e9279b005af023939294fcb3b6d50afb95fd606
interfaces/auth_token_provider.yaml,a408de2a8330e2e8b148879a2a31c37106d51ae823cb855e33d7bf5c9e44d8ab
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ types/error_history.yaml,6c49548f8020e807ca17f710d6cb69e53399b9da4ed2aaa5247dd69
types/evse_board_support.yaml,cbbe41414102d45b4d24db661b4da2bbaef544c4f050db0981ba6e44946a3f79
types/evse_manager.yaml,28582fa5814c9d98993e1698cbf18111b685081ace83197efc6d791042692a40
types/evse_security.yaml,a80c92d4663bda33412bd32788ba446bc0eafeebcddad706db38e1f988bd133b
types/iso15118.yaml,c4885e4caac846034f7719b2900ce6c909039c7cbc82a1166a2a1371a32a0b03
types/iso15118.yaml,5ed9ceff0f68073b3f45a1b140eca56b738c6c5515066ad04aa433859f9a644e
types/isolation_monitor.yaml,45d98b5072fa5d02a476860fe7d45a7b02f8a05eb6be94327f32dbe159d4ec40
types/money.yaml,4a7001c50216fcf96caac4fe16db17e23ce5149d000be1de4ac1f0135f5bdb0b
types/ocpp.yaml,2181f239b0366de85189dbe6cc210ad6b3ab7b6bdeb9ea8aad20fe4410b93bd7
Expand Down
2 changes: 2 additions & 0 deletions lib/everest/iso15118/include/iso15118/session/feedback.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ struct Callbacks {
std::function<void(const dt::VasSelectedServiceList&)> selected_vas_services;
std::function<void(const AcLimits&)> ac_limits;
std::function<void(const std::string&, const std::string&)> ev_termination;
std::function<void(const iso15118::message_20::datatypes::ResponseCode&)> response_code;
};

} // namespace feedback
Expand Down Expand Up @@ -114,6 +115,7 @@ class Feedback {
void selected_vas_services(const dt::VasSelectedServiceList&) const;
void ac_limits(const feedback::AcLimits&) const;
void ev_termination(const std::string&, const std::string&) const;
void response_code(const iso15118::message_20::datatypes::ResponseCode&) const;

private:
feedback::Callbacks callbacks;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,7 @@ Result AC_ChargeLoop::feed(Event ev) {
const auto res = handle_request(*req, m_ctx.session, false);

m_ctx.respond(res);
m_ctx.feedback.response_code(res.response_code);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe it would be possible to call feedback.responce_code() not in every state. Maybe it is possible to call that function in the context respond function or in the Session::poll function


if (res.response_code >= dt::ResponseCode::FAILED) {
m_ctx.session_stopped = true;
Expand All @@ -227,6 +228,7 @@ Result AC_ChargeLoop::feed(Event ev) {
present_powers, dynamic_parameters);

m_ctx.respond(res);
m_ctx.feedback.response_code(res.response_code);

if (res.response_code >= dt::ResponseCode::FAILED) {
m_ctx.session_stopped = true;
Expand All @@ -247,6 +249,7 @@ Result AC_ChargeLoop::feed(Event ev) {
const message_20::Type req_type = variant->get_type();
send_sequence_error(req_type, m_ctx);

m_ctx.feedback.response_code(dt::ResponseCode::FAILED_SequenceError);
m_ctx.session_stopped = true;
return {};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ Result AC_ChargeParameterDiscovery::feed(Event ev) {
const auto res = handle_request(*req, m_ctx.session, m_ctx.session_config.ac_limits, present_powers);

m_ctx.respond(res);
m_ctx.feedback.response_code(res.response_code);

if (res.response_code >= message_20::datatypes::ResponseCode::FAILED) {
m_ctx.session_stopped = true;
Expand All @@ -147,6 +148,7 @@ Result AC_ChargeParameterDiscovery::feed(Event ev) {

m_ctx.respond(res);
m_ctx.session_stopped = true;
m_ctx.feedback.response_code(res.response_code);

return {};
} else {
Expand All @@ -156,6 +158,7 @@ Result AC_ChargeParameterDiscovery::feed(Event ev) {
// Sequence Error
const message_20::Type req_type = variant->get_type();
send_sequence_error(req_type, m_ctx);
m_ctx.feedback.response_code(dt::ResponseCode::FAILED_SequenceError);

return {};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ Result Authorization::feed(Event ev) {
const auto res = handle_request(*req, m_ctx.session, authorization_status, timeout_ongoing_reached);

m_ctx.respond(res);
m_ctx.feedback.response_code(res.response_code);

if (res.response_code >= dt::ResponseCode::FAILED) {
m_ctx.session_stopped = true;
Expand All @@ -141,6 +142,8 @@ Result Authorization::feed(Event ev) {
m_ctx.respond(res);

m_ctx.session_stopped = true;
m_ctx.feedback.response_code(res.response_code);

return {};
} else {
m_ctx.log("expected AuthorizationReq! But code type id: %d", variant->get_type());
Expand All @@ -149,6 +152,7 @@ Result Authorization::feed(Event ev) {
const message_20::Type req_type = variant->get_type();
send_sequence_error(req_type, m_ctx);

m_ctx.feedback.response_code(dt::ResponseCode::FAILED_SequenceError);
m_ctx.session_stopped = true;
return {};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ Result AuthorizationSetup::feed(Event ev) {
logf_info("Timestamp: %d", req->header.timestamp);

m_ctx.respond(res);
m_ctx.feedback.response_code(res.response_code);

if (res.response_code >= dt::ResponseCode::FAILED) {
m_ctx.session_stopped = true;
Expand All @@ -87,6 +88,7 @@ Result AuthorizationSetup::feed(Event ev) {

m_ctx.respond(res);
m_ctx.session_stopped = true;
m_ctx.feedback.response_code(res.response_code);

return {};
} else {
Expand All @@ -96,6 +98,7 @@ Result AuthorizationSetup::feed(Event ev) {
const message_20::Type req_type = variant->get_type();
send_sequence_error(req_type, m_ctx);

m_ctx.feedback.response_code(dt::ResponseCode::FAILED_SequenceError);
m_ctx.session_stopped = true;
return {};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ Result DC_CableCheck::feed(Event ev) {
const auto res = handle_request(*req, m_ctx.session, cable_check_done);

m_ctx.respond(res);
m_ctx.feedback.response_code(res.response_code);

if (res.response_code >= dt::ResponseCode::FAILED) {
m_ctx.session_stopped = true;
Expand All @@ -79,6 +80,7 @@ Result DC_CableCheck::feed(Event ev) {

m_ctx.respond(res);
m_ctx.session_stopped = true;
m_ctx.feedback.response_code(res.response_code);

return {};
} else {
Expand All @@ -88,6 +90,7 @@ Result DC_CableCheck::feed(Event ev) {
const message_20::Type req_type = variant->get_type();
send_sequence_error(req_type, m_ctx);

m_ctx.feedback.response_code(dt::ResponseCode::FAILED_SequenceError);
m_ctx.session_stopped = true;
return {};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,7 @@ Result DC_ChargeLoop::feed(Event ev) {
const auto res = handle_request(*req, m_ctx.session, false);

m_ctx.respond(res);
m_ctx.feedback.response_code(res.response_code);

if (res.response_code >= dt::ResponseCode::FAILED) {
m_ctx.session_stopped = true;
Expand Down Expand Up @@ -250,6 +251,7 @@ Result DC_ChargeLoop::feed(Event ev) {
m_ctx.session_config.dc_limits, dynamic_parameters);

m_ctx.respond(res);
m_ctx.feedback.response_code(res.response_code);

if (res.response_code >= dt::ResponseCode::FAILED) {
m_ctx.session_stopped = true;
Expand All @@ -271,6 +273,7 @@ Result DC_ChargeLoop::feed(Event ev) {
const message_20::Type req_type = variant->get_type();
send_sequence_error(req_type, m_ctx);

m_ctx.feedback.response_code(dt::ResponseCode::FAILED_SequenceError);
m_ctx.session_stopped = true;
return {};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ Result DC_ChargeParameterDiscovery::feed(Event ev) {
m_ctx.respond(res);

m_ctx.feedback.dc_max_limits(dc_max_limits);
m_ctx.feedback.response_code(res.response_code);

if (res.response_code >= dt::ResponseCode::FAILED) {
m_ctx.session_stopped = true;
Expand All @@ -139,6 +140,7 @@ Result DC_ChargeParameterDiscovery::feed(Event ev) {

m_ctx.respond(res);
m_ctx.session_stopped = true;
m_ctx.feedback.response_code(res.response_code);

return {};
} else {
Expand All @@ -149,6 +151,8 @@ Result DC_ChargeParameterDiscovery::feed(Event ev) {
const message_20::Type req_type = variant->get_type();
send_sequence_error(req_type, m_ctx);

m_ctx.feedback.response_code(dt::ResponseCode::FAILED_SequenceError);

return {};
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ Result DC_PreCharge::feed(Event ev) {
m_ctx.feedback.dc_pre_charge_target_voltage(message_20::datatypes::from_RationalNumber(req->target_voltage));

m_ctx.respond(res);
m_ctx.feedback.response_code(res.response_code);

if (res.response_code >= dt::ResponseCode::FAILED) {
m_ctx.session_stopped = true;
Expand All @@ -73,6 +74,7 @@ Result DC_PreCharge::feed(Event ev) {

m_ctx.respond(res);
m_ctx.session_stopped = true;
m_ctx.feedback.response_code(res.response_code);

return {};
} else {
Expand All @@ -82,6 +84,7 @@ Result DC_PreCharge::feed(Event ev) {
const message_20::Type req_type = variant->get_type();
send_sequence_error(req_type, m_ctx);

m_ctx.feedback.response_code(dt::ResponseCode::FAILED_SequenceError);
m_ctx.session_stopped = true;
return {};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ Result DC_WeldingDetection::feed(Event ev) {
const auto res = handle_request(*req, m_ctx.session, present_voltage);

m_ctx.respond(res);
m_ctx.feedback.response_code(res.response_code);

if (res.response_code >= dt::ResponseCode::FAILED) {
m_ctx.session_stopped = true;
Expand All @@ -76,6 +77,7 @@ Result DC_WeldingDetection::feed(Event ev) {
}

m_ctx.respond(res);
m_ctx.feedback.response_code(res.response_code);

// Todo(sl): Tell the reason why the charger is stopping. Shutdown, Error, etc.
if (req->charging_session == message_20::datatypes::ChargingSession::Pause) {
Expand All @@ -98,6 +100,7 @@ Result DC_WeldingDetection::feed(Event ev) {
const message_20::Type req_type = variant->get_type();
send_sequence_error(req_type, m_ctx);

m_ctx.feedback.response_code(dt::ResponseCode::FAILED_SequenceError);
m_ctx.session_stopped = true;
return {};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ Result PowerDelivery::feed(Event ev) {

const auto& res = handle_request(previous_req.value(), m_ctx.session, false);
m_ctx.respond(res);
m_ctx.feedback.response_code(res.response_code);

if (res.response_code >= dt::ResponseCode::FAILED) {
m_ctx.session_stopped = true;
Expand All @@ -87,6 +88,7 @@ Result PowerDelivery::feed(Event ev) {
handle_request(previous_req.value_or(message_20::PowerDeliveryRequest{}), m_ctx.session, true);
m_ctx.respond(res);
m_ctx.session_stopped = true;
m_ctx.feedback.response_code(res.response_code);
}
return {};
}
Expand All @@ -103,6 +105,7 @@ Result PowerDelivery::feed(Event ev) {
m_ctx.feedback.dc_pre_charge_target_voltage(dt::from_RationalNumber(req->target_voltage));

m_ctx.respond(res);
m_ctx.feedback.response_code(res.response_code);

if (res.response_code >= dt::ResponseCode::FAILED) {
m_ctx.session_stopped = true;
Expand All @@ -129,6 +132,7 @@ Result PowerDelivery::feed(Event ev) {
const auto& res = handle_request(*req, m_ctx.session, false);

m_ctx.respond(res);
m_ctx.feedback.response_code(res.response_code);

if (res.response_code >= dt::ResponseCode::FAILED) {
m_ctx.session_stopped = true;
Expand All @@ -154,6 +158,7 @@ Result PowerDelivery::feed(Event ev) {
const message_20::Type req_type = variant->get_type();
send_sequence_error(req_type, m_ctx);

m_ctx.feedback.response_code(dt::ResponseCode::FAILED_SequenceError);
m_ctx.session_stopped = true;
return {};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,7 @@ Result ScheduleExchange::feed(Event ev) {
handle_request(*req, m_ctx.session, max_charge_power, dynamic_parameters, timeout_ongoing_reached);

m_ctx.respond(res);
m_ctx.feedback.response_code(res.response_code);

if (res.response_code >= dt::ResponseCode::FAILED) {
m_ctx.session_stopped = true;
Expand Down Expand Up @@ -210,6 +211,7 @@ Result ScheduleExchange::feed(Event ev) {

m_ctx.respond(res);
m_ctx.session_stopped = true;
m_ctx.feedback.response_code(res.response_code);

return {};
} else {
Expand All @@ -219,6 +221,7 @@ Result ScheduleExchange::feed(Event ev) {
const message_20::Type req_type = variant->get_type();
send_sequence_error(req_type, m_ctx);

m_ctx.feedback.response_code(dt::ResponseCode::FAILED_SequenceError);
m_ctx.session_stopped = true;
return {};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,7 @@ Result ServiceDetail::feed(Event ev) {
const auto res = handle_request(*req, m_ctx.session, m_ctx.session_config, custom_vas_parameters);

m_ctx.respond(res);
m_ctx.feedback.response_code(res.response_code);

if (res.response_code >= dt::ResponseCode::FAILED) {
m_ctx.session_stopped = true;
Expand All @@ -238,6 +239,7 @@ Result ServiceDetail::feed(Event ev) {

m_ctx.respond(res);
m_ctx.session_stopped = true;
m_ctx.feedback.response_code(res.response_code);

return {};
} else {
Expand All @@ -247,6 +249,7 @@ Result ServiceDetail::feed(Event ev) {
const message_20::Type req_type = variant->get_type();
send_sequence_error(req_type, m_ctx);

m_ctx.feedback.response_code(dt::ResponseCode::FAILED_SequenceError);
m_ctx.session_stopped = true;
return {};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ Result ServiceDiscovery::feed(Event ev) {
m_ctx.session_config.supported_vas_services, m_ctx.session_ev_info.ev_energy_services);

m_ctx.respond(res);
m_ctx.feedback.response_code(res.response_code);

if (res.response_code >= dt::ResponseCode::FAILED) {
m_ctx.session_stopped = true;
Expand All @@ -149,6 +150,7 @@ Result ServiceDiscovery::feed(Event ev) {

m_ctx.respond(res);
m_ctx.session_stopped = true;
m_ctx.feedback.response_code(res.response_code);

return {};
} else {
Expand All @@ -158,6 +160,7 @@ Result ServiceDiscovery::feed(Event ev) {
const message_20::Type req_type = variant->get_type();
send_sequence_error(req_type, m_ctx);

m_ctx.feedback.response_code(dt::ResponseCode::FAILED_SequenceError);
m_ctx.session_stopped = true;
return {};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ Result ServiceSelection::feed(Event ev) {
const auto res = handle_request(*req, m_ctx.session, m_ctx.session_config, custom_vas_parameters);

m_ctx.respond(res);
m_ctx.feedback.response_code(res.response_code);

if (res.response_code >= dt::ResponseCode::FAILED) {
m_ctx.session_stopped = true;
Expand All @@ -185,6 +186,7 @@ Result ServiceSelection::feed(Event ev) {
}

m_ctx.respond(res);
m_ctx.feedback.response_code(res.response_code);

if (res.response_code >= dt::ResponseCode::FAILED) {
m_ctx.session_stopped = true;
Expand Down Expand Up @@ -214,6 +216,7 @@ Result ServiceSelection::feed(Event ev) {

m_ctx.respond(res);
m_ctx.session_stopped = true;
m_ctx.feedback.response_code(res.response_code);

return {};
} else {
Expand All @@ -223,6 +226,7 @@ Result ServiceSelection::feed(Event ev) {
const message_20::Type req_type = variant->get_type();
send_sequence_error(req_type, m_ctx);

m_ctx.feedback.response_code(dt::ResponseCode::FAILED_SequenceError);
m_ctx.session_stopped = true;
return {};
}
Expand Down
Loading