8
8
#include < string>
9
9
#include < variant>
10
10
11
+ #include < iso15118/d20/limits.hpp>
11
12
#include < iso15118/message/dc_charge_loop.hpp>
13
+ #include < iso15118/message/dc_charge_parameter_discovery.hpp>
14
+ #include < iso15118/message/schedule_exchange.hpp>
12
15
#include < iso15118/message/type.hpp>
13
16
14
17
namespace iso15118 ::session {
15
18
19
+ namespace dt = message_20::datatypes;
20
+
16
21
namespace feedback {
17
22
18
23
enum class Signal {
@@ -34,14 +39,18 @@ struct DcMaximumLimits {
34
39
float power{NAN};
35
40
};
36
41
37
- using PresentVoltage = message_20::datatypes ::RationalNumber;
42
+ using PresentVoltage = dt ::RationalNumber;
38
43
using MeterInfoRequested = bool ;
39
- using DcReqControlMode = std::variant<
40
- message_20::datatypes::Scheduled_DC_CLReqControlMode, message_20::datatypes::BPT_Scheduled_DC_CLReqControlMode,
41
- message_20::datatypes::Dynamic_DC_CLReqControlMode, message_20::datatypes::BPT_Dynamic_DC_CLReqControlMode>;
44
+ using DcReqControlMode = std::variant<dt::Scheduled_DC_CLReqControlMode, dt::BPT_Scheduled_DC_CLReqControlMode,
45
+ dt::Dynamic_DC_CLReqControlMode, dt::BPT_Dynamic_DC_CLReqControlMode>;
46
+
47
+ using DcChargeLoopReq = std::variant<DcReqControlMode, dt::DisplayParameters, PresentVoltage, MeterInfoRequested>;
48
+
49
+ // TODO(ioan): preparation for AC limits
50
+ using EvseTransferLimits = std::variant<d20::DcTransferLimits>;
42
51
43
- using DcChargeLoopReq =
44
- std::variant<DcReqControlMode, message_20::datatypes::DisplayParameters, PresentVoltage, MeterInfoRequested >;
52
+ using EvTransferLimits = std::variant<dt::DC_CPDReqEnergyTransferMode, dt::BPT_DC_CPDReqEnergyTransferMode>;
53
+ using EvSEControlMode = std::variant<dt::Dynamic_SEReqControlMode, dt::Scheduled_SEReqControlMode >;
45
54
46
55
struct Callbacks {
47
56
std::function<void (Signal)> signal;
@@ -51,6 +60,11 @@ struct Callbacks {
51
60
std::function<void (const message_20::Type&)> v2g_message;
52
61
std::function<void (const std::string&)> evccid;
53
62
std::function<void (const std::string&)> selected_protocol;
63
+
64
+ std::function<void (const dt::ServiceCategory&, const std::optional<dt::AcConnector>&, const dt::ControlMode&,
65
+ const dt::MobilityNeedsMode&, const EvseTransferLimits&, const EvTransferLimits&,
66
+ const EvSEControlMode&)>
67
+ notify_ev_charging_needs;
54
68
};
55
69
56
70
} // namespace feedback
@@ -67,6 +81,11 @@ class Feedback {
67
81
void evcc_id (const std::string&) const ;
68
82
void selected_protocol (const std::string&) const ;
69
83
84
+ void notify_ev_charging_needs (const dt::ServiceCategory&, const std::optional<dt::AcConnector>&,
85
+ const dt::ControlMode&, const dt::MobilityNeedsMode&,
86
+ const feedback::EvseTransferLimits&, const feedback::EvTransferLimits&,
87
+ const feedback::EvSEControlMode&) const ;
88
+
70
89
private:
71
90
feedback::Callbacks callbacks;
72
91
};
0 commit comments