Kernel/BAN: Make Time a struct in BAN and add formatter to it
This commit is contained in:
		
							parent
							
								
									3cda527987
								
							
						
					
					
						commit
						52c793bb5c
					
				|  | @ -0,0 +1,30 @@ | ||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #include <BAN/Formatter.h> | ||||||
|  | 
 | ||||||
|  | #include <stdint.h> | ||||||
|  | 
 | ||||||
|  | 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(*PUTC_LIKE)(char)> void print_argument_impl(const Time& time, const ValueFormat&) | ||||||
|  | 	{ | ||||||
|  | 		print<PUTC_LIKE>("{2}:{2}:{2} {2}.{2}.{4}", time.hour, time.minute, time.second, time.day, time.month, time.year); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | @ -1,20 +1,10 @@ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <stdint.h> | #include <BAN/Time.h> | ||||||
| 
 | 
 | ||||||
| namespace RTC | namespace RTC | ||||||
| { | { | ||||||
| 
 | 
 | ||||||
| 	struct Time | 	BAN::Time GetCurrentTime(); | ||||||
| 	{ |  | ||||||
| 		uint8_t	second; |  | ||||||
| 		uint8_t	minute; |  | ||||||
| 		uint8_t	hour; |  | ||||||
| 		uint8_t	day; |  | ||||||
| 		uint8_t	month; |  | ||||||
| 		int		year; |  | ||||||
| 	}; |  | ||||||
| 
 |  | ||||||
| 	Time GetCurrentTime(); |  | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | @ -33,7 +33,7 @@ namespace RTC | ||||||
| 		return IO::inb(CMOS_DATA); | 		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.second	= get_rtc_register(CMOS_REGISTER_SECOND); | ||||||
| 		out.minute	= get_rtc_register(CMOS_REGISTER_MINUTE); | 		out.minute	= get_rtc_register(CMOS_REGISTER_MINUTE); | ||||||
|  | @ -43,10 +43,10 @@ namespace RTC | ||||||
| 		out.year	= get_rtc_register(CMOS_REGISTER_YEAR); | 		out.year	= get_rtc_register(CMOS_REGISTER_YEAR); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	Time GetCurrentTime() | 	BAN::Time GetCurrentTime() | ||||||
| 	{ | 	{ | ||||||
| 		Time last_time	= {}; | 		BAN::Time last_time	= {}; | ||||||
| 		Time time		= {}; | 		BAN::Time time		= {}; | ||||||
| 
 | 
 | ||||||
| 		while (get_update_in_progress()) | 		while (get_update_in_progress()) | ||||||
| 			continue; | 			continue; | ||||||
|  | @ -54,7 +54,7 @@ namespace RTC | ||||||
| 		get_time(time); | 		get_time(time); | ||||||
| 		last_time.second = time.second + 1; | 		last_time.second = time.second + 1; | ||||||
| 
 | 
 | ||||||
| 		while (memcmp(&last_time, &time, sizeof(Time))) | 		while (memcmp(&last_time, &time, sizeof(BAN::Time))) | ||||||
| 		{ | 		{ | ||||||
| 			last_time = time; | 			last_time = time; | ||||||
| 			get_time(time); | 			get_time(time); | ||||||
|  |  | ||||||
|  | @ -103,7 +103,7 @@ void kernel_main(multiboot_info_t* mbi, uint32_t magic) | ||||||
| 		return; | 		return; | ||||||
| 
 | 
 | ||||||
| 	auto time = RTC::GetCurrentTime(); | 	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!"); | 	kprintln("Hello from the kernel!"); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue