Skip to content

Commit 52d3af0

Browse files
committed
[status] Notify change availability status to user application only once when connector id = 0
1 parent 04384c3 commit 52d3af0

File tree

1 file changed

+18
-28
lines changed

1 file changed

+18
-28
lines changed

src/chargepoint/status/StatusManager.cpp

Lines changed: 18 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -363,43 +363,33 @@ bool StatusManager::handleMessage(const ocpp::messages::ChangeAvailabilityReq& r
363363
unsigned int connector_id = request.connectorId;
364364
if (m_connectors.isValid(connector_id))
365365
{
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++)
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)
373+
{
374+
status = ChargePointStatus::Available;
375+
}
376+
377+
// In the case the ChangeAvailability.req contains ConnectorId = 0, the status change applies to the Charge Point and all Connectors.
378+
if (connector_id == 0)
370379
{
371-
response.status = m_events_handler.changeAvailabilityRequested(i, request.type);
372-
if (response.status == AvailabilityStatus::Accepted)
380+
for (unsigned int i = 0; i <= m_connectors.getCount(); i++)
373381
{
374-
// Update status
375-
ChargePointStatus status = ChargePointStatus::Unavailable;
376-
if (request.type == AvailabilityType::Operative)
377-
{
378-
status = ChargePointStatus::Available;
379-
}
380382
m_worker_pool.run<void>([this, i, status] { updateConnectorStatus(i, status); });
381383
}
382-
383-
LOG_INFO << "Change availability " << AvailabilityStatusHelper.toString(response.status);
384384
}
385-
}
386-
else
387-
{
388-
// Notify request
389-
response.status = m_events_handler.changeAvailabilityRequested(connector_id, request.type);
390-
if (response.status == AvailabilityStatus::Accepted)
385+
else
391386
{
392-
// Update status
393-
ChargePointStatus status = ChargePointStatus::Unavailable;
394-
if (request.type == AvailabilityType::Operative)
395-
{
396-
status = ChargePointStatus::Available;
397-
}
398387
m_worker_pool.run<void>([this, connector_id, status] { updateConnectorStatus(connector_id, status); });
399388
}
400-
401-
LOG_INFO << "Change availability " << AvailabilityStatusHelper.toString(response.status);
402389
}
390+
391+
LOG_INFO << "Change availability " << AvailabilityStatusHelper.toString(response.status);
392+
403393
ret = true;
404394
}
405395
else

0 commit comments

Comments
 (0)