diff options
Diffstat (limited to 'src/input_common/drivers/joycon.cpp')
| -rw-r--r-- | src/input_common/drivers/joycon.cpp | 17 |
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 | ||
| 294 | Common::Input::NfcState Joycons::WriteNfcData(const PadIdentifier& identifier_, | 294 | Common::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 | ||
| 299 | Common::Input::DriverResult Joycons::SetPollingMode(const PadIdentifier& identifier, | 303 | Common::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 | ||
| 401 | void Joycons::OnAmiiboUpdate(std::size_t port, const std::vector<u8>& amiibo_data) { | 405 | void 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}); |