Skip to content

Commit 8fad4a2

Browse files
Update StatusManager.cpp
In the case the ChangeAvailability.req contains ConnectorId = 0, the status change applies to the Charge Point and all Connectors.
1 parent 7b59783 commit 8fad4a2

File tree

1 file changed

+33
-10
lines changed

1 file changed

+33
-10
lines changed

src/chargepoint/status/StatusManager.cpp

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)