| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| |
|
| | #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{}; |
| | }; |
| |
|
| | } |
| |
|