// Copyright 2018 yuzu emulator team // Licensed under GPLv2 or any later version // Refer to the license.txt file included. #pragma once #include #include #include "core/hle/kernel/event.h" #include "core/hle/service/service.h" namespace Service::NFP { class Module final { public: class Interface : public ServiceFramework { public: explicit Interface(std::shared_ptr module, const char* name); ~Interface() override; struct ModelInfo { std::array amiibo_identification_block; INSERT_PADDING_BYTES(0x38); }; static_assert(sizeof(ModelInfo) == 0x40, "ModelInfo is an invalid size"); struct AmiiboFile { std::array uuid; INSERT_PADDING_BYTES(0x4a); ModelInfo model_info; }; static_assert(sizeof(AmiiboFile) == 0x94, "AmiiboFile is an invalid size"); void CreateUserInterface(Kernel::HLERequestContext& ctx); bool LoadAmiibo(const std::vector& buffer); const Kernel::SharedPtr& GetNFCEvent() const; const AmiiboFile& GetAmiiboBuffer() const; private: Kernel::SharedPtr nfc_tag_load{}; AmiiboFile amiibo{}; protected: std::shared_ptr module; }; }; void InstallInterfaces(SM::ServiceManager& service_manager); } // namespace Service::NFP