lbl.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. // Copyright 2018 yuzu emulator team
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #include <memory>
  5. #include "common/logging/log.h"
  6. #include "core/hle/ipc_helpers.h"
  7. #include "core/hle/kernel/hle_ipc.h"
  8. #include "core/hle/service/lbl/lbl.h"
  9. #include "core/hle/service/service.h"
  10. #include "core/hle/service/sm/sm.h"
  11. namespace Service::LBL {
  12. class LBL final : public ServiceFramework<LBL> {
  13. public:
  14. explicit LBL() : ServiceFramework{"lbl"} {
  15. // clang-format off
  16. static const FunctionInfo functions[] = {
  17. {0, nullptr, "Unknown1"},
  18. {1, nullptr, "Unknown2"},
  19. {2, nullptr, "Unknown3"},
  20. {3, nullptr, "GetCurrentBacklightLevel"},
  21. {4, nullptr, "Unknown4"},
  22. {5, nullptr, "GetAlsComputedBacklightLevel"},
  23. {6, nullptr, "TurnOffBacklight"},
  24. {7, nullptr, "TurnOnBacklight"},
  25. {8, nullptr, "GetBacklightStatus"},
  26. {9, nullptr, "Unknown5"},
  27. {10, nullptr, "Unknown6"},
  28. {11, nullptr, "Unknown7"},
  29. {12, nullptr, "Unknown8"},
  30. {13, nullptr, "Unknown9"},
  31. {14, nullptr, "Unknown10"},
  32. {15, nullptr, "GetAutoBrightnessSetting"},
  33. {16, nullptr, "ReadRawLightSensor"},
  34. {17, nullptr, "Unknown11"},
  35. {18, nullptr, "Unknown12"},
  36. {19, nullptr, "Unknown13"},
  37. {20, nullptr, "Unknown14"},
  38. {21, nullptr, "Unknown15"},
  39. {22, nullptr, "Unknown16"},
  40. {23, nullptr, "Unknown17"},
  41. {24, nullptr, "Unknown18"},
  42. {25, nullptr, "Unknown19"},
  43. {26, &LBL::EnableVrMode, "EnableVrMode"},
  44. {27, &LBL::DisableVrMode, "DisableVrMode"},
  45. {28, &LBL::GetVrMode, "GetVrMode"},
  46. };
  47. // clang-format on
  48. RegisterHandlers(functions);
  49. }
  50. private:
  51. void EnableVrMode(Kernel::HLERequestContext& ctx) {
  52. IPC::ResponseBuilder rb{ctx, 2};
  53. rb.Push(RESULT_SUCCESS);
  54. vr_mode_enabled = true;
  55. LOG_DEBUG(Service_LBL, "called");
  56. }
  57. void DisableVrMode(Kernel::HLERequestContext& ctx) {
  58. IPC::ResponseBuilder rb{ctx, 2};
  59. rb.Push(RESULT_SUCCESS);
  60. vr_mode_enabled = false;
  61. LOG_DEBUG(Service_LBL, "called");
  62. }
  63. void GetVrMode(Kernel::HLERequestContext& ctx) {
  64. IPC::ResponseBuilder rb{ctx, 3};
  65. rb.Push(RESULT_SUCCESS);
  66. rb.Push(vr_mode_enabled);
  67. LOG_DEBUG(Service_LBL, "called");
  68. }
  69. bool vr_mode_enabled = false;
  70. };
  71. void InstallInterfaces(SM::ServiceManager& sm) {
  72. std::make_shared<LBL>()->InstallAsService(sm);
  73. }
  74. } // namespace Service::LBL