summaryrefslogtreecommitdiff
path: root/src/input_common/helpers/joycon_protocol/nfc.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/input_common/helpers/joycon_protocol/nfc.h')
-rw-r--r--src/input_common/helpers/joycon_protocol/nfc.h34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/input_common/helpers/joycon_protocol/nfc.h b/src/input_common/helpers/joycon_protocol/nfc.h
index eb58c427d..0be95e40e 100644
--- a/src/input_common/helpers/joycon_protocol/nfc.h
+++ b/src/input_common/helpers/joycon_protocol/nfc.h
@@ -25,14 +25,25 @@ public:
25 25
26 DriverResult StartNFCPollingMode(); 26 DriverResult StartNFCPollingMode();
27 27
28 DriverResult ScanAmiibo(std::vector<u8>& data); 28 DriverResult StopNFCPollingMode();
29
30 DriverResult GetTagInfo(Joycon::TagInfo& tag_info);
31
32 DriverResult ReadAmiibo(std::vector<u8>& data);
29 33
30 DriverResult WriteAmiibo(std::span<const u8> data); 34 DriverResult WriteAmiibo(std::span<const u8> data);
31 35
36 DriverResult ReadMifare(std::span<const MifareReadChunk> read_request,
37 std::span<MifareReadData> out_data);
38
39 DriverResult WriteMifare(std::span<const MifareWriteChunk> write_request);
40
32 bool HasAmiibo(); 41 bool HasAmiibo();
33 42
34 bool IsEnabled() const; 43 bool IsEnabled() const;
35 44
45 bool IsPolling() const;
46
36private: 47private:
37 // Number of times the function will be delayed until it outputs valid data 48 // Number of times the function will be delayed until it outputs valid data
38 static constexpr std::size_t AMIIBO_UPDATE_DELAY = 15; 49 static constexpr std::size_t AMIIBO_UPDATE_DELAY = 15;
@@ -51,6 +62,13 @@ private:
51 62
52 DriverResult WriteAmiiboData(const TagUUID& tag_uuid, std::span<const u8> data); 63 DriverResult WriteAmiiboData(const TagUUID& tag_uuid, std::span<const u8> data);
53 64
65 DriverResult GetMifareData(const MifareUUID& tag_uuid,
66 std::span<const MifareReadChunk> read_request,
67 std::span<MifareReadData> out_data);
68
69 DriverResult WriteMifareData(const MifareUUID& tag_uuid,
70 std::span<const MifareWriteChunk> write_request);
71
54 DriverResult SendStartPollingRequest(MCUCommandResponse& output, 72 DriverResult SendStartPollingRequest(MCUCommandResponse& output,
55 bool is_second_attempt = false); 73 bool is_second_attempt = false);
56 74
@@ -65,17 +83,31 @@ private:
65 DriverResult SendWriteDataAmiiboRequest(MCUCommandResponse& output, u8 block_id, 83 DriverResult SendWriteDataAmiiboRequest(MCUCommandResponse& output, u8 block_id,
66 bool is_last_packet, std::span<const u8> data); 84 bool is_last_packet, std::span<const u8> data);
67 85
86 DriverResult SendReadDataMifareRequest(MCUCommandResponse& output, u8 block_id,
87 bool is_last_packet, std::span<const u8> data);
88
68 std::vector<u8> SerializeWritePackage(const NFCWritePackage& package) const; 89 std::vector<u8> SerializeWritePackage(const NFCWritePackage& package) const;
69 90
91 std::vector<u8> SerializeMifareReadPackage(const MifareReadPackage& package) const;
92
93 std::vector<u8> SerializeMifareWritePackage(const MifareWritePackage& package) const;
94
70 NFCWritePackage MakeAmiiboWritePackage(const TagUUID& tag_uuid, std::span<const u8> data) const; 95 NFCWritePackage MakeAmiiboWritePackage(const TagUUID& tag_uuid, std::span<const u8> data) const;
71 96
72 NFCDataChunk MakeAmiiboChunk(u8 page, u8 size, std::span<const u8> data) const; 97 NFCDataChunk MakeAmiiboChunk(u8 page, u8 size, std::span<const u8> data) const;
73 98
99 MifareReadPackage MakeMifareReadPackage(const MifareUUID& tag_uuid,
100 std::span<const MifareReadChunk> read_request) const;
101
102 MifareWritePackage MakeMifareWritePackage(const MifareUUID& tag_uuid,
103 std::span<const MifareWriteChunk> read_request) const;
104
74 NFCReadBlockCommand GetReadBlockCommand(NFCPages pages) const; 105 NFCReadBlockCommand GetReadBlockCommand(NFCPages pages) const;
75 106
76 TagUUID GetTagUUID(std::span<const u8> data) const; 107 TagUUID GetTagUUID(std::span<const u8> data) const;
77 108
78 bool is_enabled{}; 109 bool is_enabled{};
110 bool is_polling{};
79 std::size_t update_counter{}; 111 std::size_t update_counter{};
80}; 112};
81 113