diff options
author | David Marcec <dmarcecguzman@gmail.com> | 2018-10-05 16:23:21 +0200 |
---|---|---|
committer | David Marcec <dmarcecguzman@gmail.com> | 2018-10-10 04:15:35 +0200 |
commit | 56f35ab2629c3753dbb624799bd8aaff2a179f58 (patch) | |
tree | d4c27964cf6f7679529f1042e9d71005f1e73864 /src/core/hle/service/hid/controllers/xpad.h | |
parent | Merge pull request #1466 from lioncash/unused (diff) | |
download | yuzu-56f35ab2629c3753dbb624799bd8aaff2a179f58.tar yuzu-56f35ab2629c3753dbb624799bd8aaff2a179f58.tar.gz yuzu-56f35ab2629c3753dbb624799bd8aaff2a179f58.tar.bz2 yuzu-56f35ab2629c3753dbb624799bd8aaff2a179f58.tar.lz yuzu-56f35ab2629c3753dbb624799bd8aaff2a179f58.tar.xz yuzu-56f35ab2629c3753dbb624799bd8aaff2a179f58.tar.zst yuzu-56f35ab2629c3753dbb624799bd8aaff2a179f58.zip |
Diffstat (limited to 'src/core/hle/service/hid/controllers/xpad.h')
-rw-r--r-- | src/core/hle/service/hid/controllers/xpad.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/core/hle/service/hid/controllers/xpad.h b/src/core/hle/service/hid/controllers/xpad.h new file mode 100644 index 000000000..898fadfdc --- /dev/null +++ b/src/core/hle/service/hid/controllers/xpad.h @@ -0,0 +1,59 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once +#include "common/common_funcs.h" +#include "common/common_types.h" +#include "common/swap.h" +#include "core/frontend/input.h" +#include "core/hle/service/hid/controllers/controller_base.h" + +namespace Service::HID { +class Controller_XPad final : public ControllerBase { +public: + Controller_XPad() = default; + + // Called when the controller is initialized + void OnInit() override; + + // When the controller is released + void OnRelease() override; + + // When the controller is requesting an update for the shared memory + void OnUpdate(u8* data, size_t size) override; + + // Called when input devices should be loaded + void OnLoadInputDevices() override; + +private: + struct AnalogStick { + s32_le x; + s32_le y; + }; + static_assert(sizeof(AnalogStick) == 0x8, "AnalogStick is an invalid size"); + + struct XPadState { + s64_le sampling_number; + s64_le sampling_number2; + s32_le attributes; + u32_le pad_states; + AnalogStick x_stick; + AnalogStick y_stick; + }; + static_assert(sizeof(XPadState) == 0x28, "XPadState is an invalid size"); + + struct XPadEntry { + CommonHeader header; + std::array<XPadState, 17> pad_states{}; + INSERT_PADDING_BYTES(0x138); + }; + static_assert(sizeof(XPadEntry) == 0x400, "XPadEntry is an invalid size"); + + struct SharedMemory { + std::array<XPadEntry, 4> shared_memory_entries{}; + }; + static_assert(sizeof(SharedMemory) == 0x1000, "SharedMemory is an invalid size"); + SharedMemory shared_memory{}; +}; +}; // namespace Service::HID |