1 // Copyright 2018 yuzu emulator team 2 // Licensed under GPLv2 or any later version 3 // Refer to the license.txt file included. 4 5 #pragma once 6 7 #include "core/hle/service/service.h" 8 #include "core/hle/service/time/clock_types.h" 9 #include "core/hle/service/time/time_manager.h" 10 11 namespace Core { 12 class System; 13 } 14 15 namespace Service::Time { 16 17 class Module final { 18 public: 19 Module() = default; 20 21 class Interface : public ServiceFramework<Interface> { 22 public: 23 explicit Interface(std::shared_ptr<Module> module_, Core::System& system_, 24 const char* name); 25 ~Interface() override; 26 27 void GetStandardUserSystemClock(Kernel::HLERequestContext& ctx); 28 void GetStandardNetworkSystemClock(Kernel::HLERequestContext& ctx); 29 void GetStandardSteadyClock(Kernel::HLERequestContext& ctx); 30 void GetTimeZoneService(Kernel::HLERequestContext& ctx); 31 void GetStandardLocalSystemClock(Kernel::HLERequestContext& ctx); 32 void IsStandardNetworkSystemClockAccuracySufficient(Kernel::HLERequestContext& ctx); 33 void CalculateMonotonicSystemClockBaseTimePoint(Kernel::HLERequestContext& ctx); 34 void GetClockSnapshot(Kernel::HLERequestContext& ctx); 35 void GetClockSnapshotFromSystemClockContext(Kernel::HLERequestContext& ctx); 36 void CalculateStandardUserSystemClockDifferenceByUser(Kernel::HLERequestContext& ctx); 37 void CalculateSpanBetween(Kernel::HLERequestContext& ctx); 38 void GetSharedMemoryNativeHandle(Kernel::HLERequestContext& ctx); 39 40 private: 41 ResultCode GetClockSnapshotFromSystemClockContextInternal( 42 Kernel::Thread* thread, Clock::SystemClockContext user_context, 43 Clock::SystemClockContext network_context, u8 type, 44 Clock::ClockSnapshot& cloc_snapshot); 45 46 protected: 47 std::shared_ptr<Module> module; 48 }; 49 }; 50 51 /// Registers all Time services with the specified service manager. 52 void InstallInterfaces(Core::System& system); 53 54 } // namespace Service::Time 55