1 /*---------------------------------------------------------------------------*
2 Project: Horizon
3 File: hid_DebugPadReader.h
4
5 Copyright (C)2009-2012 Nintendo Co., Ltd. All rights reserved.
6
7 These coded instructions, statements, and computer programs contain
8 proprietary information of Nintendo of America Inc. and/or Nintendo
9 Company Ltd., and are protected by Federal copyright law. They may
10 not be disclosed to third parties or copied or duplicated in any form,
11 in whole or in part, without the prior written consent of Nintendo.
12
13 $Rev: 46347 $
14 *---------------------------------------------------------------------------*/
15
16 /* Please see man pages for details
17
18
19 */
20 #ifndef NN_HID_CTR_HID_DEBUG_PAD_READER_H_
21 #define NN_HID_CTR_HID_DEBUG_PAD_READER_H_
22
23 #include <nn/Handle.h>
24 #include <nn/Result.h>
25 #include <nn/types.h>
26 #include <nn/hid/CTR/hid_Result.h>
27 #include <nn/hid/CTR/hid_Api.h>
28 #include <nn/hid/CTR/hid_pad.h>
29 #include <nn/hid/CTR/hid_DeviceStatus.h>
30 #include <nn/util/util_SizedEnum.h>
31 #include <nn/util/util_NonCopyable.h>
32
33 namespace nn {
34 namespace hid {
35 namespace CTR {
36 /* Please see man pages for details
37
38
39
40
41
42 */
43
44 class DebugPadReader : private nn::util::NonCopyable<DebugPadReader>
45 {
46 public:
47 /* Please see man pages for details
48
49
50 */
51
52 typedef enum
53 {
54 /* Please see man pages for details */
55 STICK_CLAMP_MODE_CIRCLE_WITH_PLAY = 0,
56 /* Please see man pages for details */
57 STICK_CLAMP_MODE_CIRCLE_WITHOUT_PLAY
58 } StickClampMode;
59
60 /* Please see man pages for details
61
62
63
64
65
66
67 */
68 DebugPadReader(DebugPad& debugPad=GetDebugPad( ))
m_DebugPad(debugPad)69 : m_DebugPad(debugPad)
70 , m_IndexOfRead(-1)
71 , m_IsReadLatestFirst(true)
72 , m_StickClampMode(STICK_CLAMP_MODE_CIRCLE_WITH_PLAY)
73 , m_TickOfRead(-1)
74 {};
75
76 /* Please see man pages for details
77
78
79 */
~DebugPadReader()80 ~DebugPadReader( ) {};
81
82 /* Please see man pages for details
83
84
85
86
87
88
89
90 */
91 void Read(DebugPadStatus* pBufs, s32* pReadLen, s32 bufLen);
92
93 /* Please see man pages for details
94
95
96
97
98
99
100
101
102
103 */
104 bool ReadLatest(DebugPadStatus* pBuf);
105
106 /* Please see man pages for details
107
108
109
110
111 */
112 StickClampMode GetStickClampMode( ) const;
113
114 /* Please see man pages for details
115
116
117
118
119
120
121
122
123 */
124 void SetStickClampMode(StickClampMode mode);
125
126
127 /* Please see man pages for details
128
129 */
130 static const s8 MAX_READ_NUM = 7;
131
132 protected:
133 DebugPad& m_DebugPad;
134 s32 m_IndexOfRead;
135 bit16 m_LatestHold;
136 bool m_IsReadLatestFirst;
137 nn::util::SizedEnum1<StickClampMode> m_StickClampMode;
138 NN_PADDING4;
139 s64 m_TickOfRead;
140 };
141
142
143 // inline definition
144
GetStickClampMode()145 inline DebugPadReader::StickClampMode DebugPadReader::GetStickClampMode( ) const
146 {
147 return m_StickClampMode;
148 }
149
SetStickClampMode(DebugPadReader::StickClampMode mode)150 inline void DebugPadReader::SetStickClampMode(DebugPadReader::StickClampMode mode)
151 {
152 m_StickClampMode = mode;
153 }
154
155 } // namespace CTR {
156 } // namespace hid {
157 } // namespace nn {
158
159 #endif // #ifndef NN_HID_CTR_HID_DEBUG_PAD_READER_H_
160