hid_firmware_settings.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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->GetSettingsItemValue<bool>(is_debug_pad_enabled, "hid_debug", "enables_debugpad");
  20. m_set_sys->GetSettingsItemValue<bool>(is_device_managed, "hid_debug", "manages_devices");
  21. m_set_sys->GetSettingsItemValue<bool>(is_touch_i2c_managed, "hid_debug",
  22. "manages_touch_ic_i2c");
  23. m_set_sys->GetSettingsItemValue<bool>(is_future_devices_emulated, "hid_debug",
  24. "emulate_future_device");
  25. m_set_sys->GetSettingsItemValue<bool>(is_mcu_hardware_error_emulated, "hid_debug",
  26. "emulate_mcu_hardware_error");
  27. m_set_sys->GetSettingsItemValue<bool>(is_rail_enabled, "hid_debug", "enables_rail");
  28. m_set_sys->GetSettingsItemValue<bool>(is_firmware_update_failure_emulated, "hid_debug",
  29. "emulate_firmware_update_failure");
  30. is_firmware_update_failure = {};
  31. m_set_sys->GetSettingsItemValue<bool>(is_ble_disabled, "hid_debug", "ble_disabled");
  32. m_set_sys->GetSettingsItemValue<bool>(is_dscale_disabled, "hid_debug", "dscale_disabled");
  33. m_set_sys->GetSettingsItemValue<bool>(is_handheld_forced, "hid_debug", "force_handheld");
  34. features_per_id_disabled = {};
  35. m_set_sys->GetSettingsItemValue<bool>(is_touch_firmware_auto_update_disabled, "hid_debug",
  36. "touch_firmware_auto_update_disabled");
  37. bool has_rail_interface{};
  38. bool has_sio_mcu{};
  39. m_set_sys->GetSettingsItemValue<bool>(has_rail_interface, "hid", "has_rail_interface");
  40. m_set_sys->GetSettingsItemValue<bool>(has_sio_mcu, "hid", "has_sio_mcu");
  41. platform_config.has_rail_interface.Assign(has_rail_interface);
  42. platform_config.has_sio_mcu.Assign(has_sio_mcu);
  43. is_initialized = true;
  44. }
  45. bool HidFirmwareSettings::IsDebugPadEnabled() {
  46. LoadSettings(false);
  47. return is_debug_pad_enabled;
  48. }
  49. bool HidFirmwareSettings::IsDeviceManaged() {
  50. LoadSettings(false);
  51. return is_device_managed;
  52. }
  53. bool HidFirmwareSettings::IsEmulateFutureDevice() {
  54. LoadSettings(false);
  55. return is_future_devices_emulated;
  56. }
  57. bool HidFirmwareSettings::IsTouchI2cManaged() {
  58. LoadSettings(false);
  59. return is_touch_i2c_managed;
  60. }
  61. bool HidFirmwareSettings::IsHandheldForced() {
  62. LoadSettings(false);
  63. return is_handheld_forced;
  64. }
  65. bool HidFirmwareSettings::IsRailEnabled() {
  66. LoadSettings(false);
  67. return is_rail_enabled;
  68. }
  69. bool HidFirmwareSettings::IsHardwareErrorEmulated() {
  70. LoadSettings(false);
  71. return is_mcu_hardware_error_emulated;
  72. }
  73. bool HidFirmwareSettings::IsBleDisabled() {
  74. LoadSettings(false);
  75. return is_ble_disabled;
  76. }
  77. bool HidFirmwareSettings::IsDscaleDisabled() {
  78. LoadSettings(false);
  79. return is_dscale_disabled;
  80. }
  81. bool HidFirmwareSettings::IsTouchAutoUpdateDisabled() {
  82. LoadSettings(false);
  83. return is_touch_firmware_auto_update_disabled;
  84. }
  85. HidFirmwareSettings::FirmwareSetting HidFirmwareSettings::GetFirmwareUpdateFailure() {
  86. LoadSettings(false);
  87. return is_firmware_update_failure;
  88. }
  89. HidFirmwareSettings::FeaturesPerId HidFirmwareSettings::FeaturesDisabledPerId() {
  90. LoadSettings(false);
  91. return features_per_id_disabled;
  92. }
  93. Set::PlatformConfig HidFirmwareSettings::GetPlatformConfig() {
  94. LoadSettings(false);
  95. return platform_config;
  96. }
  97. } // namespace Service::HID