| |
| |
|
|
| |
| |
| |
| |
|
|
| #pragma once |
|
|
| #include <functional> |
| #include <span> |
|
|
| #include "input_common/helpers/joycon_protocol/joycon_types.h" |
|
|
| namespace InputCommon::Joycon { |
|
|
| |
| class JoyconPoller { |
| public: |
| JoyconPoller(ControllerType device_type_, JoyStickCalibration left_stick_calibration_, |
| JoyStickCalibration right_stick_calibration_, |
| MotionCalibration motion_calibration_); |
|
|
| void SetCallbacks(const JoyconCallbacks& callbacks_); |
|
|
| |
| void ReadPassiveMode(std::span<u8> buffer); |
|
|
| |
| void ReadActiveMode(std::span<u8> buffer, const MotionStatus& motion_status, |
| const RingStatus& ring_status); |
|
|
| |
| void ReadNfcIRMode(std::span<u8> buffer, const MotionStatus& motion_status); |
|
|
| void UpdateColor(const Color& color); |
| void UpdateRing(s16 value, const RingStatus& ring_status); |
| void UpdateAmiibo(const Joycon::TagInfo& tag_info); |
| void UpdateCamera(const std::vector<u8>& camera_data, IrsResolution format); |
|
|
| private: |
| void UpdateActiveLeftPadInput(const InputReportActive& input, |
| const MotionStatus& motion_status); |
| void UpdateActiveRightPadInput(const InputReportActive& input, |
| const MotionStatus& motion_status); |
| void UpdateActiveProPadInput(const InputReportActive& input, const MotionStatus& motion_status); |
|
|
| void UpdatePassiveLeftPadInput(const InputReportPassive& buffer); |
| void UpdatePassiveRightPadInput(const InputReportPassive& buffer); |
| void UpdatePassiveProPadInput(const InputReportPassive& buffer); |
|
|
| |
| f32 GetAxisValue(u16 raw_value, JoyStickAxisCalibration calibration) const; |
|
|
| |
| std::pair<f32, f32> GetPassiveAxisValue(PassivePadStick raw_value) const; |
|
|
| |
| f32 GetAccelerometerValue(s16 raw, const MotionSensorCalibration& cal, |
| AccelerometerSensitivity sensitivity) const; |
|
|
| |
| f32 GetGyroValue(s16 raw_value, const MotionSensorCalibration& cal, |
| GyroSensitivity sensitivity) const; |
|
|
| |
| s16 GetRawIMUValues(size_t sensor, size_t axis, const InputReportActive& input) const; |
|
|
| |
| MotionData GetMotionInput(const InputReportActive& input, |
| const MotionStatus& motion_status) const; |
|
|
| ControllerType device_type{}; |
|
|
| |
| JoyStickCalibration left_stick_calibration{}; |
| JoyStickCalibration right_stick_calibration{}; |
| MotionCalibration motion_calibration{}; |
|
|
| JoyconCallbacks callbacks{}; |
| }; |
|
|
| } |
|
|