From cff2d0e19e164d879b57bab9d06306fa70a1049e Mon Sep 17 00:00:00 2001 From: Narr the Reg Date: Fri, 17 Nov 2023 11:46:26 -0600 Subject: service: hid: Create appropriate hid resources --- src/core/hle/service/hid/resource_manager.h | 119 +++++++++++++++------------- 1 file changed, 63 insertions(+), 56 deletions(-) (limited to 'src/core/hle/service/hid/resource_manager.h') diff --git a/src/core/hle/service/hid/resource_manager.h b/src/core/hle/service/hid/resource_manager.h index 34dbf36bc..2b6a9b5e6 100644 --- a/src/core/hle/service/hid/resource_manager.h +++ b/src/core/hle/service/hid/resource_manager.h @@ -3,10 +3,6 @@ #pragma once -#include - -#include "core/core.h" -#include "core/hle/service/hid/controllers/controller_base.h" #include "core/hle/service/kernel_helpers.h" #include "core/hle/service/service.h" @@ -14,74 +10,85 @@ namespace Core::Timing { struct EventType; } -namespace Core::HID { -class HIDCore; -} - namespace Service::HID { +class Controller_Stubbed; +class ConsoleSixAxis; +class DebugPad; +class Gesture; +class Keyboard; +class Mouse; +class NPad; +class Palma; +class SevenSixAxis; +class SixAxis; +class TouchScreen; +class XPad; + +using CaptureButton = Controller_Stubbed; +using DebugMouse = Controller_Stubbed; +using HomeButton = Controller_Stubbed; +using SleepButton = Controller_Stubbed; +using UniquePad = Controller_Stubbed; -enum class HidController : std::size_t { - DebugPad, - Touchscreen, - Mouse, - Keyboard, - XPad, - HomeButton, - SleepButton, - CaptureButton, - InputDetector, - UniquePad, - NPad, - Gesture, - ConsoleSixAxisSensor, - DebugMouse, - Palma, - - MaxControllers, -}; class ResourceManager { + public: explicit ResourceManager(Core::System& system_); ~ResourceManager(); - template - T& GetController(HidController controller) { - return static_cast(*controllers[static_cast(controller)]); - } - - template - const T& GetController(HidController controller) const { - return static_cast(*controllers[static_cast(controller)]); - } - void Initialize(); + std::shared_ptr GetCaptureButton() const; + std::shared_ptr GetConsoleSixAxis() const; + std::shared_ptr GetDebugMouse() const; + std::shared_ptr GetDebugPad() const; + std::shared_ptr GetGesture() const; + std::shared_ptr GetHomeButton() const; + std::shared_ptr GetKeyboard() const; + std::shared_ptr GetMouse() const; + std::shared_ptr GetNpad() const; + std::shared_ptr GetPalma() const; + std::shared_ptr GetSevenSixAxis() const; + std::shared_ptr GetSixAxis() const; + std::shared_ptr GetSleepButton() const; + std::shared_ptr GetTouchScreen() const; + std::shared_ptr GetUniquePad() const; + void UpdateControllers(std::uintptr_t user_data, std::chrono::nanoseconds ns_late); void UpdateNpad(std::uintptr_t user_data, std::chrono::nanoseconds ns_late); void UpdateMouseKeyboard(std::uintptr_t user_data, std::chrono::nanoseconds ns_late); void UpdateMotion(std::uintptr_t user_data, std::chrono::nanoseconds ns_late); private: - template - void MakeController(HidController controller, u8* shared_memory) { - if constexpr (std::is_constructible_v) { - controllers[static_cast(controller)] = - std::make_unique(system, shared_memory); - } else { - controllers[static_cast(controller)] = - std::make_unique(system.HIDCore(), shared_memory); - } - } - - template - void MakeControllerWithServiceContext(HidController controller, u8* shared_memory) { - controllers[static_cast(controller)] = - std::make_unique(system.HIDCore(), shared_memory, service_context); - } - bool is_initialized{false}; - std::array, static_cast(HidController::MaxControllers)> - controllers{}; + + std::shared_ptr capture_button = nullptr; + std::shared_ptr console_six_axis = nullptr; + std::shared_ptr debug_mouse = nullptr; + std::shared_ptr debug_pad = nullptr; + std::shared_ptr gesture = nullptr; + std::shared_ptr home_button = nullptr; + std::shared_ptr keyboard = nullptr; + std::shared_ptr mouse = nullptr; + std::shared_ptr npad = nullptr; + std::shared_ptr palma = nullptr; + std::shared_ptr seven_six_axis = nullptr; + std::shared_ptr six_axis = nullptr; + std::shared_ptr sleep_button = nullptr; + std::shared_ptr touch_screen = nullptr; + std::shared_ptr unique_pad = nullptr; + std::shared_ptr xpad = nullptr; + + // TODO: Create these resources + // std::shared_ptr audio_control = nullptr; + // std::shared_ptr button_config = nullptr; + // std::shared_ptr config = nullptr; + // std::shared_ptr connection = nullptr; + // std::shared_ptr custom_config = nullptr; + // std::shared_ptr digitizer = nullptr; + // std::shared_ptr hdls = nullptr; + // std::shared_ptr play_report = nullptr; + // std::shared_ptr rail = nullptr; Core::System& system; KernelHelpers::ServiceContext service_context; -- cgit v1.2.3