diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2024-01-12 16:02:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-12 16:02:13 +0100 |
commit | f7a3c135e2f17cc00d1f006146afc73a21408e3a (patch) | |
tree | f5439b576b7ba8e2d6835b49d45a558c66121ae7 /src/hid_core/resources/abstracted_pad/abstract_nfc_handler.h | |
parent | Merge pull request #12642 from t895/adapter-refactor (diff) | |
parent | service: hid: Create abstracted pad structure (diff) | |
download | yuzu-f7a3c135e2f17cc00d1f006146afc73a21408e3a.tar yuzu-f7a3c135e2f17cc00d1f006146afc73a21408e3a.tar.gz yuzu-f7a3c135e2f17cc00d1f006146afc73a21408e3a.tar.bz2 yuzu-f7a3c135e2f17cc00d1f006146afc73a21408e3a.tar.lz yuzu-f7a3c135e2f17cc00d1f006146afc73a21408e3a.tar.xz yuzu-f7a3c135e2f17cc00d1f006146afc73a21408e3a.tar.zst yuzu-f7a3c135e2f17cc00d1f006146afc73a21408e3a.zip |
Diffstat (limited to 'src/hid_core/resources/abstracted_pad/abstract_nfc_handler.h')
-rw-r--r-- | src/hid_core/resources/abstracted_pad/abstract_nfc_handler.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/hid_core/resources/abstracted_pad/abstract_nfc_handler.h b/src/hid_core/resources/abstracted_pad/abstract_nfc_handler.h new file mode 100644 index 000000000..0702722a6 --- /dev/null +++ b/src/hid_core/resources/abstracted_pad/abstract_nfc_handler.h @@ -0,0 +1,57 @@ +// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#include "common/common_types.h" +#include "core/hle/result.h" +#include "hid_core/hid_types.h" + +namespace Kernel { +class KReadableEvent; +} + +enum class NpadNfcState : u32 { + Unavailable, + Available, + Active, +}; + +namespace Service::HID { +class NpadAbstractedPadHolder; +class NpadAbstractPropertiesHandler; + +/// Handles Npad request from HID interfaces +class NpadAbstractNfcHandler final { +public: + explicit NpadAbstractNfcHandler(); + ~NpadAbstractNfcHandler(); + + void SetAbstractPadHolder(NpadAbstractedPadHolder* holder); + void SetPropertiesHandler(NpadAbstractPropertiesHandler* handler); + + Result IncrementRefCounter(); + Result DecrementRefCounter(); + + void UpdateNfcState(); + bool HasNfcSensor(); + bool IsNfcActivated(); + + Result GetAcquireNfcActivateEventHandle(Kernel::KReadableEvent** out_event); + void SetInputEvent(Kernel::KEvent* event); + + Result ActivateNfc(bool is_enabled); + + Result GetXcdHandleWithNfc(u64& out_xcd_handle) const; + +private: + NpadAbstractedPadHolder* abstract_pad_holder{nullptr}; + NpadAbstractPropertiesHandler* properties_handler{nullptr}; + + s32 ref_counter{}; + Kernel::KEvent* nfc_activate_event{nullptr}; + Kernel::KEvent* input_event{nullptr}; + u64 xcd_handle{}; + NpadNfcState sensor_state{NpadNfcState::Unavailable}; +}; +} // namespace Service::HID |