Skip to content
Snippets Groups Projects
Commit 429d9315 authored by Theodoros Katzalis's avatar Theodoros Katzalis
Browse files

Replace magic numbers with #define

parent f75f5bd6
No related branches found
No related tags found
No related merge requests found
......@@ -3,25 +3,6 @@
<option name="RIGHT_MARGIN" value="100" />
<option name="WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN" value="true" />
<Objective-C-extensions>
<file>
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
</file>
<class>
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
</class>
<extensions>
<pair source="cpp" header="hpp" fileNamingConvention="PASCAL_CASE" />
<pair source="c" header="h" fileNamingConvention="NONE" />
......
......@@ -4,6 +4,10 @@
#include <cstdint>
#include <Message.hpp>
#define SECONDS_PER_MINUTE 60
#define SECONDS_PER_HOUR 3600
#define SECONDS_PER_DAY 86400
/**
* The time and date provided from Real Time Clock(Real Time Clock).
*
......@@ -37,9 +41,6 @@ struct TimeAndDate {
*/
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};
/**
......
......@@ -13,17 +13,17 @@ bool TimeHelper::IsLeapYear(uint16_t year) {
uint32_t TimeHelper::mkUTCtime(struct 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(struct 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);
......@@ -113,7 +113,7 @@ struct TimeAndDate TimeHelper::parseCDStimeFormat(const uint8_t *data) {
(static_cast<uint32_t >(data[4])) << 8 |
static_cast<uint32_t >(data[5]);
uint32_t seconds = elapsedDays * 86400 + msOfDay / 1000;
uint32_t seconds = elapsedDays * SECONDS_PER_DAY + msOfDay / 1000;
return Access.utcTime(seconds);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment