summaryrefslogtreecommitdiff
path: root/src/input_common/helpers/joycon_protocol
diff options
context:
space:
mode:
Diffstat (limited to 'src/input_common/helpers/joycon_protocol')
-rw-r--r--src/input_common/helpers/joycon_protocol/joycon_types.h4
-rw-r--r--src/input_common/helpers/joycon_protocol/poller.cpp72
-rw-r--r--src/input_common/helpers/joycon_protocol/poller.h8
3 files changed, 42 insertions, 42 deletions
diff --git a/src/input_common/helpers/joycon_protocol/joycon_types.h b/src/input_common/helpers/joycon_protocol/joycon_types.h
index 2e50a99a8..dcac0e422 100644
--- a/src/input_common/helpers/joycon_protocol/joycon_types.h
+++ b/src/input_common/helpers/joycon_protocol/joycon_types.h
@@ -78,7 +78,7 @@ enum class PadButton : u32 {
78 Capture = 0x200000, 78 Capture = 0x200000,
79}; 79};
80 80
81enum class PasivePadButton : u32 { 81enum class PassivePadButton : u32 {
82 Down_A = 0x0001, 82 Down_A = 0x0001,
83 Right_X = 0x0002, 83 Right_X = 0x0002,
84 Left_B = 0x0004, 84 Left_B = 0x0004,
@@ -95,7 +95,7 @@ enum class PasivePadButton : u32 {
95 ZL_ZR = 0x8000, 95 ZL_ZR = 0x8000,
96}; 96};
97 97
98enum class PasivePadStick : u8 { 98enum class PassivePadStick : u8 {
99 Right = 0x00, 99 Right = 0x00,
100 RightDown = 0x01, 100 RightDown = 0x01,
101 Down = 0x02, 101 Down = 0x02,
diff --git a/src/input_common/helpers/joycon_protocol/poller.cpp b/src/input_common/helpers/joycon_protocol/poller.cpp
index ab48352b8..dca797f7a 100644
--- a/src/input_common/helpers/joycon_protocol/poller.cpp
+++ b/src/input_common/helpers/joycon_protocol/poller.cpp
@@ -48,13 +48,13 @@ void JoyconPoller::ReadPassiveMode(std::span<u8> buffer) {
48 48
49 switch (device_type) { 49 switch (device_type) {
50 case ControllerType::Left: 50 case ControllerType::Left:
51 UpdatePasiveLeftPadInput(data); 51 UpdatePassiveLeftPadInput(data);
52 break; 52 break;
53 case ControllerType::Right: 53 case ControllerType::Right:
54 UpdatePasiveRightPadInput(data); 54 UpdatePassiveRightPadInput(data);
55 break; 55 break;
56 case ControllerType::Pro: 56 case ControllerType::Pro:
57 UpdatePasiveProPadInput(data); 57 UpdatePassiveProPadInput(data);
58 break; 58 break;
59 default: 59 default:
60 break; 60 break;
@@ -210,12 +210,12 @@ void JoyconPoller::UpdateActiveProPadInput(const InputReportActive& input,
210 } 210 }
211} 211}
212 212
213void JoyconPoller::UpdatePasiveLeftPadInput(const InputReportPassive& input) { 213void JoyconPoller::UpdatePassiveLeftPadInput(const InputReportPassive& input) {
214 static constexpr std::array<PasivePadButton, 11> left_buttons{ 214 static constexpr std::array<PassivePadButton, 11> left_buttons{
215 PasivePadButton::Down_A, PasivePadButton::Right_X, PasivePadButton::Left_B, 215 PassivePadButton::Down_A, PassivePadButton::Right_X, PassivePadButton::Left_B,
216 PasivePadButton::Up_Y, PasivePadButton::SL, PasivePadButton::SR, 216 PassivePadButton::Up_Y, PassivePadButton::SL, PassivePadButton::SR,
217 PasivePadButton::L_R, PasivePadButton::ZL_ZR, PasivePadButton::Minus, 217 PassivePadButton::L_R, PassivePadButton::ZL_ZR, PassivePadButton::Minus,
218 PasivePadButton::Capture, PasivePadButton::StickL, 218 PassivePadButton::Capture, PassivePadButton::StickL,
219 }; 219 };
220 220
221 for (auto left_button : left_buttons) { 221 for (auto left_button : left_buttons) {
@@ -225,17 +225,17 @@ void JoyconPoller::UpdatePasiveLeftPadInput(const InputReportPassive& input) {
225 } 225 }
226 226
227 const auto [left_axis_x, left_axis_y] = 227 const auto [left_axis_x, left_axis_y] =
228 GetPassiveAxisValue(static_cast<PasivePadStick>(input.stick_state)); 228 GetPassiveAxisValue(static_cast<PassivePadStick>(input.stick_state));
229 callbacks.on_stick_data(static_cast<int>(PadAxes::LeftStickX), left_axis_x); 229 callbacks.on_stick_data(static_cast<int>(PadAxes::LeftStickX), left_axis_x);
230 callbacks.on_stick_data(static_cast<int>(PadAxes::LeftStickY), left_axis_y); 230 callbacks.on_stick_data(static_cast<int>(PadAxes::LeftStickY), left_axis_y);
231} 231}
232 232
233void JoyconPoller::UpdatePasiveRightPadInput(const InputReportPassive& input) { 233void JoyconPoller::UpdatePassiveRightPadInput(const InputReportPassive& input) {
234 static constexpr std::array<PasivePadButton, 11> right_buttons{ 234 static constexpr std::array<PassivePadButton, 11> right_buttons{
235 PasivePadButton::Down_A, PasivePadButton::Right_X, PasivePadButton::Left_B, 235 PassivePadButton::Down_A, PassivePadButton::Right_X, PassivePadButton::Left_B,
236 PasivePadButton::Up_Y, PasivePadButton::SL, PasivePadButton::SR, 236 PassivePadButton::Up_Y, PassivePadButton::SL, PassivePadButton::SR,
237 PasivePadButton::L_R, PasivePadButton::ZL_ZR, PasivePadButton::Plus, 237 PassivePadButton::L_R, PassivePadButton::ZL_ZR, PassivePadButton::Plus,
238 PasivePadButton::Home, PasivePadButton::StickR, 238 PassivePadButton::Home, PassivePadButton::StickR,
239 }; 239 };
240 240
241 for (auto right_button : right_buttons) { 241 for (auto right_button : right_buttons) {
@@ -245,18 +245,18 @@ void JoyconPoller::UpdatePasiveRightPadInput(const InputReportPassive& input) {
245 } 245 }
246 246
247 const auto [right_axis_x, right_axis_y] = 247 const auto [right_axis_x, right_axis_y] =
248 GetPassiveAxisValue(static_cast<PasivePadStick>(input.stick_state)); 248 GetPassiveAxisValue(static_cast<PassivePadStick>(input.stick_state));
249 callbacks.on_stick_data(static_cast<int>(PadAxes::RightStickX), right_axis_x); 249 callbacks.on_stick_data(static_cast<int>(PadAxes::RightStickX), right_axis_x);
250 callbacks.on_stick_data(static_cast<int>(PadAxes::RightStickY), right_axis_y); 250 callbacks.on_stick_data(static_cast<int>(PadAxes::RightStickY), right_axis_y);
251} 251}
252 252
253void JoyconPoller::UpdatePasiveProPadInput(const InputReportPassive& input) { 253void JoyconPoller::UpdatePassiveProPadInput(const InputReportPassive& input) {
254 static constexpr std::array<PasivePadButton, 14> pro_buttons{ 254 static constexpr std::array<PassivePadButton, 14> pro_buttons{
255 PasivePadButton::Down_A, PasivePadButton::Right_X, PasivePadButton::Left_B, 255 PassivePadButton::Down_A, PassivePadButton::Right_X, PassivePadButton::Left_B,
256 PasivePadButton::Up_Y, PasivePadButton::SL, PasivePadButton::SR, 256 PassivePadButton::Up_Y, PassivePadButton::SL, PassivePadButton::SR,
257 PasivePadButton::L_R, PasivePadButton::ZL_ZR, PasivePadButton::Minus, 257 PassivePadButton::L_R, PassivePadButton::ZL_ZR, PassivePadButton::Minus,
258 PasivePadButton::Plus, PasivePadButton::Capture, PasivePadButton::Home, 258 PassivePadButton::Plus, PassivePadButton::Capture, PassivePadButton::Home,
259 PasivePadButton::StickL, PasivePadButton::StickR, 259 PassivePadButton::StickL, PassivePadButton::StickR,
260 }; 260 };
261 261
262 for (auto pro_button : pro_buttons) { 262 for (auto pro_button : pro_buttons) {
@@ -266,9 +266,9 @@ void JoyconPoller::UpdatePasiveProPadInput(const InputReportPassive& input) {
266 } 266 }
267 267
268 const auto [left_axis_x, left_axis_y] = 268 const auto [left_axis_x, left_axis_y] =
269 GetPassiveAxisValue(static_cast<PasivePadStick>(input.stick_state && 0xf)); 269 GetPassiveAxisValue(static_cast<PassivePadStick>(input.stick_state & 0xf));
270 const auto [right_axis_x, right_axis_y] = 270 const auto [right_axis_x, right_axis_y] =
271 GetPassiveAxisValue(static_cast<PasivePadStick>(input.stick_state >> 4)); 271 GetPassiveAxisValue(static_cast<PassivePadStick>(input.stick_state >> 4));
272 callbacks.on_stick_data(static_cast<int>(PadAxes::LeftStickX), left_axis_x); 272 callbacks.on_stick_data(static_cast<int>(PadAxes::LeftStickX), left_axis_x);
273 callbacks.on_stick_data(static_cast<int>(PadAxes::LeftStickY), left_axis_y); 273 callbacks.on_stick_data(static_cast<int>(PadAxes::LeftStickY), left_axis_y);
274 callbacks.on_stick_data(static_cast<int>(PadAxes::RightStickX), right_axis_x); 274 callbacks.on_stick_data(static_cast<int>(PadAxes::RightStickX), right_axis_x);
@@ -283,25 +283,25 @@ f32 JoyconPoller::GetAxisValue(u16 raw_value, Joycon::JoyStickAxisCalibration ca
283 return value / calibration.min; 283 return value / calibration.min;
284} 284}
285 285
286std::pair<f32, f32> JoyconPoller::GetPassiveAxisValue(PasivePadStick raw_value) const { 286std::pair<f32, f32> JoyconPoller::GetPassiveAxisValue(PassivePadStick raw_value) const {
287 switch (raw_value) { 287 switch (raw_value) {
288 case PasivePadStick::Right: 288 case PassivePadStick::Right:
289 return {1.0f, 0.0f}; 289 return {1.0f, 0.0f};
290 case PasivePadStick::RightDown: 290 case PassivePadStick::RightDown:
291 return {1.0f, -1.0f}; 291 return {1.0f, -1.0f};
292 case PasivePadStick::Down: 292 case PassivePadStick::Down:
293 return {0.0f, -1.0f}; 293 return {0.0f, -1.0f};
294 case PasivePadStick::DownLeft: 294 case PassivePadStick::DownLeft:
295 return {-1.0f, -1.0f}; 295 return {-1.0f, -1.0f};
296 case PasivePadStick::Left: 296 case PassivePadStick::Left:
297 return {-1.0f, 0.0f}; 297 return {-1.0f, 0.0f};
298 case PasivePadStick::LeftUp: 298 case PassivePadStick::LeftUp:
299 return {-1.0f, 1.0f}; 299 return {-1.0f, 1.0f};
300 case PasivePadStick::Up: 300 case PassivePadStick::Up:
301 return {0.0f, 1.0f}; 301 return {0.0f, 1.0f};
302 case PasivePadStick::UpRight: 302 case PassivePadStick::UpRight:
303 return {1.0f, 1.0f}; 303 return {1.0f, 1.0f};
304 case PasivePadStick::Neutral: 304 case PassivePadStick::Neutral:
305 default: 305 default:
306 return {0.0f, 0.0f}; 306 return {0.0f, 0.0f};
307 } 307 }
diff --git a/src/input_common/helpers/joycon_protocol/poller.h b/src/input_common/helpers/joycon_protocol/poller.h
index 5c897f070..0fa72c6db 100644
--- a/src/input_common/helpers/joycon_protocol/poller.h
+++ b/src/input_common/helpers/joycon_protocol/poller.h
@@ -46,15 +46,15 @@ private:
46 const MotionStatus& motion_status); 46 const MotionStatus& motion_status);
47 void UpdateActiveProPadInput(const InputReportActive& input, const MotionStatus& motion_status); 47 void UpdateActiveProPadInput(const InputReportActive& input, const MotionStatus& motion_status);
48 48
49 void UpdatePasiveLeftPadInput(const InputReportPassive& buffer); 49 void UpdatePassiveLeftPadInput(const InputReportPassive& buffer);
50 void UpdatePasiveRightPadInput(const InputReportPassive& buffer); 50 void UpdatePassiveRightPadInput(const InputReportPassive& buffer);
51 void UpdatePasiveProPadInput(const InputReportPassive& buffer); 51 void UpdatePassiveProPadInput(const InputReportPassive& buffer);
52 52
53 /// Returns a calibrated joystick axis from raw axis data 53 /// Returns a calibrated joystick axis from raw axis data
54 f32 GetAxisValue(u16 raw_value, JoyStickAxisCalibration calibration) const; 54 f32 GetAxisValue(u16 raw_value, JoyStickAxisCalibration calibration) const;
55 55
56 /// Returns a digital joystick axis from passive axis data 56 /// Returns a digital joystick axis from passive axis data
57 std::pair<f32, f32> GetPassiveAxisValue(PasivePadStick raw_value) const; 57 std::pair<f32, f32> GetPassiveAxisValue(PassivePadStick raw_value) const;
58 58
59 /// Returns a calibrated accelerometer axis from raw motion data 59 /// Returns a calibrated accelerometer axis from raw motion data
60 f32 GetAccelerometerValue(s16 raw, const MotionSensorCalibration& cal, 60 f32 GetAccelerometerValue(s16 raw, const MotionSensorCalibration& cal,