Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1702 | - | 1 | #ifndef _DESCRIPTOR_PARSER_ |
2 | #define _DESCRIPTOR_PARSER_ |
||
3 | |||
4 | /* PGMSPACE */ |
||
5 | #include <inttypes.h> |
||
6 | #include <avr/pgmspace.h> |
||
7 | |||
8 | typedef void (*PARSE)( uint8_t bytes ); |
||
9 | |||
10 | /* Common Messages */ |
||
11 | |||
12 | const char descr_len [] PROGMEM = "\r\nDescriptor Length:\t"; |
||
13 | const char descr_type [] PROGMEM = "\r\nDescriptor type:\t"; |
||
14 | const char class_str [] PROGMEM = "\r\nClass:\t\t\t"; |
||
15 | const char subclass_str [] PROGMEM = "\r\nSubclass:\t\t"; |
||
16 | const char protocol_str [] PROGMEM = "\r\nProtocol:\t\t"; |
||
17 | const char maxpktsize_str [] PROGMEM = "\r\nMax.packet size:\t"; |
||
18 | const char unk_msg [] PROGMEM = " Unknown"; |
||
19 | const char reserved_msg [] PROGMEM = "Reserved"; |
||
20 | const char rcode_error_msg [] PROGMEM = "\r\nRequest error. Reurn code: "; |
||
21 | |||
22 | /* Endpoint attributes */ |
||
23 | |||
24 | const char control_tr [] PROGMEM = "Control"; |
||
25 | const char iso_tr [] PROGMEM = "Isochronous"; |
||
26 | const char bulk_tr [] PROGMEM = "Bulk"; |
||
27 | const char int_tr [] PROGMEM = "Interrupt"; |
||
28 | |||
29 | const char* transfer_types [] PROGMEM = |
||
30 | { |
||
31 | control_tr, |
||
32 | iso_tr, |
||
33 | bulk_tr, |
||
34 | int_tr |
||
35 | }; |
||
36 | |||
37 | const char nosync_type [] PROGMEM = "No Synchronization"; |
||
38 | const char async_type [] PROGMEM = "Asynchronous"; |
||
39 | const char adaptive_type [] PROGMEM = "Adaptive"; |
||
40 | const char sync_type [] PROGMEM = "Synchronous"; |
||
41 | |||
42 | const char* sync_types [] PROGMEM = |
||
43 | { |
||
44 | nosync_type, |
||
45 | async_type, |
||
46 | adaptive_type, |
||
47 | sync_type |
||
48 | }; |
||
49 | |||
50 | const char data_usage [] PROGMEM = "Data"; |
||
51 | const char feedback_usage [] PROGMEM = "Feedback"; |
||
52 | const char implicit_usage [] PROGMEM = "Implicit Feedback Data"; |
||
53 | const char reserved_usage [] PROGMEM = "Reserved"; |
||
54 | |||
55 | const char* usage_types [] PROGMEM = |
||
56 | { |
||
57 | data_usage, |
||
58 | feedback_usage, |
||
59 | implicit_usage, |
||
60 | reserved_usage |
||
61 | }; |
||
62 | |||
63 | /* HID Country Codes */ |
||
64 | |||
65 | const char notsupported_cc [] PROGMEM = "Not Supported"; |
||
66 | const char arabic_cc [] PROGMEM = "Arabic"; |
||
67 | const char belgian_cc [] PROGMEM = "Belgian"; |
||
68 | const char canadianbi_cc [] PROGMEM = "Canadian-Bilingual"; |
||
69 | const char canadianfr_cc [] PROGMEM = "Canadian-French"; |
||
70 | const char czech_cc [] PROGMEM = "Czech Republic"; |
||
71 | const char danish_cc [] PROGMEM = "Danish"; |
||
72 | const char finnish_cc [] PROGMEM = "Finnish"; |
||
73 | const char french_cc [] PROGMEM = "French"; |
||
74 | const char german_cc [] PROGMEM = "German"; |
||
75 | const char greek_cc [] PROGMEM = "Greek"; |
||
76 | const char hebrew_cc [] PROGMEM = "Hebrew"; |
||
77 | const char hungary_cc [] PROGMEM = "Hungary"; |
||
78 | const char intl_cc [] PROGMEM = "International (ISO)"; |
||
79 | const char italian_cc [] PROGMEM = "Italian"; |
||
80 | const char japan_cc [] PROGMEM = "Japan (Katakana)"; |
||
81 | const char korean_cc [] PROGMEM = "Korean"; |
||
82 | const char latam_cc [] PROGMEM = "Latin American"; |
||
83 | const char dutch_cc [] PROGMEM = "Netherlands/Dutch"; |
||
84 | const char norwegian_cc [] PROGMEM = "Norwegian"; |
||
85 | const char persian_cc [] PROGMEM = "Persian (Farsi)"; |
||
86 | const char poland_cc [] PROGMEM = "Poland"; |
||
87 | const char portuguese_cc [] PROGMEM = "Portuguese"; |
||
88 | const char russia_cc [] PROGMEM = "Russia"; |
||
89 | const char slovakia_cc [] PROGMEM = "Slovakia"; |
||
90 | const char spanish_cc [] PROGMEM = "Spanish"; |
||
91 | const char swedish_cc [] PROGMEM = "Swedish"; |
||
92 | const char swiss_fr_cc [] PROGMEM = "Swiss/French"; |
||
93 | const char swiss_ger_cc [] PROGMEM = "Swiss/German"; |
||
94 | const char swiss_cc [] PROGMEM = "Switzerland"; |
||
95 | const char taiwan_cc [] PROGMEM = "Taiwan"; |
||
96 | const char turkish_q_cc [] PROGMEM = "Turkish-Q"; |
||
97 | const char uk_cc [] PROGMEM = "UK"; |
||
98 | const char us_cc [] PROGMEM = "US"; |
||
99 | const char yugo_cc [] PROGMEM = "Yugoslavia"; |
||
100 | const char turkish_f_cc [] PROGMEM = "Turkish-F"; |
||
101 | |||
102 | const char* HID_Country_Codes [] PROGMEM = |
||
103 | { |
||
104 | notsupported_cc, |
||
105 | arabic_cc, |
||
106 | belgian_cc, |
||
107 | canadianbi_cc, |
||
108 | canadianfr_cc, |
||
109 | czech_cc, |
||
110 | danish_cc, |
||
111 | finnish_cc, |
||
112 | french_cc, |
||
113 | german_cc, |
||
114 | greek_cc, |
||
115 | hebrew_cc, |
||
116 | hungary_cc, |
||
117 | intl_cc, |
||
118 | italian_cc, |
||
119 | japan_cc, |
||
120 | korean_cc, |
||
121 | latam_cc, |
||
122 | dutch_cc, |
||
123 | norwegian_cc, |
||
124 | persian_cc, |
||
125 | poland_cc, |
||
126 | portuguese_cc, |
||
127 | russia_cc, |
||
128 | slovakia_cc, |
||
129 | spanish_cc, |
||
130 | swedish_cc, |
||
131 | swiss_fr_cc, |
||
132 | swiss_ger_cc, |
||
133 | swiss_cc, |
||
134 | taiwan_cc, |
||
135 | turkish_q_cc, |
||
136 | uk_cc, |
||
137 | us_cc, |
||
138 | yugo_cc, |
||
139 | turkish_f_cc |
||
140 | }; |
||
141 | |||
142 | /* HID report descriptor parser string definitions */ |
||
143 | /* Item type strings */ |
||
144 | const char btype_main [] PROGMEM = "Main"; |
||
145 | const char btype_global [] PROGMEM = "Global"; |
||
146 | const char btype_local [] PROGMEM = "Local"; |
||
147 | const char btype_reserved [] PROGMEM = "Reserved"; |
||
148 | /* Item types strings array. Array index corresponds to bType */ |
||
149 | const char* btypes [] PROGMEM = |
||
150 | { |
||
151 | btype_main, |
||
152 | btype_global, |
||
153 | btype_local, |
||
154 | btype_reserved |
||
155 | }; |
||
156 | /* Main Item Tag Strings */ |
||
157 | const char main_tag_input [] PROGMEM = "Input\t\t"; |
||
158 | const char main_tag_output [] PROGMEM = "Output\t\t"; |
||
159 | const char main_tag_collection [] PROGMEM = "Collection\t\t"; |
||
160 | const char main_tag_feature [] PROGMEM = "Feature\t\t"; |
||
161 | const char main_tag_endcoll [] PROGMEM = "End Collection\t"; |
||
162 | /* Main Item Tags Strings Array */ |
||
163 | const char* maintags [] PROGMEM = |
||
164 | { |
||
165 | main_tag_input, |
||
166 | main_tag_output, |
||
167 | main_tag_collection, |
||
168 | main_tag_feature, |
||
169 | main_tag_endcoll |
||
170 | }; |
||
171 | /* Global Item Tag Strings */ |
||
172 | const char global_tag_usagepage [] PROGMEM = "Usage Page\t\t"; |
||
173 | const char global_tag_logmin [] PROGMEM = "Logical Minimum\t"; |
||
174 | const char global_tag_logmax [] PROGMEM = "Logical Maximum\t"; |
||
175 | const char global_tag_physmin [] PROGMEM = "Physical Minimum\t"; |
||
176 | const char global_tag_physmax [] PROGMEM = "Physical Maximum\t"; |
||
177 | const char global_tag_unitexp [] PROGMEM = "Unit Exponent\t"; |
||
178 | const char global_tag_unit [] PROGMEM = "Unit\t\t"; |
||
179 | const char global_tag_repsize [] PROGMEM = "Report Size\t"; |
||
180 | const char global_tag_repid [] PROGMEM = "Report ID\t\t"; |
||
181 | const char global_tag_repcount [] PROGMEM = "Report Count\t"; |
||
182 | const char global_tag_push [] PROGMEM = "Push\t\t"; |
||
183 | const char global_tag_pop [] PROGMEM = "Pop\t\t"; |
||
184 | /* Global Item Tag Strings Array */ |
||
185 | const char* globaltags [] PROGMEM = |
||
186 | { |
||
187 | global_tag_usagepage, |
||
188 | global_tag_logmin, |
||
189 | global_tag_logmax, |
||
190 | global_tag_physmin, |
||
191 | global_tag_physmax, |
||
192 | global_tag_unitexp, |
||
193 | global_tag_unit, |
||
194 | global_tag_repsize, |
||
195 | global_tag_repid, |
||
196 | global_tag_repcount, |
||
197 | global_tag_push, |
||
198 | global_tag_pop |
||
199 | }; |
||
200 | /* Local Item Tag Strings */ |
||
201 | const char local_tag_usage [] PROGMEM = "Usage\t\t"; |
||
202 | const char local_tag_usagemin [] PROGMEM = "Usage Minimum\t"; |
||
203 | const char local_tag_usagemax [] PROGMEM = "Usage Maximum\t"; |
||
204 | const char local_tag_desidx [] PROGMEM = "Designator Index\t"; |
||
205 | const char local_tag_desmin [] PROGMEM = "Designator Minimum\t"; |
||
206 | const char local_tag_desmax [] PROGMEM = "Designator Maximum\t"; |
||
207 | const char local_tag_stridx [] PROGMEM = "String Index\t"; |
||
208 | const char local_tag_strmin [] PROGMEM = "String Minimum\t"; |
||
209 | const char local_tag_strmax [] PROGMEM = "String Maximum\t"; |
||
210 | const char local_tag_delimiter [] PROGMEM = "Delimiter\t"; |
||
211 | /* Local Item Tag Strings Array */ |
||
212 | const char* localtags [] PROGMEM = |
||
213 | { |
||
214 | local_tag_usage, |
||
215 | local_tag_usagemin, |
||
216 | local_tag_usagemax, |
||
217 | local_tag_desidx, |
||
218 | local_tag_desmin, |
||
219 | local_tag_desmax, |
||
220 | local_tag_stridx, |
||
221 | local_tag_strmin, |
||
222 | local_tag_strmax, |
||
223 | local_tag_delimiter |
||
224 | }; |
||
225 | /* Collection Types Strings */ |
||
226 | const char coll_phy [] PROGMEM = "Physical (group of axes)"; |
||
227 | const char coll_app [] PROGMEM = "Application (mouse, keyboard)"; |
||
228 | const char coll_log [] PROGMEM = "Logical (interrelated data)"; |
||
229 | const char coll_rep [] PROGMEM = "Report"; |
||
230 | const char coll_arr [] PROGMEM = "Named Array"; |
||
231 | const char coll_usw [] PROGMEM = "Usage Switch"; |
||
232 | const char coll_umod [] PROGMEM = "Usage Modifier"; |
||
233 | /* Collection Types Strings Array */ |
||
234 | const char* collections [] PROGMEM = |
||
235 | { |
||
236 | coll_phy, |
||
237 | coll_app, |
||
238 | coll_log, |
||
239 | coll_rep, |
||
240 | coll_arr, |
||
241 | coll_usw, |
||
242 | coll_umod |
||
243 | }; |
||
244 | /* Usage Pages Strings */ |
||
245 | const char up_undef [] PROGMEM = "Undefined"; |
||
246 | const char up_gendesk [] PROGMEM = "Generic Desktop Controls"; |
||
247 | const char up_sim [] PROGMEM = "Simulation Controls"; |
||
248 | const char up_vr [] PROGMEM = "VR Controls"; |
||
249 | const char up_sport [] PROGMEM = "Sport Controls"; |
||
250 | const char up_game [] PROGMEM = "Game Controls"; |
||
251 | const char up_gendev [] PROGMEM = "Generic Device Controls"; |
||
252 | const char up_kbd [] PROGMEM = "Keyboard/Keypad"; |
||
253 | const char up_led [] PROGMEM = "LEDs"; |
||
254 | const char up_button [] PROGMEM = "Button"; |
||
255 | const char up_ord [] PROGMEM = "Ordinal"; |
||
256 | const char up_tele [] PROGMEM = "Telephony"; |
||
257 | const char up_cons [] PROGMEM = "Consumer"; |
||
258 | const char up_dig [] PROGMEM = "Digitizer"; |
||
259 | //const char up_res [] PROGMEM = "Reserved"; |
||
260 | const char up_pid [] PROGMEM = "PID Page"; |
||
261 | const char up_uni [] PROGMEM = "Unicode"; |
||
262 | /* Usage Pages Strings Array */ |
||
263 | const char * usage_pages [] PROGMEM = |
||
264 | { |
||
265 | up_undef, |
||
266 | up_gendesk, |
||
267 | up_sim, |
||
268 | up_vr, |
||
269 | up_sport, |
||
270 | up_game, |
||
271 | up_gendev, |
||
272 | up_kbd, |
||
273 | up_led, |
||
274 | up_button, |
||
275 | up_ord, |
||
276 | up_tele, |
||
277 | up_cons, |
||
278 | up_dig, |
||
279 | reserved_msg, |
||
280 | up_pid, |
||
281 | up_uni |
||
282 | }; |
||
283 | |||
284 | #endif //_DESCRIPTOR_PARSER_ |