@@ -69,6 +69,7 @@ CentralSystem::CentralSystem(const ocpp::config::ICentralSystemConfig& st
6969 m_database(),
7070 m_internal_config(m_database),
7171 m_messages_converter(),
72+ m_messages_validator(),
7273 m_ws_server(),
7374 m_rpc_server(),
7475 m_uptime_timer(*m_timer_pool.get(), "Uptime timer"),
@@ -164,31 +165,40 @@ bool CentralSystem::start()
164165 {
165166 LOG_INFO << " Starting OCPP stack v" << OPEN_OCPP_VERSION << " - Listen URL : " << m_stack_config.listenUrl ();
166167
167- // Start uptime counter
168- m_uptime = 0 ;
169- m_internal_config.setKey (START_DATE_KEY, DateTime::now ().str ());
170- m_uptime_timer.start (std::chrono::seconds (1u ));
171-
172- // Allocate resources
173- m_ws_server = std::unique_ptr<ocpp::websockets::IWebsocketServer>(ocpp::websockets::WebsocketFactory::newServer ());
174- m_rpc_server = std::make_unique<ocpp::rpc::RpcServer>(*m_ws_server, " ocpp1.6" );
175- m_rpc_server->registerServerListener (*this );
176-
177- // Configure websocket link
178- ocpp::websockets::IWebsocketServer::Credentials credentials;
179- credentials.http_basic_authent = m_stack_config.httpBasicAuthent ();
180- credentials.tls12_cipher_list = m_stack_config.tlsv12CipherList ();
181- credentials.tls13_cipher_list = m_stack_config.tlsv13CipherList ();
182- credentials.ecdh_curve = m_stack_config.tlsEcdhCurve ();
183- credentials.server_certificate = m_stack_config.tlsServerCertificate ();
184- credentials.server_certificate_private_key = m_stack_config.tlsServerCertificatePrivateKey ();
185- credentials.server_certificate_private_key_passphrase = m_stack_config.tlsServerCertificatePrivateKeyPassphrase ();
186- credentials.server_certificate_ca = m_stack_config.tlsServerCertificateCa ();
187- credentials.client_certificate_authent = m_stack_config.tlsClientCertificateAuthent ();
188- credentials.encoded_pem_certificates = false ;
189-
190- // Start listening
191- ret = m_rpc_server->start (m_stack_config.listenUrl (), credentials, m_stack_config.webSocketPingInterval ());
168+ // Load validator
169+ ret = m_messages_validator.load (m_stack_config.jsonSchemasPath ());
170+ if (ret)
171+ {
172+ // Start uptime counter
173+ m_uptime = 0 ;
174+ m_internal_config.setKey (START_DATE_KEY, DateTime::now ().str ());
175+ m_uptime_timer.start (std::chrono::seconds (1u ));
176+
177+ // Allocate resources
178+ m_ws_server = std::unique_ptr<ocpp::websockets::IWebsocketServer>(ocpp::websockets::WebsocketFactory::newServer ());
179+ m_rpc_server = std::make_unique<ocpp::rpc::RpcServer>(*m_ws_server, " ocpp1.6" );
180+ m_rpc_server->registerServerListener (*this );
181+
182+ // Configure websocket link
183+ ocpp::websockets::IWebsocketServer::Credentials credentials;
184+ credentials.http_basic_authent = m_stack_config.httpBasicAuthent ();
185+ credentials.tls12_cipher_list = m_stack_config.tlsv12CipherList ();
186+ credentials.tls13_cipher_list = m_stack_config.tlsv13CipherList ();
187+ credentials.ecdh_curve = m_stack_config.tlsEcdhCurve ();
188+ credentials.server_certificate = m_stack_config.tlsServerCertificate ();
189+ credentials.server_certificate_private_key = m_stack_config.tlsServerCertificatePrivateKey ();
190+ credentials.server_certificate_private_key_passphrase = m_stack_config.tlsServerCertificatePrivateKeyPassphrase ();
191+ credentials.server_certificate_ca = m_stack_config.tlsServerCertificateCa ();
192+ credentials.client_certificate_authent = m_stack_config.tlsClientCertificateAuthent ();
193+ credentials.encoded_pem_certificates = false ;
194+
195+ // Start listening
196+ ret = m_rpc_server->start (m_stack_config.listenUrl (), credentials, m_stack_config.webSocketPingInterval ());
197+ }
198+ else
199+ {
200+ LOG_ERROR << " Unable to load all the messages validators" ;
201+ }
192202 }
193203 else
194204 {
@@ -252,7 +262,7 @@ void CentralSystem::rpcClientConnected(const std::string& chargepoint_id, std::s
252262
253263 // Instanciate proxy
254264 std::shared_ptr<ICentralSystem::IChargePoint> chargepoint (
255- new ChargePointProxy (*this , chargepoint_id, client, m_stack_config. jsonSchemasPath () , m_messages_converter, m_stack_config));
265+ new ChargePointProxy (*this , chargepoint_id, client, m_messages_validator , m_messages_converter, m_stack_config));
256266
257267 // Notify connection
258268 m_events_handler.chargePointConnected (chargepoint);
0 commit comments