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_ |