Skip to content

Commit e12a8e7

Browse files
committed
Send notification only once
Signed-off-by: Marc Emmers <m.emmers@alfen.com>
1 parent e8b81d5 commit e12a8e7

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

include/ocpp/v201/charge_point.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ class ChargePoint : ocpp::ChargingStationBase {
214214
BootReasonEnum bootreason;
215215
int network_configuration_priority;
216216
bool disable_automatic_websocket_reconnects;
217+
bool skip_invalid_csms_certificate_notifications;
217218

218219
/// \brief Component responsible for maintaining and persisting the operational status of CS, EVSEs, and connectors.
219220
std::shared_ptr<ComponentStateManager> component_state_manager;

lib/ocpp/v201/charge_point.cpp

+11-2
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ ChargePoint::ChargePoint(const std::map<int32_t, int32_t>& evse_connector_struct
5959
registration_status(RegistrationStatusEnum::Rejected),
6060
network_configuration_priority(0),
6161
disable_automatic_websocket_reconnects(false),
62+
skip_invalid_csms_certificate_notifications(false),
6263
reset_scheduled(false),
6364
reset_scheduled_evseids{},
6465
firmware_status(FirmwareStatusEnum::Idle),
@@ -713,6 +714,9 @@ void ChargePoint::init_websocket() {
713714
this->init_certificate_expiration_check_timers(); // re-init as timers are stopped on disconnect
714715
}
715716
this->time_disconnected = std::chrono::time_point<std::chrono::steady_clock>();
717+
718+
// We have a connection again so next time it fails we should send the notification again
719+
this->skip_invalid_csms_certificate_notifications = false;
716720
});
717721

718722
this->websocket->register_disconnected_callback([this]() {
@@ -749,8 +753,13 @@ void ChargePoint::init_websocket() {
749753
this->websocket->register_connection_failed_callback([this](ConnectionFailedReason reason) {
750754
switch (reason) {
751755
case ConnectionFailedReason::InvalidCSMSCertificate:
752-
this->security_event_notification_req(CiString<50>(ocpp::security_events::INVALIDCSMSCERTIFICATE),
753-
std::nullopt, true, true);
756+
if (!this->skip_invalid_csms_certificate_notifications) {
757+
this->security_event_notification_req(CiString<50>(ocpp::security_events::INVALIDCSMSCERTIFICATE),
758+
std::nullopt, true, true);
759+
this->skip_invalid_csms_certificate_notifications = true;
760+
} else {
761+
EVLOG_info << "Skipping InvalidCsmsCertificate SecurityEvent since it has been sent already";
762+
}
754763
break;
755764
}
756765
});

0 commit comments

Comments
 (0)