From 0f05a1a784c52ee27816a283073da7f881e765ac Mon Sep 17 00:00:00 2001 From: Gerhard Hoffmann Date: Fri, 8 Dec 2023 10:16:52 +0100 Subject: [PATCH] (1) Fix debug output. (2) Use UpDown-Argument for calculation of next tiem step. --- library/src/calculate_price.cpp | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/library/src/calculate_price.cpp b/library/src/calculate_price.cpp index b56ee49..c9da7df 100644 --- a/library/src/calculate_price.cpp +++ b/library/src/calculate_price.cpp @@ -97,25 +97,26 @@ void CALCULATE_LIBRARY_API free_tariff(parking_tariff_t *tariff) { // UpDown 1 -> up; 0 -> down int CALCULATE_LIBRARY_API compute_next_timestep(parking_tariff_t *tariff, int currentTimeMinutes, int UpDown) { + qCritical() << " compute_next_timestep() currentTimeMinutes: " << currentTimeMinutes; Configuration const *cfg = tariff; // compute payment method id (e.g. Linear=3, Steps=4) PaymentMethod const paymentMethodId = Utilities::getPaymentMethodId(cfg); switch (paymentMethodId) { case PaymentMethod::Progressive: - qCritical() << " compute_next_timestep() paymentMethodId: Progressive"; + qCritical() << " compute_next_timestep() paymentMethodId: Progressive"; break; case PaymentMethod::Degressive: - qCritical() << " compute_next_timestep() paymentMethodId: Degressive"; + qCritical() << " compute_next_timestep() paymentMethodId: Degressive"; break; case PaymentMethod::Linear: - qCritical() << " compute_next_timestep() paymentMethodId: Linear"; + qCritical() << " compute_next_timestep() paymentMethodId: Linear"; break; case PaymentMethod::Steps: - qCritical() << " compute_next_timestep() paymentMethodId: Steps"; + qCritical() << " compute_next_timestep() paymentMethodId: Steps"; break; case PaymentMethod::Undefined: - qCritical() << " compute_next_timestep() paymentMethodId: Undefined"; + qCritical() << " compute_next_timestep() paymentMethodId: Undefined"; break; } @@ -157,23 +158,25 @@ int CALCULATE_LIBRARY_API compute_next_timestep(parking_tariff_t *tariff, int cu // value is an offset from the start time and cannot be used as a // QDateTime. - qCritical() << "compute_next_timestep() currentTimeMinutes:" << currentTimeMinutes; - + qCritical() << "compute_next_timestep() up/down (1=up, 0=down):" << UpDown; // get minimal and maximal parking times int const minParkingTime = Utilities::getMinimalParkingTime(cfg, paymentMethodId); int const maxParkingTime = Utilities::getMaximalParkingTime(cfg, paymentMethodId); - qCritical() << " compute_next_timestep() maxParkingTime:" << paymentMethodId; - qCritical() << " compute_next_timestep() minParkingTime:" << paymentMethodId; + qCritical() << " compute_next_timestep() maxParkingTime:" << maxParkingTime; + qCritical() << " compute_next_timestep() minParkingTime:" << minParkingTime; // use the first (i.e. main duration step contained in the tariff json-file) int firstDurationStep = Utilities::getFirstDurationStep(cfg, paymentMethodId); - qCritical() << " compute_next_timestep() firstDurationStep:" << paymentMethodId; + firstDurationStep = ((UpDown == 1) ? firstDurationStep : -firstDurationStep); + + qCritical() << " compute_next_timestep() firstDurationStep:" << firstDurationStep; int nextTimeStep = currentTimeMinutes + firstDurationStep; + if (currentTimeMinutes >= minParkingTime && nextTimeStep <= maxParkingTime) { - qCritical() << " compute_next_timestep() nextTimeStep:" << nextTimeStep; + qCritical() << " compute_next_timestep() nextTimeStep:" << nextTimeStep; return nextTimeStep; } }