@@ -363,20 +363,43 @@ bool StatusManager::handleMessage(const ocpp::messages::ChangeAvailabilityReq& r
363363 unsigned int connector_id = request.connectorId ;
364364 if (m_connectors.isValid (connector_id))
365365 {
366- // Notify request
367- response.status = m_events_handler.changeAvailabilityRequested (connector_id, request.type );
368- if (response.status == AvailabilityStatus::Accepted)
369- {
370- // Update status
371- ChargePointStatus status = ChargePointStatus::Unavailable;
372- if (request.type == AvailabilityType::Operative)
366+ // In the case the ChangeAvailability.req contains ConnectorId = 0, the status change applies to the Charge Point and all Connectors.
367+ if (connector_id == 0 )
368+ {
369+ for (unsigned int i=0 ;i <= m_connectors.getCount ();i++)
373370 {
374- status = ChargePointStatus::Available;
371+ response.status = m_events_handler.changeAvailabilityRequested (i, request.type );
372+ if (response.status == AvailabilityStatus::Accepted)
373+ {
374+ // Update status
375+ ChargePointStatus status = ChargePointStatus::Unavailable;
376+ if (request.type == AvailabilityType::Operative)
377+ {
378+ status = ChargePointStatus::Available;
379+ }
380+ m_worker_pool.run <void >([this , i, status] { updateConnectorStatus (i, status); });
381+ }
382+
383+ LOG_INFO << " Change availability " << AvailabilityStatusHelper.toString (response.status );
375384 }
376- m_worker_pool.run <void >([this , connector_id, status] { updateConnectorStatus (connector_id, status); });
377385 }
386+ else
387+ {
388+ // Notify request
389+ response.status = m_events_handler.changeAvailabilityRequested (connector_id, request.type );
390+ if (response.status == AvailabilityStatus::Accepted)
391+ {
392+ // Update status
393+ ChargePointStatus status = ChargePointStatus::Unavailable;
394+ if (request.type == AvailabilityType::Operative)
395+ {
396+ status = ChargePointStatus::Available;
397+ }
398+ m_worker_pool.run <void >([this , connector_id, status] { updateConnectorStatus (connector_id, status); });
399+ }
378400
379- LOG_INFO << " Change availability " << AvailabilityStatusHelper.toString (response.status );
401+ LOG_INFO << " Change availability " << AvailabilityStatusHelper.toString (response.status );
402+ }
380403 ret = true ;
381404 }
382405 else
0 commit comments