diff options
| author | bunnei <bunneidev@gmail.com> | 2022-11-22 10:28:38 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-22 10:28:38 -0800 |
| commit | f047f376d4abec2e2dbd54453a6d6cfe8990ee2f (patch) | |
| tree | 89e28f895bec899b6b2a6cd814409dd26a0ca629 /src/core/hle/service/nfc/nfc_user.h | |
| parent | 3027917f39667b627d3279957a88f99ae063bf6c (diff) | |
| parent | db7bcd51ae09c4ef25e08096de563903f61e2380 (diff) | |
Merge pull request #9219 from german77/nfc_impl
service: nfc: Implement NFC IUser service
Diffstat (limited to 'src/core/hle/service/nfc/nfc_user.h')
| -rw-r--r-- | src/core/hle/service/nfc/nfc_user.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/core/hle/service/nfc/nfc_user.h b/src/core/hle/service/nfc/nfc_user.h new file mode 100644 index 000000000..a5a4f12f9 --- /dev/null +++ b/src/core/hle/service/nfc/nfc_user.h @@ -0,0 +1,52 @@ +// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include <array> +#include <memory> +#include <optional> + +#include "core/hle/service/kernel_helpers.h" +#include "core/hle/service/service.h" + +namespace Service::NFC { +class NfcDevice; + +class IUser final : public ServiceFramework<IUser> { +public: + explicit IUser(Core::System& system_); + ~IUser(); + +private: + enum class State : u32 { + NonInitialized, + Initialized, + }; + + void Initialize(Kernel::HLERequestContext& ctx); + void Finalize(Kernel::HLERequestContext& ctx); + void GetState(Kernel::HLERequestContext& ctx); + void IsNfcEnabled(Kernel::HLERequestContext& ctx); + void ListDevices(Kernel::HLERequestContext& ctx); + void GetDeviceState(Kernel::HLERequestContext& ctx); + void GetNpadId(Kernel::HLERequestContext& ctx); + void AttachAvailabilityChangeEvent(Kernel::HLERequestContext& ctx); + void StartDetection(Kernel::HLERequestContext& ctx); + void StopDetection(Kernel::HLERequestContext& ctx); + void GetTagInfo(Kernel::HLERequestContext& ctx); + void AttachActivateEvent(Kernel::HLERequestContext& ctx); + void AttachDeactivateEvent(Kernel::HLERequestContext& ctx); + void SendCommandByPassThrough(Kernel::HLERequestContext& ctx); + + std::optional<std::shared_ptr<NfcDevice>> GetNfcDevice(u64 handle); + + KernelHelpers::ServiceContext service_context; + + std::array<std::shared_ptr<NfcDevice>, 10> devices{}; + + State state{State::NonInitialized}; + Kernel::KEvent* availability_change_event; +}; + +} // namespace Service::NFC |
