|
|
|
@ -80,40 +80,45 @@ struct PadDataEntry { |
|
|
|
* Structure of a single entry of touch state history within HID shared memory |
|
|
|
*/ |
|
|
|
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 |
|
|
|
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 |
|
|
|
}; |
|
|
|
|
|
|
|
/** |
|
|
|
* 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_WORDS(0x1); |
|
|
|
|
|
|
|
INSERT_PADDING_BYTES(0xC); |
|
|
|
// TODO(bunnei): Implement `raw_entry` field |
|
|
|
TouchDataEntry raw_entry; ///< Raw (analog) touch data, before being converted |
|
|
|
|
|
|
|
std::array<TouchDataEntry, 8> entries; |
|
|
|
std::array<TouchDataEntry, 8> entries; ///< Last 8 touch entries, in pixel coordinates |
|
|
|
} touch; |
|
|
|
}; |
|
|
|
|
|
|
|
|