Skip to content
20 changes: 6 additions & 14 deletions examples/common/DefaultChargePointEventsHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -168,24 +168,16 @@ bool DefaultChargePointEventsHandler::remoteStartTransactionRequested(unsigned i
{
bool ret = false;
cout << "Remote start transaction : " << connector_id << " - " << id_tag << endl;
if (connector_id != 0)

if(connector_id > m_config.ocppConfig().numberOfConnectors() || connector_id == 0)
{
m_remote_start_pending[connector_id - 1u] = true;
m_remote_start_id_tag[connector_id - 1u] = id_tag;
ret = true;
ret=false;
}
else
{
for (size_t i = 1; i <= m_config.ocppConfig().numberOfConnectors(); i++)
{
if (m_chargepoint->getConnectorStatus(i) < ChargePointStatus::Charging)
{
m_remote_start_pending[i - 1u] = true;
m_remote_start_id_tag[i - 1u] = id_tag;
ret = true;
break;
}
}
m_remote_start_pending[connector_id - 1u] = true;
m_remote_start_id_tag[connector_id - 1u] = id_tag;
ret=true;
}
return ret;
}
Expand Down
6 changes: 3 additions & 3 deletions examples/common/config/OcppConfig.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -207,8 +207,8 @@ ocpp::types::ConfigurationStatus OcppConfig::setConfiguration(const std::string&
}
}

if (ret != ConfigurationStatus::Rejected)
{
if (ret != ConfigurationStatus::Rejected)
{
if ((it->second & PARAM_OCPP) != 0)
{
m_config.set(OCPP_PARAMS, key, value);
Expand All @@ -225,7 +225,7 @@ ocpp::types::ConfigurationStatus OcppConfig::setConfiguration(const std::string&
{
ret = ConfigurationStatus::Accepted;
}
}
}
}
else
{
Expand Down
9 changes: 5 additions & 4 deletions src/chargepoint/reservation/ReservationManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ ocpp::types::AuthorizationStatus ReservationManager::isTransactionAllowed(unsign
if (connector)
{
// Check if connector is reserved
if (connector->status == ChargePointStatus::Reserved)
if (!connector->reservation_id_tag.empty())
{
// Check if id tag match
if (id_tag == connector->reservation_id_tag)
Expand Down Expand Up @@ -130,7 +130,7 @@ ocpp::types::AuthorizationStatus ReservationManager::isTransactionAllowed(unsign
{
// Check if connector 0 is reserved
Connector& charge_point = m_connectors.getChargePointConnector();
if (charge_point.status == ChargePointStatus::Reserved)
if (!charge_point.reservation_id_tag.empty())
{
// Ensure that the module functions properly even when the gun is inserted first by the user.
if (m_connectors.getConnector(connector_id)->status == ChargePointStatus::Preparing)
Expand Down Expand Up @@ -234,6 +234,7 @@ bool ReservationManager::handleMessage(const ocpp::messages::ReserveNowReq& requ
m_status_manager.updateConnectorStatus(connector->id, ChargePointStatus::Reserved);
m_events_handler.reservationStarted(connector->id);
});

break;
}

Expand Down Expand Up @@ -293,7 +294,7 @@ bool ReservationManager::handleMessage(const ocpp::messages::CancelReservationRe
response.status = CancelReservationStatus::Rejected;
for (const Connector* connector : m_connectors.getConnectors())
{
if ((connector->status == ChargePointStatus::Reserved) && (connector->reservation_id == request.reservationId))
if ((!connector->reservation_id_tag.empty()) && (connector->reservation_id == request.reservationId))
{
// Cancel reservation
m_worker_pool.run<void>([this, connector_id = connector->id] { endReservation(connector_id, true); });
Expand All @@ -316,7 +317,7 @@ void ReservationManager::checkExpiries()
// Check reservations
for (const Connector* connector : m_connectors.getConnectors())
{
if ((connector->status == ChargePointStatus::Reserved) && (connector->reservation_expiry_date <= now))
if ((!connector->reservation_id_tag.empty()) && (connector->reservation_expiry_date <= now))
{
// End reservation
m_worker_pool.run<void>(std::bind(&ReservationManager::endReservation, this, connector->id, false));
Expand Down
4 changes: 2 additions & 2 deletions src/chargepoint/transaction/TransactionManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ ocpp::types::AuthorizationStatus TransactionManager::startTransaction(unsigned i
start_transaction_req.timestamp = DateTime::now();

// Check reservations
if (connector->status == ChargePointStatus::Reserved)
if (!connector->reservation_id_tag.empty())
{
// Fill reservation id
start_transaction_req.reservationId = connector->reservation_id;
Expand All @@ -112,7 +112,7 @@ ocpp::types::AuthorizationStatus TransactionManager::startTransaction(unsigned i
if (m_ocpp_config.reserveConnectorZeroSupported())
{
Connector& charge_point = m_connectors.getChargePointConnector();
if (charge_point.status == ChargePointStatus::Reserved)
if (!charge_point.reservation_id_tag.empty())
{
// Check if this transaction can be used for the charge point reservation
if (m_reservation_manager.isTransactionAllowed(Connectors::CONNECTOR_ID_CHARGE_POINT, id_tag) ==
Expand Down