From cb30fe50cd074fe05dd1d6e4b0d58116d3d98489 Mon Sep 17 00:00:00 2001 From: Morph <39850852+Morph1984@users.noreply.github.com> Date: Sat, 5 Feb 2022 00:40:28 -0500 Subject: [PATCH] input/hid: Migrate to the new UUID implementation --- src/common/input.h | 8 ++++---- src/core/hid/emulated_controller.cpp | 23 ++++++++++++----------- src/core/hid/emulated_controller.h | 6 +++--- src/core/hid/hid_types.h | 2 +- src/input_common/drivers/gc_adapter.cpp | 2 +- src/input_common/drivers/keyboard.cpp | 6 +++--- src/input_common/drivers/mouse.cpp | 2 +- src/input_common/drivers/sdl_driver.cpp | 6 +++--- src/input_common/drivers/tas_input.cpp | 4 ++-- src/input_common/drivers/touch_screen.cpp | 2 +- src/input_common/drivers/udp_client.cpp | 8 ++++---- src/input_common/drivers/udp_client.h | 4 ++-- src/input_common/input_engine.cpp | 10 +++++----- src/input_common/input_engine.h | 6 +++--- src/input_common/input_mapping.cpp | 6 +++--- src/input_common/input_poller.cpp | 18 +++++++++--------- 16 files changed, 57 insertions(+), 56 deletions(-) diff --git a/src/common/input.h b/src/common/input.h index 54fcb24b04..95d30497d1 100644 --- a/src/common/input.h +++ b/src/common/input.h @@ -10,8 +10,8 @@ #include #include #include "common/logging/log.h" +#include "common/new_uuid.h" #include "common/param_package.h" -#include "common/uuid.h" namespace Common::Input { @@ -97,7 +97,7 @@ struct AnalogStatus { // Button data struct ButtonStatus { - Common::UUID uuid{}; + Common::NewUUID uuid{}; bool value{}; bool inverted{}; bool toggle{}; @@ -109,7 +109,7 @@ using BatteryStatus = BatteryLevel; // Analog and digital joystick data struct StickStatus { - Common::UUID uuid{}; + Common::NewUUID uuid{}; AnalogStatus x{}; AnalogStatus y{}; bool left{}; @@ -120,7 +120,7 @@ struct StickStatus { // Analog and digital trigger data struct TriggerStatus { - Common::UUID uuid{}; + Common::NewUUID uuid{}; AnalogStatus analog{}; ButtonStatus pressed{}; }; diff --git a/src/core/hid/emulated_controller.cpp b/src/core/hid/emulated_controller.cpp index a7cdf45e67..44e9f22b92 100644 --- a/src/core/hid/emulated_controller.cpp +++ b/src/core/hid/emulated_controller.cpp @@ -204,7 +204,7 @@ void EmulatedController::ReloadInput() { if (!button_devices[index]) { continue; } - const auto uuid = Common::UUID{button_params[index].Get("guid", "")}; + const auto uuid = Common::NewUUID{button_params[index].Get("guid", "")}; button_devices[index]->SetCallback({ .on_change = [this, index, uuid](const Common::Input::CallbackStatus& callback) { @@ -218,7 +218,7 @@ void EmulatedController::ReloadInput() { if (!stick_devices[index]) { continue; } - const auto uuid = Common::UUID{stick_params[index].Get("guid", "")}; + const auto uuid = Common::NewUUID{stick_params[index].Get("guid", "")}; stick_devices[index]->SetCallback({ .on_change = [this, index, uuid](const Common::Input::CallbackStatus& callback) { @@ -232,7 +232,7 @@ void EmulatedController::ReloadInput() { if (!trigger_devices[index]) { continue; } - const auto uuid = Common::UUID{trigger_params[index].Get("guid", "")}; + const auto uuid = Common::NewUUID{trigger_params[index].Get("guid", "")}; trigger_devices[index]->SetCallback({ .on_change = [this, index, uuid](const Common::Input::CallbackStatus& callback) { @@ -269,7 +269,8 @@ void EmulatedController::ReloadInput() { } // Use a common UUID for TAS - const auto tas_uuid = Common::UUID{0x0, 0x7A5}; + static constexpr Common::NewUUID TAS_UUID = Common::NewUUID{ + {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xA5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}; // Register TAS devices. No need to force update for (std::size_t index = 0; index < tas_button_devices.size(); ++index) { @@ -278,8 +279,8 @@ void EmulatedController::ReloadInput() { } tas_button_devices[index]->SetCallback({ .on_change = - [this, index, tas_uuid](const Common::Input::CallbackStatus& callback) { - SetButton(callback, index, tas_uuid); + [this, index](const Common::Input::CallbackStatus& callback) { + SetButton(callback, index, TAS_UUID); }, }); } @@ -290,8 +291,8 @@ void EmulatedController::ReloadInput() { } tas_stick_devices[index]->SetCallback({ .on_change = - [this, index, tas_uuid](const Common::Input::CallbackStatus& callback) { - SetStick(callback, index, tas_uuid); + [this, index](const Common::Input::CallbackStatus& callback) { + SetStick(callback, index, TAS_UUID); }, }); } @@ -489,7 +490,7 @@ void EmulatedController::SetMotionParam(std::size_t index, Common::ParamPackage } void EmulatedController::SetButton(const Common::Input::CallbackStatus& callback, std::size_t index, - Common::UUID uuid) { + Common::NewUUID uuid) { if (index >= controller.button_values.size()) { return; } @@ -638,7 +639,7 @@ void EmulatedController::SetButton(const Common::Input::CallbackStatus& callback } void EmulatedController::SetStick(const Common::Input::CallbackStatus& callback, std::size_t index, - Common::UUID uuid) { + Common::NewUUID uuid) { if (index >= controller.stick_values.size()) { return; } @@ -688,7 +689,7 @@ void EmulatedController::SetStick(const Common::Input::CallbackStatus& callback, } void EmulatedController::SetTrigger(const Common::Input::CallbackStatus& callback, - std::size_t index, Common::UUID uuid) { + std::size_t index, Common::NewUUID uuid) { if (index >= controller.trigger_values.size()) { return; } diff --git a/src/core/hid/emulated_controller.h b/src/core/hid/emulated_controller.h index d8642c5b3a..ed61e95228 100644 --- a/src/core/hid/emulated_controller.h +++ b/src/core/hid/emulated_controller.h @@ -354,7 +354,7 @@ private: * @param index Button ID of the to be updated */ void SetButton(const Common::Input::CallbackStatus& callback, std::size_t index, - Common::UUID uuid); + Common::NewUUID uuid); /** * Updates the analog stick status of the controller @@ -362,7 +362,7 @@ private: * @param index stick ID of the to be updated */ void SetStick(const Common::Input::CallbackStatus& callback, std::size_t index, - Common::UUID uuid); + Common::NewUUID uuid); /** * Updates the trigger status of the controller @@ -370,7 +370,7 @@ private: * @param index trigger ID of the to be updated */ void SetTrigger(const Common::Input::CallbackStatus& callback, std::size_t index, - Common::UUID uuid); + Common::NewUUID uuid); /** * Updates the motion status of the controller diff --git a/src/core/hid/hid_types.h b/src/core/hid/hid_types.h index 778b328b9e..a4ccdf11c0 100644 --- a/src/core/hid/hid_types.h +++ b/src/core/hid/hid_types.h @@ -7,8 +7,8 @@ #include "common/bit_field.h" #include "common/common_funcs.h" #include "common/common_types.h" +#include "common/new_uuid.h" #include "common/point.h" -#include "common/uuid.h" namespace Core::HID { diff --git a/src/input_common/drivers/gc_adapter.cpp b/src/input_common/drivers/gc_adapter.cpp index 7ab4540a87..7a269b5263 100644 --- a/src/input_common/drivers/gc_adapter.cpp +++ b/src/input_common/drivers/gc_adapter.cpp @@ -248,7 +248,7 @@ bool GCAdapter::Setup() { std::size_t port = 0; for (GCController& pad : pads) { pad.identifier = { - .guid = Common::UUID{Common::INVALID_UUID}, + .guid = Common::NewUUID{}, .port = port++, .pad = 0, }; diff --git a/src/input_common/drivers/keyboard.cpp b/src/input_common/drivers/keyboard.cpp index 4c1e5bbec7..449509270d 100644 --- a/src/input_common/drivers/keyboard.cpp +++ b/src/input_common/drivers/keyboard.cpp @@ -9,17 +9,17 @@ namespace InputCommon { constexpr PadIdentifier key_identifier = { - .guid = Common::UUID{Common::INVALID_UUID}, + .guid = Common::NewUUID{}, .port = 0, .pad = 0, }; constexpr PadIdentifier keyboard_key_identifier = { - .guid = Common::UUID{Common::INVALID_UUID}, + .guid = Common::NewUUID{}, .port = 1, .pad = 0, }; constexpr PadIdentifier keyboard_modifier_identifier = { - .guid = Common::UUID{Common::INVALID_UUID}, + .guid = Common::NewUUID{}, .port = 1, .pad = 1, }; diff --git a/src/input_common/drivers/mouse.cpp b/src/input_common/drivers/mouse.cpp index d8ae7f0c12..ae63088ba2 100644 --- a/src/input_common/drivers/mouse.cpp +++ b/src/input_common/drivers/mouse.cpp @@ -20,7 +20,7 @@ constexpr int motion_wheel_y = 4; constexpr int touch_axis_x = 10; constexpr int touch_axis_y = 11; constexpr PadIdentifier identifier = { - .guid = Common::UUID{Common::INVALID_UUID}, + .guid = Common::NewUUID{}, .port = 0, .pad = 0, }; diff --git a/src/input_common/drivers/sdl_driver.cpp b/src/input_common/drivers/sdl_driver.cpp index b031a8523e..b9a8317d4f 100644 --- a/src/input_common/drivers/sdl_driver.cpp +++ b/src/input_common/drivers/sdl_driver.cpp @@ -120,7 +120,7 @@ public: */ const PadIdentifier GetPadIdentifier() const { return { - .guid = Common::UUID{guid}, + .guid = Common::NewUUID{guid}, .port = static_cast(port), .pad = 0, }; @@ -502,7 +502,7 @@ std::vector SDLDriver::GetInputDevices() const { Common::Input::VibrationError SDLDriver::SetRumble( const PadIdentifier& identifier, const Common::Input::VibrationStatus& vibration) { const auto joystick = - GetSDLJoystickByGUID(identifier.guid.Format(), static_cast(identifier.port)); + GetSDLJoystickByGUID(identifier.guid.RawString(), static_cast(identifier.port)); const auto process_amplitude_exp = [](f32 amplitude, f32 factor) { return (amplitude + std::pow(amplitude, factor)) * 0.5f * 0xFFFF; }; @@ -599,7 +599,7 @@ Common::ParamPackage SDLDriver::BuildParamPackageForAnalog(PadIdentifier identif Common::ParamPackage params; params.Set("engine", GetEngineName()); params.Set("port", static_cast(identifier.port)); - params.Set("guid", identifier.guid.Format()); + params.Set("guid", identifier.guid.RawString()); params.Set("axis_x", axis_x); params.Set("axis_y", axis_y); params.Set("offset_x", offset_x); diff --git a/src/input_common/drivers/tas_input.cpp b/src/input_common/drivers/tas_input.cpp index 944e141bfe..6d36cf5dae 100644 --- a/src/input_common/drivers/tas_input.cpp +++ b/src/input_common/drivers/tas_input.cpp @@ -50,7 +50,7 @@ constexpr std::array, 18> text_to_tas_but Tas::Tas(std::string input_engine_) : InputEngine(std::move(input_engine_)) { for (size_t player_index = 0; player_index < PLAYER_NUMBER; player_index++) { PadIdentifier identifier{ - .guid = Common::UUID{}, + .guid = Common::NewUUID{}, .port = player_index, .pad = 0, }; @@ -203,7 +203,7 @@ void Tas::UpdateThread() { } PadIdentifier identifier{ - .guid = Common::UUID{}, + .guid = Common::NewUUID{}, .port = player_index, .pad = 0, }; diff --git a/src/input_common/drivers/touch_screen.cpp b/src/input_common/drivers/touch_screen.cpp index 8807818250..1030e74d9e 100644 --- a/src/input_common/drivers/touch_screen.cpp +++ b/src/input_common/drivers/touch_screen.cpp @@ -8,7 +8,7 @@ namespace InputCommon { constexpr PadIdentifier identifier = { - .guid = Common::UUID{Common::INVALID_UUID}, + .guid = Common::NewUUID{}, .port = 0, .pad = 0, }; diff --git a/src/input_common/drivers/udp_client.cpp b/src/input_common/drivers/udp_client.cpp index 333173e3df..cbcfa7a4bb 100644 --- a/src/input_common/drivers/udp_client.cpp +++ b/src/input_common/drivers/udp_client.cpp @@ -351,10 +351,10 @@ PadIdentifier UDPClient::GetPadIdentifier(std::size_t pad_index) const { }; } -Common::UUID UDPClient::GetHostUUID(const std::string& host) const { +Common::NewUUID UDPClient::GetHostUUID(const std::string& host) const { const auto ip = boost::asio::ip::make_address_v4(host); - const auto hex_host = fmt::format("{:06x}", ip.to_uint()); - return Common::UUID{hex_host}; + const auto hex_host = fmt::format("00000000-0000-0000-0000-0000{:06x}", ip.to_uint()); + return Common::NewUUID{hex_host}; } void UDPClient::Reset() { @@ -385,7 +385,7 @@ std::vector UDPClient::GetInputDevices() const { Common::ParamPackage identifier{}; identifier.Set("engine", GetEngineName()); identifier.Set("display", fmt::format("UDP Controller {}", pad_identifier.pad)); - identifier.Set("guid", pad_identifier.guid.Format()); + identifier.Set("guid", pad_identifier.guid.RawString()); identifier.Set("port", static_cast(pad_identifier.port)); identifier.Set("pad", static_cast(pad_identifier.pad)); devices.emplace_back(identifier); diff --git a/src/input_common/drivers/udp_client.h b/src/input_common/drivers/udp_client.h index e9c1781397..98abeedd19 100644 --- a/src/input_common/drivers/udp_client.h +++ b/src/input_common/drivers/udp_client.h @@ -126,7 +126,7 @@ private: struct ClientConnection { ClientConnection(); ~ClientConnection(); - Common::UUID uuid{"7F000001"}; + Common::NewUUID uuid{"00000000-0000-0000-0000-00007F000001"}; std::string host{"127.0.0.1"}; u16 port{26760}; s8 active{-1}; @@ -148,7 +148,7 @@ private: void OnPadData(Response::PadData, std::size_t client); void StartCommunication(std::size_t client, const std::string& host, u16 port); PadIdentifier GetPadIdentifier(std::size_t pad_index) const; - Common::UUID GetHostUUID(const std::string& host) const; + Common::NewUUID GetHostUUID(const std::string& host) const; Common::Input::ButtonNames GetUIButtonName(const Common::ParamPackage& params) const; diff --git a/src/input_common/input_engine.cpp b/src/input_common/input_engine.cpp index 0508b408d3..65ae1b8480 100644 --- a/src/input_common/input_engine.cpp +++ b/src/input_common/input_engine.cpp @@ -96,7 +96,7 @@ bool InputEngine::GetButton(const PadIdentifier& identifier, int button) const { std::lock_guard lock{mutex}; const auto controller_iter = controller_list.find(identifier); if (controller_iter == controller_list.cend()) { - LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(), + LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.RawString(), identifier.pad, identifier.port); return false; } @@ -113,7 +113,7 @@ bool InputEngine::GetHatButton(const PadIdentifier& identifier, int button, u8 d std::lock_guard lock{mutex}; const auto controller_iter = controller_list.find(identifier); if (controller_iter == controller_list.cend()) { - LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(), + LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.RawString(), identifier.pad, identifier.port); return false; } @@ -130,7 +130,7 @@ f32 InputEngine::GetAxis(const PadIdentifier& identifier, int axis) const { std::lock_guard lock{mutex}; const auto controller_iter = controller_list.find(identifier); if (controller_iter == controller_list.cend()) { - LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(), + LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.RawString(), identifier.pad, identifier.port); return 0.0f; } @@ -147,7 +147,7 @@ BatteryLevel InputEngine::GetBattery(const PadIdentifier& identifier) const { std::lock_guard lock{mutex}; const auto controller_iter = controller_list.find(identifier); if (controller_iter == controller_list.cend()) { - LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(), + LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.RawString(), identifier.pad, identifier.port); return BatteryLevel::Charging; } @@ -159,7 +159,7 @@ BasicMotion InputEngine::GetMotion(const PadIdentifier& identifier, int motion) std::lock_guard lock{mutex}; const auto controller_iter = controller_list.find(identifier); if (controller_iter == controller_list.cend()) { - LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(), + LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.RawString(), identifier.pad, identifier.port); return {}; } diff --git a/src/input_common/input_engine.h b/src/input_common/input_engine.h index fe2faee5a5..05e45b8771 100644 --- a/src/input_common/input_engine.h +++ b/src/input_common/input_engine.h @@ -10,13 +10,13 @@ #include "common/common_types.h" #include "common/input.h" +#include "common/new_uuid.h" #include "common/param_package.h" -#include "common/uuid.h" #include "input_common/main.h" // Pad Identifier of data source struct PadIdentifier { - Common::UUID guid{Common::INVALID_UUID}; + Common::NewUUID guid{}; std::size_t port{}; std::size_t pad{}; @@ -59,7 +59,7 @@ namespace std { template <> struct hash { size_t operator()(const PadIdentifier& pad_id) const noexcept { - u64 hash_value = pad_id.guid.uuid[1] ^ pad_id.guid.uuid[0]; + u64 hash_value = pad_id.guid.Hash(); hash_value ^= (static_cast(pad_id.port) << 32); hash_value ^= static_cast(pad_id.pad); return static_cast(hash_value); diff --git a/src/input_common/input_mapping.cpp b/src/input_common/input_mapping.cpp index a7a6ad8c20..fb78093b8b 100644 --- a/src/input_common/input_mapping.cpp +++ b/src/input_common/input_mapping.cpp @@ -57,7 +57,7 @@ void MappingFactory::RegisterButton(const MappingData& data) { Common::ParamPackage new_input; new_input.Set("engine", data.engine); if (data.pad.guid.IsValid()) { - new_input.Set("guid", data.pad.guid.Format()); + new_input.Set("guid", data.pad.guid.RawString()); } new_input.Set("port", static_cast(data.pad.port)); new_input.Set("pad", static_cast(data.pad.pad)); @@ -93,7 +93,7 @@ void MappingFactory::RegisterStick(const MappingData& data) { Common::ParamPackage new_input; new_input.Set("engine", data.engine); if (data.pad.guid.IsValid()) { - new_input.Set("guid", data.pad.guid.Format()); + new_input.Set("guid", data.pad.guid.RawString()); } new_input.Set("port", static_cast(data.pad.port)); new_input.Set("pad", static_cast(data.pad.pad)); @@ -138,7 +138,7 @@ void MappingFactory::RegisterMotion(const MappingData& data) { Common::ParamPackage new_input; new_input.Set("engine", data.engine); if (data.pad.guid.IsValid()) { - new_input.Set("guid", data.pad.guid.Format()); + new_input.Set("guid", data.pad.guid.RawString()); } new_input.Set("port", static_cast(data.pad.port)); new_input.Set("pad", static_cast(data.pad.pad)); diff --git a/src/input_common/input_poller.cpp b/src/input_common/input_poller.cpp index 2f3c0735ac..313703f5fc 100644 --- a/src/input_common/input_poller.cpp +++ b/src/input_common/input_poller.cpp @@ -691,7 +691,7 @@ private: std::unique_ptr InputFactory::CreateButtonDevice( const Common::ParamPackage& params) { const PadIdentifier identifier = { - .guid = Common::UUID{params.Get("guid", "")}, + .guid = Common::NewUUID{params.Get("guid", "")}, .port = static_cast(params.Get("port", 0)), .pad = static_cast(params.Get("pad", 0)), }; @@ -714,7 +714,7 @@ std::unique_ptr InputFactory::CreateButtonDevice( std::unique_ptr InputFactory::CreateHatButtonDevice( const Common::ParamPackage& params) { const PadIdentifier identifier = { - .guid = Common::UUID{params.Get("guid", "")}, + .guid = Common::NewUUID{params.Get("guid", "")}, .port = static_cast(params.Get("port", 0)), .pad = static_cast(params.Get("pad", 0)), }; @@ -736,7 +736,7 @@ std::unique_ptr InputFactory::CreateStickDevice( const auto range = std::clamp(params.Get("range", 1.0f), 0.25f, 1.50f); const auto threshold = std::clamp(params.Get("threshold", 0.5f), 0.0f, 1.0f); const PadIdentifier identifier = { - .guid = Common::UUID{params.Get("guid", "")}, + .guid = Common::NewUUID{params.Get("guid", "")}, .port = static_cast(params.Get("port", 0)), .pad = static_cast(params.Get("pad", 0)), }; @@ -768,7 +768,7 @@ std::unique_ptr InputFactory::CreateStickDevice( std::unique_ptr InputFactory::CreateAnalogDevice( const Common::ParamPackage& params) { const PadIdentifier identifier = { - .guid = Common::UUID{params.Get("guid", "")}, + .guid = Common::NewUUID{params.Get("guid", "")}, .port = static_cast(params.Get("port", 0)), .pad = static_cast(params.Get("pad", 0)), }; @@ -789,7 +789,7 @@ std::unique_ptr InputFactory::CreateAnalogDevice( std::unique_ptr InputFactory::CreateTriggerDevice( const Common::ParamPackage& params) { const PadIdentifier identifier = { - .guid = Common::UUID{params.Get("guid", "")}, + .guid = Common::NewUUID{params.Get("guid", "")}, .port = static_cast(params.Get("port", 0)), .pad = static_cast(params.Get("pad", 0)), }; @@ -820,7 +820,7 @@ std::unique_ptr InputFactory::CreateTouchDevice( const auto range = std::clamp(params.Get("range", 1.0f), 0.25f, 1.50f); const auto threshold = std::clamp(params.Get("threshold", 0.5f), 0.0f, 1.0f); const PadIdentifier identifier = { - .guid = Common::UUID{params.Get("guid", "")}, + .guid = Common::NewUUID{params.Get("guid", "")}, .port = static_cast(params.Get("port", 0)), .pad = static_cast(params.Get("pad", 0)), }; @@ -857,7 +857,7 @@ std::unique_ptr InputFactory::CreateTouchDevice( std::unique_ptr InputFactory::CreateBatteryDevice( const Common::ParamPackage& params) { const PadIdentifier identifier = { - .guid = Common::UUID{params.Get("guid", "")}, + .guid = Common::NewUUID{params.Get("guid", "")}, .port = static_cast(params.Get("port", 0)), .pad = static_cast(params.Get("pad", 0)), }; @@ -869,7 +869,7 @@ std::unique_ptr InputFactory::CreateBatteryDevice( std::unique_ptr InputFactory::CreateMotionDevice( Common::ParamPackage params) { const PadIdentifier identifier = { - .guid = Common::UUID{params.Get("guid", "")}, + .guid = Common::NewUUID{params.Get("guid", "")}, .port = static_cast(params.Get("port", 0)), .pad = static_cast(params.Get("pad", 0)), }; @@ -963,7 +963,7 @@ OutputFactory::OutputFactory(std::shared_ptr input_engine_) std::unique_ptr OutputFactory::Create( const Common::ParamPackage& params) { const PadIdentifier identifier = { - .guid = Common::UUID{params.Get("guid", "")}, + .guid = Common::NewUUID{params.Get("guid", "")}, .port = static_cast(params.Get("port", 0)), .pad = static_cast(params.Get("pad", 0)), };