USB Host Shield 2.0
Loading...
Searching...
No Matches
hidescriptorparser.cpp
Go to the documentation of this file.
1/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved.
2
3This software may be distributed and modified under the terms of the GNU
4General Public License version 2 (GPL2) as published by the Free Software
5Foundation and appearing in the file GPL2.TXT included in the packaging of
6this file. Please note that GPL2 Section 2[b] requires that all works based
7on this software must also be made publicly available under the terms of
8the GPL2 ("Copyleft").
9
10Contact information
11-------------------
12
13Circuits At Home, LTD
14Web : http://www.circuitsathome.com
15e-mail : support@circuitsathome.com
16 */
17
18#include "hidescriptorparser.h"
19
36};
37
45};
55
56};
83};
105};
116};
126};
127const char * const ReportDescParserBase::simuTitles0[] PROGMEM = {
140};
141const char * const ReportDescParserBase::simuTitles1[] PROGMEM = {
148};
149const char * const ReportDescParserBase::simuTitles2[] PROGMEM = {
183};
184const char * const ReportDescParserBase::vrTitles0[] PROGMEM = {
195};
196const char * const ReportDescParserBase::vrTitles1[] PROGMEM = {
199};
205};
217};
239};
240const char * const ReportDescParserBase::gameTitles0[] PROGMEM = {
244};
245const char * const ReportDescParserBase::gameTitles1[] PROGMEM = {
271};
272const char * const ReportDescParserBase::genDevCtrlTitles[] PROGMEM = {
280};
281const char * const ReportDescParserBase::ledTitles[] PROGMEM = {
359};
360const char * const ReportDescParserBase::telTitles0 [] PROGMEM = {
368};
369const char * const ReportDescParserBase::telTitles1 [] PROGMEM = {
388};
389const char * const ReportDescParserBase::telTitles2 [] PROGMEM = {
394};
395const char * const ReportDescParserBase::telTitles3 [] PROGMEM = {
401};
402const char * const ReportDescParserBase::telTitles4 [] PROGMEM = {
418};
419const char * const ReportDescParserBase::telTitles5 [] PROGMEM = {
436};
437const char * const ReportDescParserBase::consTitles0[] PROGMEM = {
444};
445const char * const ReportDescParserBase::consTitles1[] PROGMEM = {
449};
450const char * const ReportDescParserBase::consTitles2[] PROGMEM = {
458
459};
460const char * const ReportDescParserBase::consTitles3[] PROGMEM = {
470};
471const char * const ReportDescParserBase::consTitles4[] PROGMEM = {
479};
480const char * const ReportDescParserBase::consTitles5[] PROGMEM = {
518};
519const char * const ReportDescParserBase::consTitles6[] PROGMEM = {
551};
552const char * const ReportDescParserBase::consTitles7[] PROGMEM = {
564};
565const char * const ReportDescParserBase::consTitles8[] PROGMEM = {
572};
573const char * const ReportDescParserBase::consTitles9[] PROGMEM = {
588};
589const char * const ReportDescParserBase::consTitlesA[] PROGMEM = {
596};
597const char * const ReportDescParserBase::consTitlesB[] PROGMEM = {
609};
610const char * const ReportDescParserBase::consTitlesC[] PROGMEM = {
616};
617const char * const ReportDescParserBase::consTitlesD[] PROGMEM = {
690};
691const char * const ReportDescParserBase::consTitlesE[] PROGMEM = {
833};
834const char * const ReportDescParserBase::digitTitles0[] PROGMEM = {
848};
849const char * const ReportDescParserBase::digitTitles1[] PROGMEM = {
853
854};
855const char * const ReportDescParserBase::digitTitles2[] PROGMEM = {
879};
880const char * const ReportDescParserBase::aplphanumTitles0[] PROGMEM = {
883};
884const char * const ReportDescParserBase::aplphanumTitles1[] PROGMEM = {
931};
932const char * const ReportDescParserBase::aplphanumTitles2[] PROGMEM = {
954};
955const char * const ReportDescParserBase::medInstrTitles0[] PROGMEM = {
964};
965const char * const ReportDescParserBase::medInstrTitles1[] PROGMEM = {
971};
972const char * const ReportDescParserBase::medInstrTitles2[] PROGMEM = {
975};
976const char * const ReportDescParserBase::medInstrTitles3[] PROGMEM = {
987};
988const char * const ReportDescParserBase::medInstrTitles4[] PROGMEM = {
991};
992
995 uint8_t *p = (uint8_t*)pbuf;
996
997
998 totalSize = 0;
999
1000 while(cntdn) {
1001 //USB_HOST_SERIAL.println("");
1002 //PrintHex<uint16_t>(offset + len - cntdn);
1003 //USB_HOST_SERIAL.print(":");
1004
1005 ParseItem(&p, &cntdn);
1006
1007 //if (ParseItem(&p, &cntdn))
1008 // return;
1009 }
1010 //USBTRACE2("Total:", totalSize);
1011}
1012
1014 E_Notify(PSTR("("), 0x80);
1015 for(; len; p++, len--)
1016 PrintHex<uint8_t > (*p, 0x80);
1017 E_Notify(PSTR(")"), 0x80);
1018}
1019
1021 E_Notify(PSTR("("), 0x80);
1022 PrintHex<uint8_t > (data, 0x80);
1023 E_Notify(PSTR(")"), 0x80);
1024}
1025
1027 switch(prefix & (TYPE_MASK | TAG_MASK)) {
1029 E_Notify(PSTR("\r\nPush"), 0x80);
1030 break;
1031 case (TYPE_GLOBAL | TAG_GLOBAL_POP):
1032 E_Notify(PSTR("\r\nPop"), 0x80);
1033 break;
1035 E_Notify(PSTR("\r\nUsage Page"), 0x80);
1036 break;
1038 E_Notify(PSTR("\r\nLogical Min"), 0x80);
1039 break;
1041 E_Notify(PSTR("\r\nLogical Max"), 0x80);
1042 break;
1044 E_Notify(PSTR("\r\nPhysical Min"), 0x80);
1045 break;
1047 E_Notify(PSTR("\r\nPhysical Max"), 0x80);
1048 break;
1050 E_Notify(PSTR("\r\nUnit Exp"), 0x80);
1051 break;
1053 E_Notify(PSTR("\r\nUnit"), 0x80);
1054 break;
1056 E_Notify(PSTR("\r\nReport Size"), 0x80);
1057 break;
1059 E_Notify(PSTR("\r\nReport Count"), 0x80);
1060 break;
1062 E_Notify(PSTR("\r\nReport Id"), 0x80);
1063 break;
1064 case (TYPE_LOCAL | TAG_LOCAL_USAGE):
1065 E_Notify(PSTR("\r\nUsage"), 0x80);
1066 break;
1068 E_Notify(PSTR("\r\nUsage Min"), 0x80);
1069 break;
1071 E_Notify(PSTR("\r\nUsage Max"), 0x80);
1072 break;
1074 E_Notify(PSTR("\r\nCollection"), 0x80);
1075 break;
1077 E_Notify(PSTR("\r\nEnd Collection"), 0x80);
1078 break;
1079 case (TYPE_MAIN | TAG_MAIN_INPUT):
1080 E_Notify(PSTR("\r\nInput"), 0x80);
1081 break;
1082 case (TYPE_MAIN | TAG_MAIN_OUTPUT):
1083 E_Notify(PSTR("\r\nOutput"), 0x80);
1084 break;
1085 case (TYPE_MAIN | TAG_MAIN_FEATURE):
1086 E_Notify(PSTR("\r\nFeature"), 0x80);
1087 break;
1088 } // switch (**pp & (TYPE_MASK | TAG_MASK))
1089}
1090
1092 //uint8_t ret = enErrorSuccess;
1093 //reinterpret_cast<>(varBuffer);
1094 switch(itemParseState) {
1095 case 0:
1096 if(**pp == HID_LONG_ITEM_PREFIX)
1097 USBTRACE("\r\nLONG\r\n");
1098 else {
1099 uint8_t size = ((**pp) & DATA_SIZE_MASK);
1100
1101 itemPrefix = (**pp);
1102 itemSize = 1 + ((size == DATA_SIZE_4) ? 4 : size);
1103
1105 }
1106 (*pp)++;
1107 (*pcntdn)--;
1108 itemSize--;
1109 itemParseState = 1;
1110
1111 if(!itemSize)
1112 break;
1113
1114 if(!pcntdn)
1115 return enErrorIncomplete;
1116 // fall through
1117 case 1:
1118 //USBTRACE2("\r\niSz:",itemSize);
1119
1122 itemParseState = 2;
1123 // fall through
1124 case 2:
1125 if(!valParser.Parse(pp, pcntdn))
1126 return enErrorIncomplete;
1127 itemParseState = 3;
1128 // fall through
1129 case 3:
1130 {
1131 uint8_t data = *((uint8_t*)varBuffer);
1132
1133 switch(itemPrefix & (TYPE_MASK | TAG_MASK)) {
1134 case (TYPE_LOCAL | TAG_LOCAL_USAGE):
1135 if(pfUsage) {
1136 if(theBuffer.valueSize > 1) {
1137 uint16_t* ui16 = reinterpret_cast<uint16_t *>(varBuffer);
1138 pfUsage(*ui16);
1139 } else
1140 pfUsage(data);
1141 }
1142 break;
1144 rptSize = data;
1145 PrintByteValue(data);
1146 break;
1148 rptCount = data;
1149 PrintByteValue(data);
1150 break;
1161 break;
1163 case (TYPE_GLOBAL | TAG_GLOBAL_POP):
1164 break;
1166 SetUsagePage(data);
1167 PrintUsagePage(data);
1168 PrintByteValue(data);
1169 break;
1172 switch(data) {
1173 case 0x00:
1174 E_Notify(PSTR(" Physical"), 0x80);
1175 break;
1176 case 0x01:
1177 E_Notify(PSTR(" Application"), 0x80);
1178 break;
1179 case 0x02:
1180 E_Notify(PSTR(" Logical"), 0x80);
1181 break;
1182 case 0x03:
1183 E_Notify(PSTR(" Report"), 0x80);
1184 break;
1185 case 0x04:
1186 E_Notify(PSTR(" Named Array"), 0x80);
1187 break;
1188 case 0x05:
1189 E_Notify(PSTR(" Usage Switch"), 0x80);
1190 break;
1191 case 0x06:
1192 E_Notify(PSTR(" Usage Modifier"), 0x80);
1193 break;
1194 default:
1195 E_Notify(PSTR(" Vendor Defined("), 0x80);
1196 PrintHex<uint8_t > (data, 0x80);
1197 E_Notify(PSTR(")"), 0x80);
1198 }
1199 break;
1200 case (TYPE_MAIN | TAG_MAIN_INPUT):
1201 case (TYPE_MAIN | TAG_MAIN_OUTPUT):
1202 case (TYPE_MAIN | TAG_MAIN_FEATURE):
1204 rptSize = 0;
1205 rptCount = 0;
1206 E_Notify(PSTR("("), 0x80);
1207 PrintBin<uint8_t > (data, 0x80);
1208 E_Notify(PSTR(")"), 0x80);
1209 break;
1210 } // switch (**pp & (TYPE_MASK | TAG_MASK))
1211 }
1212 } // switch (itemParseState)
1213 itemParseState = 0;
1214 return enErrorSuccess;
1215}
1216
1224 NULL, // Keyboard/Keypad
1231 NULL, // Reserved
1232 NULL, // PID
1233 NULL // Unicode
1234};
1235
1237 pfUsage = NULL;
1238
1239 if(VALUE_BETWEEN(page, 0x00, 0x11)) {
1241
1242 } else {
1243 switch(page) {
1244 case 0x14:
1246 break;
1247 case 0x40:
1249 break;
1250 }
1251 }
1252}
1253
1255 const char * const * w;
1256 E_Notify(pstrSpace, 0x80);
1257
1258 output_if_between(page, 0x00, 0x11, w, E_Notify, usagePageTitles0, 0x80)
1259 else output_if_between(page, 0x8b, 0x92, w, E_Notify, usagePageTitles1, 0x80)
1260 else if(VALUE_BETWEEN(page, 0x7f, 0x84))
1262 else if(VALUE_BETWEEN(page, 0x83, 0x8c))
1264 else if(page > 0xfeff /* && page <= 0xffff */)
1266 else
1267 switch(page) {
1268 case 0x14:
1270 break;
1271 case 0x40:
1273 break;
1274 default:
1276 }
1277}
1278
1280 E_Notify(pstrSpace, 0x80);
1281 E_Notify(PSTR("Btn"), 0x80);
1282 PrintHex<uint16_t > (usage, 0x80);
1283 E_Notify(PSTR("\r\n"), 0x80);
1284 //USB_HOST_SERIAL.print(usage, HEX);
1285}
1286
1288 E_Notify(pstrSpace, 0x80);
1289 E_Notify(PSTR("Inst"), 0x80);
1290 // Sorry, HEX for now...
1291 PrintHex<uint16_t > (usage, 0x80);
1292 E_Notify(PSTR("\r\n"), 0x80);
1293 //USB_HOST_SERIAL.print(usage, DEC);
1294}
1295
1297 const char * const * w;
1298 E_Notify(pstrSpace, 0x80);
1299
1300 output_if_between(usage, 0x00, 0x0a, w, E_Notify, genDesktopTitles0, 0x80)
1301 else output_if_between(usage, 0x2f, 0x49, w, E_Notify, genDesktopTitles1, 0x80)
1302 else output_if_between(usage, 0x7f, 0x94, w, E_Notify, genDesktopTitles2, 0x80)
1303 else output_if_between(usage, 0x9f, 0xa9, w, E_Notify, genDesktopTitles3, 0x80)
1304 else output_if_between(usage, 0xaf, 0xb8, w, E_Notify, genDesktopTitles4, 0x80)
1305 else E_Notify(pstrUsagePageUndefined, 0x80);
1306}
1307
1309 const char * const * w;
1310 E_Notify(pstrSpace, 0x80);
1311
1312 output_if_between(usage, 0x00, 0x0d, w, E_Notify, simuTitles0, 0x80)
1313 else output_if_between(usage, 0x1f, 0x26, w, E_Notify, simuTitles1, 0x80)
1314 else output_if_between(usage, 0xaf, 0xd1, w, E_Notify, simuTitles2, 0x80)
1315 else E_Notify(pstrUsagePageUndefined, 0x80);
1316}
1317
1319 const char * const * w;
1320 E_Notify(pstrSpace, 0x80);
1321
1322 output_if_between(usage, 0x00, 0x0b, w, E_Notify, vrTitles0, 0x80)
1323 else output_if_between(usage, 0x1f, 0x22, w, E_Notify, vrTitles1, 0x80)
1324 else E_Notify(pstrUsagePageUndefined, 0x80);
1325}
1326
1328 const char * const * w;
1329 E_Notify(pstrSpace, 0x80);
1330
1331 output_if_between(usage, 0x00, 0x05, w, E_Notify, sportsCtrlTitles0, 0x80)
1332 else output_if_between(usage, 0x2f, 0x3a, w, E_Notify, sportsCtrlTitles1, 0x80)
1333 else output_if_between(usage, 0x4f, 0x64, w, E_Notify, sportsCtrlTitles2, 0x80)
1334 else E_Notify(pstrUsagePageUndefined, 0x80);
1335}
1336
1338 const char * const * w;
1339 E_Notify(pstrSpace, 0x80);
1340
1341 output_if_between(usage, 0x00, 0x04, w, E_Notify, gameTitles0, 0x80)
1342 else output_if_between(usage, 0x1f, 0x3a, w, E_Notify, gameTitles1, 0x80)
1343 else E_Notify(pstrUsagePageUndefined, 0x80);
1344}
1345
1347 const char * const * w;
1348 E_Notify(pstrSpace, 0x80);
1349
1350 output_if_between(usage, 0x1f, 0x27, w, E_Notify, genDevCtrlTitles, 0x80)
1351 else E_Notify(pstrUsagePageUndefined, 0x80);
1352}
1353
1355 const char * const * w;
1356 E_Notify(pstrSpace, 0x80);
1357
1358 output_if_between(usage, 0x00, 0x4e, w, E_Notify, ledTitles, 0x80)
1359 else E_Notify(pstrUsagePageUndefined, 0x80);
1360}
1361
1363 const char * const * w;
1364 E_Notify(pstrSpace, 0x80);
1365
1366 output_if_between(usage, 0x00, 0x08, w, E_Notify, telTitles0, 0x80)
1367 else output_if_between(usage, 0x1f, 0x32, w, E_Notify, telTitles1, 0x80)
1368 else output_if_between(usage, 0x4f, 0x54, w, E_Notify, telTitles2, 0x80)
1369 else output_if_between(usage, 0x6f, 0x75, w, E_Notify, telTitles3, 0x80)
1370 else output_if_between(usage, 0x8f, 0x9f, w, E_Notify, telTitles4, 0x80)
1371 else output_if_between(usage, 0xaf, 0xc0, w, E_Notify, telTitles5, 0x80)
1372 else E_Notify(pstrUsagePageUndefined, 0x80);
1373}
1374
1376 const char * const * w;
1377 E_Notify(pstrSpace, 0x80);
1378
1379 output_if_between(usage, 0x00, 0x07, w, E_Notify, consTitles0, 0x80)
1380 else output_if_between(usage, 0x1f, 0x23, w, E_Notify, consTitles1, 0x80)
1381 else output_if_between(usage, 0x2f, 0x37, w, E_Notify, consTitles2, 0x80)
1382 else output_if_between(usage, 0x3f, 0x49, w, E_Notify, consTitles3, 0x80)
1383 else output_if_between(usage, 0x5f, 0x67, w, E_Notify, consTitles4, 0x80)
1384 else output_if_between(usage, 0x7f, 0xa5, w, E_Notify, consTitles5, 0x80)
1385 else output_if_between(usage, 0xaf, 0xcf, w, E_Notify, consTitles6, 0x80)
1386 else output_if_between(usage, 0xdf, 0xeb, w, E_Notify, consTitles7, 0x80)
1387 else output_if_between(usage, 0xef, 0xf6, w, E_Notify, consTitles8, 0x80)
1388 else output_if_between(usage, 0xff, 0x10e, w, E_Notify, consTitles9, 0x80)
1389 else output_if_between(usage, 0x14f, 0x156, w, E_Notify, consTitlesA, 0x80)
1390 else output_if_between(usage, 0x15f, 0x16b, w, E_Notify, consTitlesB, 0x80)
1391 else output_if_between(usage, 0x16f, 0x175, w, E_Notify, consTitlesC, 0x80)
1392 else output_if_between(usage, 0x17f, 0x1c8, w, E_Notify, consTitlesD, 0x80)
1393 else output_if_between(usage, 0x1ff, 0x29d, w, E_Notify, consTitlesE, 0x80)
1394 else E_Notify(pstrUsagePageUndefined, 0x80);
1395}
1396
1398 const char * const * w;
1399 E_Notify(pstrSpace, 0x80);
1400
1401 output_if_between(usage, 0x00, 0x0e, w, E_Notify, digitTitles0, 0x80)
1402 else output_if_between(usage, 0x1f, 0x23, w, E_Notify, digitTitles1, 0x80)
1403 else output_if_between(usage, 0x2f, 0x47, w, E_Notify, digitTitles2, 0x80)
1404 else E_Notify(pstrUsagePageUndefined, 0x80);
1405}
1406
1408 const char * const * w;
1409 E_Notify(pstrSpace, 0x80);
1410
1411 output_if_between(usage, 0x00, 0x03, w, E_Notify, aplphanumTitles0, 0x80)
1412 else output_if_between(usage, 0x1f, 0x4e, w, E_Notify, aplphanumTitles1, 0x80)
1413 else output_if_between(usage, 0x7f, 0x96, w, E_Notify, digitTitles2, 0x80)
1414 else E_Notify(pstrUsagePageUndefined, 0x80);
1415}
1416
1418 const char * const * w;
1419 E_Notify(pstrSpace, 0x80);
1420
1422 else if(usage == 0x70)
1424 else output_if_between(usage, 0x1f, 0x28, w, E_Notify, medInstrTitles0, 0x80)
1425 else output_if_between(usage, 0x3f, 0x45, w, E_Notify, medInstrTitles1, 0x80)
1426 else output_if_between(usage, 0x5f, 0x62, w, E_Notify, medInstrTitles2, 0x80)
1427 else output_if_between(usage, 0x7f, 0x8a, w, E_Notify, medInstrTitles3, 0x80)
1428 else output_if_between(usage, 0x9f, 0xa2, w, E_Notify, medInstrTitles4, 0x80)
1429 else E_Notify(pstrUsagePageUndefined, 0x80);
1430}
1431
1433 //uint8_t ret = enErrorSuccess;
1434
1435 switch(itemParseState) {
1436 case 0:
1437 if(**pp == HID_LONG_ITEM_PREFIX)
1438 USBTRACE("\r\nLONG\r\n");
1439 else {
1440 uint8_t size = ((**pp) & DATA_SIZE_MASK);
1441 itemPrefix = (**pp);
1442 itemSize = 1 + ((size == DATA_SIZE_4) ? 4 : size);
1443 }
1444 (*pp)++;
1445 (*pcntdn)--;
1446 itemSize--;
1447 itemParseState = 1;
1448
1449 if(!itemSize)
1450 break;
1451
1452 if(!pcntdn)
1453 return enErrorIncomplete;
1454 // fall through
1455 case 1:
1458 itemParseState = 2;
1459 // fall through
1460 case 2:
1461 if(!valParser.Parse(pp, pcntdn))
1462 return enErrorIncomplete;
1463 itemParseState = 3;
1464 // fall through
1465 case 3:
1466 {
1467 uint8_t data = *((uint8_t*)varBuffer);
1468
1469 switch(itemPrefix & (TYPE_MASK | TAG_MASK)) {
1470 case (TYPE_LOCAL | TAG_LOCAL_USAGE):
1471 if(pfUsage) {
1472 if(theBuffer.valueSize > 1) {
1473 uint16_t* ui16 = reinterpret_cast<uint16_t *>(varBuffer);
1474 pfUsage(*ui16);
1475 } else
1476 pfUsage(data);
1477 }
1478 break;
1480 rptSize = data;
1481 break;
1483 rptCount = data;
1484 break;
1486 rptId = data;
1487 break;
1489 useMin = data;
1490 break;
1492 useMax = data;
1493 break;
1495 SetUsagePage(data);
1496 break;
1497 case (TYPE_MAIN | TAG_MAIN_OUTPUT):
1498 case (TYPE_MAIN | TAG_MAIN_FEATURE):
1499 rptSize = 0;
1500 rptCount = 0;
1501 useMin = 0;
1502 useMax = 0;
1503 break;
1504 case (TYPE_MAIN | TAG_MAIN_INPUT):
1505 OnInputItem(data);
1506
1508
1509 rptSize = 0;
1510 rptCount = 0;
1511 useMin = 0;
1512 useMax = 0;
1513 break;
1514 } // switch (**pp & (TYPE_MASK | TAG_MASK))
1515 }
1516 } // switch (itemParseState)
1517 itemParseState = 0;
1518 return enErrorSuccess;
1519}
1520
1521void ReportDescParser2::OnInputItem(uint8_t itm) {
1522 uint8_t byte_offset = (totalSize >> 3); // calculate offset to the next unhandled byte i = (int)(totalCount / 8);
1523 uint32_t tmp = (byte_offset << 3);
1524 uint8_t bit_offset = totalSize - tmp; // number of bits in the current byte already handled
1525 uint8_t *p = pBuf + byte_offset; // current byte pointer
1526
1527 if(bit_offset)
1528 *p >>= bit_offset;
1529
1530 uint8_t usage = useMin;
1531
1532 bool print_usemin_usemax = ((useMin < useMax) && ((itm & 3) == 2) && pfUsage) ? true : false;
1533
1535
1536 // for each field in field array defined by rptCount
1537 for(uint8_t field = 0; field < rptCount; field++, usage++) {
1538
1539 union {
1540 uint8_t bResult[4];
1541 uint16_t wResult[2];
1543 } result;
1544
1545 result.dwResult = 0;
1546 uint8_t mask = 0;
1547
1549 pfUsage(usage);
1550
1551 // bits_left - number of bits in the field(array of fields, depending on Report Count) left to process
1552 // bits_of_byte - number of bits in current byte left to process
1553 // bits_to_copy - number of bits to copy to result buffer
1554
1555 // for each bit in a field
1559
1560 result.dwResult <<= bits_to_copy; // Result buffer is shifted by the number of bits to be copied into it
1561
1562 uint8_t val = *p;
1563
1564 val >>= (8 - bits_of_byte); // Shift by the number of bits already processed
1565
1566 mask = 0;
1567
1568 for(uint8_t j = bits_to_copy; j; j--) {
1569 mask <<= 1;
1570 mask |= 1;
1571 }
1572
1573 result.bResult[0] = (result.bResult[0] | (val & mask));
1574
1576
1577 if(bits_of_byte < 1) {
1578 bits_of_byte = 8;
1579 p++;
1580 }
1581 }
1582 PrintByteValue(result.dwResult);
1583 }
1584 E_Notify(PSTR("\r\n"), 0x80);
1585}
1586
1589
1590 uint8_t ret = hid->GetReportDescr(0, &prs);
1591
1592 if(ret)
1593 ErrorMessage<uint8_t > (PSTR("GetReportDescr-2"), ret);
1594}
void Initialize(MultiValueBuffer *const pbuf)
Definition parsetools.h:54
bool Parse(uint8_t **pp, uint16_t *pcntdn)
virtual uint8_t ParseItem(uint8_t **pp, uint16_t *pcntdn)
static const char *const genDesktopTitles2[]
static const char *const consTitlesB[]
static const char *const genDesktopTitles1[]
static const char *const consTitles5[]
static const char *const consTitlesC[]
static void PrintMedicalInstrumentPageUsage(uint16_t usage)
static void PrintByteValue(uint8_t data)
static void PrintOrdinalPageUsage(uint16_t usage)
static void PrintGenericDeviceControlsPageUsage(uint16_t usage)
static const char *const sportsCtrlTitles1[]
static const char *const consTitlesA[]
static const char *const digitTitles0[]
static const char *const genDesktopTitles0[]
static const char *const telTitles5[]
static const char *const consTitles8[]
static void PrintValue(uint8_t *p, uint8_t len)
static const char *const medInstrTitles0[]
static void PrintSportsControlsPageUsage(uint16_t usage)
static const char *const medInstrTitles1[]
static void PrintGenericDesktopPageUsage(uint16_t usage)
static const char *const vrTitles1[]
static const char *const vrTitles0[]
void SetUsagePage(uint16_t page)
static const char *const consTitlesE[]
static const char *const consTitles1[]
static const char *const sportsCtrlTitles0[]
static const char *const consTitlesD[]
static void PrintGameControlsPageUsage(uint16_t usage)
static const char *const genDevCtrlTitles[]
MultiValueBuffer theBuffer
static const char *const aplphanumTitles0[]
static const char *const simuTitles2[]
static const char *const simuTitles0[]
static const char *const ledTitles[]
static void PrintUsagePage(uint16_t page)
void(* UsagePageFunc)(uint16_t usage)
static const char *const consTitles2[]
void Parse(const uint16_t len, const uint8_t *pbuf, const uint16_t &offset)
static const char *const usagePageTitles0[]
static const char *const consTitles0[]
uint8_t varBuffer[sizeof(USB_CONFIGURATION_DESCRIPTOR)]
MultiByteValueParser valParser
static void PrintButtonPageUsage(uint16_t usage)
static const char *const simuTitles1[]
static void PrintVRControlsPageUsage(uint16_t usage)
static const char *const sportsCtrlTitles2[]
static const char *const gameTitles0[]
static const char *const medInstrTitles3[]
static void PrintConsumerPageUsage(uint16_t usage)
static const char *const telTitles4[]
static const char *const telTitles1[]
static void PrintSimulationControlsPageUsage(uint16_t usage)
static void PrintDigitizerPageUsage(uint16_t usage)
static const char *const digitTitles1[]
static const char *const medInstrTitles4[]
static void PrintTelephonyPageUsage(uint16_t usage)
static const char *const consTitles7[]
virtual uint8_t ParseItem(uint8_t **pp, uint16_t *pcntdn)
static const char *const consTitles9[]
static const char *const gameTitles1[]
static const char *const telTitles3[]
static const char *const consTitles4[]
static const char *const genDesktopTitles3[]
static const char *const digitTitles2[]
static const char *const aplphanumTitles2[]
static const char *const genDesktopTitles4[]
static const char *const consTitles3[]
static const char *const usagePageTitles1[]
static const char *const telTitles0[]
static const char *const medInstrTitles2[]
static void PrintItemTitle(uint8_t prefix)
static const char *const telTitles2[]
static void PrintAlphanumDisplayPageUsage(uint16_t usage)
static const char *const consTitles6[]
static void PrintLEDPageUsage(uint16_t usage)
static UsagePageFunc usagePageFunctions[]
static const char *const aplphanumTitles1[]
virtual void Parse(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf)
const char pstrUsagePhone[]
const char pstrUsageDoNotDisturb[]
const char pstrUsageClipStore[]
const char pstrUsageSystemHibernate[]
const char pstrUsagePhoneKeyB[]
const char pstrUsage7Iron[]
const char pstrUsageACSelectTable[]
const char pstrUsageALOEMFeaturesBrowser[]
const char pstrUsageRy[]
Definition hidusagestr.h:71
const char pstrUsagePlay[]
const char pstrUsageSystemPowerDown[]
Definition hidusagestr.h:92
const char pstrUsageACTileVert[]
const char pstrUsageALLogJournalTimecard[]
const char pstrUsagePageDigitizer[]
Definition hidusagestr.h:42
const char pstrUsageColumns[]
const char pstrUsageSystemControl[]
Definition hidusagestr.h:91
const char pstrUsageMoveUpDown[]
const char pstrUsageMicrophoneEnable[]
const char pstrUsageACBold[]
const char pstrUsageVoiceMail[]
const char pstrUsageSystemSpeakerMute[]
const char pstrUsageACPanRight[]
const char pstrUsageACFlipHorizontal[]
const char pstrUsageRate[]
const char pstrUsageMediaSelectTelephone[]
const char pstrUsageALIntegratedHelpCenter[]
const char pstrUsageHeadTracker[]
const char pstrUsageAltitude[]
const char pstrUsageElevatorTrim[]
const char pstrUsageACCut[]
const char pstrUsageChaffRelease[]
const char pstrUsageACForwardMessage[]
const char pstrUsageALNetworkConference[]
const char pstrUsageCAV[]
const char pstrUsageMenuLeft[]
const char pstrUsageHelp[]
const char pstrUsageCharAttributeEnhance[]
const char pstrUsageSystemDebuggerBreak[]
const char pstrUsageALMarketMonitorFinBrowser[]
const char pstrUsageMediaSelection[]
const char pstrUsageSystemDisplayDual[]
const char pstrUsageACInsertFile[]
const char pstrUsageACStrikethrough[]
const char pstrUsageCharacterSpacingVertical[]
const char pstrUsageWirelessChannel[]
const char pstrUsageVz[]
Definition hidusagestr.h:84
const char pstrUsagePageConsumer[]
Definition hidusagestr.h:41
const char pstrUsageTipPressure[]
const char pstrUsageSystemMenuUp[]
const char pstrUsageALInternetBrowser[]
const char pstrUsageCursorMode[]
const char pstrUsageACCopy[]
const char pstrUsageBicycleCrank[]
const char pstrUsageOrderMovie[]
const char pstrUsageAnsweringMachine[]
const char pstrUsageAttributeData[]
const char pstrUsageACMaximize[]
const char pstrUsageZoomAdjust[]
const char pstrUsagePhoneKey6[]
const char pstrUsageACTileHoriz[]
const char pstrUsageScanNextTrack[]
const char pstrUsageACInsertRow[]
const char pstrUsageSystemMenuDown[]
const char pstrUsageACInsertObject[]
const char pstrUsageBroadcastMode[]
const char pstrUsageIndicatorFlash[]
const char pstrUsageACFontSelect[]
const char pstrUsageSoftButtonOffset1[]
const char pstrUsageSpectralDopplerModeSelect[]
const char pstrUsageFontReadBack[]
const char pstrUsage2DModeAdjust[]
const char pstrUsageACFind[]
const char pstrUsageSecurityCodeCleared[]
const char pstrUsageACResize[]
const char pstrUsageALCalculator[]
const char pstrUsageVx[]
Definition hidusagestr.h:82
const char pstrUsagePageVRControls[]
Definition hidusagestr.h:32
const char pstrUsageHeadset[]
const char pstrUsageACSelectSentence[]
const char pstrUsageAirplaneSimulationDevice[]
const char pstrUsageACClose[]
const char pstrUsageCameraOff[]
const char pstrUsagePhoneKey5[]
const char pstrUsageFanSpeed[]
const char pstrUsageSubmarineSimulationDevice[]
const char pstrUsageErrorFotDataCanNotBeRead[]
const char pstrUsageALInstantMessaging[]
const char pstrUsageTracking[]
const char pstrUsageTrackingIncrement[]
const char pstrUsageApplicationDebuggerBreak[]
const char pstrUsageACExit[]
const char pstrUsageDisplayOrientation[]
const char pstrUsageALPowerStatus[]
const char pstrUsageReorderTone[]
const char pstrUsagePointOfView[]
const char pstrUsageMagicCarpetSimulationDevice[]
const char pstrUsageGunDevice[]
const char pstrUsageRz[]
Definition hidusagestr.h:72
const char pstrUsageACJustifyCenterH[]
const char pstrUsageCursorPixelPosition[]
const char pstrUsageOffLine[]
const char pstrUsageACPromote[]
const char pstrUsage11Iron[]
const char pstrUsageAnswerOnOff[]
const char pstrUsageALSelectTaskApplication[]
const char pstrUsageALAlarms[]
const char pstrUsageACProtect[]
const char pstrUsageFreezeThaw[]
const char pstrUsageBarrelPressure[]
const char pstrUsagePlus10[]
const char pstrUsage5Wood[]
const char pstrUsagePhoneKeyD[]
const char pstrUsage14SegmentDirectMap[]
const char pstrUsageSoftButtonReport[]
const char pstrUsageBicycleSimulationDevice[]
const char pstrUsageGamepadFireJump[]
const char pstrUsageLightEnable[]
const char pstrUsageSandWedge[]
const char pstrUsagePageKeyboardKeypad[]
Definition hidusagestr.h:36
const char pstrUsageALImageBrowser[]
const char pstrUsageSecurityCodeCharErased[]
const char pstrUsageLandingGear[]
const char pstrUsageSecurityEnable[]
const char pstrUsageACFindAndReplace[]
const char pstrUsageACSortAscending[]
const char pstrUsageFlash[]
const char pstrUsageSpaceshipSimulationDevice[]
const char pstrUsageMediaSelectSAP[]
const char pstrUsageACDistributeHorizontaly[]
const char pstrUsageACUndo[]
const char pstrUsageQuit[]
const char pstrUsageDataValid[]
const char pstrUsageALDigitalWallet[]
const char pstrUsagePaperOut[]
const char pstrUsageFlightSimulationDevice[]
const char pstrUsageMultiModeIndicator[]
const char pstrUsageBitmapSizeX[]
const char pstrUsageAzimuth[]
const char pstrUsageMediaSelectWWW[]
const char pstrUsageScanPreviousTrack[]
const char pstrUsageRecordingFormatDetect[]
const char pstrUsageALKeyboardLayout[]
const char pstrUsageACViewClock[]
const char pstrUsageBassBoost[]
const char pstrUsageConfirmationTone2[]
const char pstrUsageConference[]
const char pstrUsageCoverage[]
const char pstrUsageScrollLock[]
const char pstrUsageFreeSpaceWand[]
const char pstrUsageMediaSelectCD[]
const char pstrUsageStickFaceAngle[]
const char pstrUsageACAddToCart[]
const char pstrUsageMenuValueIncrease[]
const char pstrUsageTreble[]
const char pstrUsageOutsideRingTone[]
const char pstrUsageACYes[]
const char pstrUsageCharacterReport[]
const char pstrUsage8Iron[]
const char pstrUsageVolume[]
const char pstrUsageALTermLockScrSav[]
const char pstrUsagePhoneKey3[]
const char pstrUsageBitmapSizeY[]
const char pstrUsageACJustifyLeft[]
const char pstrUsageStereoPlotter[]
const char pstrUsageStickFollowThough[]
const char pstrUsageInvert[]
const char pstrUsageACBuyChkout[]
const char pstrUsage7Wood[]
const char pstrUsageACRedoRepeat[]
const char pstrUsageSpeakerSystem[]
const char pstrUsageBass[]
const char pstrUsage3DGameController[]
const char pstrUsageALProgrammableButton[]
const char pstrUsageVolumeIncrement[]
const char pstrUsageTabletFunctionKeys[]
const char pstrUsageSystemSuspend[]
const char pstrUsageALNextTaskApplication[]
const char pstrUsageACSubscriptions[]
const char pstrUsageChannelLeft[]
const char pstrUsageDisplayData[]
const char pstrUsageSnapshot[]
const char pstrUsageALNetworkChat[]
const char pstrUsageMediaSelectCall[]
const char pstrUsageBelt[]
const char pstrUsageMediaSelectTV[]
const char pstrUsageACJustifyBottom[]
const char pstrUsageSoftStepPrimary[]
const char pstrUsageALVoicemail[]
const char pstrUsageALGraphicsEditor[]
const char pstrUsageBalanceLeft[]
const char pstrUsageSoftControlSelect[]
const char pstrUsageSoftButtonSide[]
const char pstrUsageResolutionMultiplier[]
Definition hidusagestr.h:90
const char pstrUsageStylus[]
const char pstrUsageCharacterWidth[]
const char pstrUsageSelect[]
Definition hidusagestr.h:81
const char pstrUsageACSnoozeAlarm[]
const char pstrUsageMediaSelectDVD[]
const char pstrUsageACJustifyRight[]
const char pstrUsagePageScale[]
Definition hidusagestr.h:50
const char pstrUsageOutsideRingback[]
const char pstrUsageSpeakerPhone[]
const char pstrUsageACSetClock[]
const char pstrUsage3Wood[]
const char pstrUsageHeadSet[]
const char pstrUsageStart[]
Definition hidusagestr.h:80
const char pstrUsageCyclicControl[]
const char pstrUsageChannelRight[]
const char pstrUsageX[]
Definition hidusagestr.h:67
const char pstrUsageCharacterAttribute[]
const char pstrUsageACUpload[]
const char pstrUsageEqualizerEnable[]
const char pstrUsageACUnderline[]
const char pstrUsageStickSpeed[]
const char pstrUsageTouchScreen[]
const char pstrUsageTonesOff[]
const char pstrUsagePhoneKey1[]
const char pstrUsageACUnlock[]
const char pstrUsageFireAlarm[]
const char pstrUsagePageMSRDevices[]
Definition hidusagestr.h:51
const char pstrUsageALDigitalRightsManager[]
const char pstrUsageScreenCalls[]
const char pstrUsageMenuEscape[]
const char pstrUsagePagePower[]
Definition hidusagestr.h:48
const char pstrUsageBarrelElevation[]
const char pstrUsageACHistory[]
const char pstrUsageACPanLeft[]
const char pstrUsageConfirmationTone1[]
const char pstrUsageACBookmarks[]
const char pstrUsageElectronicCountermeasures[]
const char pstrUsageBatteryOperation[]
const char pstrUsagePageReserved[]
Definition hidusagestr.h:55
const char pstrUsageACSelectObject[]
const char pstrUsageACFontColor[]
const char pstrUsageSleep[]
const char pstrUsageExternalPowerConnected[]
const char pstrUsageACSplit[]
const char pstrUsageCapsLock[]
const char pstrUsageACZoom[]
const char pstrUsageMediaSelectMessages[]
const char pstrUsageMPX[]
const char pstrUsageGraphicEqualizer[]
const char pstrUsageTurnRightLeft[]
const char pstrUsageCompose[]
const char pstrUsageOutsideDialTone[]
const char pstrUsageSecondaryFlipper[]
const char pstrUsagePower[]
const char pstrUsageACRename[]
const char pstrUsageInUseIndicator[]
const char pstrUsageSearchMarkForward[]
const char pstrUsageInsideDialTone[]
const char pstrUsagePageButton[]
Definition hidusagestr.h:38
const char pstrUsageALDesktop[]
const char pstrUsagePageMedicalInstruments[]
Definition hidusagestr.h:46
const char pstrUsageALRemoteNetISPConnect[]
const char pstrUsageALEncryption[]
const char pstrUsageFastForward[]
const char pstrUsageVbry[]
Definition hidusagestr.h:86
const char pstrUsageSystemUndock[]
const char pstrUsageACFullScreenView[]
const char pstrUsagePriorityRingTone[]
const char pstrUsageTrackNormal[]
const char pstrUsageBassIncrement[]
const char pstrUsageSoftStepSecondary[]
const char pstrUsageRinger[]
const char pstrUsageDuresAlarm[]
const char pstrUsageChannel[]
const char pstrUsageHelicopterSimulationDevice[]
const char pstrUsageSystemAppMenu[]
Definition hidusagestr.h:97
const char pstrUsageACForward[]
const char pstrUsageOar[]
const char pstrUsageDPadUp[]
const char pstrUsageALFileBrowser[]
const char pstrUsageInsideRingback[]
const char pstrUsageACHome[]
const char pstrUsageCLV[]
const char pstrUsageGamePad[]
Definition hidusagestr.h:62
const char pstrUsageTrebleDecrement[]
const char pstrUsageShift[]
const char pstrUsage5Iron[]
const char pstrUsagePageGameControls[]
Definition hidusagestr.h:34
const char pstrUsageHookSwitch[]
const char pstrUsageSlowTracking[]
const char pstrUsageALTextEditor[]
const char pstrUsageMediaSelectVCR[]
const char pstrUsageTrackControl[]
const char pstrUsageACRefresh[]
const char pstrUsageCharAttributeBlink[]
const char pstrUsageMediaSelectTape[]
const char pstrUsagePhoneDirectory[]
const char pstrUsageGlove[]
const char pstrUsageFinger[]
const char pstrUsageMotocicleSimulationDevice[]
const char pstrUsageVerticalScroll[]
const char pstrUsageSleepAfter[]
const char pstrUsageACSuperscript[]
const char pstrUsageDivePlane[]
const char pstrUsageACMirrorHorizontal[]
const char pstrUsageMediaSelectVideoPhone[]
const char pstrUsageNumLock[]
const char pstrUsageToneEnable[]
const char pstrUsageACInsertMode[]
const char pstrUsageStoreNumber[]
const char pstrUsageSystemMenuSelect[]
const char pstrUsageAttributeReadback[]
const char pstrUsageLightPen[]
const char pstrUsageBrake[]
const char pstrUsageReset[]
const char pstrUsageALCalendarSchedule[]
const char pstrUsageNext[]
const char pstrUsagePowerWedge[]
const char pstrUsagePageMonitor[]
Definition hidusagestr.h:47
const char pstrUsageACPrintPreview[]
const char pstrUsageHighCutFilter[]
const char pstrUsageStickType[]
const char pstrUsageLeanRightLeft[]
const char pstrUsageBlitRectangleX2[]
const char pstrUsageACSave[]
const char pstrUsageDisplayStatus[]
const char pstrUsageALPresentationApp[]
const char pstrUsageACNewWindow[]
const char pstrUsageIndicatorFastBlink[]
const char pstrUsageACNormalView[]
const char pstrUsageFlipper[]
const char pstrUsageALTelephonyDialer[]
const char pstrUsageACEdit[]
const char pstrUsage9Iron[]
const char pstrUsageACRotate[]
const char pstrUsageIndicatorAmber[]
const char pstrUsageDigitizer[]
const char pstrUsageACDemote[]
const char pstrUsageRows[]
const char pstrUsageSecurityCodeCharEntered[]
const char pstrUsageVbrx[]
Definition hidusagestr.h:85
const char pstrUsageTrigger[]
const char pstrUsageBump[]
const char pstrUsageACFilter[]
const char pstrUsageACAttachComment[]
const char pstrUsageALDocuments[]
const char pstrUsageACScrollDown[]
const char pstrUsageALLogoff[]
const char pstrUsageACFontSize[]
const char pstrUsage9Wood[]
const char pstrUsageStereoEnable[]
const char pstrUsageACMirrorVertical[]
const char pstrUsageRingEnable[]
const char pstrUsageACSearch[]
const char pstrUsageKana[]
const char pstrUsageCollectiveControl[]
const char pstrUsageTreadmill[]
const char pstrUsagePhoneKey4[]
const char pstrUsageXTilt[]
const char pstrUsageWingFlaps[]
const char pstrUsageRepeat[]
const char pstrUsageWeaponsArm[]
const char pstrUsageMedicalAlarm[]
const char pstrUsageDisplayContrast[]
const char pstrUsageFocus[]
const char pstrUsageUnicodeCharset[]
const char pstrUsageMediaSelectCable[]
const char pstrUsageReady[]
const char pstrUsageAssignSelection[]
const char pstrUsageALPreemptiveHaltTaskApp[]
const char pstrUsageACSelectAll[]
const char pstrUsageStatusReady[]
const char pstrUsageSystemDisplayLCDAutoscale[]
const char pstrUsageALControlPannel[]
const char pstrUsageSystemDisplayBoth[]
const char pstrUsageThrottle[]
const char pstrUsageLightIlluminationLevel[]
const char pstrUsageACReplyAll[]
const char pstrUsageSoundFieldOn[]
const char pstrUsagePaletteData[]
const char pstrUsagePutter[]
const char pstrUsageSlowBlinkOffTime[]
const char pstrUsagePoliceAlarm[]
const char pstrUsageEnterChannel[]
const char pstrUsageVy[]
Definition hidusagestr.h:83
const char pstrUsageMoveRightLeft[]
const char pstrUsageTransmitPower[]
const char pstrUsageALSpreadsheet[]
const char pstrUsageIndicatorGreen[]
const char pstrUsageSystemDisplayInvert[]
const char pstrUsageSave[]
const char pstrUsageAlternateAudioIncrement[]
const char pstrUsageCharacterHeight[]
const char pstrUsageYTilt[]
const char pstrUsageWhiteBoard[]
const char pstrUsageLeanForwardBackward[]
const char pstrUsageClearDisplay[]
const char pstrUsageBitmappedDisplay[]
const char pstrUsageChannelIncrement[]
const char pstrUsageHeightOfPOV[]
const char pstrUsageSystemColdRestart[]
const char pstrUsageCountedBuffer[]
Definition hidusagestr.h:77
const char pstrUsageRecallLast[]
const char pstrUsageALOnlineActivityBrowser[]
const char pstrUsageWeekly[]
const char pstrUsageACPaste[]
const char pstrUsageToeBrake[]
const char pstrUsageColorDopplerModeSelect[]
const char pstrUsagePause[]
const char pstrUsageACSetBorders[]
const char pstrUsageClutch[]
const char pstrUsageColumn[]
const char pstrUsageByteCount[]
Definition hidusagestr.h:78
const char pstrUsageWirelessID[]
const char pstrUsageALDatabaseApp[]
const char pstrUsageBlitData[]
const char pstrUsageIndicatorSlowBlink[]
const char pstrUsageFlashOnTime[]
const char pstrUsageSlider[]
Definition hidusagestr.h:73
const char pstrUsageACClearAlarm[]
const char pstrUsageALPreviousTaskApplication[]
const char pstrUsageHandset[]
const char pstrUsageTouch[]
const char pstrUsageALMovieBrowser[]
const char pstrUsage10Iron[]
const char pstrUsageHold[]
const char pstrUsageACNextLink[]
const char pstrUsageFont7Segment[]
const char pstrUsageShootBall[]
const char pstrUsageEnterDisk[]
const char pstrUsageSystemMenuHelp[]
Definition hidusagestr.h:98
const char pstrUsageBarrelSwitch[]
const char pstrUsageALEmailReader[]
const char pstrUsageACViewComment[]
const char pstrUsageTrackingDecrement[]
const char pstrUsageMute[]
const char pstrSpace[]
Definition hidusagestr.h:22
const char pstrUsageApplicationLaunchButtons[]
const char pstrUsageGunBolt[]
const char pstrUsageForward[]
const char pstrUsageBodySuit[]
const char pstrUsageSlope[]
const char pstrUsageMessageControls[]
const char pstrUsageSystemDock[]
const char pstrUsageCallWaitingTone[]
const char pstrUsageScreenSaverEnable[]
const char pstrUsageACCollapseAll[]
const char pstrUsageChannelSurround[]
const char pstrUsageAileronTrim[]
const char pstrUsageACSendTo[]
const char pstrUsageAlphanumericDisplay[]
const char pstrUsageSubChannel[]
const char pstrUsageALContactsAddressBook[]
const char pstrUsageExtendedPlay[]
const char pstrUsageMenuValueDecrease[]
const char pstrUsageAutopilotEnable[]
const char pstrUsageACInsertSymbol[]
const char pstrUsageASCIICharacterSet[]
const char pstrUsageALCustomCorpNewsBrowser[]
const char pstrUsageProgrammableButton[]
const char pstrUsageALScreenSaver[]
const char pstrUsagePlaybackSpeed[]
const char pstrUsageStop[]
const char pstrUsagePhoneKeyPound[]
const char pstrUsageACSelectColumn[]
const char pstrUsage2Iron[]
const char pstrUsageTwist[]
const char pstrUsageBallast[]
const char pstrUsageALDictionary[]
const char pstrUsageBusy[]
const char pstrUsageFlightCommunications[]
const char pstrUsageAMPM[]
const char pstrUsageDataReadBack[]
const char pstrUsageClimateControlEnable[]
const char pstrUsagePaletteDataSize[]
const char pstrUsagePhoneKey7[]
const char pstrUsageTabletPCSystemControls[]
Definition hidusagestr.h:66
const char pstrUsageGunClip[]
const char pstrUsageACExpand[]
const char pstrUsagePageBarCodeScanner[]
Definition hidusagestr.h:49
const char pstrUsageDPadLeft[]
const char pstrUsageACExpandAll[]
const char pstrUsageACEditTimeZone[]
const char pstrUsagePhoneKeyA[]
const char pstrUsageALAudioBrowser[]
const char pstrUsageTurretDirection[]
const char pstrUsageACJustifyBlockV[]
const char pstrUsageALLogonLogoff[]
const char pstrUsageDPadDown[]
const char pstrUsageACProperties[]
const char pstrUsagePuck[]
const char pstrUsageACFlipVertical[]
const char pstrUsageRoomTemperature[]
const char pstrUsageSystemMenuExit[]
Definition hidusagestr.h:99
const char pstrUsageSoftButtonOffset2[]
const char pstrUsageRingSelect[]
const char pstrUsage1Iron[]
const char pstrUsageMotion[]
const char pstrUsageStickHeight[]
const char pstrUsageHeadMountedDisplay[]
const char pstrUsagePlayPause[]
const char pstrUsageEraser[]
const char pstrUsageFlightStick[]
const char pstrUsage3DDigitizer[]
const char pstrUsageTankSimulationDevice[]
const char pstrUsageACPasteSpecial[]
const char pstrUsageScreenSaverDelay[]
const char pstrUsagePhoneMute[]
const char pstrUsageSystemSleep[]
Definition hidusagestr.h:93
const char pstrUsageACZoomIn[]
const char pstrUsagePageGenericDeviceControls[]
Definition hidusagestr.h:35
const char pstrUsage7SegmentDirectMap[]
const char pstrUsageVCRPlus[]
const char pstrUsageACPan[]
const char pstrUsageGamepadTrigger[]
const char pstrUsageSelectDisk[]
const char pstrUsageTrebleIncrement[]
const char pstrUsagePagePID[]
Definition hidusagestr.h:43
const char pstrUsageACPrint[]
const char pstrUsageCine[]
const char pstrUsageColorDopplerModeAdjust[]
const char pstrUsagePark[]
const char pstrUsageALOnlineCommunity[]
const char pstrUsageError[]
const char pstrUsageCameraOn[]
const char pstrUsageACBulletedList[]
const char pstrUsageMediaSelectHome[]
const char pstrUsageACSelectWord[]
const char pstrUsagePhoneKey0[]
const char pstrUsageFlexor[]
const char pstrUsageMenu[]
const char pstrUsageIndicatorRed[]
const char pstrUsagePhoneKeyC[]
const char pstrUsagePageGenericDesktopControls[]
Definition hidusagestr.h:30
const char pstrUsageArticulatedArm[]
const char pstrUsageMenuUp[]
const char pstrUsageClearMark[]
const char pstrUsageSystemContextMenu[]
Definition hidusagestr.h:95
const char pstrUsageDaily[]
const char pstrUsagePageUndefined[]
Definition hidusagestr.h:29
const char pstrUsageACInsertColumn[]
const char pstrUsageACSendReceive[]
const char pstrUsageGenericIndicator[]
const char pstrUsageTransfer[]
const char pstrUsageDial[]
Definition hidusagestr.h:74
const char pstrUsagePlayer[]
const char pstrUsageSpeedDial[]
const char pstrUsageMediaSelectTuner[]
const char pstrUsagePhoneKey9[]
const char pstrUsageALSmartCardInfoHelp[]
const char pstrUsageGunSafety[]
const char pstrUsageALThesaurus[]
const char pstrUsageACSortDescending[]
const char pstrUsageALLogon[]
const char pstrUsageZ[]
Definition hidusagestr.h:69
const char pstrUsageMicrophone[]
const char pstrUsageFrontBrake[]
const char pstrUsageACStop[]
const char pstrUsageReverse[]
const char pstrUsageVest[]
const char pstrUsageALClock[]
const char pstrUsageMouse[]
Definition hidusagestr.h:60
const char pstrUsageMedicalUltrasound[]
const char pstrUsageHeadphone[]
const char pstrUsageRow[]
const char pstrUsageACDistributeVerticaly[]
const char pstrUsageVbrz[]
Definition hidusagestr.h:87
const char pstrUsageAlternateFunction[]
const char pstrUsageSpeedSelect[]
const char pstrUsageChannelCenterFront[]
const char pstrUsageApplicationBreak[]
const char pstrUsageKeyboard[]
Definition hidusagestr.h:63
const char pstrUsageSpinning[]
const char pstrUsageCallerID[]
const char pstrUsageHoldupAlarm[]
const char pstrUsageACResetAlarm[]
const char pstrUsageFeature[]
const char pstrUsageChannelFront[]
const char pstrUsageACCollapse[]
const char pstrUsageConsumerControl[]
const char pstrUsageMenuPick[]
const char pstrUsageDiscoverWirelessControl[]
const char pstrUsageAlternateAudioDecrement[]
const char pstrUsageEject[]
const char pstrUsageACJustifyCenterV[]
const char pstrUsagePageUnicode[]
Definition hidusagestr.h:44
const char pstrUsageMessageWaiting[]
const char pstrUsageBalance[]
const char pstrUsageMenuRight[]
const char pstrUsageClosedCaption[]
const char pstrUsageSleepMode[]
const char pstrUsageCharAttributeUnderline[]
const char pstrUsageOffHook[]
const char pstrUsageSurroundMode[]
const char pstrUsageRing[]
const char pstrUsageSportsSimulationDevice[]
const char pstrUsageALOnlineShoppingBrowser[]
const char pstrUsageVolumeDecrement[]
const char pstrUsageACOpen[]
const char pstrUsagePaletteReport[]
const char pstrUsageACSubscript[]
const char pstrUsageSoftButtonID[]
const char pstrUsageACGoto[]
const char pstrUsageStickHeelToe[]
const char pstrUsageChannelCenter[]
const char pstrUsageRewind[]
const char pstrUsageChannelTop[]
const char pstrUsageStereo[]
const char pstrUsageACSelectParagraph[]
const char pstrUsageFunctionButtons[]
const char pstrUsageMenuDown[]
const char pstrUsageDepth[]
const char pstrUsageProximity[]
const char pstrUsageIndicatorColor[]
const char pstrUsageMonthly[]
const char pstrUsageMediaSelectGames[]
const char pstrUsageSurroundOn[]
const char pstrUsageRollRightLeft[]
const char pstrUsageSystemMenuLeft[]
const char pstrUsageDepthGainCompensation[]
const char pstrUsageALProcessTaskManager[]
const char pstrUsageALCheckbookFinance[]
const char pstrUsageIndicatorOn[]
const char pstrUsageALGrammarCheck[]
const char pstrUsageMediaSelectSatellite[]
const char pstrUsageSlowBlinkOnTime[]
const char pstrUsagePitchForwardBackward[]
const char pstrUsageACReply[]
const char pstrUsageMediaSelectSecurity[]
const char pstrUsageNumericKeyPad[]
const char pstrUsagePhoneKeyStar[]
const char pstrUsageACMerge[]
const char pstrUsageALNewsreader[]
const char pstrUsagePlus100[]
const char pstrUsage2DModeSelect[]
const char pstrUsageWeaponsSelect[]
const char pstrUsageALLANWANBrow[]
const char pstrUsageBlitReport[]
const char pstrUsagePhoneKey2[]
const char pstrUsageDisplayControlReport[]
const char pstrUsagePageCameraControl[]
Definition hidusagestr.h:53
const char pstrUsageDataOnScreen[]
const char pstrUsageSelection[]
const char pstrUsagePinballDevice[]
const char pstrUsageACSetAlarm[]
const char pstrUsageCounterReset[]
const char pstrUsageRx[]
Definition hidusagestr.h:70
const char pstrUsageAileron[]
const char pstrUsagePointer[]
Definition hidusagestr.h:59
const char pstrUsageMediaSelectProgramGuide[]
const char pstrUsageFontReport[]
const char pstrUsageSystemDisplayToggleIntExt[]
const char pstrUsageGunAutomatic[]
const char pstrUsageSystemMainMenu[]
Definition hidusagestr.h:96
const char pstrUsageLine[]
const char pstrUsageFlightYoke[]
const char pstrUsageSystemDisplayInternal[]
const char pstrUsageCursorEnable[]
const char pstrUsageFastBlinkOnTime[]
const char pstrUsageGenericGUIAppControls[]
const char pstrUsageClosedCaptionSelect[]
const char pstrUsageACNo[]
const char pstrUsageTipSwitch[]
const char pstrUsageSlow[]
const char pstrUsageSecondaryTipSwitch[]
const char pstrUsagePageAlphaNumericDisplay[]
Definition hidusagestr.h:45
const char pstrUsageSoftButton[]
const char pstrUsageALVirusProtection[]
const char pstrUsageACViewToggle[]
const char pstrUsageChannelSide[]
const char pstrUsageACFormat[]
const char pstrUsage3Iron[]
const char pstrUsageBaseballBat[]
const char pstrUsageSubChannelIncrement[]
const char pstrUsageRecord[]
const char pstrUsageDataMode[]
const char pstrUsageALWordProcessor[]
const char pstrUsageFont14Segment[]
const char pstrUsageGunBurst[]
const char pstrUsageRecallNumber[]
const char pstrUsageReturnToMark[]
const char pstrUsageRudder[]
const char pstrUsage6Iron[]
const char pstrUsageJoystick[]
Definition hidusagestr.h:61
const char pstrUsageALOEMHelp[]
const char pstrUsageForwardCalls[]
const char pstrUsageACNew[]
const char pstrUsagePagePointOfSale[]
Definition hidusagestr.h:52
const char pstrUsageAccelerator[]
const char pstrUsageNightMode[]
const char pstrUsageTabletPick[]
const char pstrUsageBalanceRight[]
const char pstrUsageACIndentDecrease[]
const char pstrUsageACSort[]
const char pstrUsageRedial[]
const char pstrUsageACScroll[]
const char pstrUsageALAudioPlayer[]
const char pstrUsageKeypad[]
Definition hidusagestr.h:64
const char pstrUsageACSyncronize[]
const char pstrUsageALEntertainmentContentBrow[]
const char pstrUsageSailingSimulationDevice[]
const char pstrUsageY[]
Definition hidusagestr.h:68
const char pstrUsageACAttachFile[]
const char pstrUsageACUnprotect[]
const char pstrUsagePageTelephone[]
Definition hidusagestr.h:40
const char pstrUsageBatteryStrength[]
const char pstrUsageACItalics[]
const char pstrUsageStill[]
const char pstrUsageACMinimize[]
const char pstrUsageInRange[]
const char pstrUsageALTaskProjectManager[]
const char pstrUsageHorizontalScroll[]
const char pstrUsageWheel[]
Definition hidusagestr.h:75
const char pstrUsageAnimatronicDevice[]
const char pstrUsageStatusNotReady[]
const char pstrUsageTelephonyKeyPad[]
const char pstrUsageAntiTorqueControl[]
const char pstrUsageDPadRight[]
const char pstrUsageALLaunchButtonConfigTool[]
const char pstrUsageBlitRectangleY2[]
const char pstrUsageTouchPad[]
const char pstrUsageDisplayBrightness[]
const char pstrUsageACSelectTimeZone[]
const char pstrUsageSteering[]
const char pstrUsageALResearchSearchBrowser[]
const char pstrUsageIndicatorOff[]
const char pstrUsageMotionModeAdjust[]
const char pstrUsageALSpellCheck[]
const char pstrUsagePageSimulationControls[]
Definition hidusagestr.h:31
const char pstrUsage4Iron[]
const char pstrUsageSystemWakeup[]
Definition hidusagestr.h:94
const char pstrUsageCoordinateMeasuringMachine[]
const char pstrUsageSystemSetup[]
const char pstrUsageSearchMarkBackwards[]
const char pstrUsageErrorNotALoadableCharacter[]
const char pstrUsageSystemDisplayExternal[]
const char pstrUsageSystemMenuRight[]
const char pstrUsageSelectedIndicator[]
const char pstrUsageTransducerIndex[]
const char pstrUsageMoveForwardBackward[]
const char pstrUsageSubChannelDecrement[]
const char pstrUsageAutomobileSimulationDevice[]
const char pstrUsageSamplingRateDetect[]
const char pstrUsageUpdate[]
const char pstrUsageSoftControlAdjust[]
const char pstrUsageChannelUnknown[]
const char pstrUsageCursorBlink[]
const char pstrUsageLowCutFilter[]
const char pstrUsageHandleBars[]
const char pstrUsageModeStep[]
const char pstrUsagePageArcade[]
Definition hidusagestr.h:54
const char pstrUsageALWirelessStatus[]
const char pstrUsageACSaveAndClose[]
const char pstrUsageFanEnable[]
const char pstrUsageACAllCaps[]
const char pstrUsagePageOrdinal[]
Definition hidusagestr.h:39
const char pstrUsagePrint[]
const char pstrUsage1Wood[]
const char pstrUsageACPreviousLink[]
const char pstrUsageDisplayEnable[]
const char pstrUsageBitDepthFormat[]
const char pstrUsageRepeatFromMark[]
const char pstrUsageFrameForward[]
const char pstrUsageSpeaker[]
const char pstrUsageHatSwitch[]
Definition hidusagestr.h:76
const char pstrUsageRandomPlay[]
const char pstrUsageCyclicTrim[]
const char pstrUsagePaperJam[]
const char pstrUsageSend[]
const char pstrUsageACJustifyBlockH[]
const char pstrUsageALAVCapturePlayback[]
const char pstrUsageSystemBreak[]
const char pstrUsagePaletteDataOffset[]
const char pstrUsageOnce[]
const char pstrUsageDisplayAttributesReport[]
const char pstrUsageStandardPlay[]
const char pstrUsageFlightControlStick[]
const char pstrUsageCursorPositionReport[]
const char pstrUsagePriorityRingback[]
const char pstrUsageShowCounter[]
const char pstrUsageLineBusyTone[]
const char pstrUsageACInsertPicture[]
const char pstrUsageSystemDisplaySwapPriSec[]
const char pstrUsageElevator[]
const char pstrUsageBlitRectangleY1[]
const char pstrUsagePen[]
const char pstrUsageCallPickup[]
const char pstrUsageVno[]
Definition hidusagestr.h:88
const char pstrUsageSpectralDopplerModeAdjust[]
const char pstrUsageACScrollUp[]
const char pstrUsageMotionWakeup[]
Definition hidusagestr.h:79
const char pstrUsageSystemWarmRestart[]
const char pstrUsageFeatureNotification[]
Definition hidusagestr.h:89
const char pstrUsageACCancel[]
const char pstrUsageChannelDecrement[]
const char pstrUsageGolfClub[]
const char pstrUsageRowingMachine[]
const char pstrUsageHandTracker[]
const char pstrUsageRemote[]
const char pstrUsageACSend[]
const char pstrUsageFrameBackwards[]
const char pstrUsageMultiAxisController[]
Definition hidusagestr.h:65
const char pstrUsageCharacterSpacingHorizontal[]
const char pstrUsageDiveBrake[]
const char pstrUsageOculometer[]
const char pstrUsageACSelectRow[]
const char pstrUsageACCatalog[]
const char pstrUsageACJustifyTop[]
const char pstrUsageStickTempo[]
const char pstrUsagePlaySkip[]
const char pstrUsageZoomSelect[]
const char pstrUsageACDownload[]
const char pstrUsageACRestartNumbering[]
const char pstrUsageSendCalls[]
const char pstrUsageGunSelector[]
const char pstrUsageMultiplePointDigitizer[]
const char pstrUsageUntouch[]
const char pstrUsageACBack[]
const char pstrUsagePageSportControls[]
Definition hidusagestr.h:33
const char pstrUsageFlareRelease[]
const char pstrUsageACIndentIncrease[]
const char pstrUsageProgramChangeKeys[]
const char pstrUsageNewGame[]
const char pstrUsageBatteryLow[]
const char pstrUsageShifter[]
const char pstrUsageArmature[]
const char pstrUsageALConsumerControlConfig[]
const char pstrUsageInsideRingTone[]
const char pstrUsageMark[]
const char pstrUsageLoftWedge[]
const char pstrUsageVCRTV[]
const char pstrUsagePageVendorDefined[]
Definition hidusagestr.h:56
const char pstrUsageACNumberedList[]
const char pstrUsageStandBy[]
const char pstrUsageMediaSelectComputer[]
const char pstrUsageTap[]
const char pstrUsageACZoomOut[]
const char pstrUsageLongPlay[]
const char pstrUsageFontData[]
const char pstrUsageALLocalMachineBrowser[]
const char pstrUsagePageLEDs[]
Definition hidusagestr.h:37
const char pstrUsagePhoneKey8[]
const char pstrUsageStopEject[]
const char pstrUsageACLock[]
const char pstrUsageRearBrake[]
const char pstrUsageACDelete[]
const char pstrUsageBatteryOK[]
const char pstrUsageChannelLowFreqEnhancement[]
const char pstrUsageGunSingleShot[]
const char pstrUsageFastBlinkOffTime[]
const char pstrUsageOnLine[]
const char pstrUsageQuality[]
const char pstrUsageALCommandLineProcessorRun[]
const char pstrUsageMotionModeSelect[]
const char pstrUsageBlitRectangleX1[]
const char pstrUsageLoudness[]
const char pstrUsageACDeleteComment[]
const char pstrUsageBassDecrement[]
const char pstrUsageMessage[]
const char pstrUsageDrop[]
const char pstrUsageVCRAcquisition[]
const char pstrUsageIllumination[]
#define VALUE_BETWEEN(v, l, h)
Definition macros.h:34
#define output_if_between(v, l, h, wa, fp, mp, el)
Definition macros.h:37
#define USBTRACE(s)
Definition macros.h:82
void E_Notify(char const *msg, int lvl)
Definition message.cpp:41
uint8_t valueSize
Definition parsetools.h:31
#define TAG_GLOBAL_REPORTCOUNT
Definition usbhid.h:54
#define TAG_GLOBAL_PHYSMAX
Definition usbhid.h:49
#define TAG_GLOBAL_REPORTID
Definition usbhid.h:53
#define TYPE_LOCAL
Definition usbhid.h:37
#define TAG_GLOBAL_REPORTSIZE
Definition usbhid.h:52
#define TAG_GLOBAL_PHYSMIN
Definition usbhid.h:48
#define TAG_GLOBAL_PUSH
Definition usbhid.h:55
#define HID_LONG_ITEM_PREFIX
Definition usbhid.h:101
#define TAG_MASK
Definition usbhid.h:28
#define TAG_LOCAL_USAGE
Definition usbhid.h:58
#define DATA_SIZE_4
Definition usbhid.h:33
#define TYPE_GLOBAL
Definition usbhid.h:36
#define DATA_SIZE_MASK
Definition usbhid.h:26
#define TAG_MAIN_OUTPUT
Definition usbhid.h:40
#define TAG_MAIN_INPUT
Definition usbhid.h:39
#define TAG_GLOBAL_USAGEPAGE
Definition usbhid.h:45
#define TAG_MAIN_COLLECTION
Definition usbhid.h:41
#define TAG_GLOBAL_UNIT
Definition usbhid.h:51
#define TAG_GLOBAL_UNITEXP
Definition usbhid.h:50
#define TAG_GLOBAL_LOGICALMAX
Definition usbhid.h:47
#define TAG_LOCAL_USAGEMAX
Definition usbhid.h:60
#define TAG_MAIN_FEATURE
Definition usbhid.h:42
#define TYPE_MAIN
Definition usbhid.h:35
#define TAG_MAIN_ENDCOLLECTION
Definition usbhid.h:43
#define TAG_LOCAL_USAGEMIN
Definition usbhid.h:59
#define TAG_GLOBAL_POP
Definition usbhid.h:56
#define TAG_GLOBAL_LOGICALMIN
Definition usbhid.h:46
#define TYPE_MASK
Definition usbhid.h:27
#define PSTR(str)