hid_firmware_settings.cpp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-3.0-or-later
  3. #include "core/hle/service/set/system_settings_server.h"
  4. #include "core/hle/service/sm/sm.h"
  5. #include "hid_core/resources/hid_firmware_settings.h"
  6. namespace Service::HID {
  7. HidFirmwareSettings::HidFirmwareSettings(Core::System& system) {
  8. m_set_sys =
  9. system.ServiceManager().GetService<Service::Set::ISystemSettingsServer>("set:sys", true);
  10. LoadSettings(true);
  11. }
  12. void HidFirmwareSettings::Reload() {
  13. LoadSettings(true);
  14. }
  15. void HidFirmwareSettings::LoadSettings(bool reload_config) {
  16. if (is_initialized && !reload_config) {
  17. return;
  18. }
  19. m_set_sys->GetSettingsItemValueImpl<bool>(is_debug_pad_enabled, "hid_debug",
  20. "enables_debugpad");
  21. m_set_sys->GetSettingsItemValueImpl<bool>(is_device_managed, "hid_debug", "manages_devices");
  22. m_set_sys->GetSettingsItemValueImpl<bool>(is_touch_i2c_managed, "hid_debug",
  23. "manages_touch_ic_i2c");
  24. m_set_sys->GetSettingsItemValueImpl<bool>(is_future_devices_emulated, "hid_debug",
  25. "emulate_future_device");
  26. m_set_sys->GetSettingsItemValueImpl<bool>(is_mcu_hardware_error_emulated, "hid_debug",
  27. "emulate_mcu_hardware_error");
  28. m_set_sys->GetSettingsItemValueImpl<bool>(is_rail_enabled, "hid_debug", "enables_rail");
  29. m_set_sys->GetSettingsItemValueImpl<bool>(is_firmware_update_failure_emulated, "hid_debug",
  30. "emulate_firmware_update_failure");
  31. is_firmware_update_failure = {};
  32. m_set_sys->GetSettingsItemValueImpl<bool>(is_ble_disabled, "hid_debug", "ble_disabled");
  33. m_set_sys->GetSettingsItemValueImpl<bool>(is_dscale_disabled, "hid_debug", "dscale_disabled");
  34. m_set_sys->GetSettingsItemValueImpl<bool>(is_handheld_forced, "hid_debug", "force_handheld");
  35. features_per_id_disabled = {};
  36. m_set_sys->GetSettingsItemValueImpl<bool>(is_touch_firmware_auto_update_disabled, "hid_debug",
  37. "touch_firmware_auto_update_disabled");
  38. bool has_rail_interface{};
  39. bool has_sio_mcu{};
  40. m_set_sys->GetSettingsItemValueImpl<bool>(has_rail_interface, "hid", "has_rail_interface");
  41. m_set_sys->GetSettingsItemValueImpl<bool>(has_sio_mcu, "hid", "has_sio_mcu");
  42. platform_config.has_rail_interface.Assign(has_rail_interface);
  43. platform_config.has_sio_mcu.Assign(has_sio_mcu);
  44. is_initialized = true;
  45. }
  46. bool HidFirmwareSettings::IsDebugPadEnabled() {
  47. LoadSettings(false);
  48. return is_debug_pad_enabled;
  49. }
  50. bool HidFirmwareSettings::IsDeviceManaged() {
  51. LoadSettings(false);
  52. return is_device_managed;
  53. }
  54. bool HidFirmwareSettings::IsEmulateFutureDevice() {
  55. LoadSettings(false);
  56. return is_future_devices_emulated;
  57. }
  58. bool HidFirmwareSettings::IsTouchI2cManaged() {
  59. LoadSettings(false);
  60. return is_touch_i2c_managed;
  61. }
  62. bool HidFirmwareSettings::IsHandheldForced() {
  63. LoadSettings(false);
  64. return is_handheld_forced;
  65. }
  66. bool HidFirmwareSettings::IsRailEnabled() {
  67. LoadSettings(false);
  68. return is_rail_enabled;
  69. }
  70. bool HidFirmwareSettings::IsHardwareErrorEmulated() {
  71. LoadSettings(false);
  72. return is_mcu_hardware_error_emulated;
  73. }
  74. bool HidFirmwareSettings::IsBleDisabled() {
  75. LoadSettings(false);
  76. return is_ble_disabled;
  77. }
  78. bool HidFirmwareSettings::IsDscaleDisabled() {
  79. LoadSettings(false);
  80. return is_dscale_disabled;
  81. }
  82. bool HidFirmwareSettings::IsTouchAutoUpdateDisabled() {
  83. LoadSettings(false);
  84. return is_touch_firmware_auto_update_disabled;
  85. }
  86. HidFirmwareSettings::FirmwareSetting HidFirmwareSettings::GetFirmwareUpdateFailure() {
  87. LoadSettings(false);
  88. return is_firmware_update_failure;
  89. }
  90. HidFirmwareSettings::FeaturesPerId HidFirmwareSettings::FeaturesDisabledPerId() {
  91. LoadSettings(false);
  92. return features_per_id_disabled;
  93. }
  94. Set::PlatformConfig HidFirmwareSettings::GetPlatformConfig() {
  95. LoadSettings(false);
  96. return platform_config;
  97. }
  98. } // namespace Service::HID