citra-emu
/
citra
Archived
1
0
Fork 0

HID: Added additional variable comments and some code cleanups.

This commit is contained in:
bunnei 2015-03-09 23:03:24 -04:00
parent d61b26b79f
commit 85cbccb1d3
2 changed files with 29 additions and 20 deletions

View File

@ -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) {

View File

@ -80,40 +80,45 @@ struct PadDataEntry {
* Structure of a single entry of touch state history within HID shared memory * Structure of a single entry of touch state history within HID shared memory
*/ */
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;
}; };