summaryrefslogtreecommitdiffstats
path: root/src/input_common/drivers/virtual_amiibo.h
diff options
context:
space:
mode:
authorgerman77 <juangerman-13@hotmail.com>2022-09-25 02:46:49 +0200
committergerman77 <juangerman-13@hotmail.com>2022-10-02 19:32:26 +0200
commite8d71712e7054748e7e18de9362de1f5a394b46b (patch)
tree263779f72b874d81513f1292bb413a2cf170f32d /src/input_common/drivers/virtual_amiibo.h
parentMerge pull request #8934 from german77/palma_release (diff)
downloadyuzu-e8d71712e7054748e7e18de9362de1f5a394b46b.tar
yuzu-e8d71712e7054748e7e18de9362de1f5a394b46b.tar.gz
yuzu-e8d71712e7054748e7e18de9362de1f5a394b46b.tar.bz2
yuzu-e8d71712e7054748e7e18de9362de1f5a394b46b.tar.lz
yuzu-e8d71712e7054748e7e18de9362de1f5a394b46b.tar.xz
yuzu-e8d71712e7054748e7e18de9362de1f5a394b46b.tar.zst
yuzu-e8d71712e7054748e7e18de9362de1f5a394b46b.zip
Diffstat (limited to '')
-rw-r--r--src/input_common/drivers/virtual_amiibo.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/input_common/drivers/virtual_amiibo.h b/src/input_common/drivers/virtual_amiibo.h
new file mode 100644
index 000000000..5790e4a1f
--- /dev/null
+++ b/src/input_common/drivers/virtual_amiibo.h
@@ -0,0 +1,61 @@
+// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include <array>
+#include <string>
+#include <vector>
+
+#include "common/common_types.h"
+#include "input_common/input_engine.h"
+
+namespace Common::FS {
+class IOFile;
+}
+
+namespace InputCommon {
+
+class VirtualAmiibo final : public InputEngine {
+public:
+ enum class State {
+ Initialized,
+ WaitingForAmiibo,
+ AmiiboIsOpen,
+ };
+
+ enum class Info {
+ Success,
+ UnableToLoad,
+ NotAnAmiibo,
+ WrongDeviceState,
+ Unknown,
+ };
+
+ explicit VirtualAmiibo(std::string input_engine_);
+ ~VirtualAmiibo() override;
+
+ // Sets polling mode to a controller
+ Common::Input::PollingError SetPollingMode(
+ const PadIdentifier& identifier_, const Common::Input::PollingMode polling_mode_) override;
+
+ Common::Input::NfcState SupportsNfc(const PadIdentifier& identifier_) override;
+
+ Common::Input::NfcState WriteNfcData(const PadIdentifier& identifier_,
+ const std::vector<u8>& data) override;
+
+ State GetCurrentState() const;
+
+ Info LoadAmiibo(const std::string& amiibo_file);
+ Info CloseAmiibo();
+
+private:
+ static constexpr std::size_t amiibo_size = 0x21C;
+ static constexpr std::size_t amiibo_size_without_password = amiibo_size - 0x8;
+
+ std::string file_path{};
+ State state{State::Initialized};
+ std::vector<u8> amiibo_data;
+ Common::Input::PollingMode polling_mode{Common::Input::PollingMode::Pasive};
+};
+} // namespace InputCommon