diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2023-01-24 15:29:37 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-24 15:29:37 +0100 |
commit | a68af583ea378b48e2ed5a19f519a815ba89e40f (patch) | |
tree | 2983c14a7d4bc2797259c7d97462a439bec629f3 /src/input_common/helpers/joycon_protocol/rumble.h | |
parent | Merge pull request #9555 from abouvier/catch2-update (diff) | |
parent | core: hid: Make use of SCOPE_EXIT and SCOPE_GUARD where applicable (diff) | |
download | yuzu-a68af583ea378b48e2ed5a19f519a815ba89e40f.tar yuzu-a68af583ea378b48e2ed5a19f519a815ba89e40f.tar.gz yuzu-a68af583ea378b48e2ed5a19f519a815ba89e40f.tar.bz2 yuzu-a68af583ea378b48e2ed5a19f519a815ba89e40f.tar.lz yuzu-a68af583ea378b48e2ed5a19f519a815ba89e40f.tar.xz yuzu-a68af583ea378b48e2ed5a19f519a815ba89e40f.tar.zst yuzu-a68af583ea378b48e2ed5a19f519a815ba89e40f.zip |
Diffstat (limited to 'src/input_common/helpers/joycon_protocol/rumble.h')
-rw-r--r-- | src/input_common/helpers/joycon_protocol/rumble.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/input_common/helpers/joycon_protocol/rumble.h b/src/input_common/helpers/joycon_protocol/rumble.h new file mode 100644 index 000000000..6c12b7925 --- /dev/null +++ b/src/input_common/helpers/joycon_protocol/rumble.h @@ -0,0 +1,33 @@ +// 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" +#include "input_common/helpers/joycon_protocol/joycon_types.h" + +namespace InputCommon::Joycon { + +class RumbleProtocol final : private JoyconCommonProtocol { +public: + explicit RumbleProtocol(std::shared_ptr<JoyconHandle> handle); + + DriverResult EnableRumble(bool is_enabled); + + DriverResult SendVibration(const VibrationValue& vibration); + +private: + u16 EncodeHighFrequency(f32 frequency) const; + u8 EncodeLowFrequency(f32 frequency) const; + u8 EncodeHighAmplitude(f32 amplitude) const; + u16 EncodeLowAmplitude(f32 amplitude) const; +}; + +} // namespace InputCommon::Joycon |