1
0
Fork 0
forked from suyu/suyu

Merge pull request #1964 from lioncash/time

service/time: Minor cleanup
This commit is contained in:
bunnei 2018-12-29 22:57:38 -05:00 committed by GitHub
commit f80229b676
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 14 deletions

View file

@ -264,14 +264,12 @@ void Module::Interface::GetClockSnapshot(Kernel::HLERequestContext& ctx) {
LOG_DEBUG(Service_Time, "called"); LOG_DEBUG(Service_Time, "called");
IPC::RequestParser rp{ctx}; IPC::RequestParser rp{ctx};
auto unknown_u8 = rp.PopRaw<u8>(); const auto initial_type = rp.PopRaw<u8>();
ClockSnapshot clock_snapshot{};
const s64 time_since_epoch{std::chrono::duration_cast<std::chrono::seconds>( const s64 time_since_epoch{std::chrono::duration_cast<std::chrono::seconds>(
std::chrono::system_clock::now().time_since_epoch()) std::chrono::system_clock::now().time_since_epoch())
.count()}; .count()};
CalendarTime calendar_time{};
const std::time_t time(time_since_epoch); const std::time_t time(time_since_epoch);
const std::tm* tm = std::localtime(&time); const std::tm* tm = std::localtime(&time);
if (tm == nullptr) { if (tm == nullptr) {
@ -280,16 +278,19 @@ void Module::Interface::GetClockSnapshot(Kernel::HLERequestContext& ctx) {
rb.Push(ResultCode(-1)); // TODO(ogniK): Find appropriate error code rb.Push(ResultCode(-1)); // TODO(ogniK): Find appropriate error code
return; return;
} }
SteadyClockTimePoint steady_clock_time_point{CoreTiming::cyclesToMs(CoreTiming::GetTicks()) /
1000};
LocationName location_name{"UTC"}; const SteadyClockTimePoint steady_clock_time_point{
CoreTiming::cyclesToMs(CoreTiming::GetTicks()) / 1000, {}};
CalendarTime calendar_time{};
calendar_time.year = tm->tm_year + 1900; calendar_time.year = tm->tm_year + 1900;
calendar_time.month = tm->tm_mon + 1; calendar_time.month = tm->tm_mon + 1;
calendar_time.day = tm->tm_mday; calendar_time.day = tm->tm_mday;
calendar_time.hour = tm->tm_hour; calendar_time.hour = tm->tm_hour;
calendar_time.minute = tm->tm_min; calendar_time.minute = tm->tm_min;
calendar_time.second = tm->tm_sec; calendar_time.second = tm->tm_sec;
ClockSnapshot clock_snapshot{};
clock_snapshot.system_posix_time = time_since_epoch; clock_snapshot.system_posix_time = time_since_epoch;
clock_snapshot.network_posix_time = time_since_epoch; clock_snapshot.network_posix_time = time_since_epoch;
clock_snapshot.system_calendar_time = calendar_time; clock_snapshot.system_calendar_time = calendar_time;
@ -302,9 +303,10 @@ void Module::Interface::GetClockSnapshot(Kernel::HLERequestContext& ctx) {
clock_snapshot.network_calendar_info = additional_info; clock_snapshot.network_calendar_info = additional_info;
clock_snapshot.steady_clock_timepoint = steady_clock_time_point; clock_snapshot.steady_clock_timepoint = steady_clock_time_point;
clock_snapshot.location_name = location_name; clock_snapshot.location_name = LocationName{"UTC"};
clock_snapshot.clock_auto_adjustment_enabled = 1; clock_snapshot.clock_auto_adjustment_enabled = 1;
clock_snapshot.ipc_u8 = unknown_u8; clock_snapshot.type = initial_type;
IPC::ResponseBuilder rb{ctx, 2}; IPC::ResponseBuilder rb{ctx, 2};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
ctx.WriteBuffer(&clock_snapshot, sizeof(ClockSnapshot)); ctx.WriteBuffer(&clock_snapshot, sizeof(ClockSnapshot));

View file

@ -22,7 +22,6 @@ struct CalendarTime {
u8 hour; u8 hour;
u8 minute; u8 minute;
u8 second; u8 second;
INSERT_PADDING_BYTES(1);
}; };
static_assert(sizeof(CalendarTime) == 0x8, "CalendarTime structure has incorrect size"); static_assert(sizeof(CalendarTime) == 0x8, "CalendarTime structure has incorrect size");
@ -30,7 +29,7 @@ struct CalendarAdditionalInfo {
u32_le day_of_week; u32_le day_of_week;
u32_le day_of_year; u32_le day_of_year;
std::array<u8, 8> name; std::array<u8, 8> name;
INSERT_PADDING_BYTES(1); u8 is_dst;
s32_le utc_offset; s32_le utc_offset;
}; };
static_assert(sizeof(CalendarAdditionalInfo) == 0x18, static_assert(sizeof(CalendarAdditionalInfo) == 0x18,
@ -42,8 +41,10 @@ struct TimeZoneRule {
}; };
struct SteadyClockTimePoint { struct SteadyClockTimePoint {
using SourceID = std::array<u8, 16>;
u64_le value; u64_le value;
INSERT_PADDING_WORDS(4); SourceID source_id;
}; };
static_assert(sizeof(SteadyClockTimePoint) == 0x18, "SteadyClockTimePoint is incorrect size"); static_assert(sizeof(SteadyClockTimePoint) == 0x18, "SteadyClockTimePoint is incorrect size");
@ -66,8 +67,9 @@ struct ClockSnapshot {
SteadyClockTimePoint steady_clock_timepoint; SteadyClockTimePoint steady_clock_timepoint;
LocationName location_name; LocationName location_name;
u8 clock_auto_adjustment_enabled; u8 clock_auto_adjustment_enabled;
u8 ipc_u8; u8 type;
INSERT_PADDING_BYTES(2); u8 version;
INSERT_PADDING_BYTES(1);
}; };
static_assert(sizeof(ClockSnapshot) == 0xd0, "ClockSnapshot is an invalid size"); static_assert(sizeof(ClockSnapshot) == 0xd0, "ClockSnapshot is an invalid size");