diff options
| -rw-r--r-- | src/common/input.h | 2 | ||||
| -rw-r--r-- | src/core/hid/input_converter.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/service/nfp/nfp_device.cpp | 11 | ||||
| -rw-r--r-- | src/core/hle/service/nfp/nfp_device.h | 4 | ||||
| -rw-r--r-- | src/core/hle/service/nfp/nfp_types.h | 25 | ||||
| -rw-r--r-- | src/input_common/drivers/virtual_amiibo.cpp | 4 | ||||
| -rw-r--r-- | src/input_common/drivers/virtual_amiibo.h | 2 | ||||
| -rw-r--r-- | src/input_common/input_engine.h | 3 | ||||
| -rw-r--r-- | src/input_common/input_poller.cpp | 2 |
9 files changed, 29 insertions, 26 deletions
diff --git a/src/common/input.h b/src/common/input.h index 8365cc36e..bfa0639f5 100644 --- a/src/common/input.h +++ b/src/common/input.h | |||
| @@ -332,7 +332,7 @@ public: | |||
| 332 | return CameraError::NotSupported; | 332 | return CameraError::NotSupported; |
| 333 | } | 333 | } |
| 334 | 334 | ||
| 335 | virtual NfcState SupportsNfc() { | 335 | virtual NfcState SupportsNfc() const { |
| 336 | return NfcState::NotSupported; | 336 | return NfcState::NotSupported; |
| 337 | } | 337 | } |
| 338 | 338 | ||
diff --git a/src/core/hid/input_converter.cpp b/src/core/hid/input_converter.cpp index e7b871acc..fe9915abe 100644 --- a/src/core/hid/input_converter.cpp +++ b/src/core/hid/input_converter.cpp | |||
| @@ -291,7 +291,7 @@ Common::Input::NfcStatus TransformToNfc(const Common::Input::CallbackStatus& cal | |||
| 291 | Common::Input::NfcStatus nfc{}; | 291 | Common::Input::NfcStatus nfc{}; |
| 292 | switch (callback.type) { | 292 | switch (callback.type) { |
| 293 | case Common::Input::InputType::Nfc: | 293 | case Common::Input::InputType::Nfc: |
| 294 | nfc = callback.nfc_status; | 294 | return callback.nfc_status; |
| 295 | break; | 295 | break; |
| 296 | default: | 296 | default: |
| 297 | LOG_ERROR(Input, "Conversion from type {} to NFC not implemented", callback.type); | 297 | LOG_ERROR(Input, "Conversion from type {} to NFC not implemented", callback.type); |
diff --git a/src/core/hle/service/nfp/nfp_device.cpp b/src/core/hle/service/nfp/nfp_device.cpp index da7daae88..ce3bcccf4 100644 --- a/src/core/hle/service/nfp/nfp_device.cpp +++ b/src/core/hle/service/nfp/nfp_device.cpp | |||
| @@ -42,10 +42,11 @@ NfpDevice::NfpDevice(Core::HID::NpadIdType npad_id_, Core::System& system_, | |||
| 42 | } | 42 | } |
| 43 | 43 | ||
| 44 | NfpDevice::~NfpDevice() { | 44 | NfpDevice::~NfpDevice() { |
| 45 | if (is_controller_set) { | 45 | if (!is_controller_set) { |
| 46 | npad_device->DeleteCallback(callback_key); | 46 | return; |
| 47 | is_controller_set = false; | ||
| 48 | } | 47 | } |
| 48 | npad_device->DeleteCallback(callback_key); | ||
| 49 | is_controller_set = false; | ||
| 49 | }; | 50 | }; |
| 50 | 51 | ||
| 51 | void NfpDevice::NpadUpdate(Core::HID::ControllerTriggerType type) { | 52 | void NfpDevice::NpadUpdate(Core::HID::ControllerTriggerType type) { |
| @@ -453,7 +454,7 @@ Result NfpDevice::SetApplicationArea(const std::vector<u8>& data) { | |||
| 453 | return ResultSuccess; | 454 | return ResultSuccess; |
| 454 | } | 455 | } |
| 455 | 456 | ||
| 456 | Result NfpDevice::CreateApplicationArea(u32 access_id, const std::vector<u8>& data) { | 457 | Result NfpDevice::CreateApplicationArea(u32 access_id, std::span<const u8> data) { |
| 457 | if (device_state != DeviceState::TagMounted) { | 458 | if (device_state != DeviceState::TagMounted) { |
| 458 | LOG_ERROR(Service_NFP, "Wrong device state {}", device_state); | 459 | LOG_ERROR(Service_NFP, "Wrong device state {}", device_state); |
| 459 | if (device_state == DeviceState::TagRemoved) { | 460 | if (device_state == DeviceState::TagRemoved) { |
| @@ -470,7 +471,7 @@ Result NfpDevice::CreateApplicationArea(u32 access_id, const std::vector<u8>& da | |||
| 470 | return RecreateApplicationArea(access_id, data); | 471 | return RecreateApplicationArea(access_id, data); |
| 471 | } | 472 | } |
| 472 | 473 | ||
| 473 | Result NfpDevice::RecreateApplicationArea(u32 access_id, const std::vector<u8>& data) { | 474 | Result NfpDevice::RecreateApplicationArea(u32 access_id, std::span<const u8> data) { |
| 474 | if (device_state != DeviceState::TagMounted) { | 475 | if (device_state != DeviceState::TagMounted) { |
| 475 | LOG_ERROR(Service_NFP, "Wrong device state {}", device_state); | 476 | LOG_ERROR(Service_NFP, "Wrong device state {}", device_state); |
| 476 | if (device_state == DeviceState::TagRemoved) { | 477 | if (device_state == DeviceState::TagRemoved) { |
diff --git a/src/core/hle/service/nfp/nfp_device.h b/src/core/hle/service/nfp/nfp_device.h index 53cc0833f..9ceb7b8fd 100644 --- a/src/core/hle/service/nfp/nfp_device.h +++ b/src/core/hle/service/nfp/nfp_device.h | |||
| @@ -56,8 +56,8 @@ public: | |||
| 56 | Result OpenApplicationArea(u32 access_id); | 56 | Result OpenApplicationArea(u32 access_id); |
| 57 | Result GetApplicationArea(std::vector<u8>& data) const; | 57 | Result GetApplicationArea(std::vector<u8>& data) const; |
| 58 | Result SetApplicationArea(const std::vector<u8>& data); | 58 | Result SetApplicationArea(const std::vector<u8>& data); |
| 59 | Result CreateApplicationArea(u32 access_id, const std::vector<u8>& data); | 59 | Result CreateApplicationArea(u32 access_id, std::span<const u8> data); |
| 60 | Result RecreateApplicationArea(u32 access_id, const std::vector<u8>& data); | 60 | Result RecreateApplicationArea(u32 access_id, std::span<const u8> data); |
| 61 | Result DeleteApplicationArea(); | 61 | Result DeleteApplicationArea(); |
| 62 | 62 | ||
| 63 | u64 GetHandle() const; | 63 | u64 GetHandle() const; |
diff --git a/src/core/hle/service/nfp/nfp_types.h b/src/core/hle/service/nfp/nfp_types.h index d58657a21..2685ae8fe 100644 --- a/src/core/hle/service/nfp/nfp_types.h +++ b/src/core/hle/service/nfp/nfp_types.h | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | 5 | ||
| 6 | #include <array> | 6 | #include <array> |
| 7 | 7 | ||
| 8 | #include "common/swap.h" | ||
| 8 | #include "core/hle/service/mii/types.h" | 9 | #include "core/hle/service/mii/types.h" |
| 9 | 10 | ||
| 10 | namespace Service::NFP { | 11 | namespace Service::NFP { |
| @@ -80,33 +81,33 @@ using ApplicationArea = std::array<u8, 0xD8>; | |||
| 80 | using AmiiboName = std::array<char, (amiibo_name_length * 4) + 1>; | 81 | using AmiiboName = std::array<char, (amiibo_name_length * 4) + 1>; |
| 81 | 82 | ||
| 82 | struct AmiiboDate { | 83 | struct AmiiboDate { |
| 83 | u16_be raw_date{}; | 84 | u16 raw_date{}; |
| 84 | 85 | ||
| 85 | u16 DateRaw() const { | 86 | u16 GetValue() const { |
| 86 | return static_cast<u16>(raw_date); | 87 | return Common::swap16(raw_date); |
| 87 | } | 88 | } |
| 88 | 89 | ||
| 89 | u16 GetYear() const { | 90 | u16 GetYear() const { |
| 90 | return static_cast<u16>(((DateRaw() & 0xFE00) >> 9) + 2000); | 91 | return static_cast<u16>(((GetValue() & 0xFE00) >> 9) + 2000); |
| 91 | } | 92 | } |
| 92 | u8 GetMonth() const { | 93 | u8 GetMonth() const { |
| 93 | return static_cast<u8>(((DateRaw() & 0x01E0) >> 5) - 1); | 94 | return static_cast<u8>(((GetValue() & 0x01E0) >> 5) - 1); |
| 94 | } | 95 | } |
| 95 | u8 GetDay() const { | 96 | u8 GetDay() const { |
| 96 | return static_cast<u8>(DateRaw() & 0x001F); | 97 | return static_cast<u8>(GetValue() & 0x001F); |
| 97 | } | 98 | } |
| 98 | 99 | ||
| 99 | void SetYear(u16 year) { | 100 | void SetYear(u16 year) { |
| 100 | raw_date = DateRaw() & ~0xFE00; | 101 | const u16 year_converted = static_cast<u16>((year - 2000) << 9); |
| 101 | raw_date |= static_cast<u16_be>((year - 2000) << 9); | 102 | raw_date = Common::swap16((GetValue() & ~0xFE00) | year_converted); |
| 102 | } | 103 | } |
| 103 | void SetMonth(u8 month) { | 104 | void SetMonth(u8 month) { |
| 104 | raw_date = DateRaw() & ~0x01E0; | 105 | const u16 month_converted = static_cast<u16>((month + 1) << 5); |
| 105 | raw_date |= static_cast<u16_be>((month + 1) << 5); | 106 | raw_date = Common::swap16((GetValue() & ~0x01E0) | month_converted); |
| 106 | } | 107 | } |
| 107 | void SetDay(u8 day) { | 108 | void SetDay(u8 day) { |
| 108 | raw_date = DateRaw() & ~0x001F; | 109 | const u16 day_converted = static_cast<u16>(day); |
| 109 | raw_date |= static_cast<u16_be>(day); | 110 | raw_date = Common::swap16((GetValue() & ~0x001F) | day_converted); |
| 110 | } | 111 | } |
| 111 | }; | 112 | }; |
| 112 | static_assert(sizeof(AmiiboDate) == 2, "AmiiboDate is an invalid size"); | 113 | static_assert(sizeof(AmiiboDate) == 2, "AmiiboDate is an invalid size"); |
diff --git a/src/input_common/drivers/virtual_amiibo.cpp b/src/input_common/drivers/virtual_amiibo.cpp index 8fadb1322..0cd5129da 100644 --- a/src/input_common/drivers/virtual_amiibo.cpp +++ b/src/input_common/drivers/virtual_amiibo.cpp | |||
| @@ -20,7 +20,7 @@ constexpr PadIdentifier identifier = { | |||
| 20 | 20 | ||
| 21 | VirtualAmiibo::VirtualAmiibo(std::string input_engine_) : InputEngine(std::move(input_engine_)) {} | 21 | VirtualAmiibo::VirtualAmiibo(std::string input_engine_) : InputEngine(std::move(input_engine_)) {} |
| 22 | 22 | ||
| 23 | VirtualAmiibo::~VirtualAmiibo() {} | 23 | VirtualAmiibo::~VirtualAmiibo() = default; |
| 24 | 24 | ||
| 25 | Common::Input::PollingError VirtualAmiibo::SetPollingMode( | 25 | Common::Input::PollingError VirtualAmiibo::SetPollingMode( |
| 26 | [[maybe_unused]] const PadIdentifier& identifier_, | 26 | [[maybe_unused]] const PadIdentifier& identifier_, |
| @@ -41,7 +41,7 @@ Common::Input::PollingError VirtualAmiibo::SetPollingMode( | |||
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | Common::Input::NfcState VirtualAmiibo::SupportsNfc( | 43 | Common::Input::NfcState VirtualAmiibo::SupportsNfc( |
| 44 | [[maybe_unused]] const PadIdentifier& identifier_) { | 44 | [[maybe_unused]] const PadIdentifier& identifier_) const { |
| 45 | return Common::Input::NfcState::Success; | 45 | return Common::Input::NfcState::Success; |
| 46 | } | 46 | } |
| 47 | 47 | ||
diff --git a/src/input_common/drivers/virtual_amiibo.h b/src/input_common/drivers/virtual_amiibo.h index 5790e4a1f..9eac07544 100644 --- a/src/input_common/drivers/virtual_amiibo.h +++ b/src/input_common/drivers/virtual_amiibo.h | |||
| @@ -39,7 +39,7 @@ public: | |||
| 39 | Common::Input::PollingError SetPollingMode( | 39 | Common::Input::PollingError SetPollingMode( |
| 40 | const PadIdentifier& identifier_, const Common::Input::PollingMode polling_mode_) override; | 40 | const PadIdentifier& identifier_, const Common::Input::PollingMode polling_mode_) override; |
| 41 | 41 | ||
| 42 | Common::Input::NfcState SupportsNfc(const PadIdentifier& identifier_) override; | 42 | Common::Input::NfcState SupportsNfc(const PadIdentifier& identifier_) const override; |
| 43 | 43 | ||
| 44 | Common::Input::NfcState WriteNfcData(const PadIdentifier& identifier_, | 44 | Common::Input::NfcState WriteNfcData(const PadIdentifier& identifier_, |
| 45 | const std::vector<u8>& data) override; | 45 | const std::vector<u8>& data) override; |
diff --git a/src/input_common/input_engine.h b/src/input_common/input_engine.h index 9b8470c6f..cfbdb26bd 100644 --- a/src/input_common/input_engine.h +++ b/src/input_common/input_engine.h | |||
| @@ -129,7 +129,8 @@ public: | |||
| 129 | } | 129 | } |
| 130 | 130 | ||
| 131 | // Request nfc data from a controller | 131 | // Request nfc data from a controller |
| 132 | virtual Common::Input::NfcState SupportsNfc([[maybe_unused]] const PadIdentifier& identifier) { | 132 | virtual Common::Input::NfcState SupportsNfc( |
| 133 | [[maybe_unused]] const PadIdentifier& identifier) const { | ||
| 133 | return Common::Input::NfcState::NotSupported; | 134 | return Common::Input::NfcState::NotSupported; |
| 134 | } | 135 | } |
| 135 | 136 | ||
diff --git a/src/input_common/input_poller.cpp b/src/input_common/input_poller.cpp index a8eb1442b..75705b67e 100644 --- a/src/input_common/input_poller.cpp +++ b/src/input_common/input_poller.cpp | |||
| @@ -768,7 +768,7 @@ public: | |||
| 768 | return input_engine->SetCameraFormat(identifier, camera_format); | 768 | return input_engine->SetCameraFormat(identifier, camera_format); |
| 769 | } | 769 | } |
| 770 | 770 | ||
| 771 | Common::Input::NfcState SupportsNfc() override { | 771 | Common::Input::NfcState SupportsNfc() const override { |
| 772 | return input_engine->SupportsNfc(identifier); | 772 | return input_engine->SupportsNfc(identifier); |
| 773 | } | 773 | } |
| 774 | 774 | ||