diff options
author | german77 <juangerman-13@hotmail.com> | 2021-05-13 13:26:07 -0500 |
---|---|---|
committer | german77 <juangerman-13@hotmail.com> | 2021-05-13 13:41:32 -0500 |
commit | fd7c273fabc3d8aa3ff11fe90a92885bfcd6f807 (patch) | |
tree | 0587a6572b1994e0f8c798be30744a447886df74 /src/input_common/udp/client.cpp | |
parent | bb7d4ec3d310b843b15464bad0241ae0c9b18fa1 (diff) |
input_common: Sanitize motion data
Diffstat (limited to 'src/input_common/udp/client.cpp')
-rw-r--r-- | src/input_common/udp/client.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/input_common/udp/client.cpp b/src/input_common/udp/client.cpp index 8a38a380de..bc1dfab3d5 100644 --- a/src/input_common/udp/client.cpp +++ b/src/input_common/udp/client.cpp @@ -86,6 +86,7 @@ private: case Type::PadData: { Response::PadData pad_data; std::memcpy(&pad_data, &receive_buffer[sizeof(Header)], sizeof(Response::PadData)); + SanitizeMotion(pad_data); callback.pad_data(std::move(pad_data)); break; } @@ -114,6 +115,28 @@ private: StartSend(timer.expiry()); } + void SanitizeMotion(Response::PadData& data) { + // Zero out any non number value + if (!std::isnormal(data.gyro.pitch)) { + data.gyro.pitch = 0; + } + if (!std::isnormal(data.gyro.roll)) { + data.gyro.roll = 0; + } + if (!std::isnormal(data.gyro.yaw)) { + data.gyro.yaw = 0; + } + if (!std::isnormal(data.accel.x)) { + data.accel.x = 0; + } + if (!std::isnormal(data.accel.y)) { + data.accel.y = 0; + } + if (!std::isnormal(data.accel.z)) { + data.accel.z = 0; + } + } + SocketCallback callback; boost::asio::io_service io_service; boost::asio::basic_waitable_timer<clock> timer; |