diff options
| author | bunnei <bunneidev@gmail.com> | 2018-12-29 22:57:38 -0500 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-12-29 22:57:38 -0500 | 
| commit | f80229b67671f87d3adcd3bcfc7b1fa14ee1eda3 (patch) | |
| tree | 9962a5bffab187728595bd07f1970ce87f91af70 /src/core/hle | |
| parent | 8495f1df2a59b9200bd68e7ebd6730fead2f590c (diff) | |
| parent | fa97f50bff9d335dc30c7b0d445e296704505675 (diff) | |
Merge pull request #1964 from lioncash/time
service/time: Minor cleanup
Diffstat (limited to 'src/core/hle')
| -rw-r--r-- | src/core/hle/service/time/time.cpp | 20 | ||||
| -rw-r--r-- | src/core/hle/service/time/time.h | 12 | 
2 files changed, 18 insertions, 14 deletions
| diff --git a/src/core/hle/service/time/time.cpp b/src/core/hle/service/time/time.cpp index 60b201d06..16564de24 100644 --- a/src/core/hle/service/time/time.cpp +++ b/src/core/hle/service/time/time.cpp @@ -264,14 +264,12 @@ void Module::Interface::GetClockSnapshot(Kernel::HLERequestContext& ctx) {      LOG_DEBUG(Service_Time, "called");      IPC::RequestParser rp{ctx}; -    auto unknown_u8 = rp.PopRaw<u8>(); - -    ClockSnapshot clock_snapshot{}; +    const auto initial_type = rp.PopRaw<u8>();      const s64 time_since_epoch{std::chrono::duration_cast<std::chrono::seconds>(                                     std::chrono::system_clock::now().time_since_epoch())                                     .count()}; -    CalendarTime calendar_time{}; +      const std::time_t time(time_since_epoch);      const std::tm* tm = std::localtime(&time);      if (tm == nullptr) { @@ -280,16 +278,19 @@ void Module::Interface::GetClockSnapshot(Kernel::HLERequestContext& ctx) {          rb.Push(ResultCode(-1)); // TODO(ogniK): Find appropriate error code          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.month = tm->tm_mon + 1;      calendar_time.day = tm->tm_mday;      calendar_time.hour = tm->tm_hour;      calendar_time.minute = tm->tm_min;      calendar_time.second = tm->tm_sec; + +    ClockSnapshot clock_snapshot{};      clock_snapshot.system_posix_time = time_since_epoch;      clock_snapshot.network_posix_time = time_since_epoch;      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.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.ipc_u8 = unknown_u8; +    clock_snapshot.type = initial_type; +      IPC::ResponseBuilder rb{ctx, 2};      rb.Push(RESULT_SUCCESS);      ctx.WriteBuffer(&clock_snapshot, sizeof(ClockSnapshot)); diff --git a/src/core/hle/service/time/time.h b/src/core/hle/service/time/time.h index ea43fbea7..f11affe95 100644 --- a/src/core/hle/service/time/time.h +++ b/src/core/hle/service/time/time.h @@ -22,7 +22,6 @@ struct CalendarTime {      u8 hour;      u8 minute;      u8 second; -    INSERT_PADDING_BYTES(1);  };  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_year;      std::array<u8, 8> name; -    INSERT_PADDING_BYTES(1); +    u8 is_dst;      s32_le utc_offset;  };  static_assert(sizeof(CalendarAdditionalInfo) == 0x18, @@ -42,8 +41,10 @@ struct TimeZoneRule {  };  struct SteadyClockTimePoint { +    using SourceID = std::array<u8, 16>; +      u64_le value; -    INSERT_PADDING_WORDS(4); +    SourceID source_id;  };  static_assert(sizeof(SteadyClockTimePoint) == 0x18, "SteadyClockTimePoint is incorrect size"); @@ -66,8 +67,9 @@ struct ClockSnapshot {      SteadyClockTimePoint steady_clock_timepoint;      LocationName location_name;      u8 clock_auto_adjustment_enabled; -    u8 ipc_u8; -    INSERT_PADDING_BYTES(2); +    u8 type; +    u8 version; +    INSERT_PADDING_BYTES(1);  };  static_assert(sizeof(ClockSnapshot) == 0xd0, "ClockSnapshot is an invalid size"); | 
