manager.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include "core/hle/service/psc/time/alarms.h"
  5. #include "core/hle/service/psc/time/clocks/context_writers.h"
  6. #include "core/hle/service/psc/time/clocks/ephemeral_network_system_clock_core.h"
  7. #include "core/hle/service/psc/time/clocks/standard_local_system_clock_core.h"
  8. #include "core/hle/service/psc/time/clocks/standard_network_system_clock_core.h"
  9. #include "core/hle/service/psc/time/clocks/standard_steady_clock_core.h"
  10. #include "core/hle/service/psc/time/clocks/standard_user_system_clock_core.h"
  11. #include "core/hle/service/psc/time/clocks/tick_based_steady_clock_core.h"
  12. #include "core/hle/service/psc/time/power_state_request_manager.h"
  13. #include "core/hle/service/psc/time/shared_memory.h"
  14. #include "core/hle/service/psc/time/time_zone.h"
  15. namespace Core {
  16. class System;
  17. }
  18. namespace Service::PSC::Time {
  19. class TimeManager {
  20. public:
  21. explicit TimeManager(Core::System& system)
  22. : m_system{system}, m_standard_steady_clock{system}, m_tick_based_steady_clock{m_system},
  23. m_standard_local_system_clock{m_standard_steady_clock},
  24. m_standard_network_system_clock{m_standard_steady_clock},
  25. m_standard_user_system_clock{m_system, m_standard_local_system_clock,
  26. m_standard_network_system_clock},
  27. m_ephemeral_network_clock{m_tick_based_steady_clock}, m_shared_memory{m_system},
  28. m_power_state_request_manager{m_system}, m_alarms{m_system, m_standard_steady_clock,
  29. m_power_state_request_manager},
  30. m_local_system_clock_context_writer{m_system, m_shared_memory},
  31. m_network_system_clock_context_writer{m_system, m_shared_memory,
  32. m_standard_user_system_clock},
  33. m_ephemeral_network_clock_context_writer{m_system} {}
  34. Core::System& m_system;
  35. StandardSteadyClockCore m_standard_steady_clock;
  36. TickBasedSteadyClockCore m_tick_based_steady_clock;
  37. StandardLocalSystemClockCore m_standard_local_system_clock;
  38. StandardNetworkSystemClockCore m_standard_network_system_clock;
  39. StandardUserSystemClockCore m_standard_user_system_clock;
  40. EphemeralNetworkSystemClockCore m_ephemeral_network_clock;
  41. TimeZone m_time_zone;
  42. SharedMemory m_shared_memory;
  43. PowerStateRequestManager m_power_state_request_manager;
  44. Alarms m_alarms;
  45. LocalSystemClockContextWriter m_local_system_clock_context_writer;
  46. NetworkSystemClockContextWriter m_network_system_clock_context_writer;
  47. EphemeralNetworkSystemClockContextWriter m_ephemeral_network_clock_context_writer;
  48. };
  49. } // namespace Service::PSC::Time