summaryrefslogtreecommitdiffstats
path: root/src/input_common/helpers/joycon_protocol/nfc.cpp
diff options
context:
space:
mode:
authorliamwhite <liamwhite@users.noreply.github.com>2023-05-15 18:03:08 +0200
committerGitHub <noreply@github.com>2023-05-15 18:03:08 +0200
commit033aa264cf07802b9b1a00754e8604eb852e1d3b (patch)
treed5ea9117790eef63c202372cfdd5099326012a26 /src/input_common/helpers/joycon_protocol/nfc.cpp
parentMerge pull request #10294 from german77/vibration_span (diff)
parentinput_common: Make amiibo scanning less demanding (diff)
downloadyuzu-033aa264cf07802b9b1a00754e8604eb852e1d3b.tar
yuzu-033aa264cf07802b9b1a00754e8604eb852e1d3b.tar.gz
yuzu-033aa264cf07802b9b1a00754e8604eb852e1d3b.tar.bz2
yuzu-033aa264cf07802b9b1a00754e8604eb852e1d3b.tar.lz
yuzu-033aa264cf07802b9b1a00754e8604eb852e1d3b.tar.xz
yuzu-033aa264cf07802b9b1a00754e8604eb852e1d3b.tar.zst
yuzu-033aa264cf07802b9b1a00754e8604eb852e1d3b.zip
Diffstat (limited to 'src/input_common/helpers/joycon_protocol/nfc.cpp')
-rw-r--r--src/input_common/helpers/joycon_protocol/nfc.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/input_common/helpers/joycon_protocol/nfc.cpp b/src/input_common/helpers/joycon_protocol/nfc.cpp
index 77ea6d5cf..14818ae33 100644
--- a/src/input_common/helpers/joycon_protocol/nfc.cpp
+++ b/src/input_common/helpers/joycon_protocol/nfc.cpp
@@ -72,6 +72,11 @@ DriverResult NfcProtocol::StartNFCPollingMode() {
}
DriverResult NfcProtocol::ScanAmiibo(std::vector<u8>& data) {
+ if (update_counter++ < AMIIBO_UPDATE_DELAY) {
+ return DriverResult::Delayed;
+ }
+ update_counter = 0;
+
LOG_DEBUG(Input, "Start NFC pooling Mode");
ScopedSetBlocking sb(this);
DriverResult result{DriverResult::Success};
@@ -87,7 +92,7 @@ DriverResult NfcProtocol::ScanAmiibo(std::vector<u8>& data) {
result = WaitUntilNfcIsReady();
}
if (result == DriverResult::Success) {
- result = StartPolling(tag_data);
+ result = StartPolling(tag_data, 7);
}
if (result == DriverResult::Success) {
result = GetAmiiboData(data);
@@ -129,9 +134,8 @@ DriverResult NfcProtocol::WaitUntilNfcIsReady() {
return DriverResult::Success;
}
-DriverResult NfcProtocol::StartPolling(TagFoundData& data) {
+DriverResult NfcProtocol::StartPolling(TagFoundData& data, std::size_t timeout_limit) {
LOG_DEBUG(Input, "Start Polling for tag");
- constexpr std::size_t timeout_limit = 7;
MCUCommandResponse output{};
std::size_t tries = 0;