summaryrefslogtreecommitdiff
path: root/src/input_common/drivers/joycon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/input_common/drivers/joycon.cpp')
-rw-r--r--src/input_common/drivers/joycon.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/input_common/drivers/joycon.cpp b/src/input_common/drivers/joycon.cpp
index 8b57ebe07..b2b5677c8 100644
--- a/src/input_common/drivers/joycon.cpp
+++ b/src/input_common/drivers/joycon.cpp
@@ -195,8 +195,8 @@ void Joycons::RegisterNewDevice(SDL_hid_device_info* device_info) {
195 OnMotionUpdate(port, type, id, value); 195 OnMotionUpdate(port, type, id, value);
196 }}, 196 }},
197 .on_ring_data = {[this](f32 ring_data) { OnRingConUpdate(ring_data); }}, 197 .on_ring_data = {[this](f32 ring_data) { OnRingConUpdate(ring_data); }},
198 .on_amiibo_data = {[this, port](const std::vector<u8>& amiibo_data) { 198 .on_amiibo_data = {[this, port, type](const std::vector<u8>& amiibo_data) {
199 OnAmiiboUpdate(port, amiibo_data); 199 OnAmiiboUpdate(port, type, amiibo_data);
200 }}, 200 }},
201 .on_camera_data = {[this, port](const std::vector<u8>& camera_data, 201 .on_camera_data = {[this, port](const std::vector<u8>& camera_data,
202 Joycon::IrsResolution format) { 202 Joycon::IrsResolution format) {
@@ -291,9 +291,13 @@ Common::Input::NfcState Joycons::SupportsNfc(const PadIdentifier& identifier_) c
291 return Common::Input::NfcState::Success; 291 return Common::Input::NfcState::Success;
292}; 292};
293 293
294Common::Input::NfcState Joycons::WriteNfcData(const PadIdentifier& identifier_, 294Common::Input::NfcState Joycons::WriteNfcData(const PadIdentifier& identifier,
295 const std::vector<u8>& data) { 295 const std::vector<u8>& data) {
296 return Common::Input::NfcState::NotSupported; 296 auto handle = GetHandle(identifier);
297 if (handle->WriteNfcData(data) != Joycon::DriverResult::Success) {
298 return Common::Input::NfcState::WriteFailed;
299 }
300 return Common::Input::NfcState::Success;
297}; 301};
298 302
299Common::Input::DriverResult Joycons::SetPollingMode(const PadIdentifier& identifier, 303Common::Input::DriverResult Joycons::SetPollingMode(const PadIdentifier& identifier,
@@ -398,8 +402,9 @@ void Joycons::OnRingConUpdate(f32 ring_data) {
398 SetAxis(identifier, 100, ring_data); 402 SetAxis(identifier, 100, ring_data);
399} 403}
400 404
401void Joycons::OnAmiiboUpdate(std::size_t port, const std::vector<u8>& amiibo_data) { 405void Joycons::OnAmiiboUpdate(std::size_t port, Joycon::ControllerType type,
402 const auto identifier = GetIdentifier(port, Joycon::ControllerType::Right); 406 const std::vector<u8>& amiibo_data) {
407 const auto identifier = GetIdentifier(port, type);
403 const auto nfc_state = amiibo_data.empty() ? Common::Input::NfcState::AmiiboRemoved 408 const auto nfc_state = amiibo_data.empty() ? Common::Input::NfcState::AmiiboRemoved
404 : Common::Input::NfcState::NewAmiibo; 409 : Common::Input::NfcState::NewAmiibo;
405 SetNfc(identifier, {nfc_state, amiibo_data}); 410 SetNfc(identifier, {nfc_state, amiibo_data});