fix(kernel), feat(Timekeeping): Rely on system OVMF firmware for emulation, Rudimentary time zone support
This commit is contained in:
Submodule kernel/src/Libraries/flanterm updated: 4cacad1621...ea6a6cdecf
@@ -10,6 +10,29 @@
|
||||
using namespace Kt;
|
||||
|
||||
void Timekeeping::Init(uint16_t Year, uint8_t Month, uint8_t Day, uint8_t Hour, uint8_t Minute, uint8_t Second) {
|
||||
/* Hardcode CET for now */
|
||||
TimeZone CET = {
|
||||
"Central European Time",
|
||||
"CET",
|
||||
1, /* UTC+1 */
|
||||
0,
|
||||
false
|
||||
};
|
||||
|
||||
Kt::KernelLogStream(INFO, "Timekeeping Service") << "Setting time zone to " << CET.TZLongName << " (" << CET.TZShortName << ")";
|
||||
|
||||
Minute = Minute + CET.MinuteOffset;
|
||||
Hour = Hour + CET.HourOffset;
|
||||
if (Minute >= 60) {
|
||||
Minute -= 60;
|
||||
Hour += 1;
|
||||
}
|
||||
if (Hour >= 24) {
|
||||
Hour -= 24;
|
||||
Day += 1;
|
||||
/* Note: No month/day overflow handling yet */
|
||||
}
|
||||
|
||||
kcp::cstringstream minuteStream;
|
||||
if (Minute < 10) {
|
||||
minuteStream << "0";
|
||||
@@ -33,7 +56,8 @@ void Timekeeping::Init(uint16_t Year, uint8_t Month, uint8_t Day, uint8_t Hour,
|
||||
<< Hour << ":"
|
||||
|
||||
<< minuteStr << ":"
|
||||
<< secondStr;
|
||||
<< secondStr
|
||||
<< " (" << CET.TZLongName << ")";
|
||||
|
||||
|
||||
CString dateString = panelStr.c_str();
|
||||
|
||||
@@ -7,6 +7,24 @@
|
||||
#include <CppLib/CString.hpp>
|
||||
|
||||
namespace Timekeeping {
|
||||
/*
|
||||
Structure representing the attributes of a time zone; properties and time zone configuration will eventually
|
||||
be loaded from disk/ramdisk.
|
||||
*/
|
||||
struct TimeZone {
|
||||
/* Time zone naming scheme:
|
||||
i.e. "Central European Time" / "CET"
|
||||
*/
|
||||
CString TZLongName;
|
||||
CString TZShortName;
|
||||
/* Hour offset from UTC */
|
||||
int8_t HourOffset;
|
||||
/* Minute offset from UTC */
|
||||
int8_t MinuteOffset;
|
||||
/* Is daylight saving time */
|
||||
bool IsDST;
|
||||
};
|
||||
|
||||
const CString Months[] = {
|
||||
nullptr,
|
||||
"January",
|
||||
|
||||
Reference in New Issue
Block a user