Skip to content

Commit

Permalink
chore: move DateTimeData to Common
Browse files Browse the repository at this point in the history
  • Loading branch information
enzoevers committed Jun 21, 2024
1 parent c9c5735 commit 92ac651
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 51 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

#include <stdint.h>

namespace HAL::Types {
namespace Common::Types {

struct Time {
uint8_t hours;
Expand Down Expand Up @@ -36,4 +36,4 @@ struct DateTime {
auto operator==(const DateTime& other) const -> bool { return time == other.time && date == other.date; }
};

} // namespace HAL::Types
} // namespace Common::Types
14 changes: 7 additions & 7 deletions Code/HAL/include/IDateTime.h
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
#pragma once

#include "DateTimeData.h"
#include "Types/DateTimeData.h"

namespace HAL {
class IDateTime {
public:
virtual ~IDateTime() = default;

virtual auto GetTime() -> Types::Time = 0;
virtual auto SetTime(const Types::Time& time) -> bool = 0;
virtual auto GetDate() -> Types::Date = 0;
virtual auto SetDate(const Types::Date& date) -> bool = 0;
virtual auto GetDateTime() -> Types::DateTime = 0;
virtual auto SetDateTime(const Types::DateTime& dateTime) -> bool = 0;
virtual auto GetTime() -> Common::Types::Time = 0;
virtual auto SetTime(const Common::Types::Time& time) -> bool = 0;
virtual auto GetDate() -> Common::Types::Date = 0;
virtual auto SetDate(const Common::Types::Date& date) -> bool = 0;
virtual auto GetDateTime() -> Common::Types::DateTime = 0;
virtual auto SetDateTime(const Common::Types::DateTime& dateTime) -> bool = 0;
};

} // namespace HAL
16 changes: 8 additions & 8 deletions Code/HAL/stm32/include/DateTimeStm32.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ class DateTime : public HAL::IDateTime, HAL::STM32::IDateTime {
//---------------
// HAL::IDateTime
//---------------
auto GetTime() -> Types::Time override;
auto SetTime(const Types::Time& time) -> bool override;
auto GetDate() -> Types::Date override;
auto SetDate(const Types::Date& date) -> bool override;
auto GetDateTime() -> Types::DateTime override;
auto SetDateTime(const Types::DateTime& dateTime) -> bool override;
auto GetTime() -> Common::Types::Time override;
auto SetTime(const Common::Types::Time& time) -> bool override;
auto GetDate() -> Common::Types::Date override;
auto SetDate(const Common::Types::Date& date) -> bool override;
auto GetDateTime() -> Common::Types::DateTime override;
auto SetDateTime(const Common::Types::DateTime& dateTime) -> bool override;

//---------------
// HAL::STM32::IDateTime
Expand All @@ -26,8 +26,8 @@ class DateTime : public HAL::IDateTime, HAL::STM32::IDateTime {
auto GetConfig() -> const DateTimeConfig& override;

private:
auto InternalSetTime(const Types::Time& time) -> void;
auto InternalSetDate(const Types::Date& date) -> void;
auto InternalSetTime(const Common::Types::Time& time) -> void;
auto InternalSetDate(const Common::Types::Date& date) -> void;
auto UnlockRtcRegisters() -> void;
auto LockRtcRegisters() -> void;
auto EnterInitializeMode() -> void;
Expand Down
28 changes: 14 additions & 14 deletions Code/HAL/stm32/src/DateTimeStm32.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ DateTime::DateTime() : m_dateTimeConfig({nullptr, nullptr, nullptr, nullptr, nul
// HAL::IDateTime
//---------------

auto DateTime::GetTime() -> Types::Time {
auto time = Types::Time{.hours = 0, .minutes = 0, .seconds = 0, .milliseconds = 0};
auto DateTime::GetTime() -> Common::Types::Time {
auto time = Common::Types::Time{.hours = 0, .minutes = 0, .seconds = 0, .milliseconds = 0};

if (m_dateTimeConfig.ContainsNullptr()) {
return time;
Expand All @@ -31,7 +31,7 @@ auto DateTime::GetTime() -> Types::Time {
return time;
}

auto DateTime::SetTime(const Types::Time& time) -> bool {
auto DateTime::SetTime(const Common::Types::Time& time) -> bool {
if (m_dateTimeConfig.ContainsNullptr()) {
return false;
}
Expand All @@ -47,8 +47,8 @@ auto DateTime::SetTime(const Types::Time& time) -> bool {
return true;
}

auto DateTime::GetDate() -> Types::Date {
auto date = Types::Date{.year = 0, .month = 0, .day = 0, .weekday = Types::Weekday::Monday};
auto DateTime::GetDate() -> Common::Types::Date {
auto date = Common::Types::Date{.year = 0, .month = 0, .day = 0, .weekday = Common::Types::Weekday::Monday};

if (m_dateTimeConfig.ContainsNullptr()) {
return date;
Expand All @@ -70,13 +70,13 @@ auto DateTime::GetDate() -> Types::Date {
.year = static_cast<uint16_t>(m_yearBase + (yearTens * multiplier) + yearSingles),
.month = static_cast<uint8_t>((monthTens * multiplier) + monthSingles),
.day = static_cast<uint8_t>((dayTens * multiplier) + daySingles),
.weekday = static_cast<Types::Weekday>(weekdayInt),
.weekday = static_cast<Common::Types::Weekday>(weekdayInt),
};

return date;
}

auto DateTime::SetDate(const Types::Date& date) -> bool {
auto DateTime::SetDate(const Common::Types::Date& date) -> bool {
if (m_dateTimeConfig.ContainsNullptr()) {
return false;
}
Expand All @@ -92,10 +92,10 @@ auto DateTime::SetDate(const Types::Date& date) -> bool {
return true;
}

auto DateTime::GetDateTime() -> Types::DateTime {
auto dateTime =
Types::DateTime{.time = Types::Time{.hours = 0, .minutes = 0, .seconds = 0, .milliseconds = 0},
.date = Types::Date{.year = 0, .month = 0, .day = 0, .weekday = Types::Weekday::Monday}};
auto DateTime::GetDateTime() -> Common::Types::DateTime {
auto dateTime = Common::Types::DateTime{
.time = Common::Types::Time{.hours = 0, .minutes = 0, .seconds = 0, .milliseconds = 0},
.date = Common::Types::Date{.year = 0, .month = 0, .day = 0, .weekday = Common::Types::Weekday::Monday}};

if (m_dateTimeConfig.ContainsNullptr()) {
return dateTime;
Expand All @@ -106,7 +106,7 @@ auto DateTime::GetDateTime() -> Types::DateTime {
return dateTime;
}

auto DateTime::SetDateTime(const Types::DateTime& dateTime) -> bool {
auto DateTime::SetDateTime(const Common::Types::DateTime& dateTime) -> bool {
if (m_dateTimeConfig.ContainsNullptr()) {
return false;
}
Expand Down Expand Up @@ -143,7 +143,7 @@ auto DateTime::GetConfig() -> const DateTimeConfig& { return m_dateTimeConfig; }
// Private
//---------------

auto DateTime::InternalSetTime(const Types::Time& time) -> void {
auto DateTime::InternalSetTime(const Common::Types::Time& time) -> void {
const uint8_t hourTens = time.hours / 10;
const uint8_t hourSingles = time.hours - (hourTens * 10);
const uint8_t minutesTens = time.minutes / 10;
Expand All @@ -158,7 +158,7 @@ auto DateTime::InternalSetTime(const Types::Time& time) -> void {
(secondsTens << 4) | secondsSingles;
}

auto DateTime::InternalSetDate(const Types::Date& date) -> void {
auto DateTime::InternalSetDate(const Common::Types::Date& date) -> void {
m_yearBase = (date.year / 100) * 100;
const uint8_t yearTens = (date.year - m_yearBase) / 10;
const uint8_t yearSingles = (date.year - m_yearBase) - (yearTens * 10);
Expand Down
38 changes: 20 additions & 18 deletions Code/HAL/test/TestHalDateTimeStm32.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,15 +50,15 @@ class FixtureDateTimeStm32 : public Test {
//====================

TEST_F(FixtureDateTimeStm32, SetTime_ReturnsFalseIfConfigNotSet) {
bool success = m_dateTime->SetTime(Types::Time{});
bool success = m_dateTime->SetTime(Common::Types::Time{});

ASSERT_FALSE(success);
}

TEST_F(FixtureDateTimeStm32, SetTime_PerformsCorrectRegisterWrites) {
m_dateTime->SetConfig(std::move(m_dateTimeConfig));

auto time = Types::Time{
auto time = Common::Types::Time{
.hours = 12,
.minutes = 34,
.seconds = 56,
Expand Down Expand Up @@ -89,13 +89,13 @@ TEST_F(FixtureDateTimeStm32, SetTime_PerformsCorrectRegisterWrites) {
TEST_F(FixtureDateTimeStm32, GetTime_ReturnsZerodTimeIfConfigNotSet) {
auto receivedTime = m_dateTime->GetTime();

ASSERT_EQ(receivedTime, Types::Time({.hours = 0, .minutes = 0, .seconds = 0, .milliseconds = 0}));
ASSERT_EQ(receivedTime, Common::Types::Time({.hours = 0, .minutes = 0, .seconds = 0, .milliseconds = 0}));
}

TEST_F(FixtureDateTimeStm32, GetTime_ReturnsCorrectTime) {
m_dateTime->SetConfig(std::move(m_dateTimeConfig));

auto time = Types::Time{.hours = 12, .minutes = 34, .seconds = 56, .milliseconds = 0};
auto time = Common::Types::Time{.hours = 12, .minutes = 34, .seconds = 56, .milliseconds = 0};

m_dateTime->SetTime(time);

Expand All @@ -109,19 +109,19 @@ TEST_F(FixtureDateTimeStm32, GetTime_ReturnsCorrectTime) {
//====================

TEST_F(FixtureDateTimeStm32, SetDate_ReturnsFalseIfConfigNotSet) {
bool success = m_dateTime->SetDate(Types::Date{});
bool success = m_dateTime->SetDate(Common::Types::Date{});

ASSERT_FALSE(success);
}

TEST_F(FixtureDateTimeStm32, SetDate_PerformsCorrectRegisterWrites) {
m_dateTime->SetConfig(std::move(m_dateTimeConfig));

auto date = Types::Date{
auto date = Common::Types::Date{
.year = 2024,
.month = 5,
.day = 14,
.weekday = Types::Weekday::Saturday,
.weekday = Common::Types::Weekday::Saturday,
};

const auto expected_DR = 0 | 2 << 20 // tens of the year
Expand All @@ -148,13 +148,14 @@ TEST_F(FixtureDateTimeStm32, SetDate_PerformsCorrectRegisterWrites) {
TEST_F(FixtureDateTimeStm32, GetDate_ReturnsZerodDateIfConfigNotSet) {
auto receivedDate = m_dateTime->GetDate();

ASSERT_EQ(receivedDate, Types::Date({.year = 0, .month = 0, .day = 0, .weekday = Types::Weekday::Monday}));
ASSERT_EQ(receivedDate,
Common::Types::Date({.year = 0, .month = 0, .day = 0, .weekday = Common::Types::Weekday::Monday}));
}

TEST_F(FixtureDateTimeStm32, GetDate_ReturnsCorrectDate) {
m_dateTime->SetConfig(std::move(m_dateTimeConfig));

auto date = Types::Date{.year = 2024, .month = 5, .day = 12, .weekday = Types::Weekday::Wednesday};
auto date = Common::Types::Date{.year = 2024, .month = 5, .day = 12, .weekday = Common::Types::Weekday::Wednesday};

m_dateTime->SetDate(date);

Expand All @@ -168,7 +169,7 @@ TEST_F(FixtureDateTimeStm32, GetDate_ReturnsCorrectDate) {
//====================

TEST_F(FixtureDateTimeStm32, SetDateTime_ReturnsFalseIfConfigNotSet) {
bool success = m_dateTime->SetDateTime(Types::DateTime{});
bool success = m_dateTime->SetDateTime(Common::Types::DateTime{});

ASSERT_FALSE(success);
}
Expand All @@ -180,19 +181,20 @@ TEST_F(FixtureDateTimeStm32, SetDateTime_ReturnsFalseIfConfigNotSet) {
TEST_F(FixtureDateTimeStm32, GetDateTime_ReturnsZerodDateTimeIfConfigNotSet) {
auto receivedDateTime = m_dateTime->GetDateTime();

ASSERT_EQ(receivedDateTime,
Types::DateTime({
.time = Types::Time({.hours = 0, .minutes = 0, .seconds = 0, .milliseconds = 0}),
.date = Types::Date({.year = 0, .month = 0, .day = 0, .weekday = Types::Weekday::Monday}),
}));
ASSERT_EQ(
receivedDateTime,
Common::Types::DateTime({
.time = Common::Types::Time({.hours = 0, .minutes = 0, .seconds = 0, .milliseconds = 0}),
.date = Common::Types::Date({.year = 0, .month = 0, .day = 0, .weekday = Common::Types::Weekday::Monday}),
}));
}

TEST_F(FixtureDateTimeStm32, GetDateTime_ReturnsCorrectDateTime) {
m_dateTime->SetConfig(std::move(m_dateTimeConfig));

auto dateTime = Types::DateTime{
.time = Types::Time{.hours = 12, .minutes = 34, .seconds = 56, .milliseconds = 0},
.date = Types::Date{.year = 2024, .month = 5, .day = 12, .weekday = Types::Weekday::Wednesday},
auto dateTime = Common::Types::DateTime{
.time = Common::Types::Time{.hours = 12, .minutes = 34, .seconds = 56, .milliseconds = 0},
.date = Common::Types::Date{.year = 2024, .month = 5, .day = 12, .weekday = Common::Types::Weekday::Wednesday},
};

m_dateTime->SetDateTime(dateTime);
Expand Down
5 changes: 3 additions & 2 deletions Code/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include "Fonts/Bitstream_Vera_Sans_Mono/Bitstream_Vera_Sans_Mono_8.h"
#include "HanoverOL037A.h"
#include "TextBmhFormat.h"
#include "Types/DateTimeData.h"

#if defined(USE_STM32)

Expand Down Expand Up @@ -127,11 +128,11 @@ int main() {

dateTime.SetDateTime({
.time = {.hours = 14, .minutes = 4, .seconds = 25, .milliseconds = 0},
.date = {.year = 2021, .month = 9, .day = 1, .weekday = HAL::Types::Weekday::Wednesday},
.date = {.year = 2021, .month = 9, .day = 1, .weekday = Common::Types::Weekday::Wednesday},
});

const auto screenResolution = hanoverOL037A.GetResolution();
HAL::Types::DateTime lastDateTime;
Common::Types::DateTime lastDateTime;
bool lastTimeIncreaseState;
bool lastTimeDecreaseState;
while (true) {
Expand Down

0 comments on commit 92ac651

Please sign in to comment.