From 5771e4f66a41bc7b01a996f4979950227efb0aff Mon Sep 17 00:00:00 2001 From: Theodoros Katzalis <thodkatz@gmail.com> Date: Sun, 17 Mar 2019 01:41:16 +0200 Subject: [PATCH] Replace magic numbers with #define --- inc/Helpers/TimeHelper.hpp | 8 +++++--- src/Helpers/TimeHelper.cpp | 40 +++++++++++++++++++------------------- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/inc/Helpers/TimeHelper.hpp b/inc/Helpers/TimeHelper.hpp index 18ba87e7..1492d657 100644 --- a/inc/Helpers/TimeHelper.hpp +++ b/inc/Helpers/TimeHelper.hpp @@ -5,6 +5,11 @@ #include <Message.hpp> #include "TimeAndDate.hpp" +#define SECONDS_PER_MINUTE 60 +#define SECONDS_PER_HOUR 3600 +#define SECONDS_PER_DAY 86400 + + /** * This class formats the spacecraft time and cooperates closely with the ST[09] time management. @@ -21,9 +26,6 @@ */ class TimeHelper { private: - const uint8_t SecondsPerMinute = 60; - const uint16_t SecondsPerHour = 3600; - const uint32_t SecondsPerDay = 86400; const uint8_t DaysOfMonth[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; /** diff --git a/src/Helpers/TimeHelper.cpp b/src/Helpers/TimeHelper.cpp index 22fb1edf..d30994e6 100644 --- a/src/Helpers/TimeHelper.cpp +++ b/src/Helpers/TimeHelper.cpp @@ -13,17 +13,17 @@ bool TimeHelper::IsLeapYear(uint16_t year) { uint32_t TimeHelper::mkUTCtime(TimeAndDate &TimeInfo) { uint32_t secs = 1546300800; // elapsed seconds from Unix epoch until 1/1/2019 00:00:00(UTC date) for (uint16_t y = 2019; y < TimeInfo.year; ++y) { - secs += (IsLeapYear(y) ? 366 : 365) * SecondsPerDay; + secs += (IsLeapYear(y) ? 366 : 365) * SECONDS_PER_DAY; } for (uint16_t m = 1; m < TimeInfo.month; ++m) { - secs += DaysOfMonth[m - 1] * SecondsPerDay; + secs += DaysOfMonth[m - 1] * SECONDS_PER_DAY; if (m == 2 && IsLeapYear(TimeInfo.year)) { - secs += SecondsPerDay; + secs += SECONDS_PER_DAY; } } - secs += (TimeInfo.day - 1) * SecondsPerDay; - secs += TimeInfo.hour * SecondsPerHour; - secs += TimeInfo.minute * SecondsPerMinute; + secs += (TimeInfo.day - 1) * SECONDS_PER_DAY; + secs += TimeInfo.hour * SECONDS_PER_HOUR; + secs += TimeInfo.minute * SECONDS_PER_MINUTE; secs += TimeInfo.second; return secs; } @@ -39,39 +39,39 @@ struct TimeAndDate TimeHelper::utcTime(uint32_t seconds) { TimeInfo.second = 0; // calculate years - while (seconds >= (IsLeapYear(TimeInfo.year) ? 366 : 365) * SecondsPerDay) { - seconds -= (IsLeapYear(TimeInfo.year) ? 366 : 365) * SecondsPerDay; + while (seconds >= (IsLeapYear(TimeInfo.year) ? 366 : 365) * SECONDS_PER_DAY) { + seconds -= (IsLeapYear(TimeInfo.year) ? 366 : 365) * SECONDS_PER_DAY; TimeInfo.year++; } // calculate months uint8_t i = 0; - while (seconds >= (DaysOfMonth[i] * SecondsPerDay)) { + while (seconds >= (DaysOfMonth[i] * SECONDS_PER_DAY)) { TimeInfo.month++; - seconds -= (DaysOfMonth[i] * SecondsPerDay); + seconds -= (DaysOfMonth[i] * SECONDS_PER_DAY); i++; if (i == 1 && IsLeapYear(TimeInfo.year)) { - if (seconds <= (28 * SecondsPerDay)) { + if (seconds <= (28 * SECONDS_PER_DAY)) { break; } TimeInfo.month++; - seconds -= 29 * SecondsPerDay; + seconds -= 29 * SECONDS_PER_DAY; i++; } } // calculate days - TimeInfo.day = seconds / SecondsPerDay; - seconds -= TimeInfo.day * SecondsPerDay; + TimeInfo.day = seconds / SECONDS_PER_DAY; + seconds -= TimeInfo.day * SECONDS_PER_DAY; TimeInfo.day++; // add 1 day because we start count from 1 January(and not 0 January!) // calculate hours - TimeInfo.hour = seconds / SecondsPerHour; - seconds -= TimeInfo.hour * SecondsPerHour; + TimeInfo.hour = seconds / SECONDS_PER_HOUR; + seconds -= TimeInfo.hour * SECONDS_PER_HOUR; // calculate minutes - TimeInfo.minute = seconds / SecondsPerMinute; - seconds -= TimeInfo.minute * SecondsPerMinute; + TimeInfo.minute = seconds / SECONDS_PER_MINUTE; + seconds -= TimeInfo.minute * SECONDS_PER_MINUTE; // calculate seconds TimeInfo.second = seconds; @@ -92,13 +92,13 @@ uint64_t TimeHelper::generateCDStimeFormat(TimeAndDate &TimeInfo) { * The `DAY` segment, 16 bits as defined from standard. Actually the days passed since Unix * epoch */ - auto elapsedDays = static_cast<uint16_t>(seconds / 86400); + auto elapsedDays = static_cast<uint16_t>(seconds / SECONDS_PER_DAY); /** * The `ms of day` segment, 32 bits as defined in standard. The `ms of the day` and DAY` * should give the time passed since Unix epoch */ - auto msOfDay = static_cast<uint32_t >((seconds % 86400) * 1000); + auto msOfDay = static_cast<uint32_t >((seconds % SECONDS_PER_DAY) * 1000); uint64_t timeFormat = (static_cast<uint64_t>(elapsedDays) << 32 | msOfDay); -- GitLab