Browse Source
service: hid: Introduce firmware settings and update activate controller calls
nce_cpp
service: hid: Introduce firmware settings and update activate controller calls
nce_cpp
12 changed files with 295 additions and 54 deletions
-
2src/core/CMakeLists.txt
-
9src/core/hle/service/hid/controllers/controller_base.cpp
-
4src/core/hle/service/hid/controllers/controller_base.h
-
7src/core/hle/service/hid/controllers/npad.h
-
2src/core/hle/service/hid/controllers/palma.cpp
-
7src/core/hle/service/hid/hid.cpp
-
99src/core/hle/service/hid/hid_firmware_settings.cpp
-
54src/core/hle/service/hid/hid_firmware_settings.h
-
146src/core/hle/service/hid/hid_server.cpp
-
5src/core/hle/service/hid/hid_server.h
-
12src/core/hle/service/hid/resource_manager.cpp
-
2src/core/hle/service/hid/resource_manager.h
@ -0,0 +1,99 @@ |
|||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
|||
// SPDX-License-Identifier: GPL-3.0-or-later
|
|||
|
|||
#include "core/hle/service/hid/hid_firmware_settings.h"
|
|||
|
|||
namespace Service::HID { |
|||
|
|||
HidFirmwareSettings::HidFirmwareSettings() { |
|||
LoadSettings(true); |
|||
} |
|||
|
|||
void HidFirmwareSettings::Reload() { |
|||
LoadSettings(true); |
|||
} |
|||
|
|||
void HidFirmwareSettings::LoadSettings(bool reload_config) { |
|||
if (is_initalized && !reload_config) { |
|||
return; |
|||
} |
|||
|
|||
// TODO: Use nn::settings::fwdbg::GetSettingsItemValue to load config values
|
|||
|
|||
is_debug_pad_enabled = true; |
|||
is_device_managed = true; |
|||
is_touch_i2c_managed = is_device_managed; |
|||
is_future_devices_emulated = false; |
|||
is_mcu_hardware_error_emulated = false; |
|||
is_rail_enabled = true; |
|||
is_firmware_update_failure_emulated = false; |
|||
is_firmware_update_failure = {}; |
|||
is_ble_disabled = false; |
|||
is_dscale_disabled = false; |
|||
is_handheld_forced = true; |
|||
features_per_id_disabled = {}; |
|||
is_touch_firmware_auto_update_disabled = false; |
|||
is_initalized = true; |
|||
} |
|||
|
|||
bool HidFirmwareSettings::IsDebugPadEnabled() { |
|||
LoadSettings(false); |
|||
return is_debug_pad_enabled; |
|||
} |
|||
|
|||
bool HidFirmwareSettings::IsDeviceManaged() { |
|||
LoadSettings(false); |
|||
return is_device_managed; |
|||
} |
|||
|
|||
bool HidFirmwareSettings::IsEmulateFutureDevice() { |
|||
LoadSettings(false); |
|||
return is_future_devices_emulated; |
|||
} |
|||
|
|||
bool HidFirmwareSettings::IsTouchI2cManaged() { |
|||
LoadSettings(false); |
|||
return is_touch_i2c_managed; |
|||
} |
|||
|
|||
bool HidFirmwareSettings::IsHandheldForced() { |
|||
LoadSettings(false); |
|||
return is_handheld_forced; |
|||
} |
|||
|
|||
bool HidFirmwareSettings::IsRailEnabled() { |
|||
LoadSettings(false); |
|||
return is_rail_enabled; |
|||
} |
|||
|
|||
bool HidFirmwareSettings::IsHardwareErrorEmulated() { |
|||
LoadSettings(false); |
|||
return is_mcu_hardware_error_emulated; |
|||
} |
|||
|
|||
bool HidFirmwareSettings::IsBleDisabled() { |
|||
LoadSettings(false); |
|||
return is_ble_disabled; |
|||
} |
|||
|
|||
bool HidFirmwareSettings::IsDscaleDisabled() { |
|||
LoadSettings(false); |
|||
return is_dscale_disabled; |
|||
} |
|||
|
|||
bool HidFirmwareSettings::IsTouchAutoUpdateDisabled() { |
|||
LoadSettings(false); |
|||
return is_touch_firmware_auto_update_disabled; |
|||
} |
|||
|
|||
HidFirmwareSettings::FirmwareSetting HidFirmwareSettings::GetFirmwareUpdateFailure() { |
|||
LoadSettings(false); |
|||
return is_firmware_update_failure; |
|||
} |
|||
|
|||
HidFirmwareSettings::FeaturesPerId HidFirmwareSettings::FeaturesDisabledPerId() { |
|||
LoadSettings(false); |
|||
return features_per_id_disabled; |
|||
} |
|||
|
|||
} // namespace Service::HID
|
|||
@ -0,0 +1,54 @@ |
|||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project |
|||
// SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
#pragma once |
|||
|
|||
#include "common/common_types.h" |
|||
|
|||
namespace Service::HID { |
|||
|
|||
/// Loads firmware config from nn::settings::fwdbg |
|||
class HidFirmwareSettings { |
|||
public: |
|||
using FirmwareSetting = std::array<u8, 4>; |
|||
using FeaturesPerId = std::array<bool, 0xA8>; |
|||
|
|||
HidFirmwareSettings(); |
|||
|
|||
void Reload(); |
|||
void LoadSettings(bool reload_config); |
|||
|
|||
bool IsDebugPadEnabled(); |
|||
bool IsDeviceManaged(); |
|||
bool IsEmulateFutureDevice(); |
|||
bool IsTouchI2cManaged(); |
|||
bool IsHandheldForced(); |
|||
bool IsRailEnabled(); |
|||
bool IsHardwareErrorEmulated(); |
|||
bool IsBleDisabled(); |
|||
bool IsDscaleDisabled(); |
|||
bool IsTouchAutoUpdateDisabled(); |
|||
|
|||
FirmwareSetting GetFirmwareUpdateFailure(); |
|||
FeaturesPerId FeaturesDisabledPerId(); |
|||
|
|||
private: |
|||
bool is_initalized{}; |
|||
|
|||
// Debug settings |
|||
bool is_debug_pad_enabled{}; |
|||
bool is_device_managed{}; |
|||
bool is_touch_i2c_managed{}; |
|||
bool is_future_devices_emulated{}; |
|||
bool is_mcu_hardware_error_emulated{}; |
|||
bool is_rail_enabled{}; |
|||
bool is_firmware_update_failure_emulated{}; |
|||
bool is_ble_disabled{}; |
|||
bool is_dscale_disabled{}; |
|||
bool is_handheld_forced{}; |
|||
bool is_touch_firmware_auto_update_disabled{}; |
|||
FirmwareSetting is_firmware_update_failure{}; |
|||
FeaturesPerId features_per_id_disabled{}; |
|||
}; |
|||
|
|||
} // namespace Service::HID |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue