mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-22 19:00:14 -05: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 Service {
|
||||||
namespace HID {
|
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::SharedMemory> g_shared_mem = nullptr;
|
||||||
|
|
||||||
Kernel::SharedPtr<Kernel::Event> g_event_pad_or_touch_1;
|
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;;
|
pad_entry->delta_removals.hex = changed.hex & old_state.hex;;
|
||||||
|
|
||||||
// Set circle Pad
|
// Set circle Pad
|
||||||
pad_entry->circle_pad_x = state.circle_left ? -0x9C : state.circle_right ? 0x9C : 0x0;
|
pad_entry->circle_pad_x = state.circle_left ? -MAX_CIRCLEPAD_POS :
|
||||||
pad_entry->circle_pad_y = state.circle_down ? -0x9C : state.circle_up ? 0x9C : 0x0;
|
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 we just updated index 0, provide a new timestamp
|
||||||
if (shared_mem->pad.index == 0) {
|
if (shared_mem->pad.index == 0) {
|
||||||
|
|
|
@ -82,38 +82,43 @@ struct PadDataEntry {
|
||||||
struct TouchDataEntry {
|
struct TouchDataEntry {
|
||||||
u16 x; ///< Y-coordinate of a touchpad press on the lower screen
|
u16 x; ///< Y-coordinate of a touchpad press on the lower screen
|
||||||
u16 y; ///< X-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
|
* Structure of data stored in HID shared memory
|
||||||
*/
|
*/
|
||||||
struct SharedMem {
|
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 {
|
struct {
|
||||||
s64 index_reset_ticks;
|
s64 index_reset_ticks; ///< CPU tick count for when HID module updated entry index 0
|
||||||
s64 index_reset_ticks_previous;
|
s64 index_reset_ticks_previous; ///< Previous `index_reset_ticks`
|
||||||
u32 index; // Index of the last updated pad state history element
|
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
|
PadState current_state; ///< Current state of the pad buttons
|
||||||
u32 raw_circle_pad_data;
|
|
||||||
|
|
||||||
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;
|
} pad;
|
||||||
|
|
||||||
// Touchpad data, this is used for touchpad input
|
/// Touchpad data, this is used for touchpad input
|
||||||
struct {
|
struct {
|
||||||
s64 index_reset_ticks;
|
s64 index_reset_ticks; ///< CPU tick count for when HID module updated entry index 0
|
||||||
s64 index_reset_ticks_previous;
|
s64 index_reset_ticks_previous; ///< Previous `index_reset_ticks`
|
||||||
u32 index; // Index of the last updated touch state history element
|
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;
|
} touch;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue