diff options
author | Narr the Reg <juangerman-13@hotmail.com> | 2023-05-18 06:17:16 +0200 |
---|---|---|
committer | german77 <juangerman-13@hotmail.com> | 2023-05-22 05:09:20 +0200 |
commit | fdb2002f77de6af19cc7f526b2e7540c329161c3 (patch) | |
tree | 6bcb2ca55810c05d15a561e2fa0bc0a6c1a9175a /src/input_common/helpers/joycon_protocol/nfc.h | |
parent | Merge pull request #10344 from german77/pro-amiibo (diff) | |
download | yuzu-fdb2002f77de6af19cc7f526b2e7540c329161c3.tar yuzu-fdb2002f77de6af19cc7f526b2e7540c329161c3.tar.gz yuzu-fdb2002f77de6af19cc7f526b2e7540c329161c3.tar.bz2 yuzu-fdb2002f77de6af19cc7f526b2e7540c329161c3.tar.lz yuzu-fdb2002f77de6af19cc7f526b2e7540c329161c3.tar.xz yuzu-fdb2002f77de6af19cc7f526b2e7540c329161c3.tar.zst yuzu-fdb2002f77de6af19cc7f526b2e7540c329161c3.zip |
Diffstat (limited to '')
-rw-r--r-- | src/input_common/helpers/joycon_protocol/nfc.h | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/src/input_common/helpers/joycon_protocol/nfc.h b/src/input_common/helpers/joycon_protocol/nfc.h index c9e9af03f..eb58c427d 100644 --- a/src/input_common/helpers/joycon_protocol/nfc.h +++ b/src/input_common/helpers/joycon_protocol/nfc.h @@ -27,6 +27,8 @@ public: DriverResult ScanAmiibo(std::vector<u8>& data); + DriverResult WriteAmiibo(std::span<const u8> data); + bool HasAmiibo(); bool IsEnabled() const; @@ -37,18 +39,20 @@ private: struct TagFoundData { u8 type; - std::vector<u8> uuid; + u8 uuid_size; + TagUUID uuid; }; - DriverResult WaitUntilNfcIsReady(); - - DriverResult WaitUntilNfcIsPolling(); + DriverResult WaitUntilNfcIs(NFCStatus status); DriverResult IsTagInRange(TagFoundData& data, std::size_t timeout_limit = 1); DriverResult GetAmiiboData(std::vector<u8>& data); - DriverResult SendStartPollingRequest(MCUCommandResponse& output); + DriverResult WriteAmiiboData(const TagUUID& tag_uuid, std::span<const u8> data); + + DriverResult SendStartPollingRequest(MCUCommandResponse& output, + bool is_second_attempt = false); DriverResult SendStopPollingRequest(MCUCommandResponse& output); @@ -56,8 +60,21 @@ private: DriverResult SendReadAmiiboRequest(MCUCommandResponse& output, NFCPages ntag_pages); + DriverResult SendWriteAmiiboRequest(MCUCommandResponse& output, const TagUUID& tag_uuid); + + DriverResult SendWriteDataAmiiboRequest(MCUCommandResponse& output, u8 block_id, + bool is_last_packet, std::span<const u8> data); + + std::vector<u8> SerializeWritePackage(const NFCWritePackage& package) const; + + NFCWritePackage MakeAmiiboWritePackage(const TagUUID& tag_uuid, std::span<const u8> data) const; + + NFCDataChunk MakeAmiiboChunk(u8 page, u8 size, std::span<const u8> data) const; + NFCReadBlockCommand GetReadBlockCommand(NFCPages pages) const; + TagUUID GetTagUUID(std::span<const u8> data) const; + bool is_enabled{}; std::size_t update_counter{}; }; |