irs.cpp 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. // Copyright 2018 yuzu emulator team
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #include "core/core.h"
  5. #include "core/core_timing.h"
  6. #include "core/hle/ipc_helpers.h"
  7. #include "core/hle/kernel/k_shared_memory.h"
  8. #include "core/hle/kernel/kernel.h"
  9. #include "core/hle/service/hid/irs.h"
  10. namespace Service::HID {
  11. IRS::IRS(Core::System& system_) : ServiceFramework{system_, "irs"} {
  12. // clang-format off
  13. static const FunctionInfo functions[] = {
  14. {302, &IRS::ActivateIrsensor, "ActivateIrsensor"},
  15. {303, &IRS::DeactivateIrsensor, "DeactivateIrsensor"},
  16. {304, &IRS::GetIrsensorSharedMemoryHandle, "GetIrsensorSharedMemoryHandle"},
  17. {305, &IRS::StopImageProcessor, "StopImageProcessor"},
  18. {306, &IRS::RunMomentProcessor, "RunMomentProcessor"},
  19. {307, &IRS::RunClusteringProcessor, "RunClusteringProcessor"},
  20. {308, &IRS::RunImageTransferProcessor, "RunImageTransferProcessor"},
  21. {309, &IRS::GetImageTransferProcessorState, "GetImageTransferProcessorState"},
  22. {310, &IRS::RunTeraPluginProcessor, "RunTeraPluginProcessor"},
  23. {311, &IRS::GetNpadIrCameraHandle, "GetNpadIrCameraHandle"},
  24. {312, &IRS::RunPointingProcessor, "RunPointingProcessor"},
  25. {313, &IRS::SuspendImageProcessor, "SuspendImageProcessor"},
  26. {314, &IRS::CheckFirmwareVersion, "CheckFirmwareVersion"},
  27. {315, &IRS::SetFunctionLevel, "SetFunctionLevel"},
  28. {316, &IRS::RunImageTransferExProcessor, "RunImageTransferExProcessor"},
  29. {317, &IRS::RunIrLedProcessor, "RunIrLedProcessor"},
  30. {318, &IRS::StopImageProcessorAsync, "StopImageProcessorAsync"},
  31. {319, &IRS::ActivateIrsensorWithFunctionLevel, "ActivateIrsensorWithFunctionLevel"},
  32. };
  33. // clang-format on
  34. RegisterHandlers(functions);
  35. }
  36. void IRS::ActivateIrsensor(Kernel::HLERequestContext& ctx) {
  37. LOG_WARNING(Service_IRS, "(STUBBED) called");
  38. IPC::ResponseBuilder rb{ctx, 2};
  39. rb.Push(ResultSuccess);
  40. }
  41. void IRS::DeactivateIrsensor(Kernel::HLERequestContext& ctx) {
  42. LOG_WARNING(Service_IRS, "(STUBBED) called");
  43. IPC::ResponseBuilder rb{ctx, 2};
  44. rb.Push(ResultSuccess);
  45. }
  46. void IRS::GetIrsensorSharedMemoryHandle(Kernel::HLERequestContext& ctx) {
  47. LOG_DEBUG(Service_IRS, "called");
  48. IPC::ResponseBuilder rb{ctx, 2, 1};
  49. rb.Push(ResultSuccess);
  50. rb.PushCopyObjects(&system.Kernel().GetIrsSharedMem());
  51. }
  52. void IRS::StopImageProcessor(Kernel::HLERequestContext& ctx) {
  53. LOG_WARNING(Service_IRS, "(STUBBED) called");
  54. IPC::ResponseBuilder rb{ctx, 2};
  55. rb.Push(ResultSuccess);
  56. }
  57. void IRS::RunMomentProcessor(Kernel::HLERequestContext& ctx) {
  58. LOG_WARNING(Service_IRS, "(STUBBED) called");
  59. IPC::ResponseBuilder rb{ctx, 2};
  60. rb.Push(ResultSuccess);
  61. }
  62. void IRS::RunClusteringProcessor(Kernel::HLERequestContext& ctx) {
  63. LOG_WARNING(Service_IRS, "(STUBBED) called");
  64. IPC::ResponseBuilder rb{ctx, 2};
  65. rb.Push(ResultSuccess);
  66. }
  67. void IRS::RunImageTransferProcessor(Kernel::HLERequestContext& ctx) {
  68. LOG_WARNING(Service_IRS, "(STUBBED) called");
  69. IPC::ResponseBuilder rb{ctx, 2};
  70. rb.Push(ResultSuccess);
  71. }
  72. void IRS::GetImageTransferProcessorState(Kernel::HLERequestContext& ctx) {
  73. LOG_WARNING(Service_IRS, "(STUBBED) called");
  74. IPC::ResponseBuilder rb{ctx, 5};
  75. rb.Push(ResultSuccess);
  76. rb.PushRaw<u64>(system.CoreTiming().GetCPUTicks());
  77. rb.PushRaw<u32>(0);
  78. }
  79. void IRS::RunTeraPluginProcessor(Kernel::HLERequestContext& ctx) {
  80. LOG_WARNING(Service_IRS, "(STUBBED) called");
  81. IPC::ResponseBuilder rb{ctx, 2};
  82. rb.Push(ResultSuccess);
  83. }
  84. void IRS::GetNpadIrCameraHandle(Kernel::HLERequestContext& ctx) {
  85. LOG_WARNING(Service_IRS, "(STUBBED) called");
  86. IPC::ResponseBuilder rb{ctx, 3};
  87. rb.Push(ResultSuccess);
  88. rb.PushRaw<u32>(device_handle);
  89. }
  90. void IRS::RunPointingProcessor(Kernel::HLERequestContext& ctx) {
  91. LOG_WARNING(Service_IRS, "(STUBBED) called");
  92. IPC::ResponseBuilder rb{ctx, 2};
  93. rb.Push(ResultSuccess);
  94. }
  95. void IRS::SuspendImageProcessor(Kernel::HLERequestContext& ctx) {
  96. LOG_WARNING(Service_IRS, "(STUBBED) called");
  97. IPC::ResponseBuilder rb{ctx, 2};
  98. rb.Push(ResultSuccess);
  99. }
  100. void IRS::CheckFirmwareVersion(Kernel::HLERequestContext& ctx) {
  101. LOG_WARNING(Service_IRS, "(STUBBED) called");
  102. IPC::ResponseBuilder rb{ctx, 2};
  103. rb.Push(ResultSuccess);
  104. }
  105. void IRS::SetFunctionLevel(Kernel::HLERequestContext& ctx) {
  106. LOG_WARNING(Service_IRS, "(STUBBED) called");
  107. IPC::ResponseBuilder rb{ctx, 2};
  108. rb.Push(ResultSuccess);
  109. }
  110. void IRS::RunImageTransferExProcessor(Kernel::HLERequestContext& ctx) {
  111. LOG_WARNING(Service_IRS, "(STUBBED) called");
  112. IPC::ResponseBuilder rb{ctx, 2};
  113. rb.Push(ResultSuccess);
  114. }
  115. void IRS::RunIrLedProcessor(Kernel::HLERequestContext& ctx) {
  116. LOG_WARNING(Service_IRS, "(STUBBED) called");
  117. IPC::ResponseBuilder rb{ctx, 2};
  118. rb.Push(ResultSuccess);
  119. }
  120. void IRS::StopImageProcessorAsync(Kernel::HLERequestContext& ctx) {
  121. LOG_WARNING(Service_IRS, "(STUBBED) called");
  122. IPC::ResponseBuilder rb{ctx, 2};
  123. rb.Push(ResultSuccess);
  124. }
  125. void IRS::ActivateIrsensorWithFunctionLevel(Kernel::HLERequestContext& ctx) {
  126. LOG_WARNING(Service_IRS, "(STUBBED) called");
  127. IPC::ResponseBuilder rb{ctx, 2};
  128. rb.Push(ResultSuccess);
  129. }
  130. IRS::~IRS() = default;
  131. IRS_SYS::IRS_SYS(Core::System& system_) : ServiceFramework{system_, "irs:sys"} {
  132. // clang-format off
  133. static const FunctionInfo functions[] = {
  134. {500, nullptr, "SetAppletResourceUserId"},
  135. {501, nullptr, "RegisterAppletResourceUserId"},
  136. {502, nullptr, "UnregisterAppletResourceUserId"},
  137. {503, nullptr, "EnableAppletToGetInput"},
  138. };
  139. // clang-format on
  140. RegisterHandlers(functions);
  141. }
  142. IRS_SYS::~IRS_SYS() = default;
  143. } // namespace Service::HID