7
7
*/
8
8
9
9
#include <kunit/test.h>
10
+ #include "./hid-uclogic-params.h"
10
11
#include "./hid-uclogic-rdesc.h"
11
12
12
13
#define MAX_STR_DESC_SIZE 14
@@ -17,6 +18,7 @@ struct uclogic_parse_ugee_v2_desc_case {
17
18
const __u8 str_desc [MAX_STR_DESC_SIZE ];
18
19
size_t str_desc_size ;
19
20
const s32 desc_params [UCLOGIC_RDESC_PH_ID_NUM ];
21
+ enum uclogic_params_frame_type frame_type ;
20
22
};
21
23
22
24
static struct uclogic_parse_ugee_v2_desc_case uclogic_parse_ugee_v2_desc_cases [] = {
@@ -26,6 +28,7 @@ static struct uclogic_parse_ugee_v2_desc_case uclogic_parse_ugee_v2_desc_cases[]
26
28
.str_desc = {},
27
29
.str_desc_size = 0 ,
28
30
.desc_params = {},
31
+ .frame_type = UCLOGIC_PARAMS_FRAME_BUTTONS ,
29
32
},
30
33
{
31
34
.name = "resolution_with_value_0" ,
@@ -48,6 +51,7 @@ static struct uclogic_parse_ugee_v2_desc_case uclogic_parse_ugee_v2_desc_cases[]
48
51
[UCLOGIC_RDESC_PEN_PH_ID_PRESSURE_LM ] = 0x1FFF ,
49
52
[UCLOGIC_RDESC_FRAME_PH_ID_UM ] = 0x08 ,
50
53
},
54
+ .frame_type = UCLOGIC_PARAMS_FRAME_BUTTONS ,
51
55
},
52
56
/* XP-PEN Deco L str_desc: Frame with 8 buttons */
53
57
{
@@ -71,6 +75,7 @@ static struct uclogic_parse_ugee_v2_desc_case uclogic_parse_ugee_v2_desc_cases[]
71
75
[UCLOGIC_RDESC_PEN_PH_ID_PRESSURE_LM ] = 0x1FFF ,
72
76
[UCLOGIC_RDESC_FRAME_PH_ID_UM ] = 0x08 ,
73
77
},
78
+ .frame_type = UCLOGIC_PARAMS_FRAME_BUTTONS ,
74
79
},
75
80
/* PARBLO A610 PRO str_desc: Frame with 9 buttons and dial */
76
81
{
@@ -94,6 +99,31 @@ static struct uclogic_parse_ugee_v2_desc_case uclogic_parse_ugee_v2_desc_cases[]
94
99
[UCLOGIC_RDESC_PEN_PH_ID_PRESSURE_LM ] = 0x1FFF ,
95
100
[UCLOGIC_RDESC_FRAME_PH_ID_UM ] = 0x09 ,
96
101
},
102
+ .frame_type = UCLOGIC_PARAMS_FRAME_DIAL ,
103
+ },
104
+ /* XP-PEN Deco Pro S str_desc: Frame with 8 buttons and mouse */
105
+ {
106
+ .name = "frame_type_mouse" ,
107
+ .res = 0 ,
108
+ .str_desc = {
109
+ 0x0E , 0x03 ,
110
+ 0xC8 , 0xB3 ,
111
+ 0x34 , 0x65 ,
112
+ 0x08 ,
113
+ 0x02 ,
114
+ 0xFF , 0x1F ,
115
+ 0xD8 , 0x13 ,
116
+ },
117
+ .str_desc_size = 12 ,
118
+ .desc_params = {
119
+ [UCLOGIC_RDESC_PEN_PH_ID_X_LM ] = 0xB3C8 ,
120
+ [UCLOGIC_RDESC_PEN_PH_ID_X_PM ] = 0x2363 ,
121
+ [UCLOGIC_RDESC_PEN_PH_ID_Y_LM ] = 0x6534 ,
122
+ [UCLOGIC_RDESC_PEN_PH_ID_Y_PM ] = 0x13EC ,
123
+ [UCLOGIC_RDESC_PEN_PH_ID_PRESSURE_LM ] = 0x1FFF ,
124
+ [UCLOGIC_RDESC_FRAME_PH_ID_UM ] = 0x08 ,
125
+ },
126
+ .frame_type = UCLOGIC_PARAMS_FRAME_MOUSE ,
97
127
},
98
128
};
99
129
@@ -110,12 +140,14 @@ static void uclogic_parse_ugee_v2_desc_test(struct kunit *test)
110
140
{
111
141
int res ;
112
142
s32 desc_params [UCLOGIC_RDESC_PH_ID_NUM ];
143
+ enum uclogic_params_frame_type frame_type ;
113
144
const struct uclogic_parse_ugee_v2_desc_case * params = test -> param_value ;
114
145
115
146
res = uclogic_params_parse_ugee_v2_desc (params -> str_desc ,
116
147
params -> str_desc_size ,
117
148
desc_params ,
118
- ARRAY_SIZE (desc_params ));
149
+ ARRAY_SIZE (desc_params ),
150
+ & frame_type );
119
151
KUNIT_ASSERT_EQ (test , res , params -> res );
120
152
121
153
if (res )
@@ -139,6 +171,7 @@ static void uclogic_parse_ugee_v2_desc_test(struct kunit *test)
139
171
KUNIT_EXPECT_EQ (test ,
140
172
params -> desc_params [UCLOGIC_RDESC_FRAME_PH_ID_UM ],
141
173
desc_params [UCLOGIC_RDESC_FRAME_PH_ID_UM ]);
174
+ KUNIT_EXPECT_EQ (test , params -> frame_type , frame_type );
142
175
}
143
176
144
177
static struct kunit_case hid_uclogic_params_test_cases [] = {
0 commit comments