mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2025-07-23 01:35:46 +00:00
input_common: Use calibration from joycon
This commit is contained in:
parent
d2f5eae036
commit
f7164f77d6
5 changed files with 231 additions and 0 deletions
54
src/input_common/helpers/joycon_protocol/calibration.h
Normal file
54
src/input_common/helpers/joycon_protocol/calibration.h
Normal file
|
@ -0,0 +1,54 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
// Based on dkms-hid-nintendo implementation, CTCaer joycon toolkit and dekuNukem reverse
|
||||
// engineering https://github.com/nicman23/dkms-hid-nintendo/blob/master/src/hid-nintendo.c
|
||||
// https://github.com/CTCaer/jc_toolkit
|
||||
// https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "input_common/helpers/joycon_protocol/common_protocol.h"
|
||||
|
||||
namespace InputCommon::Joycon {
|
||||
enum class DriverResult;
|
||||
struct JoyStickCalibration;
|
||||
struct IMUCalibration;
|
||||
struct JoyconHandle;
|
||||
} // namespace InputCommon::Joycon
|
||||
|
||||
namespace InputCommon::Joycon {
|
||||
|
||||
/// Driver functions related to retrieving calibration data from the device
|
||||
class CalibrationProtocol final : private JoyconCommonProtocol {
|
||||
public:
|
||||
CalibrationProtocol(std::shared_ptr<JoyconHandle> handle);
|
||||
|
||||
/**
|
||||
* Sends a request to obtain the left stick calibration from memory
|
||||
* @param is_factory_calibration if true factory values will be returned
|
||||
* @returns JoyStickCalibration of the left joystick
|
||||
*/
|
||||
DriverResult GetLeftJoyStickCalibration(JoyStickCalibration& calibration);
|
||||
|
||||
/**
|
||||
* Sends a request to obtain the right stick calibration from memory
|
||||
* @param is_factory_calibration if true factory values will be returned
|
||||
* @returns JoyStickCalibration of the right joystick
|
||||
*/
|
||||
DriverResult GetRightJoyStickCalibration(JoyStickCalibration& calibration);
|
||||
|
||||
/**
|
||||
* Sends a request to obtain the motion calibration from memory
|
||||
* @returns ImuCalibration of the motion sensor
|
||||
*/
|
||||
DriverResult GetImuCalibration(MotionCalibration& calibration);
|
||||
|
||||
private:
|
||||
void ValidateCalibration(JoyStickCalibration& calibration);
|
||||
void ValidateCalibration(MotionCalibration& calibration);
|
||||
};
|
||||
|
||||
} // namespace InputCommon::Joycon
|
Loading…
Add table
Add a link
Reference in a new issue