hid_server.h 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-3.0-or-later
  3. #pragma once
  4. #include "core/hle/service/service.h"
  5. namespace Core {
  6. class System;
  7. }
  8. namespace Service::HID {
  9. class ResourceManager;
  10. class HidFirmwareSettings;
  11. class IHidServer final : public ServiceFramework<IHidServer> {
  12. public:
  13. explicit IHidServer(Core::System& system_, std::shared_ptr<ResourceManager> resource,
  14. std::shared_ptr<HidFirmwareSettings> settings);
  15. ~IHidServer() override;
  16. std::shared_ptr<ResourceManager> GetResourceManager();
  17. private:
  18. void CreateAppletResource(HLERequestContext& ctx);
  19. void ActivateDebugPad(HLERequestContext& ctx);
  20. void ActivateTouchScreen(HLERequestContext& ctx);
  21. void ActivateMouse(HLERequestContext& ctx);
  22. void ActivateKeyboard(HLERequestContext& ctx);
  23. void SendKeyboardLockKeyEvent(HLERequestContext& ctx);
  24. void AcquireXpadIdEventHandle(HLERequestContext& ctx);
  25. void ReleaseXpadIdEventHandle(HLERequestContext& ctx);
  26. void ActivateXpad(HLERequestContext& ctx);
  27. void GetXpadIds(HLERequestContext& ctx);
  28. void ActivateJoyXpad(HLERequestContext& ctx);
  29. void GetJoyXpadLifoHandle(HLERequestContext& ctx);
  30. void GetJoyXpadIds(HLERequestContext& ctx);
  31. void ActivateSixAxisSensor(HLERequestContext& ctx);
  32. void DeactivateSixAxisSensor(HLERequestContext& ctx);
  33. void GetSixAxisSensorLifoHandle(HLERequestContext& ctx);
  34. void ActivateJoySixAxisSensor(HLERequestContext& ctx);
  35. void DeactivateJoySixAxisSensor(HLERequestContext& ctx);
  36. void GetJoySixAxisSensorLifoHandle(HLERequestContext& ctx);
  37. void StartSixAxisSensor(HLERequestContext& ctx);
  38. void StopSixAxisSensor(HLERequestContext& ctx);
  39. void IsSixAxisSensorFusionEnabled(HLERequestContext& ctx);
  40. void EnableSixAxisSensorFusion(HLERequestContext& ctx);
  41. void SetSixAxisSensorFusionParameters(HLERequestContext& ctx);
  42. void GetSixAxisSensorFusionParameters(HLERequestContext& ctx);
  43. void ResetSixAxisSensorFusionParameters(HLERequestContext& ctx);
  44. void SetGyroscopeZeroDriftMode(HLERequestContext& ctx);
  45. void GetGyroscopeZeroDriftMode(HLERequestContext& ctx);
  46. void ResetGyroscopeZeroDriftMode(HLERequestContext& ctx);
  47. void IsSixAxisSensorAtRest(HLERequestContext& ctx);
  48. void IsFirmwareUpdateAvailableForSixAxisSensor(HLERequestContext& ctx);
  49. void EnableSixAxisSensorUnalteredPassthrough(HLERequestContext& ctx);
  50. void IsSixAxisSensorUnalteredPassthroughEnabled(HLERequestContext& ctx);
  51. void LoadSixAxisSensorCalibrationParameter(HLERequestContext& ctx);
  52. void GetSixAxisSensorIcInformation(HLERequestContext& ctx);
  53. void ResetIsSixAxisSensorDeviceNewlyAssigned(HLERequestContext& ctx);
  54. void ActivateGesture(HLERequestContext& ctx);
  55. void SetSupportedNpadStyleSet(HLERequestContext& ctx);
  56. void GetSupportedNpadStyleSet(HLERequestContext& ctx);
  57. void SetSupportedNpadIdType(HLERequestContext& ctx);
  58. void ActivateNpad(HLERequestContext& ctx);
  59. void DeactivateNpad(HLERequestContext& ctx);
  60. void AcquireNpadStyleSetUpdateEventHandle(HLERequestContext& ctx);
  61. void DisconnectNpad(HLERequestContext& ctx);
  62. void GetPlayerLedPattern(HLERequestContext& ctx);
  63. void ActivateNpadWithRevision(HLERequestContext& ctx);
  64. void SetNpadJoyHoldType(HLERequestContext& ctx);
  65. void GetNpadJoyHoldType(HLERequestContext& ctx);
  66. void SetNpadJoyAssignmentModeSingleByDefault(HLERequestContext& ctx);
  67. void SetNpadJoyAssignmentModeSingle(HLERequestContext& ctx);
  68. void SetNpadJoyAssignmentModeDual(HLERequestContext& ctx);
  69. void MergeSingleJoyAsDualJoy(HLERequestContext& ctx);
  70. void StartLrAssignmentMode(HLERequestContext& ctx);
  71. void StopLrAssignmentMode(HLERequestContext& ctx);
  72. void SetNpadHandheldActivationMode(HLERequestContext& ctx);
  73. void GetNpadHandheldActivationMode(HLERequestContext& ctx);
  74. void SwapNpadAssignment(HLERequestContext& ctx);
  75. void IsUnintendedHomeButtonInputProtectionEnabled(HLERequestContext& ctx);
  76. void EnableUnintendedHomeButtonInputProtection(HLERequestContext& ctx);
  77. void SetNpadJoyAssignmentModeSingleWithDestination(HLERequestContext& ctx);
  78. void SetNpadAnalogStickUseCenterClamp(HLERequestContext& ctx);
  79. void SetNpadCaptureButtonAssignment(HLERequestContext& ctx);
  80. void ClearNpadCaptureButtonAssignment(HLERequestContext& ctx);
  81. void GetVibrationDeviceInfo(HLERequestContext& ctx);
  82. void SendVibrationValue(HLERequestContext& ctx);
  83. void GetActualVibrationValue(HLERequestContext& ctx);
  84. void CreateActiveVibrationDeviceList(HLERequestContext& ctx);
  85. void PermitVibration(HLERequestContext& ctx);
  86. void IsVibrationPermitted(HLERequestContext& ctx);
  87. void SendVibrationValues(HLERequestContext& ctx);
  88. void SendVibrationGcErmCommand(HLERequestContext& ctx);
  89. void GetActualVibrationGcErmCommand(HLERequestContext& ctx);
  90. void BeginPermitVibrationSession(HLERequestContext& ctx);
  91. void EndPermitVibrationSession(HLERequestContext& ctx);
  92. void IsVibrationDeviceMounted(HLERequestContext& ctx);
  93. void SendVibrationValueInBool(HLERequestContext& ctx);
  94. void ActivateConsoleSixAxisSensor(HLERequestContext& ctx);
  95. void StartConsoleSixAxisSensor(HLERequestContext& ctx);
  96. void StopConsoleSixAxisSensor(HLERequestContext& ctx);
  97. void ActivateSevenSixAxisSensor(HLERequestContext& ctx);
  98. void StartSevenSixAxisSensor(HLERequestContext& ctx);
  99. void StopSevenSixAxisSensor(HLERequestContext& ctx);
  100. void InitializeSevenSixAxisSensor(HLERequestContext& ctx);
  101. void FinalizeSevenSixAxisSensor(HLERequestContext& ctx);
  102. void ResetSevenSixAxisSensorTimestamp(HLERequestContext& ctx);
  103. void IsUsbFullKeyControllerEnabled(HLERequestContext& ctx);
  104. void GetPalmaConnectionHandle(HLERequestContext& ctx);
  105. void InitializePalma(HLERequestContext& ctx);
  106. void AcquirePalmaOperationCompleteEvent(HLERequestContext& ctx);
  107. void GetPalmaOperationInfo(HLERequestContext& ctx);
  108. void PlayPalmaActivity(HLERequestContext& ctx);
  109. void SetPalmaFrModeType(HLERequestContext& ctx);
  110. void ReadPalmaStep(HLERequestContext& ctx);
  111. void EnablePalmaStep(HLERequestContext& ctx);
  112. void ResetPalmaStep(HLERequestContext& ctx);
  113. void ReadPalmaApplicationSection(HLERequestContext& ctx);
  114. void WritePalmaApplicationSection(HLERequestContext& ctx);
  115. void ReadPalmaUniqueCode(HLERequestContext& ctx);
  116. void SetPalmaUniqueCodeInvalid(HLERequestContext& ctx);
  117. void WritePalmaActivityEntry(HLERequestContext& ctx);
  118. void WritePalmaRgbLedPatternEntry(HLERequestContext& ctx);
  119. void WritePalmaWaveEntry(HLERequestContext& ctx);
  120. void SetPalmaDataBaseIdentificationVersion(HLERequestContext& ctx);
  121. void GetPalmaDataBaseIdentificationVersion(HLERequestContext& ctx);
  122. void SuspendPalmaFeature(HLERequestContext& ctx);
  123. void GetPalmaOperationResult(HLERequestContext& ctx);
  124. void ReadPalmaPlayLog(HLERequestContext& ctx);
  125. void ResetPalmaPlayLog(HLERequestContext& ctx);
  126. void SetIsPalmaAllConnectable(HLERequestContext& ctx);
  127. void SetIsPalmaPairedConnectable(HLERequestContext& ctx);
  128. void PairPalma(HLERequestContext& ctx);
  129. void SetPalmaBoostMode(HLERequestContext& ctx);
  130. void CancelWritePalmaWaveEntry(HLERequestContext& ctx);
  131. void EnablePalmaBoostMode(HLERequestContext& ctx);
  132. void GetPalmaBluetoothAddress(HLERequestContext& ctx);
  133. void SetDisallowedPalmaConnection(HLERequestContext& ctx);
  134. void SetNpadCommunicationMode(HLERequestContext& ctx);
  135. void GetNpadCommunicationMode(HLERequestContext& ctx);
  136. void SetTouchScreenConfiguration(HLERequestContext& ctx);
  137. void IsFirmwareUpdateNeededForNotification(HLERequestContext& ctx);
  138. void SetTouchScreenResolution(HLERequestContext& ctx);
  139. std::shared_ptr<ResourceManager> resource_manager;
  140. std::shared_ptr<HidFirmwareSettings> firmware_settings;
  141. };
  142. } // namespace Service::HID