Просмотр исходного кода

service/time: Fill in some structures and remove padding where not necessary

Lioncash 7 лет назад
Родитель
Сommit
af51f123fa
2 измененных файлов с 9 добавлено и 7 удалено
  1. 2 2
      src/core/hle/service/time/time.cpp
  2. 7 5
      src/core/hle/service/time/time.h

+ 2 - 2
src/core/hle/service/time/time.cpp

@@ -264,7 +264,7 @@ 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{};
     ClockSnapshot clock_snapshot{};
 
 
@@ -304,7 +304,7 @@ void Module::Interface::GetClockSnapshot(Kernel::HLERequestContext& ctx) {
     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 = location_name;
     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));

+ 7 - 5
src/core/hle/service/time/time.h

@@ -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;
-    INSERT_PADDING_BYTES(2);
+    u8 type;
+    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");