From 52c793bb5cdfce7c75a23aaac1b2c60118d83626 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Tue, 13 Dec 2022 12:37:26 +0200 Subject: [PATCH] Kernel/BAN: Make Time a struct in BAN and add formatter to it --- BAN/include/BAN/Time.h | 30 ++++++++++++++++++++++++++++++ kernel/include/kernel/RTC.h | 14 ++------------ kernel/kernel/RTC.cpp | 10 +++++----- kernel/kernel/kernel.cpp | 2 +- 4 files changed, 38 insertions(+), 18 deletions(-) create mode 100644 BAN/include/BAN/Time.h diff --git a/BAN/include/BAN/Time.h b/BAN/include/BAN/Time.h new file mode 100644 index 000000000..6e6694fc3 --- /dev/null +++ b/BAN/include/BAN/Time.h @@ -0,0 +1,30 @@ +#pragma once + +#include + +#include + +namespace BAN +{ + + struct Time + { + uint8_t second; + uint8_t minute; + uint8_t hour; + uint8_t day; + uint8_t month; + int year; + }; + +} + +namespace BAN::Formatter +{ + + template void print_argument_impl(const Time& time, const ValueFormat&) + { + print("{2}:{2}:{2} {2}.{2}.{4}", time.hour, time.minute, time.second, time.day, time.month, time.year); + } + +} \ No newline at end of file diff --git a/kernel/include/kernel/RTC.h b/kernel/include/kernel/RTC.h index 32f9e7c38..b6848e349 100644 --- a/kernel/include/kernel/RTC.h +++ b/kernel/include/kernel/RTC.h @@ -1,20 +1,10 @@ #pragma once -#include +#include namespace RTC { - struct Time - { - uint8_t second; - uint8_t minute; - uint8_t hour; - uint8_t day; - uint8_t month; - int year; - }; - - Time GetCurrentTime(); + BAN::Time GetCurrentTime(); } \ No newline at end of file diff --git a/kernel/kernel/RTC.cpp b/kernel/kernel/RTC.cpp index 46d4b8ec3..847ba2079 100644 --- a/kernel/kernel/RTC.cpp +++ b/kernel/kernel/RTC.cpp @@ -33,7 +33,7 @@ namespace RTC return IO::inb(CMOS_DATA); } - static void get_time(Time& out) + static void get_time(BAN::Time& out) { out.second = get_rtc_register(CMOS_REGISTER_SECOND); out.minute = get_rtc_register(CMOS_REGISTER_MINUTE); @@ -43,10 +43,10 @@ namespace RTC out.year = get_rtc_register(CMOS_REGISTER_YEAR); } - Time GetCurrentTime() + BAN::Time GetCurrentTime() { - Time last_time = {}; - Time time = {}; + BAN::Time last_time = {}; + BAN::Time time = {}; while (get_update_in_progress()) continue; @@ -54,7 +54,7 @@ namespace RTC get_time(time); last_time.second = time.second + 1; - while (memcmp(&last_time, &time, sizeof(Time))) + while (memcmp(&last_time, &time, sizeof(BAN::Time))) { last_time = time; get_time(time); diff --git a/kernel/kernel/kernel.cpp b/kernel/kernel/kernel.cpp index b2e5591a4..b9eddb814 100644 --- a/kernel/kernel/kernel.cpp +++ b/kernel/kernel/kernel.cpp @@ -103,7 +103,7 @@ void kernel_main(multiboot_info_t* mbi, uint32_t magic) return; auto time = RTC::GetCurrentTime(); - kprintln("Today is {2}:{2}:{2} {2}.{2}.{4}", time.hour, time.minute, time.second, time.day, time.month, time.year); + kprintln("Today is {}", time); kprintln("Hello from the kernel!");