HID: Added additional variable comments and some code cleanups.
This commit is contained in:
		
							parent
							
								
									d61b26b79f
								
							
						
					
					
						commit
						85cbccb1d3
					
				@ -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 New Issue
	
	Block a user