Subversion Repositories Projects

Rev

Go to most recent revision | 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_