summaryrefslogtreecommitdiffstats
path: root/src/input_common/udp
diff options
context:
space:
mode:
authorameerj <52414509+ameerj@users.noreply.github.com>2021-10-20 02:35:38 +0200
committerameerj <52414509+ameerj@users.noreply.github.com>2021-10-20 07:21:59 +0200
commitb01aa721ffb4f18f0a4ed6c17d78fe6ae6c45801 (patch)
tree9e4de72949a6b8bc385fcf0c2c227c63676114bb /src/input_common/udp
parentcmake: Update conan for VS2022 support (diff)
downloadyuzu-b01aa721ffb4f18f0a4ed6c17d78fe6ae6c45801.tar
yuzu-b01aa721ffb4f18f0a4ed6c17d78fe6ae6c45801.tar.gz
yuzu-b01aa721ffb4f18f0a4ed6c17d78fe6ae6c45801.tar.bz2
yuzu-b01aa721ffb4f18f0a4ed6c17d78fe6ae6c45801.tar.lz
yuzu-b01aa721ffb4f18f0a4ed6c17d78fe6ae6c45801.tar.xz
yuzu-b01aa721ffb4f18f0a4ed6c17d78fe6ae6c45801.tar.zst
yuzu-b01aa721ffb4f18f0a4ed6c17d78fe6ae6c45801.zip
Diffstat (limited to 'src/input_common/udp')
-rw-r--r--src/input_common/udp/client.cpp74
1 files changed, 35 insertions, 39 deletions
diff --git a/src/input_common/udp/client.cpp b/src/input_common/udp/client.cpp
index 9b0aec797..b9512aa2e 100644
--- a/src/input_common/udp/client.cpp
+++ b/src/input_common/udp/client.cpp
@@ -471,46 +471,42 @@ CalibrationConfigurationJob::CalibrationConfigurationJob(
std::function<void(u16, u16, u16, u16)> data_callback) {
std::thread([=, this] {
- constexpr u16 CALIBRATION_THRESHOLD = 100;
-
- u16 min_x{UINT16_MAX};
- u16 min_y{UINT16_MAX};
- u16 max_x{};
- u16 max_y{};
-
Status current_status{Status::Initialized};
- SocketCallback callback{[](Response::Version) {}, [](Response::PortInfo) {},
- [&](Response::PadData data) {
- if (current_status == Status::Initialized) {
- // Receiving data means the communication is ready now
- current_status = Status::Ready;
- status_callback(current_status);
- }
- if (data.touch[0].is_active == 0) {
- return;
- }
- LOG_DEBUG(Input, "Current touch: {} {}", data.touch[0].x,
- data.touch[0].y);
- min_x = std::min(min_x, static_cast<u16>(data.touch[0].x));
- min_y = std::min(min_y, static_cast<u16>(data.touch[0].y));
- if (current_status == Status::Ready) {
- // First touch - min data (min_x/min_y)
- current_status = Status::Stage1Completed;
- status_callback(current_status);
- }
- if (data.touch[0].x - min_x > CALIBRATION_THRESHOLD &&
- data.touch[0].y - min_y > CALIBRATION_THRESHOLD) {
- // Set the current position as max value and finishes
- // configuration
- max_x = data.touch[0].x;
- max_y = data.touch[0].y;
- current_status = Status::Completed;
- data_callback(min_x, min_y, max_x, max_y);
- status_callback(current_status);
-
- complete_event.Set();
- }
- }};
+ SocketCallback callback{
+ [](Response::Version) {}, [](Response::PortInfo) {},
+ [&](Response::PadData data) {
+ static constexpr u16 CALIBRATION_THRESHOLD = 100;
+ static constexpr u16 MAX_VALUE = UINT16_MAX;
+
+ if (current_status == Status::Initialized) {
+ // Receiving data means the communication is ready now
+ current_status = Status::Ready;
+ status_callback(current_status);
+ }
+ const auto& touchpad_0 = data.touch[0];
+ if (touchpad_0.is_active == 0) {
+ return;
+ }
+ LOG_DEBUG(Input, "Current touch: {} {}", touchpad_0.x, touchpad_0.y);
+ const u16 min_x = std::min(MAX_VALUE, static_cast<u16>(touchpad_0.x));
+ const u16 min_y = std::min(MAX_VALUE, static_cast<u16>(touchpad_0.y));
+ if (current_status == Status::Ready) {
+ // First touch - min data (min_x/min_y)
+ current_status = Status::Stage1Completed;
+ status_callback(current_status);
+ }
+ if (touchpad_0.x - min_x > CALIBRATION_THRESHOLD &&
+ touchpad_0.y - min_y > CALIBRATION_THRESHOLD) {
+ // Set the current position as max value and finishes configuration
+ const u16 max_x = touchpad_0.x;
+ const u16 max_y = touchpad_0.y;
+ current_status = Status::Completed;
+ data_callback(min_x, min_y, max_x, max_y);
+ status_callback(current_status);
+
+ complete_event.Set();
+ }
+ }};
Socket socket{host, port, std::move(callback)};
std::thread worker_thread{SocketLoop, &socket};
complete_event.Wait();