mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-12-23 17:00:57 +01:00
HID: Added additional variable comments and some code cleanups.
This commit is contained in:
parent
d61b26b79f
commit
85cbccb1d3
2 changed files with 29 additions and 20 deletions
|
@ -17,6 +17,8 @@
|
|||
namespace Service {
|
||||
namespace HID {
|
||||
|
||||
static const int MAX_CIRCLEPAD_POS = 0x9C; ///< Max value for a circle pad position
|
||||
|
||||
Kernel::SharedPtr<Kernel::SharedMemory> g_shared_mem = nullptr;
|
||||
|
||||
Kernel::SharedPtr<Kernel::Event> g_event_pad_or_touch_1;
|
||||
|
@ -78,8 +80,10 @@ void HIDUpdate() {
|
|||
pad_entry->delta_removals.hex = changed.hex & old_state.hex;;
|
||||
|
||||
// Set circle Pad
|
||||
pad_entry->circle_pad_x = state.circle_left ? -0x9C : state.circle_right ? 0x9C : 0x0;
|
||||
pad_entry->circle_pad_y = state.circle_down ? -0x9C : state.circle_up ? 0x9C : 0x0;
|
||||
pad_entry->circle_pad_x = state.circle_left ? -MAX_CIRCLEPAD_POS :
|
||||
state.circle_right ? MAX_CIRCLEPAD_POS : 0x0;
|
||||
pad_entry->circle_pad_y = state.circle_down ? -MAX_CIRCLEPAD_POS :
|
||||
state.circle_up ? MAX_CIRCLEPAD_POS : 0x0;
|
||||
|
||||
// If we just updated index 0, provide a new timestamp
|
||||
if (shared_mem->pad.index == 0) {
|
||||
|
|
|
@ -82,38 +82,43 @@ struct PadDataEntry {
|
|||
struct TouchDataEntry {
|
||||
u16 x; ///< Y-coordinate of a touchpad press on the lower screen
|
||||
u16 y; ///< X-coordinate of a touchpad press on the lower screen
|
||||
BitField<0,7,u32> valid; ///< Set to 1 when this entry contains actual X/Y data, otherwise 0
|
||||
BitField<0, 7, u32> valid; ///< Set to 1 when this entry contains actual X/Y data, otherwise 0
|
||||
};
|
||||
|
||||
/**
|
||||
* Structure of data stored in HID shared memory
|
||||
*/
|
||||
struct SharedMem {
|
||||
// "Pad data, this is used for buttons and the circle pad
|
||||
/// Pad data, this is used for buttons and the circle pad
|
||||
struct {
|
||||
s64 index_reset_ticks;
|
||||
s64 index_reset_ticks_previous;
|
||||
u32 index; // Index of the last updated pad state history element
|
||||
s64 index_reset_ticks; ///< CPU tick count for when HID module updated entry index 0
|
||||
s64 index_reset_ticks_previous; ///< Previous `index_reset_ticks`
|
||||
u32 index; ///< Index of the last updated pad state entry
|
||||
|
||||
INSERT_PADDING_BYTES(0x8);
|
||||
INSERT_PADDING_WORDS(0x2);
|
||||
|
||||
PadState current_state; // Same as entries[index].current_state
|
||||
u32 raw_circle_pad_data;
|
||||
PadState current_state; ///< Current state of the pad buttons
|
||||
|
||||
INSERT_PADDING_BYTES(0x4);
|
||||
// TODO(bunnei): Implement `raw_circle_pad_data` field
|
||||
u32 raw_circle_pad_data; ///< Raw (analog) circle pad data, before being converted
|
||||
|
||||
std::array<PadDataEntry, 8> entries; // Pad state history
|
||||
INSERT_PADDING_WORDS(0x1);
|
||||
|
||||
std::array<PadDataEntry, 8> entries; ///< Last 8 pad entries
|
||||
} pad;
|
||||
|
||||
// Touchpad data, this is used for touchpad input
|
||||
/// Touchpad data, this is used for touchpad input
|
||||
struct {
|
||||
s64 index_reset_ticks;
|
||||
s64 index_reset_ticks_previous;
|
||||
u32 index; // Index of the last updated touch state history element
|
||||
s64 index_reset_ticks; ///< CPU tick count for when HID module updated entry index 0
|
||||
s64 index_reset_ticks_previous; ///< Previous `index_reset_ticks`
|
||||
u32 index; ///< Index of the last updated touch entry
|
||||
|
||||
INSERT_PADDING_BYTES(0xC);
|
||||
INSERT_PADDING_WORDS(0x1);
|
||||
|
||||
std::array<TouchDataEntry, 8> entries;
|
||||
// TODO(bunnei): Implement `raw_entry` field
|
||||
TouchDataEntry raw_entry; ///< Raw (analog) touch data, before being converted
|
||||
|
||||
std::array<TouchDataEntry, 8> entries; ///< Last 8 touch entries, in pixel coordinates
|
||||
} touch;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue