From 9bfea0f46d4abea1cef5d3120d05838a29ffc458 Mon Sep 17 00:00:00 2001 From: Siegfried Siegert Date: Mon, 27 Nov 2023 08:59:51 +0100 Subject: [PATCH] Add compute_next_timestep() --- library/include/mobilisis/calculate_price.h | 2 ++ library/src/calculate_price.cpp | 38 +++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/library/include/mobilisis/calculate_price.h b/library/include/mobilisis/calculate_price.h index 66638f5..ab09de4 100644 --- a/library/include/mobilisis/calculate_price.h +++ b/library/include/mobilisis/calculate_price.h @@ -109,6 +109,8 @@ CalcState CALCULATE_LIBRARY_API init_tariff(parking_tariff_t **tariff, void CALCULATE_LIBRARY_API free_tariff(parking_tariff_t *tariff); int CALCULATE_LIBRARY_API get_zone_nr(int zone = -1); +int CALCULATE_LIBRARY_API compute_next_timestep(parking_tariff_t *tariff, int currentTimeMinutes, int UpDown); + CalcState CALCULATE_LIBRARY_API compute_price_for_parking_ticket( // deprecated parking_tariff_t *tariff, time_t start_parking_time, diff --git a/library/src/calculate_price.cpp b/library/src/calculate_price.cpp index 405989d..acfa65e 100644 --- a/library/src/calculate_price.cpp +++ b/library/src/calculate_price.cpp @@ -93,6 +93,44 @@ 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) +{ + static const QList stepList = calculator.GetTimeSteps(tariff); + + int currentStepIndex = stepList.indexOf(currentTimeMinutes); + + if (currentStepIndex == -1) { + qCritical() << "compute_next_timestep() *NO STEP* for currentTimeMinutes (" << currentTimeMinutes << ")"; + return currentTimeMinutes; + } + + if (UpDown == 1) { // UP + if (stepList[currentStepIndex] == stepList.last()) { + qCritical() << "compute_next_timestep() *NO NEXT STEP* for currentTimeMinutes (" << currentTimeMinutes << ")"; + return currentTimeMinutes; + } + else { + return stepList[currentStepIndex + 1]; + } + } + if (UpDown == 0) { // DOWN + if (stepList[currentStepIndex] == stepList.first()) { + qCritical() << "compute_next_timestep() *NO PREVIOUS STEP* for currentTimeMinutes (" << currentTimeMinutes << ")"; + return currentTimeMinutes; + } + else { + return stepList[currentStepIndex - 1]; + } + } + + qCritical() << "compute_next_timestep() *CAN NOT COMPUTE* for currentTimeMinutes (" << currentTimeMinutes << ")"; + return currentTimeMinutes; +} + + + // this is currently not used CalcState CALCULATE_LIBRARY_API compute_price_for_parking_ticket( parking_tariff_t *tariff,