diff --git a/Code/HAL/include/DateTimeData.h b/Code/Common/include/Types/DateTimeData.h similarity index 94% rename from Code/HAL/include/DateTimeData.h rename to Code/Common/include/Types/DateTimeData.h index f13426e..5dfd4e6 100644 --- a/Code/HAL/include/DateTimeData.h +++ b/Code/Common/include/Types/DateTimeData.h @@ -2,7 +2,7 @@ #include -namespace HAL::Types { +namespace Common::Types { struct Time { uint8_t hours; @@ -36,4 +36,4 @@ struct DateTime { auto operator==(const DateTime& other) const -> bool { return time == other.time && date == other.date; } }; -} // namespace HAL::Types \ No newline at end of file +} // namespace Common::Types \ No newline at end of file diff --git a/Code/HAL/include/IDateTime.h b/Code/HAL/include/IDateTime.h index 3d55d19..d571f27 100644 --- a/Code/HAL/include/IDateTime.h +++ b/Code/HAL/include/IDateTime.h @@ -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 \ No newline at end of file diff --git a/Code/HAL/stm32/include/DateTimeStm32.h b/Code/HAL/stm32/include/DateTimeStm32.h index 248b4c4..d98001c 100644 --- a/Code/HAL/stm32/include/DateTimeStm32.h +++ b/Code/HAL/stm32/include/DateTimeStm32.h @@ -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 @@ -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; diff --git a/Code/HAL/stm32/src/DateTimeStm32.cpp b/Code/HAL/stm32/src/DateTimeStm32.cpp index 503f9a2..701e581 100644 --- a/Code/HAL/stm32/src/DateTimeStm32.cpp +++ b/Code/HAL/stm32/src/DateTimeStm32.cpp @@ -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; @@ -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; } @@ -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; @@ -70,13 +70,13 @@ auto DateTime::GetDate() -> Types::Date { .year = static_cast(m_yearBase + (yearTens * multiplier) + yearSingles), .month = static_cast((monthTens * multiplier) + monthSingles), .day = static_cast((dayTens * multiplier) + daySingles), - .weekday = static_cast(weekdayInt), + .weekday = static_cast(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; } @@ -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; @@ -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; } @@ -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; @@ -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); diff --git a/Code/HAL/test/TestHalDateTimeStm32.cpp b/Code/HAL/test/TestHalDateTimeStm32.cpp index 8a9f9ad..3e0086d 100644 --- a/Code/HAL/test/TestHalDateTimeStm32.cpp +++ b/Code/HAL/test/TestHalDateTimeStm32.cpp @@ -50,7 +50,7 @@ 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); } @@ -58,7 +58,7 @@ TEST_F(FixtureDateTimeStm32, SetTime_ReturnsFalseIfConfigNotSet) { 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, @@ -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); @@ -109,7 +109,7 @@ 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); } @@ -117,11 +117,11 @@ TEST_F(FixtureDateTimeStm32, SetDate_ReturnsFalseIfConfigNotSet) { 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 @@ -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); @@ -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); } @@ -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); diff --git a/Code/main.cpp b/Code/main.cpp index 3387486..8a078af 100644 --- a/Code/main.cpp +++ b/Code/main.cpp @@ -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) @@ -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) {