forked from eden-emu/eden
		
	input_common: Create virtual amiibo driver
This commit is contained in:
		
							parent
							
								
									4df48d6b35
								
							
						
					
					
						commit
						56b1301938
					
				
					 6 changed files with 244 additions and 0 deletions
				
			
		
							
								
								
									
										61
									
								
								src/input_common/drivers/virtual_amiibo.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								src/input_common/drivers/virtual_amiibo.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -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
 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 german77
						german77