diff --git a/_b_t_d_8cpp.html b/_b_t_d_8cpp.html index c652f3a7..8a4bb934 100644 --- a/_b_t_d_8cpp.html +++ b/_b_t_d_8cpp.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: BTD.cpp File Reference @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + +
- - - + + +
@@ -105,7 +82,7 @@ Include dependency graph for BTD.cpp: diff --git a/_b_t_d_8cpp__incl.map b/_b_t_d_8cpp__incl.map index f7186e4f..0ccb9c58 100644 --- a/_b_t_d_8cpp__incl.map +++ b/_b_t_d_8cpp__incl.map @@ -1,6 +1,6 @@ - - - + + + diff --git a/_b_t_d_8cpp__incl.md5 b/_b_t_d_8cpp__incl.md5 index a355a3b6..34060dfc 100644 --- a/_b_t_d_8cpp__incl.md5 +++ b/_b_t_d_8cpp__incl.md5 @@ -1 +1 @@ -958bad8ed4b3f7ba0b3843a14e09d10f \ No newline at end of file +7f7897af29f53461811904a15cf045bb \ No newline at end of file diff --git a/_b_t_d_8cpp__incl.png b/_b_t_d_8cpp__incl.png index b753a3bf..dc4b2156 100644 Binary files a/_b_t_d_8cpp__incl.png and b/_b_t_d_8cpp__incl.png differ diff --git a/_b_t_d_8cpp_source.html b/_b_t_d_8cpp_source.html index f4569c38..63fd5ff5 100644 --- a/_b_t_d_8cpp_source.html +++ b/_b_t_d_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: BTD.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + +
BTD.cpp
-Go to the documentation of this file.
1 /* Copyright (C) 2012 Kristian Lauszus, TKJ Electronics. All rights reserved.
2 
3  This software may be distributed and modified under the terms of the GNU
4  General Public License version 2 (GPL2) as published by the Free Software
5  Foundation and appearing in the file GPL2.TXT included in the packaging of
6  this file. Please note that GPL2 Section 2[b] requires that all works based
7  on this software must also be made publicly available under the terms of
8  the GPL2 ("Copyleft").
9 
10  Contact information
11  -------------------
12 
13  Kristian Lauszus, TKJ Electronics
14  Web : http://www.tkjelectronics.com
15  e-mail : kristianl@tkjelectronics.com
16  */
17 
18 #include "BTD.h"
19 // To enable serial debugging see "settings.h"
20 //#define EXTRADEBUG // Uncomment to get even more debugging data
21 
22 const uint8_t BTD::BTD_CONTROL_PIPE = 0;
23 const uint8_t BTD::BTD_EVENT_PIPE = 1;
24 const uint8_t BTD::BTD_DATAIN_PIPE = 2;
25 const uint8_t BTD::BTD_DATAOUT_PIPE = 3;
26 
28 connectToWii(false),
29 pairWithWii(false),
30 connectToHIDDevice(false),
31 pairWithHIDDevice(false),
32 useSimplePairing(false),
33 pUsb(p), // Pointer to USB class instance - mandatory
34 bAddress(0), // Device address - mandatory
35 bNumEP(1), // If config descriptor needs to be parsed
36 qNextPollTime(0), // Reset NextPollTime
37 pollInterval(0),
38 simple_pairing_supported(false),
39 bPollEnable(false) // Don't start polling before dongle is connected
40 {
41  for(uint8_t i = 0; i < BTD_NUM_SERVICES; i++)
42  btService[i] = NULL;
43 
44  Initialize(); // Set all variables, endpoint structs etc. to default values
45 
46  if(pUsb) // Register in USB subsystem
47  pUsb->RegisterDeviceClass(this); // Set devConfig[] entry
48 }
49 
50 uint8_t BTD::ConfigureDevice(uint8_t parent, uint8_t port, bool lowspeed) {
51  const uint8_t constBufSize = sizeof (USB_DEVICE_DESCRIPTOR);
52  uint8_t buf[constBufSize];
53  USB_DEVICE_DESCRIPTOR * udd = reinterpret_cast<USB_DEVICE_DESCRIPTOR*>(buf);
54  uint8_t rcode;
55  UsbDevice *p = NULL;
56  EpInfo *oldep_ptr = NULL;
57 
58  Initialize(); // Set all variables, endpoint structs etc. to default values
59 
60  AddressPool &addrPool = pUsb->GetAddressPool(); // Get memory address of USB device address pool
61 #ifdef EXTRADEBUG
62  Notify(PSTR("\r\nBTD ConfigureDevice"), 0x80);
63 #endif
64 
65  if(bAddress) { // Check if address has already been assigned to an instance
66 #ifdef DEBUG_USB_HOST
67  Notify(PSTR("\r\nAddress in use"), 0x80);
68 #endif
70  }
71 
72  p = addrPool.GetUsbDevicePtr(0); // Get pointer to pseudo device with address 0 assigned
73  if(!p) {
74 #ifdef DEBUG_USB_HOST
75  Notify(PSTR("\r\nAddress not found"), 0x80);
76 #endif
78  }
79 
80  if(!p->epinfo) {
81 #ifdef DEBUG_USB_HOST
82  Notify(PSTR("\r\nepinfo is null"), 0x80);
83 #endif
85  }
86 
87  oldep_ptr = p->epinfo; // Save old pointer to EP_RECORD of address 0
88  p->epinfo = epInfo; // Temporary assign new pointer to epInfo to p->epinfo in order to avoid toggle inconsistence
89  p->lowspeed = lowspeed;
90  rcode = pUsb->getDevDescr(0, 0, constBufSize, (uint8_t*)buf); // Get device descriptor - addr, ep, nbytes, data
91 
92  p->epinfo = oldep_ptr; // Restore p->epinfo
93 
94  if(rcode)
95  goto FailGetDevDescr;
96 
97  bAddress = addrPool.AllocAddress(parent, false, port); // Allocate new address according to device class
98 
99  if(!bAddress) {
100 #ifdef DEBUG_USB_HOST
101  Notify(PSTR("\r\nOut of address space"), 0x80);
102 #endif
104  }
105 
106  if (udd->bDeviceClass == 0x09) // Some dongles have an USB hub inside
107  goto FailHub;
108 
109  epInfo[0].maxPktSize = udd->bMaxPacketSize0; // Extract Max Packet Size from device descriptor
110  epInfo[1].epAddr = udd->bNumConfigurations; // Steal and abuse from epInfo structure to save memory
111 
112  VID = udd->idVendor;
113  PID = udd->idProduct;
114 
116 
117 FailHub:
118 #ifdef DEBUG_USB_HOST
119  Notify(PSTR("\r\nPlease create a hub instance in your code: \"USBHub Hub1(&Usb);\""), 0x80);
120 #endif
121  pUsb->setAddr(bAddress, 0, 0); // Reset address
123  Release();
124  return rcode;
125 
126 FailGetDevDescr:
127 #ifdef DEBUG_USB_HOST
128  NotifyFailGetDevDescr(rcode);
129 #endif
130  if(rcode != hrJERR)
132  Release();
133  return rcode;
134 };
135 
136 uint8_t BTD::Init(uint8_t parent __attribute__((unused)), uint8_t port __attribute__((unused)), bool lowspeed) {
137  uint8_t rcode;
138  uint8_t num_of_conf = epInfo[1].epAddr; // Number of configurations
139  epInfo[1].epAddr = 0;
140 
141  AddressPool &addrPool = pUsb->GetAddressPool();
142 #ifdef EXTRADEBUG
143  Notify(PSTR("\r\nBTD Init"), 0x80);
144 #endif
145  UsbDevice *p = addrPool.GetUsbDevicePtr(bAddress); // Get pointer to assigned address record
146 
147  if(!p) {
148 #ifdef DEBUG_USB_HOST
149  Notify(PSTR("\r\nAddress not found"), 0x80);
150 #endif
152  }
153 
154  delay(300); // Assign new address to the device
155 
156  rcode = pUsb->setAddr(0, 0, bAddress); // Assign new address to the device
157  if(rcode) {
158 #ifdef DEBUG_USB_HOST
159  Notify(PSTR("\r\nsetAddr: "), 0x80);
160  D_PrintHex<uint8_t > (rcode, 0x80);
161 #endif
162  p->lowspeed = false;
163  goto Fail;
164  }
165 #ifdef EXTRADEBUG
166  Notify(PSTR("\r\nAddr: "), 0x80);
167  D_PrintHex<uint8_t > (bAddress, 0x80);
168 #endif
169 
170  p->lowspeed = false;
171 
172  p = addrPool.GetUsbDevicePtr(bAddress); // Get pointer to assigned address record
173  if(!p) {
174 #ifdef DEBUG_USB_HOST
175  Notify(PSTR("\r\nAddress not found"), 0x80);
176 #endif
178  }
179 
180  p->lowspeed = lowspeed;
181 
182  rcode = pUsb->setEpInfoEntry(bAddress, 1, epInfo); // Assign epInfo to epinfo pointer - only EP0 is known
183  if(rcode)
184  goto FailSetDevTblEntry;
185 
186  if(VID == PS3_VID && (PID == PS3_PID || PID == PS3NAVIGATION_PID || PID == PS3MOVE_PID)) {
187  delay(100);
188  rcode = pUsb->setConf(bAddress, epInfo[ BTD_CONTROL_PIPE ].epAddr, 1); // We only need the Control endpoint, so we don't have to initialize the other endpoints of device
189  if(rcode)
190  goto FailSetConfDescr;
191 
192 #ifdef DEBUG_USB_HOST
193  if(PID == PS3_PID || PID == PS3NAVIGATION_PID) {
194  if(PID == PS3_PID)
195  Notify(PSTR("\r\nDualshock 3 Controller Connected"), 0x80);
196  else // It must be a navigation controller
197  Notify(PSTR("\r\nNavigation Controller Connected"), 0x80);
198  } else // It must be a Motion controller
199  Notify(PSTR("\r\nMotion Controller Connected"), 0x80);
200 #endif
201 
202  if(my_bdaddr[0] == 0x00 && my_bdaddr[1] == 0x00 && my_bdaddr[2] == 0x00 && my_bdaddr[3] == 0x00 && my_bdaddr[4] == 0x00 && my_bdaddr[5] == 0x00) {
203 #ifdef DEBUG_USB_HOST
204  Notify(PSTR("\r\nPlease plug in the dongle before trying to pair with the PS3 Controller\r\nor set the Bluetooth address in the constructor of the PS3BT class"), 0x80);
205 #endif
206  } else {
207  if(PID == PS3_PID || PID == PS3NAVIGATION_PID)
208  setBdaddr(my_bdaddr); // Set internal Bluetooth address
209  else
210  setMoveBdaddr(my_bdaddr); // Set internal Bluetooth address
211 #ifdef DEBUG_USB_HOST
212  Notify(PSTR("\r\nBluetooth Address was set to: "), 0x80);
213  for(int8_t i = 5; i > 0; i--) {
214  D_PrintHex<uint8_t > (my_bdaddr[i], 0x80);
215  Notify(PSTR(":"), 0x80);
216  }
217  D_PrintHex<uint8_t > (my_bdaddr[0], 0x80);
218 #endif
219  }
220 
221  pUsb->setConf(bAddress, epInfo[ BTD_CONTROL_PIPE ].epAddr, 0); // Reset configuration value
222  pUsb->setAddr(bAddress, 0, 0); // Reset address
223  Release(); // Release device
225  } else {
226  // Check if attached device is a Bluetooth dongle and fill endpoint data structure
227  // First interface in the configuration must have Bluetooth assigned Class/Subclass/Protocol
228  // And 3 endpoints - interrupt-IN, bulk-IN, bulk-OUT, not necessarily in this order
229  for(uint8_t i = 0; i < num_of_conf; i++) {
230  if((VID == IOGEAR_GBU521_VID && PID == IOGEAR_GBU521_PID) || (VID == BELKIN_F8T065BF_VID && PID == BELKIN_F8T065BF_PID)) {
231  ConfigDescParser<USB_CLASS_VENDOR_SPECIFIC, WI_SUBCLASS_RF, WI_PROTOCOL_BT, CP_MASK_COMPARE_ALL> confDescrParser(this); // Workaround issue with some dongles
232  rcode = pUsb->getConfDescr(bAddress, 0, i, &confDescrParser);
233  } else {
234  ConfigDescParser<USB_CLASS_WIRELESS_CTRL, WI_SUBCLASS_RF, WI_PROTOCOL_BT, CP_MASK_COMPARE_ALL> confDescrParser(this); // Set class id according to the specification
235  rcode = pUsb->getConfDescr(bAddress, 0, i, &confDescrParser);
236  }
237  if(rcode) // Check error code
238  goto FailGetConfDescr;
239  if(bNumEP >= BTD_MAX_ENDPOINTS) // All endpoints extracted
240  break;
241  }
242 
244  goto FailUnknownDevice;
245 
246  // Assign epInfo to epinfo pointer - this time all 3 endpoins
247  rcode = pUsb->setEpInfoEntry(bAddress, bNumEP, epInfo);
248  if(rcode)
249  goto FailSetDevTblEntry;
250 
251  // Set Configuration Value
252  rcode = pUsb->setConf(bAddress, epInfo[ BTD_CONTROL_PIPE ].epAddr, bConfNum);
253  if(rcode)
254  goto FailSetConfDescr;
255 
256  hci_num_reset_loops = 100; // only loop 100 times before trying to send the hci reset command
257  hci_counter = 0;
258  hci_state = HCI_INIT_STATE;
259  waitingForConnection = false;
260  bPollEnable = true;
261 
262 #ifdef DEBUG_USB_HOST
263  Notify(PSTR("\r\nBluetooth Dongle Initialized"), 0x80);
264 #endif
265  }
266  return 0; // Successful configuration
267 
268  /* Diagnostic messages */
269 FailSetDevTblEntry:
270 #ifdef DEBUG_USB_HOST
272  goto Fail;
273 #endif
274 
275 FailGetConfDescr:
276 #ifdef DEBUG_USB_HOST
278  goto Fail;
279 #endif
280 
281 FailSetConfDescr:
282 #ifdef DEBUG_USB_HOST
284 #endif
285  goto Fail;
286 
287 FailUnknownDevice:
288 #ifdef DEBUG_USB_HOST
289  NotifyFailUnknownDevice(VID, PID);
290 #endif
291  pUsb->setAddr(bAddress, 0, 0); // Reset address
293 Fail:
294 #ifdef DEBUG_USB_HOST
295  Notify(PSTR("\r\nBTD Init Failed, error code: "), 0x80);
296  NotifyFail(rcode);
297 #endif
298  Release();
299  return rcode;
300 }
301 
302 void BTD::Initialize() {
303  uint8_t i;
304  for(i = 0; i < BTD_MAX_ENDPOINTS; i++) {
305  epInfo[i].epAddr = 0;
306  epInfo[i].maxPktSize = (i) ? 0 : 8;
307  epInfo[i].bmSndToggle = 0;
308  epInfo[i].bmRcvToggle = 0;
310  }
311  for(i = 0; i < BTD_NUM_SERVICES; i++) {
312  if(btService[i])
313  btService[i]->Reset(); // Reset all Bluetooth services
314  }
315 
316  connectToWii = false;
317  incomingWii = false;
318  connectToHIDDevice = false;
319  incomingHIDDevice = false;
320  incomingPS4 = false;
321  bAddress = 0; // Clear device address
322  bNumEP = 1; // Must have to be reset to 1
323  qNextPollTime = 0; // Reset next poll time
324  pollInterval = 0;
325  bPollEnable = false; // Don't start polling before dongle is connected
326  simple_pairing_supported = false;
327 }
328 
329 /* Extracts interrupt-IN, bulk-IN, bulk-OUT endpoint information from config descriptor */
330 void BTD::EndpointXtract(uint8_t conf, uint8_t iface __attribute__((unused)), uint8_t alt, uint8_t proto __attribute__((unused)), const USB_ENDPOINT_DESCRIPTOR *pep) {
331  //ErrorMessage<uint8_t>(PSTR("Conf.Val"),conf);
332  //ErrorMessage<uint8_t>(PSTR("Iface Num"),iface);
333  //ErrorMessage<uint8_t>(PSTR("Alt.Set"),alt);
334 
335  if(alt) // Wrong interface - by BT spec, no alt setting
336  return;
337 
338  bConfNum = conf;
339  uint8_t index;
340 
341  if((pep->bmAttributes & bmUSB_TRANSFER_TYPE) == USB_TRANSFER_TYPE_INTERRUPT && (pep->bEndpointAddress & 0x80) == 0x80) { // Interrupt In endpoint found
342  index = BTD_EVENT_PIPE;
344  } else if((pep->bmAttributes & bmUSB_TRANSFER_TYPE) == USB_TRANSFER_TYPE_BULK) // Bulk endpoint found
345  index = ((pep->bEndpointAddress & 0x80) == 0x80) ? BTD_DATAIN_PIPE : BTD_DATAOUT_PIPE;
346  else
347  return;
348 
349  // Fill the rest of endpoint data structure
350  epInfo[index].epAddr = (pep->bEndpointAddress & 0x0F);
351  epInfo[index].maxPktSize = (uint8_t)pep->wMaxPacketSize;
352 #ifdef EXTRADEBUG
354 #endif
355  if(pollInterval < pep->bInterval) // Set the polling interval as the largest polling interval obtained from endpoints
356  pollInterval = pep->bInterval;
357  bNumEP++;
358 }
359 
360 void BTD::PrintEndpointDescriptor(const USB_ENDPOINT_DESCRIPTOR* ep_ptr __attribute__((unused))) {
361 #ifdef EXTRADEBUG
362  Notify(PSTR("\r\nEndpoint descriptor:"), 0x80);
363  Notify(PSTR("\r\nLength:\t\t"), 0x80);
364  D_PrintHex<uint8_t > (ep_ptr->bLength, 0x80);
365  Notify(PSTR("\r\nType:\t\t"), 0x80);
366  D_PrintHex<uint8_t > (ep_ptr->bDescriptorType, 0x80);
367  Notify(PSTR("\r\nAddress:\t"), 0x80);
368  D_PrintHex<uint8_t > (ep_ptr->bEndpointAddress, 0x80);
369  Notify(PSTR("\r\nAttributes:\t"), 0x80);
370  D_PrintHex<uint8_t > (ep_ptr->bmAttributes, 0x80);
371  Notify(PSTR("\r\nMaxPktSize:\t"), 0x80);
372  D_PrintHex<uint16_t > (ep_ptr->wMaxPacketSize, 0x80);
373  Notify(PSTR("\r\nPoll Intrv:\t"), 0x80);
374  D_PrintHex<uint8_t > (ep_ptr->bInterval, 0x80);
375 #endif
376 }
377 
378 /* Performs a cleanup after failed Init() attempt */
379 uint8_t BTD::Release() {
380  Initialize(); // Set all variables, endpoint structs etc. to default values
382  return 0;
383 }
384 
385 uint8_t BTD::Poll() {
386  if(!bPollEnable)
387  return 0;
388  if((int32_t)((uint32_t)millis() - qNextPollTime) >= 0L) { // Don't poll if shorter than polling interval
389  qNextPollTime = (uint32_t)millis() + pollInterval; // Set new poll time
390  HCI_event_task(); // Poll the HCI event pipe
391  HCI_task(); // HCI state machine
392  ACL_event_task(); // Poll the ACL input pipe too
393  }
394  return 0;
395 }
396 
398  for(uint8_t i = 0; i < BTD_NUM_SERVICES; i++)
399  if(btService[i])
400  btService[i]->disconnect();
401 };
402 
403 void BTD::HCI_event_task() {
404  uint16_t length = BULK_MAXPKTSIZE; // Request more than 16 bytes anyway, the inTransfer routine will take care of this
405  uint8_t rcode = pUsb->inTransfer(bAddress, epInfo[ BTD_EVENT_PIPE ].epAddr, &length, hcibuf, pollInterval); // Input on endpoint 1
406 
407  if(!rcode || rcode == hrNAK) { // Check for errors
408  switch(hcibuf[0]) { // Switch on event type
409  case EV_COMMAND_COMPLETE:
410  if(!hcibuf[5]) { // Check if command succeeded
411  hci_set_flag(HCI_FLAG_CMD_COMPLETE); // Set command complete flag
412  if((hcibuf[3] == 0x01) && (hcibuf[4] == 0x10)) { // Parameters from read local version information
413  hci_version = hcibuf[6]; // Used to check if it supports 2.0+EDR - see http://www.bluetooth.org/Technical/AssignedNumbers/hci.htm
414 #ifdef EXTRADEBUG
416  Notify(PSTR("\r\nHCI version: "), 0x80);
417  D_PrintHex<uint8_t > (hci_version, 0x80);
418  }
419 #endif
421  } else if((hcibuf[3] == 0x04) && (hcibuf[4] == 0x10)) { // Parameters from read local extended features
423 #ifdef EXTRADEBUG
424  Notify(PSTR("\r\nPage number: "), 0x80);
425  D_PrintHex<uint8_t > (hcibuf[6], 0x80);
426  Notify(PSTR("\r\nMaximum page number: "), 0x80);
427  D_PrintHex<uint8_t > (hcibuf[7], 0x80);
428  Notify(PSTR("\r\nExtended LMP features:"), 0x80);
429  for(uint8_t i = 0; i < 8; i++) {
430  Notify(PSTR(" "), 0x80);
431  D_PrintHex<uint8_t > (hcibuf[8 + i], 0x80);
432  }
433 #endif
434  if(hcibuf[6] == 0) { // Page 0
435 #ifdef DEBUG_USB_HOST
436  Notify(PSTR("\r\nDongle "), 0x80);
437 #endif
438  if(hcibuf[8 + 6] & (1U << 3)) {
439  simple_pairing_supported = true;
440 #ifdef DEBUG_USB_HOST
441  Notify(PSTR("supports"), 0x80);
442 #endif
443  } else {
444  simple_pairing_supported = false;
445 #ifdef DEBUG_USB_HOST
446  Notify(PSTR("does NOT support"), 0x80);
447 #endif
448  }
449 #ifdef DEBUG_USB_HOST
450  Notify(PSTR(" secure simple pairing (controller support)"), 0x80);
451 #endif
452  } else if(hcibuf[6] == 1) { // Page 1
453 #ifdef DEBUG_USB_HOST
454  Notify(PSTR("\r\nDongle "), 0x80);
455  if(hcibuf[8 + 0] & (1U << 0))
456  Notify(PSTR("supports"), 0x80);
457  else
458  Notify(PSTR("does NOT support"), 0x80);
459  Notify(PSTR(" secure simple pairing (host support)"), 0x80);
460 #endif
461  }
462  }
463 
465  } else if((hcibuf[3] == 0x09) && (hcibuf[4] == 0x10)) { // Parameters from read local bluetooth address
466  for(uint8_t i = 0; i < 6; i++)
467  my_bdaddr[i] = hcibuf[6 + i];
469  }
470  }
471  break;
472 
473  case EV_COMMAND_STATUS:
474  if(hcibuf[2]) { // Show status on serial if not OK
475 #ifdef DEBUG_USB_HOST
476  Notify(PSTR("\r\nHCI Command Failed: "), 0x80);
477  D_PrintHex<uint8_t > (hcibuf[2], 0x80);
478  Notify(PSTR("\r\nNum HCI Command Packets: "), 0x80);
479  D_PrintHex<uint8_t > (hcibuf[3], 0x80);
480  Notify(PSTR("\r\nCommand Opcode: "), 0x80);
481  D_PrintHex<uint8_t > (hcibuf[4], 0x80);
482  Notify(PSTR(" "), 0x80);
483  D_PrintHex<uint8_t > (hcibuf[5], 0x80);
484 #endif
485  }
486  break;
487 
488  case EV_INQUIRY_COMPLETE:
489  if(inquiry_counter >= 5 && (pairWithWii || pairWithHIDDevice)) {
490  inquiry_counter = 0;
491 #ifdef DEBUG_USB_HOST
492  if(pairWithWii)
493  Notify(PSTR("\r\nCouldn't find Wiimote"), 0x80);
494  else
495  Notify(PSTR("\r\nCouldn't find HID device"), 0x80);
496 #endif
497  connectToWii = false;
498  pairWithWii = false;
499  connectToHIDDevice = false;
500  pairWithHIDDevice = false;
501  hci_state = HCI_SCANNING_STATE;
502  }
503  inquiry_counter++;
504  break;
505 
506  case EV_INQUIRY_RESULT:
507  if(hcibuf[2]) { // Check that there is more than zero responses
508 #ifdef EXTRADEBUG
509  Notify(PSTR("\r\nNumber of responses: "), 0x80);
510  Notify(hcibuf[2], 0x80);
511 #endif
512  for(uint8_t i = 0; i < hcibuf[2]; i++) {
513  uint8_t offset = 8 * hcibuf[2] + 3 * i;
514 
515  for(uint8_t j = 0; j < 3; j++)
516  classOfDevice[j] = hcibuf[j + 4 + offset];
517 
518 #ifdef EXTRADEBUG
519  Notify(PSTR("\r\nClass of device: "), 0x80);
520  D_PrintHex<uint8_t > (classOfDevice[2], 0x80);
521  Notify(PSTR(" "), 0x80);
522  D_PrintHex<uint8_t > (classOfDevice[1], 0x80);
523  Notify(PSTR(" "), 0x80);
524  D_PrintHex<uint8_t > (classOfDevice[0], 0x80);
525 #endif
526 
527  if(pairWithWii && classOfDevice[2] == 0x00 && (classOfDevice[1] == 0x05) && (classOfDevice[0] & 0x0C)) { // See http://wiibrew.org/wiki/Wiimote#SDP_information
528  checkRemoteName = true; // Check remote name to distinguish between the different controllers
529 
530  for(uint8_t j = 0; j < 6; j++)
531  disc_bdaddr[j] = hcibuf[j + 3 + 6 * i];
532 
534  break;
535  } else if(pairWithHIDDevice && (classOfDevice[1] & 0x0F) == 0x05 && (classOfDevice[0] & 0xC8)) { // Check if it is a mouse, keyboard or a gamepad - see: http://bluetooth-pentest.narod.ru/software/bluetooth_class_of_device-service_generator.html
536 #ifdef DEBUG_USB_HOST
537  checkRemoteName = true; // Used to print name in the serial monitor if serial debugging is enabled
538 
539  if(classOfDevice[0] & 0x80)
540  Notify(PSTR("\r\nMouse found"), 0x80);
541  if(classOfDevice[0] & 0x40)
542  Notify(PSTR("\r\nKeyboard found"), 0x80);
543  if(classOfDevice[0] & 0x08)
544  Notify(PSTR("\r\nGamepad found"), 0x80);
545 #endif
546  for(uint8_t j = 0; j < 6; j++)
547  disc_bdaddr[j] = hcibuf[j + 3 + 6 * i];
548 
550  break;
551  }
552  }
553  }
554  break;
555 
556  case EV_CONNECT_COMPLETE:
558  if(!hcibuf[2]) { // Check if connected OK
559 #ifdef EXTRADEBUG
560  Notify(PSTR("\r\nConnection established"), 0x80);
561 #endif
562  hci_handle = hcibuf[3] | ((hcibuf[4] & 0x0F) << 8); // Store the handle for the ACL connection
563  hci_set_flag(HCI_FLAG_CONNECT_COMPLETE); // Set connection complete flag
564  } else {
565  hci_state = HCI_CHECK_DEVICE_SERVICE;
566 #ifdef DEBUG_USB_HOST
567  Notify(PSTR("\r\nConnection Failed: "), 0x80);
568  D_PrintHex<uint8_t > (hcibuf[2], 0x80);
569 #endif
570  }
571  break;
572 
574  if(!hcibuf[2]) { // Check if disconnected OK
575  hci_set_flag(HCI_FLAG_DISCONNECT_COMPLETE); // Set disconnect command complete flag
576  hci_clear_flag(HCI_FLAG_CONNECT_COMPLETE); // Clear connection complete flag
577  }
578  break;
579 
581  if(!hcibuf[2]) { // Check if reading is OK
582  for(uint8_t i = 0; i < min(sizeof (remote_name), sizeof (hcibuf) - 9); i++) {
583  remote_name[i] = hcibuf[9 + i];
584  if(remote_name[i] == '\0') // End of string
585  break;
586  }
587  // TODO: Always set '\0' in remote name!
589  }
590  break;
591 
592  case EV_INCOMING_CONNECT:
593  for(uint8_t i = 0; i < 6; i++)
594  disc_bdaddr[i] = hcibuf[i + 2];
595 
596  for(uint8_t i = 0; i < 3; i++)
597  classOfDevice[i] = hcibuf[i + 8];
598 
599  if((classOfDevice[1] & 0x0F) == 0x05 && (classOfDevice[0] & 0xC8)) { // Check if it is a mouse, keyboard or a gamepad
600 #ifdef DEBUG_USB_HOST
601  if(classOfDevice[0] & 0x80)
602  Notify(PSTR("\r\nMouse is connecting"), 0x80);
603  if(classOfDevice[0] & 0x40)
604  Notify(PSTR("\r\nKeyboard is connecting"), 0x80);
605  if(classOfDevice[0] & 0x08)
606  Notify(PSTR("\r\nGamepad is connecting"), 0x80);
607 #endif
608  incomingHIDDevice = true;
609  }
610 
611 #ifdef EXTRADEBUG
612  Notify(PSTR("\r\nClass of device: "), 0x80);
613  D_PrintHex<uint8_t > (classOfDevice[2], 0x80);
614  Notify(PSTR(" "), 0x80);
615  D_PrintHex<uint8_t > (classOfDevice[1], 0x80);
616  Notify(PSTR(" "), 0x80);
617  D_PrintHex<uint8_t > (classOfDevice[0], 0x80);
618 #endif
620  break;
621 
622  case EV_PIN_CODE_REQUEST:
623  if(pairWithWii) {
624 #ifdef DEBUG_USB_HOST
625  Notify(PSTR("\r\nPairing with Wiimote"), 0x80);
626 #endif
628  } else if(btdPin != NULL) {
629 #ifdef DEBUG_USB_HOST
630  Notify(PSTR("\r\nBluetooth pin is set too: "), 0x80);
631  NotifyStr(btdPin, 0x80);
632 #endif
634  } else {
635 #ifdef DEBUG_USB_HOST
636  Notify(PSTR("\r\nNo pin was set"), 0x80);
637 #endif
639  }
640  break;
641 
642  case EV_LINK_KEY_REQUEST:
643 #ifdef DEBUG_USB_HOST
644  Notify(PSTR("\r\nReceived Key Request"), 0x80);
645 #endif
647  break;
648 
650  if(!hcibuf[2]) { // Check if pairing was successful
651  if(pairWithWii && !connectToWii) {
652 #ifdef DEBUG_USB_HOST
653  Notify(PSTR("\r\nPairing successful with Wiimote"), 0x80);
654 #endif
655  connectToWii = true; // Used to indicate to the Wii service, that it should connect to this device
656  } else if(pairWithHIDDevice && !connectToHIDDevice) {
657 #ifdef DEBUG_USB_HOST
658  Notify(PSTR("\r\nPairing successful with HID device"), 0x80);
659 #endif
660  connectToHIDDevice = true; // Used to indicate to the BTHID service, that it should connect to this device
661  } else {
662 #ifdef EXTRADEBUG
663  Notify(PSTR("\r\nPairing was successful"), 0x80);
664 #endif
665  }
666  } else {
667 #ifdef DEBUG_USB_HOST
668  Notify(PSTR("\r\nPairing Failed: "), 0x80);
669  D_PrintHex<uint8_t > (hcibuf[2], 0x80);
670 #endif
672  hci_state = HCI_DISCONNECT_STATE;
673  }
674  break;
675 
677 #ifdef DEBUG_USB_HOST
678  Notify(PSTR("\r\nReceived IO Capability Request"), 0x80);
679 #endif
681  break;
682 
684 #ifdef EXTRADEBUG
685  Notify(PSTR("\r\nReceived IO Capability Response: "), 0x80);
686  Notify(PSTR("\r\nIO capability: "), 0x80);
687  D_PrintHex<uint8_t > (hcibuf[8], 0x80);
688  Notify(PSTR("\r\nOOB data present: "), 0x80);
689  D_PrintHex<uint8_t > (hcibuf[9], 0x80);
690  Notify(PSTR("\r\nAuthentication request: "), 0x80);
691  D_PrintHex<uint8_t > (hcibuf[10], 0x80);
692 #endif
693  break;
694 
696 #ifdef DEBUG_USB_HOST
697  Notify(PSTR("\r\nUser confirmation Request"), 0x80);
698 #ifdef EXTRADEBUG
699  Notify(PSTR(": \r\nNumeric value: "), 0x80);
700  for(uint8_t i = 0; i < 4; i++) {
701  Notify(PSTR(" "), 0x80);
702  D_PrintHex<uint8_t > (hcibuf[8 + i], 0x80);
703  }
704 #endif
705 #endif
706  // Simply confirm the connection, as the host has no "NoInputNoOutput" capabilities
708  break;
709 
711 #ifdef EXTRADEBUG
712  if(!hcibuf[2]) { // Check if connected OK
713  Notify(PSTR("\r\nSimple Pairing succeeded"), 0x80);
714  } else {
715  Notify(PSTR("\r\nSimple Pairing failed: "), 0x80);
716  D_PrintHex<uint8_t > (hcibuf[2], 0x80);
717  }
718 #endif
719  break;
720 
721  /* We will just ignore the following events */
722  case EV_MAX_SLOTS_CHANGE:
723  case EV_NUM_COMPLETE_PKT:
724  break;
725  case EV_ROLE_CHANGED:
727  case EV_LOOPBACK_COMMAND:
734 #ifdef EXTRADEBUG
735  if(hcibuf[0] != 0x00) {
736  Notify(PSTR("\r\nIgnore HCI Event: "), 0x80);
737  D_PrintHex<uint8_t > (hcibuf[0], 0x80);
738  }
739 #endif
740  break;
741 #ifdef EXTRADEBUG
742  default:
743  if(hcibuf[0] != 0x00) {
744  Notify(PSTR("\r\nUnmanaged HCI Event: "), 0x80);
745  D_PrintHex<uint8_t > (hcibuf[0], 0x80);
746  Notify(PSTR(", data: "), 0x80);
747  for(uint16_t i = 0; i < hcibuf[1]; i++) {
748  D_PrintHex<uint8_t > (hcibuf[2 + i], 0x80);
749  Notify(PSTR(" "), 0x80);
750  }
751  }
752  break;
753 #endif
754  } // Switch
755  }
756 #ifdef EXTRADEBUG
757  else {
758  Notify(PSTR("\r\nHCI event error: "), 0x80);
759  D_PrintHex<uint8_t > (rcode, 0x80);
760  }
761 #endif
762 }
763 
764 /* Poll Bluetooth and print result */
765 void BTD::HCI_task() {
766  switch(hci_state) {
767  case HCI_INIT_STATE:
768  hci_counter++;
769  if(hci_counter > hci_num_reset_loops) { // wait until we have looped x times to clear any old events
770  hci_reset();
771  hci_state = HCI_RESET_STATE;
772  hci_counter = 0;
773  }
774  break;
775 
776  case HCI_RESET_STATE:
777  hci_counter++;
779  hci_counter = 0;
780 #ifdef DEBUG_USB_HOST
781  Notify(PSTR("\r\nHCI Reset complete"), 0x80);
782 #endif
783  hci_state = HCI_CLASS_STATE;
785  } else if(hci_counter > hci_num_reset_loops) {
786  hci_num_reset_loops *= 10;
787  if(hci_num_reset_loops > 2000)
788  hci_num_reset_loops = 2000;
789 #ifdef DEBUG_USB_HOST
790  Notify(PSTR("\r\nNo response to HCI Reset"), 0x80);
791 #endif
792  hci_state = HCI_INIT_STATE;
793  hci_counter = 0;
794  }
795  break;
796 
797  case HCI_CLASS_STATE:
799 #ifdef DEBUG_USB_HOST
800  Notify(PSTR("\r\nWrite class of device"), 0x80);
801 #endif
802  hci_state = HCI_BDADDR_STATE;
803  hci_read_bdaddr();
804  }
805  break;
806 
807  case HCI_BDADDR_STATE:
809 #ifdef DEBUG_USB_HOST
810  Notify(PSTR("\r\nLocal Bluetooth Address: "), 0x80);
811  for(int8_t i = 5; i > 0; i--) {
812  D_PrintHex<uint8_t > (my_bdaddr[i], 0x80);
813  Notify(PSTR(":"), 0x80);
814  }
815  D_PrintHex<uint8_t > (my_bdaddr[0], 0x80);
816 #endif
818  hci_state = HCI_LOCAL_VERSION_STATE;
819  }
820  break;
821 
822  case HCI_LOCAL_VERSION_STATE: // The local version is used by the PS3BT class
824  if(btdName != NULL) {
826  hci_state = HCI_WRITE_NAME_STATE;
827  } else if(useSimplePairing) {
828  hci_read_local_extended_features(0); // "Requests the normal LMP features as returned by Read_Local_Supported_Features"
829  //hci_read_local_extended_features(1); // Read page 1
831  } else
832  hci_state = HCI_CHECK_DEVICE_SERVICE;
833  }
834  break;
835 
838 #ifdef DEBUG_USB_HOST
839  Notify(PSTR("\r\nThe name was set to: "), 0x80);
840  NotifyStr(btdName, 0x80);
841 #endif
842  if(useSimplePairing) {
843  hci_read_local_extended_features(0); // "Requests the normal LMP features as returned by Read_Local_Supported_Features"
844  //hci_read_local_extended_features(1); // Read page 1
846  } else
847  hci_state = HCI_CHECK_DEVICE_SERVICE;
848  }
849  break;
850 
853  if(simple_pairing_supported) {
855  hci_state = HCI_WRITE_SIMPLE_PAIRING_STATE;
856  } else
857  hci_state = HCI_CHECK_DEVICE_SERVICE;
858  }
859  break;
860 
863 #ifdef DEBUG_USB_HOST
864  Notify(PSTR("\r\nSimple pairing was enabled"), 0x80);
865 #endif
867  hci_state = HCI_SET_EVENT_MASK_STATE;
868  }
869  break;
870 
873 #ifdef DEBUG_USB_HOST
874  Notify(PSTR("\r\nSet event mask completed"), 0x80);
875 #endif
876  hci_state = HCI_CHECK_DEVICE_SERVICE;
877  }
878  break;
879 
881  if(pairWithHIDDevice || pairWithWii) { // Check if it should try to connect to a Wiimote
882 #ifdef DEBUG_USB_HOST
883  if(pairWithWii)
884  Notify(PSTR("\r\nStarting inquiry\r\nPress 1 & 2 on the Wiimote\r\nOr press the SYNC button if you are using a Wii U Pro Controller or a Wii Balance Board"), 0x80);
885  else
886  Notify(PSTR("\r\nPlease enable discovery of your device"), 0x80);
887 #endif
888  hci_inquiry();
889  hci_state = HCI_INQUIRY_STATE;
890  } else
891  hci_state = HCI_SCANNING_STATE; // Don't try to connect to a Wiimote
892  break;
893 
894  case HCI_INQUIRY_STATE:
896  hci_inquiry_cancel(); // Stop inquiry
897 #ifdef DEBUG_USB_HOST
898  if(pairWithWii)
899  Notify(PSTR("\r\nWiimote found"), 0x80);
900  else
901  Notify(PSTR("\r\nHID device found"), 0x80);
902 
903  Notify(PSTR("\r\nNow just create the instance like so:"), 0x80);
904  if(pairWithWii)
905  Notify(PSTR("\r\nWII Wii(&Btd);"), 0x80);
906  else
907  Notify(PSTR("\r\nBTHID bthid(&Btd);"), 0x80);
908 
909  Notify(PSTR("\r\nAnd then press any button on the "), 0x80);
910  if(pairWithWii)
911  Notify(PSTR("Wiimote"), 0x80);
912  else
913  Notify(PSTR("device"), 0x80);
914 #endif
915  if(checkRemoteName) {
916  hci_remote_name(); // We need to know the name to distinguish between the Wiimote, the new Wiimote with Motion Plus inside, a Wii U Pro Controller and a Wii Balance Board
917  hci_state = HCI_REMOTE_NAME_STATE;
918  } else
919  hci_state = HCI_CONNECT_DEVICE_STATE;
920  }
921  break;
922 
925 #ifdef DEBUG_USB_HOST
926  if(pairWithWii)
927  Notify(PSTR("\r\nConnecting to Wiimote"), 0x80);
928  else
929  Notify(PSTR("\r\nConnecting to HID device"), 0x80);
930 #endif
931  checkRemoteName = false;
932  hci_connect();
933  hci_state = HCI_CONNECTED_DEVICE_STATE;
934  }
935  break;
936 
940 #ifdef DEBUG_USB_HOST
941  if(pairWithWii)
942  Notify(PSTR("\r\nConnected to Wiimote"), 0x80);
943  else
944  Notify(PSTR("\r\nConnected to HID device"), 0x80);
945 #endif
946  hci_authentication_request(); // This will start the pairing with the device
947  hci_state = HCI_SCANNING_STATE;
948  } else {
949 #ifdef DEBUG_USB_HOST
950  Notify(PSTR("\r\nTrying to connect one more time..."), 0x80);
951 #endif
952  hci_connect(); // Try to connect one more time
953  }
954  }
955  break;
956 
957  case HCI_SCANNING_STATE:
959 #ifdef DEBUG_USB_HOST
960  Notify(PSTR("\r\nWait For Incoming Connection Request"), 0x80);
961 #endif
963  waitingForConnection = true;
964  hci_state = HCI_CONNECT_IN_STATE;
965  }
966  break;
967 
970  waitingForConnection = false;
971 #ifdef DEBUG_USB_HOST
972  Notify(PSTR("\r\nIncoming Connection Request"), 0x80);
973 #endif
974  hci_remote_name();
975  hci_state = HCI_REMOTE_NAME_STATE;
977  hci_state = HCI_DISCONNECT_STATE;
978  break;
979 
982 #ifdef DEBUG_USB_HOST
983  Notify(PSTR("\r\nRemote Name: "), 0x80);
984  for(uint8_t i = 0; i < strlen(remote_name); i++)
985  Notifyc(remote_name[i], 0x80);
986 #endif
987  if(strncmp((const char*)remote_name, "Nintendo", 8) == 0) {
988  incomingWii = true;
989  motionPlusInside = false;
990  wiiUProController = false;
991  pairWiiUsingSync = false;
992 #ifdef DEBUG_USB_HOST
993  Notify(PSTR("\r\nWiimote is connecting"), 0x80);
994 #endif
995  if(strncmp((const char*)remote_name, "Nintendo RVL-CNT-01-TR", 22) == 0) {
996 #ifdef DEBUG_USB_HOST
997  Notify(PSTR(" with Motion Plus Inside"), 0x80);
998 #endif
999  motionPlusInside = true;
1000  } else if(strncmp((const char*)remote_name, "Nintendo RVL-CNT-01-UC", 22) == 0) {
1001 #ifdef DEBUG_USB_HOST
1002  Notify(PSTR(" - Wii U Pro Controller"), 0x80);
1003 #endif
1004  wiiUProController = motionPlusInside = pairWiiUsingSync = true;
1005  } else if(strncmp((const char*)remote_name, "Nintendo RVL-WBC-01", 19) == 0) {
1006 #ifdef DEBUG_USB_HOST
1007  Notify(PSTR(" - Wii Balance Board"), 0x80);
1008 #endif
1009  pairWiiUsingSync = true;
1010  }
1011  }
1012  if(classOfDevice[2] == 0 && classOfDevice[1] == 0x25 && classOfDevice[0] == 0x08 && strncmp((const char*)remote_name, "Wireless Controller", 19) == 0) {
1013 #ifdef DEBUG_USB_HOST
1014  Notify(PSTR("\r\nPS4 controller is connecting"), 0x80);
1015 #endif
1016  incomingPS4 = true;
1017  }
1018  if((pairWithWii || pairWithHIDDevice) && checkRemoteName)
1019  hci_state = HCI_CONNECT_DEVICE_STATE;
1020  else {
1022  hci_state = HCI_CONNECTED_STATE;
1023  }
1024  }
1025  break;
1026 
1027  case HCI_CONNECTED_STATE:
1029 #ifdef DEBUG_USB_HOST
1030  Notify(PSTR("\r\nConnected to Device: "), 0x80);
1031  for(int8_t i = 5; i > 0; i--) {
1032  D_PrintHex<uint8_t > (disc_bdaddr[i], 0x80);
1033  Notify(PSTR(":"), 0x80);
1034  }
1035  D_PrintHex<uint8_t > (disc_bdaddr[0], 0x80);
1036 #endif
1037  if(incomingPS4)
1038  connectToHIDDevice = true; // We should always connect to the PS4 controller
1039 
1040  // Clear these flags for a new connection
1041  l2capConnectionClaimed = false;
1042  sdpConnectionClaimed = false;
1043  rfcommConnectionClaimed = false;
1044 
1045  hci_event_flag = 0;
1046  hci_state = HCI_DONE_STATE;
1047  }
1048  break;
1049 
1050  case HCI_DONE_STATE:
1051  hci_counter++;
1052  if(hci_counter > 1000) { // Wait until we have looped 1000 times to make sure that the L2CAP connection has been started
1053  hci_counter = 0;
1054  hci_state = HCI_SCANNING_STATE;
1055  }
1056  break;
1057 
1058  case HCI_DISCONNECT_STATE:
1060 #ifdef DEBUG_USB_HOST
1061  Notify(PSTR("\r\nHCI Disconnected from Device"), 0x80);
1062 #endif
1063  hci_event_flag = 0; // Clear all flags
1064 
1065  // Reset all buffers
1066  memset(hcibuf, 0, BULK_MAXPKTSIZE);
1067  memset(l2capinbuf, 0, BULK_MAXPKTSIZE);
1068 
1069  connectToWii = incomingWii = pairWithWii = false;
1070  connectToHIDDevice = incomingHIDDevice = pairWithHIDDevice = checkRemoteName = false;
1071  incomingPS4 = false;
1072 
1073  hci_state = HCI_SCANNING_STATE;
1074  }
1075  break;
1076  default:
1077  break;
1078  }
1079 }
1080 
1081 void BTD::ACL_event_task() {
1082  uint16_t length = BULK_MAXPKTSIZE;
1083  uint8_t rcode = pUsb->inTransfer(bAddress, epInfo[ BTD_DATAIN_PIPE ].epAddr, &length, l2capinbuf, pollInterval); // Input on endpoint 2
1084 
1085  if(!rcode) { // Check for errors
1086  if(length > 0) { // Check if any data was read
1087  for(uint8_t i = 0; i < BTD_NUM_SERVICES; i++) {
1088  if(btService[i])
1089  btService[i]->ACLData(l2capinbuf);
1090  }
1091  }
1092  }
1093 #ifdef EXTRADEBUG
1094  else if(rcode != hrNAK) {
1095  Notify(PSTR("\r\nACL data in error: "), 0x80);
1096  D_PrintHex<uint8_t > (rcode, 0x80);
1097  }
1098 #endif
1099  for(uint8_t i = 0; i < BTD_NUM_SERVICES; i++)
1100  if(btService[i])
1101  btService[i]->Run();
1102 }
1103 
1104 /************************************************************/
1105 /* HCI Commands */
1106 
1107 /************************************************************/
1108 void BTD::HCI_Command(uint8_t* data, uint16_t nbytes) {
1110  pUsb->ctrlReq(bAddress, epInfo[ BTD_CONTROL_PIPE ].epAddr, bmREQ_HCI_OUT, 0x00, 0x00, 0x00, 0x00, nbytes, nbytes, data, NULL);
1111 }
1112 
1114  hci_event_flag = 0; // Clear all the flags
1115  hcibuf[0] = 0x03; // HCI OCF = 3
1116  hcibuf[1] = 0x03 << 2; // HCI OGF = 3
1117  hcibuf[2] = 0x00;
1118 
1119  HCI_Command(hcibuf, 3);
1120 }
1121 
1124  hcibuf[0] = 0x1A; // HCI OCF = 1A
1125  hcibuf[1] = 0x03 << 2; // HCI OGF = 3
1126  hcibuf[2] = 0x01; // parameter length = 1
1127  if(btdName != NULL)
1128  hcibuf[3] = 0x03; // Inquiry Scan enabled. Page Scan enabled.
1129  else
1130  hcibuf[3] = 0x02; // Inquiry Scan disabled. Page Scan enabled.
1131 
1132  HCI_Command(hcibuf, 4);
1133 }
1134 
1136  hcibuf[0] = 0x1A; // HCI OCF = 1A
1137  hcibuf[1] = 0x03 << 2; // HCI OGF = 3
1138  hcibuf[2] = 0x01; // parameter length = 1
1139  hcibuf[3] = 0x00; // Inquiry Scan disabled. Page Scan disabled.
1140 
1141  HCI_Command(hcibuf, 4);
1142 }
1143 
1146  hcibuf[0] = 0x09; // HCI OCF = 9
1147  hcibuf[1] = 0x04 << 2; // HCI OGF = 4
1148  hcibuf[2] = 0x00;
1149 
1150  HCI_Command(hcibuf, 3);
1151 }
1152 
1155  hcibuf[0] = 0x01; // HCI OCF = 1
1156  hcibuf[1] = 0x04 << 2; // HCI OGF = 4
1157  hcibuf[2] = 0x00;
1158 
1159  HCI_Command(hcibuf, 3);
1160 }
1161 
1162 void BTD::hci_read_local_extended_features(uint8_t page_number) {
1164  hcibuf[0] = 0x04; // HCI OCF = 4
1165  hcibuf[1] = 0x04 << 2; // HCI OGF = 4
1166  hcibuf[2] = 0x01; // parameter length = 1
1167  hcibuf[3] = page_number;
1168 
1169  HCI_Command(hcibuf, 4);
1170 }
1171 
1174  hcibuf[0] = 0x09; // HCI OCF = 9
1175  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1176  hcibuf[2] = 0x07; // parameter length 7
1177  hcibuf[3] = disc_bdaddr[0]; // 6 octet bdaddr
1178  hcibuf[4] = disc_bdaddr[1];
1179  hcibuf[5] = disc_bdaddr[2];
1180  hcibuf[6] = disc_bdaddr[3];
1181  hcibuf[7] = disc_bdaddr[4];
1182  hcibuf[8] = disc_bdaddr[5];
1183  hcibuf[9] = 0x00; // Switch role to master
1184 
1185  HCI_Command(hcibuf, 10);
1186 }
1187 
1190  hcibuf[0] = 0x19; // HCI OCF = 19
1191  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1192  hcibuf[2] = 0x0A; // parameter length = 10
1193  hcibuf[3] = disc_bdaddr[0]; // 6 octet bdaddr
1194  hcibuf[4] = disc_bdaddr[1];
1195  hcibuf[5] = disc_bdaddr[2];
1196  hcibuf[6] = disc_bdaddr[3];
1197  hcibuf[7] = disc_bdaddr[4];
1198  hcibuf[8] = disc_bdaddr[5];
1199  hcibuf[9] = 0x01; // Page Scan Repetition Mode
1200  hcibuf[10] = 0x00; // Reserved
1201  hcibuf[11] = 0x00; // Clock offset - low byte
1202  hcibuf[12] = 0x00; // Clock offset - high byte
1203 
1204  HCI_Command(hcibuf, 13);
1205 }
1206 
1207 void BTD::hci_write_local_name(const char* name) {
1208  hcibuf[0] = 0x13; // HCI OCF = 13
1209  hcibuf[1] = 0x03 << 2; // HCI OGF = 3
1210  hcibuf[2] = strlen(name) + 1; // parameter length = the length of the string + end byte
1211  uint8_t i;
1212  for(i = 0; i < strlen(name); i++)
1213  hcibuf[i + 3] = name[i];
1214  hcibuf[i + 3] = 0x00; // End of string
1215 
1216  HCI_Command(hcibuf, 4 + strlen(name));
1217 }
1218 
1220  hcibuf[0] = 0x01; // HCI OCF = 01
1221  hcibuf[1] = 0x03 << 2; // HCI OGF = 3
1222  hcibuf[2] = 0x08;
1223  // The first 6 bytes are the default of 1FFF FFFF FFFF
1224  // However we need to set bits 48-55 for simple pairing to work
1225  hcibuf[3] = 0xFF;
1226  hcibuf[4] = 0xFF;
1227  hcibuf[5] = 0xFF;
1228  hcibuf[6] = 0xFF;
1229  hcibuf[7] = 0xFF;
1230  hcibuf[8] = 0x1F;
1231  hcibuf[9] = 0xFF; // Enable bits 48-55 used for simple pairing
1232  hcibuf[10] = 0x00;
1233 
1234  HCI_Command(hcibuf, 11);
1235 }
1236 
1238  hcibuf[0] = 0x56; // HCI OCF = 56
1239  hcibuf[1] = 0x03 << 2; // HCI OGF = 3
1240  hcibuf[2] = 1; // parameter length = 1
1241  hcibuf[3] = enable ? 1 : 0;
1242 
1243  HCI_Command(hcibuf, 4);
1244 }
1245 
1248  hcibuf[0] = 0x01;
1249  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1250  hcibuf[2] = 0x05; // Parameter Total Length = 5
1251  hcibuf[3] = 0x33; // LAP: Genera/Unlimited Inquiry Access Code (GIAC = 0x9E8B33) - see https://www.bluetooth.org/Technical/AssignedNumbers/baseband.htm
1252  hcibuf[4] = 0x8B;
1253  hcibuf[5] = 0x9E;
1254  hcibuf[6] = 0x30; // Inquiry time = 61.44 sec (maximum)
1255  hcibuf[7] = 0x0A; // 10 number of responses
1256 
1257  HCI_Command(hcibuf, 8);
1258 }
1259 
1261  hcibuf[0] = 0x02;
1262  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1263  hcibuf[2] = 0x00; // Parameter Total Length = 0
1264 
1265  HCI_Command(hcibuf, 3);
1266 }
1267 
1269  hci_connect(disc_bdaddr); // Use last discovered device
1270 }
1271 
1272 void BTD::hci_connect(uint8_t *bdaddr) {
1274  hcibuf[0] = 0x05; // HCI OCF = 5
1275  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1276  hcibuf[2] = 0x0D; // parameter Total Length = 13
1277  hcibuf[3] = bdaddr[0]; // 6 octet bdaddr (LSB)
1278  hcibuf[4] = bdaddr[1];
1279  hcibuf[5] = bdaddr[2];
1280  hcibuf[6] = bdaddr[3];
1281  hcibuf[7] = bdaddr[4];
1282  hcibuf[8] = bdaddr[5];
1283  hcibuf[9] = 0x18; // DM1 or DH1 may be used
1284  hcibuf[10] = 0xCC; // DM3, DH3, DM5, DH5 may be used
1285  hcibuf[11] = 0x01; // Page repetition mode R1
1286  hcibuf[12] = 0x00; // Reserved
1287  hcibuf[13] = 0x00; // Clock offset
1288  hcibuf[14] = 0x00; // Invalid clock offset
1289  hcibuf[15] = 0x00; // Do not allow role switch
1290 
1291  HCI_Command(hcibuf, 16);
1292 }
1293 
1295  hcibuf[0] = 0x0D; // HCI OCF = 0D
1296  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1297  hcibuf[2] = 0x17; // parameter length 23
1298  hcibuf[3] = disc_bdaddr[0]; // 6 octet bdaddr
1299  hcibuf[4] = disc_bdaddr[1];
1300  hcibuf[5] = disc_bdaddr[2];
1301  hcibuf[6] = disc_bdaddr[3];
1302  hcibuf[7] = disc_bdaddr[4];
1303  hcibuf[8] = disc_bdaddr[5];
1304  if(pairWithWii) {
1305  hcibuf[9] = 6; // Pin length is the length of the Bluetooth address
1306  if(pairWiiUsingSync) {
1307 #ifdef DEBUG_USB_HOST
1308  Notify(PSTR("\r\nPairing with Wii controller via SYNC"), 0x80);
1309 #endif
1310  for(uint8_t i = 0; i < 6; i++)
1311  hcibuf[10 + i] = my_bdaddr[i]; // The pin is the Bluetooth dongles Bluetooth address backwards
1312  } else {
1313  for(uint8_t i = 0; i < 6; i++)
1314  hcibuf[10 + i] = disc_bdaddr[i]; // The pin is the Wiimote's Bluetooth address backwards
1315  }
1316  for(uint8_t i = 16; i < 26; i++)
1317  hcibuf[i] = 0x00; // The rest should be 0
1318  } else {
1319  hcibuf[9] = strlen(btdPin); // Length of pin
1320  uint8_t i;
1321  for(i = 0; i < strlen(btdPin); i++) // The maximum size of the pin is 16
1322  hcibuf[i + 10] = btdPin[i];
1323  for(; i < 16; i++)
1324  hcibuf[i + 10] = 0x00; // The rest should be 0
1325  }
1326 
1327  HCI_Command(hcibuf, 26);
1328 }
1329 
1331  hcibuf[0] = 0x0E; // HCI OCF = 0E
1332  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1333  hcibuf[2] = 0x06; // parameter length 6
1334  hcibuf[3] = disc_bdaddr[0]; // 6 octet bdaddr
1335  hcibuf[4] = disc_bdaddr[1];
1336  hcibuf[5] = disc_bdaddr[2];
1337  hcibuf[6] = disc_bdaddr[3];
1338  hcibuf[7] = disc_bdaddr[4];
1339  hcibuf[8] = disc_bdaddr[5];
1340 
1341  HCI_Command(hcibuf, 9);
1342 }
1343 
1345  hcibuf[0] = 0x0C; // HCI OCF = 0C
1346  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1347  hcibuf[2] = 0x06; // parameter length 6
1348  hcibuf[3] = disc_bdaddr[0]; // 6 octet bdaddr
1349  hcibuf[4] = disc_bdaddr[1];
1350  hcibuf[5] = disc_bdaddr[2];
1351  hcibuf[6] = disc_bdaddr[3];
1352  hcibuf[7] = disc_bdaddr[4];
1353  hcibuf[8] = disc_bdaddr[5];
1354 
1355  HCI_Command(hcibuf, 9);
1356 }
1357 
1359  hcibuf[0] = 0x2B; // HCI OCF = 2B
1360  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1361  hcibuf[2] = 0x09;
1362  hcibuf[3] = disc_bdaddr[0]; // 6 octet bdaddr
1363  hcibuf[4] = disc_bdaddr[1];
1364  hcibuf[5] = disc_bdaddr[2];
1365  hcibuf[6] = disc_bdaddr[3];
1366  hcibuf[7] = disc_bdaddr[4];
1367  hcibuf[8] = disc_bdaddr[5];
1368  hcibuf[9] = 0x03; // NoInputNoOutput
1369  hcibuf[10] = 0x00; // OOB authentication data not present
1370  hcibuf[11] = 0x00; // MITM Protection Not Required – No Bonding. Numeric comparison with automatic accept allowed
1371 
1372  HCI_Command(hcibuf, 12);
1373 }
1374 
1376  hcibuf[0] = 0x2C; // HCI OCF = 2C
1377  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1378  hcibuf[2] = 0x06; // parameter length 6
1379  hcibuf[3] = disc_bdaddr[0]; // 6 octet bdaddr
1380  hcibuf[4] = disc_bdaddr[1];
1381  hcibuf[5] = disc_bdaddr[2];
1382  hcibuf[6] = disc_bdaddr[3];
1383  hcibuf[7] = disc_bdaddr[4];
1384  hcibuf[8] = disc_bdaddr[5];
1385 
1386  HCI_Command(hcibuf, 9);
1387 }
1388 
1390  hcibuf[0] = 0x11; // HCI OCF = 11
1391  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1392  hcibuf[2] = 0x02; // parameter length = 2
1393  hcibuf[3] = (uint8_t)(hci_handle & 0xFF); //connection handle - low byte
1394  hcibuf[4] = (uint8_t)((hci_handle >> 8) & 0x0F); //connection handle - high byte
1395 
1396  HCI_Command(hcibuf, 5);
1397 }
1398 
1399 void BTD::hci_disconnect(uint16_t handle) { // This is called by the different services
1401  hcibuf[0] = 0x06; // HCI OCF = 6
1402  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1403  hcibuf[2] = 0x03; // parameter length = 3
1404  hcibuf[3] = (uint8_t)(handle & 0xFF); //connection handle - low byte
1405  hcibuf[4] = (uint8_t)((handle >> 8) & 0x0F); //connection handle - high byte
1406  hcibuf[5] = 0x13; // reason
1407 
1408  HCI_Command(hcibuf, 6);
1409 }
1410 
1411 void BTD::hci_write_class_of_device() { // See http://bluetooth-pentest.narod.ru/software/bluetooth_class_of_device-service_generator.html
1412  hcibuf[0] = 0x24; // HCI OCF = 24
1413  hcibuf[1] = 0x03 << 2; // HCI OGF = 3
1414  hcibuf[2] = 0x03; // parameter length = 3
1415  hcibuf[3] = 0x04; // Robot
1416  hcibuf[4] = 0x08; // Toy
1417  hcibuf[5] = 0x00;
1418 
1419  HCI_Command(hcibuf, 6);
1420 }
1421 /*******************************************************************
1422  * *
1423  * HCI ACL Data Packet *
1424  * *
1425  * buf[0] buf[1] buf[2] buf[3]
1426  * 0 4 8 11 12 16 24 31 MSB
1427  * .-+-+-+-+-+-+-+-|-+-+-+-|-+-|-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-.
1428  * | HCI Handle |PB |BC | Data Total Length | HCI ACL Data Packet
1429  * .-+-+-+-+-+-+-+-|-+-+-+-|-+-|-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-.
1430  *
1431  * buf[4] buf[5] buf[6] buf[7]
1432  * 0 8 16 31 MSB
1433  * .-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-.
1434  * | Length | Channel ID | Basic L2CAP header
1435  * .-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-.
1436  *
1437  * buf[8] buf[9] buf[10] buf[11]
1438  * 0 8 16 31 MSB
1439  * .-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-.
1440  * | Code | Identifier | Length | Control frame (C-frame)
1441  * .-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-. (signaling packet format)
1442  */
1443 /************************************************************/
1444 /* L2CAP Commands */
1445 
1446 /************************************************************/
1447 void BTD::L2CAP_Command(uint16_t handle, uint8_t* data, uint8_t nbytes, uint8_t channelLow, uint8_t channelHigh) {
1448  uint8_t buf[8 + nbytes];
1449  buf[0] = (uint8_t)(handle & 0xff); // HCI handle with PB,BC flag
1450  buf[1] = (uint8_t)(((handle >> 8) & 0x0f) | 0x20);
1451  buf[2] = (uint8_t)((4 + nbytes) & 0xff); // HCI ACL total data length
1452  buf[3] = (uint8_t)((4 + nbytes) >> 8);
1453  buf[4] = (uint8_t)(nbytes & 0xff); // L2CAP header: Length
1454  buf[5] = (uint8_t)(nbytes >> 8);
1455  buf[6] = channelLow;
1456  buf[7] = channelHigh;
1457 
1458  for(uint16_t i = 0; i < nbytes; i++) // L2CAP C-frame
1459  buf[8 + i] = data[i];
1460 
1461  uint8_t rcode = pUsb->outTransfer(bAddress, epInfo[ BTD_DATAOUT_PIPE ].epAddr, (8 + nbytes), buf);
1462  if(rcode) {
1463  delay(100); // This small delay prevents it from overflowing if it fails
1464 #ifdef DEBUG_USB_HOST
1465  Notify(PSTR("\r\nError sending L2CAP message: 0x"), 0x80);
1466  D_PrintHex<uint8_t > (rcode, 0x80);
1467  Notify(PSTR(" - Channel ID: "), 0x80);
1468  D_PrintHex<uint8_t > (channelHigh, 0x80);
1469  Notify(PSTR(" "), 0x80);
1470  D_PrintHex<uint8_t > (channelLow, 0x80);
1471 #endif
1472  }
1473 }
1474 
1475 void BTD::l2cap_connection_request(uint16_t handle, uint8_t rxid, uint8_t* scid, uint16_t psm) {
1476  l2capoutbuf[0] = L2CAP_CMD_CONNECTION_REQUEST; // Code
1477  l2capoutbuf[1] = rxid; // Identifier
1478  l2capoutbuf[2] = 0x04; // Length
1479  l2capoutbuf[3] = 0x00;
1480  l2capoutbuf[4] = (uint8_t)(psm & 0xff); // PSM
1481  l2capoutbuf[5] = (uint8_t)(psm >> 8);
1482  l2capoutbuf[6] = scid[0]; // Source CID
1483  l2capoutbuf[7] = scid[1];
1484 
1485  L2CAP_Command(handle, l2capoutbuf, 8);
1486 }
1487 
1488 void BTD::l2cap_connection_response(uint16_t handle, uint8_t rxid, uint8_t* dcid, uint8_t* scid, uint8_t result) {
1489  l2capoutbuf[0] = L2CAP_CMD_CONNECTION_RESPONSE; // Code
1490  l2capoutbuf[1] = rxid; // Identifier
1491  l2capoutbuf[2] = 0x08; // Length
1492  l2capoutbuf[3] = 0x00;
1493  l2capoutbuf[4] = dcid[0]; // Destination CID
1494  l2capoutbuf[5] = dcid[1];
1495  l2capoutbuf[6] = scid[0]; // Source CID
1496  l2capoutbuf[7] = scid[1];
1497  l2capoutbuf[8] = result; // Result: Pending or Success
1498  l2capoutbuf[9] = 0x00;
1499  l2capoutbuf[10] = 0x00; // No further information
1500  l2capoutbuf[11] = 0x00;
1501 
1502  L2CAP_Command(handle, l2capoutbuf, 12);
1503 }
1504 
1505 void BTD::l2cap_config_request(uint16_t handle, uint8_t rxid, uint8_t* dcid) {
1506  l2capoutbuf[0] = L2CAP_CMD_CONFIG_REQUEST; // Code
1507  l2capoutbuf[1] = rxid; // Identifier
1508  l2capoutbuf[2] = 0x08; // Length
1509  l2capoutbuf[3] = 0x00;
1510  l2capoutbuf[4] = dcid[0]; // Destination CID
1511  l2capoutbuf[5] = dcid[1];
1512  l2capoutbuf[6] = 0x00; // Flags
1513  l2capoutbuf[7] = 0x00;
1514  l2capoutbuf[8] = 0x01; // Config Opt: type = MTU (Maximum Transmission Unit) - Hint
1515  l2capoutbuf[9] = 0x02; // Config Opt: length
1516  l2capoutbuf[10] = 0xFF; // MTU
1517  l2capoutbuf[11] = 0xFF;
1518 
1519  L2CAP_Command(handle, l2capoutbuf, 12);
1520 }
1521 
1522 void BTD::l2cap_config_response(uint16_t handle, uint8_t rxid, uint8_t* scid) {
1523  l2capoutbuf[0] = L2CAP_CMD_CONFIG_RESPONSE; // Code
1524  l2capoutbuf[1] = rxid; // Identifier
1525  l2capoutbuf[2] = 0x0A; // Length
1526  l2capoutbuf[3] = 0x00;
1527  l2capoutbuf[4] = scid[0]; // Source CID
1528  l2capoutbuf[5] = scid[1];
1529  l2capoutbuf[6] = 0x00; // Flag
1530  l2capoutbuf[7] = 0x00;
1531  l2capoutbuf[8] = 0x00; // Result
1532  l2capoutbuf[9] = 0x00;
1533  l2capoutbuf[10] = 0x01; // Config
1534  l2capoutbuf[11] = 0x02;
1535  l2capoutbuf[12] = 0xA0;
1536  l2capoutbuf[13] = 0x02;
1537 
1538  L2CAP_Command(handle, l2capoutbuf, 14);
1539 }
1540 
1541 void BTD::l2cap_disconnection_request(uint16_t handle, uint8_t rxid, uint8_t* dcid, uint8_t* scid) {
1542  l2capoutbuf[0] = L2CAP_CMD_DISCONNECT_REQUEST; // Code
1543  l2capoutbuf[1] = rxid; // Identifier
1544  l2capoutbuf[2] = 0x04; // Length
1545  l2capoutbuf[3] = 0x00;
1546  l2capoutbuf[4] = dcid[0];
1547  l2capoutbuf[5] = dcid[1];
1548  l2capoutbuf[6] = scid[0];
1549  l2capoutbuf[7] = scid[1];
1550 
1551  L2CAP_Command(handle, l2capoutbuf, 8);
1552 }
1553 
1554 void BTD::l2cap_disconnection_response(uint16_t handle, uint8_t rxid, uint8_t* dcid, uint8_t* scid) {
1555  l2capoutbuf[0] = L2CAP_CMD_DISCONNECT_RESPONSE; // Code
1556  l2capoutbuf[1] = rxid; // Identifier
1557  l2capoutbuf[2] = 0x04; // Length
1558  l2capoutbuf[3] = 0x00;
1559  l2capoutbuf[4] = dcid[0];
1560  l2capoutbuf[5] = dcid[1];
1561  l2capoutbuf[6] = scid[0];
1562  l2capoutbuf[7] = scid[1];
1563 
1564  L2CAP_Command(handle, l2capoutbuf, 8);
1565 }
1566 
1567 void BTD::l2cap_information_response(uint16_t handle, uint8_t rxid, uint8_t infoTypeLow, uint8_t infoTypeHigh) {
1568  l2capoutbuf[0] = L2CAP_CMD_INFORMATION_RESPONSE; // Code
1569  l2capoutbuf[1] = rxid; // Identifier
1570  l2capoutbuf[2] = 0x08; // Length
1571  l2capoutbuf[3] = 0x00;
1572  l2capoutbuf[4] = infoTypeLow;
1573  l2capoutbuf[5] = infoTypeHigh;
1574  l2capoutbuf[6] = 0x00; // Result = success
1575  l2capoutbuf[7] = 0x00; // Result = success
1576  l2capoutbuf[8] = 0x00;
1577  l2capoutbuf[9] = 0x00;
1578  l2capoutbuf[10] = 0x00;
1579  l2capoutbuf[11] = 0x00;
1580 
1581  L2CAP_Command(handle, l2capoutbuf, 12);
1582 }
1583 
1584 /* PS3 Commands - only set Bluetooth address is implemented in this library */
1585 void BTD::setBdaddr(uint8_t* bdaddr) {
1586  /* Set the internal Bluetooth address */
1587  uint8_t buf[8];
1588  buf[0] = 0x01;
1589  buf[1] = 0x00;
1590 
1591  for(uint8_t i = 0; i < 6; i++)
1592  buf[i + 2] = bdaddr[5 - i]; // Copy into buffer, has to be written reversed, so it is MSB first
1593 
1594  // bmRequest = Host to device (0x00) | Class (0x20) | Interface (0x01) = 0x21, bRequest = Set Report (0x09), Report ID (0xF5), Report Type (Feature 0x03), interface (0x00), datalength, datalength, data
1595  pUsb->ctrlReq(bAddress, epInfo[BTD_CONTROL_PIPE].epAddr, bmREQ_HID_OUT, HID_REQUEST_SET_REPORT, 0xF5, 0x03, 0x00, 8, 8, buf, NULL);
1596 }
1597 
1598 void BTD::setMoveBdaddr(uint8_t* bdaddr) {
1599  /* Set the internal Bluetooth address */
1600  uint8_t buf[11];
1601  buf[0] = 0x05;
1602  buf[7] = 0x10;
1603  buf[8] = 0x01;
1604  buf[9] = 0x02;
1605  buf[10] = 0x12;
1606 
1607  for(uint8_t i = 0; i < 6; i++)
1608  buf[i + 1] = bdaddr[i];
1609 
1610  // bmRequest = Host to device (0x00) | Class (0x20) | Interface (0x01) = 0x21, bRequest = Set Report (0x09), Report ID (0x05), Report Type (Feature 0x03), interface (0x00), datalength, datalength, data
1611  pUsb->ctrlReq(bAddress, epInfo[BTD_CONTROL_PIPE].epAddr, bmREQ_HID_OUT, HID_REQUEST_SET_REPORT, 0x05, 0x03, 0x00, 11, 11, buf, NULL);
1612 }
static const uint8_t BTD_DATAOUT_PIPE
Definition: BTD.h:558
+Go to the documentation of this file.
1 /* Copyright (C) 2012 Kristian Lauszus, TKJ Electronics. All rights reserved.
2 
3  This software may be distributed and modified under the terms of the GNU
4  General Public License version 2 (GPL2) as published by the Free Software
5  Foundation and appearing in the file GPL2.TXT included in the packaging of
6  this file. Please note that GPL2 Section 2[b] requires that all works based
7  on this software must also be made publicly available under the terms of
8  the GPL2 ("Copyleft").
9 
10  Contact information
11  -------------------
12 
13  Kristian Lauszus, TKJ Electronics
14  Web : http://www.tkjelectronics.com
15  e-mail : kristianl@tkjelectronics.com
16  */
17 
18 #include "BTD.h"
19 // To enable serial debugging see "settings.h"
20 //#define EXTRADEBUG // Uncomment to get even more debugging data
21 
22 const uint8_t BTD::BTD_CONTROL_PIPE = 0;
23 const uint8_t BTD::BTD_EVENT_PIPE = 1;
24 const uint8_t BTD::BTD_DATAIN_PIPE = 2;
25 const uint8_t BTD::BTD_DATAOUT_PIPE = 3;
26 
28 connectToWii(false),
29 pairWithWii(false),
30 connectToHIDDevice(false),
31 pairWithHIDDevice(false),
32 useSimplePairing(false),
33 pUsb(p), // Pointer to USB class instance - mandatory
34 bAddress(0), // Device address - mandatory
35 bNumEP(1), // If config descriptor needs to be parsed
36 qNextPollTime(0), // Reset NextPollTime
37 pollInterval(0),
38 simple_pairing_supported(false),
39 bPollEnable(false) // Don't start polling before dongle is connected
40 {
41  for(uint8_t i = 0; i < BTD_NUM_SERVICES; i++)
42  btService[i] = NULL;
43 
44  Initialize(); // Set all variables, endpoint structs etc. to default values
45 
46  if(pUsb) // Register in USB subsystem
47  pUsb->RegisterDeviceClass(this); // Set devConfig[] entry
48 }
49 
50 uint8_t BTD::ConfigureDevice(uint8_t parent, uint8_t port, bool lowspeed) {
51  const uint8_t constBufSize = sizeof (USB_DEVICE_DESCRIPTOR);
52  uint8_t buf[constBufSize];
53  USB_DEVICE_DESCRIPTOR * udd = reinterpret_cast<USB_DEVICE_DESCRIPTOR*>(buf);
54  uint8_t rcode;
55  UsbDevice *p = NULL;
56  EpInfo *oldep_ptr = NULL;
57 
58  Initialize(); // Set all variables, endpoint structs etc. to default values
59 
60  AddressPool &addrPool = pUsb->GetAddressPool(); // Get memory address of USB device address pool
61 #ifdef EXTRADEBUG
62  Notify(PSTR("\r\nBTD ConfigureDevice"), 0x80);
63 #endif
64 
65  if(bAddress) { // Check if address has already been assigned to an instance
66 #ifdef DEBUG_USB_HOST
67  Notify(PSTR("\r\nAddress in use"), 0x80);
68 #endif
70  }
71 
72  p = addrPool.GetUsbDevicePtr(0); // Get pointer to pseudo device with address 0 assigned
73  if(!p) {
74 #ifdef DEBUG_USB_HOST
75  Notify(PSTR("\r\nAddress not found"), 0x80);
76 #endif
78  }
79 
80  if(!p->epinfo) {
81 #ifdef DEBUG_USB_HOST
82  Notify(PSTR("\r\nepinfo is null"), 0x80);
83 #endif
85  }
86 
87  oldep_ptr = p->epinfo; // Save old pointer to EP_RECORD of address 0
88  p->epinfo = epInfo; // Temporary assign new pointer to epInfo to p->epinfo in order to avoid toggle inconsistence
89  p->lowspeed = lowspeed;
90  rcode = pUsb->getDevDescr(0, 0, constBufSize, (uint8_t*)buf); // Get device descriptor - addr, ep, nbytes, data
91 
92  p->epinfo = oldep_ptr; // Restore p->epinfo
93 
94  if(rcode)
95  goto FailGetDevDescr;
96 
97  bAddress = addrPool.AllocAddress(parent, false, port); // Allocate new address according to device class
98 
99  if(!bAddress) {
100 #ifdef DEBUG_USB_HOST
101  Notify(PSTR("\r\nOut of address space"), 0x80);
102 #endif
104  }
105 
106  if (udd->bDeviceClass == 0x09) // Some dongles have an USB hub inside
107  goto FailHub;
108 
109  epInfo[0].maxPktSize = udd->bMaxPacketSize0; // Extract Max Packet Size from device descriptor
110  epInfo[1].epAddr = udd->bNumConfigurations; // Steal and abuse from epInfo structure to save memory
111 
112  VID = udd->idVendor;
113  PID = udd->idProduct;
114 
116 
117 FailHub:
118 #ifdef DEBUG_USB_HOST
119  Notify(PSTR("\r\nPlease create a hub instance in your code: \"USBHub Hub1(&Usb);\""), 0x80);
120 #endif
121  pUsb->setAddr(bAddress, 0, 0); // Reset address
123  Release();
124  return rcode;
125 
126 FailGetDevDescr:
127 #ifdef DEBUG_USB_HOST
128  NotifyFailGetDevDescr(rcode);
129 #endif
130  if(rcode != hrJERR)
132  Release();
133  return rcode;
134 };
135 
136 uint8_t BTD::Init(uint8_t parent __attribute__((unused)), uint8_t port __attribute__((unused)), bool lowspeed) {
137  uint8_t rcode;
138  uint8_t num_of_conf = epInfo[1].epAddr; // Number of configurations
139  epInfo[1].epAddr = 0;
140 
141  AddressPool &addrPool = pUsb->GetAddressPool();
142 #ifdef EXTRADEBUG
143  Notify(PSTR("\r\nBTD Init"), 0x80);
144 #endif
145  UsbDevice *p = addrPool.GetUsbDevicePtr(bAddress); // Get pointer to assigned address record
146 
147  if(!p) {
148 #ifdef DEBUG_USB_HOST
149  Notify(PSTR("\r\nAddress not found"), 0x80);
150 #endif
152  }
153 
154  delay(300); // Assign new address to the device
155 
156  rcode = pUsb->setAddr(0, 0, bAddress); // Assign new address to the device
157  if(rcode) {
158 #ifdef DEBUG_USB_HOST
159  Notify(PSTR("\r\nsetAddr: "), 0x80);
160  D_PrintHex<uint8_t > (rcode, 0x80);
161 #endif
162  p->lowspeed = false;
163  goto Fail;
164  }
165 #ifdef EXTRADEBUG
166  Notify(PSTR("\r\nAddr: "), 0x80);
167  D_PrintHex<uint8_t > (bAddress, 0x80);
168 #endif
169 
170  p->lowspeed = false;
171 
172  p = addrPool.GetUsbDevicePtr(bAddress); // Get pointer to assigned address record
173  if(!p) {
174 #ifdef DEBUG_USB_HOST
175  Notify(PSTR("\r\nAddress not found"), 0x80);
176 #endif
178  }
179 
180  p->lowspeed = lowspeed;
181 
182  rcode = pUsb->setEpInfoEntry(bAddress, 1, epInfo); // Assign epInfo to epinfo pointer - only EP0 is known
183  if(rcode)
184  goto FailSetDevTblEntry;
185 
186  if(VID == PS3_VID && (PID == PS3_PID || PID == PS3NAVIGATION_PID || PID == PS3MOVE_PID)) {
187  delay(100);
188  rcode = pUsb->setConf(bAddress, epInfo[ BTD_CONTROL_PIPE ].epAddr, 1); // We only need the Control endpoint, so we don't have to initialize the other endpoints of device
189  if(rcode)
190  goto FailSetConfDescr;
191 
192 #ifdef DEBUG_USB_HOST
193  if(PID == PS3_PID || PID == PS3NAVIGATION_PID) {
194  if(PID == PS3_PID)
195  Notify(PSTR("\r\nDualshock 3 Controller Connected"), 0x80);
196  else // It must be a navigation controller
197  Notify(PSTR("\r\nNavigation Controller Connected"), 0x80);
198  } else // It must be a Motion controller
199  Notify(PSTR("\r\nMotion Controller Connected"), 0x80);
200 #endif
201 
202  if(my_bdaddr[0] == 0x00 && my_bdaddr[1] == 0x00 && my_bdaddr[2] == 0x00 && my_bdaddr[3] == 0x00 && my_bdaddr[4] == 0x00 && my_bdaddr[5] == 0x00) {
203 #ifdef DEBUG_USB_HOST
204  Notify(PSTR("\r\nPlease plug in the dongle before trying to pair with the PS3 Controller\r\nor set the Bluetooth address in the constructor of the PS3BT class"), 0x80);
205 #endif
206  } else {
207  if(PID == PS3_PID || PID == PS3NAVIGATION_PID)
208  setBdaddr(my_bdaddr); // Set internal Bluetooth address
209  else
210  setMoveBdaddr(my_bdaddr); // Set internal Bluetooth address
211 #ifdef DEBUG_USB_HOST
212  Notify(PSTR("\r\nBluetooth Address was set to: "), 0x80);
213  for(int8_t i = 5; i > 0; i--) {
214  D_PrintHex<uint8_t > (my_bdaddr[i], 0x80);
215  Notify(PSTR(":"), 0x80);
216  }
217  D_PrintHex<uint8_t > (my_bdaddr[0], 0x80);
218 #endif
219  }
220 
221  pUsb->setConf(bAddress, epInfo[ BTD_CONTROL_PIPE ].epAddr, 0); // Reset configuration value
222  pUsb->setAddr(bAddress, 0, 0); // Reset address
223  Release(); // Release device
225  } else {
226  // Check if attached device is a Bluetooth dongle and fill endpoint data structure
227  // First interface in the configuration must have Bluetooth assigned Class/Subclass/Protocol
228  // And 3 endpoints - interrupt-IN, bulk-IN, bulk-OUT, not necessarily in this order
229  for(uint8_t i = 0; i < num_of_conf; i++) {
230  if((VID == IOGEAR_GBU521_VID && PID == IOGEAR_GBU521_PID) || (VID == BELKIN_F8T065BF_VID && PID == BELKIN_F8T065BF_PID)) {
231  ConfigDescParser<USB_CLASS_VENDOR_SPECIFIC, WI_SUBCLASS_RF, WI_PROTOCOL_BT, CP_MASK_COMPARE_ALL> confDescrParser(this); // Workaround issue with some dongles
232  rcode = pUsb->getConfDescr(bAddress, 0, i, &confDescrParser);
233  } else {
234  ConfigDescParser<USB_CLASS_WIRELESS_CTRL, WI_SUBCLASS_RF, WI_PROTOCOL_BT, CP_MASK_COMPARE_ALL> confDescrParser(this); // Set class id according to the specification
235  rcode = pUsb->getConfDescr(bAddress, 0, i, &confDescrParser);
236  }
237  if(rcode) // Check error code
238  goto FailGetConfDescr;
239  if(bNumEP >= BTD_MAX_ENDPOINTS) // All endpoints extracted
240  break;
241  }
242 
244  goto FailUnknownDevice;
245 
246  // Assign epInfo to epinfo pointer - this time all 3 endpoins
247  rcode = pUsb->setEpInfoEntry(bAddress, bNumEP, epInfo);
248  if(rcode)
249  goto FailSetDevTblEntry;
250 
251  // Set Configuration Value
252  rcode = pUsb->setConf(bAddress, epInfo[ BTD_CONTROL_PIPE ].epAddr, bConfNum);
253  if(rcode)
254  goto FailSetConfDescr;
255 
256  hci_num_reset_loops = 100; // only loop 100 times before trying to send the hci reset command
257  hci_counter = 0;
258  hci_state = HCI_INIT_STATE;
259  waitingForConnection = false;
260  bPollEnable = true;
261 
262 #ifdef DEBUG_USB_HOST
263  Notify(PSTR("\r\nBluetooth Dongle Initialized"), 0x80);
264 #endif
265  }
266  return 0; // Successful configuration
267 
268  /* Diagnostic messages */
269 FailSetDevTblEntry:
270 #ifdef DEBUG_USB_HOST
272  goto Fail;
273 #endif
274 
275 FailGetConfDescr:
276 #ifdef DEBUG_USB_HOST
278  goto Fail;
279 #endif
280 
281 FailSetConfDescr:
282 #ifdef DEBUG_USB_HOST
284 #endif
285  goto Fail;
286 
287 FailUnknownDevice:
288 #ifdef DEBUG_USB_HOST
289  NotifyFailUnknownDevice(VID, PID);
290 #endif
291  pUsb->setAddr(bAddress, 0, 0); // Reset address
293 Fail:
294 #ifdef DEBUG_USB_HOST
295  Notify(PSTR("\r\nBTD Init Failed, error code: "), 0x80);
296  NotifyFail(rcode);
297 #endif
298  Release();
299  return rcode;
300 }
301 
302 void BTD::Initialize() {
303  uint8_t i;
304  for(i = 0; i < BTD_MAX_ENDPOINTS; i++) {
305  epInfo[i].epAddr = 0;
306  epInfo[i].maxPktSize = (i) ? 0 : 8;
307  epInfo[i].bmSndToggle = 0;
308  epInfo[i].bmRcvToggle = 0;
310  }
311  for(i = 0; i < BTD_NUM_SERVICES; i++) {
312  if(btService[i])
313  btService[i]->Reset(); // Reset all Bluetooth services
314  }
315 
316  connectToWii = false;
317  incomingWii = false;
318  connectToHIDDevice = false;
319  incomingHIDDevice = false;
320  incomingPS4 = false;
321  bAddress = 0; // Clear device address
322  bNumEP = 1; // Must have to be reset to 1
323  qNextPollTime = 0; // Reset next poll time
324  pollInterval = 0;
325  bPollEnable = false; // Don't start polling before dongle is connected
326  simple_pairing_supported = false;
327 }
328 
329 /* Extracts interrupt-IN, bulk-IN, bulk-OUT endpoint information from config descriptor */
330 void BTD::EndpointXtract(uint8_t conf, uint8_t iface __attribute__((unused)), uint8_t alt, uint8_t proto __attribute__((unused)), const USB_ENDPOINT_DESCRIPTOR *pep) {
331  //ErrorMessage<uint8_t>(PSTR("Conf.Val"),conf);
332  //ErrorMessage<uint8_t>(PSTR("Iface Num"),iface);
333  //ErrorMessage<uint8_t>(PSTR("Alt.Set"),alt);
334 
335  if(alt) // Wrong interface - by BT spec, no alt setting
336  return;
337 
338  bConfNum = conf;
339  uint8_t index;
340 
341  if((pep->bmAttributes & bmUSB_TRANSFER_TYPE) == USB_TRANSFER_TYPE_INTERRUPT && (pep->bEndpointAddress & 0x80) == 0x80) { // Interrupt In endpoint found
342  index = BTD_EVENT_PIPE;
344  } else if((pep->bmAttributes & bmUSB_TRANSFER_TYPE) == USB_TRANSFER_TYPE_BULK) // Bulk endpoint found
345  index = ((pep->bEndpointAddress & 0x80) == 0x80) ? BTD_DATAIN_PIPE : BTD_DATAOUT_PIPE;
346  else
347  return;
348 
349  // Fill the rest of endpoint data structure
350  epInfo[index].epAddr = (pep->bEndpointAddress & 0x0F);
351  epInfo[index].maxPktSize = (uint8_t)pep->wMaxPacketSize;
352 #ifdef EXTRADEBUG
354 #endif
355  if(pollInterval < pep->bInterval) // Set the polling interval as the largest polling interval obtained from endpoints
356  pollInterval = pep->bInterval;
357  bNumEP++;
358 }
359 
360 void BTD::PrintEndpointDescriptor(const USB_ENDPOINT_DESCRIPTOR* ep_ptr __attribute__((unused))) {
361 #ifdef EXTRADEBUG
362  Notify(PSTR("\r\nEndpoint descriptor:"), 0x80);
363  Notify(PSTR("\r\nLength:\t\t"), 0x80);
364  D_PrintHex<uint8_t > (ep_ptr->bLength, 0x80);
365  Notify(PSTR("\r\nType:\t\t"), 0x80);
366  D_PrintHex<uint8_t > (ep_ptr->bDescriptorType, 0x80);
367  Notify(PSTR("\r\nAddress:\t"), 0x80);
368  D_PrintHex<uint8_t > (ep_ptr->bEndpointAddress, 0x80);
369  Notify(PSTR("\r\nAttributes:\t"), 0x80);
370  D_PrintHex<uint8_t > (ep_ptr->bmAttributes, 0x80);
371  Notify(PSTR("\r\nMaxPktSize:\t"), 0x80);
372  D_PrintHex<uint16_t > (ep_ptr->wMaxPacketSize, 0x80);
373  Notify(PSTR("\r\nPoll Intrv:\t"), 0x80);
374  D_PrintHex<uint8_t > (ep_ptr->bInterval, 0x80);
375 #endif
376 }
377 
378 /* Performs a cleanup after failed Init() attempt */
379 uint8_t BTD::Release() {
380  Initialize(); // Set all variables, endpoint structs etc. to default values
382  return 0;
383 }
384 
385 uint8_t BTD::Poll() {
386  if(!bPollEnable)
387  return 0;
388  if((int32_t)((uint32_t)millis() - qNextPollTime) >= 0L) { // Don't poll if shorter than polling interval
389  qNextPollTime = (uint32_t)millis() + pollInterval; // Set new poll time
390  HCI_event_task(); // Poll the HCI event pipe
391  HCI_task(); // HCI state machine
392  ACL_event_task(); // Poll the ACL input pipe too
393  }
394  return 0;
395 }
396 
398  for(uint8_t i = 0; i < BTD_NUM_SERVICES; i++)
399  if(btService[i])
400  btService[i]->disconnect();
401 };
402 
403 void BTD::HCI_event_task() {
404  uint16_t length = BULK_MAXPKTSIZE; // Request more than 16 bytes anyway, the inTransfer routine will take care of this
405  uint8_t rcode = pUsb->inTransfer(bAddress, epInfo[ BTD_EVENT_PIPE ].epAddr, &length, hcibuf, pollInterval); // Input on endpoint 1
406 
407  if(!rcode || rcode == hrNAK) { // Check for errors
408  switch(hcibuf[0]) { // Switch on event type
409  case EV_COMMAND_COMPLETE:
410  if(!hcibuf[5]) { // Check if command succeeded
411  hci_set_flag(HCI_FLAG_CMD_COMPLETE); // Set command complete flag
412  if((hcibuf[3] == 0x01) && (hcibuf[4] == 0x10)) { // Parameters from read local version information
413  hci_version = hcibuf[6]; // Used to check if it supports 2.0+EDR - see http://www.bluetooth.org/Technical/AssignedNumbers/hci.htm
414 #ifdef EXTRADEBUG
416  Notify(PSTR("\r\nHCI version: "), 0x80);
417  D_PrintHex<uint8_t > (hci_version, 0x80);
418  }
419 #endif
421  } else if((hcibuf[3] == 0x04) && (hcibuf[4] == 0x10)) { // Parameters from read local extended features
423 #ifdef EXTRADEBUG
424  Notify(PSTR("\r\nPage number: "), 0x80);
425  D_PrintHex<uint8_t > (hcibuf[6], 0x80);
426  Notify(PSTR("\r\nMaximum page number: "), 0x80);
427  D_PrintHex<uint8_t > (hcibuf[7], 0x80);
428  Notify(PSTR("\r\nExtended LMP features:"), 0x80);
429  for(uint8_t i = 0; i < 8; i++) {
430  Notify(PSTR(" "), 0x80);
431  D_PrintHex<uint8_t > (hcibuf[8 + i], 0x80);
432  }
433 #endif
434  if(hcibuf[6] == 0) { // Page 0
435 #ifdef DEBUG_USB_HOST
436  Notify(PSTR("\r\nDongle "), 0x80);
437 #endif
438  if(hcibuf[8 + 6] & (1U << 3)) {
439  simple_pairing_supported = true;
440 #ifdef DEBUG_USB_HOST
441  Notify(PSTR("supports"), 0x80);
442 #endif
443  } else {
444  simple_pairing_supported = false;
445 #ifdef DEBUG_USB_HOST
446  Notify(PSTR("does NOT support"), 0x80);
447 #endif
448  }
449 #ifdef DEBUG_USB_HOST
450  Notify(PSTR(" secure simple pairing (controller support)"), 0x80);
451 #endif
452  } else if(hcibuf[6] == 1) { // Page 1
453 #ifdef DEBUG_USB_HOST
454  Notify(PSTR("\r\nDongle "), 0x80);
455  if(hcibuf[8 + 0] & (1U << 0))
456  Notify(PSTR("supports"), 0x80);
457  else
458  Notify(PSTR("does NOT support"), 0x80);
459  Notify(PSTR(" secure simple pairing (host support)"), 0x80);
460 #endif
461  }
462  }
463 
465  } else if((hcibuf[3] == 0x09) && (hcibuf[4] == 0x10)) { // Parameters from read local bluetooth address
466  for(uint8_t i = 0; i < 6; i++)
467  my_bdaddr[i] = hcibuf[6 + i];
469  }
470  }
471  break;
472 
473  case EV_COMMAND_STATUS:
474  if(hcibuf[2]) { // Show status on serial if not OK
475 #ifdef DEBUG_USB_HOST
476  Notify(PSTR("\r\nHCI Command Failed: "), 0x80);
477  D_PrintHex<uint8_t > (hcibuf[2], 0x80);
478  Notify(PSTR("\r\nNum HCI Command Packets: "), 0x80);
479  D_PrintHex<uint8_t > (hcibuf[3], 0x80);
480  Notify(PSTR("\r\nCommand Opcode: "), 0x80);
481  D_PrintHex<uint8_t > (hcibuf[4], 0x80);
482  Notify(PSTR(" "), 0x80);
483  D_PrintHex<uint8_t > (hcibuf[5], 0x80);
484 #endif
485  }
486  break;
487 
488  case EV_INQUIRY_COMPLETE:
489  if(inquiry_counter >= 5 && (pairWithWii || pairWithHIDDevice)) {
490  inquiry_counter = 0;
491 #ifdef DEBUG_USB_HOST
492  if(pairWithWii)
493  Notify(PSTR("\r\nCouldn't find Wiimote"), 0x80);
494  else
495  Notify(PSTR("\r\nCouldn't find HID device"), 0x80);
496 #endif
497  connectToWii = false;
498  pairWithWii = false;
499  connectToHIDDevice = false;
500  pairWithHIDDevice = false;
501  hci_state = HCI_SCANNING_STATE;
502  }
503  inquiry_counter++;
504  break;
505 
506  case EV_INQUIRY_RESULT:
507  if(hcibuf[2]) { // Check that there is more than zero responses
508 #ifdef EXTRADEBUG
509  Notify(PSTR("\r\nNumber of responses: "), 0x80);
510  Notify(hcibuf[2], 0x80);
511 #endif
512  for(uint8_t i = 0; i < hcibuf[2]; i++) {
513  uint8_t offset = 8 * hcibuf[2] + 3 * i;
514 
515  for(uint8_t j = 0; j < 3; j++)
516  classOfDevice[j] = hcibuf[j + 4 + offset];
517 
518 #ifdef EXTRADEBUG
519  Notify(PSTR("\r\nClass of device: "), 0x80);
520  D_PrintHex<uint8_t > (classOfDevice[2], 0x80);
521  Notify(PSTR(" "), 0x80);
522  D_PrintHex<uint8_t > (classOfDevice[1], 0x80);
523  Notify(PSTR(" "), 0x80);
524  D_PrintHex<uint8_t > (classOfDevice[0], 0x80);
525 #endif
526 
527  if(pairWithWii && classOfDevice[2] == 0x00 && (classOfDevice[1] == 0x05) && (classOfDevice[0] & 0x0C)) { // See http://wiibrew.org/wiki/Wiimote#SDP_information
528  checkRemoteName = true; // Check remote name to distinguish between the different controllers
529 
530  for(uint8_t j = 0; j < 6; j++)
531  disc_bdaddr[j] = hcibuf[j + 3 + 6 * i];
532 
534  break;
535  } else if(pairWithHIDDevice && (classOfDevice[1] & 0x0F) == 0x05 && (classOfDevice[0] & 0xC8)) { // Check if it is a mouse, keyboard or a gamepad - see: http://bluetooth-pentest.narod.ru/software/bluetooth_class_of_device-service_generator.html
536 #ifdef DEBUG_USB_HOST
537  checkRemoteName = true; // Used to print name in the serial monitor if serial debugging is enabled
538 
539  if(classOfDevice[0] & 0x80)
540  Notify(PSTR("\r\nMouse found"), 0x80);
541  if(classOfDevice[0] & 0x40)
542  Notify(PSTR("\r\nKeyboard found"), 0x80);
543  if(classOfDevice[0] & 0x08)
544  Notify(PSTR("\r\nGamepad found"), 0x80);
545 #endif
546  for(uint8_t j = 0; j < 6; j++)
547  disc_bdaddr[j] = hcibuf[j + 3 + 6 * i];
548 
550  break;
551  }
552  }
553  }
554  break;
555 
556  case EV_CONNECT_COMPLETE:
558  if(!hcibuf[2]) { // Check if connected OK
559 #ifdef EXTRADEBUG
560  Notify(PSTR("\r\nConnection established"), 0x80);
561 #endif
562  hci_handle = hcibuf[3] | ((hcibuf[4] & 0x0F) << 8); // Store the handle for the ACL connection
563  hci_set_flag(HCI_FLAG_CONNECT_COMPLETE); // Set connection complete flag
564  } else {
565  hci_state = HCI_CHECK_DEVICE_SERVICE;
566 #ifdef DEBUG_USB_HOST
567  Notify(PSTR("\r\nConnection Failed: "), 0x80);
568  D_PrintHex<uint8_t > (hcibuf[2], 0x80);
569 #endif
570  }
571  break;
572 
574  if(!hcibuf[2]) { // Check if disconnected OK
575  hci_set_flag(HCI_FLAG_DISCONNECT_COMPLETE); // Set disconnect command complete flag
576  hci_clear_flag(HCI_FLAG_CONNECT_COMPLETE); // Clear connection complete flag
577  }
578  break;
579 
581  if(!hcibuf[2]) { // Check if reading is OK
582  for(uint8_t i = 0; i < min(sizeof (remote_name), sizeof (hcibuf) - 9); i++) {
583  remote_name[i] = hcibuf[9 + i];
584  if(remote_name[i] == '\0') // End of string
585  break;
586  }
587  // TODO: Always set '\0' in remote name!
589  }
590  break;
591 
592  case EV_INCOMING_CONNECT:
593  for(uint8_t i = 0; i < 6; i++)
594  disc_bdaddr[i] = hcibuf[i + 2];
595 
596  for(uint8_t i = 0; i < 3; i++)
597  classOfDevice[i] = hcibuf[i + 8];
598 
599  if((classOfDevice[1] & 0x0F) == 0x05 && (classOfDevice[0] & 0xC8)) { // Check if it is a mouse, keyboard or a gamepad
600 #ifdef DEBUG_USB_HOST
601  if(classOfDevice[0] & 0x80)
602  Notify(PSTR("\r\nMouse is connecting"), 0x80);
603  if(classOfDevice[0] & 0x40)
604  Notify(PSTR("\r\nKeyboard is connecting"), 0x80);
605  if(classOfDevice[0] & 0x08)
606  Notify(PSTR("\r\nGamepad is connecting"), 0x80);
607 #endif
608  incomingHIDDevice = true;
609  }
610 
611 #ifdef EXTRADEBUG
612  Notify(PSTR("\r\nClass of device: "), 0x80);
613  D_PrintHex<uint8_t > (classOfDevice[2], 0x80);
614  Notify(PSTR(" "), 0x80);
615  D_PrintHex<uint8_t > (classOfDevice[1], 0x80);
616  Notify(PSTR(" "), 0x80);
617  D_PrintHex<uint8_t > (classOfDevice[0], 0x80);
618 #endif
620  break;
621 
622  case EV_PIN_CODE_REQUEST:
623  if(pairWithWii) {
624 #ifdef DEBUG_USB_HOST
625  Notify(PSTR("\r\nPairing with Wiimote"), 0x80);
626 #endif
628  } else if(btdPin != NULL) {
629 #ifdef DEBUG_USB_HOST
630  Notify(PSTR("\r\nBluetooth pin is set too: "), 0x80);
631  NotifyStr(btdPin, 0x80);
632 #endif
634  } else {
635 #ifdef DEBUG_USB_HOST
636  Notify(PSTR("\r\nNo pin was set"), 0x80);
637 #endif
639  }
640  break;
641 
642  case EV_LINK_KEY_REQUEST:
643 #ifdef DEBUG_USB_HOST
644  Notify(PSTR("\r\nReceived Key Request"), 0x80);
645 #endif
647  break;
648 
650  if(!hcibuf[2]) { // Check if pairing was successful
651  if(pairWithWii && !connectToWii) {
652 #ifdef DEBUG_USB_HOST
653  Notify(PSTR("\r\nPairing successful with Wiimote"), 0x80);
654 #endif
655  connectToWii = true; // Used to indicate to the Wii service, that it should connect to this device
656  } else if(pairWithHIDDevice && !connectToHIDDevice) {
657 #ifdef DEBUG_USB_HOST
658  Notify(PSTR("\r\nPairing successful with HID device"), 0x80);
659 #endif
660  connectToHIDDevice = true; // Used to indicate to the BTHID service, that it should connect to this device
661  } else {
662 #ifdef EXTRADEBUG
663  Notify(PSTR("\r\nPairing was successful"), 0x80);
664 #endif
665  }
666  } else {
667 #ifdef DEBUG_USB_HOST
668  Notify(PSTR("\r\nPairing Failed: "), 0x80);
669  D_PrintHex<uint8_t > (hcibuf[2], 0x80);
670 #endif
672  hci_state = HCI_DISCONNECT_STATE;
673  }
674  break;
675 
677 #ifdef DEBUG_USB_HOST
678  Notify(PSTR("\r\nReceived IO Capability Request"), 0x80);
679 #endif
681  break;
682 
684 #ifdef EXTRADEBUG
685  Notify(PSTR("\r\nReceived IO Capability Response: "), 0x80);
686  Notify(PSTR("\r\nIO capability: "), 0x80);
687  D_PrintHex<uint8_t > (hcibuf[8], 0x80);
688  Notify(PSTR("\r\nOOB data present: "), 0x80);
689  D_PrintHex<uint8_t > (hcibuf[9], 0x80);
690  Notify(PSTR("\r\nAuthentication request: "), 0x80);
691  D_PrintHex<uint8_t > (hcibuf[10], 0x80);
692 #endif
693  break;
694 
696 #ifdef DEBUG_USB_HOST
697  Notify(PSTR("\r\nUser confirmation Request"), 0x80);
698 #ifdef EXTRADEBUG
699  Notify(PSTR(": \r\nNumeric value: "), 0x80);
700  for(uint8_t i = 0; i < 4; i++) {
701  Notify(PSTR(" "), 0x80);
702  D_PrintHex<uint8_t > (hcibuf[8 + i], 0x80);
703  }
704 #endif
705 #endif
706  // Simply confirm the connection, as the host has no "NoInputNoOutput" capabilities
708  break;
709 
711 #ifdef EXTRADEBUG
712  if(!hcibuf[2]) { // Check if connected OK
713  Notify(PSTR("\r\nSimple Pairing succeeded"), 0x80);
714  } else {
715  Notify(PSTR("\r\nSimple Pairing failed: "), 0x80);
716  D_PrintHex<uint8_t > (hcibuf[2], 0x80);
717  }
718 #endif
719  break;
720 
721  /* We will just ignore the following events */
722  case EV_MAX_SLOTS_CHANGE:
723  case EV_NUM_COMPLETE_PKT:
724  break;
725  case EV_ROLE_CHANGED:
727  case EV_LOOPBACK_COMMAND:
734 #ifdef EXTRADEBUG
735  if(hcibuf[0] != 0x00) {
736  Notify(PSTR("\r\nIgnore HCI Event: "), 0x80);
737  D_PrintHex<uint8_t > (hcibuf[0], 0x80);
738  }
739 #endif
740  break;
741 #ifdef EXTRADEBUG
742  default:
743  if(hcibuf[0] != 0x00) {
744  Notify(PSTR("\r\nUnmanaged HCI Event: "), 0x80);
745  D_PrintHex<uint8_t > (hcibuf[0], 0x80);
746  Notify(PSTR(", data: "), 0x80);
747  for(uint16_t i = 0; i < hcibuf[1]; i++) {
748  D_PrintHex<uint8_t > (hcibuf[2 + i], 0x80);
749  Notify(PSTR(" "), 0x80);
750  }
751  }
752  break;
753 #endif
754  } // Switch
755  }
756 #ifdef EXTRADEBUG
757  else {
758  Notify(PSTR("\r\nHCI event error: "), 0x80);
759  D_PrintHex<uint8_t > (rcode, 0x80);
760  }
761 #endif
762 }
763 
764 /* Poll Bluetooth and print result */
765 void BTD::HCI_task() {
766  switch(hci_state) {
767  case HCI_INIT_STATE:
768  hci_counter++;
769  if(hci_counter > hci_num_reset_loops) { // wait until we have looped x times to clear any old events
770  hci_reset();
771  hci_state = HCI_RESET_STATE;
772  hci_counter = 0;
773  }
774  break;
775 
776  case HCI_RESET_STATE:
777  hci_counter++;
779  hci_counter = 0;
780 #ifdef DEBUG_USB_HOST
781  Notify(PSTR("\r\nHCI Reset complete"), 0x80);
782 #endif
783  hci_state = HCI_CLASS_STATE;
785  } else if(hci_counter > hci_num_reset_loops) {
786  hci_num_reset_loops *= 10;
787  if(hci_num_reset_loops > 2000)
788  hci_num_reset_loops = 2000;
789 #ifdef DEBUG_USB_HOST
790  Notify(PSTR("\r\nNo response to HCI Reset"), 0x80);
791 #endif
792  hci_state = HCI_INIT_STATE;
793  hci_counter = 0;
794  }
795  break;
796 
797  case HCI_CLASS_STATE:
799 #ifdef DEBUG_USB_HOST
800  Notify(PSTR("\r\nWrite class of device"), 0x80);
801 #endif
802  hci_state = HCI_BDADDR_STATE;
803  hci_read_bdaddr();
804  }
805  break;
806 
807  case HCI_BDADDR_STATE:
809 #ifdef DEBUG_USB_HOST
810  Notify(PSTR("\r\nLocal Bluetooth Address: "), 0x80);
811  for(int8_t i = 5; i > 0; i--) {
812  D_PrintHex<uint8_t > (my_bdaddr[i], 0x80);
813  Notify(PSTR(":"), 0x80);
814  }
815  D_PrintHex<uint8_t > (my_bdaddr[0], 0x80);
816 #endif
818  hci_state = HCI_LOCAL_VERSION_STATE;
819  }
820  break;
821 
822  case HCI_LOCAL_VERSION_STATE: // The local version is used by the PS3BT class
824  if(btdName != NULL) {
826  hci_state = HCI_WRITE_NAME_STATE;
827  } else if(useSimplePairing) {
828  hci_read_local_extended_features(0); // "Requests the normal LMP features as returned by Read_Local_Supported_Features"
829  //hci_read_local_extended_features(1); // Read page 1
831  } else
832  hci_state = HCI_CHECK_DEVICE_SERVICE;
833  }
834  break;
835 
838 #ifdef DEBUG_USB_HOST
839  Notify(PSTR("\r\nThe name was set to: "), 0x80);
840  NotifyStr(btdName, 0x80);
841 #endif
842  if(useSimplePairing) {
843  hci_read_local_extended_features(0); // "Requests the normal LMP features as returned by Read_Local_Supported_Features"
844  //hci_read_local_extended_features(1); // Read page 1
846  } else
847  hci_state = HCI_CHECK_DEVICE_SERVICE;
848  }
849  break;
850 
853  if(simple_pairing_supported) {
855  hci_state = HCI_WRITE_SIMPLE_PAIRING_STATE;
856  } else
857  hci_state = HCI_CHECK_DEVICE_SERVICE;
858  }
859  break;
860 
863 #ifdef DEBUG_USB_HOST
864  Notify(PSTR("\r\nSimple pairing was enabled"), 0x80);
865 #endif
867  hci_state = HCI_SET_EVENT_MASK_STATE;
868  }
869  break;
870 
873 #ifdef DEBUG_USB_HOST
874  Notify(PSTR("\r\nSet event mask completed"), 0x80);
875 #endif
876  hci_state = HCI_CHECK_DEVICE_SERVICE;
877  }
878  break;
879 
881  if(pairWithHIDDevice || pairWithWii) { // Check if it should try to connect to a Wiimote
882 #ifdef DEBUG_USB_HOST
883  if(pairWithWii)
884  Notify(PSTR("\r\nStarting inquiry\r\nPress 1 & 2 on the Wiimote\r\nOr press the SYNC button if you are using a Wii U Pro Controller or a Wii Balance Board"), 0x80);
885  else
886  Notify(PSTR("\r\nPlease enable discovery of your device"), 0x80);
887 #endif
888  hci_inquiry();
889  hci_state = HCI_INQUIRY_STATE;
890  } else
891  hci_state = HCI_SCANNING_STATE; // Don't try to connect to a Wiimote
892  break;
893 
894  case HCI_INQUIRY_STATE:
896  hci_inquiry_cancel(); // Stop inquiry
897 #ifdef DEBUG_USB_HOST
898  if(pairWithWii)
899  Notify(PSTR("\r\nWiimote found"), 0x80);
900  else
901  Notify(PSTR("\r\nHID device found"), 0x80);
902 
903  Notify(PSTR("\r\nNow just create the instance like so:"), 0x80);
904  if(pairWithWii)
905  Notify(PSTR("\r\nWII Wii(&Btd);"), 0x80);
906  else
907  Notify(PSTR("\r\nBTHID bthid(&Btd);"), 0x80);
908 
909  Notify(PSTR("\r\nAnd then press any button on the "), 0x80);
910  if(pairWithWii)
911  Notify(PSTR("Wiimote"), 0x80);
912  else
913  Notify(PSTR("device"), 0x80);
914 #endif
915  if(checkRemoteName) {
916  hci_remote_name(); // We need to know the name to distinguish between the Wiimote, the new Wiimote with Motion Plus inside, a Wii U Pro Controller and a Wii Balance Board
917  hci_state = HCI_REMOTE_NAME_STATE;
918  } else
919  hci_state = HCI_CONNECT_DEVICE_STATE;
920  }
921  break;
922 
925 #ifdef DEBUG_USB_HOST
926  if(pairWithWii)
927  Notify(PSTR("\r\nConnecting to Wiimote"), 0x80);
928  else
929  Notify(PSTR("\r\nConnecting to HID device"), 0x80);
930 #endif
931  checkRemoteName = false;
932  hci_connect();
933  hci_state = HCI_CONNECTED_DEVICE_STATE;
934  }
935  break;
936 
940 #ifdef DEBUG_USB_HOST
941  if(pairWithWii)
942  Notify(PSTR("\r\nConnected to Wiimote"), 0x80);
943  else
944  Notify(PSTR("\r\nConnected to HID device"), 0x80);
945 #endif
946  hci_authentication_request(); // This will start the pairing with the device
947  hci_state = HCI_SCANNING_STATE;
948  } else {
949 #ifdef DEBUG_USB_HOST
950  Notify(PSTR("\r\nTrying to connect one more time..."), 0x80);
951 #endif
952  hci_connect(); // Try to connect one more time
953  }
954  }
955  break;
956 
957  case HCI_SCANNING_STATE:
959 #ifdef DEBUG_USB_HOST
960  Notify(PSTR("\r\nWait For Incoming Connection Request"), 0x80);
961 #endif
963  waitingForConnection = true;
964  hci_state = HCI_CONNECT_IN_STATE;
965  }
966  break;
967 
970  waitingForConnection = false;
971 #ifdef DEBUG_USB_HOST
972  Notify(PSTR("\r\nIncoming Connection Request"), 0x80);
973 #endif
974  hci_remote_name();
975  hci_state = HCI_REMOTE_NAME_STATE;
977  hci_state = HCI_DISCONNECT_STATE;
978  break;
979 
982 #ifdef DEBUG_USB_HOST
983  Notify(PSTR("\r\nRemote Name: "), 0x80);
984  for(uint8_t i = 0; i < strlen(remote_name); i++)
985  Notifyc(remote_name[i], 0x80);
986 #endif
987  if(strncmp((const char*)remote_name, "Nintendo", 8) == 0) {
988  incomingWii = true;
989  motionPlusInside = false;
990  wiiUProController = false;
991  pairWiiUsingSync = false;
992 #ifdef DEBUG_USB_HOST
993  Notify(PSTR("\r\nWiimote is connecting"), 0x80);
994 #endif
995  if(strncmp((const char*)remote_name, "Nintendo RVL-CNT-01-TR", 22) == 0) {
996 #ifdef DEBUG_USB_HOST
997  Notify(PSTR(" with Motion Plus Inside"), 0x80);
998 #endif
999  motionPlusInside = true;
1000  } else if(strncmp((const char*)remote_name, "Nintendo RVL-CNT-01-UC", 22) == 0) {
1001 #ifdef DEBUG_USB_HOST
1002  Notify(PSTR(" - Wii U Pro Controller"), 0x80);
1003 #endif
1004  wiiUProController = motionPlusInside = pairWiiUsingSync = true;
1005  } else if(strncmp((const char*)remote_name, "Nintendo RVL-WBC-01", 19) == 0) {
1006 #ifdef DEBUG_USB_HOST
1007  Notify(PSTR(" - Wii Balance Board"), 0x80);
1008 #endif
1009  pairWiiUsingSync = true;
1010  }
1011  }
1012  if(classOfDevice[2] == 0 && classOfDevice[1] == 0x25 && classOfDevice[0] == 0x08 && strncmp((const char*)remote_name, "Wireless Controller", 19) == 0) {
1013 #ifdef DEBUG_USB_HOST
1014  Notify(PSTR("\r\nPS4 controller is connecting"), 0x80);
1015 #endif
1016  incomingPS4 = true;
1017  }
1018  if((pairWithWii || pairWithHIDDevice) && checkRemoteName)
1019  hci_state = HCI_CONNECT_DEVICE_STATE;
1020  else {
1022  hci_state = HCI_CONNECTED_STATE;
1023  }
1024  }
1025  break;
1026 
1027  case HCI_CONNECTED_STATE:
1029 #ifdef DEBUG_USB_HOST
1030  Notify(PSTR("\r\nConnected to Device: "), 0x80);
1031  for(int8_t i = 5; i > 0; i--) {
1032  D_PrintHex<uint8_t > (disc_bdaddr[i], 0x80);
1033  Notify(PSTR(":"), 0x80);
1034  }
1035  D_PrintHex<uint8_t > (disc_bdaddr[0], 0x80);
1036 #endif
1037  if(incomingPS4)
1038  connectToHIDDevice = true; // We should always connect to the PS4 controller
1039 
1040  // Clear these flags for a new connection
1041  l2capConnectionClaimed = false;
1042  sdpConnectionClaimed = false;
1043  rfcommConnectionClaimed = false;
1044 
1045  hci_event_flag = 0;
1046  hci_state = HCI_DONE_STATE;
1047  }
1048  break;
1049 
1050  case HCI_DONE_STATE:
1051  hci_counter++;
1052  if(hci_counter > 1000) { // Wait until we have looped 1000 times to make sure that the L2CAP connection has been started
1053  hci_counter = 0;
1054  hci_state = HCI_SCANNING_STATE;
1055  }
1056  break;
1057 
1058  case HCI_DISCONNECT_STATE:
1060 #ifdef DEBUG_USB_HOST
1061  Notify(PSTR("\r\nHCI Disconnected from Device"), 0x80);
1062 #endif
1063  hci_event_flag = 0; // Clear all flags
1064 
1065  // Reset all buffers
1066  memset(hcibuf, 0, BULK_MAXPKTSIZE);
1067  memset(l2capinbuf, 0, BULK_MAXPKTSIZE);
1068 
1069  connectToWii = incomingWii = pairWithWii = false;
1070  connectToHIDDevice = incomingHIDDevice = pairWithHIDDevice = checkRemoteName = false;
1071  incomingPS4 = false;
1072 
1073  hci_state = HCI_SCANNING_STATE;
1074  }
1075  break;
1076  default:
1077  break;
1078  }
1079 }
1080 
1081 void BTD::ACL_event_task() {
1082  uint16_t length = BULK_MAXPKTSIZE;
1083  uint8_t rcode = pUsb->inTransfer(bAddress, epInfo[ BTD_DATAIN_PIPE ].epAddr, &length, l2capinbuf, pollInterval); // Input on endpoint 2
1084 
1085  if(!rcode) { // Check for errors
1086  if(length > 0) { // Check if any data was read
1087  for(uint8_t i = 0; i < BTD_NUM_SERVICES; i++) {
1088  if(btService[i])
1089  btService[i]->ACLData(l2capinbuf);
1090  }
1091  }
1092  }
1093 #ifdef EXTRADEBUG
1094  else if(rcode != hrNAK) {
1095  Notify(PSTR("\r\nACL data in error: "), 0x80);
1096  D_PrintHex<uint8_t > (rcode, 0x80);
1097  }
1098 #endif
1099  for(uint8_t i = 0; i < BTD_NUM_SERVICES; i++)
1100  if(btService[i])
1101  btService[i]->Run();
1102 }
1103 
1104 /************************************************************/
1105 /* HCI Commands */
1106 
1107 /************************************************************/
1108 void BTD::HCI_Command(uint8_t* data, uint16_t nbytes) {
1110  pUsb->ctrlReq(bAddress, epInfo[ BTD_CONTROL_PIPE ].epAddr, bmREQ_HCI_OUT, 0x00, 0x00, 0x00, 0x00, nbytes, nbytes, data, NULL);
1111 }
1112 
1114  hci_event_flag = 0; // Clear all the flags
1115  hcibuf[0] = 0x03; // HCI OCF = 3
1116  hcibuf[1] = 0x03 << 2; // HCI OGF = 3
1117  hcibuf[2] = 0x00;
1118 
1119  HCI_Command(hcibuf, 3);
1120 }
1121 
1124  hcibuf[0] = 0x1A; // HCI OCF = 1A
1125  hcibuf[1] = 0x03 << 2; // HCI OGF = 3
1126  hcibuf[2] = 0x01; // parameter length = 1
1127  if(btdName != NULL)
1128  hcibuf[3] = 0x03; // Inquiry Scan enabled. Page Scan enabled.
1129  else
1130  hcibuf[3] = 0x02; // Inquiry Scan disabled. Page Scan enabled.
1131 
1132  HCI_Command(hcibuf, 4);
1133 }
1134 
1136  hcibuf[0] = 0x1A; // HCI OCF = 1A
1137  hcibuf[1] = 0x03 << 2; // HCI OGF = 3
1138  hcibuf[2] = 0x01; // parameter length = 1
1139  hcibuf[3] = 0x00; // Inquiry Scan disabled. Page Scan disabled.
1140 
1141  HCI_Command(hcibuf, 4);
1142 }
1143 
1146  hcibuf[0] = 0x09; // HCI OCF = 9
1147  hcibuf[1] = 0x04 << 2; // HCI OGF = 4
1148  hcibuf[2] = 0x00;
1149 
1150  HCI_Command(hcibuf, 3);
1151 }
1152 
1155  hcibuf[0] = 0x01; // HCI OCF = 1
1156  hcibuf[1] = 0x04 << 2; // HCI OGF = 4
1157  hcibuf[2] = 0x00;
1158 
1159  HCI_Command(hcibuf, 3);
1160 }
1161 
1162 void BTD::hci_read_local_extended_features(uint8_t page_number) {
1164  hcibuf[0] = 0x04; // HCI OCF = 4
1165  hcibuf[1] = 0x04 << 2; // HCI OGF = 4
1166  hcibuf[2] = 0x01; // parameter length = 1
1167  hcibuf[3] = page_number;
1168 
1169  HCI_Command(hcibuf, 4);
1170 }
1171 
1174  hcibuf[0] = 0x09; // HCI OCF = 9
1175  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1176  hcibuf[2] = 0x07; // parameter length 7
1177  hcibuf[3] = disc_bdaddr[0]; // 6 octet bdaddr
1178  hcibuf[4] = disc_bdaddr[1];
1179  hcibuf[5] = disc_bdaddr[2];
1180  hcibuf[6] = disc_bdaddr[3];
1181  hcibuf[7] = disc_bdaddr[4];
1182  hcibuf[8] = disc_bdaddr[5];
1183  hcibuf[9] = 0x00; // Switch role to master
1184 
1185  HCI_Command(hcibuf, 10);
1186 }
1187 
1190  hcibuf[0] = 0x19; // HCI OCF = 19
1191  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1192  hcibuf[2] = 0x0A; // parameter length = 10
1193  hcibuf[3] = disc_bdaddr[0]; // 6 octet bdaddr
1194  hcibuf[4] = disc_bdaddr[1];
1195  hcibuf[5] = disc_bdaddr[2];
1196  hcibuf[6] = disc_bdaddr[3];
1197  hcibuf[7] = disc_bdaddr[4];
1198  hcibuf[8] = disc_bdaddr[5];
1199  hcibuf[9] = 0x01; // Page Scan Repetition Mode
1200  hcibuf[10] = 0x00; // Reserved
1201  hcibuf[11] = 0x00; // Clock offset - low byte
1202  hcibuf[12] = 0x00; // Clock offset - high byte
1203 
1204  HCI_Command(hcibuf, 13);
1205 }
1206 
1207 void BTD::hci_write_local_name(const char* name) {
1208  hcibuf[0] = 0x13; // HCI OCF = 13
1209  hcibuf[1] = 0x03 << 2; // HCI OGF = 3
1210  hcibuf[2] = strlen(name) + 1; // parameter length = the length of the string + end byte
1211  uint8_t i;
1212  for(i = 0; i < strlen(name); i++)
1213  hcibuf[i + 3] = name[i];
1214  hcibuf[i + 3] = 0x00; // End of string
1215 
1216  HCI_Command(hcibuf, 4 + strlen(name));
1217 }
1218 
1220  hcibuf[0] = 0x01; // HCI OCF = 01
1221  hcibuf[1] = 0x03 << 2; // HCI OGF = 3
1222  hcibuf[2] = 0x08;
1223  // The first 6 bytes are the default of 1FFF FFFF FFFF
1224  // However we need to set bits 48-55 for simple pairing to work
1225  hcibuf[3] = 0xFF;
1226  hcibuf[4] = 0xFF;
1227  hcibuf[5] = 0xFF;
1228  hcibuf[6] = 0xFF;
1229  hcibuf[7] = 0xFF;
1230  hcibuf[8] = 0x1F;
1231  hcibuf[9] = 0xFF; // Enable bits 48-55 used for simple pairing
1232  hcibuf[10] = 0x00;
1233 
1234  HCI_Command(hcibuf, 11);
1235 }
1236 
1238  hcibuf[0] = 0x56; // HCI OCF = 56
1239  hcibuf[1] = 0x03 << 2; // HCI OGF = 3
1240  hcibuf[2] = 1; // parameter length = 1
1241  hcibuf[3] = enable ? 1 : 0;
1242 
1243  HCI_Command(hcibuf, 4);
1244 }
1245 
1248  hcibuf[0] = 0x01;
1249  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1250  hcibuf[2] = 0x05; // Parameter Total Length = 5
1251  hcibuf[3] = 0x33; // LAP: Genera/Unlimited Inquiry Access Code (GIAC = 0x9E8B33) - see https://www.bluetooth.org/Technical/AssignedNumbers/baseband.htm
1252  hcibuf[4] = 0x8B;
1253  hcibuf[5] = 0x9E;
1254  hcibuf[6] = 0x30; // Inquiry time = 61.44 sec (maximum)
1255  hcibuf[7] = 0x0A; // 10 number of responses
1256 
1257  HCI_Command(hcibuf, 8);
1258 }
1259 
1261  hcibuf[0] = 0x02;
1262  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1263  hcibuf[2] = 0x00; // Parameter Total Length = 0
1264 
1265  HCI_Command(hcibuf, 3);
1266 }
1267 
1269  hci_connect(disc_bdaddr); // Use last discovered device
1270 }
1271 
1272 void BTD::hci_connect(uint8_t *bdaddr) {
1274  hcibuf[0] = 0x05; // HCI OCF = 5
1275  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1276  hcibuf[2] = 0x0D; // parameter Total Length = 13
1277  hcibuf[3] = bdaddr[0]; // 6 octet bdaddr (LSB)
1278  hcibuf[4] = bdaddr[1];
1279  hcibuf[5] = bdaddr[2];
1280  hcibuf[6] = bdaddr[3];
1281  hcibuf[7] = bdaddr[4];
1282  hcibuf[8] = bdaddr[5];
1283  hcibuf[9] = 0x18; // DM1 or DH1 may be used
1284  hcibuf[10] = 0xCC; // DM3, DH3, DM5, DH5 may be used
1285  hcibuf[11] = 0x01; // Page repetition mode R1
1286  hcibuf[12] = 0x00; // Reserved
1287  hcibuf[13] = 0x00; // Clock offset
1288  hcibuf[14] = 0x00; // Invalid clock offset
1289  hcibuf[15] = 0x00; // Do not allow role switch
1290 
1291  HCI_Command(hcibuf, 16);
1292 }
1293 
1295  hcibuf[0] = 0x0D; // HCI OCF = 0D
1296  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1297  hcibuf[2] = 0x17; // parameter length 23
1298  hcibuf[3] = disc_bdaddr[0]; // 6 octet bdaddr
1299  hcibuf[4] = disc_bdaddr[1];
1300  hcibuf[5] = disc_bdaddr[2];
1301  hcibuf[6] = disc_bdaddr[3];
1302  hcibuf[7] = disc_bdaddr[4];
1303  hcibuf[8] = disc_bdaddr[5];
1304  if(pairWithWii) {
1305  hcibuf[9] = 6; // Pin length is the length of the Bluetooth address
1306  if(pairWiiUsingSync) {
1307 #ifdef DEBUG_USB_HOST
1308  Notify(PSTR("\r\nPairing with Wii controller via SYNC"), 0x80);
1309 #endif
1310  for(uint8_t i = 0; i < 6; i++)
1311  hcibuf[10 + i] = my_bdaddr[i]; // The pin is the Bluetooth dongles Bluetooth address backwards
1312  } else {
1313  for(uint8_t i = 0; i < 6; i++)
1314  hcibuf[10 + i] = disc_bdaddr[i]; // The pin is the Wiimote's Bluetooth address backwards
1315  }
1316  for(uint8_t i = 16; i < 26; i++)
1317  hcibuf[i] = 0x00; // The rest should be 0
1318  } else {
1319  hcibuf[9] = strlen(btdPin); // Length of pin
1320  uint8_t i;
1321  for(i = 0; i < strlen(btdPin); i++) // The maximum size of the pin is 16
1322  hcibuf[i + 10] = btdPin[i];
1323  for(; i < 16; i++)
1324  hcibuf[i + 10] = 0x00; // The rest should be 0
1325  }
1326 
1327  HCI_Command(hcibuf, 26);
1328 }
1329 
1331  hcibuf[0] = 0x0E; // HCI OCF = 0E
1332  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1333  hcibuf[2] = 0x06; // parameter length 6
1334  hcibuf[3] = disc_bdaddr[0]; // 6 octet bdaddr
1335  hcibuf[4] = disc_bdaddr[1];
1336  hcibuf[5] = disc_bdaddr[2];
1337  hcibuf[6] = disc_bdaddr[3];
1338  hcibuf[7] = disc_bdaddr[4];
1339  hcibuf[8] = disc_bdaddr[5];
1340 
1341  HCI_Command(hcibuf, 9);
1342 }
1343 
1345  hcibuf[0] = 0x0C; // HCI OCF = 0C
1346  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1347  hcibuf[2] = 0x06; // parameter length 6
1348  hcibuf[3] = disc_bdaddr[0]; // 6 octet bdaddr
1349  hcibuf[4] = disc_bdaddr[1];
1350  hcibuf[5] = disc_bdaddr[2];
1351  hcibuf[6] = disc_bdaddr[3];
1352  hcibuf[7] = disc_bdaddr[4];
1353  hcibuf[8] = disc_bdaddr[5];
1354 
1355  HCI_Command(hcibuf, 9);
1356 }
1357 
1359  hcibuf[0] = 0x2B; // HCI OCF = 2B
1360  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1361  hcibuf[2] = 0x09;
1362  hcibuf[3] = disc_bdaddr[0]; // 6 octet bdaddr
1363  hcibuf[4] = disc_bdaddr[1];
1364  hcibuf[5] = disc_bdaddr[2];
1365  hcibuf[6] = disc_bdaddr[3];
1366  hcibuf[7] = disc_bdaddr[4];
1367  hcibuf[8] = disc_bdaddr[5];
1368  hcibuf[9] = 0x03; // NoInputNoOutput
1369  hcibuf[10] = 0x00; // OOB authentication data not present
1370  hcibuf[11] = 0x00; // MITM Protection Not Required – No Bonding. Numeric comparison with automatic accept allowed
1371 
1372  HCI_Command(hcibuf, 12);
1373 }
1374 
1376  hcibuf[0] = 0x2C; // HCI OCF = 2C
1377  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1378  hcibuf[2] = 0x06; // parameter length 6
1379  hcibuf[3] = disc_bdaddr[0]; // 6 octet bdaddr
1380  hcibuf[4] = disc_bdaddr[1];
1381  hcibuf[5] = disc_bdaddr[2];
1382  hcibuf[6] = disc_bdaddr[3];
1383  hcibuf[7] = disc_bdaddr[4];
1384  hcibuf[8] = disc_bdaddr[5];
1385 
1386  HCI_Command(hcibuf, 9);
1387 }
1388 
1390  hcibuf[0] = 0x11; // HCI OCF = 11
1391  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1392  hcibuf[2] = 0x02; // parameter length = 2
1393  hcibuf[3] = (uint8_t)(hci_handle & 0xFF); //connection handle - low byte
1394  hcibuf[4] = (uint8_t)((hci_handle >> 8) & 0x0F); //connection handle - high byte
1395 
1396  HCI_Command(hcibuf, 5);
1397 }
1398 
1399 void BTD::hci_disconnect(uint16_t handle) { // This is called by the different services
1401  hcibuf[0] = 0x06; // HCI OCF = 6
1402  hcibuf[1] = 0x01 << 2; // HCI OGF = 1
1403  hcibuf[2] = 0x03; // parameter length = 3
1404  hcibuf[3] = (uint8_t)(handle & 0xFF); //connection handle - low byte
1405  hcibuf[4] = (uint8_t)((handle >> 8) & 0x0F); //connection handle - high byte
1406  hcibuf[5] = 0x13; // reason
1407 
1408  HCI_Command(hcibuf, 6);
1409 }
1410 
1411 void BTD::hci_write_class_of_device() { // See http://bluetooth-pentest.narod.ru/software/bluetooth_class_of_device-service_generator.html
1412  hcibuf[0] = 0x24; // HCI OCF = 24
1413  hcibuf[1] = 0x03 << 2; // HCI OGF = 3
1414  hcibuf[2] = 0x03; // parameter length = 3
1415  hcibuf[3] = 0x04; // Robot
1416  hcibuf[4] = 0x08; // Toy
1417  hcibuf[5] = 0x00;
1418 
1419  HCI_Command(hcibuf, 6);
1420 }
1421 /*******************************************************************
1422  * *
1423  * HCI ACL Data Packet *
1424  * *
1425  * buf[0] buf[1] buf[2] buf[3]
1426  * 0 4 8 11 12 16 24 31 MSB
1427  * .-+-+-+-+-+-+-+-|-+-+-+-|-+-|-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-.
1428  * | HCI Handle |PB |BC | Data Total Length | HCI ACL Data Packet
1429  * .-+-+-+-+-+-+-+-|-+-+-+-|-+-|-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-.
1430  *
1431  * buf[4] buf[5] buf[6] buf[7]
1432  * 0 8 16 31 MSB
1433  * .-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-.
1434  * | Length | Channel ID | Basic L2CAP header
1435  * .-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-.
1436  *
1437  * buf[8] buf[9] buf[10] buf[11]
1438  * 0 8 16 31 MSB
1439  * .-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-.
1440  * | Code | Identifier | Length | Control frame (C-frame)
1441  * .-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-. (signaling packet format)
1442  */
1443 /************************************************************/
1444 /* L2CAP Commands */
1445 
1446 /************************************************************/
1447 void BTD::L2CAP_Command(uint16_t handle, uint8_t* data, uint8_t nbytes, uint8_t channelLow, uint8_t channelHigh) {
1448  uint8_t buf[8 + nbytes];
1449  buf[0] = (uint8_t)(handle & 0xff); // HCI handle with PB,BC flag
1450  buf[1] = (uint8_t)(((handle >> 8) & 0x0f) | 0x20);
1451  buf[2] = (uint8_t)((4 + nbytes) & 0xff); // HCI ACL total data length
1452  buf[3] = (uint8_t)((4 + nbytes) >> 8);
1453  buf[4] = (uint8_t)(nbytes & 0xff); // L2CAP header: Length
1454  buf[5] = (uint8_t)(nbytes >> 8);
1455  buf[6] = channelLow;
1456  buf[7] = channelHigh;
1457 
1458  for(uint16_t i = 0; i < nbytes; i++) // L2CAP C-frame
1459  buf[8 + i] = data[i];
1460 
1461  uint8_t rcode = pUsb->outTransfer(bAddress, epInfo[ BTD_DATAOUT_PIPE ].epAddr, (8 + nbytes), buf);
1462  if(rcode) {
1463  delay(100); // This small delay prevents it from overflowing if it fails
1464 #ifdef DEBUG_USB_HOST
1465  Notify(PSTR("\r\nError sending L2CAP message: 0x"), 0x80);
1466  D_PrintHex<uint8_t > (rcode, 0x80);
1467  Notify(PSTR(" - Channel ID: "), 0x80);
1468  D_PrintHex<uint8_t > (channelHigh, 0x80);
1469  Notify(PSTR(" "), 0x80);
1470  D_PrintHex<uint8_t > (channelLow, 0x80);
1471 #endif
1472  }
1473 }
1474 
1475 void BTD::l2cap_connection_request(uint16_t handle, uint8_t rxid, uint8_t* scid, uint16_t psm) {
1476  l2capoutbuf[0] = L2CAP_CMD_CONNECTION_REQUEST; // Code
1477  l2capoutbuf[1] = rxid; // Identifier
1478  l2capoutbuf[2] = 0x04; // Length
1479  l2capoutbuf[3] = 0x00;
1480  l2capoutbuf[4] = (uint8_t)(psm & 0xff); // PSM
1481  l2capoutbuf[5] = (uint8_t)(psm >> 8);
1482  l2capoutbuf[6] = scid[0]; // Source CID
1483  l2capoutbuf[7] = scid[1];
1484 
1485  L2CAP_Command(handle, l2capoutbuf, 8);
1486 }
1487 
1488 void BTD::l2cap_connection_response(uint16_t handle, uint8_t rxid, uint8_t* dcid, uint8_t* scid, uint8_t result) {
1489  l2capoutbuf[0] = L2CAP_CMD_CONNECTION_RESPONSE; // Code
1490  l2capoutbuf[1] = rxid; // Identifier
1491  l2capoutbuf[2] = 0x08; // Length
1492  l2capoutbuf[3] = 0x00;
1493  l2capoutbuf[4] = dcid[0]; // Destination CID
1494  l2capoutbuf[5] = dcid[1];
1495  l2capoutbuf[6] = scid[0]; // Source CID
1496  l2capoutbuf[7] = scid[1];
1497  l2capoutbuf[8] = result; // Result: Pending or Success
1498  l2capoutbuf[9] = 0x00;
1499  l2capoutbuf[10] = 0x00; // No further information
1500  l2capoutbuf[11] = 0x00;
1501 
1502  L2CAP_Command(handle, l2capoutbuf, 12);
1503 }
1504 
1505 void BTD::l2cap_config_request(uint16_t handle, uint8_t rxid, uint8_t* dcid) {
1506  l2capoutbuf[0] = L2CAP_CMD_CONFIG_REQUEST; // Code
1507  l2capoutbuf[1] = rxid; // Identifier
1508  l2capoutbuf[2] = 0x08; // Length
1509  l2capoutbuf[3] = 0x00;
1510  l2capoutbuf[4] = dcid[0]; // Destination CID
1511  l2capoutbuf[5] = dcid[1];
1512  l2capoutbuf[6] = 0x00; // Flags
1513  l2capoutbuf[7] = 0x00;
1514  l2capoutbuf[8] = 0x01; // Config Opt: type = MTU (Maximum Transmission Unit) - Hint
1515  l2capoutbuf[9] = 0x02; // Config Opt: length
1516  l2capoutbuf[10] = 0xFF; // MTU
1517  l2capoutbuf[11] = 0xFF;
1518 
1519  L2CAP_Command(handle, l2capoutbuf, 12);
1520 }
1521 
1522 void BTD::l2cap_config_response(uint16_t handle, uint8_t rxid, uint8_t* scid) {
1523  l2capoutbuf[0] = L2CAP_CMD_CONFIG_RESPONSE; // Code
1524  l2capoutbuf[1] = rxid; // Identifier
1525  l2capoutbuf[2] = 0x0A; // Length
1526  l2capoutbuf[3] = 0x00;
1527  l2capoutbuf[4] = scid[0]; // Source CID
1528  l2capoutbuf[5] = scid[1];
1529  l2capoutbuf[6] = 0x00; // Flag
1530  l2capoutbuf[7] = 0x00;
1531  l2capoutbuf[8] = 0x00; // Result
1532  l2capoutbuf[9] = 0x00;
1533  l2capoutbuf[10] = 0x01; // Config
1534  l2capoutbuf[11] = 0x02;
1535  l2capoutbuf[12] = 0xA0;
1536  l2capoutbuf[13] = 0x02;
1537 
1538  L2CAP_Command(handle, l2capoutbuf, 14);
1539 }
1540 
1541 void BTD::l2cap_disconnection_request(uint16_t handle, uint8_t rxid, uint8_t* dcid, uint8_t* scid) {
1542  l2capoutbuf[0] = L2CAP_CMD_DISCONNECT_REQUEST; // Code
1543  l2capoutbuf[1] = rxid; // Identifier
1544  l2capoutbuf[2] = 0x04; // Length
1545  l2capoutbuf[3] = 0x00;
1546  l2capoutbuf[4] = dcid[0];
1547  l2capoutbuf[5] = dcid[1];
1548  l2capoutbuf[6] = scid[0];
1549  l2capoutbuf[7] = scid[1];
1550 
1551  L2CAP_Command(handle, l2capoutbuf, 8);
1552 }
1553 
1554 void BTD::l2cap_disconnection_response(uint16_t handle, uint8_t rxid, uint8_t* dcid, uint8_t* scid) {
1555  l2capoutbuf[0] = L2CAP_CMD_DISCONNECT_RESPONSE; // Code
1556  l2capoutbuf[1] = rxid; // Identifier
1557  l2capoutbuf[2] = 0x04; // Length
1558  l2capoutbuf[3] = 0x00;
1559  l2capoutbuf[4] = dcid[0];
1560  l2capoutbuf[5] = dcid[1];
1561  l2capoutbuf[6] = scid[0];
1562  l2capoutbuf[7] = scid[1];
1563 
1564  L2CAP_Command(handle, l2capoutbuf, 8);
1565 }
1566 
1567 void BTD::l2cap_information_response(uint16_t handle, uint8_t rxid, uint8_t infoTypeLow, uint8_t infoTypeHigh) {
1568  l2capoutbuf[0] = L2CAP_CMD_INFORMATION_RESPONSE; // Code
1569  l2capoutbuf[1] = rxid; // Identifier
1570  l2capoutbuf[2] = 0x08; // Length
1571  l2capoutbuf[3] = 0x00;
1572  l2capoutbuf[4] = infoTypeLow;
1573  l2capoutbuf[5] = infoTypeHigh;
1574  l2capoutbuf[6] = 0x00; // Result = success
1575  l2capoutbuf[7] = 0x00; // Result = success
1576  l2capoutbuf[8] = 0x00;
1577  l2capoutbuf[9] = 0x00;
1578  l2capoutbuf[10] = 0x00;
1579  l2capoutbuf[11] = 0x00;
1580 
1581  L2CAP_Command(handle, l2capoutbuf, 12);
1582 }
1583 
1584 /* PS3 Commands - only set Bluetooth address is implemented in this library */
1585 void BTD::setBdaddr(uint8_t* bdaddr) {
1586  /* Set the internal Bluetooth address */
1587  uint8_t buf[8];
1588  buf[0] = 0x01;
1589  buf[1] = 0x00;
1590 
1591  for(uint8_t i = 0; i < 6; i++)
1592  buf[i + 2] = bdaddr[5 - i]; // Copy into buffer, has to be written reversed, so it is MSB first
1593 
1594  // bmRequest = Host to device (0x00) | Class (0x20) | Interface (0x01) = 0x21, bRequest = Set Report (0x09), Report ID (0xF5), Report Type (Feature 0x03), interface (0x00), datalength, datalength, data
1595  pUsb->ctrlReq(bAddress, epInfo[BTD_CONTROL_PIPE].epAddr, bmREQ_HID_OUT, HID_REQUEST_SET_REPORT, 0xF5, 0x03, 0x00, 8, 8, buf, NULL);
1596 }
1597 
1598 void BTD::setMoveBdaddr(uint8_t* bdaddr) {
1599  /* Set the internal Bluetooth address */
1600  uint8_t buf[11];
1601  buf[0] = 0x05;
1602  buf[7] = 0x10;
1603  buf[8] = 0x01;
1604  buf[9] = 0x02;
1605  buf[10] = 0x12;
1606 
1607  for(uint8_t i = 0; i < 6; i++)
1608  buf[i + 1] = bdaddr[i];
1609 
1610  // bmRequest = Host to device (0x00) | Class (0x20) | Interface (0x01) = 0x21, bRequest = Set Report (0x09), Report ID (0x05), Report Type (Feature 0x03), interface (0x00), datalength, datalength, data
1611  pUsb->ctrlReq(bAddress, epInfo[BTD_CONTROL_PIPE].epAddr, bmREQ_HID_OUT, HID_REQUEST_SET_REPORT, 0x05, 0x03, 0x00, 11, 11, buf, NULL);
1612 }
static const uint8_t BTD_DATAOUT_PIPE
Definition: BTD.h:558
uint8_t getConfDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t conf, uint8_t *dataptr)
Definition: Usb.cpp:801
uint8_t bmRcvToggle
Definition: address.h:48
bool incomingWii
Definition: BTD.h:504
@@ -305,7 +282,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/_b_t_d_8h.html b/_b_t_d_8h.html index 77e77993..f2fd6182 100644 --- a/_b_t_d_8h.html +++ b/_b_t_d_8h.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: BTD.h File Reference @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
- - - + + +
@@ -106,17 +83,17 @@ This graph shows which files directly or indirectly include this file:
- - - - - + + + + + - - - - - + + + + +
@@ -407,7 +384,9 @@ Macros  

Macro Definition Documentation

- + +

◆ PS3_VID

+
@@ -417,11 +396,13 @@ Macros
-

Definition at line 25 of file BTD.h.

+

Definition at line 25 of file BTD.h.

- + +

◆ PS3_PID

+
@@ -431,11 +412,13 @@ Macros
-

Definition at line 26 of file BTD.h.

+

Definition at line 26 of file BTD.h.

- + +

◆ PS3NAVIGATION_PID

+
@@ -445,11 +428,13 @@ Macros
-

Definition at line 27 of file BTD.h.

+

Definition at line 27 of file BTD.h.

- + +

◆ PS3MOVE_PID

+
@@ -459,11 +444,13 @@ Macros
-

Definition at line 28 of file BTD.h.

+

Definition at line 28 of file BTD.h.

- + +

◆ IOGEAR_GBU521_VID

+
@@ -473,11 +460,13 @@ Macros
-

Definition at line 31 of file BTD.h.

+

Definition at line 31 of file BTD.h.

- + +

◆ IOGEAR_GBU521_PID

+
@@ -487,11 +476,13 @@ Macros
-

Definition at line 32 of file BTD.h.

+

Definition at line 32 of file BTD.h.

- + +

◆ BELKIN_F8T065BF_VID

+
@@ -501,11 +492,13 @@ Macros
-

Definition at line 33 of file BTD.h.

+

Definition at line 33 of file BTD.h.

- + +

◆ BELKIN_F8T065BF_PID

+
@@ -515,11 +508,13 @@ Macros
-

Definition at line 34 of file BTD.h.

+

Definition at line 34 of file BTD.h.

- + +

◆ BULK_MAXPKTSIZE

+
@@ -529,11 +524,13 @@ Macros
-

Definition at line 37 of file BTD.h.

+

Definition at line 37 of file BTD.h.

- + +

◆ bmREQ_HCI_OUT

+
@@ -543,11 +540,13 @@ Macros
-

Definition at line 40 of file BTD.h.

+

Definition at line 40 of file BTD.h.

- + +

◆ HCI_INIT_STATE

+
@@ -557,11 +556,13 @@ Macros
-

Definition at line 43 of file BTD.h.

+

Definition at line 43 of file BTD.h.

- + +

◆ HCI_RESET_STATE

+
@@ -571,11 +572,13 @@ Macros
-

Definition at line 44 of file BTD.h.

+

Definition at line 44 of file BTD.h.

- + +

◆ HCI_CLASS_STATE

+
@@ -585,11 +588,13 @@ Macros
-

Definition at line 45 of file BTD.h.

+

Definition at line 45 of file BTD.h.

- + +

◆ HCI_BDADDR_STATE

+
@@ -599,11 +604,13 @@ Macros
-

Definition at line 46 of file BTD.h.

+

Definition at line 46 of file BTD.h.

- + +

◆ HCI_LOCAL_VERSION_STATE

+
@@ -613,11 +620,13 @@ Macros
-

Definition at line 47 of file BTD.h.

+

Definition at line 47 of file BTD.h.

- + +

◆ HCI_WRITE_NAME_STATE

+
@@ -627,11 +636,13 @@ Macros
-

Definition at line 48 of file BTD.h.

+

Definition at line 48 of file BTD.h.

- + +

◆ HCI_CHECK_DEVICE_SERVICE

+
@@ -641,11 +652,13 @@ Macros
-

Definition at line 49 of file BTD.h.

+

Definition at line 49 of file BTD.h.

- + +

◆ HCI_INQUIRY_STATE

+
@@ -655,11 +668,13 @@ Macros
-

Definition at line 51 of file BTD.h.

+

Definition at line 51 of file BTD.h.

- + +

◆ HCI_CONNECT_DEVICE_STATE

+
@@ -669,11 +684,13 @@ Macros
-

Definition at line 52 of file BTD.h.

+

Definition at line 52 of file BTD.h.

- + +

◆ HCI_CONNECTED_DEVICE_STATE

+
@@ -683,11 +700,13 @@ Macros
-

Definition at line 53 of file BTD.h.

+

Definition at line 53 of file BTD.h.

- + +

◆ HCI_SCANNING_STATE

+
@@ -697,11 +716,13 @@ Macros
-

Definition at line 55 of file BTD.h.

+

Definition at line 55 of file BTD.h.

- + +

◆ HCI_CONNECT_IN_STATE

+
@@ -711,11 +732,13 @@ Macros
-

Definition at line 56 of file BTD.h.

+

Definition at line 56 of file BTD.h.

- + +

◆ HCI_REMOTE_NAME_STATE

+
@@ -725,11 +748,13 @@ Macros
-

Definition at line 57 of file BTD.h.

+

Definition at line 57 of file BTD.h.

- + +

◆ HCI_CONNECTED_STATE

+
@@ -739,11 +764,13 @@ Macros
-

Definition at line 58 of file BTD.h.

+

Definition at line 58 of file BTD.h.

- + +

◆ HCI_DISABLE_SCAN_STATE

+
@@ -753,11 +780,13 @@ Macros
-

Definition at line 59 of file BTD.h.

+

Definition at line 59 of file BTD.h.

- + +

◆ HCI_DONE_STATE

+
@@ -767,11 +796,13 @@ Macros
-

Definition at line 60 of file BTD.h.

+

Definition at line 60 of file BTD.h.

- + +

◆ HCI_DISCONNECT_STATE

+
@@ -781,11 +812,13 @@ Macros
-

Definition at line 61 of file BTD.h.

+

Definition at line 61 of file BTD.h.

- + +

◆ HCI_LOCAL_EXTENDED_FEATURES_STATE

+
@@ -795,11 +828,13 @@ Macros
-

Definition at line 62 of file BTD.h.

+

Definition at line 62 of file BTD.h.

- + +

◆ HCI_WRITE_SIMPLE_PAIRING_STATE

+
@@ -809,11 +844,13 @@ Macros
-

Definition at line 63 of file BTD.h.

+

Definition at line 63 of file BTD.h.

- + +

◆ HCI_SET_EVENT_MASK_STATE

+
@@ -823,11 +860,13 @@ Macros
-

Definition at line 64 of file BTD.h.

+

Definition at line 64 of file BTD.h.

- + +

◆ HCI_FLAG_CMD_COMPLETE

+
@@ -837,11 +876,13 @@ Macros
-

Definition at line 67 of file BTD.h.

+

Definition at line 67 of file BTD.h.

- + +

◆ HCI_FLAG_CONNECT_COMPLETE

+
@@ -851,11 +892,13 @@ Macros
-

Definition at line 68 of file BTD.h.

+

Definition at line 68 of file BTD.h.

- + +

◆ HCI_FLAG_DISCONNECT_COMPLETE

+
@@ -865,11 +908,13 @@ Macros
-

Definition at line 69 of file BTD.h.

+

Definition at line 69 of file BTD.h.

- + +

◆ HCI_FLAG_REMOTE_NAME_COMPLETE

+
@@ -879,11 +924,13 @@ Macros
-

Definition at line 70 of file BTD.h.

+

Definition at line 70 of file BTD.h.

- + +

◆ HCI_FLAG_INCOMING_REQUEST

+
@@ -893,11 +940,13 @@ Macros
-

Definition at line 71 of file BTD.h.

+

Definition at line 71 of file BTD.h.

- + +

◆ HCI_FLAG_READ_BDADDR

+
@@ -907,11 +956,13 @@ Macros
-

Definition at line 72 of file BTD.h.

+

Definition at line 72 of file BTD.h.

- + +

◆ HCI_FLAG_READ_VERSION

+
@@ -921,11 +972,13 @@ Macros
-

Definition at line 73 of file BTD.h.

+

Definition at line 73 of file BTD.h.

- + +

◆ HCI_FLAG_DEVICE_FOUND

+
@@ -935,11 +988,13 @@ Macros
-

Definition at line 74 of file BTD.h.

+

Definition at line 74 of file BTD.h.

- + +

◆ HCI_FLAG_CONNECT_EVENT

+
@@ -949,11 +1004,13 @@ Macros
-

Definition at line 75 of file BTD.h.

+

Definition at line 75 of file BTD.h.

- + +

◆ HCI_FLAG_LOCAL_EXTENDED_FEATURES

+
@@ -963,11 +1020,13 @@ Macros
-

Definition at line 76 of file BTD.h.

+

Definition at line 76 of file BTD.h.

- + +

◆ hci_check_flag

+
@@ -981,11 +1040,13 @@ Macros
-

Definition at line 79 of file BTD.h.

+

Definition at line 79 of file BTD.h.

- + +

◆ hci_set_flag

+
@@ -999,11 +1060,13 @@ Macros
-

Definition at line 80 of file BTD.h.

+

Definition at line 80 of file BTD.h.

- + +

◆ hci_clear_flag

+
@@ -1017,11 +1080,13 @@ Macros
-

Definition at line 81 of file BTD.h.

+

Definition at line 81 of file BTD.h.

- + +

◆ EV_INQUIRY_COMPLETE

+
@@ -1031,11 +1096,13 @@ Macros
-

Definition at line 84 of file BTD.h.

+

Definition at line 84 of file BTD.h.

- + +

◆ EV_INQUIRY_RESULT

+
@@ -1045,11 +1112,13 @@ Macros
-

Definition at line 85 of file BTD.h.

+

Definition at line 85 of file BTD.h.

- + +

◆ EV_CONNECT_COMPLETE

+
@@ -1059,11 +1128,13 @@ Macros
-

Definition at line 86 of file BTD.h.

+

Definition at line 86 of file BTD.h.

- + +

◆ EV_INCOMING_CONNECT

+
@@ -1073,11 +1144,13 @@ Macros
-

Definition at line 87 of file BTD.h.

+

Definition at line 87 of file BTD.h.

- + +

◆ EV_DISCONNECT_COMPLETE

+
@@ -1087,11 +1160,13 @@ Macros
-

Definition at line 88 of file BTD.h.

+

Definition at line 88 of file BTD.h.

- + +

◆ EV_AUTHENTICATION_COMPLETE

+
@@ -1101,11 +1176,13 @@ Macros
-

Definition at line 89 of file BTD.h.

+

Definition at line 89 of file BTD.h.

- + +

◆ EV_REMOTE_NAME_COMPLETE

+
@@ -1115,11 +1192,13 @@ Macros
-

Definition at line 90 of file BTD.h.

+

Definition at line 90 of file BTD.h.

- + +

◆ EV_ENCRYPTION_CHANGE

+
@@ -1129,11 +1208,13 @@ Macros
-

Definition at line 91 of file BTD.h.

+

Definition at line 91 of file BTD.h.

- + +

◆ EV_CHANGE_CONNECTION_LINK

+
@@ -1143,11 +1224,13 @@ Macros
-

Definition at line 92 of file BTD.h.

+

Definition at line 92 of file BTD.h.

- + +

◆ EV_READ_REMOTE_VERSION_INFORMATION_COMPLETE

+
@@ -1157,11 +1240,13 @@ Macros
-

Definition at line 93 of file BTD.h.

+

Definition at line 93 of file BTD.h.

- + +

◆ EV_QOS_SETUP_COMPLETE

+
@@ -1171,11 +1256,13 @@ Macros
-

Definition at line 94 of file BTD.h.

+

Definition at line 94 of file BTD.h.

- + +

◆ EV_COMMAND_COMPLETE

+
@@ -1185,11 +1272,13 @@ Macros
-

Definition at line 95 of file BTD.h.

+

Definition at line 95 of file BTD.h.

- + +

◆ EV_COMMAND_STATUS

+
@@ -1199,11 +1288,13 @@ Macros
-

Definition at line 96 of file BTD.h.

+

Definition at line 96 of file BTD.h.

- + +

◆ EV_ROLE_CHANGED

+
@@ -1213,11 +1304,13 @@ Macros
-

Definition at line 97 of file BTD.h.

+

Definition at line 97 of file BTD.h.

- + +

◆ EV_NUM_COMPLETE_PKT

+
@@ -1227,11 +1320,13 @@ Macros
-

Definition at line 98 of file BTD.h.

+

Definition at line 98 of file BTD.h.

- + +

◆ EV_PIN_CODE_REQUEST

+
@@ -1241,11 +1336,13 @@ Macros
-

Definition at line 99 of file BTD.h.

+

Definition at line 99 of file BTD.h.

- + +

◆ EV_LINK_KEY_REQUEST

+
@@ -1255,11 +1352,13 @@ Macros
-

Definition at line 100 of file BTD.h.

+

Definition at line 100 of file BTD.h.

- + +

◆ EV_LINK_KEY_NOTIFICATION

+
@@ -1269,11 +1368,13 @@ Macros
-

Definition at line 101 of file BTD.h.

+

Definition at line 101 of file BTD.h.

- + +

◆ EV_DATA_BUFFER_OVERFLOW

+
@@ -1283,11 +1384,13 @@ Macros
-

Definition at line 102 of file BTD.h.

+

Definition at line 102 of file BTD.h.

- + +

◆ EV_MAX_SLOTS_CHANGE

+
@@ -1297,11 +1400,13 @@ Macros
-

Definition at line 103 of file BTD.h.

+

Definition at line 103 of file BTD.h.

- + +

◆ EV_LOOPBACK_COMMAND

+
@@ -1311,11 +1416,13 @@ Macros
-

Definition at line 104 of file BTD.h.

+

Definition at line 104 of file BTD.h.

- + +

◆ EV_PAGE_SCAN_REP_MODE

+
@@ -1325,11 +1432,13 @@ Macros
-

Definition at line 105 of file BTD.h.

+

Definition at line 105 of file BTD.h.

- + +

◆ EV_READ_REMOTE_EXTENDED_FEATURES_COMPLETE

+
@@ -1339,11 +1448,13 @@ Macros
-

Definition at line 106 of file BTD.h.

+

Definition at line 106 of file BTD.h.

- + +

◆ EV_IO_CAPABILITY_REQUEST

+
@@ -1353,11 +1464,13 @@ Macros
-

Definition at line 107 of file BTD.h.

+

Definition at line 107 of file BTD.h.

- + +

◆ EV_IO_CAPABILITY_RESPONSE

+
@@ -1367,11 +1480,13 @@ Macros
-

Definition at line 108 of file BTD.h.

+

Definition at line 108 of file BTD.h.

- + +

◆ EV_USER_CONFIRMATION_REQUEST

+
@@ -1381,11 +1496,13 @@ Macros
-

Definition at line 109 of file BTD.h.

+

Definition at line 109 of file BTD.h.

- + +

◆ EV_SIMPLE_PAIRING_COMPLETE

+
@@ -1395,11 +1512,13 @@ Macros
-

Definition at line 110 of file BTD.h.

+

Definition at line 110 of file BTD.h.

- + +

◆ L2CAP_WAIT

+
@@ -1409,11 +1528,13 @@ Macros
-

Definition at line 113 of file BTD.h.

+

Definition at line 113 of file BTD.h.

- + +

◆ L2CAP_DONE

+
@@ -1423,11 +1544,13 @@ Macros
-

Definition at line 114 of file BTD.h.

+

Definition at line 114 of file BTD.h.

- + +

◆ L2CAP_CONTROL_CONNECT_REQUEST

+
@@ -1437,11 +1560,13 @@ Macros
-

Definition at line 117 of file BTD.h.

+

Definition at line 117 of file BTD.h.

- + +

◆ L2CAP_CONTROL_CONFIG_REQUEST

+
@@ -1451,11 +1576,13 @@ Macros
-

Definition at line 118 of file BTD.h.

+

Definition at line 118 of file BTD.h.

- + +

◆ L2CAP_CONTROL_SUCCESS

+
@@ -1465,11 +1592,13 @@ Macros
-

Definition at line 119 of file BTD.h.

+

Definition at line 119 of file BTD.h.

- + +

◆ L2CAP_CONTROL_DISCONNECT

+
@@ -1479,11 +1608,13 @@ Macros
-

Definition at line 120 of file BTD.h.

+

Definition at line 120 of file BTD.h.

- + +

◆ L2CAP_INTERRUPT_SETUP

+
@@ -1493,11 +1624,13 @@ Macros
-

Definition at line 123 of file BTD.h.

+

Definition at line 123 of file BTD.h.

- + +

◆ L2CAP_INTERRUPT_CONNECT_REQUEST

+
@@ -1507,11 +1640,13 @@ Macros
-

Definition at line 124 of file BTD.h.

+

Definition at line 124 of file BTD.h.

- + +

◆ L2CAP_INTERRUPT_CONFIG_REQUEST

+
@@ -1521,11 +1656,13 @@ Macros
-

Definition at line 125 of file BTD.h.

+

Definition at line 125 of file BTD.h.

- + +

◆ L2CAP_INTERRUPT_DISCONNECT

+
@@ -1535,11 +1672,13 @@ Macros
-

Definition at line 126 of file BTD.h.

+

Definition at line 126 of file BTD.h.

- + +

◆ L2CAP_SDP_WAIT

+
@@ -1549,11 +1688,13 @@ Macros
-

Definition at line 129 of file BTD.h.

+

Definition at line 129 of file BTD.h.

- + +

◆ L2CAP_SDP_SUCCESS

+
@@ -1563,11 +1704,13 @@ Macros
-

Definition at line 130 of file BTD.h.

+

Definition at line 130 of file BTD.h.

- + +

◆ L2CAP_RFCOMM_WAIT

+
@@ -1577,11 +1720,13 @@ Macros
-

Definition at line 133 of file BTD.h.

+

Definition at line 133 of file BTD.h.

- + +

◆ L2CAP_RFCOMM_SUCCESS

+
@@ -1591,11 +1736,13 @@ Macros
-

Definition at line 134 of file BTD.h.

+

Definition at line 134 of file BTD.h.

- + +

◆ L2CAP_DISCONNECT_RESPONSE

+
@@ -1605,11 +1752,13 @@ Macros
-

Definition at line 136 of file BTD.h.

+

Definition at line 136 of file BTD.h.

- + +

◆ TURN_ON_LED

+
@@ -1619,11 +1768,13 @@ Macros
-

Definition at line 139 of file BTD.h.

+

Definition at line 139 of file BTD.h.

- + +

◆ PS3_ENABLE_SIXAXIS

+
@@ -1633,11 +1784,13 @@ Macros
-

Definition at line 140 of file BTD.h.

+

Definition at line 140 of file BTD.h.

- + +

◆ WII_CHECK_MOTION_PLUS_STATE

+
@@ -1647,11 +1800,13 @@ Macros
-

Definition at line 141 of file BTD.h.

+

Definition at line 141 of file BTD.h.

- + +

◆ WII_CHECK_EXTENSION_STATE

+
@@ -1661,11 +1816,13 @@ Macros
-

Definition at line 142 of file BTD.h.

+

Definition at line 142 of file BTD.h.

- + +

◆ WII_INIT_MOTION_PLUS_STATE

+
@@ -1675,11 +1832,13 @@ Macros
-

Definition at line 143 of file BTD.h.

+

Definition at line 143 of file BTD.h.

- + +

◆ L2CAP_FLAG_CONNECTION_CONTROL_REQUEST

+
@@ -1689,11 +1848,13 @@ Macros
-

Definition at line 146 of file BTD.h.

+

Definition at line 146 of file BTD.h.

- + +

◆ L2CAP_FLAG_CONFIG_CONTROL_SUCCESS

+
@@ -1703,11 +1864,13 @@ Macros
-

Definition at line 147 of file BTD.h.

+

Definition at line 147 of file BTD.h.

- + +

◆ L2CAP_FLAG_CONTROL_CONNECTED

+
@@ -1717,11 +1880,13 @@ Macros
-

Definition at line 148 of file BTD.h.

+

Definition at line 148 of file BTD.h.

- + +

◆ L2CAP_FLAG_DISCONNECT_CONTROL_RESPONSE

+
@@ -1731,11 +1896,13 @@ Macros
-

Definition at line 149 of file BTD.h.

+

Definition at line 149 of file BTD.h.

- + +

◆ L2CAP_FLAG_CONNECTION_INTERRUPT_REQUEST

+
@@ -1745,11 +1912,13 @@ Macros
-

Definition at line 152 of file BTD.h.

+

Definition at line 152 of file BTD.h.

- + +

◆ L2CAP_FLAG_CONFIG_INTERRUPT_SUCCESS

+
@@ -1759,11 +1928,13 @@ Macros
-

Definition at line 153 of file BTD.h.

+

Definition at line 153 of file BTD.h.

- + +

◆ L2CAP_FLAG_INTERRUPT_CONNECTED

+
@@ -1773,11 +1944,13 @@ Macros
-

Definition at line 154 of file BTD.h.

+

Definition at line 154 of file BTD.h.

- + +

◆ L2CAP_FLAG_DISCONNECT_INTERRUPT_RESPONSE

+
@@ -1787,11 +1960,13 @@ Macros
-

Definition at line 155 of file BTD.h.

+

Definition at line 155 of file BTD.h.

- + +

◆ L2CAP_FLAG_CONNECTION_SDP_REQUEST

+
@@ -1801,11 +1976,13 @@ Macros
-

Definition at line 158 of file BTD.h.

+

Definition at line 158 of file BTD.h.

- + +

◆ L2CAP_FLAG_CONFIG_SDP_SUCCESS

+
@@ -1815,11 +1992,13 @@ Macros
-

Definition at line 159 of file BTD.h.

+

Definition at line 159 of file BTD.h.

- + +

◆ L2CAP_FLAG_DISCONNECT_SDP_REQUEST

+
@@ -1829,11 +2008,13 @@ Macros
-

Definition at line 160 of file BTD.h.

+

Definition at line 160 of file BTD.h.

- + +

◆ L2CAP_FLAG_CONNECTION_RFCOMM_REQUEST

+
@@ -1843,11 +2024,13 @@ Macros
-

Definition at line 163 of file BTD.h.

+

Definition at line 163 of file BTD.h.

- + +

◆ L2CAP_FLAG_CONFIG_RFCOMM_SUCCESS

+
@@ -1857,11 +2040,13 @@ Macros
-

Definition at line 164 of file BTD.h.

+

Definition at line 164 of file BTD.h.

- + +

◆ L2CAP_FLAG_DISCONNECT_RFCOMM_REQUEST

+
@@ -1871,11 +2056,13 @@ Macros
-

Definition at line 165 of file BTD.h.

+

Definition at line 165 of file BTD.h.

- + +

◆ L2CAP_FLAG_DISCONNECT_RESPONSE

+
@@ -1885,11 +2072,13 @@ Macros
-

Definition at line 167 of file BTD.h.

+

Definition at line 167 of file BTD.h.

- + +

◆ l2cap_check_flag

+
@@ -1903,11 +2092,13 @@ Macros
-

Definition at line 170 of file BTD.h.

+

Definition at line 170 of file BTD.h.

- + +

◆ l2cap_set_flag

+
@@ -1921,11 +2112,13 @@ Macros
-

Definition at line 171 of file BTD.h.

+

Definition at line 171 of file BTD.h.

- + +

◆ l2cap_clear_flag

+
@@ -1939,11 +2132,13 @@ Macros
-

Definition at line 172 of file BTD.h.

+

Definition at line 172 of file BTD.h.

- + +

◆ L2CAP_CMD_COMMAND_REJECT

+
@@ -1953,11 +2148,13 @@ Macros
-

Definition at line 175 of file BTD.h.

+

Definition at line 175 of file BTD.h.

- + +

◆ L2CAP_CMD_CONNECTION_REQUEST

+
@@ -1967,11 +2164,13 @@ Macros
-

Definition at line 176 of file BTD.h.

+

Definition at line 176 of file BTD.h.

- + +

◆ L2CAP_CMD_CONNECTION_RESPONSE

+
@@ -1981,11 +2180,13 @@ Macros
-

Definition at line 177 of file BTD.h.

+

Definition at line 177 of file BTD.h.

- + +

◆ L2CAP_CMD_CONFIG_REQUEST

+
@@ -1995,11 +2196,13 @@ Macros
-

Definition at line 178 of file BTD.h.

+

Definition at line 178 of file BTD.h.

- + +

◆ L2CAP_CMD_CONFIG_RESPONSE

+
@@ -2009,11 +2212,13 @@ Macros
-

Definition at line 179 of file BTD.h.

+

Definition at line 179 of file BTD.h.

- + +

◆ L2CAP_CMD_DISCONNECT_REQUEST

+
@@ -2023,11 +2228,13 @@ Macros
-

Definition at line 180 of file BTD.h.

+

Definition at line 180 of file BTD.h.

- + +

◆ L2CAP_CMD_DISCONNECT_RESPONSE

+
@@ -2037,11 +2244,13 @@ Macros
-

Definition at line 181 of file BTD.h.

+

Definition at line 181 of file BTD.h.

- + +

◆ L2CAP_CMD_INFORMATION_REQUEST

+
@@ -2051,11 +2260,13 @@ Macros
-

Definition at line 182 of file BTD.h.

+

Definition at line 182 of file BTD.h.

- + +

◆ L2CAP_CMD_INFORMATION_RESPONSE

+
@@ -2065,11 +2276,13 @@ Macros
-

Definition at line 183 of file BTD.h.

+

Definition at line 183 of file BTD.h.

- + +

◆ PENDING

+
@@ -2079,11 +2292,13 @@ Macros
-

Definition at line 186 of file BTD.h.

+

Definition at line 186 of file BTD.h.

- + +

◆ SUCCESSFUL

+
@@ -2093,11 +2308,13 @@ Macros
-

Definition at line 187 of file BTD.h.

+

Definition at line 187 of file BTD.h.

- + +

◆ SDP_PSM

+
@@ -2107,11 +2324,13 @@ Macros
-

Definition at line 190 of file BTD.h.

+

Definition at line 190 of file BTD.h.

- + +

◆ RFCOMM_PSM

+
@@ -2121,11 +2340,13 @@ Macros
-

Definition at line 191 of file BTD.h.

+

Definition at line 191 of file BTD.h.

- + +

◆ HID_CTRL_PSM

+
@@ -2135,11 +2356,13 @@ Macros
-

Definition at line 192 of file BTD.h.

+

Definition at line 192 of file BTD.h.

- + +

◆ HID_INTR_PSM

+
@@ -2149,11 +2372,13 @@ Macros
-

Definition at line 193 of file BTD.h.

+

Definition at line 193 of file BTD.h.

- + +

◆ SDP_SERVICE_SEARCH_REQUEST

+
@@ -2163,11 +2388,13 @@ Macros
-

Definition at line 196 of file BTD.h.

+

Definition at line 196 of file BTD.h.

- + +

◆ SDP_SERVICE_SEARCH_RESPONSE

+
@@ -2177,11 +2404,13 @@ Macros
-

Definition at line 197 of file BTD.h.

+

Definition at line 197 of file BTD.h.

- + +

◆ SDP_SERVICE_ATTRIBUTE_REQUEST

+
@@ -2191,11 +2420,13 @@ Macros
-

Definition at line 198 of file BTD.h.

+

Definition at line 198 of file BTD.h.

- + +

◆ SDP_SERVICE_ATTRIBUTE_RESPONSE

+
@@ -2205,11 +2436,13 @@ Macros
-

Definition at line 199 of file BTD.h.

+

Definition at line 199 of file BTD.h.

- + +

◆ SDP_SERVICE_SEARCH_ATTRIBUTE_REQUEST

+
@@ -2219,11 +2452,13 @@ Macros
-

Definition at line 200 of file BTD.h.

+

Definition at line 200 of file BTD.h.

- + +

◆ SDP_SERVICE_SEARCH_ATTRIBUTE_RESPONSE

+
@@ -2233,11 +2468,13 @@ Macros
-

Definition at line 201 of file BTD.h.

+

Definition at line 201 of file BTD.h.

- + +

◆ PNP_INFORMATION_UUID

+
@@ -2247,11 +2484,13 @@ Macros
-

Definition at line 202 of file BTD.h.

+

Definition at line 202 of file BTD.h.

- + +

◆ SERIALPORT_UUID

+
@@ -2261,11 +2500,13 @@ Macros
-

Definition at line 203 of file BTD.h.

+

Definition at line 203 of file BTD.h.

- + +

◆ L2CAP_UUID

+
@@ -2275,11 +2516,13 @@ Macros
-

Definition at line 204 of file BTD.h.

+

Definition at line 204 of file BTD.h.

- + +

◆ WI_SUBCLASS_RF

+
@@ -2289,11 +2532,13 @@ Macros
-

Definition at line 207 of file BTD.h.

+

Definition at line 207 of file BTD.h.

- + +

◆ WI_PROTOCOL_BT

+
@@ -2303,11 +2548,13 @@ Macros
-

Definition at line 208 of file BTD.h.

+

Definition at line 208 of file BTD.h.

- + +

◆ BTD_MAX_ENDPOINTS

+
@@ -2317,11 +2564,13 @@ Macros
-

Definition at line 210 of file BTD.h.

+

Definition at line 210 of file BTD.h.

- + +

◆ BTD_NUM_SERVICES

+
@@ -2331,11 +2580,13 @@ Macros
-

Definition at line 211 of file BTD.h.

+

Definition at line 211 of file BTD.h.

- + +

◆ PAIR

+
@@ -2345,7 +2596,7 @@ Macros
-

Definition at line 213 of file BTD.h.

+

Definition at line 213 of file BTD.h.

@@ -2354,7 +2605,7 @@ Macros diff --git a/_b_t_d_8h__dep__incl.map b/_b_t_d_8h__dep__incl.map index f1f02286..d124b572 100644 --- a/_b_t_d_8h__dep__incl.map +++ b/_b_t_d_8h__dep__incl.map @@ -1,13 +1,13 @@ - - - - - + + + + + - - - - - + + + + + diff --git a/_b_t_d_8h__dep__incl.md5 b/_b_t_d_8h__dep__incl.md5 index bbea866d..c59fa974 100644 --- a/_b_t_d_8h__dep__incl.md5 +++ b/_b_t_d_8h__dep__incl.md5 @@ -1 +1 @@ -9039e772c47944b11e9bf0a098808b93 \ No newline at end of file +f319401190d1085c45724d4fdcb1e6d0 \ No newline at end of file diff --git a/_b_t_d_8h__dep__incl.png b/_b_t_d_8h__dep__incl.png index e8438b44..008b22f1 100644 Binary files a/_b_t_d_8h__dep__incl.png and b/_b_t_d_8h__dep__incl.png differ diff --git a/_b_t_d_8h__incl.map b/_b_t_d_8h__incl.map index 5dafafca..6468177d 100644 --- a/_b_t_d_8h__incl.map +++ b/_b_t_d_8h__incl.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/_b_t_d_8h__incl.md5 b/_b_t_d_8h__incl.md5 index e21490e4..251afce2 100644 --- a/_b_t_d_8h__incl.md5 +++ b/_b_t_d_8h__incl.md5 @@ -1 +1 @@ -197d6a6ff2afdc0a0703304559fc9c13 \ No newline at end of file +390162dc6dcc4addc7713fef630f65d1 \ No newline at end of file diff --git a/_b_t_d_8h__incl.png b/_b_t_d_8h__incl.png index 914dd3ca..cf56d7ac 100644 Binary files a/_b_t_d_8h__incl.png and b/_b_t_d_8h__incl.png differ diff --git a/_b_t_d_8h_source.html b/_b_t_d_8h_source.html index c647d303..d4605bdf 100644 --- a/_b_t_d_8h_source.html +++ b/_b_t_d_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: BTD.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
- + - - + + + +
- + - + - - + +
@@ -107,7 +84,7 @@ Include dependency graph for BTHID.cpp: diff --git a/_b_t_h_i_d_8cpp__incl.map b/_b_t_h_i_d_8cpp__incl.map index f4a1def3..45a2c201 100644 --- a/_b_t_h_i_d_8cpp__incl.map +++ b/_b_t_h_i_d_8cpp__incl.map @@ -1,8 +1,8 @@ - + - + - - + + diff --git a/_b_t_h_i_d_8cpp__incl.md5 b/_b_t_h_i_d_8cpp__incl.md5 index 457a9283..0f3b1317 100644 --- a/_b_t_h_i_d_8cpp__incl.md5 +++ b/_b_t_h_i_d_8cpp__incl.md5 @@ -1 +1 @@ -2fddcbac34cc48df9a24e3c113c74570 \ No newline at end of file +b0bd84a1b94c9a61dc97b5614bffe745 \ No newline at end of file diff --git a/_b_t_h_i_d_8cpp__incl.png b/_b_t_h_i_d_8cpp__incl.png index 03e6136e..17e10500 100644 Binary files a/_b_t_h_i_d_8cpp__incl.png and b/_b_t_h_i_d_8cpp__incl.png differ diff --git a/_b_t_h_i_d_8cpp_source.html b/_b_t_h_i_d_8cpp_source.html index 7d26fd4c..f3ffeace 100644 --- a/_b_t_h_i_d_8cpp_source.html +++ b/_b_t_h_i_d_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: BTHID.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- + - - + +
@@ -109,8 +86,8 @@ This graph shows which files directly or indirectly include this file:
- - + +
@@ -131,7 +108,9 @@ Macros  

Macro Definition Documentation

- + +

◆ KEYBOARD_PARSER_ID

+
@@ -141,11 +120,13 @@ Macros
-

Definition at line 24 of file BTHID.h.

+

Definition at line 24 of file BTHID.h.

- + +

◆ MOUSE_PARSER_ID

+
@@ -155,11 +136,13 @@ Macros
-

Definition at line 25 of file BTHID.h.

+

Definition at line 25 of file BTHID.h.

- + +

◆ NUM_PARSERS

+
@@ -169,7 +152,7 @@ Macros
-

Definition at line 26 of file BTHID.h.

+

Definition at line 26 of file BTHID.h.

@@ -178,7 +161,7 @@ Macros diff --git a/_b_t_h_i_d_8h__dep__incl.map b/_b_t_h_i_d_8h__dep__incl.map index 953e5981..a8f40d95 100644 --- a/_b_t_h_i_d_8h__dep__incl.map +++ b/_b_t_h_i_d_8h__dep__incl.map @@ -1,5 +1,5 @@ - - + + diff --git a/_b_t_h_i_d_8h__dep__incl.md5 b/_b_t_h_i_d_8h__dep__incl.md5 index 33bd7539..6a659db3 100644 --- a/_b_t_h_i_d_8h__dep__incl.md5 +++ b/_b_t_h_i_d_8h__dep__incl.md5 @@ -1 +1 @@ -f1f4d069fb346aadbae9c219f4a36799 \ No newline at end of file +f5ffabeee933ef99da0ca226df2def53 \ No newline at end of file diff --git a/_b_t_h_i_d_8h__dep__incl.png b/_b_t_h_i_d_8h__dep__incl.png index 7db4b80b..2b3e98b5 100644 Binary files a/_b_t_h_i_d_8h__dep__incl.png and b/_b_t_h_i_d_8h__dep__incl.png differ diff --git a/_b_t_h_i_d_8h__incl.map b/_b_t_h_i_d_8h__incl.map index 49aa9685..4d8979a2 100644 --- a/_b_t_h_i_d_8h__incl.map +++ b/_b_t_h_i_d_8h__incl.map @@ -1,7 +1,7 @@ - + - - + + diff --git a/_b_t_h_i_d_8h__incl.md5 b/_b_t_h_i_d_8h__incl.md5 index aefec681..d3d074cc 100644 --- a/_b_t_h_i_d_8h__incl.md5 +++ b/_b_t_h_i_d_8h__incl.md5 @@ -1 +1 @@ -d78862557f9f3bddfcdcfa91190beeac \ No newline at end of file +b3c29136fe98c9d8e7c6c6b7a9475517 \ No newline at end of file diff --git a/_b_t_h_i_d_8h__incl.png b/_b_t_h_i_d_8h__incl.png index 189bfc76..432e1eaf 100644 Binary files a/_b_t_h_i_d_8h__incl.png and b/_b_t_h_i_d_8h__incl.png differ diff --git a/_b_t_h_i_d_8h_source.html b/_b_t_h_i_d_8h_source.html index f352c142..cc0f4445 100644 --- a/_b_t_h_i_d_8h_source.html +++ b/_b_t_h_i_d_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: BTHID.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - - - - - - + + + + + + +
@@ -108,7 +85,7 @@ Include dependency graph for PS3BT.cpp: diff --git a/_p_s3_b_t_8cpp__incl.map b/_p_s3_b_t_8cpp__incl.map index 66b9764a..248c85e9 100644 --- a/_p_s3_b_t_8cpp__incl.map +++ b/_p_s3_b_t_8cpp__incl.map @@ -1,9 +1,9 @@ - - - - - - - + + + + + + + diff --git a/_p_s3_b_t_8cpp__incl.md5 b/_p_s3_b_t_8cpp__incl.md5 index 47f6eaf8..0d2883f6 100644 --- a/_p_s3_b_t_8cpp__incl.md5 +++ b/_p_s3_b_t_8cpp__incl.md5 @@ -1 +1 @@ -50d55f1029d7b23c50d71899212fd03f \ No newline at end of file +fcd6fdd81a5a62e824f047cf224529eb \ No newline at end of file diff --git a/_p_s3_b_t_8cpp__incl.png b/_p_s3_b_t_8cpp__incl.png index 406ff57f..81300da5 100644 Binary files a/_p_s3_b_t_8cpp__incl.png and b/_p_s3_b_t_8cpp__incl.png differ diff --git a/_p_s3_b_t_8cpp_source.html b/_p_s3_b_t_8cpp_source.html index e076c6f9..960ac8ec 100644 --- a/_p_s3_b_t_8cpp_source.html +++ b/_p_s3_b_t_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: PS3BT.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - - - - - + + + + + +
@@ -109,7 +86,7 @@ This graph shows which files directly or indirectly include this file:
- +
@@ -126,7 +103,9 @@ Macros  

Macro Definition Documentation

- + +

◆ HID_BUFFERSIZE

+
@@ -136,7 +115,7 @@ Macros
-

Definition at line 24 of file PS3BT.h.

+

Definition at line 24 of file PS3BT.h.

@@ -145,7 +124,7 @@ Macros diff --git a/_p_s3_b_t_8h__dep__incl.map b/_p_s3_b_t_8h__dep__incl.map index 5e219ab8..cfcb63bc 100644 --- a/_p_s3_b_t_8h__dep__incl.map +++ b/_p_s3_b_t_8h__dep__incl.map @@ -1,3 +1,3 @@ - + diff --git a/_p_s3_b_t_8h__dep__incl.md5 b/_p_s3_b_t_8h__dep__incl.md5 index 80c124ec..2014c83c 100644 --- a/_p_s3_b_t_8h__dep__incl.md5 +++ b/_p_s3_b_t_8h__dep__incl.md5 @@ -1 +1 @@ -eba794dfcd5eea5cd385cf4d1f0cee96 \ No newline at end of file +ac5ec06c541321e25eb4c20223ecb1d0 \ No newline at end of file diff --git a/_p_s3_b_t_8h__dep__incl.png b/_p_s3_b_t_8h__dep__incl.png index fabe3366..1b5131e7 100644 Binary files a/_p_s3_b_t_8h__dep__incl.png and b/_p_s3_b_t_8h__dep__incl.png differ diff --git a/_p_s3_b_t_8h__incl.map b/_p_s3_b_t_8h__incl.map index 11d3a286..3969b9c6 100644 --- a/_p_s3_b_t_8h__incl.map +++ b/_p_s3_b_t_8h__incl.map @@ -1,8 +1,8 @@ - - - - - - + + + + + + diff --git a/_p_s3_b_t_8h__incl.md5 b/_p_s3_b_t_8h__incl.md5 index dbb83515..4fa201c6 100644 --- a/_p_s3_b_t_8h__incl.md5 +++ b/_p_s3_b_t_8h__incl.md5 @@ -1 +1 @@ -90cb54a3b8ad4256770707efdc9f2bdc \ No newline at end of file +099874d321d87a5f12d52372f8d8ae4d \ No newline at end of file diff --git a/_p_s3_b_t_8h__incl.png b/_p_s3_b_t_8h__incl.png index e2e8bf73..ae0d0075 100644 Binary files a/_p_s3_b_t_8h__incl.png and b/_p_s3_b_t_8h__incl.png differ diff --git a/_p_s3_b_t_8h_source.html b/_p_s3_b_t_8h_source.html index 8c4aad4d..7cea80c8 100644 --- a/_p_s3_b_t_8h_source.html +++ b/_p_s3_b_t_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: PS3BT.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- +
@@ -104,10 +81,10 @@ This graph shows which files directly or indirectly include this file:
- - - - + + + +
@@ -163,7 +140,9 @@ Variables  

Macro Definition Documentation

- + +

◆ PS3_REPORT_BUFFER_SIZE

+
@@ -174,11 +153,13 @@ Variables

Size of the output report buffer for the Dualshock and Navigation controllers

-

Definition at line 24 of file PS3Enums.h.

+

Definition at line 24 of file PS3Enums.h.

- + +

◆ MOVE_REPORT_BUFFER_SIZE

+
@@ -189,12 +170,14 @@ Variables

Size of the output report buffer for the Move Controller

-

Definition at line 40 of file PS3Enums.h.

+

Definition at line 40 of file PS3Enums.h.

Enumeration Type Documentation

- + +

◆ StatusEnum

+
@@ -204,54 +187,36 @@ Variables
- - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + +
Enumerator
Plugged  -
Unplugged  -
Charging  -
NotCharging  -
Shutdown  -
Dying  -
Low  -
High  -
Full  -
MoveCharging  -
MoveNotCharging  -
MoveShutdown  -
MoveDying  -
MoveLow  -
MoveHigh  -
MoveFull  -
CableRumble  -
Cable  -
BluetoothRumble  -
Bluetooth  -
Enumerator
Plugged 
Unplugged 
Charging 
NotCharging 
Shutdown 
Dying 
Low 
High 
Full 
MoveCharging 
MoveNotCharging 
MoveShutdown 
MoveDying 
MoveLow 
MoveHigh 
MoveFull 
CableRumble 
Cable 
BluetoothRumble 
Bluetooth 
-

Definition at line 113 of file PS3Enums.h.

+

Definition at line 113 of file PS3Enums.h.

Variable Documentation

- + +

◆ PS3_REPORT_BUFFER

+
@@ -262,11 +227,13 @@ Variables
Initial value:
= {
0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0x27, 0x10, 0x00, 0x32,
0xff, 0x27, 0x10, 0x00, 0x32,
0xff, 0x27, 0x10, 0x00, 0x32,
0xff, 0x27, 0x10, 0x00, 0x32,
0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}

Report buffer for all PS3 commands

-

Definition at line 27 of file PS3Enums.h.

+

Definition at line 27 of file PS3Enums.h.

- + +

◆ PS3_LEDS

+
@@ -277,11 +244,13 @@ Variables
Initial value:
= {
0x00,
0x01,
0x02,
0x04,
0x08,
0x09,
0x0A,
0x0C,
0x0D,
0x0E,
0x0F,
}

Used to set the LEDs on the controllers

-

Definition at line 43 of file PS3Enums.h.

+

Definition at line 43 of file PS3Enums.h.

- + +

◆ PS3_BUTTONS

+
@@ -292,11 +261,13 @@ Variables
Initial value:
= {
0x10,
0x20,
0x40,
0x80,
0x01,
0x08,
0x02,
0x04,
0x0100,
0x0200,
0x0400,
0x0800,
0x1000,
0x2000,
0x4000,
0x8000,
0x010000,
0x080000,
0x100000,
}

Buttons on the controllers. Note: that the location is shifted 9 when it's connected via USB.

-

Definition at line 62 of file PS3Enums.h.

+

Definition at line 62 of file PS3Enums.h.

- + +

◆ PS3_ANALOG_BUTTONS

+
@@ -307,7 +278,7 @@ Variables
Initial value:
= {
23,
24,
25,
26,
0, 0, 0, 0,
27,
28,
29,
30,
31,
32,
33,
34,
0, 0,
15,
}

Analog buttons on the controllers. Note: that the location is shifted 9 when it's connected via USB.

-

Definition at line 92 of file PS3Enums.h.

+

Definition at line 92 of file PS3Enums.h.

@@ -316,7 +287,7 @@ Variables diff --git a/_p_s3_enums_8h__dep__incl.map b/_p_s3_enums_8h__dep__incl.map index 763a7d9c..b8038a2b 100644 --- a/_p_s3_enums_8h__dep__incl.map +++ b/_p_s3_enums_8h__dep__incl.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/_p_s3_enums_8h__dep__incl.md5 b/_p_s3_enums_8h__dep__incl.md5 index 7e6c593e..d15e13ed 100644 --- a/_p_s3_enums_8h__dep__incl.md5 +++ b/_p_s3_enums_8h__dep__incl.md5 @@ -1 +1 @@ -2ee6fe4e5f4f5bb8864f711284e44ace \ No newline at end of file +c77fa45db98b8115b80889d20542091c \ No newline at end of file diff --git a/_p_s3_enums_8h__dep__incl.png b/_p_s3_enums_8h__dep__incl.png index db1f5fde..40584c46 100644 Binary files a/_p_s3_enums_8h__dep__incl.png and b/_p_s3_enums_8h__dep__incl.png differ diff --git a/_p_s3_enums_8h__incl.map b/_p_s3_enums_8h__incl.map index 6913856a..8e712ea1 100644 --- a/_p_s3_enums_8h__incl.map +++ b/_p_s3_enums_8h__incl.map @@ -1,3 +1,3 @@ - + diff --git a/_p_s3_enums_8h__incl.md5 b/_p_s3_enums_8h__incl.md5 index a2b68ead..800faca3 100644 --- a/_p_s3_enums_8h__incl.md5 +++ b/_p_s3_enums_8h__incl.md5 @@ -1 +1 @@ -1b975049347183489796e6dc1da09be9 \ No newline at end of file +366db2510595573cf7f9662dbbc66c23 \ No newline at end of file diff --git a/_p_s3_enums_8h__incl.png b/_p_s3_enums_8h__incl.png index b70aa1bf..12536a73 100644 Binary files a/_p_s3_enums_8h__incl.png and b/_p_s3_enums_8h__incl.png differ diff --git a/_p_s3_enums_8h_source.html b/_p_s3_enums_8h_source.html index a57c8678..e4034844 100644 --- a/_p_s3_enums_8h_source.html +++ b/_p_s3_enums_8h_source.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: PS3Enums.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
- + - - + + + +
- - - - - - + + + + + +
@@ -107,7 +84,7 @@ Include dependency graph for PS3USB.cpp: diff --git a/_p_s3_u_s_b_8cpp__incl.map b/_p_s3_u_s_b_8cpp__incl.map index 8125e244..20ab99c2 100644 --- a/_p_s3_u_s_b_8cpp__incl.map +++ b/_p_s3_u_s_b_8cpp__incl.map @@ -1,8 +1,8 @@ - - - - - - + + + + + + diff --git a/_p_s3_u_s_b_8cpp__incl.md5 b/_p_s3_u_s_b_8cpp__incl.md5 index a9693dff..b62523cb 100644 --- a/_p_s3_u_s_b_8cpp__incl.md5 +++ b/_p_s3_u_s_b_8cpp__incl.md5 @@ -1 +1 @@ -6fe7e16b5e65f19d54865f8f0649448b \ No newline at end of file +d1b34b2e5c4f9117dc52f0fee30ee629 \ No newline at end of file diff --git a/_p_s3_u_s_b_8cpp__incl.png b/_p_s3_u_s_b_8cpp__incl.png index 80c55344..b572641b 100644 Binary files a/_p_s3_u_s_b_8cpp__incl.png and b/_p_s3_u_s_b_8cpp__incl.png differ diff --git a/_p_s3_u_s_b_8cpp_source.html b/_p_s3_u_s_b_8cpp_source.html index 4a0dc157..35e51af7 100644 --- a/_p_s3_u_s_b_8cpp_source.html +++ b/_p_s3_u_s_b_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: PS3USB.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - - - - + + + + +
@@ -109,7 +86,7 @@ This graph shows which files directly or indirectly include this file:
- +
@@ -142,7 +119,9 @@ Macros  

Macro Definition Documentation

- + +

◆ EP_MAXPKTSIZE

+
@@ -152,11 +131,13 @@ Macros
-

Definition at line 26 of file PS3USB.h.

+

Definition at line 26 of file PS3USB.h.

- + +

◆ PS3_CONTROL_PIPE

+
@@ -166,11 +147,13 @@ Macros
-

Definition at line 29 of file PS3USB.h.

+

Definition at line 29 of file PS3USB.h.

- + +

◆ PS3_OUTPUT_PIPE

+
@@ -180,11 +163,13 @@ Macros
-

Definition at line 30 of file PS3USB.h.

+

Definition at line 30 of file PS3USB.h.

- + +

◆ PS3_INPUT_PIPE

+
@@ -194,11 +179,13 @@ Macros
-

Definition at line 31 of file PS3USB.h.

+

Definition at line 31 of file PS3USB.h.

- + +

◆ PS3_VID

+
@@ -208,11 +195,13 @@ Macros
-

Definition at line 34 of file PS3USB.h.

+

Definition at line 34 of file PS3USB.h.

- + +

◆ PS3_PID

+
@@ -222,11 +211,13 @@ Macros
-

Definition at line 35 of file PS3USB.h.

+

Definition at line 35 of file PS3USB.h.

- + +

◆ PS3NAVIGATION_PID

+
@@ -236,11 +227,13 @@ Macros
-

Definition at line 36 of file PS3USB.h.

+

Definition at line 36 of file PS3USB.h.

- + +

◆ PS3MOVE_PID

+
@@ -250,11 +243,13 @@ Macros
-

Definition at line 37 of file PS3USB.h.

+

Definition at line 37 of file PS3USB.h.

- + +

◆ PS3_MAX_ENDPOINTS

+
@@ -264,7 +259,7 @@ Macros
-

Definition at line 39 of file PS3USB.h.

+

Definition at line 39 of file PS3USB.h.

@@ -273,7 +268,7 @@ Macros diff --git a/_p_s3_u_s_b_8h__dep__incl.map b/_p_s3_u_s_b_8h__dep__incl.map index 667ba04f..0597b96d 100644 --- a/_p_s3_u_s_b_8h__dep__incl.map +++ b/_p_s3_u_s_b_8h__dep__incl.map @@ -1,3 +1,3 @@ - + diff --git a/_p_s3_u_s_b_8h__dep__incl.md5 b/_p_s3_u_s_b_8h__dep__incl.md5 index 12e5013f..a0ef30bd 100644 --- a/_p_s3_u_s_b_8h__dep__incl.md5 +++ b/_p_s3_u_s_b_8h__dep__incl.md5 @@ -1 +1 @@ -0475266e9b2a94b52ed82e482fd5e58c \ No newline at end of file +30b451c7325a69f7529dfbe204eb0dfb \ No newline at end of file diff --git a/_p_s3_u_s_b_8h__dep__incl.png b/_p_s3_u_s_b_8h__dep__incl.png index 3e3167b1..3a42daab 100644 Binary files a/_p_s3_u_s_b_8h__dep__incl.png and b/_p_s3_u_s_b_8h__dep__incl.png differ diff --git a/_p_s3_u_s_b_8h__incl.map b/_p_s3_u_s_b_8h__incl.map index a496e764..731dd5d3 100644 --- a/_p_s3_u_s_b_8h__incl.map +++ b/_p_s3_u_s_b_8h__incl.map @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/_p_s3_u_s_b_8h__incl.md5 b/_p_s3_u_s_b_8h__incl.md5 index 8fa52d90..016045ba 100644 --- a/_p_s3_u_s_b_8h__incl.md5 +++ b/_p_s3_u_s_b_8h__incl.md5 @@ -1 +1 @@ -6e3e4f5a4587d0eabc83a6049ce6f258 \ No newline at end of file +80bc9dd64df8547bd5be104488ba1f29 \ No newline at end of file diff --git a/_p_s3_u_s_b_8h__incl.png b/_p_s3_u_s_b_8h__incl.png index 95bbe266..cdd2d294 100644 Binary files a/_p_s3_u_s_b_8h__incl.png and b/_p_s3_u_s_b_8h__incl.png differ diff --git a/_p_s3_u_s_b_8h_source.html b/_p_s3_u_s_b_8h_source.html index 5b679975..3899d50d 100644 --- a/_p_s3_u_s_b_8h_source.html +++ b/_p_s3_u_s_b_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: PS3USB.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - + + - - - - - + + + + +
@@ -118,7 +95,7 @@ Classes diff --git a/_p_s4_b_t_8h__incl.map b/_p_s4_b_t_8h__incl.map index f2f326c3..83acbe5f 100644 --- a/_p_s4_b_t_8h__incl.map +++ b/_p_s4_b_t_8h__incl.map @@ -1,10 +1,10 @@ - - + + - - - - - + + + + + diff --git a/_p_s4_b_t_8h__incl.md5 b/_p_s4_b_t_8h__incl.md5 index 13fdf4c6..1116a2ed 100644 --- a/_p_s4_b_t_8h__incl.md5 +++ b/_p_s4_b_t_8h__incl.md5 @@ -1 +1 @@ -57aad865c1c7b4a544a7eac684f0ffd9 \ No newline at end of file +d83187f481bdeb098a3bb36f43274a13 \ No newline at end of file diff --git a/_p_s4_b_t_8h__incl.png b/_p_s4_b_t_8h__incl.png index 083220ee..6b0bdacd 100644 Binary files a/_p_s4_b_t_8h__incl.png and b/_p_s4_b_t_8h__incl.png differ diff --git a/_p_s4_b_t_8h_source.html b/_p_s4_b_t_8h_source.html index 645ab860..79748b19 100644 --- a/_p_s4_b_t_8h_source.html +++ b/_p_s4_b_t_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: PS4BT.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - - + + +
@@ -132,7 +109,9 @@ Enumerations  

Enumeration Type Documentation

- + +

◆ DPADEnum

+
@@ -142,45 +121,27 @@ Enumerations
- - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +
Enumerator
DPAD_UP  -
DPAD_UP_RIGHT  -
DPAD_RIGHT  -
DPAD_RIGHT_DOWN  -
DPAD_DOWN  -
DPAD_DOWN_LEFT  -
DPAD_LEFT  -
DPAD_LEFT_UP  -
DPAD_OFF  -
DPAD_OFF  -
DPAD_UP  -
DPAD_UP_RIGHT  -
DPAD_RIGHT  -
DPAD_RIGHT_DOWN  -
DPAD_DOWN  -
DPAD_DOWN_LEFT  -
DPAD_LEFT  -
DPAD_LEFT_UP  -
Enumerator
DPAD_UP 
DPAD_UP_RIGHT 
DPAD_RIGHT 
DPAD_RIGHT_DOWN 
DPAD_DOWN 
DPAD_DOWN_LEFT 
DPAD_LEFT 
DPAD_LEFT_UP 
DPAD_OFF 
DPAD_OFF 
DPAD_UP 
DPAD_UP_RIGHT 
DPAD_RIGHT 
DPAD_RIGHT_DOWN 
DPAD_DOWN 
DPAD_DOWN_LEFT 
DPAD_LEFT 
DPAD_LEFT_UP 
-

Definition at line 20 of file PS4Parser.cpp.

+

Definition at line 20 of file PS4Parser.cpp.

@@ -189,7 +150,7 @@ Enumerations diff --git a/_p_s4_parser_8cpp__incl.map b/_p_s4_parser_8cpp__incl.map index a426c81a..4aa44e51 100644 --- a/_p_s4_parser_8cpp__incl.map +++ b/_p_s4_parser_8cpp__incl.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/_p_s4_parser_8cpp__incl.md5 b/_p_s4_parser_8cpp__incl.md5 index 1f9ffe4e..37924f33 100644 --- a/_p_s4_parser_8cpp__incl.md5 +++ b/_p_s4_parser_8cpp__incl.md5 @@ -1 +1 @@ -03082f2d3fd4c67e7d5789f05b2dd70a \ No newline at end of file +d25b4790cd5001e08560c2238a2e6903 \ No newline at end of file diff --git a/_p_s4_parser_8cpp__incl.png b/_p_s4_parser_8cpp__incl.png index 0daabf52..fc950a42 100644 Binary files a/_p_s4_parser_8cpp__incl.png and b/_p_s4_parser_8cpp__incl.png differ diff --git a/_p_s4_parser_8cpp_source.html b/_p_s4_parser_8cpp_source.html index b0103554..e0a07fc0 100644 --- a/_p_s4_parser_8cpp_source.html +++ b/_p_s4_parser_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: PS4Parser.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + +
PS4Output::smallRumble
uint8_t smallRumble
Definition: PS4Parser.h:117
PS4Parser.h
PSTR
#define PSTR(str)
Definition: version_helper.h:54
-
MFK_CASTUINT8T
#define MFK_CASTUINT8T
Definition: settings.h:196
+
MFK_CASTUINT8T
#define MFK_CASTUINT8T
Definition: settings.h:194
PS4Buttons::dpad
uint8_t dpad
Definition: PS4Parser.h:52
touchpadXY::finger
struct touchpadXY::@30 finger[2]
PS4Data::xy
touchpadXY xy[3]
Definition: PS4Parser.h:108
@@ -138,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/_p_s4_parser_8h.html b/_p_s4_parser_8h.html index f3186963..975f5def 100644 --- a/_p_s4_parser_8h.html +++ b/_p_s4_parser_8h.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: PS4Parser.h File Reference @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + +
- - + +
@@ -105,9 +82,9 @@ This graph shows which files directly or indirectly include this file:
- - - + + +
@@ -134,7 +111,9 @@ Variables  

Variable Documentation

- + +

◆ PS4_BUTTONS

+
@@ -149,7 +128,7 @@ Variables

Buttons on the controller

-

Definition at line 25 of file PS4Parser.h.

+

Definition at line 25 of file PS4Parser.h.

@@ -158,7 +137,7 @@ Variables diff --git a/_p_s4_parser_8h__dep__incl.map b/_p_s4_parser_8h__dep__incl.map index ae9e045f..64f9dc09 100644 --- a/_p_s4_parser_8h__dep__incl.map +++ b/_p_s4_parser_8h__dep__incl.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/_p_s4_parser_8h__dep__incl.md5 b/_p_s4_parser_8h__dep__incl.md5 index 2dc29627..f0c27ce8 100644 --- a/_p_s4_parser_8h__dep__incl.md5 +++ b/_p_s4_parser_8h__dep__incl.md5 @@ -1 +1 @@ -4d5a405a295dec480becbdb408726c5e \ No newline at end of file +479deb6480f10f264b96e5acadbf5ee5 \ No newline at end of file diff --git a/_p_s4_parser_8h__dep__incl.png b/_p_s4_parser_8h__dep__incl.png index a33fed99..ee6e96a1 100644 Binary files a/_p_s4_parser_8h__dep__incl.png and b/_p_s4_parser_8h__dep__incl.png differ diff --git a/_p_s4_parser_8h__incl.map b/_p_s4_parser_8h__incl.map index 690dcd55..1efd2c0c 100644 --- a/_p_s4_parser_8h__incl.map +++ b/_p_s4_parser_8h__incl.map @@ -1,4 +1,4 @@ - - + + diff --git a/_p_s4_parser_8h__incl.md5 b/_p_s4_parser_8h__incl.md5 index a7437e13..d2017c34 100644 --- a/_p_s4_parser_8h__incl.md5 +++ b/_p_s4_parser_8h__incl.md5 @@ -1 +1 @@ -29a4989044a63001a938d41ea83d3491 \ No newline at end of file +4cb75d366ef1e7f193c5b93a0446b36b \ No newline at end of file diff --git a/_p_s4_parser_8h__incl.png b/_p_s4_parser_8h__incl.png index 98252f49..c2b70da9 100644 Binary files a/_p_s4_parser_8h__incl.png and b/_p_s4_parser_8h__incl.png differ diff --git a/_p_s4_parser_8h_source.html b/_p_s4_parser_8h_source.html index 951932f9..df4083a6 100644 --- a/_p_s4_parser_8h_source.html +++ b/_p_s4_parser_8h_source.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: PS4Parser.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
PS4Parser.h
-Go to the documentation of this file.
1 /* Copyright (C) 2014 Kristian Lauszus, TKJ Electronics. All rights reserved.
2 
3  This software may be distributed and modified under the terms of the GNU
4  General Public License version 2 (GPL2) as published by the Free Software
5  Foundation and appearing in the file GPL2.TXT included in the packaging of
6  this file. Please note that GPL2 Section 2[b] requires that all works based
7  on this software must also be made publicly available under the terms of
8  the GPL2 ("Copyleft").
9 
10  Contact information
11  -------------------
12 
13  Kristian Lauszus, TKJ Electronics
14  Web : http://www.tkjelectronics.com
15  e-mail : kristianl@tkjelectronics.com
16  */
17 
18 #ifndef _ps4parser_h_
19 #define _ps4parser_h_
20 
21 #include "Usb.h"
22 #include "controllerEnums.h"
23 
25 const uint8_t PS4_BUTTONS[] PROGMEM = {
26  UP, // UP
27  RIGHT, // RIGHT
28  DOWN, // DOWN
29  LEFT, // LEFT
30 
31  0x0C, // SHARE
32  0x0D, // OPTIONS
33  0x0E, // L3
34  0x0F, // R3
35 
36  0x0A, // L2
37  0x0B, // R2
38  0x08, // L1
39  0x09, // R1
40 
41  0x07, // TRIANGLE
42  0x06, // CIRCLE
43  0x05, // CROSS
44  0x04, // SQUARE
45 
46  0x10, // PS
47  0x11, // TOUCHPAD
48 };
49 
50 union PS4Buttons {
51  struct {
52  uint8_t dpad : 4;
53  uint8_t square : 1;
54  uint8_t cross : 1;
55  uint8_t circle : 1;
56  uint8_t triangle : 1;
57 
58  uint8_t l1 : 1;
59  uint8_t r1 : 1;
60  uint8_t l2 : 1;
61  uint8_t r2 : 1;
62  uint8_t share : 1;
63  uint8_t options : 1;
64  uint8_t l3 : 1;
65  uint8_t r3 : 1;
66 
67  uint8_t ps : 1;
68  uint8_t touchpad : 1;
69  uint8_t reportCounter : 6;
70  } __attribute__((packed));
71  uint32_t val : 24;
72 } __attribute__((packed));
73 
74 struct touchpadXY {
75  uint8_t dummy; // I can not figure out what this data is for, it seems to change randomly, maybe a timestamp?
76  struct {
77  uint8_t counter : 7; // Increments every time a finger is touching the touchpad
78  uint8_t touching : 1; // The top bit is cleared if the finger is touching the touchpad
79  uint16_t x : 12;
80  uint16_t y : 12;
81  } __attribute__((packed)) finger[2]; // 0 = first finger, 1 = second finger
82 } __attribute__((packed));
83 
84 struct PS4Status {
85  uint8_t battery : 4;
86  uint8_t usb : 1;
87  uint8_t audio : 1;
88  uint8_t mic : 1;
89  uint8_t unknown : 1; // Extension port?
90 } __attribute__((packed));
91 
92 struct PS4Data {
93  /* Button and joystick values */
94  uint8_t hatValue[4];
96  uint8_t trigger[2];
97 
98  /* Gyro and accelerometer values */
99  uint8_t dummy[3]; // First two looks random, while the third one might be some kind of status - it increments once in a while
100  int16_t gyroY, gyroZ, gyroX;
101  int16_t accX, accZ, accY;
102 
103  uint8_t dummy2[5];
105  uint8_t dummy3[3];
106 
107  /* The rest is data for the touchpad */
108  touchpadXY xy[3]; // It looks like it sends out three coordinates each time, this might be because the microcontroller inside the PS4 controller is much faster than the Bluetooth connection.
109  // The last data is read from the last position in the array while the oldest measurement is from the first position.
110  // The first position will also keep it's value after the finger is released, while the other two will set them to zero.
111  // Note that if you read fast enough from the device, then only the first one will contain any data.
112 
113  // The last three bytes are always: 0x00, 0x80, 0x00
114 } __attribute__((packed));
115 
116 struct PS4Output {
117  uint8_t bigRumble, smallRumble; // Rumble
118  uint8_t r, g, b; // RGB
119  uint8_t flashOn, flashOff; // Time to flash bright/dark (255 = 2.5 seconds)
120  bool reportChanged; // The data is send when data is received from the controller
121 } __attribute__((packed));
122 
124 class PS4Parser {
125 public:
128  Reset();
129  };
130 
142  bool getButtonPress(ButtonEnum b);
143  bool getButtonClick(ButtonEnum b);
153  uint8_t getAnalogButton(ButtonEnum b);
154 
160  uint8_t getAnalogHat(AnalogHatEnum a);
161 
170  uint16_t getX(uint8_t finger = 0, uint8_t xyId = 0) {
171  return ps4Data.xy[xyId].finger[finger].x;
172  };
173 
182  uint16_t getY(uint8_t finger = 0, uint8_t xyId = 0) {
183  return ps4Data.xy[xyId].finger[finger].y;
184  };
185 
194  bool isTouching(uint8_t finger = 0, uint8_t xyId = 0) {
195  return !(ps4Data.xy[xyId].finger[finger].touching); // The bit is cleared when a finger is touching the touchpad
196  };
197 
206  uint8_t getTouchCounter(uint8_t finger = 0, uint8_t xyId = 0) {
207  return ps4Data.xy[xyId].finger[finger].counter;
208  };
209 
215  float getAngle(AngleEnum a) {
216  if (a == Pitch)
217  return (atan2f(ps4Data.accY, ps4Data.accZ) + PI) * RAD_TO_DEG;
218  else
219  return (atan2f(ps4Data.accX, ps4Data.accZ) + PI) * RAD_TO_DEG;
220  };
221 
227  int16_t getSensor(SensorEnum s) {
228  switch(s) {
229  case gX:
230  return ps4Data.gyroX;
231  case gY:
232  return ps4Data.gyroY;
233  case gZ:
234  return ps4Data.gyroZ;
235  case aX:
236  return ps4Data.accX;
237  case aY:
238  return ps4Data.accY;
239  case aZ:
240  return ps4Data.accZ;
241  default:
242  return 0;
243  }
244  };
245 
250  uint8_t getBatteryLevel() {
251  return ps4Data.status.battery;
252  };
253 
258  bool getUsbStatus() {
259  return ps4Data.status.usb;
260  };
261 
266  bool getAudioStatus() {
267  return ps4Data.status.audio;
268  };
269 
274  bool getMicStatus() {
275  return ps4Data.status.mic;
276  };
277 
279  void setAllOff() {
280  setRumbleOff();
281  setLedOff();
282  };
283 
285  void setRumbleOff() {
286  setRumbleOn(0, 0);
287  };
288 
293  void setRumbleOn(RumbleEnum mode) {
294  if (mode == RumbleLow)
295  setRumbleOn(0x00, 0xFF);
296  else
297  setRumbleOn(0xFF, 0x00);
298  };
299 
305  void setRumbleOn(uint8_t bigRumble, uint8_t smallRumble) {
306  ps4Output.bigRumble = bigRumble;
307  ps4Output.smallRumble = smallRumble;
308  ps4Output.reportChanged = true;
309  };
310 
312  void setLedOff() {
313  setLed(0, 0, 0);
314  };
315 
320  void setLed(uint8_t r, uint8_t g, uint8_t b) {
321  ps4Output.r = r;
322  ps4Output.g = g;
323  ps4Output.b = b;
324  ps4Output.reportChanged = true;
325  };
326 
331  void setLed(ColorsEnum color) {
332  setLed((uint8_t)(color >> 16), (uint8_t)(color >> 8), (uint8_t)(color));
333  };
334 
340  void setLedFlash(uint8_t flashOn, uint8_t flashOff) {
341  ps4Output.flashOn = flashOn;
342  ps4Output.flashOff = flashOff;
343  ps4Output.reportChanged = true;
344  };
347 protected:
353  void Parse(uint8_t len, uint8_t *buf);
354 
356  void Reset();
357 
362  virtual void sendOutputReport(PS4Output *output) = 0;
363 
364 private:
365  bool checkDpad(ButtonEnum b); // Used to check PS4 DPAD buttons
366 
367  PS4Data ps4Data;
368  PS4Buttons oldButtonState, buttonClickState;
369  PS4Output ps4Output;
370  uint8_t oldDpad;
371 };
372 #endif
uint8_t getBatteryLevel()
Definition: PS4Parser.h:250
+Go to the documentation of this file.
1 /* Copyright (C) 2014 Kristian Lauszus, TKJ Electronics. All rights reserved.
2 
3  This software may be distributed and modified under the terms of the GNU
4  General Public License version 2 (GPL2) as published by the Free Software
5  Foundation and appearing in the file GPL2.TXT included in the packaging of
6  this file. Please note that GPL2 Section 2[b] requires that all works based
7  on this software must also be made publicly available under the terms of
8  the GPL2 ("Copyleft").
9 
10  Contact information
11  -------------------
12 
13  Kristian Lauszus, TKJ Electronics
14  Web : http://www.tkjelectronics.com
15  e-mail : kristianl@tkjelectronics.com
16  */
17 
18 #ifndef _ps4parser_h_
19 #define _ps4parser_h_
20 
21 #include "Usb.h"
22 #include "controllerEnums.h"
23 
25 const uint8_t PS4_BUTTONS[] PROGMEM = {
26  UP, // UP
27  RIGHT, // RIGHT
28  DOWN, // DOWN
29  LEFT, // LEFT
30 
31  0x0C, // SHARE
32  0x0D, // OPTIONS
33  0x0E, // L3
34  0x0F, // R3
35 
36  0x0A, // L2
37  0x0B, // R2
38  0x08, // L1
39  0x09, // R1
40 
41  0x07, // TRIANGLE
42  0x06, // CIRCLE
43  0x05, // CROSS
44  0x04, // SQUARE
45 
46  0x10, // PS
47  0x11, // TOUCHPAD
48 };
49 
50 union PS4Buttons {
51  struct {
52  uint8_t dpad : 4;
53  uint8_t square : 1;
54  uint8_t cross : 1;
55  uint8_t circle : 1;
56  uint8_t triangle : 1;
57 
58  uint8_t l1 : 1;
59  uint8_t r1 : 1;
60  uint8_t l2 : 1;
61  uint8_t r2 : 1;
62  uint8_t share : 1;
63  uint8_t options : 1;
64  uint8_t l3 : 1;
65  uint8_t r3 : 1;
66 
67  uint8_t ps : 1;
68  uint8_t touchpad : 1;
69  uint8_t reportCounter : 6;
70  } __attribute__((packed));
71  uint32_t val : 24;
72 } __attribute__((packed));
73 
74 struct touchpadXY {
75  uint8_t dummy; // I can not figure out what this data is for, it seems to change randomly, maybe a timestamp?
76  struct {
77  uint8_t counter : 7; // Increments every time a finger is touching the touchpad
78  uint8_t touching : 1; // The top bit is cleared if the finger is touching the touchpad
79  uint16_t x : 12;
80  uint16_t y : 12;
81  } __attribute__((packed)) finger[2]; // 0 = first finger, 1 = second finger
82 } __attribute__((packed));
83 
84 struct PS4Status {
85  uint8_t battery : 4;
86  uint8_t usb : 1;
87  uint8_t audio : 1;
88  uint8_t mic : 1;
89  uint8_t unknown : 1; // Extension port?
90 } __attribute__((packed));
91 
92 struct PS4Data {
93  /* Button and joystick values */
94  uint8_t hatValue[4];
96  uint8_t trigger[2];
97 
98  /* Gyro and accelerometer values */
99  uint8_t dummy[3]; // First two looks random, while the third one might be some kind of status - it increments once in a while
100  int16_t gyroY, gyroZ, gyroX;
101  int16_t accX, accZ, accY;
102 
103  uint8_t dummy2[5];
105  uint8_t dummy3[3];
106 
107  /* The rest is data for the touchpad */
108  touchpadXY xy[3]; // It looks like it sends out three coordinates each time, this might be because the microcontroller inside the PS4 controller is much faster than the Bluetooth connection.
109  // The last data is read from the last position in the array while the oldest measurement is from the first position.
110  // The first position will also keep it's value after the finger is released, while the other two will set them to zero.
111  // Note that if you read fast enough from the device, then only the first one will contain any data.
112 
113  // The last three bytes are always: 0x00, 0x80, 0x00
114 } __attribute__((packed));
115 
116 struct PS4Output {
117  uint8_t bigRumble, smallRumble; // Rumble
118  uint8_t r, g, b; // RGB
119  uint8_t flashOn, flashOff; // Time to flash bright/dark (255 = 2.5 seconds)
120  bool reportChanged; // The data is send when data is received from the controller
121 } __attribute__((packed));
122 
124 class PS4Parser {
125 public:
128  Reset();
129  };
130 
142  bool getButtonPress(ButtonEnum b);
143  bool getButtonClick(ButtonEnum b);
153  uint8_t getAnalogButton(ButtonEnum b);
154 
160  uint8_t getAnalogHat(AnalogHatEnum a);
161 
170  uint16_t getX(uint8_t finger = 0, uint8_t xyId = 0) {
171  return ps4Data.xy[xyId].finger[finger].x;
172  };
173 
182  uint16_t getY(uint8_t finger = 0, uint8_t xyId = 0) {
183  return ps4Data.xy[xyId].finger[finger].y;
184  };
185 
194  bool isTouching(uint8_t finger = 0, uint8_t xyId = 0) {
195  return !(ps4Data.xy[xyId].finger[finger].touching); // The bit is cleared when a finger is touching the touchpad
196  };
197 
206  uint8_t getTouchCounter(uint8_t finger = 0, uint8_t xyId = 0) {
207  return ps4Data.xy[xyId].finger[finger].counter;
208  };
209 
215  float getAngle(AngleEnum a) {
216  if (a == Pitch)
217  return (atan2f(ps4Data.accY, ps4Data.accZ) + PI) * RAD_TO_DEG;
218  else
219  return (atan2f(ps4Data.accX, ps4Data.accZ) + PI) * RAD_TO_DEG;
220  };
221 
227  int16_t getSensor(SensorEnum s) {
228  switch(s) {
229  case gX:
230  return ps4Data.gyroX;
231  case gY:
232  return ps4Data.gyroY;
233  case gZ:
234  return ps4Data.gyroZ;
235  case aX:
236  return ps4Data.accX;
237  case aY:
238  return ps4Data.accY;
239  case aZ:
240  return ps4Data.accZ;
241  default:
242  return 0;
243  }
244  };
245 
250  uint8_t getBatteryLevel() {
251  return ps4Data.status.battery;
252  };
253 
258  bool getUsbStatus() {
259  return ps4Data.status.usb;
260  };
261 
266  bool getAudioStatus() {
267  return ps4Data.status.audio;
268  };
269 
274  bool getMicStatus() {
275  return ps4Data.status.mic;
276  };
277 
279  void setAllOff() {
280  setRumbleOff();
281  setLedOff();
282  };
283 
285  void setRumbleOff() {
286  setRumbleOn(0, 0);
287  };
288 
293  void setRumbleOn(RumbleEnum mode) {
294  if (mode == RumbleLow)
295  setRumbleOn(0x00, 0xFF);
296  else
297  setRumbleOn(0xFF, 0x00);
298  };
299 
305  void setRumbleOn(uint8_t bigRumble, uint8_t smallRumble) {
306  ps4Output.bigRumble = bigRumble;
307  ps4Output.smallRumble = smallRumble;
308  ps4Output.reportChanged = true;
309  };
310 
312  void setLedOff() {
313  setLed(0, 0, 0);
314  };
315 
320  void setLed(uint8_t r, uint8_t g, uint8_t b) {
321  ps4Output.r = r;
322  ps4Output.g = g;
323  ps4Output.b = b;
324  ps4Output.reportChanged = true;
325  };
326 
331  void setLed(ColorsEnum color) {
332  setLed((uint8_t)(color >> 16), (uint8_t)(color >> 8), (uint8_t)(color));
333  };
334 
340  void setLedFlash(uint8_t flashOn, uint8_t flashOff) {
341  ps4Output.flashOn = flashOn;
342  ps4Output.flashOff = flashOff;
343  ps4Output.reportChanged = true;
344  };
347 protected:
353  void Parse(uint8_t len, uint8_t *buf);
354 
356  void Reset();
357 
362  virtual void sendOutputReport(PS4Output *output) = 0;
363 
364 private:
365  bool checkDpad(ButtonEnum b); // Used to check PS4 DPAD buttons
366 
367  PS4Data ps4Data;
368  PS4Buttons oldButtonState, buttonClickState;
369  PS4Output ps4Output;
370  uint8_t oldDpad;
371 };
372 #endif
uint8_t getBatteryLevel()
Definition: PS4Parser.h:250
uint32_t val
Definition: PS4Parser.h:71
uint16_t getY(uint8_t finger=0, uint8_t xyId=0)
Definition: PS4Parser.h:182
+
uint8_t usb
Definition: PS4Parser.h:86
uint8_t r1
Definition: PS4Parser.h:59
PS4Status status
Definition: PS4Parser.h:104
void setLed(uint8_t r, uint8_t g, uint8_t b)
Definition: PS4Parser.h:320
+
uint8_t mic
Definition: PS4Parser.h:88
AnalogHatEnum
uint8_t reportCounter
Definition: PS4Parser.h:69
void setLed(ColorsEnum color)
Definition: PS4Parser.h:331
+
uint8_t audio
Definition: PS4Parser.h:87
void setRumbleOn(uint8_t bigRumble, uint8_t smallRumble)
Definition: PS4Parser.h:305
+
uint8_t touching
Definition: PS4Parser.h:78
int16_t getSensor(SensorEnum s)
Definition: PS4Parser.h:227
uint8_t flashOn
Definition: PS4Parser.h:119
@@ -107,6 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
uint8_t share
Definition: PS4Parser.h:62
+
uint8_t unknown
Definition: PS4Parser.h:89
void setRumbleOn(RumbleEnum mode)
Definition: PS4Parser.h:293
uint8_t dummy
Definition: PS4Parser.h:75
@@ -119,8 +101,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
bool reportChanged
Definition: PS4Parser.h:120
uint8_t ps
Definition: PS4Parser.h:67
bool isTouching(uint8_t finger=0, uint8_t xyId=0)
Definition: PS4Parser.h:194
+
uint8_t counter
Definition: PS4Parser.h:77
+
uint16_t y
Definition: PS4Parser.h:80
-
const uint8_t PS4_BUTTONS[]
Definition: PS4Parser.h:25
ButtonEnum
@@ -147,10 +130,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
uint8_t options
Definition: PS4Parser.h:63
bool getMicStatus()
Definition: PS4Parser.h:274
uint8_t touchpad
Definition: PS4Parser.h:68
+
uint8_t battery
Definition: PS4Parser.h:85
uint8_t l3
Definition: PS4Parser.h:64
PS4Buttons btn
Definition: PS4Parser.h:95
SensorEnum
uint8_t circle
Definition: PS4Parser.h:55
+
uint16_t x
Definition: PS4Parser.h:79
int16_t accZ
Definition: PS4Parser.h:101
void setLedFlash(uint8_t flashOn, uint8_t flashOff)
Definition: PS4Parser.h:340
@@ -164,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/_p_s4_u_s_b_8h.html b/_p_s4_u_s_b_8h.html index eb7dce74..f43d8d34 100644 --- a/_p_s4_u_s_b_8h.html +++ b/_p_s4_u_s_b_8h.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: PS4USB.h File Reference @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
- - - - - - + + + + + +
@@ -122,7 +99,9 @@ Macros  

Macro Definition Documentation

- + +

◆ PS4_VID

+
@@ -132,11 +111,13 @@ Macros
-

Definition at line 24 of file PS4USB.h.

+

Definition at line 24 of file PS4USB.h.

- + +

◆ PS4_PID

+
@@ -146,11 +127,13 @@ Macros
-

Definition at line 25 of file PS4USB.h.

+

Definition at line 25 of file PS4USB.h.

- + +

◆ PS4_PID_SLIM

+
@@ -160,7 +143,7 @@ Macros
-

Definition at line 26 of file PS4USB.h.

+

Definition at line 26 of file PS4USB.h.

@@ -169,7 +152,7 @@ Macros diff --git a/_p_s4_u_s_b_8h__incl.map b/_p_s4_u_s_b_8h__incl.map index 479efdd9..c0f16df6 100644 --- a/_p_s4_u_s_b_8h__incl.map +++ b/_p_s4_u_s_b_8h__incl.map @@ -1,8 +1,8 @@ - - - - - - + + + + + + diff --git a/_p_s4_u_s_b_8h__incl.md5 b/_p_s4_u_s_b_8h__incl.md5 index 9a8140ab..76233869 100644 --- a/_p_s4_u_s_b_8h__incl.md5 +++ b/_p_s4_u_s_b_8h__incl.md5 @@ -1 +1 @@ -3d9cec3e6d601d983fe2992427af4c58 \ No newline at end of file +d2a18154f1cb36761bff05421187bd1f \ No newline at end of file diff --git a/_p_s4_u_s_b_8h__incl.png b/_p_s4_u_s_b_8h__incl.png index 126e64cd..6686645c 100644 Binary files a/_p_s4_u_s_b_8h__incl.png and b/_p_s4_u_s_b_8h__incl.png differ diff --git a/_p_s4_u_s_b_8h_source.html b/_p_s4_u_s_b_8h_source.html index c37d3cd4..143a802a 100644 --- a/_p_s4_u_s_b_8h_source.html +++ b/_p_s4_u_s_b_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: PS4USB.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
- + - - + + + +
- - - - - - + + + + + +
@@ -107,7 +84,7 @@ Include dependency graph for PSBuzz.cpp: diff --git a/_p_s_buzz_8cpp__incl.map b/_p_s_buzz_8cpp__incl.map index 987cb529..6dfe1b5c 100644 --- a/_p_s_buzz_8cpp__incl.map +++ b/_p_s_buzz_8cpp__incl.map @@ -1,8 +1,8 @@ - - - - - - + + + + + + diff --git a/_p_s_buzz_8cpp__incl.md5 b/_p_s_buzz_8cpp__incl.md5 index b600c9e8..254fa80c 100644 --- a/_p_s_buzz_8cpp__incl.md5 +++ b/_p_s_buzz_8cpp__incl.md5 @@ -1 +1 @@ -4060fd39043c7564a19c22e4b422acd8 \ No newline at end of file +5a74379adade31d51d1b0ef98c2b52fe \ No newline at end of file diff --git a/_p_s_buzz_8cpp__incl.png b/_p_s_buzz_8cpp__incl.png index 3f05ab65..ff801c84 100644 Binary files a/_p_s_buzz_8cpp__incl.png and b/_p_s_buzz_8cpp__incl.png differ diff --git a/_p_s_buzz_8cpp_source.html b/_p_s_buzz_8cpp_source.html index f3a729a4..1b7935d9 100644 --- a/_p_s_buzz_8cpp_source.html +++ b/_p_s_buzz_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: PSBuzz.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + +
USBHID::bAddress
uint8_t bAddress
Definition: usbhid.h:146
PSBuzz::setLedRaw
void setLedRaw(bool value, uint8_t controller=0)
Definition: PSBuzz.cpp:64
PSTR
#define PSTR(str)
Definition: version_helper.h:54
-
MFK_CASTUINT8T
#define MFK_CASTUINT8T
Definition: settings.h:196
+
MFK_CASTUINT8T
#define MFK_CASTUINT8T
Definition: settings.h:194
PSBuzz::OnInitSuccessful
uint8_t OnInitSuccessful()
Definition: PSBuzz.cpp:41
PSBuzz::setLedOnAll
void setLedOnAll()
Definition: PSBuzz.h:114
HID_REQUEST_SET_REPORT
#define HID_REQUEST_SET_REPORT
Definition: usbhid.h:72
@@ -115,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/_p_s_buzz_8h.html b/_p_s_buzz_8h.html index 8af28df2..ee8ebb5f 100644 --- a/_p_s_buzz_8h.html +++ b/_p_s_buzz_8h.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: PSBuzz.h File Reference @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + +
- - - - - + + + + +
@@ -108,7 +85,7 @@ This graph shows which files directly or indirectly include this file:
- +
@@ -129,7 +106,9 @@ Macros  

Macro Definition Documentation

- + +

◆ PSBUZZ_VID

+
@@ -139,11 +118,13 @@ Macros
-

Definition at line 24 of file PSBuzz.h.

+

Definition at line 24 of file PSBuzz.h.

- + +

◆ PSBUZZ_PID

+
@@ -153,7 +134,7 @@ Macros
-

Definition at line 25 of file PSBuzz.h.

+

Definition at line 25 of file PSBuzz.h.

@@ -162,7 +143,7 @@ Macros diff --git a/_p_s_buzz_8h__dep__incl.map b/_p_s_buzz_8h__dep__incl.map index 4b2f91a5..2724f8d0 100644 --- a/_p_s_buzz_8h__dep__incl.map +++ b/_p_s_buzz_8h__dep__incl.map @@ -1,3 +1,3 @@ - + diff --git a/_p_s_buzz_8h__dep__incl.md5 b/_p_s_buzz_8h__dep__incl.md5 index 5caa0d46..0d832b03 100644 --- a/_p_s_buzz_8h__dep__incl.md5 +++ b/_p_s_buzz_8h__dep__incl.md5 @@ -1 +1 @@ -88928a152c2f379aa7b4a52bc6f3da10 \ No newline at end of file +89fdce8c433f9f3ff883c438cb91a471 \ No newline at end of file diff --git a/_p_s_buzz_8h__dep__incl.png b/_p_s_buzz_8h__dep__incl.png index 7730f098..624e9feb 100644 Binary files a/_p_s_buzz_8h__dep__incl.png and b/_p_s_buzz_8h__dep__incl.png differ diff --git a/_p_s_buzz_8h__incl.map b/_p_s_buzz_8h__incl.map index 00d5a656..c566a41e 100644 --- a/_p_s_buzz_8h__incl.map +++ b/_p_s_buzz_8h__incl.map @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/_p_s_buzz_8h__incl.md5 b/_p_s_buzz_8h__incl.md5 index 801930e6..063dac97 100644 --- a/_p_s_buzz_8h__incl.md5 +++ b/_p_s_buzz_8h__incl.md5 @@ -1 +1 @@ -460aa9dc1a3fdb1c5075c5daa680120f \ No newline at end of file +e9865eba6bb7dc48f5f354e4dc3ccb30 \ No newline at end of file diff --git a/_p_s_buzz_8h__incl.png b/_p_s_buzz_8h__incl.png index 724fcd48..0f5bf6c3 100644 Binary files a/_p_s_buzz_8h__incl.png and b/_p_s_buzz_8h__incl.png differ diff --git a/_p_s_buzz_8h_source.html b/_p_s_buzz_8h_source.html index 642f24df..e5bf1b6e 100644 --- a/_p_s_buzz_8h_source.html +++ b/_p_s_buzz_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: PSBuzz.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + +
PSBuzz.h
-Go to the documentation of this file.
1 /* Copyright (C) 2014 Kristian Lauszus, TKJ Electronics. All rights reserved.
2 
3  This software may be distributed and modified under the terms of the GNU
4  General Public License version 2 (GPL2) as published by the Free Software
5  Foundation and appearing in the file GPL2.TXT included in the packaging of
6  this file. Please note that GPL2 Section 2[b] requires that all works based
7  on this software must also be made publicly available under the terms of
8  the GPL2 ("Copyleft").
9 
10  Contact information
11  -------------------
12 
13  Kristian Lauszus, TKJ Electronics
14  Web : http://www.tkjelectronics.com
15  e-mail : kristianl@tkjelectronics.com
16  */
17 
18 #ifndef _psbuzz_h_
19 #define _psbuzz_h_
20 
21 #include "hiduniversal.h"
22 #include "controllerEnums.h"
23 
24 #define PSBUZZ_VID 0x054C // Sony Corporation
25 #define PSBUZZ_PID 0x1000 // PS Buzz Controller
26 
29  struct {
30  uint8_t red : 1;
31  uint8_t yellow : 1;
32  uint8_t green : 1;
33  uint8_t orange : 1;
34  uint8_t blue : 1;
35  } __attribute__((packed)) btn[4];
36  uint32_t val : 20;
37 } __attribute__((packed));
38 
43 class PSBuzz : public HIDUniversal {
44 public:
49  PSBuzz(USB *p) :
50  HIDUniversal(p) {
51  Reset();
52  };
53 
58  bool connected() {
60  };
61 
66  void attachOnInit(void (*funcOnInit)(void)) {
67  pFuncOnInit = funcOnInit;
68  };
69 
82  bool getButtonPress(ButtonEnum b, uint8_t controller = 0);
83  bool getButtonClick(ButtonEnum b, uint8_t controller = 0);
95  void setLedRaw(bool value, uint8_t controller = 0);
96 
98  void setLedOffAll() {
99  for (uint8_t i = 1; i < 4; i++) // Skip first as it will be set in setLedRaw
100  ledState[i] = false; // Just an easy way to set all four off at the same time
101  setLedRaw(false); // Turn the LED off, on all four controllers
102  };
103 
108  void setLedOff(uint8_t controller = 0) {
109  setLedRaw(false, controller);
110  };
111 
112 
114  void setLedOnAll() {
115  for (uint8_t i = 1; i < 4; i++) // Skip first as it will be set in setLedRaw
116  ledState[i] = true; // Just an easy way to set all four off at the same time
117  setLedRaw(true); // Turn the LED on, on all four controllers
118  };
119 
124  void setLedOn(uint8_t controller = 0) {
125  setLedRaw(true, controller);
126  };
127 
132  void setLedToggle(uint8_t controller = 0) {
133  setLedRaw(!ledState[controller], controller);
134  };
137 protected:
146  void ParseHIDData(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf);
147 
153  uint8_t OnInitSuccessful();
157  void Reset() {
158  psbuzzButtons.val = 0;
159  oldButtonState.val = 0;
160  buttonClickState.val = 0;
161  for (uint8_t i = 0; i < sizeof(ledState); i++)
162  ledState[i] = 0;
163  };
164 
172  virtual bool VIDPIDOK(uint16_t vid, uint16_t pid) {
173  return (vid == PSBUZZ_VID && pid == PSBUZZ_PID);
174  };
177 private:
178  void (*pFuncOnInit)(void); // Pointer to function called in onInit()
179 
180  void PSBuzz_Command(uint8_t *data, uint16_t nbytes);
181 
182  PSBUZZButtons psbuzzButtons, oldButtonState, buttonClickState;
183  bool ledState[4];
184 };
185 #endif
uint16_t PID
Definition: hiduniversal.h:69
+Go to the documentation of this file.
1 /* Copyright (C) 2014 Kristian Lauszus, TKJ Electronics. All rights reserved.
2 
3  This software may be distributed and modified under the terms of the GNU
4  General Public License version 2 (GPL2) as published by the Free Software
5  Foundation and appearing in the file GPL2.TXT included in the packaging of
6  this file. Please note that GPL2 Section 2[b] requires that all works based
7  on this software must also be made publicly available under the terms of
8  the GPL2 ("Copyleft").
9 
10  Contact information
11  -------------------
12 
13  Kristian Lauszus, TKJ Electronics
14  Web : http://www.tkjelectronics.com
15  e-mail : kristianl@tkjelectronics.com
16  */
17 
18 #ifndef _psbuzz_h_
19 #define _psbuzz_h_
20 
21 #include "hiduniversal.h"
22 #include "controllerEnums.h"
23 
24 #define PSBUZZ_VID 0x054C // Sony Corporation
25 #define PSBUZZ_PID 0x1000 // PS Buzz Controller
26 
29  struct {
30  uint8_t red : 1;
31  uint8_t yellow : 1;
32  uint8_t green : 1;
33  uint8_t orange : 1;
34  uint8_t blue : 1;
35  } __attribute__((packed)) btn[4];
36  uint32_t val : 20;
37 } __attribute__((packed));
38 
43 class PSBuzz : public HIDUniversal {
44 public:
49  PSBuzz(USB *p) :
50  HIDUniversal(p) {
51  Reset();
52  };
53 
58  bool connected() {
60  };
61 
66  void attachOnInit(void (*funcOnInit)(void)) {
67  pFuncOnInit = funcOnInit;
68  };
69 
82  bool getButtonPress(ButtonEnum b, uint8_t controller = 0);
83  bool getButtonClick(ButtonEnum b, uint8_t controller = 0);
95  void setLedRaw(bool value, uint8_t controller = 0);
96 
98  void setLedOffAll() {
99  for (uint8_t i = 1; i < 4; i++) // Skip first as it will be set in setLedRaw
100  ledState[i] = false; // Just an easy way to set all four off at the same time
101  setLedRaw(false); // Turn the LED off, on all four controllers
102  };
103 
108  void setLedOff(uint8_t controller = 0) {
109  setLedRaw(false, controller);
110  };
111 
112 
114  void setLedOnAll() {
115  for (uint8_t i = 1; i < 4; i++) // Skip first as it will be set in setLedRaw
116  ledState[i] = true; // Just an easy way to set all four off at the same time
117  setLedRaw(true); // Turn the LED on, on all four controllers
118  };
119 
124  void setLedOn(uint8_t controller = 0) {
125  setLedRaw(true, controller);
126  };
127 
132  void setLedToggle(uint8_t controller = 0) {
133  setLedRaw(!ledState[controller], controller);
134  };
137 protected:
146  void ParseHIDData(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf);
147 
153  uint8_t OnInitSuccessful();
157  void Reset() {
158  psbuzzButtons.val = 0;
159  oldButtonState.val = 0;
160  buttonClickState.val = 0;
161  for (uint8_t i = 0; i < sizeof(ledState); i++)
162  ledState[i] = 0;
163  };
164 
172  virtual bool VIDPIDOK(uint16_t vid, uint16_t pid) {
173  return (vid == PSBUZZ_VID && pid == PSBUZZ_PID);
174  };
177 private:
178  void (*pFuncOnInit)(void); // Pointer to function called in onInit()
179 
180  void PSBuzz_Command(uint8_t *data, uint16_t nbytes);
181 
182  PSBUZZButtons psbuzzButtons, oldButtonState, buttonClickState;
183  bool ledState[4];
184 };
185 #endif
uint16_t PID
Definition: hiduniversal.h:69
Definition: usbhid.h:143
uint8_t red
Definition: PSBuzz.h:30
void setLedToggle(uint8_t controller=0)
Definition: PSBuzz.h:132
@@ -121,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/_r_e_a_d_m_e_8md.html b/_r_e_a_d_m_e_8md.html index a5b29531..5fe37b21 100644 --- a/_r_e_a_d_m_e_8md.html +++ b/_r_e_a_d_m_e_8md.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: README.md File Reference @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + + - + - - + + + +
README.md
-Go to the documentation of this file.
1 # USB Host Library Rev.2.0
2 
3 The code is released under the GNU General Public License.
4 __________
5 [![Build Status](https://travis-ci.org/felis/USB_Host_Shield_2.0.svg?branch=master)](https://travis-ci.org/felis/USB_Host_Shield_2.0)
6 
7 # Summary
8 This is Revision 2.0 of MAX3421E-based USB Host Shield Library for AVR's.
9 
10 Project main web site is: <https://chome.nerpa.tech/arduino_usb_host_shield_projects/>.
11 
12 Some information can also be found at: <http://blog.tkjelectronics.dk/>.
13 
14 The shield can be purchased from [TKJ Electronics](http://tkjelectronics.com/): <http://shop.tkjelectronics.dk/product_info.php?products_id=43>.
15 
16 ![USB Host Shield](http://shop.tkjelectronics.dk/images/USB_Host_Shield1.jpg)
17 
18 For more information about the hardware see the [Hardware Manual](https://chome.nerpa.tech/usb-host-shield-hardware-manual/).
19 
20 # Developed By
21 
22 * __Oleg Mazurov__ - <mazurov@gmail.com>
23 * __Alexei Glushchenko__ - <alex-gl@mail.ru>
24  * Developers of the USB Core, HID, FTDI, ADK, ACM, and PL2303 libraries
25 * __Kristian Sloth Lauszus__ - <lauszus@gmail.com>
26  * Developer of the [BTD](#bluetooth-libraries), [BTHID](#bthid-library), [SPP](#spp-library), [PS4](#ps4-library), [PS3](#ps3-library), [Wii](#wii-library), [Xbox](#xbox-library), and [PSBuzz](#ps-buzz-library) libraries
27 * __Andrew Kroll__ - <xxxajk@gmail.com>
28  * Major contributor to mass storage code
29 * __guruthree__
30  * [Xbox ONE](#xbox-one-library) controller support
31 * __Yuuichi Akagawa__ - [\@YuuichiAkagawa](https://twitter.com/yuuichiakagawa)
32  * Developer of the [MIDI](#midi-library) library
33 
34 
35 # Table of Contents
36 
37 * [How to include the library](#how-to-include-the-library)
38  * [Arduino Library Manager](#arduino-library-manager)
39  * [Manual installation](#manual-installation)
40 * [How to use the library](#how-to-use-the-library)
41  * [Documentation](#documentation)
42  * [Enable debugging](#enable-debugging)
43  * [Boards](#boards)
44  * [Bluetooth libraries](#bluetooth-libraries)
45  * [BTHID library](#bthid-library)
46  * [SPP library](#spp-library)
47  * [PS4 Library](#ps4-library)
48  * [PS3 Library](#ps3-library)
49  * [Xbox Libraries](#xbox-libraries)
50  * [Xbox library](#xbox-library)
51  * [Xbox 360 Library](#xbox-360-library)
52  * [Xbox ONE Library](#xbox-one-library)
53  * [Xbox ONE S Library](#xbox-one-s-library)
54  * [Wii library](#wii-library)
55  * [PS Buzz Library](#ps-buzz-library)
56  * [HID Libraries](#hid-libraries)
57  * [MIDI Library](#midi-library)
58 * [Interface modifications](#interface-modifications)
59 * [FAQ](#faq)
60 
61 # How to include the library
62 
63 ### Arduino Library Manager
64 
65 First install Arduino IDE version 1.6.2 or newer, then simply use the Arduino Library Manager to install the library.
66 
67 Please see the following page for instructions: <http://www.arduino.cc/en/Guide/Libraries#toc3>.
68 
69 ### Manual installation
70 
71 First download the library by clicking on the following link: <https://github.com/felis/USB_Host_Shield_2.0/archive/master.zip>.
72 
73 Then uncompress the zip folder and rename the directory to "USB\_Host\_Shield\_20", as any special characters are not supported by the Arduino IDE.
74 
75 Now open up the Arduino IDE and open "File>Preferences". There you will see the location of your sketchbook. Open that directory and create a directory called "libraries" inside that directory.
76 Now move the "USB\_Host\_Shield\_20" directory to the "libraries" directory.
77 
78 The final structure should look like this:
79 
80 * Arduino/
81  * libraries/
82  * USB\_Host\_Shield\_20/
83 
84 Now quit the Arduino IDE and reopen it.
85 
86 Now you should be able to go open all the examples codes by navigating to "File>Examples>USB\_Host\_Shield\_20" and then select the example you will like to open.
87 
88 For more information visit the following sites: <http://arduino.cc/en/Guide/Libraries> and <https://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use>.
89 
90 # How to use the library
91 
92 ### Documentation
93 
94 Documentation for the library can be found at the following link: <https://felis.github.io/USB_Host_Shield_2.0/>.
95 
96 ### Enable debugging
97 
98 By default serial debugging is disabled. To turn it on simply change ```ENABLE_UHS_DEBUGGING``` to 1 in [settings.h](settings.h) like so:
99 
100 ```C++
101 #define ENABLE_UHS_DEBUGGING 1
102 ```
103 
104 ### Boards
105 
106 Currently the following boards are supported by the library:
107 
108 * All official Arduino AVR boards (Uno, Duemilanove, Mega, Mega 2560, Mega ADK, Leonardo etc.)
109 * Arduino Due, Intel Galileo, Intel Galileo 2, and Intel Edison
110  * Note that the Intel Galileo uses pin 2 and 3 as INT and SS pin respectively by default, so some modifications to the shield are needed. See the "Interface modifications" section in the [hardware manual](https://chome.nerpa.tech/usb-host-shield-hardware-manual) for more information.
111  * Note native USB host is not supported on any of these platforms. You will have to use the shield for now.
112 * Teensy (Teensy++ 1.0, Teensy 2.0, Teensy++ 2.0, Teensy 3.x, and Teensy LC)
113  * Note if you are using the Teensy 3.x you should download this SPI library as well: <https://github.com/xxxajk/spi4teensy3>. You should then add ```#include <spi4teensy3.h>``` to your .ino file.
114 * Balanduino
115 * Sanguino
116 * Black Widdow
117 * RedBearLab nRF51822
118 * Digilent chipKIT
119  * Please see: <https://chome.nerpa.tech/mcu/usb/running-usb-host-code-on-digilent-chipkit-board>.
120 * STM32F4
121  * Currently the [NUCLEO-F446RE](http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1847/PF262063) is supported featuring the STM32F446. Take a look at the following example code: <https://github.com/Lauszus/Nucleo_F446RE_USBHost>.
122 * ESP8266 is supported using the [ESP8266 Arduino core](https://github.com/esp8266/Arduino)
123  * Note it uses pin 15 and 5 for SS and INT respectively
124  * Also please be aware that:
125  * GPIO16 is **NOT** usable, as it will be used for some other purposes. For example, reset the SoC itself from sleep mode.
126  * GPIO6 to 11 is also **NOT** usable, as they are used to connect SPI flash chip and it is used for storing the executable binary content.
127 * ESP32 is supported using the [arduino-esp32](https://github.com/espressif/arduino-esp32/)
128  * GPIO5 : SS, GPIO17 : INT, GPIO18 : SCK, GPIO19 : MISO, GPIO23 : MOSI
129 
130 The following boards need to be activated manually in [settings.h](settings.h):
131 
132 * Arduino Mega ADK
133  * If you are using Arduino 1.5.5 or newer there is no need to activate the Arduino Mega ADK manually
134 * Black Widdow
135 
136 Simply set the corresponding value to 1 instead of 0.
137 
138 ### [Bluetooth libraries](BTD.cpp)
139 
140 The [BTD library](BTD.cpp) is a general purpose library for an ordinary Bluetooth dongle.
141 This library make it easy to add support for different Bluetooth services like a PS3 or a Wii controller or SPP which is a virtual serial port via Bluetooth.
142 Some different examples can be found in the [example directory](examples/Bluetooth).
143 
144 The BTD library also makes it possible to use multiple services at once, the following example sketch is an example of this:
145 [PS3SPP.ino](examples/Bluetooth/PS3SPP/PS3SPP.ino).
146 
147 ### [BTHID library](BTHID.cpp)
148 
149 The [Bluetooth HID library](BTHID.cpp) allows you to connect HID devices via Bluetooth to the USB Host Shield.
150 
151 Currently HID mice and keyboards are supported.
152 
153 It uses the standard Boot protocol by default, but it is also able to use the Report protocol as well. You would simply have to call ```setProtocolMode()``` and then parse ```HID_RPT_PROTOCOL``` as an argument. You will then have to modify the parser for your device. See the example: [BTHID.ino](examples/Bluetooth/BTHID/BTHID.ino) for more information.
154 
155 The [PS4 library](#ps4-library) also uses this class to handle all Bluetooth communication.
156 
157 For information see the following blog post: <http://blog.tkjelectronics.dk/2013/12/bluetooth-hid-devices-now-supported-by-the-usb-host-library/>.
158 
159 ### [SPP library](SPP.cpp)
160 
161 SPP stands for "Serial Port Profile" and is a Bluetooth protocol that implements a virtual comport which allows you to send data back and forth from your computer/phone to your Arduino via Bluetooth.
162 It has been tested successfully on Windows, Mac OS X, Linux, and Android.
163 
164 Take a look at the [SPP.ino](examples/Bluetooth/SPP/SPP.ino) example for more information.
165 
166 More information can be found at these blog posts:
167 
168 * <http://chome.nerpa.tech/mcu/bluetooth-rfcommspp-service-support-for-usb-host-2-0-library-released>
169 * <http://blog.tkjelectronics.dk/2012/07/rfcommspp-library-for-arduino/>
170 
171 To implement the SPP protocol I used a Bluetooth sniffing tool called [PacketLogger](http://www.tkjelectronics.com/uploads/PacketLogger.zip) developed by Apple.
172 It enables me to see the Bluetooth communication between my Mac and any device.
173 
174 ### PS4 Library
175 
176 The PS4BT library is split up into the [PS4BT](PS4BT.h) and the [PS4USB](PS4USB.h) library. These allow you to use the Sony PS4 controller via Bluetooth and USB.
177 
178 The [PS4BT.ino](examples/Bluetooth/PS4BT/PS4BT.ino) and [PS4USB.ino](examples/PS4USB/PS4USB.ino) examples shows how to easily read the buttons, joysticks, touchpad and IMU on the controller via Bluetooth and USB respectively. It is also possible to control the rumble and light on the controller and get the battery level.
179 
180 Before you can use the PS4 controller via Bluetooth you will need to pair with it.
181 
182 Simply create the PS4BT instance like so: ```PS4BT PS4(&Btd, PAIR);``` and then hold down the Share button and then hold down the PS without releasing the Share button. The PS4 controller will then start to blink rapidly indicating that it is in pairing mode.
183 
184 It should then automatically pair the dongle with your controller. This only have to be done once.
185 
186 For information see the following blog post: <http://blog.tkjelectronics.dk/2014/01/ps4-controller-now-supported-by-the-usb-host-library/>.
187 
188 Also check out this excellent Wiki by Frank Zhao about the PS4 controller: <http://eleccelerator.com/wiki/index.php?title=DualShock_4> and this Linux driver: <https://github.com/chrippa/ds4drv>.
189 
190 Several guides on how to use the PS4 library has been written by Dr. James E. Barger and are available at the following link: <https://sites.google.com/view/vbatc-engineeringtechnology2/control-system-tutorials/ps4-tutorials>.
191 
192 ### PS3 Library
193 
194 These libraries consist of the [PS3BT](PS3BT.cpp) and [PS3USB](PS3USB.cpp). These libraries allows you to use a Dualshock 3, Navigation or a Motion controller with the USB Host Shield both via Bluetooth and USB.
195 
196 In order to use your Playstation controller via Bluetooth you have to set the Bluetooth address of the dongle internally to your PS3 Controller. This can be achieved by first plugging in the Bluetooth dongle and wait a few seconds. Now plug in the controller via USB and wait until the LEDs start to flash. The library has now written the Bluetooth address of the dongle to the PS3 controller.
197 
198 Finally simply plug in the Bluetooth dongle again and press PS on the PS3 controller. After a few seconds it should be connected to the dongle and ready to use.
199 
200 __Note:__ You will have to plug in the Bluetooth dongle before connecting the controller, as the library needs to read the address of the dongle. Alternatively you could set it in code like so: [PS3BT.ino#L20](examples/Bluetooth/PS3BT/PS3BT.ino#L20).
201 
202 For more information about the PS3 protocol see the official wiki: <https://github.com/felis/USB_Host_Shield_2.0/wiki/PS3-Information>.
203 
204 Also take a look at the blog posts:
205 
206 * <http://blog.tkjelectronics.dk/2012/01/ps3-controller-bt-library-for-arduino/>
207 * <http://chome.nerpa.tech/mcu/sony-ps3-controller-support-added-to-usb-host-library>
208 * <http://chome.nerpa.tech/mcu/arduino/interfacing-ps3-controllers-via-usb>
209 
210 A special thanks go to the following people:
211 
212 1. _Richard Ibbotson_ who made this excellent guide: <http://chome.nerpa.tech/mcu/ps3-and-wiimote-game-controllers-on-the-arduino-host-shield-part>
213 2. _Tomoyuki Tanaka_ for releasing his code for the Arduino USB Host shield connected to the wiimote: <http://chome.nerpa.tech/mcu/rc-car-controlled-by-wii-remote-on-arduino>
214 
215 Also a big thanks all the people behind these sites about the Motion controller:
216 
217 * <http://thp.io/2010/psmove/>
218 * <http://www.copenhagengamecollective.org/unimove/>
219 * <https://github.com/thp/psmoveapi>
220 * <http://code.google.com/p/moveonpc/>
221 
222 ### Xbox Libraries
223 
224 The library supports both the original Xbox controller via USB and the Xbox 360 controller both via USB and wirelessly.
225 
226 #### Xbox library
227 
228 The [XBOXOLD](XBOXOLD.cpp) class implements support for the original Xbox controller via USB.
229 
230 All the information are from the following sites:
231 
232 * <https://github.com/torvalds/linux/blob/master/Documentation/input/xpad.txt>
233 * <https://github.com/torvalds/linux/blob/master/drivers/input/joystick/xpad.c>
234 * <http://euc.jp/periphs/xbox-controller.ja.html>
235 * <https://github.com/Grumbel/xboxdrv/blob/master/PROTOCOL#L15>
236 
237 #### Xbox 360 Library
238 
239 The library support one Xbox 360 via USB or up to four Xbox 360 controllers wirelessly by using a [Xbox 360 wireless receiver](http://blog.tkjelectronics.dk/wp-content/uploads/xbox360-wireless-receiver.jpg).
240 
241 To use it via USB use the [XBOXUSB](XBOXUSB.cpp) library or to use it wirelessly use the [XBOXRECV](XBOXRECV.cpp) library.
242 
243 __Note that a Wireless controller can NOT be used via USB!__
244 
245 Examples code can be found in the [examples directory](examples/Xbox).
246 
247 Also see the following blog posts:
248 
249 * <http://chome.nerpa.tech/mcu/xbox360-controller-support-added-to-usb-host-shield-2-0-library>
250 * <http://blog.tkjelectronics.dk/2012/07/xbox-360-controller-support-added-to-the-usb-host-library/>
251 * <http://blog.tkjelectronics.dk/2012/12/xbox-360-receiver-added-to-the-usb-host-library/>
252 
253 All the information regarding the Xbox 360 controller protocol are form these sites:
254 
255 * <http://tattiebogle.net/index.php/ProjectRoot/Xbox360Controller/UsbInfo>
256 * <http://tattiebogle.net/index.php/ProjectRoot/Xbox360Controller/WirelessUsbInfo>
257 * <https://github.com/Grumbel/xboxdrv/blob/master/PROTOCOL>
258 
259 #### Xbox ONE Library
260 
261 A Xbox ONE controller is supported via USB in the [XBOXONE](XBOXONE.cpp) class. It is heavily based on the 360 library above. In addition to cross referencing the above, information on the protocol was found at:
262 
263 * <https://github.com/quantus/xbox-one-controller-protocol>
264 * <https://github.com/torvalds/linux/blob/master/drivers/input/joystick/xpad.c>
265 * <https://github.com/kylelemons/xbox/blob/master/xbox.go>
266 
267 #### Xbox ONE S Library
268 
269 A Xbox ONE controller is supported via Bluetooth in the [XBOXONESBT](XBOXONESBT.cpp) class.
270 
271 Special thanks to [HisashiKato](https://github.com/HisashiKato) for his help: <https://github.com/felis/USB_Host_Shield_2.0/issues/252#issuecomment-716912362>.
272 
273 ### [Wii library](Wii.cpp)
274 
275 The [Wii](Wii.cpp) library support the Wiimote, but also the Nunchuch and Motion Plus extensions via Bluetooth. The Wii U Pro Controller and Wii Balance Board are also supported via Bluetooth.
276 
277 First you have to pair with the controller, this is done automatically by the library if you create the instance like so:
278 
279 ```C++
280 WII Wii(&Btd, PAIR);
281 ```
282 
283 And then press 1 & 2 at once on the Wiimote or the SYNC buttons if you are using a Wii U Pro Controller or a Wii Balance Board.
284 
285 After that you can simply create the instance like so:
286 
287 ```C++
288 WII Wii(&Btd);
289 ```
290 
291 Then just press any button on the Wiimote and it will then connect to the dongle.
292 
293 Take a look at the example for more information: [Wii.ino](examples/Bluetooth/Wii/Wii.ino).
294 
295 Also take a look at the blog post:
296 
297 * <http://blog.tkjelectronics.dk/2012/08/wiimote-added-to-usb-host-library/>
298 
299 The Wii IR camera can also be used, but you will have to activate the code for it manually as it is quite large. Simply set ```ENABLE_WII_IR_CAMERA``` to 1 in [settings.h](settings.h).
300 
301 The [WiiIRCamera.ino](examples/Bluetooth/WiiIRCamera/WiiIRCamera.ino) example shows how it can be used.
302 
303 All the information about the Wii controllers are from these sites:
304 
305 * <http://wiibrew.org/wiki/Wiimote>
306 * <http://wiibrew.org/wiki/Wiimote/Extension_Controllers>
307 * <http://wiibrew.org/wiki/Wiimote/Extension_Controllers/Nunchuck>
308 * <http://wiibrew.org/wiki/Wiimote/Extension_Controllers/Wii_Motion_Plus>
309 * <http://wiibrew.org/wiki/Wii_Balance_Board>
310 * The old library created by _Tomoyuki Tanaka_: <https://github.com/moyuchin/WiiRemote_on_Arduino> also helped a lot.
311 
312 ### [PS Buzz Library](PSBuzz.cpp)
313 
314 This library implements support for the Playstation Buzz controllers via USB.
315 
316 It is essentially just a wrapper around the [HIDUniversal](hiduniversal.cpp) which takes care of the initializing and reading of the controllers. The [PSBuzz](PSBuzz.cpp) class simply inherits this and parses the data, so it is easy for users to read the buttons and turn the big red button on the controllers on and off.
317 
318 The example [PSBuzz.ino](examples/PSBuzz/PSBuzz.ino) shows how one can do this with just a few lines of code.
319 
320 More information about the controller can be found at the following sites:
321 
322 * http://www.developerfusion.com/article/84338/making-usb-c-friendly/
323 * https://github.com/torvalds/linux/blob/master/drivers/hid/hid-sony.c
324 
325 ### HID Libraries
326 
327 HID devices are also supported by the library. However these require you to write your own driver. A few example are provided in the [examples/HID](examples/HID) directory. Including an example for the [SteelSeries SRW-S1 Steering Wheel](examples/HID/SRWS1/SRWS1.ino).
328 
329 ### [MIDI Library](usbh_midi.cpp)
330 
331 The library support MIDI devices.
332 You can convert USB MIDI keyboard to legacy serial MIDI.
333 
334 * [USB_MIDI_converter.ino](examples/USBH_MIDI/USB_MIDI_converter/USB_MIDI_converter.ino)
335 * [USB_MIDI_converter_multi.ino](examples/USBH_MIDI/USB_MIDI_converter_multi/USB_MIDI_converter_multi.ino)
336 
337 For information see the following page: <http://yuuichiakagawa.github.io/USBH_MIDI/>.
338 
339 # Interface modifications
340 
341 The shield is using SPI for communicating with the MAX3421E USB host controller. It uses the SCK, MISO and MOSI pins via the ICSP on your board.
342 
343 Note this means that it uses pin 13, 12, 11 on an Arduino Uno, so these pins can not be used for anything else than SPI communication!
344 
345 Furthermore it uses one pin as SS and one INT pin. These are by default located on pin 10 and 9 respectively. They can easily be reconfigured in case you need to use them for something else by cutting the jumper on the shield and then solder a wire from the pad to the new pin.
346 
347 After that you need modify the following entry in [UsbCore.h](UsbCore.h):
348 
349 ```C++
350 typedef MAX3421e<P10, P9> MAX3421E;
351 ```
352 
353 For instance if you have rerouted SS to pin 7 it should read:
354 
355 ```C++
356 typedef MAX3421e<P7, P9> MAX3421E;
357 ```
358 
359 See the "Interface modifications" section in the [hardware manual](https://chome.nerpa.tech/usb-host-shield-hardware-manual) for more information.
360 
361 # FAQ
362 
363 > When I plug my device into the USB connector nothing happens?
364 
365 * Try to connect a external power supply to the Arduino - this solves the problem in most cases.
366 * You can also use a powered hub between the device and the USB Host Shield. You should then include the USB hub library: ```#include <usbhub.h>``` and create the instance like so: ```USBHub Hub1(&Usb);```.
367 
368 > When I connecting my PS3 controller I get a output like this:
369 
370 ```
371 Dualshock 3 Controller Enabled
372 
373 LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
374 LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
375 LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
376 LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
377 LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
378 ```
379 
380 * This means that your dongle does not support 2.0+EDR, so you will need another dongle. Please see the following [list](https://github.com/felis/USB_Host_Shield_2.0/wiki/Bluetooth-dongles) for tested working dongles.
381 
382 > When compiling I am getting the following error: "fatal error: SPI.h: No such file or directory".
383 
384 * Please make sure to include the SPI library like so: ```#include <SPI.h>``` in your .ino file.
+Go to the documentation of this file.
1 # USB Host Library Rev. 2.0
2 
3 The code is released under the GNU General Public License.
4 __________
5 [![](https://github.com/felis/USB_Host_Shield_2.0/workflows/CI/badge.svg)](https://github.com/felis/USB_Host_Shield_2.0/actions?query=branch%3Amaster)
6 
7 # Summary
8 This is Revision 2.0 of MAX3421E-based USB Host Shield Library for AVR's.
9 
10 Project main web site is: <https://chome.nerpa.tech/arduino_usb_host_shield_projects/>.
11 
12 Some information can also be found at: <http://blog.tkjelectronics.dk/>.
13 
14 The shield can be purchased from [TKJ Electronics](http://tkjelectronics.com/): <http://shop.tkjelectronics.dk/product_info.php?products_id=43>.
15 
16 ![USB Host Shield](http://shop.tkjelectronics.dk/images/USB_Host_Shield1.jpg)
17 
18 For more information about the hardware see the [Hardware Manual](https://chome.nerpa.tech/usb-host-shield-hardware-manual/).
19 
20 # Developed By
21 
22 * __Oleg Mazurov__ - <mazurov@gmail.com>
23 * __Alexei Glushchenko__ - <alex-gl@mail.ru>
24  * Developers of the USB Core, HID, FTDI, ADK, ACM, and PL2303 libraries
25 * __Kristian Sloth Lauszus__ - <lauszus@gmail.com>
26  * Developer of the [BTD](#bluetooth-libraries), [BTHID](#bthid-library), [SPP](#spp-library), [PS4](#ps4-library), [PS3](#ps3-library), [Wii](#wii-library), [Xbox](#xbox-library), and [PSBuzz](#ps-buzz-library) libraries
27 * __Andrew Kroll__ - <xxxajk@gmail.com>
28  * Major contributor to mass storage code
29 * __guruthree__
30  * [Xbox ONE](#xbox-one-library) controller support
31 * __Yuuichi Akagawa__ - [\@YuuichiAkagawa](https://twitter.com/yuuichiakagawa)
32  * Developer of the [MIDI](#midi-library) library
33 
34 
35 # Table of Contents
36 
37 * [How to include the library](#how-to-include-the-library)
38  * [Arduino Library Manager](#arduino-library-manager)
39  * [Manual installation](#manual-installation)
40 * [How to use the library](#how-to-use-the-library)
41  * [Documentation](#documentation)
42  * [Enable debugging](#enable-debugging)
43  * [Boards](#boards)
44  * [Bluetooth libraries](#bluetooth-libraries)
45  * [BTHID library](#bthid-library)
46  * [SPP library](#spp-library)
47  * [PS4 Library](#ps4-library)
48  * [PS3 Library](#ps3-library)
49  * [Xbox Libraries](#xbox-libraries)
50  * [Xbox library](#xbox-library)
51  * [Xbox 360 Library](#xbox-360-library)
52  * [Xbox ONE Library](#xbox-one-library)
53  * [Xbox ONE S Library](#xbox-one-s-library)
54  * [Wii library](#wii-library)
55  * [PS Buzz Library](#ps-buzz-library)
56  * [HID Libraries](#hid-libraries)
57  * [MIDI Library](#midi-library)
58 * [Interface modifications](#interface-modifications)
59 * [FAQ](#faq)
60 
61 # How to include the library
62 
63 ### Arduino Library Manager
64 
65 First install Arduino IDE version 1.6.2 or newer, then simply use the Arduino Library Manager to install the library.
66 
67 Please see the following page for instructions: <http://www.arduino.cc/en/Guide/Libraries#toc3>.
68 
69 ### Manual installation
70 
71 First download the library by clicking on the following link: <https://github.com/felis/USB_Host_Shield_2.0/archive/master.zip>.
72 
73 Then uncompress the zip folder and rename the directory to "USB\_Host\_Shield\_20", as any special characters are not supported by the Arduino IDE.
74 
75 Now open up the Arduino IDE and open "File>Preferences". There you will see the location of your sketchbook. Open that directory and create a directory called "libraries" inside that directory.
76 Now move the "USB\_Host\_Shield\_20" directory to the "libraries" directory.
77 
78 The final structure should look like this:
79 
80 * Arduino/
81  * libraries/
82  * USB\_Host\_Shield\_20/
83 
84 Now quit the Arduino IDE and reopen it.
85 
86 Now you should be able to go open all the examples codes by navigating to "File>Examples>USB\_Host\_Shield\_20" and then select the example you will like to open.
87 
88 For more information visit the following sites: <http://arduino.cc/en/Guide/Libraries> and <https://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use>.
89 
90 # How to use the library
91 
92 ### Documentation
93 
94 Documentation for the library can be found at the following link: <https://felis.github.io/USB_Host_Shield_2.0/>.
95 
96 ### Enable debugging
97 
98 By default serial debugging is disabled. To turn it on simply change ```ENABLE_UHS_DEBUGGING``` to 1 in [settings.h](settings.h) like so:
99 
100 ```C++
101 #define ENABLE_UHS_DEBUGGING 1
102 ```
103 
104 ### Boards
105 
106 Currently the following boards are supported by the library:
107 
108 * All official Arduino AVR boards (Uno, Duemilanove, Mega, Mega 2560, Mega ADK, Leonardo etc.)
109 * Arduino Due, Intel Galileo, Intel Galileo 2, and Intel Edison
110  * Note that the Intel Galileo uses pin 2 and 3 as INT and SS pin respectively by default, so some modifications to the shield are needed. See the "Interface modifications" section in the [hardware manual](https://chome.nerpa.tech/usb-host-shield-hardware-manual) for more information.
111  * Note native USB host is not supported on any of these platforms. You will have to use the shield for now.
112 * Teensy (Teensy++ 1.0, Teensy 2.0, Teensy++ 2.0, Teensy 3.x, Teensy LC and Teensy 4.x)
113  * Note if you are using the Teensy 3.x you should download this SPI library as well: <https://github.com/xxxajk/spi4teensy3>. You should then add ```#include <spi4teensy3.h>``` to your .ino file.
114 * Balanduino
115 * Sanguino
116 * Black Widdow
117 * RedBearLab nRF51822
118 * Digilent chipKIT
119  * Please see: <https://chome.nerpa.tech/mcu/usb/running-usb-host-code-on-digilent-chipkit-board>.
120 * STM32F4
121  * Currently the [NUCLEO-F446RE](http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1847/PF262063) is supported featuring the STM32F446. Take a look at the following example code: <https://github.com/Lauszus/Nucleo_F446RE_USBHost>.
122 * ESP8266 is supported using the [ESP8266 Arduino core](https://github.com/esp8266/Arduino)
123  * Note it uses pin 15 and 5 for SS and INT respectively
124  * Also please be aware that:
125  * GPIO16 is **NOT** usable, as it will be used for some other purposes. For example, reset the SoC itself from sleep mode.
126  * GPIO6 to 11 is also **NOT** usable, as they are used to connect SPI flash chip and it is used for storing the executable binary content.
127 * ESP32 is supported using the [arduino-esp32](https://github.com/espressif/arduino-esp32/)
128  * GPIO5 : SS, GPIO17 : INT, GPIO18 : SCK, GPIO19 : MISO, GPIO23 : MOSI
129 
130 The following boards need to be activated manually in [settings.h](settings.h):
131 
132 * Arduino Mega ADK
133  * If you are using Arduino 1.5.5 or newer there is no need to activate the Arduino Mega ADK manually
134 * Black Widdow
135 
136 Simply set the corresponding value to 1 instead of 0.
137 
138 ### [Bluetooth libraries](BTD.cpp)
139 
140 The [BTD library](BTD.cpp) is a general purpose library for an ordinary Bluetooth dongle.
141 This library make it easy to add support for different Bluetooth services like a PS3 or a Wii controller or SPP which is a virtual serial port via Bluetooth.
142 Some different examples can be found in the [example directory](examples/Bluetooth).
143 
144 The BTD library also makes it possible to use multiple services at once, the following example sketch is an example of this:
145 [PS3SPP.ino](examples/Bluetooth/PS3SPP/PS3SPP.ino).
146 
147 ### [BTHID library](BTHID.cpp)
148 
149 The [Bluetooth HID library](BTHID.cpp) allows you to connect HID devices via Bluetooth to the USB Host Shield.
150 
151 Currently HID mice and keyboards are supported.
152 
153 It uses the standard Boot protocol by default, but it is also able to use the Report protocol as well. You would simply have to call ```setProtocolMode()``` and then parse ```HID_RPT_PROTOCOL``` as an argument. You will then have to modify the parser for your device. See the example: [BTHID.ino](examples/Bluetooth/BTHID/BTHID.ino) for more information.
154 
155 The [PS4 library](#ps4-library) also uses this class to handle all Bluetooth communication.
156 
157 For information see the following blog post: <http://blog.tkjelectronics.dk/2013/12/bluetooth-hid-devices-now-supported-by-the-usb-host-library/>.
158 
159 ### [SPP library](SPP.cpp)
160 
161 SPP stands for "Serial Port Profile" and is a Bluetooth protocol that implements a virtual comport which allows you to send data back and forth from your computer/phone to your Arduino via Bluetooth.
162 It has been tested successfully on Windows, Mac OS X, Linux, and Android.
163 
164 Take a look at the [SPP.ino](examples/Bluetooth/SPP/SPP.ino) example for more information.
165 
166 More information can be found at these blog posts:
167 
168 * <http://chome.nerpa.tech/mcu/bluetooth-rfcommspp-service-support-for-usb-host-2-0-library-released>
169 * <http://blog.tkjelectronics.dk/2012/07/rfcommspp-library-for-arduino/>
170 
171 To implement the SPP protocol I used a Bluetooth sniffing tool called [PacketLogger](http://www.tkjelectronics.com/uploads/PacketLogger.zip) developed by Apple.
172 It enables me to see the Bluetooth communication between my Mac and any device.
173 
174 ### PS4 Library
175 
176 The PS4BT library is split up into the [PS4BT](PS4BT.h) and the [PS4USB](PS4USB.h) library. These allow you to use the Sony PS4 controller via Bluetooth and USB.
177 
178 The [PS4BT.ino](examples/Bluetooth/PS4BT/PS4BT.ino) and [PS4USB.ino](examples/PS4USB/PS4USB.ino) examples shows how to easily read the buttons, joysticks, touchpad and IMU on the controller via Bluetooth and USB respectively. It is also possible to control the rumble and light on the controller and get the battery level.
179 
180 Before you can use the PS4 controller via Bluetooth you will need to pair with it.
181 
182 Simply create the PS4BT instance like so: ```PS4BT PS4(&Btd, PAIR);``` and then hold down the Share button and then hold down the PS without releasing the Share button. The PS4 controller will then start to blink rapidly indicating that it is in pairing mode.
183 
184 It should then automatically pair the dongle with your controller. This only have to be done once.
185 
186 For information see the following blog post: <http://blog.tkjelectronics.dk/2014/01/ps4-controller-now-supported-by-the-usb-host-library/>.
187 
188 Also check out this excellent Wiki by Frank Zhao about the PS4 controller: <http://eleccelerator.com/wiki/index.php?title=DualShock_4> and this Linux driver: <https://github.com/chrippa/ds4drv>.
189 
190 Several guides on how to use the PS4 library has been written by Dr. James E. Barger and are available at the following link: <https://sites.google.com/view/vbatc-engineeringtechnology2/control-system-tutorials/ps4-tutorials>.
191 
192 ### PS3 Library
193 
194 These libraries consist of the [PS3BT](PS3BT.cpp) and [PS3USB](PS3USB.cpp). These libraries allows you to use a Dualshock 3, Navigation or a Motion controller with the USB Host Shield both via Bluetooth and USB.
195 
196 In order to use your Playstation controller via Bluetooth you have to set the Bluetooth address of the dongle internally to your PS3 Controller. This can be achieved by first plugging in the Bluetooth dongle and wait a few seconds. Now plug in the controller via USB and wait until the LEDs start to flash. The library has now written the Bluetooth address of the dongle to the PS3 controller.
197 
198 Finally simply plug in the Bluetooth dongle again and press PS on the PS3 controller. After a few seconds it should be connected to the dongle and ready to use.
199 
200 __Note:__ You will have to plug in the Bluetooth dongle before connecting the controller, as the library needs to read the address of the dongle. Alternatively you could set it in code like so: [PS3BT.ino#L20](examples/Bluetooth/PS3BT/PS3BT.ino#L20).
201 
202 For more information about the PS3 protocol see the official wiki: <https://github.com/felis/USB_Host_Shield_2.0/wiki/PS3-Information>.
203 
204 Also take a look at the blog posts:
205 
206 * <http://blog.tkjelectronics.dk/2012/01/ps3-controller-bt-library-for-arduino/>
207 * <http://chome.nerpa.tech/mcu/sony-ps3-controller-support-added-to-usb-host-library>
208 * <http://chome.nerpa.tech/mcu/arduino/interfacing-ps3-controllers-via-usb>
209 
210 A special thanks go to the following people:
211 
212 1. _Richard Ibbotson_ who made this excellent guide: <http://chome.nerpa.tech/mcu/ps3-and-wiimote-game-controllers-on-the-arduino-host-shield-part>
213 2. _Tomoyuki Tanaka_ for releasing his code for the Arduino USB Host shield connected to the wiimote: <http://chome.nerpa.tech/mcu/rc-car-controlled-by-wii-remote-on-arduino>
214 
215 Also a big thanks all the people behind these sites about the Motion controller:
216 
217 * <http://thp.io/2010/psmove/>
218 * <http://www.copenhagengamecollective.org/unimove/>
219 * <https://github.com/thp/psmoveapi>
220 * <http://code.google.com/p/moveonpc/>
221 
222 ### Xbox Libraries
223 
224 The library supports both the original Xbox controller via USB and the Xbox 360 controller both via USB and wirelessly.
225 
226 #### Xbox library
227 
228 The [XBOXOLD](XBOXOLD.cpp) class implements support for the original Xbox controller via USB.
229 
230 All the information are from the following sites:
231 
232 * <https://github.com/torvalds/linux/blob/master/Documentation/input/xpad.txt>
233 * <https://github.com/torvalds/linux/blob/master/drivers/input/joystick/xpad.c>
234 * <http://euc.jp/periphs/xbox-controller.ja.html>
235 * <https://github.com/Grumbel/xboxdrv/blob/master/PROTOCOL#L15>
236 
237 #### Xbox 360 Library
238 
239 The library support one Xbox 360 via USB or up to four Xbox 360 controllers wirelessly by using a [Xbox 360 wireless receiver](http://blog.tkjelectronics.dk/wp-content/uploads/xbox360-wireless-receiver.jpg).
240 
241 To use it via USB use the [XBOXUSB](XBOXUSB.cpp) library or to use it wirelessly use the [XBOXRECV](XBOXRECV.cpp) library.
242 
243 __Note that a Wireless controller can NOT be used via USB!__
244 
245 Examples code can be found in the [examples directory](examples/Xbox).
246 
247 Also see the following blog posts:
248 
249 * <http://chome.nerpa.tech/mcu/xbox360-controller-support-added-to-usb-host-shield-2-0-library>
250 * <http://blog.tkjelectronics.dk/2012/07/xbox-360-controller-support-added-to-the-usb-host-library/>
251 * <http://blog.tkjelectronics.dk/2012/12/xbox-360-receiver-added-to-the-usb-host-library/>
252 
253 All the information regarding the Xbox 360 controller protocol are form these sites:
254 
255 * <http://tattiebogle.net/index.php/ProjectRoot/Xbox360Controller/UsbInfo>
256 * <http://tattiebogle.net/index.php/ProjectRoot/Xbox360Controller/WirelessUsbInfo>
257 * <https://github.com/Grumbel/xboxdrv/blob/master/PROTOCOL>
258 
259 #### Xbox ONE Library
260 
261 A Xbox ONE controller is supported via USB in the [XBOXONE](XBOXONE.cpp) class. It is heavily based on the 360 library above. In addition to cross referencing the above, information on the protocol was found at:
262 
263 * <https://github.com/quantus/xbox-one-controller-protocol>
264 * <https://github.com/torvalds/linux/blob/master/drivers/input/joystick/xpad.c>
265 * <https://github.com/kylelemons/xbox/blob/master/xbox.go>
266 
267 #### Xbox ONE S Library
268 
269 A Xbox ONE controller is supported via Bluetooth in the [XBOXONESBT](XBOXONESBT.cpp) class.
270 
271 Special thanks to [HisashiKato](https://github.com/HisashiKato) for his help: <https://github.com/felis/USB_Host_Shield_2.0/issues/252#issuecomment-716912362>.
272 
273 ### [Wii library](Wii.cpp)
274 
275 The [Wii](Wii.cpp) library support the Wiimote, but also the Nunchuch and Motion Plus extensions via Bluetooth. The Wii U Pro Controller and Wii Balance Board are also supported via Bluetooth.
276 
277 First you have to pair with the controller, this is done automatically by the library if you create the instance like so:
278 
279 ```C++
280 WII Wii(&Btd, PAIR);
281 ```
282 
283 And then press 1 & 2 at once on the Wiimote or the SYNC buttons if you are using a Wii U Pro Controller or a Wii Balance Board.
284 
285 After that you can simply create the instance like so:
286 
287 ```C++
288 WII Wii(&Btd);
289 ```
290 
291 Then just press any button on the Wiimote and it will then connect to the dongle.
292 
293 Take a look at the example for more information: [Wii.ino](examples/Bluetooth/Wii/Wii.ino).
294 
295 Also take a look at the blog post:
296 
297 * <http://blog.tkjelectronics.dk/2012/08/wiimote-added-to-usb-host-library/>
298 
299 The Wii IR camera can also be used, but you will have to activate the code for it manually as it is quite large. Simply set ```ENABLE_WII_IR_CAMERA``` to 1 in [settings.h](settings.h).
300 
301 The [WiiIRCamera.ino](examples/Bluetooth/WiiIRCamera/WiiIRCamera.ino) example shows how it can be used.
302 
303 All the information about the Wii controllers are from these sites:
304 
305 * <http://wiibrew.org/wiki/Wiimote>
306 * <http://wiibrew.org/wiki/Wiimote/Extension_Controllers>
307 * <http://wiibrew.org/wiki/Wiimote/Extension_Controllers/Nunchuck>
308 * <http://wiibrew.org/wiki/Wiimote/Extension_Controllers/Wii_Motion_Plus>
309 * <http://wiibrew.org/wiki/Wii_Balance_Board>
310 * The old library created by _Tomoyuki Tanaka_: <https://github.com/moyuchin/WiiRemote_on_Arduino> also helped a lot.
311 
312 ### [PS Buzz Library](PSBuzz.cpp)
313 
314 This library implements support for the Playstation Buzz controllers via USB.
315 
316 It is essentially just a wrapper around the [HIDUniversal](hiduniversal.cpp) which takes care of the initializing and reading of the controllers. The [PSBuzz](PSBuzz.cpp) class simply inherits this and parses the data, so it is easy for users to read the buttons and turn the big red button on the controllers on and off.
317 
318 The example [PSBuzz.ino](examples/PSBuzz/PSBuzz.ino) shows how one can do this with just a few lines of code.
319 
320 More information about the controller can be found at the following sites:
321 
322 * http://www.developerfusion.com/article/84338/making-usb-c-friendly/
323 * https://github.com/torvalds/linux/blob/master/drivers/hid/hid-sony.c
324 
325 ### HID Libraries
326 
327 HID devices are also supported by the library. However these require you to write your own driver. A few example are provided in the [examples/HID](examples/HID) directory. Including an example for the [SteelSeries SRW-S1 Steering Wheel](examples/HID/SRWS1/SRWS1.ino).
328 
329 ### [MIDI Library](usbh_midi.cpp)
330 
331 The library support MIDI devices.
332 You can convert USB MIDI keyboard to legacy serial MIDI.
333 
334 * [USB_MIDI_converter.ino](examples/USBH_MIDI/USB_MIDI_converter/USB_MIDI_converter.ino)
335 * [USB_MIDI_converter_multi.ino](examples/USBH_MIDI/USB_MIDI_converter_multi/USB_MIDI_converter_multi.ino)
336 
337 For information see the following page: <http://yuuichiakagawa.github.io/USBH_MIDI/>.
338 
339 # Interface modifications
340 
341 The shield is using SPI for communicating with the MAX3421E USB host controller. It uses the SCK, MISO and MOSI pins via the ICSP on your board.
342 
343 Note this means that it uses pin 13, 12, 11 on an Arduino Uno, so these pins can not be used for anything else than SPI communication!
344 
345 Furthermore it uses one pin as SS and one INT pin. These are by default located on pin 10 and 9 respectively. They can easily be reconfigured in case you need to use them for something else by cutting the jumper on the shield and then solder a wire from the pad to the new pin.
346 
347 After that you need modify the following entry in [UsbCore.h](UsbCore.h):
348 
349 ```C++
350 typedef MAX3421e<P10, P9> MAX3421E;
351 ```
352 
353 For instance if you have rerouted SS to pin 7 it should read:
354 
355 ```C++
356 typedef MAX3421e<P7, P9> MAX3421E;
357 ```
358 
359 See the "Interface modifications" section in the [hardware manual](https://chome.nerpa.tech/usb-host-shield-hardware-manual) for more information.
360 
361 # FAQ
362 
363 > When I plug my device into the USB connector nothing happens?
364 
365 * Try to connect a external power supply to the Arduino - this solves the problem in most cases.
366 * You can also use a powered hub between the device and the USB Host Shield. You should then include the USB hub library: ```#include <usbhub.h>``` and create the instance like so: ```USBHub Hub1(&Usb);```.
367 
368 > When I connecting my PS3 controller I get a output like this:
369 
370 ```
371 Dualshock 3 Controller Enabled
372 
373 LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
374 LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
375 LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
376 LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
377 LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
378 ```
379 
380 * This means that your dongle does not support 2.0+EDR, so you will need another dongle. Please see the following [list](https://github.com/felis/USB_Host_Shield_2.0/wiki/Bluetooth-dongles) for tested working dongles.
381 
382 > When compiling I am getting the following error: "fatal error: SPI.h: No such file or directory".
383 
384 * Please make sure to include the SPI library like so: ```#include <SPI.h>``` in your .ino file.
diff --git a/_s_p_p_8cpp.html b/_s_p_p_8cpp.html index 0fe47026..b81e24ee 100644 --- a/_s_p_p_8cpp.html +++ b/_s_p_p_8cpp.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: SPP.cpp File Reference @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + +
- - - - - + + + + +
@@ -110,7 +87,9 @@ Variables  

Variable Documentation

- + +

◆ rfcomm_crc_table

+
@@ -120,7 +99,7 @@ Variables
Initial value:
= {
0x00, 0x91, 0xE3, 0x72, 0x07, 0x96, 0xE4, 0x75, 0x0E, 0x9F, 0xED, 0x7C, 0x09, 0x98, 0xEA, 0x7B,
0x1C, 0x8D, 0xFF, 0x6E, 0x1B, 0x8A, 0xF8, 0x69, 0x12, 0x83, 0xF1, 0x60, 0x15, 0x84, 0xF6, 0x67,
0x38, 0xA9, 0xDB, 0x4A, 0x3F, 0xAE, 0xDC, 0x4D, 0x36, 0xA7, 0xD5, 0x44, 0x31, 0xA0, 0xD2, 0x43,
0x24, 0xB5, 0xC7, 0x56, 0x23, 0xB2, 0xC0, 0x51, 0x2A, 0xBB, 0xC9, 0x58, 0x2D, 0xBC, 0xCE, 0x5F,
0x70, 0xE1, 0x93, 0x02, 0x77, 0xE6, 0x94, 0x05, 0x7E, 0xEF, 0x9D, 0x0C, 0x79, 0xE8, 0x9A, 0x0B,
0x6C, 0xFD, 0x8F, 0x1E, 0x6B, 0xFA, 0x88, 0x19, 0x62, 0xF3, 0x81, 0x10, 0x65, 0xF4, 0x86, 0x17,
0x48, 0xD9, 0xAB, 0x3A, 0x4F, 0xDE, 0xAC, 0x3D, 0x46, 0xD7, 0xA5, 0x34, 0x41, 0xD0, 0xA2, 0x33,
0x54, 0xC5, 0xB7, 0x26, 0x53, 0xC2, 0xB0, 0x21, 0x5A, 0xCB, 0xB9, 0x28, 0x5D, 0xCC, 0xBE, 0x2F,
0xE0, 0x71, 0x03, 0x92, 0xE7, 0x76, 0x04, 0x95, 0xEE, 0x7F, 0x0D, 0x9C, 0xE9, 0x78, 0x0A, 0x9B,
0xFC, 0x6D, 0x1F, 0x8E, 0xFB, 0x6A, 0x18, 0x89, 0xF2, 0x63, 0x11, 0x80, 0xF5, 0x64, 0x16, 0x87,
0xD8, 0x49, 0x3B, 0xAA, 0xDF, 0x4E, 0x3C, 0xAD, 0xD6, 0x47, 0x35, 0xA4, 0xD1, 0x40, 0x32, 0xA3,
0xC4, 0x55, 0x27, 0xB6, 0xC3, 0x52, 0x20, 0xB1, 0xCA, 0x5B, 0x29, 0xB8, 0xCD, 0x5C, 0x2E, 0xBF,
0x90, 0x01, 0x73, 0xE2, 0x97, 0x06, 0x74, 0xE5, 0x9E, 0x0F, 0x7D, 0xEC, 0x99, 0x08, 0x7A, 0xEB,
0x8C, 0x1D, 0x6F, 0xFE, 0x8B, 0x1A, 0x68, 0xF9, 0x82, 0x13, 0x61, 0xF0, 0x85, 0x14, 0x66, 0xF7,
0xA8, 0x39, 0x4B, 0xDA, 0xAF, 0x3E, 0x4C, 0xDD, 0xA6, 0x37, 0x45, 0xD4, 0xA1, 0x30, 0x42, 0xD3,
0xB4, 0x25, 0x57, 0xC6, 0xB3, 0x22, 0x50, 0xC1, 0xBA, 0x2B, 0x59, 0xC8, 0xBD, 0x2C, 0x5E, 0xCF
}
-

Definition at line 26 of file SPP.cpp.

+

Definition at line 26 of file SPP.cpp.

@@ -129,7 +108,7 @@ Variables diff --git a/_s_p_p_8cpp__incl.map b/_s_p_p_8cpp__incl.map index 1406ed7c..730fd7c1 100644 --- a/_s_p_p_8cpp__incl.map +++ b/_s_p_p_8cpp__incl.map @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/_s_p_p_8cpp__incl.md5 b/_s_p_p_8cpp__incl.md5 index 2e490ec2..48f872c1 100644 --- a/_s_p_p_8cpp__incl.md5 +++ b/_s_p_p_8cpp__incl.md5 @@ -1 +1 @@ -13ec96c550e18a5b87013a932cc6a9c2 \ No newline at end of file +b9aa79f21f664e4fd1d522234b09e828 \ No newline at end of file diff --git a/_s_p_p_8cpp__incl.png b/_s_p_p_8cpp__incl.png index 1ec1f231..a1d722f1 100644 Binary files a/_s_p_p_8cpp__incl.png and b/_s_p_p_8cpp__incl.png differ diff --git a/_s_p_p_8cpp_source.html b/_s_p_p_8cpp_source.html index e0103e02..182b948f 100644 --- a/_s_p_p_8cpp_source.html +++ b/_s_p_p_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: SPP.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - - + + +
@@ -106,7 +83,7 @@ This graph shows which files directly or indirectly include this file:
- +
@@ -143,7 +120,9 @@ Macros  

Macro Definition Documentation

- + +

◆ RFCOMM_SABM

+
@@ -153,11 +132,13 @@ Macros
-

Definition at line 24 of file SPP.h.

+

Definition at line 24 of file SPP.h.

- + +

◆ RFCOMM_UA

+
@@ -167,11 +148,13 @@ Macros
-

Definition at line 25 of file SPP.h.

+

Definition at line 25 of file SPP.h.

- + +

◆ RFCOMM_UIH

+
@@ -181,11 +164,13 @@ Macros
-

Definition at line 26 of file SPP.h.

+

Definition at line 26 of file SPP.h.

- + +

◆ RFCOMM_DISC

+
@@ -195,11 +180,13 @@ Macros
-

Definition at line 28 of file SPP.h.

+

Definition at line 28 of file SPP.h.

- + +

◆ extendAddress

+
@@ -209,11 +196,13 @@ Macros
-

Definition at line 30 of file SPP.h.

+

Definition at line 30 of file SPP.h.

- + +

◆ BT_RFCOMM_PN_CMD

+
@@ -223,11 +212,13 @@ Macros
-

Definition at line 33 of file SPP.h.

+

Definition at line 33 of file SPP.h.

- + +

◆ BT_RFCOMM_PN_RSP

+
@@ -237,11 +228,13 @@ Macros
-

Definition at line 34 of file SPP.h.

+

Definition at line 34 of file SPP.h.

- + +

◆ BT_RFCOMM_MSC_CMD

+
@@ -251,11 +244,13 @@ Macros
-

Definition at line 35 of file SPP.h.

+

Definition at line 35 of file SPP.h.

- + +

◆ BT_RFCOMM_MSC_RSP

+
@@ -265,11 +260,13 @@ Macros
-

Definition at line 36 of file SPP.h.

+

Definition at line 36 of file SPP.h.

- + +

◆ BT_RFCOMM_RPN_CMD

+
@@ -279,11 +276,13 @@ Macros
-

Definition at line 37 of file SPP.h.

+

Definition at line 37 of file SPP.h.

- + +

◆ BT_RFCOMM_RPN_RSP

+
@@ -293,7 +292,7 @@ Macros
-

Definition at line 38 of file SPP.h.

+

Definition at line 38 of file SPP.h.

@@ -302,7 +301,7 @@ Macros diff --git a/_s_p_p_8h__dep__incl.map b/_s_p_p_8h__dep__incl.map index 3133729f..80494747 100644 --- a/_s_p_p_8h__dep__incl.map +++ b/_s_p_p_8h__dep__incl.map @@ -1,3 +1,3 @@ - + diff --git a/_s_p_p_8h__dep__incl.md5 b/_s_p_p_8h__dep__incl.md5 index c4196b87..026dbd27 100644 --- a/_s_p_p_8h__dep__incl.md5 +++ b/_s_p_p_8h__dep__incl.md5 @@ -1 +1 @@ -8fa503e9bcede23521cf22418b0e794e \ No newline at end of file +f36e77e58f6fed5fcd04ea59c72b0abb \ No newline at end of file diff --git a/_s_p_p_8h__dep__incl.png b/_s_p_p_8h__dep__incl.png index 78a4adfd..2314f08e 100644 Binary files a/_s_p_p_8h__dep__incl.png and b/_s_p_p_8h__dep__incl.png differ diff --git a/_s_p_p_8h__incl.map b/_s_p_p_8h__incl.map index 93d857c5..c5d0a4d9 100644 --- a/_s_p_p_8h__incl.map +++ b/_s_p_p_8h__incl.map @@ -1,6 +1,6 @@ - - - + + + diff --git a/_s_p_p_8h__incl.md5 b/_s_p_p_8h__incl.md5 index f139a88d..39ec78f3 100644 --- a/_s_p_p_8h__incl.md5 +++ b/_s_p_p_8h__incl.md5 @@ -1 +1 @@ -ebaf4a19e87d528fa81f6393cdd2bc87 \ No newline at end of file +a91a331bec3537c7a4cb45239da270de \ No newline at end of file diff --git a/_s_p_p_8h__incl.png b/_s_p_p_8h__incl.png index d35d49e0..a91bfa27 100644 Binary files a/_s_p_p_8h__incl.png and b/_s_p_p_8h__incl.png differ diff --git a/_s_p_p_8h_source.html b/_s_p_p_8h_source.html index c3abcec8..0c386065 100644 --- a/_s_p_p_8h_source.html +++ b/_s_p_p_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: SPP.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - + +
@@ -103,7 +80,7 @@ Include dependency graph for UHS2_gpio.cpp: diff --git a/_u_h_s2__gpio_8cpp__incl.map b/_u_h_s2__gpio_8cpp__incl.map index e6dfb4cc..e5fc421f 100644 --- a/_u_h_s2__gpio_8cpp__incl.map +++ b/_u_h_s2__gpio_8cpp__incl.map @@ -1,4 +1,4 @@ - - + + diff --git a/_u_h_s2__gpio_8cpp__incl.md5 b/_u_h_s2__gpio_8cpp__incl.md5 index 495959c8..5f54e652 100644 --- a/_u_h_s2__gpio_8cpp__incl.md5 +++ b/_u_h_s2__gpio_8cpp__incl.md5 @@ -1 +1 @@ -5fafb4b045fd272c2cc9ebe047206021 \ No newline at end of file +06a12a581ad1198d62c6c8600346a9df \ No newline at end of file diff --git a/_u_h_s2__gpio_8cpp__incl.png b/_u_h_s2__gpio_8cpp__incl.png index 73717f56..9768f6eb 100644 Binary files a/_u_h_s2__gpio_8cpp__incl.png and b/_u_h_s2__gpio_8cpp__incl.png differ diff --git a/_u_h_s2__gpio_8cpp_source.html b/_u_h_s2__gpio_8cpp_source.html index 1c927537..603eb225 100644 --- a/_u_h_s2__gpio_8cpp_source.html +++ b/_u_h_s2__gpio_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: UHS2_gpio.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- +
@@ -102,7 +79,7 @@ This graph shows which files directly or indirectly include this file:
- +
@@ -118,7 +95,7 @@ Classes diff --git a/_u_h_s2__gpio_8h__dep__incl.map b/_u_h_s2__gpio_8h__dep__incl.map index 40c1ea6a..1c7a5990 100644 --- a/_u_h_s2__gpio_8h__dep__incl.map +++ b/_u_h_s2__gpio_8h__dep__incl.map @@ -1,3 +1,3 @@ - + diff --git a/_u_h_s2__gpio_8h__dep__incl.md5 b/_u_h_s2__gpio_8h__dep__incl.md5 index 775c25d5..c059d290 100644 --- a/_u_h_s2__gpio_8h__dep__incl.md5 +++ b/_u_h_s2__gpio_8h__dep__incl.md5 @@ -1 +1 @@ -06938a8200dab1f59b6abb10b81505aa \ No newline at end of file +a0384b1c8c2f35d7b22a13049b8cb875 \ No newline at end of file diff --git a/_u_h_s2__gpio_8h__dep__incl.png b/_u_h_s2__gpio_8h__dep__incl.png index d862a7fb..f8750429 100644 Binary files a/_u_h_s2__gpio_8h__dep__incl.png and b/_u_h_s2__gpio_8h__dep__incl.png differ diff --git a/_u_h_s2__gpio_8h__incl.map b/_u_h_s2__gpio_8h__incl.map index 44170de2..6a7e2b6a 100644 --- a/_u_h_s2__gpio_8h__incl.map +++ b/_u_h_s2__gpio_8h__incl.map @@ -1,3 +1,3 @@ - + diff --git a/_u_h_s2__gpio_8h__incl.md5 b/_u_h_s2__gpio_8h__incl.md5 index 56f165c8..27e49622 100644 --- a/_u_h_s2__gpio_8h__incl.md5 +++ b/_u_h_s2__gpio_8h__incl.md5 @@ -1 +1 @@ -e72e517fae3443dc9284720e8b3abfc0 \ No newline at end of file +500be2e2bdf40031858f83ca5d988de6 \ No newline at end of file diff --git a/_u_h_s2__gpio_8h__incl.png b/_u_h_s2__gpio_8h__incl.png index c397057d..f926a50c 100644 Binary files a/_u_h_s2__gpio_8h__incl.png and b/_u_h_s2__gpio_8h__incl.png differ diff --git a/_u_h_s2__gpio_8h_source.html b/_u_h_s2__gpio_8h_source.html index 6286960b..5761d205 100644 --- a/_u_h_s2__gpio_8h_source.html +++ b/_u_h_s2__gpio_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: UHS2_gpio.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- +
@@ -102,7 +79,7 @@ Include dependency graph for Usb.cpp: diff --git a/_usb_8cpp__incl.map b/_usb_8cpp__incl.map index bfb3e69f..3b914290 100644 --- a/_usb_8cpp__incl.map +++ b/_usb_8cpp__incl.map @@ -1,3 +1,3 @@ - + diff --git a/_usb_8cpp__incl.md5 b/_usb_8cpp__incl.md5 index f71e6530..08cf02a4 100644 --- a/_usb_8cpp__incl.md5 +++ b/_usb_8cpp__incl.md5 @@ -1 +1 @@ -983a9d4c5eeb9a3736dcb2d9192937eb \ No newline at end of file +c0083b07bac0c537372ef8120287eeb6 \ No newline at end of file diff --git a/_usb_8cpp__incl.png b/_usb_8cpp__incl.png index 6eb10631..aa51cf15 100644 Binary files a/_usb_8cpp__incl.png and b/_usb_8cpp__incl.png differ diff --git a/_usb_8cpp_source.html b/_usb_8cpp_source.html index 3a814fb1..1b9022dd 100644 --- a/_usb_8cpp_source.html +++ b/_usb_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Usb.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
@@ -149,7 +126,7 @@ This graph shows which files directly or indirectly include this file: diff --git a/_usb_8h__dep__incl.map b/_usb_8h__dep__incl.map index a317b165..e877db15 100644 --- a/_usb_8h__dep__incl.map +++ b/_usb_8h__dep__incl.map @@ -1,51 +1,51 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_usb_8h__dep__incl.md5 b/_usb_8h__dep__incl.md5 index 6a821aa3..1127a03e 100644 --- a/_usb_8h__dep__incl.md5 +++ b/_usb_8h__dep__incl.md5 @@ -1 +1 @@ -7c643f23ca87656d0de4bb0b970d686b \ No newline at end of file +c3d178c87de440befcdfa627a34aac33 \ No newline at end of file diff --git a/_usb_8h__dep__incl.png b/_usb_8h__dep__incl.png index 7a2bd06b..4559da81 100644 Binary files a/_usb_8h__dep__incl.png and b/_usb_8h__dep__incl.png differ diff --git a/_usb_8h_source.html b/_usb_8h_source.html index 0966b20f..53a22d2b 100644 --- a/_usb_8h_source.html +++ b/_usb_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Usb.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
 

Macro Definition Documentation

- + +

◆ bmREQ_GET_DESCR

+
@@ -241,11 +220,13 @@ Typedefs
-

Definition at line 60 of file UsbCore.h.

+

Definition at line 60 of file UsbCore.h.

- + +

◆ bmREQ_SET

+
@@ -255,11 +236,13 @@ Typedefs
-

Definition at line 61 of file UsbCore.h.

+

Definition at line 61 of file UsbCore.h.

- + +

◆ bmREQ_CL_GET_INTF

+
@@ -269,11 +252,13 @@ Typedefs
-

Definition at line 62 of file UsbCore.h.

+

Definition at line 62 of file UsbCore.h.

- + +

◆ USB_CLASS_USE_CLASS_INFO

+
@@ -283,11 +268,13 @@ Typedefs
-

Definition at line 69 of file UsbCore.h.

+

Definition at line 69 of file UsbCore.h.

- + +

◆ USB_CLASS_AUDIO

+
@@ -297,11 +284,13 @@ Typedefs
-

Definition at line 70 of file UsbCore.h.

+

Definition at line 70 of file UsbCore.h.

- + +

◆ USB_CLASS_COM_AND_CDC_CTRL

+
@@ -311,11 +300,13 @@ Typedefs
-

Definition at line 71 of file UsbCore.h.

+

Definition at line 71 of file UsbCore.h.

- + +

◆ USB_CLASS_HID

+
@@ -325,11 +316,13 @@ Typedefs
-

Definition at line 72 of file UsbCore.h.

+

Definition at line 72 of file UsbCore.h.

- + +

◆ USB_CLASS_PHYSICAL

+
@@ -339,11 +332,13 @@ Typedefs
-

Definition at line 73 of file UsbCore.h.

+

Definition at line 73 of file UsbCore.h.

- + +

◆ USB_CLASS_IMAGE

+
@@ -353,11 +348,13 @@ Typedefs
-

Definition at line 74 of file UsbCore.h.

+

Definition at line 74 of file UsbCore.h.

- + +

◆ USB_CLASS_PRINTER

+
@@ -367,11 +364,13 @@ Typedefs
-

Definition at line 75 of file UsbCore.h.

+

Definition at line 75 of file UsbCore.h.

- + +

◆ USB_CLASS_MASS_STORAGE

+
@@ -381,11 +380,13 @@ Typedefs
-

Definition at line 76 of file UsbCore.h.

+

Definition at line 76 of file UsbCore.h.

- + +

◆ USB_CLASS_HUB

+
@@ -395,11 +396,13 @@ Typedefs
-

Definition at line 77 of file UsbCore.h.

+

Definition at line 77 of file UsbCore.h.

- + +

◆ USB_CLASS_CDC_DATA

+
@@ -409,11 +412,13 @@ Typedefs
-

Definition at line 78 of file UsbCore.h.

+

Definition at line 78 of file UsbCore.h.

- + +

◆ USB_CLASS_SMART_CARD

+
@@ -423,11 +428,13 @@ Typedefs
-

Definition at line 79 of file UsbCore.h.

+

Definition at line 79 of file UsbCore.h.

- + +

◆ USB_CLASS_CONTENT_SECURITY

+
@@ -437,11 +444,13 @@ Typedefs
-

Definition at line 80 of file UsbCore.h.

+

Definition at line 80 of file UsbCore.h.

- + +

◆ USB_CLASS_VIDEO

+
@@ -451,11 +460,13 @@ Typedefs
-

Definition at line 81 of file UsbCore.h.

+

Definition at line 81 of file UsbCore.h.

- + +

◆ USB_CLASS_PERSONAL_HEALTH

+
@@ -465,11 +476,13 @@ Typedefs
-

Definition at line 82 of file UsbCore.h.

+

Definition at line 82 of file UsbCore.h.

- + +

◆ USB_CLASS_DIAGNOSTIC_DEVICE

+
@@ -479,11 +492,13 @@ Typedefs
-

Definition at line 83 of file UsbCore.h.

+

Definition at line 83 of file UsbCore.h.

- + +

◆ USB_CLASS_WIRELESS_CTRL

+
@@ -493,11 +508,13 @@ Typedefs
-

Definition at line 84 of file UsbCore.h.

+

Definition at line 84 of file UsbCore.h.

- + +

◆ USB_CLASS_MISC

+
@@ -507,11 +524,13 @@ Typedefs
-

Definition at line 85 of file UsbCore.h.

+

Definition at line 85 of file UsbCore.h.

- + +

◆ USB_CLASS_APP_SPECIFIC

+
@@ -521,11 +540,13 @@ Typedefs
-

Definition at line 86 of file UsbCore.h.

+

Definition at line 86 of file UsbCore.h.

- + +

◆ USB_CLASS_VENDOR_SPECIFIC

+
@@ -535,11 +556,13 @@ Typedefs
-

Definition at line 87 of file UsbCore.h.

+

Definition at line 87 of file UsbCore.h.

- + +

◆ USB_DEV_CONFIG_ERROR_DEVICE_NOT_SUPPORTED

+
@@ -549,11 +572,13 @@ Typedefs
-

Definition at line 90 of file UsbCore.h.

+

Definition at line 90 of file UsbCore.h.

- + +

◆ USB_DEV_CONFIG_ERROR_DEVICE_INIT_INCOMPLETE

+
@@ -563,11 +588,13 @@ Typedefs
-

Definition at line 91 of file UsbCore.h.

+

Definition at line 91 of file UsbCore.h.

- + +

◆ USB_ERROR_UNABLE_TO_REGISTER_DEVICE_CLASS

+
@@ -577,11 +604,13 @@ Typedefs
-

Definition at line 92 of file UsbCore.h.

+

Definition at line 92 of file UsbCore.h.

- + +

◆ USB_ERROR_OUT_OF_ADDRESS_SPACE_IN_POOL

+
@@ -591,11 +620,13 @@ Typedefs
-

Definition at line 93 of file UsbCore.h.

+

Definition at line 93 of file UsbCore.h.

- + +

◆ USB_ERROR_HUB_ADDRESS_OVERFLOW

+
@@ -605,11 +636,13 @@ Typedefs
-

Definition at line 94 of file UsbCore.h.

+

Definition at line 94 of file UsbCore.h.

- + +

◆ USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL

+
@@ -619,11 +652,13 @@ Typedefs
-

Definition at line 95 of file UsbCore.h.

+

Definition at line 95 of file UsbCore.h.

- + +

◆ USB_ERROR_EPINFO_IS_NULL

+
@@ -633,11 +668,13 @@ Typedefs
-

Definition at line 96 of file UsbCore.h.

+

Definition at line 96 of file UsbCore.h.

- + +

◆ USB_ERROR_INVALID_ARGUMENT

+
@@ -647,11 +684,13 @@ Typedefs
-

Definition at line 97 of file UsbCore.h.

+

Definition at line 97 of file UsbCore.h.

- + +

◆ USB_ERROR_CLASS_INSTANCE_ALREADY_IN_USE

+
@@ -661,11 +700,13 @@ Typedefs
-

Definition at line 98 of file UsbCore.h.

+

Definition at line 98 of file UsbCore.h.

- + +

◆ USB_ERROR_INVALID_MAX_PKT_SIZE

+
@@ -675,11 +716,13 @@ Typedefs
-

Definition at line 99 of file UsbCore.h.

+

Definition at line 99 of file UsbCore.h.

- + +

◆ USB_ERROR_EP_NOT_FOUND_IN_TBL

+
@@ -689,11 +732,13 @@ Typedefs
-

Definition at line 100 of file UsbCore.h.

+

Definition at line 100 of file UsbCore.h.

- + +

◆ USB_ERROR_CONFIG_REQUIRES_ADDITIONAL_RESET

+
@@ -703,11 +748,13 @@ Typedefs
-

Definition at line 101 of file UsbCore.h.

+

Definition at line 101 of file UsbCore.h.

- + +

◆ USB_ERROR_FailGetDevDescr

+
@@ -717,11 +764,13 @@ Typedefs
-

Definition at line 102 of file UsbCore.h.

+

Definition at line 102 of file UsbCore.h.

- + +

◆ USB_ERROR_FailSetDevTblEntry

+
@@ -731,11 +780,13 @@ Typedefs
-

Definition at line 103 of file UsbCore.h.

+

Definition at line 103 of file UsbCore.h.

- + +

◆ USB_ERROR_FailGetConfDescr

+
@@ -745,11 +796,13 @@ Typedefs
-

Definition at line 104 of file UsbCore.h.

+

Definition at line 104 of file UsbCore.h.

- + +

◆ USB_ERROR_TRANSFER_TIMEOUT

+
@@ -759,11 +812,13 @@ Typedefs
-

Definition at line 105 of file UsbCore.h.

+

Definition at line 105 of file UsbCore.h.

- + +

◆ USB_XFER_TIMEOUT

+
@@ -773,11 +828,13 @@ Typedefs
-

Definition at line 107 of file UsbCore.h.

+

Definition at line 107 of file UsbCore.h.

- + +

◆ USB_RETRY_LIMIT

+
@@ -787,11 +844,13 @@ Typedefs
-

Definition at line 109 of file UsbCore.h.

+

Definition at line 109 of file UsbCore.h.

- + +

◆ USB_SETTLE_DELAY

+
@@ -801,11 +860,13 @@ Typedefs
-

Definition at line 110 of file UsbCore.h.

+

Definition at line 110 of file UsbCore.h.

- + +

◆ USB_NUMDEVICES

+
@@ -815,11 +876,13 @@ Typedefs
-

Definition at line 112 of file UsbCore.h.

+

Definition at line 112 of file UsbCore.h.

- + +

◆ HUB_PORT_RESET_DELAY

+
@@ -829,11 +892,13 @@ Typedefs
-

Definition at line 114 of file UsbCore.h.

+

Definition at line 114 of file UsbCore.h.

- + +

◆ USB_STATE_MASK

+
@@ -843,11 +908,13 @@ Typedefs
-

Definition at line 117 of file UsbCore.h.

+

Definition at line 117 of file UsbCore.h.

- + +

◆ USB_STATE_DETACHED

+
@@ -857,11 +924,13 @@ Typedefs
-

Definition at line 119 of file UsbCore.h.

+

Definition at line 119 of file UsbCore.h.

- + +

◆ USB_DETACHED_SUBSTATE_INITIALIZE

+
@@ -871,11 +940,13 @@ Typedefs
-

Definition at line 120 of file UsbCore.h.

+

Definition at line 120 of file UsbCore.h.

- + +

◆ USB_DETACHED_SUBSTATE_WAIT_FOR_DEVICE

+
@@ -885,11 +956,13 @@ Typedefs
-

Definition at line 121 of file UsbCore.h.

+

Definition at line 121 of file UsbCore.h.

- + +

◆ USB_DETACHED_SUBSTATE_ILLEGAL

+
@@ -899,11 +972,13 @@ Typedefs
-

Definition at line 122 of file UsbCore.h.

+

Definition at line 122 of file UsbCore.h.

- + +

◆ USB_ATTACHED_SUBSTATE_SETTLE

+
@@ -913,11 +988,13 @@ Typedefs
-

Definition at line 123 of file UsbCore.h.

+

Definition at line 123 of file UsbCore.h.

- + +

◆ USB_ATTACHED_SUBSTATE_RESET_DEVICE

+
@@ -927,11 +1004,13 @@ Typedefs
-

Definition at line 124 of file UsbCore.h.

+

Definition at line 124 of file UsbCore.h.

- + +

◆ USB_ATTACHED_SUBSTATE_WAIT_RESET_COMPLETE

+
@@ -941,11 +1020,13 @@ Typedefs
-

Definition at line 125 of file UsbCore.h.

+

Definition at line 125 of file UsbCore.h.

- + +

◆ USB_ATTACHED_SUBSTATE_WAIT_SOF

+
@@ -955,11 +1036,13 @@ Typedefs
-

Definition at line 126 of file UsbCore.h.

+

Definition at line 126 of file UsbCore.h.

- + +

◆ USB_ATTACHED_SUBSTATE_WAIT_RESET

+
@@ -969,11 +1052,13 @@ Typedefs
-

Definition at line 127 of file UsbCore.h.

+

Definition at line 127 of file UsbCore.h.

- + +

◆ USB_ATTACHED_SUBSTATE_GET_DEVICE_DESCRIPTOR_SIZE

+
@@ -983,11 +1068,13 @@ Typedefs
-

Definition at line 128 of file UsbCore.h.

+

Definition at line 128 of file UsbCore.h.

- + +

◆ USB_STATE_ADDRESSING

+
@@ -997,11 +1084,13 @@ Typedefs
-

Definition at line 129 of file UsbCore.h.

+

Definition at line 129 of file UsbCore.h.

- + +

◆ USB_STATE_CONFIGURING

+
@@ -1011,11 +1100,13 @@ Typedefs
-

Definition at line 130 of file UsbCore.h.

+

Definition at line 130 of file UsbCore.h.

- + +

◆ USB_STATE_RUNNING

+
@@ -1025,11 +1116,13 @@ Typedefs
-

Definition at line 131 of file UsbCore.h.

+

Definition at line 131 of file UsbCore.h.

- + +

◆ USB_STATE_ERROR

+
@@ -1039,12 +1132,14 @@ Typedefs
-

Definition at line 132 of file UsbCore.h.

+

Definition at line 132 of file UsbCore.h.

Typedef Documentation

- + +

◆ MAX3421E

+
@@ -1054,11 +1149,13 @@ Typedefs
-

Definition at line 56 of file UsbCore.h.

+

Definition at line 56 of file UsbCore.h.

- + +

◆ PSETUP_PKT

+
@@ -1075,7 +1172,7 @@ Typedefs diff --git a/_usb_core_8h_source.html b/_usb_core_8h_source.html index 8555e335..b607de83 100644 --- a/_usb_core_8h_source.html +++ b/_usb_core_8h_source.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: UsbCore.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
UsbCore.h
-Go to the documentation of this file.
1 /* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved.
2 
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; either version 2 of the License, or
6 (at your option) any later version.
7 
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12 
13 You should have received a copy of the GNU General Public License
14 along with this program; if not, write to the Free Software
15 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 
17 Contact information
18 -------------------
19 
20 Circuits At Home, LTD
21 Web : http://www.circuitsathome.com
22 e-mail : support@circuitsathome.com
23  */
24 
25 #if !defined(_usb_h_) || defined(USBCORE_H)
26 #error "Never include UsbCore.h directly; include Usb.h instead"
27 #else
28 #define USBCORE_H
29 
30 // Not used anymore? If anyone uses this, please let us know so that this may be
31 // moved to the proper place, settings.h.
32 //#define USB_METHODS_INLINE
33 
34 /* shield pins. First parameter - SS pin, second parameter - INT pin */
35 #ifdef BOARD_BLACK_WIDDOW
36 typedef MAX3421e<P6, P3> MAX3421E; // Black Widow
37 #elif defined(CORE_TEENSY) && (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__))
38 #if EXT_RAM
39 typedef MAX3421e<P20, P7> MAX3421E; // Teensy++ 2.0 with XMEM2
40 #else
41 typedef MAX3421e<P9, P8> MAX3421E; // Teensy++ 1.0 and 2.0
42 #endif
43 #elif defined(BOARD_MEGA_ADK)
44 typedef MAX3421e<P53, P54> MAX3421E; // Arduino Mega ADK
45 #elif defined(ARDUINO_AVR_BALANDUINO)
46 typedef MAX3421e<P20, P19> MAX3421E; // Balanduino
47 #elif defined(__ARDUINO_X86__) && PLATFORM_ID == 0x06
48 typedef MAX3421e<P3, P2> MAX3421E; // The Intel Galileo supports much faster read and write speed at pin 2 and 3
49 #elif defined(ESP8266)
50 typedef MAX3421e<P15, P5> MAX3421E; // ESP8266 boards
51 #elif defined(ESP32)
52 typedef MAX3421e<P5, P17> MAX3421E; // ESP32 boards
53 #elif (defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__))
54 typedef MAX3421e<Pb4, Pb3> MAX3421E; // Sanguino
55 #else
56 typedef MAX3421e<P10, P9> MAX3421E; // Official Arduinos (UNO, Duemilanove, Mega, 2560, Leonardo, Due etc.), Intel Edison, Intel Galileo 2 or Teensy 2.0 and 3.x
57 #endif
58 
59 /* Common setup data constant combinations */
60 #define bmREQ_GET_DESCR USB_SETUP_DEVICE_TO_HOST|USB_SETUP_TYPE_STANDARD|USB_SETUP_RECIPIENT_DEVICE //get descriptor request type
61 #define bmREQ_SET USB_SETUP_HOST_TO_DEVICE|USB_SETUP_TYPE_STANDARD|USB_SETUP_RECIPIENT_DEVICE //set request type for all but 'set feature' and 'set interface'
62 #define bmREQ_CL_GET_INTF USB_SETUP_DEVICE_TO_HOST|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_INTERFACE //get interface request type
63 
64 // D7 data transfer direction (0 - host-to-device, 1 - device-to-host)
65 // D6-5 Type (0- standard, 1 - class, 2 - vendor, 3 - reserved)
66 // D4-0 Recipient (0 - device, 1 - interface, 2 - endpoint, 3 - other, 4..31 - reserved)
67 
68 // USB Device Classes
69 #define USB_CLASS_USE_CLASS_INFO 0x00 // Use Class Info in the Interface Descriptors
70 #define USB_CLASS_AUDIO 0x01 // Audio
71 #define USB_CLASS_COM_AND_CDC_CTRL 0x02 // Communications and CDC Control
72 #define USB_CLASS_HID 0x03 // HID
73 #define USB_CLASS_PHYSICAL 0x05 // Physical
74 #define USB_CLASS_IMAGE 0x06 // Image
75 #define USB_CLASS_PRINTER 0x07 // Printer
76 #define USB_CLASS_MASS_STORAGE 0x08 // Mass Storage
77 #define USB_CLASS_HUB 0x09 // Hub
78 #define USB_CLASS_CDC_DATA 0x0a // CDC-Data
79 #define USB_CLASS_SMART_CARD 0x0b // Smart-Card
80 #define USB_CLASS_CONTENT_SECURITY 0x0d // Content Security
81 #define USB_CLASS_VIDEO 0x0e // Video
82 #define USB_CLASS_PERSONAL_HEALTH 0x0f // Personal Healthcare
83 #define USB_CLASS_DIAGNOSTIC_DEVICE 0xdc // Diagnostic Device
84 #define USB_CLASS_WIRELESS_CTRL 0xe0 // Wireless Controller
85 #define USB_CLASS_MISC 0xef // Miscellaneous
86 #define USB_CLASS_APP_SPECIFIC 0xfe // Application Specific
87 #define USB_CLASS_VENDOR_SPECIFIC 0xff // Vendor Specific
88 
89 // Additional Error Codes
90 #define USB_DEV_CONFIG_ERROR_DEVICE_NOT_SUPPORTED 0xD1
91 #define USB_DEV_CONFIG_ERROR_DEVICE_INIT_INCOMPLETE 0xD2
92 #define USB_ERROR_UNABLE_TO_REGISTER_DEVICE_CLASS 0xD3
93 #define USB_ERROR_OUT_OF_ADDRESS_SPACE_IN_POOL 0xD4
94 #define USB_ERROR_HUB_ADDRESS_OVERFLOW 0xD5
95 #define USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL 0xD6
96 #define USB_ERROR_EPINFO_IS_NULL 0xD7
97 #define USB_ERROR_INVALID_ARGUMENT 0xD8
98 #define USB_ERROR_CLASS_INSTANCE_ALREADY_IN_USE 0xD9
99 #define USB_ERROR_INVALID_MAX_PKT_SIZE 0xDA
100 #define USB_ERROR_EP_NOT_FOUND_IN_TBL 0xDB
101 #define USB_ERROR_CONFIG_REQUIRES_ADDITIONAL_RESET 0xE0
102 #define USB_ERROR_FailGetDevDescr 0xE1
103 #define USB_ERROR_FailSetDevTblEntry 0xE2
104 #define USB_ERROR_FailGetConfDescr 0xE3
105 #define USB_ERROR_TRANSFER_TIMEOUT 0xFF
106 
107 #define USB_XFER_TIMEOUT 5000 // (5000) USB transfer timeout in milliseconds, per section 9.2.6.1 of USB 2.0 spec
108 //#define USB_NAK_LIMIT 32000 // NAK limit for a transfer. 0 means NAKs are not counted
109 #define USB_RETRY_LIMIT 3 // 3 retry limit for a transfer
110 #define USB_SETTLE_DELAY 200 // settle delay in milliseconds
111 
112 #define USB_NUMDEVICES 16 //number of USB devices
113 //#define HUB_MAX_HUBS 7 // maximum number of hubs that can be attached to the host controller
114 #define HUB_PORT_RESET_DELAY 20 // hub port reset delay 10 ms recomended, can be up to 20 ms
115 
116 /* USB state machine states */
117 #define USB_STATE_MASK 0xf0
118 
119 #define USB_STATE_DETACHED 0x10
120 #define USB_DETACHED_SUBSTATE_INITIALIZE 0x11
121 #define USB_DETACHED_SUBSTATE_WAIT_FOR_DEVICE 0x12
122 #define USB_DETACHED_SUBSTATE_ILLEGAL 0x13
123 #define USB_ATTACHED_SUBSTATE_SETTLE 0x20
124 #define USB_ATTACHED_SUBSTATE_RESET_DEVICE 0x30
125 #define USB_ATTACHED_SUBSTATE_WAIT_RESET_COMPLETE 0x40
126 #define USB_ATTACHED_SUBSTATE_WAIT_SOF 0x50
127 #define USB_ATTACHED_SUBSTATE_WAIT_RESET 0x51
128 #define USB_ATTACHED_SUBSTATE_GET_DEVICE_DESCRIPTOR_SIZE 0x60
129 #define USB_STATE_ADDRESSING 0x70
130 #define USB_STATE_CONFIGURING 0x80
131 #define USB_STATE_RUNNING 0x90
132 #define USB_STATE_ERROR 0xa0
133 
135 public:
136 
137  virtual uint8_t Init(uint8_t parent __attribute__((unused)), uint8_t port __attribute__((unused)), bool lowspeed __attribute__((unused))) {
138  return 0;
139  }
140 
141  virtual uint8_t ConfigureDevice(uint8_t parent __attribute__((unused)), uint8_t port __attribute__((unused)), bool lowspeed __attribute__((unused))) {
142  return 0;
143  }
144 
145  virtual uint8_t Release() {
146  return 0;
147  }
148 
149  virtual uint8_t Poll() {
150  return 0;
151  }
152 
153  virtual uint8_t GetAddress() {
154  return 0;
155  }
156 
157  virtual void ResetHubPort(uint8_t port __attribute__((unused))) {
158  return;
159  } // Note used for hubs only!
160 
161  virtual bool VIDPIDOK(uint16_t vid __attribute__((unused)), uint16_t pid __attribute__((unused))) {
162  return false;
163  }
164 
165  virtual bool DEVCLASSOK(uint8_t klass __attribute__((unused))) {
166  return false;
167  }
168 
169  virtual bool DEVSUBCLASSOK(uint8_t subklass __attribute__((unused))) {
170  return true;
171  }
172 
173 };
174 
175 /* USB Setup Packet Structure */
176 typedef struct {
177 
178  union { // offset description
179  uint8_t bmRequestType; // 0 Bit-map of request type
180 
181  struct {
182  uint8_t recipient : 5; // Recipient of the request
183  uint8_t type : 2; // Type of request
184  uint8_t direction : 1; // Direction of data X-fer
185  } __attribute__((packed));
186  } ReqType_u;
187  uint8_t bRequest; // 1 Request
188 
189  union {
190  uint16_t wValue; // 2 Depends on bRequest
191 
192  struct {
193  uint8_t wValueLo;
194  uint8_t wValueHi;
195  } __attribute__((packed));
196  } wVal_u;
197  uint16_t wIndex; // 4 Depends on bRequest
198  uint16_t wLength; // 6 Depends on bRequest
199 } __attribute__((packed)) SETUP_PKT, *PSETUP_PKT;
200 
201 
202 
203 // Base class for incoming data parser
204 
206 public:
207  virtual void Parse(const uint16_t len, const uint8_t *pbuf, const uint16_t &offset) = 0;
208 };
209 
210 class USB : public MAX3421E {
212  USBDeviceConfig* devConfig[USB_NUMDEVICES];
213  uint8_t bmHubPre;
214 
215 public:
216  USB(void);
217 
218  void SetHubPreMask() {
219  bmHubPre |= bmHUBPRE;
220  };
221 
223  bmHubPre &= (~bmHUBPRE);
224  };
225 
227  return (AddressPool&)addrPool;
228  };
229 
231  for(uint8_t i = 0; i < USB_NUMDEVICES; i++) {
232  if(!devConfig[i]) {
233  devConfig[i] = pdev;
234  return 0;
235  }
236  }
238  };
239 
241  addrPool.ForEachUsbDevice(pfunc);
242  };
243  uint8_t getUsbTaskState(void);
244  void setUsbTaskState(uint8_t state);
245 
246  EpInfo* getEpInfoEntry(uint8_t addr, uint8_t ep);
247  uint8_t setEpInfoEntry(uint8_t addr, uint8_t epcount, EpInfo* eprecord_ptr);
248 
249  /* Control requests */
250  uint8_t getDevDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t* dataptr);
251  uint8_t getConfDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t conf, uint8_t* dataptr);
252 
253  uint8_t getConfDescr(uint8_t addr, uint8_t ep, uint8_t conf, USBReadParser *p);
254 
255  uint8_t getStrDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t index, uint16_t langid, uint8_t* dataptr);
256  uint8_t setAddr(uint8_t oldaddr, uint8_t ep, uint8_t newaddr);
257  uint8_t setConf(uint8_t addr, uint8_t ep, uint8_t conf_value);
258 
259  uint8_t ctrlData(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t* dataptr, bool direction);
260  uint8_t ctrlStatus(uint8_t ep, bool direction, uint16_t nak_limit);
261  uint8_t inTransfer(uint8_t addr, uint8_t ep, uint16_t *nbytesptr, uint8_t* data, uint8_t bInterval = 0);
262  uint8_t outTransfer(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t* data);
263  uint8_t dispatchPkt(uint8_t token, uint8_t ep, uint16_t nak_limit);
264 
265  void Task(void);
266 
267  uint8_t DefaultAddressing(uint8_t parent, uint8_t port, bool lowspeed);
268  uint8_t Configuring(uint8_t parent, uint8_t port, bool lowspeed);
269  uint8_t ReleaseDevice(uint8_t addr);
270 
271  uint8_t ctrlReq(uint8_t addr, uint8_t ep, uint8_t bmReqType, uint8_t bRequest, uint8_t wValLo, uint8_t wValHi,
272  uint16_t wInd, uint16_t total, uint16_t nbytes, uint8_t* dataptr, USBReadParser *p);
273 
274 private:
275  void init();
276  uint8_t SetAddress(uint8_t addr, uint8_t ep, EpInfo **ppep, uint16_t *nak_limit);
277  uint8_t OutTransfer(EpInfo *pep, uint16_t nak_limit, uint16_t nbytes, uint8_t *data);
278  uint8_t InTransfer(EpInfo *pep, uint16_t nak_limit, uint16_t *nbytesptr, uint8_t *data, uint8_t bInterval = 0);
279  uint8_t AttemptConfig(uint8_t driver, uint8_t parent, uint8_t port, bool lowspeed);
280 };
281 
282 #if 0 //defined(USB_METHODS_INLINE)
283 //get device descriptor
284 
285 inline uint8_t USB::getDevDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t* dataptr) {
286  return ( ctrlReq(addr, ep, bmREQ_GET_DESCR, USB_REQUEST_GET_DESCRIPTOR, 0x00, USB_DESCRIPTOR_DEVICE, 0x0000, nbytes, dataptr));
287 }
288 //get configuration descriptor
289 
290 inline uint8_t USB::getConfDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t conf, uint8_t* dataptr) {
291  return ( ctrlReq(addr, ep, bmREQ_GET_DESCR, USB_REQUEST_GET_DESCRIPTOR, conf, USB_DESCRIPTOR_CONFIGURATION, 0x0000, nbytes, dataptr));
292 }
293 //get string descriptor
294 
295 inline uint8_t USB::getStrDescr(uint8_t addr, uint8_t ep, uint16_t nuint8_ts, uint8_t index, uint16_t langid, uint8_t* dataptr) {
296  return ( ctrlReq(addr, ep, bmREQ_GET_DESCR, USB_REQUEST_GET_DESCRIPTOR, index, USB_DESCRIPTOR_STRING, langid, nuint8_ts, dataptr));
297 }
298 //set address
299 
300 inline uint8_t USB::setAddr(uint8_t oldaddr, uint8_t ep, uint8_t newaddr) {
301  return ( ctrlReq(oldaddr, ep, bmREQ_SET, USB_REQUEST_SET_ADDRESS, newaddr, 0x00, 0x0000, 0x0000, NULL));
302 }
303 //set configuration
304 
305 inline uint8_t USB::setConf(uint8_t addr, uint8_t ep, uint8_t conf_value) {
306  return ( ctrlReq(addr, ep, bmREQ_SET, USB_REQUEST_SET_CONFIGURATION, conf_value, 0x00, 0x0000, 0x0000, NULL));
307 }
308 
309 #endif // defined(USB_METHODS_INLINE)
310 
311 #endif /* USBCORE_H */
uint8_t getConfDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t conf, uint8_t *dataptr)
Definition: Usb.cpp:801
+Go to the documentation of this file.
1 /* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved.
2 
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; either version 2 of the License, or
6 (at your option) any later version.
7 
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12 
13 You should have received a copy of the GNU General Public License
14 along with this program; if not, write to the Free Software
15 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 
17 Contact information
18 -------------------
19 
20 Circuits At Home, LTD
21 Web : http://www.circuitsathome.com
22 e-mail : support@circuitsathome.com
23  */
24 
25 #if !defined(_usb_h_) || defined(USBCORE_H)
26 #error "Never include UsbCore.h directly; include Usb.h instead"
27 #else
28 #define USBCORE_H
29 
30 // Not used anymore? If anyone uses this, please let us know so that this may be
31 // moved to the proper place, settings.h.
32 //#define USB_METHODS_INLINE
33 
34 /* shield pins. First parameter - SS pin, second parameter - INT pin */
35 #ifdef BOARD_BLACK_WIDDOW
36 typedef MAX3421e<P6, P3> MAX3421E; // Black Widow
37 #elif defined(CORE_TEENSY) && (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__))
38 #if EXT_RAM
39 typedef MAX3421e<P20, P7> MAX3421E; // Teensy++ 2.0 with XMEM2
40 #else
41 typedef MAX3421e<P9, P8> MAX3421E; // Teensy++ 1.0 and 2.0
42 #endif
43 #elif defined(BOARD_MEGA_ADK)
44 typedef MAX3421e<P53, P54> MAX3421E; // Arduino Mega ADK
45 #elif defined(ARDUINO_AVR_BALANDUINO)
46 typedef MAX3421e<P20, P19> MAX3421E; // Balanduino
47 #elif defined(__ARDUINO_X86__) && PLATFORM_ID == 0x06
48 typedef MAX3421e<P3, P2> MAX3421E; // The Intel Galileo supports much faster read and write speed at pin 2 and 3
49 #elif defined(ESP8266)
50 typedef MAX3421e<P15, P5> MAX3421E; // ESP8266 boards
51 #elif defined(ESP32)
52 typedef MAX3421e<P5, P17> MAX3421E; // ESP32 boards
53 #elif (defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__))
54 typedef MAX3421e<Pb4, Pb3> MAX3421E; // Sanguino
55 #else
56 typedef MAX3421e<P10, P9> MAX3421E; // Official Arduinos (UNO, Duemilanove, Mega, 2560, Leonardo, Due etc.), Intel Edison, Intel Galileo 2 or Teensy 2.0 and 3.x
57 #endif
58 
59 /* Common setup data constant combinations */
60 #define bmREQ_GET_DESCR USB_SETUP_DEVICE_TO_HOST|USB_SETUP_TYPE_STANDARD|USB_SETUP_RECIPIENT_DEVICE //get descriptor request type
61 #define bmREQ_SET USB_SETUP_HOST_TO_DEVICE|USB_SETUP_TYPE_STANDARD|USB_SETUP_RECIPIENT_DEVICE //set request type for all but 'set feature' and 'set interface'
62 #define bmREQ_CL_GET_INTF USB_SETUP_DEVICE_TO_HOST|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_INTERFACE //get interface request type
63 
64 // D7 data transfer direction (0 - host-to-device, 1 - device-to-host)
65 // D6-5 Type (0- standard, 1 - class, 2 - vendor, 3 - reserved)
66 // D4-0 Recipient (0 - device, 1 - interface, 2 - endpoint, 3 - other, 4..31 - reserved)
67 
68 // USB Device Classes
69 #define USB_CLASS_USE_CLASS_INFO 0x00 // Use Class Info in the Interface Descriptors
70 #define USB_CLASS_AUDIO 0x01 // Audio
71 #define USB_CLASS_COM_AND_CDC_CTRL 0x02 // Communications and CDC Control
72 #define USB_CLASS_HID 0x03 // HID
73 #define USB_CLASS_PHYSICAL 0x05 // Physical
74 #define USB_CLASS_IMAGE 0x06 // Image
75 #define USB_CLASS_PRINTER 0x07 // Printer
76 #define USB_CLASS_MASS_STORAGE 0x08 // Mass Storage
77 #define USB_CLASS_HUB 0x09 // Hub
78 #define USB_CLASS_CDC_DATA 0x0a // CDC-Data
79 #define USB_CLASS_SMART_CARD 0x0b // Smart-Card
80 #define USB_CLASS_CONTENT_SECURITY 0x0d // Content Security
81 #define USB_CLASS_VIDEO 0x0e // Video
82 #define USB_CLASS_PERSONAL_HEALTH 0x0f // Personal Healthcare
83 #define USB_CLASS_DIAGNOSTIC_DEVICE 0xdc // Diagnostic Device
84 #define USB_CLASS_WIRELESS_CTRL 0xe0 // Wireless Controller
85 #define USB_CLASS_MISC 0xef // Miscellaneous
86 #define USB_CLASS_APP_SPECIFIC 0xfe // Application Specific
87 #define USB_CLASS_VENDOR_SPECIFIC 0xff // Vendor Specific
88 
89 // Additional Error Codes
90 #define USB_DEV_CONFIG_ERROR_DEVICE_NOT_SUPPORTED 0xD1
91 #define USB_DEV_CONFIG_ERROR_DEVICE_INIT_INCOMPLETE 0xD2
92 #define USB_ERROR_UNABLE_TO_REGISTER_DEVICE_CLASS 0xD3
93 #define USB_ERROR_OUT_OF_ADDRESS_SPACE_IN_POOL 0xD4
94 #define USB_ERROR_HUB_ADDRESS_OVERFLOW 0xD5
95 #define USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL 0xD6
96 #define USB_ERROR_EPINFO_IS_NULL 0xD7
97 #define USB_ERROR_INVALID_ARGUMENT 0xD8
98 #define USB_ERROR_CLASS_INSTANCE_ALREADY_IN_USE 0xD9
99 #define USB_ERROR_INVALID_MAX_PKT_SIZE 0xDA
100 #define USB_ERROR_EP_NOT_FOUND_IN_TBL 0xDB
101 #define USB_ERROR_CONFIG_REQUIRES_ADDITIONAL_RESET 0xE0
102 #define USB_ERROR_FailGetDevDescr 0xE1
103 #define USB_ERROR_FailSetDevTblEntry 0xE2
104 #define USB_ERROR_FailGetConfDescr 0xE3
105 #define USB_ERROR_TRANSFER_TIMEOUT 0xFF
106 
107 #define USB_XFER_TIMEOUT 5000 // (5000) USB transfer timeout in milliseconds, per section 9.2.6.1 of USB 2.0 spec
108 //#define USB_NAK_LIMIT 32000 // NAK limit for a transfer. 0 means NAKs are not counted
109 #define USB_RETRY_LIMIT 3 // 3 retry limit for a transfer
110 #define USB_SETTLE_DELAY 200 // settle delay in milliseconds
111 
112 #define USB_NUMDEVICES 16 //number of USB devices
113 //#define HUB_MAX_HUBS 7 // maximum number of hubs that can be attached to the host controller
114 #define HUB_PORT_RESET_DELAY 20 // hub port reset delay 10 ms recomended, can be up to 20 ms
115 
116 /* USB state machine states */
117 #define USB_STATE_MASK 0xf0
118 
119 #define USB_STATE_DETACHED 0x10
120 #define USB_DETACHED_SUBSTATE_INITIALIZE 0x11
121 #define USB_DETACHED_SUBSTATE_WAIT_FOR_DEVICE 0x12
122 #define USB_DETACHED_SUBSTATE_ILLEGAL 0x13
123 #define USB_ATTACHED_SUBSTATE_SETTLE 0x20
124 #define USB_ATTACHED_SUBSTATE_RESET_DEVICE 0x30
125 #define USB_ATTACHED_SUBSTATE_WAIT_RESET_COMPLETE 0x40
126 #define USB_ATTACHED_SUBSTATE_WAIT_SOF 0x50
127 #define USB_ATTACHED_SUBSTATE_WAIT_RESET 0x51
128 #define USB_ATTACHED_SUBSTATE_GET_DEVICE_DESCRIPTOR_SIZE 0x60
129 #define USB_STATE_ADDRESSING 0x70
130 #define USB_STATE_CONFIGURING 0x80
131 #define USB_STATE_RUNNING 0x90
132 #define USB_STATE_ERROR 0xa0
133 
135 public:
136 
137  virtual uint8_t Init(uint8_t parent __attribute__((unused)), uint8_t port __attribute__((unused)), bool lowspeed __attribute__((unused))) {
138  return 0;
139  }
140 
141  virtual uint8_t ConfigureDevice(uint8_t parent __attribute__((unused)), uint8_t port __attribute__((unused)), bool lowspeed __attribute__((unused))) {
142  return 0;
143  }
144 
145  virtual uint8_t Release() {
146  return 0;
147  }
148 
149  virtual uint8_t Poll() {
150  return 0;
151  }
152 
153  virtual uint8_t GetAddress() {
154  return 0;
155  }
156 
157  virtual void ResetHubPort(uint8_t port __attribute__((unused))) {
158  return;
159  } // Note used for hubs only!
160 
161  virtual bool VIDPIDOK(uint16_t vid __attribute__((unused)), uint16_t pid __attribute__((unused))) {
162  return false;
163  }
164 
165  virtual bool DEVCLASSOK(uint8_t klass __attribute__((unused))) {
166  return false;
167  }
168 
169  virtual bool DEVSUBCLASSOK(uint8_t subklass __attribute__((unused))) {
170  return true;
171  }
172 
173 };
174 
175 /* USB Setup Packet Structure */
176 typedef struct {
177 
178  union { // offset description
179  uint8_t bmRequestType; // 0 Bit-map of request type
180 
181  struct {
182  uint8_t recipient : 5; // Recipient of the request
183  uint8_t type : 2; // Type of request
184  uint8_t direction : 1; // Direction of data X-fer
185  } __attribute__((packed));
186  } ReqType_u;
187  uint8_t bRequest; // 1 Request
188 
189  union {
190  uint16_t wValue; // 2 Depends on bRequest
191 
192  struct {
193  uint8_t wValueLo;
194  uint8_t wValueHi;
195  } __attribute__((packed));
196  } wVal_u;
197  uint16_t wIndex; // 4 Depends on bRequest
198  uint16_t wLength; // 6 Depends on bRequest
199 } __attribute__((packed)) SETUP_PKT, *PSETUP_PKT;
200 
201 
202 
203 // Base class for incoming data parser
204 
206 public:
207  virtual void Parse(const uint16_t len, const uint8_t *pbuf, const uint16_t &offset) = 0;
208 };
209 
210 class USB : public MAX3421E {
212  USBDeviceConfig* devConfig[USB_NUMDEVICES];
213  uint8_t bmHubPre;
214 
215 public:
216  USB(void);
217 
218  void SetHubPreMask() {
219  bmHubPre |= bmHUBPRE;
220  };
221 
223  bmHubPre &= (~bmHUBPRE);
224  };
225 
227  return (AddressPool&)addrPool;
228  };
229 
231  for(uint8_t i = 0; i < USB_NUMDEVICES; i++) {
232  if(!devConfig[i]) {
233  devConfig[i] = pdev;
234  return 0;
235  }
236  }
238  };
239 
241  addrPool.ForEachUsbDevice(pfunc);
242  };
243  uint8_t getUsbTaskState(void);
244  void setUsbTaskState(uint8_t state);
245 
246  EpInfo* getEpInfoEntry(uint8_t addr, uint8_t ep);
247  uint8_t setEpInfoEntry(uint8_t addr, uint8_t epcount, EpInfo* eprecord_ptr);
248 
249  /* Control requests */
250  uint8_t getDevDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t* dataptr);
251  uint8_t getConfDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t conf, uint8_t* dataptr);
252 
253  uint8_t getConfDescr(uint8_t addr, uint8_t ep, uint8_t conf, USBReadParser *p);
254 
255  uint8_t getStrDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t index, uint16_t langid, uint8_t* dataptr);
256  uint8_t setAddr(uint8_t oldaddr, uint8_t ep, uint8_t newaddr);
257  uint8_t setConf(uint8_t addr, uint8_t ep, uint8_t conf_value);
258 
259  uint8_t ctrlData(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t* dataptr, bool direction);
260  uint8_t ctrlStatus(uint8_t ep, bool direction, uint16_t nak_limit);
261  uint8_t inTransfer(uint8_t addr, uint8_t ep, uint16_t *nbytesptr, uint8_t* data, uint8_t bInterval = 0);
262  uint8_t outTransfer(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t* data);
263  uint8_t dispatchPkt(uint8_t token, uint8_t ep, uint16_t nak_limit);
264 
265  void Task(void);
266 
267  uint8_t DefaultAddressing(uint8_t parent, uint8_t port, bool lowspeed);
268  uint8_t Configuring(uint8_t parent, uint8_t port, bool lowspeed);
269  uint8_t ReleaseDevice(uint8_t addr);
270 
271  uint8_t ctrlReq(uint8_t addr, uint8_t ep, uint8_t bmReqType, uint8_t bRequest, uint8_t wValLo, uint8_t wValHi,
272  uint16_t wInd, uint16_t total, uint16_t nbytes, uint8_t* dataptr, USBReadParser *p);
273 
274 private:
275  void init();
276  uint8_t SetAddress(uint8_t addr, uint8_t ep, EpInfo **ppep, uint16_t *nak_limit);
277  uint8_t OutTransfer(EpInfo *pep, uint16_t nak_limit, uint16_t nbytes, uint8_t *data);
278  uint8_t InTransfer(EpInfo *pep, uint16_t nak_limit, uint16_t *nbytesptr, uint8_t *data, uint8_t bInterval = 0);
279  uint8_t AttemptConfig(uint8_t driver, uint8_t parent, uint8_t port, bool lowspeed);
280 };
281 
282 #if 0 //defined(USB_METHODS_INLINE)
283 //get device descriptor
284 
285 inline uint8_t USB::getDevDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t* dataptr) {
286  return ( ctrlReq(addr, ep, bmREQ_GET_DESCR, USB_REQUEST_GET_DESCRIPTOR, 0x00, USB_DESCRIPTOR_DEVICE, 0x0000, nbytes, dataptr));
287 }
288 //get configuration descriptor
289 
290 inline uint8_t USB::getConfDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t conf, uint8_t* dataptr) {
291  return ( ctrlReq(addr, ep, bmREQ_GET_DESCR, USB_REQUEST_GET_DESCRIPTOR, conf, USB_DESCRIPTOR_CONFIGURATION, 0x0000, nbytes, dataptr));
292 }
293 //get string descriptor
294 
295 inline uint8_t USB::getStrDescr(uint8_t addr, uint8_t ep, uint16_t nuint8_ts, uint8_t index, uint16_t langid, uint8_t* dataptr) {
296  return ( ctrlReq(addr, ep, bmREQ_GET_DESCR, USB_REQUEST_GET_DESCRIPTOR, index, USB_DESCRIPTOR_STRING, langid, nuint8_ts, dataptr));
297 }
298 //set address
299 
300 inline uint8_t USB::setAddr(uint8_t oldaddr, uint8_t ep, uint8_t newaddr) {
301  return ( ctrlReq(oldaddr, ep, bmREQ_SET, USB_REQUEST_SET_ADDRESS, newaddr, 0x00, 0x0000, 0x0000, NULL));
302 }
303 //set configuration
304 
305 inline uint8_t USB::setConf(uint8_t addr, uint8_t ep, uint8_t conf_value) {
306  return ( ctrlReq(addr, ep, bmREQ_SET, USB_REQUEST_SET_CONFIGURATION, conf_value, 0x00, 0x0000, 0x0000, NULL));
307 }
308 
309 #endif // defined(USB_METHODS_INLINE)
310 
311 #endif /* USBCORE_H */
uint8_t getConfDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t conf, uint8_t *dataptr)
Definition: Usb.cpp:801
uint16_t wValue
Definition: UsbCore.h:190
virtual uint8_t Poll()
Definition: UsbCore.h:149
@@ -109,15 +86,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
void SetHubPreMask()
Definition: UsbCore.h:218
Definition: address.h:39
#define bmREQ_GET_DESCR
Definition: UsbCore.h:60
+
uint8_t direction
Definition: UsbCore.h:184
virtual void ResetHubPort(uint8_t port)
Definition: UsbCore.h:157
#define USB_ERROR_UNABLE_TO_REGISTER_DEVICE_CLASS
Definition: UsbCore.h:92
uint8_t getStrDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t index, uint16_t langid, uint8_t *dataptr)
Definition: Usb.cpp:826
+
uint8_t type
Definition: UsbCore.h:183
#define USB_REQUEST_SET_ADDRESS
Definition: usb_ch9.h:43
MAX3421e< P10, P9 > MAX3421E
Definition: UsbCore.h:56
virtual bool DEVSUBCLASSOK(uint8_t subklass)
Definition: UsbCore.h:169
+
struct SETUP_PKT * PSETUP_PKT
void ForEachUsbDevice(UsbDeviceHandleFunc pfunc)
Definition: address.h:199
virtual uint8_t Init(uint8_t parent, uint8_t port, bool lowspeed)
Definition: UsbCore.h:137
AddressPool & GetAddressPool()
Definition: UsbCore.h:226
@@ -130,6 +110,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
virtual bool DEVCLASSOK(uint8_t klass)
Definition: UsbCore.h:165
void ForEachUsbDevice(UsbDeviceHandleFunc pfunc)
Definition: UsbCore.h:240
#define USB_REQUEST_SET_CONFIGURATION
Definition: usb_ch9.h:47
+
uint8_t recipient
Definition: UsbCore.h:182
uint8_t wValueHi
Definition: UsbCore.h:194
uint8_t getDevDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t *dataptr)
defined(USB_METHODS_INLINE)
Definition: Usb.cpp:796
uint8_t wValueLo
Definition: UsbCore.h:193
@@ -139,7 +120,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/_wii_8cpp.html b/_wii_8cpp.html index 57d46c5c..1eace55b 100644 --- a/_wii_8cpp.html +++ b/_wii_8cpp.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Wii.cpp File Reference @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
- + - - - - + + + +
@@ -115,7 +92,9 @@ Variables  

Variable Documentation

- + +

◆ WII_LEDS

+
@@ -125,11 +104,13 @@ Variables
Initial value:
= {
0x00,
0x10,
0x20,
0x40,
0x80,
0x90,
0xA0,
0xC0,
0xD0,
0xE0,
0xF0,
}
-

Definition at line 25 of file Wii.cpp.

+

Definition at line 25 of file Wii.cpp.

- + +

◆ WII_BUTTONS

+
@@ -139,11 +120,13 @@ Variables
Initial value:
= {
0x00008,
0x00002,
0x00004,
0x00001,
0,
0x00010,
0x00100,
0x00200,
0x01000,
0x08000,
0x10000,
0x20000,
0x00400,
0x00800,
}
-

Definition at line 40 of file Wii.cpp.

+

Definition at line 40 of file Wii.cpp.

- + +

◆ WII_PROCONTROLLER_BUTTONS

+
@@ -153,7 +136,7 @@ Variables
Initial value:
= {
0x00100,
0x00080,
0x00040,
0x00200,
0,
0x00004,
0x20000,
0x10000,
0x00010,
0x00008,
0, 0,
0x04000,
0x01000,
0x00800,
0x02000,
0x00020,
0x00002,
0x08000,
0x00400,
}
-

Definition at line 59 of file Wii.cpp.

+

Definition at line 59 of file Wii.cpp.

@@ -162,7 +145,7 @@ Variables diff --git a/_wii_8cpp__incl.map b/_wii_8cpp__incl.map index 946f5cdc..35e4cf8a 100644 --- a/_wii_8cpp__incl.map +++ b/_wii_8cpp__incl.map @@ -1,8 +1,8 @@ - + - - - - + + + + diff --git a/_wii_8cpp__incl.md5 b/_wii_8cpp__incl.md5 index 90a48635..16fb198e 100644 --- a/_wii_8cpp__incl.md5 +++ b/_wii_8cpp__incl.md5 @@ -1 +1 @@ -38127c822874d8407cb01375c5f2f11b \ No newline at end of file +230d657150b96397e6c72f7fb46df52c \ No newline at end of file diff --git a/_wii_8cpp__incl.png b/_wii_8cpp__incl.png index f211dcd9..8ff2079b 100644 Binary files a/_wii_8cpp__incl.png and b/_wii_8cpp__incl.png differ diff --git a/_wii_8cpp_source.html b/_wii_8cpp_source.html index 39a1020f..f5b30094 100644 --- a/_wii_8cpp_source.html +++ b/_wii_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Wii.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
- + - - + + + +
- - - - + + + +
@@ -149,7 +126,9 @@ Enumerations  

Macro Definition Documentation

- + +

◆ WII_FLAG_MOTION_PLUS_CONNECTED

+
@@ -159,11 +138,13 @@ Enumerations
-

Definition at line 27 of file Wii.h.

+

Definition at line 27 of file Wii.h.

- + +

◆ WII_FLAG_NUNCHUCK_CONNECTED

+
@@ -173,11 +154,13 @@ Enumerations
-

Definition at line 28 of file Wii.h.

+

Definition at line 28 of file Wii.h.

- + +

◆ WII_FLAG_CALIBRATE_BALANCE_BOARD

+
@@ -187,11 +170,13 @@ Enumerations
-

Definition at line 29 of file Wii.h.

+

Definition at line 29 of file Wii.h.

- + +

◆ wii_check_flag

+
@@ -205,11 +190,13 @@ Enumerations
-

Definition at line 31 of file Wii.h.

+

Definition at line 31 of file Wii.h.

- + +

◆ wii_set_flag

+
@@ -223,11 +210,13 @@ Enumerations
-

Definition at line 32 of file Wii.h.

+

Definition at line 32 of file Wii.h.

- + +

◆ wii_clear_flag

+
@@ -241,12 +230,14 @@ Enumerations
-

Definition at line 33 of file Wii.h.

+

Definition at line 33 of file Wii.h.

Enumeration Type Documentation

- + +

◆ HatEnum

+
@@ -257,19 +248,19 @@ Enumerations

Enum used to read the joystick on the Nunchuck.

- -
Enumerator
HatX  -

Read the x-axis on the Nunchuck joystick.

+
Enumerator
HatX 

Read the x-axis on the Nunchuck joystick.

HatY  -

Read the y-axis on the Nunchuck joystick.

+
HatY 

Read the y-axis on the Nunchuck joystick.

-

Definition at line 36 of file Wii.h.

+

Definition at line 36 of file Wii.h.

- + +

◆ BalanceBoardEnum

+
@@ -280,17 +271,13 @@ Enumerations

Enum used to read the weight on Wii Balance Board.

- - - - + + + +
Enumerator
TopRight  -
BotRight  -
TopLeft  -
BotLeft  -
Enumerator
TopRight 
BotRight 
TopLeft 
BotLeft 
-

Definition at line 44 of file Wii.h.

+

Definition at line 44 of file Wii.h.

@@ -299,7 +286,7 @@ Enumerations diff --git a/_wii_8h__dep__incl.md5 b/_wii_8h__dep__incl.md5 index 141f0cf4..0f042ba6 100644 --- a/_wii_8h__dep__incl.md5 +++ b/_wii_8h__dep__incl.md5 @@ -1 +1 @@ -68e486939ecaf1de2be16bf264fe38d3 \ No newline at end of file +cd6696ab2d85cd1fa739c986e5b9679c \ No newline at end of file diff --git a/_wii_8h__dep__incl.png b/_wii_8h__dep__incl.png index ab586489..65a296eb 100644 Binary files a/_wii_8h__dep__incl.png and b/_wii_8h__dep__incl.png differ diff --git a/_wii_8h__incl.map b/_wii_8h__incl.map index cc608b3a..ee5a54d4 100644 --- a/_wii_8h__incl.map +++ b/_wii_8h__incl.map @@ -1,7 +1,7 @@ - - - - + + + + diff --git a/_wii_8h__incl.md5 b/_wii_8h__incl.md5 index 6bc35bec..b796d868 100644 --- a/_wii_8h__incl.md5 +++ b/_wii_8h__incl.md5 @@ -1 +1 @@ -a8d2a81727ce46fe1f181ac702c5895a \ No newline at end of file +bc8787b4f0a06d996d94818acf6bfe3a \ No newline at end of file diff --git a/_wii_8h__incl.png b/_wii_8h__incl.png index b26a29a2..896707de 100644 Binary files a/_wii_8h__incl.png and b/_wii_8h__incl.png differ diff --git a/_wii_8h_source.html b/_wii_8h_source.html index e4e5f51f..52520de9 100644 --- a/_wii_8h_source.html +++ b/_wii_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Wii.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
- + - - + + + + - + - - + + + + - + - - + + + +
- + - - - + + +
@@ -110,7 +87,9 @@ Variables  

Variable Documentation

- + +

◆ XBOXOLD_BUTTONS

+
@@ -121,7 +100,7 @@ Variables
Initial value:
= {
0x01,
0x08,
0x02,
0x04,
0x20,
0x10,
0x40,
0x80,
4,
5,
6,
7,
1,
0,
2,
3,
}

Buttons on the controllers

-

Definition at line 24 of file XBOXOLD.cpp.

+

Definition at line 24 of file XBOXOLD.cpp.

@@ -130,7 +109,7 @@ Variables diff --git a/_x_b_o_x_o_l_d_8cpp__incl.map b/_x_b_o_x_o_l_d_8cpp__incl.map index cc79d3e0..90c4ed5f 100644 --- a/_x_b_o_x_o_l_d_8cpp__incl.map +++ b/_x_b_o_x_o_l_d_8cpp__incl.map @@ -1,7 +1,7 @@ - + - - - + + + diff --git a/_x_b_o_x_o_l_d_8cpp__incl.md5 b/_x_b_o_x_o_l_d_8cpp__incl.md5 index 4e66fc26..bc962cd7 100644 --- a/_x_b_o_x_o_l_d_8cpp__incl.md5 +++ b/_x_b_o_x_o_l_d_8cpp__incl.md5 @@ -1 +1 @@ -6e170bd84842a4541b9931c43ed0f42c \ No newline at end of file +d14013d39d687e63de1d15795f5252c3 \ No newline at end of file diff --git a/_x_b_o_x_o_l_d_8cpp__incl.png b/_x_b_o_x_o_l_d_8cpp__incl.png index a81a9284..e34ce5d2 100644 Binary files a/_x_b_o_x_o_l_d_8cpp__incl.png and b/_x_b_o_x_o_l_d_8cpp__incl.png differ diff --git a/_x_b_o_x_o_l_d_8cpp_source.html b/_x_b_o_x_o_l_d_8cpp_source.html index aaefd89f..40e46e45 100644 --- a/_x_b_o_x_o_l_d_8cpp_source.html +++ b/_x_b_o_x_o_l_d_8cpp_source.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: XBOXOLD.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
- + - - + + + +
- - - - + + + +
@@ -108,7 +85,7 @@ This graph shows which files directly or indirectly include this file:
- +
@@ -147,7 +124,9 @@ Macros  

Macro Definition Documentation

- + +

◆ EP_MAXPKTSIZE

+
@@ -157,11 +136,13 @@ Macros
-

Definition at line 26 of file XBOXOLD.h.

+

Definition at line 26 of file XBOXOLD.h.

- + +

◆ XBOX_CONTROL_PIPE

+
@@ -171,11 +152,13 @@ Macros
-

Definition at line 29 of file XBOXOLD.h.

+

Definition at line 29 of file XBOXOLD.h.

- + +

◆ XBOX_INPUT_PIPE

+
@@ -185,11 +168,13 @@ Macros
-

Definition at line 30 of file XBOXOLD.h.

+

Definition at line 30 of file XBOXOLD.h.

- + +

◆ XBOX_OUTPUT_PIPE

+
@@ -199,11 +184,13 @@ Macros
-

Definition at line 31 of file XBOXOLD.h.

+

Definition at line 31 of file XBOXOLD.h.

- + +

◆ XBOX_VID

+
@@ -213,11 +200,13 @@ Macros
-

Definition at line 34 of file XBOXOLD.h.

+

Definition at line 34 of file XBOXOLD.h.

- + +

◆ MADCATZ_VID

+
@@ -227,11 +216,13 @@ Macros
-

Definition at line 35 of file XBOXOLD.h.

+

Definition at line 35 of file XBOXOLD.h.

- + +

◆ JOYTECH_VID

+
@@ -241,11 +232,13 @@ Macros
-

Definition at line 36 of file XBOXOLD.h.

+

Definition at line 36 of file XBOXOLD.h.

- + +

◆ XBOX_OLD_PID1

+
@@ -255,11 +248,13 @@ Macros
-

Definition at line 38 of file XBOXOLD.h.

+

Definition at line 38 of file XBOXOLD.h.

- + +

◆ XBOX_OLD_PID2

+
@@ -269,11 +264,13 @@ Macros
-

Definition at line 39 of file XBOXOLD.h.

+

Definition at line 39 of file XBOXOLD.h.

- + +

◆ XBOX_OLD_PID3

+
@@ -283,11 +280,13 @@ Macros
-

Definition at line 40 of file XBOXOLD.h.

+

Definition at line 40 of file XBOXOLD.h.

- + +

◆ XBOX_OLD_PID4

+
@@ -297,11 +296,13 @@ Macros
-

Definition at line 41 of file XBOXOLD.h.

+

Definition at line 41 of file XBOXOLD.h.

- + +

◆ XBOX_MAX_ENDPOINTS

+
@@ -311,7 +312,7 @@ Macros
-

Definition at line 43 of file XBOXOLD.h.

+

Definition at line 43 of file XBOXOLD.h.

@@ -320,7 +321,7 @@ Macros diff --git a/_x_b_o_x_o_l_d_8h__dep__incl.map b/_x_b_o_x_o_l_d_8h__dep__incl.map index 6b34c4a8..5b7d9d15 100644 --- a/_x_b_o_x_o_l_d_8h__dep__incl.map +++ b/_x_b_o_x_o_l_d_8h__dep__incl.map @@ -1,3 +1,3 @@ - + diff --git a/_x_b_o_x_o_l_d_8h__dep__incl.md5 b/_x_b_o_x_o_l_d_8h__dep__incl.md5 index cc366f2a..5636aca6 100644 --- a/_x_b_o_x_o_l_d_8h__dep__incl.md5 +++ b/_x_b_o_x_o_l_d_8h__dep__incl.md5 @@ -1 +1 @@ -82c0a98cce5027def9ffaed26c3bac43 \ No newline at end of file +40aa5e977625e2239fdc92221cc54178 \ No newline at end of file diff --git a/_x_b_o_x_o_l_d_8h__dep__incl.png b/_x_b_o_x_o_l_d_8h__dep__incl.png index cfb8c228..f1981e45 100644 Binary files a/_x_b_o_x_o_l_d_8h__dep__incl.png and b/_x_b_o_x_o_l_d_8h__dep__incl.png differ diff --git a/_x_b_o_x_o_l_d_8h__incl.map b/_x_b_o_x_o_l_d_8h__incl.map index b1091a74..fe8df126 100644 --- a/_x_b_o_x_o_l_d_8h__incl.map +++ b/_x_b_o_x_o_l_d_8h__incl.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/_x_b_o_x_o_l_d_8h__incl.md5 b/_x_b_o_x_o_l_d_8h__incl.md5 index 00cfe4cd..4d76a76a 100644 --- a/_x_b_o_x_o_l_d_8h__incl.md5 +++ b/_x_b_o_x_o_l_d_8h__incl.md5 @@ -1 +1 @@ -6f0fa83f2b72b0b7a7795b417af236ee \ No newline at end of file +a5adfa0570ca84123bf5bd39bb76ff4d \ No newline at end of file diff --git a/_x_b_o_x_o_l_d_8h__incl.png b/_x_b_o_x_o_l_d_8h__incl.png index 7f9c4163..2f486ac8 100644 Binary files a/_x_b_o_x_o_l_d_8h__incl.png and b/_x_b_o_x_o_l_d_8h__incl.png differ diff --git a/_x_b_o_x_o_l_d_8h_source.html b/_x_b_o_x_o_l_d_8h_source.html index a3d5db9e..2da6ff64 100644 --- a/_x_b_o_x_o_l_d_8h_source.html +++ b/_x_b_o_x_o_l_d_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: XBOXOLD.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - - - + + + +
@@ -105,7 +82,7 @@ Include dependency graph for XBOXONE.cpp: diff --git a/_x_b_o_x_o_n_e_8cpp__incl.map b/_x_b_o_x_o_n_e_8cpp__incl.map index ffe5640e..c33935c5 100644 --- a/_x_b_o_x_o_n_e_8cpp__incl.map +++ b/_x_b_o_x_o_n_e_8cpp__incl.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/_x_b_o_x_o_n_e_8cpp__incl.md5 b/_x_b_o_x_o_n_e_8cpp__incl.md5 index adfce4de..561c5fc7 100644 --- a/_x_b_o_x_o_n_e_8cpp__incl.md5 +++ b/_x_b_o_x_o_n_e_8cpp__incl.md5 @@ -1 +1 @@ -a31c4a2760319c972359266d1c3ccfe5 \ No newline at end of file +4f538d4414a636d7fa50b4947c386571 \ No newline at end of file diff --git a/_x_b_o_x_o_n_e_8cpp__incl.png b/_x_b_o_x_o_n_e_8cpp__incl.png index 2b11d73f..126a392d 100644 Binary files a/_x_b_o_x_o_n_e_8cpp__incl.png and b/_x_b_o_x_o_n_e_8cpp__incl.png differ diff --git a/_x_b_o_x_o_n_e_8cpp_source.html b/_x_b_o_x_o_n_e_8cpp_source.html index 0604f346..39fc09c7 100644 --- a/_x_b_o_x_o_n_e_8cpp_source.html +++ b/_x_b_o_x_o_n_e_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: XBOXONE.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - - + + +
@@ -106,7 +83,7 @@ This graph shows which files directly or indirectly include this file:
- +
@@ -169,7 +146,9 @@ Macros  

Macro Definition Documentation

- + +

◆ XBOX_ONE_EP_MAXPKTSIZE

+
@@ -179,11 +158,13 @@ Macros
-

Definition at line 30 of file XBOXONE.h.

+

Definition at line 30 of file XBOXONE.h.

- + +

◆ XBOX_ONE_CONTROL_PIPE

+
@@ -193,11 +174,13 @@ Macros
-

Definition at line 33 of file XBOXONE.h.

+

Definition at line 33 of file XBOXONE.h.

- + +

◆ XBOX_ONE_OUTPUT_PIPE

+
@@ -207,11 +190,13 @@ Macros
-

Definition at line 34 of file XBOXONE.h.

+

Definition at line 34 of file XBOXONE.h.

- + +

◆ XBOX_ONE_INPUT_PIPE

+
@@ -221,11 +206,13 @@ Macros
-

Definition at line 35 of file XBOXONE.h.

+

Definition at line 35 of file XBOXONE.h.

- + +

◆ XBOX_ONE_MAX_ENDPOINTS

+
@@ -235,11 +222,13 @@ Macros
-

Definition at line 37 of file XBOXONE.h.

+

Definition at line 37 of file XBOXONE.h.

- + +

◆ XBOX_VID1

+
@@ -249,11 +238,13 @@ Macros
-

Definition at line 42 of file XBOXONE.h.

+

Definition at line 42 of file XBOXONE.h.

- + +

◆ XBOX_ONE_PID1

+
@@ -263,11 +254,13 @@ Macros
-

Definition at line 43 of file XBOXONE.h.

+

Definition at line 43 of file XBOXONE.h.

- + +

◆ XBOX_ONE_PID2

+
@@ -277,11 +270,13 @@ Macros
-

Definition at line 44 of file XBOXONE.h.

+

Definition at line 44 of file XBOXONE.h.

- + +

◆ XBOX_ONE_PID3

+
@@ -291,11 +286,13 @@ Macros
-

Definition at line 45 of file XBOXONE.h.

+

Definition at line 45 of file XBOXONE.h.

- + +

◆ XBOX_ONE_PID4

+
@@ -305,11 +302,13 @@ Macros
-

Definition at line 46 of file XBOXONE.h.

+

Definition at line 46 of file XBOXONE.h.

- + +

◆ XBOX_ONE_PID13

+
@@ -319,11 +318,13 @@ Macros
-

Definition at line 47 of file XBOXONE.h.

+

Definition at line 47 of file XBOXONE.h.

- + +

◆ XBOX_VID2

+
@@ -333,11 +334,13 @@ Macros
-

Definition at line 50 of file XBOXONE.h.

+

Definition at line 50 of file XBOXONE.h.

- + +

◆ XBOX_VID3

+
@@ -347,11 +350,13 @@ Macros
-

Definition at line 51 of file XBOXONE.h.

+

Definition at line 51 of file XBOXONE.h.

- + +

◆ XBOX_VID4

+
@@ -361,11 +366,13 @@ Macros
-

Definition at line 52 of file XBOXONE.h.

+

Definition at line 52 of file XBOXONE.h.

- + +

◆ XBOX_VID5

+
@@ -375,11 +382,13 @@ Macros
-

Definition at line 53 of file XBOXONE.h.

+

Definition at line 53 of file XBOXONE.h.

- + +

◆ XBOX_VID6

+
@@ -389,11 +398,13 @@ Macros
-

Definition at line 54 of file XBOXONE.h.

+

Definition at line 54 of file XBOXONE.h.

- + +

◆ XBOX_ONE_PID5

+
@@ -403,11 +414,13 @@ Macros
-

Definition at line 56 of file XBOXONE.h.

+

Definition at line 56 of file XBOXONE.h.

- + +

◆ XBOX_ONE_PID6

+
@@ -417,11 +430,13 @@ Macros
-

Definition at line 57 of file XBOXONE.h.

+

Definition at line 57 of file XBOXONE.h.

- + +

◆ XBOX_ONE_PID7

+
@@ -431,11 +446,13 @@ Macros
-

Definition at line 58 of file XBOXONE.h.

+

Definition at line 58 of file XBOXONE.h.

- + +

◆ XBOX_ONE_PID8

+
@@ -445,11 +462,13 @@ Macros
-

Definition at line 59 of file XBOXONE.h.

+

Definition at line 59 of file XBOXONE.h.

- + +

◆ XBOX_ONE_PID9

+
@@ -459,11 +478,13 @@ Macros
-

Definition at line 60 of file XBOXONE.h.

+

Definition at line 60 of file XBOXONE.h.

- + +

◆ XBOX_ONE_PID10

+
@@ -473,11 +494,13 @@ Macros
-

Definition at line 61 of file XBOXONE.h.

+

Definition at line 61 of file XBOXONE.h.

- + +

◆ XBOX_ONE_PID11

+
@@ -487,11 +510,13 @@ Macros
-

Definition at line 62 of file XBOXONE.h.

+

Definition at line 62 of file XBOXONE.h.

- + +

◆ XBOX_ONE_PID12

+
@@ -501,7 +526,7 @@ Macros
-

Definition at line 63 of file XBOXONE.h.

+

Definition at line 63 of file XBOXONE.h.

@@ -510,7 +535,7 @@ Macros diff --git a/_x_b_o_x_o_n_e_8h__dep__incl.map b/_x_b_o_x_o_n_e_8h__dep__incl.map index eb200c31..d0f2f8e3 100644 --- a/_x_b_o_x_o_n_e_8h__dep__incl.map +++ b/_x_b_o_x_o_n_e_8h__dep__incl.map @@ -1,3 +1,3 @@ - + diff --git a/_x_b_o_x_o_n_e_8h__dep__incl.md5 b/_x_b_o_x_o_n_e_8h__dep__incl.md5 index c13f788f..138afee0 100644 --- a/_x_b_o_x_o_n_e_8h__dep__incl.md5 +++ b/_x_b_o_x_o_n_e_8h__dep__incl.md5 @@ -1 +1 @@ -fd61d6c8f3280fcb7695abf658ecef71 \ No newline at end of file +62b27de5bf2e11b4776c6317ba9ba67c \ No newline at end of file diff --git a/_x_b_o_x_o_n_e_8h__dep__incl.png b/_x_b_o_x_o_n_e_8h__dep__incl.png index 3f0b1842..1e211b9d 100644 Binary files a/_x_b_o_x_o_n_e_8h__dep__incl.png and b/_x_b_o_x_o_n_e_8h__dep__incl.png differ diff --git a/_x_b_o_x_o_n_e_8h__incl.map b/_x_b_o_x_o_n_e_8h__incl.map index 05cb8c11..c7e493a0 100644 --- a/_x_b_o_x_o_n_e_8h__incl.map +++ b/_x_b_o_x_o_n_e_8h__incl.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/_x_b_o_x_o_n_e_8h__incl.md5 b/_x_b_o_x_o_n_e_8h__incl.md5 index 14781353..77d2358c 100644 --- a/_x_b_o_x_o_n_e_8h__incl.md5 +++ b/_x_b_o_x_o_n_e_8h__incl.md5 @@ -1 +1 @@ -0dde0ce6aa02e651aff1df3147ecf48a \ No newline at end of file +2a496eec75d3a13d8c9db56169dc7730 \ No newline at end of file diff --git a/_x_b_o_x_o_n_e_8h__incl.png b/_x_b_o_x_o_n_e_8h__incl.png index 0f51394d..74db3b63 100644 Binary files a/_x_b_o_x_o_n_e_8h__incl.png and b/_x_b_o_x_o_n_e_8h__incl.png differ diff --git a/_x_b_o_x_o_n_e_8h_source.html b/_x_b_o_x_o_n_e_8h_source.html index 1527a8bd..19824e9c 100644 --- a/_x_b_o_x_o_n_e_8h_source.html +++ b/_x_b_o_x_o_n_e_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: XBOXONE.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - + + - - - - - + + + + +
@@ -118,7 +95,7 @@ Classes diff --git a/_x_b_o_x_o_n_e_s_b_t_8h__incl.map b/_x_b_o_x_o_n_e_s_b_t_8h__incl.map index af16788e..fc0f041d 100644 --- a/_x_b_o_x_o_n_e_s_b_t_8h__incl.map +++ b/_x_b_o_x_o_n_e_s_b_t_8h__incl.map @@ -1,10 +1,10 @@ - - + + - - - - - + + + + + diff --git a/_x_b_o_x_o_n_e_s_b_t_8h__incl.md5 b/_x_b_o_x_o_n_e_s_b_t_8h__incl.md5 index 438ec367..bcdea021 100644 --- a/_x_b_o_x_o_n_e_s_b_t_8h__incl.md5 +++ b/_x_b_o_x_o_n_e_s_b_t_8h__incl.md5 @@ -1 +1 @@ -93ae8d9e86736b483d76f436b3f06b8a \ No newline at end of file +e389b3d40dbf2d8df1d6978c89be27e1 \ No newline at end of file diff --git a/_x_b_o_x_o_n_e_s_b_t_8h__incl.png b/_x_b_o_x_o_n_e_s_b_t_8h__incl.png index ea802f40..ce4a8fe8 100644 Binary files a/_x_b_o_x_o_n_e_s_b_t_8h__incl.png and b/_x_b_o_x_o_n_e_s_b_t_8h__incl.png differ diff --git a/_x_b_o_x_o_n_e_s_b_t_8h_source.html b/_x_b_o_x_o_n_e_s_b_t_8h_source.html index 484fb8e2..e09374cd 100644 --- a/_x_b_o_x_o_n_e_s_b_t_8h_source.html +++ b/_x_b_o_x_o_n_e_s_b_t_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: XBOXONESBT.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - - + + +
@@ -138,7 +115,9 @@ Variables  

Enumeration Type Documentation

- + +

◆ DPADEnum

+
@@ -148,50 +127,34 @@ Variables
- - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +
Enumerator
DPAD_UP  -
DPAD_UP_RIGHT  -
DPAD_RIGHT  -
DPAD_RIGHT_DOWN  -
DPAD_DOWN  -
DPAD_DOWN_LEFT  -
DPAD_LEFT  -
DPAD_LEFT_UP  -
DPAD_OFF  -
DPAD_OFF  -
DPAD_UP  -
DPAD_UP_RIGHT  -
DPAD_RIGHT  -
DPAD_RIGHT_DOWN  -
DPAD_DOWN  -
DPAD_DOWN_LEFT  -
DPAD_LEFT  -
DPAD_LEFT_UP  -
Enumerator
DPAD_UP 
DPAD_UP_RIGHT 
DPAD_RIGHT 
DPAD_RIGHT_DOWN 
DPAD_DOWN 
DPAD_DOWN_LEFT 
DPAD_LEFT 
DPAD_LEFT_UP 
DPAD_OFF 
DPAD_OFF 
DPAD_UP 
DPAD_UP_RIGHT 
DPAD_RIGHT 
DPAD_RIGHT_DOWN 
DPAD_DOWN 
DPAD_DOWN_LEFT 
DPAD_LEFT 
DPAD_LEFT_UP 
-

Definition at line 45 of file XBOXONESParser.cpp.

+

Definition at line 45 of file XBOXONESParser.cpp.

Variable Documentation

- + +

◆ XBOX_ONE_S_BUTTONS

+
@@ -206,7 +169,7 @@ Variables

Buttons on the controller

-

Definition at line 24 of file XBOXONESParser.cpp.

+

Definition at line 24 of file XBOXONESParser.cpp.

@@ -215,7 +178,7 @@ Variables diff --git a/_x_b_o_x_o_n_e_s_parser_8cpp__incl.map b/_x_b_o_x_o_n_e_s_parser_8cpp__incl.map index 808b36c2..56c293db 100644 --- a/_x_b_o_x_o_n_e_s_parser_8cpp__incl.map +++ b/_x_b_o_x_o_n_e_s_parser_8cpp__incl.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/_x_b_o_x_o_n_e_s_parser_8cpp__incl.md5 b/_x_b_o_x_o_n_e_s_parser_8cpp__incl.md5 index 26b8e571..39ca97fe 100644 --- a/_x_b_o_x_o_n_e_s_parser_8cpp__incl.md5 +++ b/_x_b_o_x_o_n_e_s_parser_8cpp__incl.md5 @@ -1 +1 @@ -13b8de04793db6abb3033117443283af \ No newline at end of file +2cd1b59752bd095b43616905e1e210d0 \ No newline at end of file diff --git a/_x_b_o_x_o_n_e_s_parser_8cpp__incl.png b/_x_b_o_x_o_n_e_s_parser_8cpp__incl.png index 4c0bd1e6..7a8177f9 100644 Binary files a/_x_b_o_x_o_n_e_s_parser_8cpp__incl.png and b/_x_b_o_x_o_n_e_s_parser_8cpp__incl.png differ diff --git a/_x_b_o_x_o_n_e_s_parser_8cpp_source.html b/_x_b_o_x_o_n_e_s_parser_8cpp_source.html index 41bd3b5d..aa8c0e6f 100644 --- a/_x_b_o_x_o_n_e_s_parser_8cpp_source.html +++ b/_x_b_o_x_o_n_e_s_parser_8cpp_source.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: XBOXONESParser.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
ButtonEnum
ButtonEnum
Definition: controllerEnums.h:78
L2
Definition: controllerEnums.h:115
PSTR
#define PSTR(str)
Definition: version_helper.h:54
-
MFK_CASTUINT8T
#define MFK_CASTUINT8T
Definition: settings.h:196
+
MFK_CASTUINT8T
#define MFK_CASTUINT8T
Definition: settings.h:194
XBOX
Definition: controllerEnums.h:141
DPAD_RIGHT
Definition: XBOXONESParser.cpp:49
XBOX_ONE_S_BUTTONS
const uint8_t XBOX_ONE_S_BUTTONS[]
Definition: XBOXONESParser.cpp:24
@@ -126,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/_x_b_o_x_o_n_e_s_parser_8h.html b/_x_b_o_x_o_n_e_s_parser_8h.html index db32fc61..75c66826 100644 --- a/_x_b_o_x_o_n_e_s_parser_8h.html +++ b/_x_b_o_x_o_n_e_s_parser_8h.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: XBOXONESParser.h File Reference @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + +
- - + +
@@ -104,8 +81,8 @@ This graph shows which files directly or indirectly include this file:
- - + +
@@ -125,7 +102,7 @@ Classes diff --git a/_x_b_o_x_o_n_e_s_parser_8h__dep__incl.map b/_x_b_o_x_o_n_e_s_parser_8h__dep__incl.map index 19df4c37..68deb462 100644 --- a/_x_b_o_x_o_n_e_s_parser_8h__dep__incl.map +++ b/_x_b_o_x_o_n_e_s_parser_8h__dep__incl.map @@ -1,4 +1,4 @@ - - + + diff --git a/_x_b_o_x_o_n_e_s_parser_8h__dep__incl.md5 b/_x_b_o_x_o_n_e_s_parser_8h__dep__incl.md5 index bc96dc0e..1f30a759 100644 --- a/_x_b_o_x_o_n_e_s_parser_8h__dep__incl.md5 +++ b/_x_b_o_x_o_n_e_s_parser_8h__dep__incl.md5 @@ -1 +1 @@ -2fa9bb92b71bd9cdab65f8c86258361f \ No newline at end of file +6383e2808a863ad4f39a9c6a65aa310a \ No newline at end of file diff --git a/_x_b_o_x_o_n_e_s_parser_8h__dep__incl.png b/_x_b_o_x_o_n_e_s_parser_8h__dep__incl.png index f2d0d648..3fefcfe6 100644 Binary files a/_x_b_o_x_o_n_e_s_parser_8h__dep__incl.png and b/_x_b_o_x_o_n_e_s_parser_8h__dep__incl.png differ diff --git a/_x_b_o_x_o_n_e_s_parser_8h__incl.map b/_x_b_o_x_o_n_e_s_parser_8h__incl.map index f87f4af8..d645677b 100644 --- a/_x_b_o_x_o_n_e_s_parser_8h__incl.map +++ b/_x_b_o_x_o_n_e_s_parser_8h__incl.map @@ -1,4 +1,4 @@ - - + + diff --git a/_x_b_o_x_o_n_e_s_parser_8h__incl.md5 b/_x_b_o_x_o_n_e_s_parser_8h__incl.md5 index ef566f13..bda88880 100644 --- a/_x_b_o_x_o_n_e_s_parser_8h__incl.md5 +++ b/_x_b_o_x_o_n_e_s_parser_8h__incl.md5 @@ -1 +1 @@ -f726eecac58f6cf4c79697a592dc61db \ No newline at end of file +0bbedfc0106560aed16828d155495a03 \ No newline at end of file diff --git a/_x_b_o_x_o_n_e_s_parser_8h__incl.png b/_x_b_o_x_o_n_e_s_parser_8h__incl.png index cfa94097..ff44b4bb 100644 Binary files a/_x_b_o_x_o_n_e_s_parser_8h__incl.png and b/_x_b_o_x_o_n_e_s_parser_8h__incl.png differ diff --git a/_x_b_o_x_o_n_e_s_parser_8h_source.html b/_x_b_o_x_o_n_e_s_parser_8h_source.html index 0d32bdc8..212f152b 100644 --- a/_x_b_o_x_o_n_e_s_parser_8h_source.html +++ b/_x_b_o_x_o_n_e_s_parser_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: XBOXONESParser.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - - - + + + +
@@ -105,7 +82,7 @@ Include dependency graph for XBOXRECV.cpp: diff --git a/_x_b_o_x_r_e_c_v_8cpp__incl.map b/_x_b_o_x_r_e_c_v_8cpp__incl.map index eec4ecc3..b09e01b4 100644 --- a/_x_b_o_x_r_e_c_v_8cpp__incl.map +++ b/_x_b_o_x_r_e_c_v_8cpp__incl.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/_x_b_o_x_r_e_c_v_8cpp__incl.md5 b/_x_b_o_x_r_e_c_v_8cpp__incl.md5 index b0488834..e9c2cced 100644 --- a/_x_b_o_x_r_e_c_v_8cpp__incl.md5 +++ b/_x_b_o_x_r_e_c_v_8cpp__incl.md5 @@ -1 +1 @@ -afd0356fb2e414737dbcea38c7c8282b \ No newline at end of file +6ca63669978b108ea8fd430b01be5e9e \ No newline at end of file diff --git a/_x_b_o_x_r_e_c_v_8cpp__incl.png b/_x_b_o_x_r_e_c_v_8cpp__incl.png index c5fd77b5..4a14c39e 100644 Binary files a/_x_b_o_x_r_e_c_v_8cpp__incl.png and b/_x_b_o_x_r_e_c_v_8cpp__incl.png differ diff --git a/_x_b_o_x_r_e_c_v_8cpp_source.html b/_x_b_o_x_r_e_c_v_8cpp_source.html index b1a699f7..47090f9b 100644 --- a/_x_b_o_x_r_e_c_v_8cpp_source.html +++ b/_x_b_o_x_r_e_c_v_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: XBOXRECV.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - - + + +
@@ -106,7 +83,7 @@ This graph shows which files directly or indirectly include this file:
- +
@@ -153,7 +130,9 @@ Macros  

Macro Definition Documentation

- + +

◆ EP_MAXPKTSIZE

+
@@ -163,11 +142,13 @@ Macros
-

Definition at line 27 of file XBOXRECV.h.

+

Definition at line 27 of file XBOXRECV.h.

- + +

◆ XBOX_CONTROL_PIPE

+
@@ -177,11 +158,13 @@ Macros
-

Definition at line 30 of file XBOXRECV.h.

+

Definition at line 30 of file XBOXRECV.h.

- + +

◆ XBOX_INPUT_PIPE_1

+
@@ -191,11 +174,13 @@ Macros
-

Definition at line 31 of file XBOXRECV.h.

+

Definition at line 31 of file XBOXRECV.h.

- + +

◆ XBOX_OUTPUT_PIPE_1

+
@@ -205,11 +190,13 @@ Macros
-

Definition at line 32 of file XBOXRECV.h.

+

Definition at line 32 of file XBOXRECV.h.

- + +

◆ XBOX_INPUT_PIPE_2

+
@@ -219,11 +206,13 @@ Macros
-

Definition at line 33 of file XBOXRECV.h.

+

Definition at line 33 of file XBOXRECV.h.

- + +

◆ XBOX_OUTPUT_PIPE_2

+
@@ -233,11 +222,13 @@ Macros
-

Definition at line 34 of file XBOXRECV.h.

+

Definition at line 34 of file XBOXRECV.h.

- + +

◆ XBOX_INPUT_PIPE_3

+
@@ -247,11 +238,13 @@ Macros
-

Definition at line 35 of file XBOXRECV.h.

+

Definition at line 35 of file XBOXRECV.h.

- + +

◆ XBOX_OUTPUT_PIPE_3

+
@@ -261,11 +254,13 @@ Macros
-

Definition at line 36 of file XBOXRECV.h.

+

Definition at line 36 of file XBOXRECV.h.

- + +

◆ XBOX_INPUT_PIPE_4

+
@@ -275,11 +270,13 @@ Macros
-

Definition at line 37 of file XBOXRECV.h.

+

Definition at line 37 of file XBOXRECV.h.

- + +

◆ XBOX_OUTPUT_PIPE_4

+
@@ -289,11 +286,13 @@ Macros
-

Definition at line 38 of file XBOXRECV.h.

+

Definition at line 38 of file XBOXRECV.h.

- + +

◆ XBOX_VID

+
@@ -303,11 +302,13 @@ Macros
-

Definition at line 41 of file XBOXRECV.h.

+

Definition at line 41 of file XBOXRECV.h.

- + +

◆ MADCATZ_VID

+
@@ -317,11 +318,13 @@ Macros
-

Definition at line 42 of file XBOXRECV.h.

+

Definition at line 42 of file XBOXRECV.h.

- + +

◆ JOYTECH_VID

+
@@ -331,11 +334,13 @@ Macros
-

Definition at line 43 of file XBOXRECV.h.

+

Definition at line 43 of file XBOXRECV.h.

- + +

◆ XBOX_WIRELESS_RECEIVER_PID

+
@@ -345,11 +350,13 @@ Macros
-

Definition at line 45 of file XBOXRECV.h.

+

Definition at line 45 of file XBOXRECV.h.

- + +

◆ XBOX_WIRELESS_RECEIVER_THIRD_PARTY_PID

+
@@ -359,11 +366,13 @@ Macros
-

Definition at line 46 of file XBOXRECV.h.

+

Definition at line 46 of file XBOXRECV.h.

- + +

◆ XBOX_MAX_ENDPOINTS

+
@@ -373,7 +382,7 @@ Macros
-

Definition at line 48 of file XBOXRECV.h.

+

Definition at line 48 of file XBOXRECV.h.

@@ -382,7 +391,7 @@ Macros diff --git a/_x_b_o_x_r_e_c_v_8h__dep__incl.map b/_x_b_o_x_r_e_c_v_8h__dep__incl.map index d385722e..a5db4122 100644 --- a/_x_b_o_x_r_e_c_v_8h__dep__incl.map +++ b/_x_b_o_x_r_e_c_v_8h__dep__incl.map @@ -1,3 +1,3 @@ - + diff --git a/_x_b_o_x_r_e_c_v_8h__dep__incl.md5 b/_x_b_o_x_r_e_c_v_8h__dep__incl.md5 index 10cd6192..ca6d54fe 100644 --- a/_x_b_o_x_r_e_c_v_8h__dep__incl.md5 +++ b/_x_b_o_x_r_e_c_v_8h__dep__incl.md5 @@ -1 +1 @@ -1b17ab2dd30a29c1f644e03c41d46777 \ No newline at end of file +c63f097fed6791ddd934ab2f88d1fc85 \ No newline at end of file diff --git a/_x_b_o_x_r_e_c_v_8h__dep__incl.png b/_x_b_o_x_r_e_c_v_8h__dep__incl.png index 1c8a97f5..1d3dd779 100644 Binary files a/_x_b_o_x_r_e_c_v_8h__dep__incl.png and b/_x_b_o_x_r_e_c_v_8h__dep__incl.png differ diff --git a/_x_b_o_x_r_e_c_v_8h__incl.map b/_x_b_o_x_r_e_c_v_8h__incl.map index 17cebabe..4f2cc8c8 100644 --- a/_x_b_o_x_r_e_c_v_8h__incl.map +++ b/_x_b_o_x_r_e_c_v_8h__incl.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/_x_b_o_x_r_e_c_v_8h__incl.md5 b/_x_b_o_x_r_e_c_v_8h__incl.md5 index e4e3f6bf..63f0f207 100644 --- a/_x_b_o_x_r_e_c_v_8h__incl.md5 +++ b/_x_b_o_x_r_e_c_v_8h__incl.md5 @@ -1 +1 @@ -b243ba8a771536bf11d1fde69b3f7cff \ No newline at end of file +78db048a5c5881107b171aa2f31c9649 \ No newline at end of file diff --git a/_x_b_o_x_r_e_c_v_8h__incl.png b/_x_b_o_x_r_e_c_v_8h__incl.png index 2511b7ae..35e99362 100644 Binary files a/_x_b_o_x_r_e_c_v_8h__incl.png and b/_x_b_o_x_r_e_c_v_8h__incl.png differ diff --git a/_x_b_o_x_r_e_c_v_8h_source.html b/_x_b_o_x_r_e_c_v_8h_source.html index 7c3a7224..1f4abffe 100644 --- a/_x_b_o_x_r_e_c_v_8h_source.html +++ b/_x_b_o_x_r_e_c_v_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: XBOXRECV.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - - - - - + + + + + +
@@ -107,7 +84,7 @@ Include dependency graph for XBOXUSB.cpp: diff --git a/_x_b_o_x_u_s_b_8cpp__incl.map b/_x_b_o_x_u_s_b_8cpp__incl.map index ab21819a..7fbe80d1 100644 --- a/_x_b_o_x_u_s_b_8cpp__incl.map +++ b/_x_b_o_x_u_s_b_8cpp__incl.map @@ -1,8 +1,8 @@ - - - - - - + + + + + + diff --git a/_x_b_o_x_u_s_b_8cpp__incl.md5 b/_x_b_o_x_u_s_b_8cpp__incl.md5 index 56fff921..d4f8925b 100644 --- a/_x_b_o_x_u_s_b_8cpp__incl.md5 +++ b/_x_b_o_x_u_s_b_8cpp__incl.md5 @@ -1 +1 @@ -c0796622753a276d2229e35ba1e7b14a \ No newline at end of file +807e2c62bb3b87c5cd4d582d24faff91 \ No newline at end of file diff --git a/_x_b_o_x_u_s_b_8cpp__incl.png b/_x_b_o_x_u_s_b_8cpp__incl.png index 2dc359a1..2a6d9909 100644 Binary files a/_x_b_o_x_u_s_b_8cpp__incl.png and b/_x_b_o_x_u_s_b_8cpp__incl.png differ diff --git a/_x_b_o_x_u_s_b_8cpp_source.html b/_x_b_o_x_u_s_b_8cpp_source.html index 3d6f5c79..848b025e 100644 --- a/_x_b_o_x_u_s_b_8cpp_source.html +++ b/_x_b_o_x_u_s_b_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: XBOXUSB.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - - - - + + + + +
@@ -109,7 +86,7 @@ This graph shows which files directly or indirectly include this file:
- +
@@ -160,7 +137,9 @@ Macros  

Macro Definition Documentation

- + +

◆ EP_MAXPKTSIZE

+
@@ -170,11 +149,13 @@ Macros
-

Definition at line 26 of file XBOXUSB.h.

+

Definition at line 26 of file XBOXUSB.h.

- + +

◆ XBOX_CONTROL_PIPE

+
@@ -184,11 +165,13 @@ Macros
-

Definition at line 29 of file XBOXUSB.h.

+

Definition at line 29 of file XBOXUSB.h.

- + +

◆ XBOX_INPUT_PIPE

+
@@ -198,11 +181,13 @@ Macros
-

Definition at line 30 of file XBOXUSB.h.

+

Definition at line 30 of file XBOXUSB.h.

- + +

◆ XBOX_OUTPUT_PIPE

+
@@ -212,11 +197,13 @@ Macros
-

Definition at line 31 of file XBOXUSB.h.

+

Definition at line 31 of file XBOXUSB.h.

- + +

◆ XBOX_VID

+
@@ -226,11 +213,13 @@ Macros
-

Definition at line 34 of file XBOXUSB.h.

+

Definition at line 34 of file XBOXUSB.h.

- + +

◆ MADCATZ_VID

+
@@ -240,11 +229,13 @@ Macros
-

Definition at line 35 of file XBOXUSB.h.

+

Definition at line 35 of file XBOXUSB.h.

- + +

◆ JOYTECH_VID

+
@@ -254,11 +245,13 @@ Macros
-

Definition at line 36 of file XBOXUSB.h.

+

Definition at line 36 of file XBOXUSB.h.

- + +

◆ GAMESTOP_VID

+
@@ -268,11 +261,13 @@ Macros
-

Definition at line 37 of file XBOXUSB.h.

+

Definition at line 37 of file XBOXUSB.h.

- + +

◆ XBOX_WIRED_PID

+
@@ -282,11 +277,13 @@ Macros
-

Definition at line 39 of file XBOXUSB.h.

+

Definition at line 39 of file XBOXUSB.h.

- + +

◆ XBOX_WIRELESS_PID

+
@@ -296,11 +293,13 @@ Macros
-

Definition at line 40 of file XBOXUSB.h.

+

Definition at line 40 of file XBOXUSB.h.

- + +

◆ XBOX_WIRELESS_RECEIVER_PID

+
@@ -310,11 +309,13 @@ Macros
-

Definition at line 41 of file XBOXUSB.h.

+

Definition at line 41 of file XBOXUSB.h.

- + +

◆ XBOX_WIRELESS_RECEIVER_THIRD_PARTY_PID

+
@@ -324,11 +325,13 @@ Macros
-

Definition at line 42 of file XBOXUSB.h.

+

Definition at line 42 of file XBOXUSB.h.

- + +

◆ MADCATZ_WIRED_PID

+
@@ -338,11 +341,13 @@ Macros
-

Definition at line 43 of file XBOXUSB.h.

+

Definition at line 43 of file XBOXUSB.h.

- + +

◆ JOYTECH_WIRED_PID

+
@@ -352,11 +357,13 @@ Macros
-

Definition at line 44 of file XBOXUSB.h.

+

Definition at line 44 of file XBOXUSB.h.

- + +

◆ GAMESTOP_WIRED_PID

+
@@ -366,11 +373,13 @@ Macros
-

Definition at line 45 of file XBOXUSB.h.

+

Definition at line 45 of file XBOXUSB.h.

- + +

◆ AFTERGLOW_WIRED_PID

+
@@ -380,11 +389,13 @@ Macros
-

Definition at line 46 of file XBOXUSB.h.

+

Definition at line 46 of file XBOXUSB.h.

- + +

◆ XBOX_REPORT_BUFFER_SIZE

+
@@ -394,11 +405,13 @@ Macros
-

Definition at line 48 of file XBOXUSB.h.

+

Definition at line 48 of file XBOXUSB.h.

- + +

◆ XBOX_MAX_ENDPOINTS

+
@@ -408,7 +421,7 @@ Macros
-

Definition at line 50 of file XBOXUSB.h.

+

Definition at line 50 of file XBOXUSB.h.

@@ -417,7 +430,7 @@ Macros diff --git a/_x_b_o_x_u_s_b_8h__dep__incl.map b/_x_b_o_x_u_s_b_8h__dep__incl.map index 97a167a3..e1163f4f 100644 --- a/_x_b_o_x_u_s_b_8h__dep__incl.map +++ b/_x_b_o_x_u_s_b_8h__dep__incl.map @@ -1,3 +1,3 @@ - + diff --git a/_x_b_o_x_u_s_b_8h__dep__incl.md5 b/_x_b_o_x_u_s_b_8h__dep__incl.md5 index ffb0405c..3486b50b 100644 --- a/_x_b_o_x_u_s_b_8h__dep__incl.md5 +++ b/_x_b_o_x_u_s_b_8h__dep__incl.md5 @@ -1 +1 @@ -18da52fa9e2758f5b169a34307b52822 \ No newline at end of file +e72de7b87014e17ae5652145a0bf146b \ No newline at end of file diff --git a/_x_b_o_x_u_s_b_8h__dep__incl.png b/_x_b_o_x_u_s_b_8h__dep__incl.png index 4852ab9f..4ec8b1b1 100644 Binary files a/_x_b_o_x_u_s_b_8h__dep__incl.png and b/_x_b_o_x_u_s_b_8h__dep__incl.png differ diff --git a/_x_b_o_x_u_s_b_8h__incl.map b/_x_b_o_x_u_s_b_8h__incl.map index 0c6a4e15..15765431 100644 --- a/_x_b_o_x_u_s_b_8h__incl.map +++ b/_x_b_o_x_u_s_b_8h__incl.map @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/_x_b_o_x_u_s_b_8h__incl.md5 b/_x_b_o_x_u_s_b_8h__incl.md5 index 9ea5abe3..55decb56 100644 --- a/_x_b_o_x_u_s_b_8h__incl.md5 +++ b/_x_b_o_x_u_s_b_8h__incl.md5 @@ -1 +1 @@ -bffb200b269ce5778ffd1fb3cca482e2 \ No newline at end of file +6f08202f11b618a1375a96c653bf625c \ No newline at end of file diff --git a/_x_b_o_x_u_s_b_8h__incl.png b/_x_b_o_x_u_s_b_8h__incl.png index 8ba28600..9f2ddacb 100644 Binary files a/_x_b_o_x_u_s_b_8h__incl.png and b/_x_b_o_x_u_s_b_8h__incl.png differ diff --git a/_x_b_o_x_u_s_b_8h_source.html b/_x_b_o_x_u_s_b_8h_source.html index 4163a707..e90738b3 100644 --- a/_x_b_o_x_u_s_b_8h_source.html +++ b/_x_b_o_x_u_s_b_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: XBOXUSB.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
 

Macro Definition Documentation

- + +

◆ USB_NAK_MAX_POWER

+
@@ -143,11 +122,13 @@ Typedefs
-

Definition at line 34 of file address.h.

+

Definition at line 34 of file address.h.

- + +

◆ USB_NAK_DEFAULT

+
@@ -157,11 +138,13 @@ Typedefs
-

Definition at line 35 of file address.h.

+

Definition at line 35 of file address.h.

- + +

◆ USB_NAK_NOWAIT

+
@@ -171,11 +154,13 @@ Typedefs
-

Definition at line 36 of file address.h.

+

Definition at line 36 of file address.h.

- + +

◆ USB_NAK_NONAK

+
@@ -185,11 +170,13 @@ Typedefs
-

Definition at line 37 of file address.h.

+

Definition at line 37 of file address.h.

- + +

◆ bmUSB_DEV_ADDR_ADDRESS

+
@@ -199,11 +186,13 @@ Typedefs
-

Definition at line 78 of file address.h.

+

Definition at line 78 of file address.h.

- + +

◆ bmUSB_DEV_ADDR_PARENT

+
@@ -213,11 +202,13 @@ Typedefs
-

Definition at line 79 of file address.h.

+

Definition at line 79 of file address.h.

- + +

◆ bmUSB_DEV_ADDR_HUB

+
@@ -227,11 +218,13 @@ Typedefs
-

Definition at line 80 of file address.h.

+

Definition at line 80 of file address.h.

- + +

◆ ADDR_ERROR_INVALID_INDEX

+
@@ -241,11 +234,13 @@ Typedefs
-

Definition at line 99 of file address.h.

+

Definition at line 99 of file address.h.

- + +

◆ ADDR_ERROR_INVALID_ADDRESS

+
@@ -255,12 +250,14 @@ Typedefs
-

Definition at line 100 of file address.h.

+

Definition at line 100 of file address.h.

Typedef Documentation

- + +

◆ UsbDeviceHandleFunc

+
@@ -270,7 +267,7 @@ Typedefs
-

Definition at line 97 of file address.h.

+

Definition at line 97 of file address.h.

@@ -279,7 +276,7 @@ Typedefs diff --git a/address_8h_source.html b/address_8h_source.html index eaf1c570..aa81235f 100644 --- a/address_8h_source.html +++ b/address_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: address.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
address.h
-Go to the documentation of this file.
1 /* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved.
2 
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; either version 2 of the License, or
6 (at your option) any later version.
7 
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12 
13 You should have received a copy of the GNU General Public License
14 along with this program; if not, write to the Free Software
15 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 
17 Contact information
18 -------------------
19 
20 Circuits At Home, LTD
21 Web : http://www.circuitsathome.com
22 e-mail : support@circuitsathome.com
23  */
24 
25 #if !defined(_usb_h_) || defined(__ADDRESS_H__)
26 #error "Never include address.h directly; include Usb.h instead"
27 #else
28 #define __ADDRESS_H__
29 
30 
31 
32 /* NAK powers. To save space in endpoint data structure, amount of retries before giving up and returning 0x4 is stored in */
33 /* bmNakPower as a power of 2. The actual nak_limit is then calculated as nak_limit = ( 2^bmNakPower - 1) */
34 #define USB_NAK_MAX_POWER 15 //NAK binary order maximum value
35 #define USB_NAK_DEFAULT 14 //default 32K-1 NAKs before giving up
36 #define USB_NAK_NOWAIT 1 //Single NAK stops transfer
37 #define USB_NAK_NONAK 0 //Do not count NAKs, stop retrying after USB Timeout
38 
39 struct EpInfo {
40  uint8_t epAddr; // Endpoint address
41  uint8_t maxPktSize; // Maximum packet size
42 
43  union {
44  uint8_t epAttribs;
45 
46  struct {
47  uint8_t bmSndToggle : 1; // Send toggle, when zero bmSNDTOG0, bmSNDTOG1 otherwise
48  uint8_t bmRcvToggle : 1; // Send toggle, when zero bmRCVTOG0, bmRCVTOG1 otherwise
49  uint8_t bmNakPower : 6; // Binary order for NAK_LIMIT value
50  } __attribute__((packed));
51  };
52 } __attribute__((packed));
53 
54 // 7 6 5 4 3 2 1 0
55 // ---------------------------------
56 // | | H | P | P | P | A | A | A |
57 // ---------------------------------
58 //
59 // H - if 1 the address is a hub address
60 // P - parent hub address
61 // A - device address / port number in case of hub
62 //
63 
65 
66  union {
67 
68  struct {
69  uint8_t bmAddress : 3; // device address/port number
70  uint8_t bmParent : 3; // parent hub address
71  uint8_t bmHub : 1; // hub flag
72  uint8_t bmReserved : 1; // reserved, must be zero
73  } __attribute__((packed));
74  uint8_t devAddress;
75  };
76 } __attribute__((packed));
77 
78 #define bmUSB_DEV_ADDR_ADDRESS 0x07
79 #define bmUSB_DEV_ADDR_PARENT 0x38
80 #define bmUSB_DEV_ADDR_HUB 0x40
81 
82 struct UsbDevice {
83  EpInfo *epinfo; // endpoint info pointer
85  uint8_t epcount; // number of endpoints
86  bool lowspeed; // indicates if a device is the low speed one
87  // uint8_t devclass; // device class
88 } __attribute__((packed));
89 
90 class AddressPool {
91 public:
92  virtual UsbDevice* GetUsbDevicePtr(uint8_t addr) = 0;
93  virtual uint8_t AllocAddress(uint8_t parent, bool is_hub = false, uint8_t port = 0) = 0;
94  virtual void FreeAddress(uint8_t addr) = 0;
95 };
96 
97 typedef void (*UsbDeviceHandleFunc)(UsbDevice *pdev);
98 
99 #define ADDR_ERROR_INVALID_INDEX 0xFF
100 #define ADDR_ERROR_INVALID_ADDRESS 0xFF
101 
102 template <const uint8_t MAX_DEVICES_ALLOWED>
103 class AddressPoolImpl : public AddressPool {
104  EpInfo dev0ep; //Endpoint data structure used during enumeration for uninitialized device
105 
106  uint8_t hubCounter; // hub counter is kept
107  // in order to avoid hub address duplication
108 
109  UsbDevice thePool[MAX_DEVICES_ALLOWED];
110 
111  // Initializes address pool entry
112 
113  void InitEntry(uint8_t index) {
114  thePool[index].address.devAddress = 0;
115  thePool[index].epcount = 1;
116  thePool[index].lowspeed = 0;
117  thePool[index].epinfo = &dev0ep;
118  };
119 
120  // Returns thePool index for a given address
121 
122  uint8_t FindAddressIndex(uint8_t address = 0) {
123  for(uint8_t i = 1; i < MAX_DEVICES_ALLOWED; i++) {
124  if(thePool[i].address.devAddress == address)
125  return i;
126  }
127  return 0;
128  };
129 
130  // Returns thePool child index for a given parent
131 
132  uint8_t FindChildIndex(UsbDeviceAddress addr, uint8_t start = 1) {
133  for(uint8_t i = (start < 1 || start >= MAX_DEVICES_ALLOWED) ? 1 : start; i < MAX_DEVICES_ALLOWED; i++) {
134  if(thePool[i].address.bmParent == addr.bmAddress)
135  return i;
136  }
137  return 0;
138  };
139 
140  // Frees address entry specified by index parameter
141 
142  void FreeAddressByIndex(uint8_t index) {
143  // Zero field is reserved and should not be affected
144  if(index == 0)
145  return;
146 
147  UsbDeviceAddress uda = thePool[index].address;
148  // If a hub was switched off all port addresses should be freed
149  if(uda.bmHub == 1) {
150  for(uint8_t i = 1; (i = FindChildIndex(uda, i));)
151  FreeAddressByIndex(i);
152 
153  // If the hub had the last allocated address, hubCounter should be decremented
154  if(hubCounter == uda.bmAddress)
155  hubCounter--;
156  }
157  InitEntry(index);
158  }
159 
160  // Initializes the whole address pool at once
161 
162  void InitAllAddresses() {
163  for(uint8_t i = 1; i < MAX_DEVICES_ALLOWED; i++)
164  InitEntry(i);
165 
166  hubCounter = 0;
167  };
168 
169 public:
170 
171  AddressPoolImpl() : hubCounter(0) {
172  // Zero address is reserved
173  InitEntry(0);
174 
175  thePool[0].address.devAddress = 0;
176  thePool[0].epinfo = &dev0ep;
177  dev0ep.epAddr = 0;
178  dev0ep.maxPktSize = 8;
179  dev0ep.bmSndToggle = 0; // Set DATA0/1 toggles to 0
180  dev0ep.bmRcvToggle = 0;
181  dev0ep.bmNakPower = USB_NAK_MAX_POWER;
182 
183  InitAllAddresses();
184  };
185 
186  // Returns a pointer to a specified address entry
187 
188  virtual UsbDevice* GetUsbDevicePtr(uint8_t addr) {
189  if(!addr)
190  return thePool;
191 
192  uint8_t index = FindAddressIndex(addr);
193 
194  return (!index) ? NULL : thePool + index;
195  };
196 
197  // Performs an operation specified by pfunc for each addressed device
198 
200  if(!pfunc)
201  return;
202 
203  for(uint8_t i = 1; i < MAX_DEVICES_ALLOWED; i++)
204  if(thePool[i].address.devAddress)
205  pfunc(thePool + i);
206  };
207 
208  // Allocates new address
209 
210  virtual uint8_t AllocAddress(uint8_t parent, bool is_hub = false, uint8_t port = 0) {
211  /* if (parent != 0 && port == 0)
212  USB_HOST_SERIAL.println("PRT:0"); */
213  UsbDeviceAddress _parent;
214  _parent.devAddress = parent;
215  if(_parent.bmReserved || port > 7)
216  //if(parent > 127 || port > 7)
217  return 0;
218 
219  if(is_hub && hubCounter == 7)
220  return 0;
221 
222  // finds first empty address entry starting from one
223  uint8_t index = FindAddressIndex(0);
224 
225  if(!index) // if empty entry is not found
226  return 0;
227 
228  if(_parent.devAddress == 0) {
229  if(is_hub) {
230  thePool[index].address.devAddress = 0x41;
231  hubCounter++;
232  } else
233  thePool[index].address.devAddress = 1;
234 
235  return thePool[index].address.devAddress;
236  }
237 
238  UsbDeviceAddress addr;
239  addr.devAddress = 0; // Ensure all bits are zero
240  addr.bmParent = _parent.bmAddress;
241  if(is_hub) {
242  addr.bmHub = 1;
243  addr.bmAddress = ++hubCounter;
244  } else {
245  addr.bmHub = 0;
246  addr.bmAddress = port;
247  }
248  thePool[index].address = addr;
249  /*
250  USB_HOST_SERIAL.print("Addr:");
251  USB_HOST_SERIAL.print(addr.bmHub, HEX);
252  USB_HOST_SERIAL.print(".");
253  USB_HOST_SERIAL.print(addr.bmParent, HEX);
254  USB_HOST_SERIAL.print(".");
255  USB_HOST_SERIAL.println(addr.bmAddress, HEX);
256  */
257  return thePool[index].address.devAddress;
258  };
259 
260  // Empties pool entry
261 
262  virtual void FreeAddress(uint8_t addr) {
263  // if the root hub is disconnected all the addresses should be initialized
264  if(addr == 0x41) {
265  InitAllAddresses();
266  return;
267  }
268  uint8_t index = FindAddressIndex(addr);
269  FreeAddressByIndex(index);
270  };
271 
272  // Returns number of hubs attached
273  // It can be rather helpfull to find out if there are hubs attached than getting the exact number of hubs.
274  //uint8_t GetNumHubs()
275  //{
276  // return hubCounter;
277  //};
278  //uint8_t GetNumDevices()
279  //{
280  // uint8_t counter = 0;
281 
282  // for (uint8_t i=1; i<MAX_DEVICES_ALLOWED; i++)
283  // if (thePool[i].address != 0);
284  // counter ++;
285 
286  // return counter;
287  //};
288 };
289 
290 #endif // __ADDRESS_H__
uint8_t bmRcvToggle
Definition: address.h:48
+Go to the documentation of this file.
1 /* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved.
2 
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; either version 2 of the License, or
6 (at your option) any later version.
7 
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12 
13 You should have received a copy of the GNU General Public License
14 along with this program; if not, write to the Free Software
15 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 
17 Contact information
18 -------------------
19 
20 Circuits At Home, LTD
21 Web : http://www.circuitsathome.com
22 e-mail : support@circuitsathome.com
23  */
24 
25 #if !defined(_usb_h_) || defined(__ADDRESS_H__)
26 #error "Never include address.h directly; include Usb.h instead"
27 #else
28 #define __ADDRESS_H__
29 
30 
31 
32 /* NAK powers. To save space in endpoint data structure, amount of retries before giving up and returning 0x4 is stored in */
33 /* bmNakPower as a power of 2. The actual nak_limit is then calculated as nak_limit = ( 2^bmNakPower - 1) */
34 #define USB_NAK_MAX_POWER 15 //NAK binary order maximum value
35 #define USB_NAK_DEFAULT 14 //default 32K-1 NAKs before giving up
36 #define USB_NAK_NOWAIT 1 //Single NAK stops transfer
37 #define USB_NAK_NONAK 0 //Do not count NAKs, stop retrying after USB Timeout
38 
39 struct EpInfo {
40  uint8_t epAddr; // Endpoint address
41  uint8_t maxPktSize; // Maximum packet size
42 
43  union {
44  uint8_t epAttribs;
45 
46  struct {
47  uint8_t bmSndToggle : 1; // Send toggle, when zero bmSNDTOG0, bmSNDTOG1 otherwise
48  uint8_t bmRcvToggle : 1; // Send toggle, when zero bmRCVTOG0, bmRCVTOG1 otherwise
49  uint8_t bmNakPower : 6; // Binary order for NAK_LIMIT value
50  } __attribute__((packed));
51  };
52 } __attribute__((packed));
53 
54 // 7 6 5 4 3 2 1 0
55 // ---------------------------------
56 // | | H | P | P | P | A | A | A |
57 // ---------------------------------
58 //
59 // H - if 1 the address is a hub address
60 // P - parent hub address
61 // A - device address / port number in case of hub
62 //
63 
65 
66  union {
67 
68  struct {
69  uint8_t bmAddress : 3; // device address/port number
70  uint8_t bmParent : 3; // parent hub address
71  uint8_t bmHub : 1; // hub flag
72  uint8_t bmReserved : 1; // reserved, must be zero
73  } __attribute__((packed));
74  uint8_t devAddress;
75  };
76 } __attribute__((packed));
77 
78 #define bmUSB_DEV_ADDR_ADDRESS 0x07
79 #define bmUSB_DEV_ADDR_PARENT 0x38
80 #define bmUSB_DEV_ADDR_HUB 0x40
81 
82 struct UsbDevice {
83  EpInfo *epinfo; // endpoint info pointer
85  uint8_t epcount; // number of endpoints
86  bool lowspeed; // indicates if a device is the low speed one
87  // uint8_t devclass; // device class
88 } __attribute__((packed));
89 
90 class AddressPool {
91 public:
92  virtual UsbDevice* GetUsbDevicePtr(uint8_t addr) = 0;
93  virtual uint8_t AllocAddress(uint8_t parent, bool is_hub = false, uint8_t port = 0) = 0;
94  virtual void FreeAddress(uint8_t addr) = 0;
95 };
96 
97 typedef void (*UsbDeviceHandleFunc)(UsbDevice *pdev);
98 
99 #define ADDR_ERROR_INVALID_INDEX 0xFF
100 #define ADDR_ERROR_INVALID_ADDRESS 0xFF
101 
102 template <const uint8_t MAX_DEVICES_ALLOWED>
103 class AddressPoolImpl : public AddressPool {
104  EpInfo dev0ep; //Endpoint data structure used during enumeration for uninitialized device
105 
106  uint8_t hubCounter; // hub counter is kept
107  // in order to avoid hub address duplication
108 
109  UsbDevice thePool[MAX_DEVICES_ALLOWED];
110 
111  // Initializes address pool entry
112 
113  void InitEntry(uint8_t index) {
114  thePool[index].address.devAddress = 0;
115  thePool[index].epcount = 1;
116  thePool[index].lowspeed = 0;
117  thePool[index].epinfo = &dev0ep;
118  };
119 
120  // Returns thePool index for a given address
121 
122  uint8_t FindAddressIndex(uint8_t address = 0) {
123  for(uint8_t i = 1; i < MAX_DEVICES_ALLOWED; i++) {
124  if(thePool[i].address.devAddress == address)
125  return i;
126  }
127  return 0;
128  };
129 
130  // Returns thePool child index for a given parent
131 
132  uint8_t FindChildIndex(UsbDeviceAddress addr, uint8_t start = 1) {
133  for(uint8_t i = (start < 1 || start >= MAX_DEVICES_ALLOWED) ? 1 : start; i < MAX_DEVICES_ALLOWED; i++) {
134  if(thePool[i].address.bmParent == addr.bmAddress)
135  return i;
136  }
137  return 0;
138  };
139 
140  // Frees address entry specified by index parameter
141 
142  void FreeAddressByIndex(uint8_t index) {
143  // Zero field is reserved and should not be affected
144  if(index == 0)
145  return;
146 
147  UsbDeviceAddress uda = thePool[index].address;
148  // If a hub was switched off all port addresses should be freed
149  if(uda.bmHub == 1) {
150  for(uint8_t i = 1; (i = FindChildIndex(uda, i));)
151  FreeAddressByIndex(i);
152 
153  // If the hub had the last allocated address, hubCounter should be decremented
154  if(hubCounter == uda.bmAddress)
155  hubCounter--;
156  }
157  InitEntry(index);
158  }
159 
160  // Initializes the whole address pool at once
161 
162  void InitAllAddresses() {
163  for(uint8_t i = 1; i < MAX_DEVICES_ALLOWED; i++)
164  InitEntry(i);
165 
166  hubCounter = 0;
167  };
168 
169 public:
170 
171  AddressPoolImpl() : hubCounter(0) {
172  // Zero address is reserved
173  InitEntry(0);
174 
175  thePool[0].address.devAddress = 0;
176  thePool[0].epinfo = &dev0ep;
177  dev0ep.epAddr = 0;
178  dev0ep.maxPktSize = 8;
179  dev0ep.bmSndToggle = 0; // Set DATA0/1 toggles to 0
180  dev0ep.bmRcvToggle = 0;
181  dev0ep.bmNakPower = USB_NAK_MAX_POWER;
182 
183  InitAllAddresses();
184  };
185 
186  // Returns a pointer to a specified address entry
187 
188  virtual UsbDevice* GetUsbDevicePtr(uint8_t addr) {
189  if(!addr)
190  return thePool;
191 
192  uint8_t index = FindAddressIndex(addr);
193 
194  return (!index) ? NULL : thePool + index;
195  };
196 
197  // Performs an operation specified by pfunc for each addressed device
198 
200  if(!pfunc)
201  return;
202 
203  for(uint8_t i = 1; i < MAX_DEVICES_ALLOWED; i++)
204  if(thePool[i].address.devAddress)
205  pfunc(thePool + i);
206  };
207 
208  // Allocates new address
209 
210  virtual uint8_t AllocAddress(uint8_t parent, bool is_hub = false, uint8_t port = 0) {
211  /* if (parent != 0 && port == 0)
212  USB_HOST_SERIAL.println("PRT:0"); */
213  UsbDeviceAddress _parent;
214  _parent.devAddress = parent;
215  if(_parent.bmReserved || port > 7)
216  //if(parent > 127 || port > 7)
217  return 0;
218 
219  if(is_hub && hubCounter == 7)
220  return 0;
221 
222  // finds first empty address entry starting from one
223  uint8_t index = FindAddressIndex(0);
224 
225  if(!index) // if empty entry is not found
226  return 0;
227 
228  if(_parent.devAddress == 0) {
229  if(is_hub) {
230  thePool[index].address.devAddress = 0x41;
231  hubCounter++;
232  } else
233  thePool[index].address.devAddress = 1;
234 
235  return thePool[index].address.devAddress;
236  }
237 
238  UsbDeviceAddress addr;
239  addr.devAddress = 0; // Ensure all bits are zero
240  addr.bmParent = _parent.bmAddress;
241  if(is_hub) {
242  addr.bmHub = 1;
243  addr.bmAddress = ++hubCounter;
244  } else {
245  addr.bmHub = 0;
246  addr.bmAddress = port;
247  }
248  thePool[index].address = addr;
249  /*
250  USB_HOST_SERIAL.print("Addr:");
251  USB_HOST_SERIAL.print(addr.bmHub, HEX);
252  USB_HOST_SERIAL.print(".");
253  USB_HOST_SERIAL.print(addr.bmParent, HEX);
254  USB_HOST_SERIAL.print(".");
255  USB_HOST_SERIAL.println(addr.bmAddress, HEX);
256  */
257  return thePool[index].address.devAddress;
258  };
259 
260  // Empties pool entry
261 
262  virtual void FreeAddress(uint8_t addr) {
263  // if the root hub is disconnected all the addresses should be initialized
264  if(addr == 0x41) {
265  InitAllAddresses();
266  return;
267  }
268  uint8_t index = FindAddressIndex(addr);
269  FreeAddressByIndex(index);
270  };
271 
272  // Returns number of hubs attached
273  // It can be rather helpfull to find out if there are hubs attached than getting the exact number of hubs.
274  //uint8_t GetNumHubs()
275  //{
276  // return hubCounter;
277  //};
278  //uint8_t GetNumDevices()
279  //{
280  // uint8_t counter = 0;
281 
282  // for (uint8_t i=1; i<MAX_DEVICES_ALLOWED; i++)
283  // if (thePool[i].address != 0);
284  // counter ++;
285 
286  // return counter;
287  //};
288 };
289 
290 #endif // __ADDRESS_H__
uint8_t bmRcvToggle
Definition: address.h:48
EpInfo * epinfo
Definition: address.h:83
bool lowspeed
Definition: address.h:86
@@ -118,7 +95,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/adk_8cpp.html b/adk_8cpp.html index c0a3d423..f89c7141 100644 --- a/adk_8cpp.html +++ b/adk_8cpp.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: adk.cpp File Reference @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
- - + +
@@ -103,7 +80,7 @@ Include dependency graph for adk.cpp:
diff --git a/adk_8cpp__incl.map b/adk_8cpp__incl.map index eb12d3fa..dbe9d53f 100644 --- a/adk_8cpp__incl.map +++ b/adk_8cpp__incl.map @@ -1,4 +1,4 @@ - - + + diff --git a/adk_8cpp__incl.md5 b/adk_8cpp__incl.md5 index aeb01f6d..b86ac594 100644 --- a/adk_8cpp__incl.md5 +++ b/adk_8cpp__incl.md5 @@ -1 +1 @@ -44064901c7f950ea3e40c91d455ee2ad \ No newline at end of file +37a39de020a1edaf438fb10fe5d6d241 \ No newline at end of file diff --git a/adk_8cpp__incl.png b/adk_8cpp__incl.png index b1518db0..75cb1603 100644 Binary files a/adk_8cpp__incl.png and b/adk_8cpp__incl.png differ diff --git a/adk_8cpp_source.html b/adk_8cpp_source.html index 5324ba5f..9d070b03 100644 --- a/adk_8cpp_source.html +++ b/adk_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: adk.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + + - + - - + + + +
- +
@@ -103,7 +80,7 @@ This graph shows which files directly or indirectly include this file:
- +
@@ -150,7 +127,9 @@ Macros  

Macro Definition Documentation

- + +

◆ ADK_VID

+
@@ -160,11 +139,13 @@ Macros
-

Definition at line 25 of file adk.h.

+

Definition at line 25 of file adk.h.

- + +

◆ ADK_PID

+
@@ -174,11 +155,13 @@ Macros
-

Definition at line 26 of file adk.h.

+

Definition at line 26 of file adk.h.

- + +

◆ ADB_PID

+
@@ -188,11 +171,13 @@ Macros
-

Definition at line 27 of file adk.h.

+

Definition at line 27 of file adk.h.

- + +

◆ XOOM

+
@@ -202,11 +187,13 @@ Macros
-

Definition at line 29 of file adk.h.

+

Definition at line 29 of file adk.h.

- + +

◆ ADK_GETPROTO

+
@@ -216,11 +203,13 @@ Macros
-

Definition at line 35 of file adk.h.

+

Definition at line 35 of file adk.h.

- + +

◆ ADK_SENDSTR

+
@@ -230,11 +219,13 @@ Macros
-

Definition at line 36 of file adk.h.

+

Definition at line 36 of file adk.h.

- + +

◆ ADK_ACCSTART

+
@@ -244,11 +235,13 @@ Macros
-

Definition at line 37 of file adk.h.

+

Definition at line 37 of file adk.h.

- + +

◆ bmREQ_ADK_GET

+
@@ -258,11 +251,13 @@ Macros
-

Definition at line 39 of file adk.h.

+

Definition at line 39 of file adk.h.

- + +

◆ bmREQ_ADK_SEND

+
@@ -272,11 +267,13 @@ Macros
-

Definition at line 40 of file adk.h.

+

Definition at line 40 of file adk.h.

- + +

◆ ACCESSORY_STRING_MANUFACTURER

+
@@ -286,11 +283,13 @@ Macros
-

Definition at line 42 of file adk.h.

+

Definition at line 42 of file adk.h.

- + +

◆ ACCESSORY_STRING_MODEL

+
@@ -300,11 +299,13 @@ Macros
-

Definition at line 43 of file adk.h.

+

Definition at line 43 of file adk.h.

- + +

◆ ACCESSORY_STRING_DESCRIPTION

+
@@ -314,11 +315,13 @@ Macros
-

Definition at line 44 of file adk.h.

+

Definition at line 44 of file adk.h.

- + +

◆ ACCESSORY_STRING_VERSION

+
@@ -328,11 +331,13 @@ Macros
-

Definition at line 45 of file adk.h.

+

Definition at line 45 of file adk.h.

- + +

◆ ACCESSORY_STRING_URI

+
@@ -342,11 +347,13 @@ Macros
-

Definition at line 46 of file adk.h.

+

Definition at line 46 of file adk.h.

- + +

◆ ACCESSORY_STRING_SERIAL

+
@@ -356,11 +363,13 @@ Macros
-

Definition at line 47 of file adk.h.

+

Definition at line 47 of file adk.h.

- + +

◆ ADK_MAX_ENDPOINTS

+
@@ -370,7 +379,7 @@ Macros
-

Definition at line 49 of file adk.h.

+

Definition at line 49 of file adk.h.

@@ -379,7 +388,7 @@ Macros diff --git a/adk_8h__dep__incl.map b/adk_8h__dep__incl.map index 2c793cd8..0c6c30e2 100644 --- a/adk_8h__dep__incl.map +++ b/adk_8h__dep__incl.map @@ -1,3 +1,3 @@ - + diff --git a/adk_8h__dep__incl.md5 b/adk_8h__dep__incl.md5 index 721031bf..18dadafe 100644 --- a/adk_8h__dep__incl.md5 +++ b/adk_8h__dep__incl.md5 @@ -1 +1 @@ -e6d0d56c52d3fb6e81b76806cae456b2 \ No newline at end of file +a78ec97d5c424edcde2b6c3a1b1b88c2 \ No newline at end of file diff --git a/adk_8h__dep__incl.png b/adk_8h__dep__incl.png index b9ff26e3..ac19e5e4 100644 Binary files a/adk_8h__dep__incl.png and b/adk_8h__dep__incl.png differ diff --git a/adk_8h__incl.map b/adk_8h__incl.map index 89c23cc9..09d79817 100644 --- a/adk_8h__incl.map +++ b/adk_8h__incl.map @@ -1,3 +1,3 @@ - + diff --git a/adk_8h__incl.md5 b/adk_8h__incl.md5 index 78ab8688..383ea7d2 100644 --- a/adk_8h__incl.md5 +++ b/adk_8h__incl.md5 @@ -1 +1 @@ -6316d3a392a1c1e1b044b310cd053323 \ No newline at end of file +42c5ecb0a034afd3b6c9fa96def7afb2 \ No newline at end of file diff --git a/adk_8h__incl.png b/adk_8h__incl.png index 436fec59..a6f8b015 100644 Binary files a/adk_8h__incl.png and b/adk_8h__incl.png differ diff --git a/adk_8h_source.html b/adk_8h_source.html index 532a0c3a..623e084a 100644 --- a/adk_8h_source.html +++ b/adk_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: adk.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + + - + - - + + + + - + - - + + + +
avrpins.h
-Go to the documentation of this file.
1 /* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved.
2 
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; either version 2 of the License, or
6 (at your option) any later version.
7 
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12 
13 You should have received a copy of the GNU General Public License
14 along with this program; if not, write to the Free Software
15 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 
17 Contact information
18 -------------------
19 
20 Circuits At Home, LTD
21 Web : http://www.circuitsathome.com
22 e-mail : support@circuitsathome.com
23  */
24 
25 /* derived from Konstantin Chizhov's AVR port templates */
26 
27 #if !defined(_usb_h_) || defined(_avrpins_h_)
28 #error "Never include avrpins.h directly; include Usb.h instead"
29 #else
30 #define _avrpins_h_
31 
32 #if defined(__AVR__)
33 
34 // pointers are 16 bits on AVR
35 #define pgm_read_pointer(p) pgm_read_word(p)
36 
37 // Support for these boards needs to be manually activated in settings.h or in a makefile
38 #if !defined(BOARD_MEGA_ADK) && defined(__AVR_ATmega2560__) && (USE_UHS_MEGA_ADK || defined(ARDUINO_AVR_ADK))
39 #define BOARD_MEGA_ADK
40 #elif !defined(BOARD_BLACK_WIDDOW) && USE_UHS_BLACK_WIDDOW
41 #define BOARD_BLACK_WIDDOW
42 #endif
43 
44 #ifdef PORTA
45 #define USE_PORTA
46 #endif
47 #ifdef PORTB
48 #define USE_PORTB
49 #endif
50 #ifdef PORTC
51 #define USE_PORTC
52 #endif
53 #ifdef PORTD
54 #define USE_PORTD
55 #endif
56 #ifdef PORTE
57 #define USE_PORTE
58 #endif
59 #ifdef PORTF
60 #define USE_PORTF
61 #endif
62 #ifdef PORTG
63 #define USE_PORTG
64 #endif
65 #ifdef PORTH
66 #define USE_PORTH
67 #endif
68 #ifdef PORTJ
69 #define USE_PORTJ
70 #endif
71 #ifdef PORTK
72 #define USE_PORTK
73 #endif
74 #ifdef PORTL
75 #define USE_PORTL
76 #endif
77 #ifdef PORTQ
78 #define USE_PORTQ
79 #endif
80 #ifdef PORTR
81 #define USE_PORTR
82 #endif
83 
84 #ifdef TCCR0A
85 #define USE_TCCR0A
86 #endif
87 #ifdef TCCR1A
88 #define USE_TCCR1A
89 #endif
90 #ifdef TCCR2A
91 #define USE_TCCR2A
92 #endif
93 
94 //Port definitions for AtTiny, AtMega families.
95 
96 #define MAKE_PORT(portName, ddrName, pinName, className, ID) \
97  class className{\
98  public:\
99  typedef uint8_t DataT;\
100  public:\
101  static void Write(DataT value){portName = value;}\
102  static void ClearAndSet(DataT clearMask, DataT value){portName = (portName & ~clearMask) | value;}\
103  static DataT Read(){return portName;}\
104  static void DirWrite(DataT value){ddrName = value;}\
105  static DataT DirRead(){return ddrName;}\
106  static void Set(DataT value){portName |= value;}\
107  static void Clear(DataT value){portName &= ~value;}\
108  static void Toggle(DataT value){portName ^= value;}\
109  static void DirSet(DataT value){ddrName |= value;}\
110  static void DirClear(DataT value){ddrName &= ~value;}\
111  static void DirToggle(DataT value){ddrName ^= value;}\
112  static DataT PinRead(){return pinName;}\
113  enum{Id = ID};\
114  enum{Width=sizeof(DataT)*8};\
115  };
116 
117 // TCCR registers to set/clear Arduino PWM
118 #define MAKE_TCCR(TccrName, className) \
119  class className{\
120  public:\
121  typedef uint8_t DataT;\
122  public:\
123  static void Write(DataT value){TccrName = value;}\
124  static void ClearAndSet(DataT clearMask, DataT value){TccrName = (TccrName & ~clearMask) | value;}\
125  static DataT Read(){return TccrName;}\
126  static void Set(DataT value){TccrName |= value;}\
127  static void Clear(DataT value){TccrName &= ~value;}\
128  static void Toggle(DataT value){TccrName ^= value;}\
129  enum{Width=sizeof(DataT)*8};\
130  };
131 
132 #ifdef USE_PORTA
133 
134 MAKE_PORT(PORTA, DDRA, PINA, Porta, 'A')
135 #endif
136 #ifdef USE_PORTB
137 MAKE_PORT(PORTB, DDRB, PINB, Portb, 'B')
138 #endif
139 #ifdef USE_PORTC
140 MAKE_PORT(PORTC, DDRC, PINC, Portc, 'C')
141 #endif
142 #ifdef USE_PORTD
143 MAKE_PORT(PORTD, DDRD, PIND, Portd, 'D')
144 #endif
145 #ifdef USE_PORTE
146 MAKE_PORT(PORTE, DDRE, PINE, Porte, 'E')
147 #endif
148 #ifdef USE_PORTF
149 MAKE_PORT(PORTF, DDRF, PINF, Portf, 'F')
150 #endif
151 #ifdef USE_PORTG
152 MAKE_PORT(PORTG, DDRG, PING, Portg, 'G')
153 #endif
154 #ifdef USE_PORTH
155 MAKE_PORT(PORTH, DDRH, PINH, Porth, 'H')
156 #endif
157 #ifdef USE_PORTJ
158 MAKE_PORT(PORTJ, DDRJ, PINJ, Portj, 'J')
159 #endif
160 #ifdef USE_PORTK
161 MAKE_PORT(PORTK, DDRK, PINK, Portk, 'K')
162 #endif
163 #ifdef USE_PORTL
164 MAKE_PORT(PORTL, DDRL, PINL, Portl, 'L')
165 #endif
166 #ifdef USE_PORTQ
167 MAKE_PORT(PORTQ, DDRQ, PINQ, Portq, 'Q')
168 #endif
169 #ifdef USE_PORTR
170 MAKE_PORT(PORTR, DDRR, PINR, Portr, 'R')
171 #endif
172 
173 #ifdef USE_TCCR0A
174 MAKE_TCCR(TCCR0A, Tccr0a)
175 #endif
176 #ifdef USE_TCCR1A
177 MAKE_TCCR(TCCR1A, Tccr1a)
178 #endif
179 #ifdef USE_TCCR2A
180 MAKE_TCCR(TCCR2A, Tccr2a)
181 #endif
182 
183 // this class represents one pin in a IO port.
184 // It is fully static.
185 template<typename PORT, uint8_t PIN>
186 class TPin {
187  // BOOST_STATIC_ASSERT(PIN < PORT::Width);
188 public:
189  typedef PORT Port;
190 
191  enum {
192  Number = PIN
193  };
194 
195  static void Set() {
196  PORT::Set(1 << PIN);
197  }
198 
199  static void Set(uint8_t val) {
200  if(val)
201  Set();
202  else Clear();
203  }
204 
205  static void SetDir(uint8_t val) {
206  if(val)
207  SetDirWrite();
208  else SetDirRead();
209  }
210 
211  static void Clear() {
212  PORT::Clear(1 << PIN);
213  }
214 
215  static void Toggle() {
216  PORT::Toggle(1 << PIN);
217  }
218 
219  static void SetDirRead() {
220  PORT::DirClear(1 << PIN);
221  }
222 
223  static void SetDirWrite() {
224  PORT::DirSet(1 << PIN);
225  }
226 
227  static uint8_t IsSet() {
228  return PORT::PinRead() & (uint8_t)(1 << PIN);
229  }
230 
231  static void WaiteForSet() {
232  while(IsSet() == 0) {
233  }
234  }
235 
236  static void WaiteForClear() {
237  while(IsSet()) {
238  }
239  }
240 }; //class TPin...
241 
242 // this class represents one bit in TCCR port.
243 // used to set/clear TCCRx bits
244 // It is fully static.
245 
246 template<typename TCCR, uint8_t COM>
247 class TCom {
248  // BOOST_STATIC_ASSERT(PIN < PORT::Width);
249 public:
250  typedef TCCR Tccr;
251 
252  enum {
253  Com = COM
254  };
255 
256  static void Set() {
257  TCCR::Set(1 << COM);
258  }
259 
260  static void Clear() {
261  TCCR::Clear(1 << COM);
262  }
263 
264  static void Toggle() {
265  TCCR::Toggle(1 << COM);
266  }
267 }; //class TCom...
268 
269 //Short pin definitions
270 #ifdef USE_PORTA
271 typedef TPin<Porta, 0 > Pa0;
272 typedef TPin<Porta, 1 > Pa1;
273 typedef TPin<Porta, 2 > Pa2;
274 typedef TPin<Porta, 3 > Pa3;
275 typedef TPin<Porta, 4 > Pa4;
276 typedef TPin<Porta, 5 > Pa5;
277 typedef TPin<Porta, 6 > Pa6;
278 typedef TPin<Porta, 7 > Pa7;
279 #endif
280 
281 #ifdef USE_PORTB
282 typedef TPin<Portb, 0 > Pb0;
283 typedef TPin<Portb, 1 > Pb1;
284 typedef TPin<Portb, 2 > Pb2;
285 typedef TPin<Portb, 3 > Pb3;
286 typedef TPin<Portb, 4 > Pb4;
287 typedef TPin<Portb, 5 > Pb5;
288 typedef TPin<Portb, 6 > Pb6;
289 typedef TPin<Portb, 7 > Pb7;
290 #endif
291 
292 #ifdef USE_PORTC
293 typedef TPin<Portc, 0 > Pc0;
294 typedef TPin<Portc, 1 > Pc1;
295 typedef TPin<Portc, 2 > Pc2;
296 typedef TPin<Portc, 3 > Pc3;
297 typedef TPin<Portc, 4 > Pc4;
298 typedef TPin<Portc, 5 > Pc5;
299 typedef TPin<Portc, 6 > Pc6;
300 typedef TPin<Portc, 7 > Pc7;
301 #endif
302 
303 #ifdef USE_PORTD
304 typedef TPin<Portd, 0 > Pd0;
305 typedef TPin<Portd, 1 > Pd1;
306 typedef TPin<Portd, 2 > Pd2;
307 typedef TPin<Portd, 3 > Pd3;
308 typedef TPin<Portd, 4 > Pd4;
309 typedef TPin<Portd, 5 > Pd5;
310 typedef TPin<Portd, 6 > Pd6;
311 typedef TPin<Portd, 7 > Pd7;
312 #endif
313 
314 #ifdef USE_PORTE
315 typedef TPin<Porte, 0 > Pe0;
316 typedef TPin<Porte, 1 > Pe1;
317 typedef TPin<Porte, 2 > Pe2;
318 typedef TPin<Porte, 3 > Pe3;
319 typedef TPin<Porte, 4 > Pe4;
320 typedef TPin<Porte, 5 > Pe5;
321 typedef TPin<Porte, 6 > Pe6;
322 typedef TPin<Porte, 7 > Pe7;
323 #endif
324 
325 #ifdef USE_PORTF
326 typedef TPin<Portf, 0 > Pf0;
327 typedef TPin<Portf, 1 > Pf1;
328 typedef TPin<Portf, 2 > Pf2;
329 typedef TPin<Portf, 3 > Pf3;
330 typedef TPin<Portf, 4 > Pf4;
331 typedef TPin<Portf, 5 > Pf5;
332 typedef TPin<Portf, 6 > Pf6;
333 typedef TPin<Portf, 7 > Pf7;
334 #endif
335 
336 #ifdef USE_PORTG
337 typedef TPin<Portg, 0 > Pg0;
338 typedef TPin<Portg, 1 > Pg1;
339 typedef TPin<Portg, 2 > Pg2;
340 typedef TPin<Portg, 3 > Pg3;
341 typedef TPin<Portg, 4 > Pg4;
342 typedef TPin<Portg, 5 > Pg5;
343 typedef TPin<Portg, 6 > Pg6;
344 typedef TPin<Portg, 7 > Pg7;
345 #endif
346 
347 #ifdef USE_PORTH
348 typedef TPin<Porth, 0 > Ph0;
349 typedef TPin<Porth, 1 > Ph1;
350 typedef TPin<Porth, 2 > Ph2;
351 typedef TPin<Porth, 3 > Ph3;
352 typedef TPin<Porth, 4 > Ph4;
353 typedef TPin<Porth, 5 > Ph5;
354 typedef TPin<Porth, 6 > Ph6;
355 typedef TPin<Porth, 7 > Ph7;
356 #endif
357 
358 #ifdef USE_PORTJ
359 typedef TPin<Portj, 0 > Pj0;
360 typedef TPin<Portj, 1 > Pj1;
361 typedef TPin<Portj, 2 > Pj2;
362 typedef TPin<Portj, 3 > Pj3;
363 typedef TPin<Portj, 4 > Pj4;
364 typedef TPin<Portj, 5 > Pj5;
365 typedef TPin<Portj, 6 > Pj6;
366 typedef TPin<Portj, 7 > Pj7;
367 #endif
368 
369 #ifdef USE_PORTK
370 typedef TPin<Portk, 0 > Pk0;
371 typedef TPin<Portk, 1 > Pk1;
372 typedef TPin<Portk, 2 > Pk2;
373 typedef TPin<Portk, 3 > Pk3;
374 typedef TPin<Portk, 4 > Pk4;
375 typedef TPin<Portk, 5 > Pk5;
376 typedef TPin<Portk, 6 > Pk6;
377 typedef TPin<Portk, 7 > Pk7;
378 #endif
379 
380 #ifdef USE_PORTL
381 typedef TPin<Portl, 0 > Pl0;
382 typedef TPin<Portl, 1 > Pl1;
383 typedef TPin<Portl, 2 > Pl2;
384 typedef TPin<Portl, 3 > Pl3;
385 typedef TPin<Portl, 4 > Pl4;
386 typedef TPin<Portl, 5 > Pl5;
387 typedef TPin<Portl, 6 > Pl6;
388 typedef TPin<Portl, 7 > Pl7;
389 #endif
390 
391 #ifdef USE_PORTQ
392 typedef TPin<Portq, 0 > Pq0;
393 typedef TPin<Portq, 1 > Pq1;
394 typedef TPin<Portq, 2 > Pq2;
395 typedef TPin<Portq, 3 > Pq3;
396 typedef TPin<Portq, 4 > Pq4;
397 typedef TPin<Portq, 5 > Pq5;
398 typedef TPin<Portq, 6 > Pq6;
399 typedef TPin<Portq, 7 > Pq7;
400 #endif
401 
402 #ifdef USE_PORTR
403 typedef TPin<Portr, 0 > Pr0;
404 typedef TPin<Portr, 1 > Pr1;
405 typedef TPin<Portr, 2 > Pr2;
406 typedef TPin<Portr, 3 > Pr3;
407 typedef TPin<Portr, 4 > Pr4;
408 typedef TPin<Portr, 5 > Pr5;
409 typedef TPin<Portr, 6 > Pr6;
410 typedef TPin<Portr, 7 > Pr7;
411 #endif
412 
413 #ifdef USE_TCCR0A
414 typedef TCom<Tccr0a, COM0A1> Tc0a; //P6
415 typedef TCom<Tccr0a, COM0B1> Tc0b; //P5
416 #endif
417 
418 #ifdef USE_TCCR1A
419 typedef TCom<Tccr1a, COM1A1> Tc1a; //P9
420 typedef TCom<Tccr1a, COM1B1> Tc1b; //P10
421 #endif
422 
423 #ifdef USE_TCCR2A
424 typedef TCom<Tccr2a, COM2A1> Tc2a; //P11
425 typedef TCom<Tccr2a, COM2B1> Tc2b; //P3
426 #endif
427 
428 template<typename Tp_pin, typename Tc_bit>
429 class Tp_Tc {
430 public:
431 
432  static void SetDir(uint8_t val) {
433  if(val)
434  SetDirWrite();
435  else SetDirRead();
436  }
437 
438  static void SetDirRead() {
439  Tp_pin::SetDirRead(); //set pin direction
440  Tc_bit::Clear(); //disconnect pin from PWM
441  }
442 
443  static void SetDirWrite() {
444  Tp_pin::SetDirWrite();
445  Tc_bit::Clear();
446  }
447 };
448 
449 /* pin definitions for cases where it's necessary to clear compare output mode bits */
450 
451 //typedef Tp_Tc<Pd3, Tc2b> P3; //Arduino pin 3
452 //typedef Tp_Tc<Pd5, Tc0b> P5; //Arduino pin 5
453 //typedef Tp_Tc<Pd6, Tc0a> P6; //Arduino pin 6
454 //typedef Tp_Tc<Pb1, Tc1a> P9; //Arduino pin 9
455 //typedef Tp_Tc<Pb2, Tc1b> P10; //Arduino pin 10
456 //typedef Tp_Tc<Pb3, Tc2a> P11; //Arduino pin 11
457 
458 /* Arduino pin definitions */
459 #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
460 // "Mega" Arduino pin numbers
461 
462 #define P0 Pe0
463 #define P1 Pe1
464 #define P2 Pe4
465 #define P3 Pe5
466 #define P4 Pg5
467 #define P5 Pe3
468 #define P6 Ph3
469 #define P7 Ph4
470 
471 #define P8 Ph5
472 #define P9 Ph6
473 #define P10 Pb4
474 #define P11 Pb5
475 #define P12 Pb6
476 #define P13 Pb7
477 
478 #define P14 Pj1
479 #define P15 Pj0
480 #define P16 Ph1
481 #define P17 Ph0
482 #define P18 Pd3
483 #define P19 Pd2
484 #define P20 Pd1
485 #define P21 Pd0
486 
487 #define P22 Pa0
488 #define P23 Pa1
489 #define P24 Pa2
490 #define P25 Pa3
491 #define P26 Pa4
492 #define P27 Pa5
493 #define P28 Pa6
494 #define P29 Pa7
495 #define P30 Pc7
496 #define P31 Pc6
497 #define P32 Pc5
498 #define P33 Pc4
499 #define P34 Pc3
500 #define P35 Pc2
501 #define P36 Pc1
502 #define P37 Pc0
503 
504 #define P38 Pd7
505 #define P39 Pg2
506 #define P40 Pg1
507 #define P41 Pg0
508 #define P42 Pl7
509 #define P43 Pl6
510 #define P44 Pl5
511 #define P45 Pl4
512 #define P46 Pl3
513 #define P47 Pl2
514 #define P48 Pl1
515 #define P49 Pl0
516 #define P50 Pb3
517 #define P51 Pb2
518 #define P52 Pb1
519 #define P53 Pb0
520 
521 #ifdef BOARD_MEGA_ADK // These pins are not broken out on the Arduino ADK
522 #define P54 Pe6 // INT on Arduino ADK
523 #define P55 Pj2 // MAX_RESET on Arduino ADK
524 #endif
525 
526 // "Mega" pin numbers
527 
528 #elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)
529 // "Classic" Arduino pin numbers
530 
531 #define P0 Pd0
532 #define P1 Pd1
533 #define P2 Pd2
534 #define P3 Pd3
535 #define P4 Pd4
536 #define P5 Pd5
537 #define P6 Pd6
538 #define P7 Pd7
539 
540 #define P8 Pb0
541 #define P9 Pb1
542 #define P10 Pb2
543 #define P11 Pb3
544 #define P12 Pb4
545 #define P13 Pb5
546 
547 #define P14 Pc0
548 #define P15 Pc1
549 #define P16 Pc2
550 #define P17 Pc3
551 #define P18 Pc4
552 #define P19 Pc5
553 
554 // "Classic" Arduino pin numbers
555 
556 #elif defined(CORE_TEENSY) && defined(__AVR_ATmega32U4__)
557 // Teensy 2.0 pin numbers
558 // http://www.pjrc.com/teensy/pinout.html
559 #define P0 Pb0
560 #define P1 Pb1
561 #define P2 Pb2
562 #define P3 Pb3
563 #define P4 Pb7
564 #define P5 Pd0
565 #define P6 Pd1
566 #define P7 Pd2
567 #define P8 Pd3
568 #define P9 Pc6
569 #define P10 Pc7
570 #define P11 Pd6
571 #define P12 Pd7
572 #define P13 Pb4
573 #define P14 Pb5
574 #define P15 Pb6
575 #define P16 Pf7
576 #define P17 Pf6
577 #define P18 Pf5
578 #define P19 Pf4
579 #define P20 Pf1
580 #define P21 Pf0
581 #define P22 Pd4
582 #define P23 Pd5
583 #define P24 Pe6
584 // Teensy 2.0
585 
586 #elif defined(__AVR_ATmega32U4__)
587 // Arduino Leonardo pin numbers
588 
589 #define P0 Pd2 // D0 - PD2
590 #define P1 Pd3 // D1 - PD3
591 #define P2 Pd1 // D2 - PD1
592 #define P3 Pd0 // D3 - PD0
593 #define P4 Pd4 // D4 - PD4
594 #define P5 Pc6 // D5 - PC6
595 #define P6 Pd7 // D6 - PD7
596 #define P7 Pe6 // D7 - PE6
597 
598 #define P8 Pb4 // D8 - PB4
599 #define P9 Pb5 // D9 - PB5
600 #define P10 Pb6 // D10 - PB6
601 #define P11 Pb7 // D11 - PB7
602 #define P12 Pd6 // D12 - PD6
603 #define P13 Pc7 // D13 - PC7
604 
605 #define P14 Pb3 // D14 - MISO - PB3
606 #define P15 Pb1 // D15 - SCK - PB1
607 #define P16 Pb2 // D16 - MOSI - PB2
608 #define P17 Pb0 // D17 - SS - PB0
609 
610 #define P18 Pf7 // D18 - A0 - PF7
611 #define P19 Pf6 // D19 - A1 - PF6
612 #define P20 Pf5 // D20 - A2 - PF5
613 #define P21 Pf4 // D21 - A3 - PF4
614 #define P22 Pf1 // D22 - A4 - PF1
615 #define P23 Pf0 // D23 - A5 - PF0
616 
617 #define P24 Pd4 // D24 / D4 - A6 - PD4
618 #define P25 Pd7 // D25 / D6 - A7 - PD7
619 #define P26 Pb4 // D26 / D8 - A8 - PB4
620 #define P27 Pb5 // D27 / D9 - A9 - PB5
621 #define P28 Pb6 // D28 / D10 - A10 - PB6
622 #define P29 Pd6 // D29 / D12 - A11 - PD6
623 
624 // Arduino Leonardo pin numbers
625 
626 #elif defined(CORE_TEENSY) && (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__))
627 // Teensy++ 1.0 and 2.0 pin numbers
628 // http://www.pjrc.com/teensy/pinout.html
629 #define P0 Pd0
630 #define P1 Pd1
631 #define P2 Pd2
632 #define P3 Pd3
633 #define P4 Pd4
634 #define P5 Pd5
635 #define P6 Pd6
636 #define P7 Pd7
637 #define P8 Pe0
638 #define P9 Pe1
639 #define P10 Pc0
640 #define P11 Pc1
641 #define P12 Pc2
642 #define P13 Pc3
643 #define P14 Pc4
644 #define P15 Pc5
645 #define P16 Pc6
646 #define P17 Pc7
647 #define P18 Pe6
648 #define P19 Pe7
649 #define P20 Pb0
650 #define P21 Pb1
651 #define P22 Pb2
652 #define P23 Pb3
653 #define P24 Pb4
654 #define P25 Pb5
655 #define P26 Pb6
656 #define P27 Pb7
657 #define P28 Pa0
658 #define P29 Pa1
659 #define P30 Pa2
660 #define P31 Pa3
661 #define P32 Pa4
662 #define P33 Pa5
663 #define P34 Pa6
664 #define P35 Pa7
665 #define P36 Pe4
666 #define P37 Pe5
667 #define P38 Pf0
668 #define P39 Pf1
669 #define P40 Pf2
670 #define P41 Pf3
671 #define P42 Pf4
672 #define P43 Pf5
673 #define P44 Pf6
674 #define P45 Pf7
675 // Teensy++ 1.0 and 2.0
676 
677 #elif defined(ARDUINO_AVR_BALANDUINO) && (defined(__AVR_ATmega644__) || defined(__AVR_ATmega1284P__))
678 // Balanduino pin numbers
679 // http://balanduino.net/
680 #define P0 Pd0 /* 0 - PD0 */
681 #define P1 Pd1 /* 1 - PD1 */
682 
683 #if BALANDUINO_REVISION < 13
684  #define P2 Pb2 /* 2 - PB2 */
685  #define P3 Pd6 /* 3 - PD6 */
686  #define P4 Pd7 /* 4 - PD7 */
687  #define P5 Pb3 /* 5 - PB3 */
688 #else
689  #define P2 Pd2 /* 2 - PD2 */
690  #define P3 Pd3 /* 3 - PD3 */
691  #define P4 Pd6 /* 4 - PD6 */
692  #define P5 Pd7 /* 5 - PD7 */
693 #endif
694 
695 #define P6 Pb4 /* 6 - PB4 */
696 #define P7 Pa0 /* 7 - PA0 */
697 #define P8 Pa1 /* 8 - PA1 */
698 #define P9 Pa2 /* 9 - PA2 */
699 #define P10 Pa3 /* 10 - PA3 */
700 #define P11 Pa4 /* 11 - PA4 */
701 #define P12 Pa5 /* 12 - PA5 */
702 #define P13 Pc1 /* 13 - PC1 */
703 #define P14 Pc0 /* 14 - PC0 */
704 
705 #if BALANDUINO_REVISION < 13
706  #define P15 Pd2 /* 15 - PD2 */
707  #define P16 Pd3 /* 16 - PD3 */
708 #else
709  #define P15 Pb2 /* 15 - PB2 */
710  #define P16 Pb3 /* 16 - PB2 */
711 #endif
712 
713 #define P17 Pd4 /* 17 - PD4 */
714 #define P18 Pd5 /* 18 - PD5 */
715 #define P19 Pc2 /* 19 - PC2 */
716 #define P20 Pc3 /* 20 - PC3 */
717 #define P21 Pc4 /* 21 - PC4 */
718 #define P22 Pc5 /* 22 - PC5 */
719 #define P23 Pc6 /* 23 - PC6 */
720 #define P24 Pc7 /* 24 - PC7 */
721 #define P25 Pb0 /* 25 - PB0 */
722 #define P26 Pb1 /* 26 - PB1 */
723 #define P27 Pb5 /* 27 - PB5 */
724 #define P28 Pb6 /* 28 - PB6 */
725 #define P29 Pb7 /* 29 - PB7 */
726 #define P30 Pa6 /* 30 - PA6 */
727 #define P31 Pa7 /* 31 - PA7 */
728 // Balanduino
729 
730 #elif defined(ARDUINO_AVR_UNO_PRO) && defined(__AVR_ATmega1284P__)
731 // UNO*Pro pin numbers
732 // Homepage: http://www.hobbytronics.co.uk/arduino-uno-pro
733 // Pin Reference: http://www.hobbytronics.co.uk/download/uno_pro/pins_arduino.h
734 #define P0 Pd0
735 #define P1 Pd1
736 #define P2 Pb2
737 #define P3 Pb3
738 #define P4 Pb0
739 #define P5 Pb1
740 #define P6 Pd2
741 #define P7 Pd3
742 #define P8 Pd5
743 #define P9 Pd6
744 #define P10 Pb4
745 #define P11 Pb5
746 #define P12 Pb6
747 #define P13 Pb7
748 #define P14 Pa7
749 #define P15 Pa6
750 #define P16 Pa5
751 #define P17 Pa4
752 #define P18 Pa3
753 #define P19 Pa2
754 #define P20 Pa1
755 #define P21 Pa0
756 #define P22 Pc0
757 #define P23 Pc1
758 #define P24 Pc2
759 #define P25 Pc3
760 #define P26 Pc4
761 #define P27 Pc5
762 #define P28 Pc6
763 #define P29 Pc7
764 #define P30 Pd4
765 #define P31 Pd7
766 // UNO*Pro
767 
768 #elif defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)
769 // Sanguino pin numbers
770 // Homepage: http://sanguino.cc/hardware
771 // Hardware add-on: https://github.com/Lauszus/Sanguino
772 #define P0 Pb0
773 #define P1 Pb1
774 #define P2 Pb2
775 #define P3 Pb3
776 #define P4 Pb4
777 #define P5 Pb5
778 #define P6 Pb6
779 #define P7 Pb7
780 #define P8 Pd0
781 #define P9 Pd1
782 #define P10 Pd2
783 #define P11 Pd3
784 #define P12 Pd4
785 #define P13 Pd5
786 #define P14 Pd6
787 #define P15 Pd7
788 #define P16 Pc0
789 #define P17 Pc1
790 #define P18 Pc2
791 #define P19 Pc3
792 #define P20 Pc4
793 #define P21 Pc5
794 #define P22 Pc6
795 #define P23 Pc7
796 #define P24 Pa0
797 #define P25 Pa1
798 #define P26 Pa2
799 #define P27 Pa3
800 #define P28 Pa4
801 #define P29 Pa5
802 #define P30 Pa6
803 #define P31 Pa7
804 // Sanguino
805 
806 #else
807 #error "Please define board in avrpins.h"
808 
809 #endif // Arduino pin definitions
810 
811 #elif defined(__arm__)
812 
813 // pointers are 32 bits on ARM
814 #define pgm_read_pointer(p) pgm_read_dword(p)
815 
816 #if defined(CORE_TEENSY) && (defined(__MK20DX128__) || defined(__MK20DX256__) || defined(__MK64FX512__) || defined(__MK66FX1M0__))
817 
818 #include "core_pins.h"
819 #include "avr_emulation.h"
820 
821 #define GPIO_BITBAND_ADDR(reg, bit) (((uint32_t)&(reg) - 0x40000000) * 32 + (bit) * 4 + 0x42000000)
822 #define GPIO_BITBAND_PTR(reg, bit) ((uint8_t *)GPIO_BITBAND_ADDR((reg), (bit)))
823 
824 #define MAKE_PIN(className, baseReg, pinNum, configReg) \
825 class className { \
826 public: \
827  static void Set() { \
828  *GPIO_BITBAND_PTR(baseReg, pinNum) = 1; \
829  } \
830  static void Clear() { \
831  *GPIO_BITBAND_PTR(baseReg, pinNum) = 0; \
832  } \
833  static void SetDirRead() { \
834  configReg = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); \
835  *(GPIO_BITBAND_PTR(baseReg, pinNum) + 640) = 0; \
836  } \
837  static void SetDirWrite() { \
838  configReg = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); \
839  *(GPIO_BITBAND_PTR(baseReg, pinNum) + 640) = 1; \
840  } \
841  static uint8_t IsSet() { \
842  return *(GPIO_BITBAND_PTR(baseReg, pinNum) + 512); \
843  } \
844 };
845 
846 MAKE_PIN(P0, CORE_PIN0_PORTREG, CORE_PIN0_BIT, CORE_PIN0_CONFIG);
847 MAKE_PIN(P1, CORE_PIN1_PORTREG, CORE_PIN1_BIT, CORE_PIN1_CONFIG);
848 MAKE_PIN(P2, CORE_PIN2_PORTREG, CORE_PIN2_BIT, CORE_PIN2_CONFIG);
849 MAKE_PIN(P3, CORE_PIN3_PORTREG, CORE_PIN3_BIT, CORE_PIN3_CONFIG);
850 MAKE_PIN(P4, CORE_PIN4_PORTREG, CORE_PIN4_BIT, CORE_PIN4_CONFIG);
851 MAKE_PIN(P5, CORE_PIN5_PORTREG, CORE_PIN5_BIT, CORE_PIN5_CONFIG);
852 MAKE_PIN(P6, CORE_PIN6_PORTREG, CORE_PIN6_BIT, CORE_PIN6_CONFIG);
853 MAKE_PIN(P7, CORE_PIN7_PORTREG, CORE_PIN7_BIT, CORE_PIN7_CONFIG);
854 MAKE_PIN(P8, CORE_PIN8_PORTREG, CORE_PIN8_BIT, CORE_PIN8_CONFIG);
855 MAKE_PIN(P9, CORE_PIN9_PORTREG, CORE_PIN9_BIT, CORE_PIN9_CONFIG);
856 MAKE_PIN(P10, CORE_PIN10_PORTREG, CORE_PIN10_BIT, CORE_PIN10_CONFIG);
857 MAKE_PIN(P11, CORE_PIN11_PORTREG, CORE_PIN11_BIT, CORE_PIN11_CONFIG);
858 MAKE_PIN(P12, CORE_PIN12_PORTREG, CORE_PIN12_BIT, CORE_PIN12_CONFIG);
859 MAKE_PIN(P13, CORE_PIN13_PORTREG, CORE_PIN13_BIT, CORE_PIN13_CONFIG);
860 MAKE_PIN(P14, CORE_PIN14_PORTREG, CORE_PIN14_BIT, CORE_PIN14_CONFIG);
861 MAKE_PIN(P15, CORE_PIN15_PORTREG, CORE_PIN15_BIT, CORE_PIN15_CONFIG);
862 MAKE_PIN(P16, CORE_PIN16_PORTREG, CORE_PIN16_BIT, CORE_PIN16_CONFIG);
863 MAKE_PIN(P17, CORE_PIN17_PORTREG, CORE_PIN17_BIT, CORE_PIN17_CONFIG);
864 MAKE_PIN(P18, CORE_PIN18_PORTREG, CORE_PIN18_BIT, CORE_PIN18_CONFIG);
865 MAKE_PIN(P19, CORE_PIN19_PORTREG, CORE_PIN19_BIT, CORE_PIN19_CONFIG);
866 MAKE_PIN(P20, CORE_PIN20_PORTREG, CORE_PIN20_BIT, CORE_PIN20_CONFIG);
867 MAKE_PIN(P21, CORE_PIN21_PORTREG, CORE_PIN21_BIT, CORE_PIN21_CONFIG);
868 MAKE_PIN(P22, CORE_PIN22_PORTREG, CORE_PIN22_BIT, CORE_PIN22_CONFIG);
869 MAKE_PIN(P23, CORE_PIN23_PORTREG, CORE_PIN23_BIT, CORE_PIN23_CONFIG);
870 MAKE_PIN(P24, CORE_PIN24_PORTREG, CORE_PIN24_BIT, CORE_PIN24_CONFIG);
871 MAKE_PIN(P25, CORE_PIN25_PORTREG, CORE_PIN25_BIT, CORE_PIN25_CONFIG);
872 MAKE_PIN(P26, CORE_PIN26_PORTREG, CORE_PIN26_BIT, CORE_PIN26_CONFIG);
873 MAKE_PIN(P27, CORE_PIN27_PORTREG, CORE_PIN27_BIT, CORE_PIN27_CONFIG);
874 MAKE_PIN(P28, CORE_PIN28_PORTREG, CORE_PIN28_BIT, CORE_PIN28_CONFIG);
875 MAKE_PIN(P29, CORE_PIN29_PORTREG, CORE_PIN29_BIT, CORE_PIN29_CONFIG);
876 MAKE_PIN(P30, CORE_PIN30_PORTREG, CORE_PIN30_BIT, CORE_PIN30_CONFIG);
877 MAKE_PIN(P31, CORE_PIN31_PORTREG, CORE_PIN31_BIT, CORE_PIN31_CONFIG);
878 MAKE_PIN(P32, CORE_PIN32_PORTREG, CORE_PIN32_BIT, CORE_PIN32_CONFIG);
879 MAKE_PIN(P33, CORE_PIN33_PORTREG, CORE_PIN33_BIT, CORE_PIN33_CONFIG);
880 #if defined(__MK64FX512__) || defined(__MK66FX1M0__)
881 MAKE_PIN(P34, CORE_PIN34_PORTREG, CORE_PIN34_BIT, CORE_PIN34_CONFIG);
882 MAKE_PIN(P35, CORE_PIN35_PORTREG, CORE_PIN35_BIT, CORE_PIN35_CONFIG);
883 MAKE_PIN(P36, CORE_PIN36_PORTREG, CORE_PIN36_BIT, CORE_PIN36_CONFIG);
884 MAKE_PIN(P37, CORE_PIN37_PORTREG, CORE_PIN37_BIT, CORE_PIN37_CONFIG);
885 MAKE_PIN(P38, CORE_PIN38_PORTREG, CORE_PIN38_BIT, CORE_PIN38_CONFIG);
886 MAKE_PIN(P39, CORE_PIN39_PORTREG, CORE_PIN39_BIT, CORE_PIN39_CONFIG);
887 MAKE_PIN(P40, CORE_PIN40_PORTREG, CORE_PIN40_BIT, CORE_PIN40_CONFIG);
888 MAKE_PIN(P41, CORE_PIN41_PORTREG, CORE_PIN41_BIT, CORE_PIN41_CONFIG);
889 MAKE_PIN(P42, CORE_PIN42_PORTREG, CORE_PIN42_BIT, CORE_PIN42_CONFIG);
890 MAKE_PIN(P43, CORE_PIN43_PORTREG, CORE_PIN43_BIT, CORE_PIN43_CONFIG);
891 MAKE_PIN(P44, CORE_PIN44_PORTREG, CORE_PIN44_BIT, CORE_PIN44_CONFIG);
892 MAKE_PIN(P45, CORE_PIN45_PORTREG, CORE_PIN45_BIT, CORE_PIN45_CONFIG);
893 MAKE_PIN(P46, CORE_PIN46_PORTREG, CORE_PIN46_BIT, CORE_PIN46_CONFIG);
894 MAKE_PIN(P47, CORE_PIN47_PORTREG, CORE_PIN47_BIT, CORE_PIN47_CONFIG);
895 MAKE_PIN(P48, CORE_PIN48_PORTREG, CORE_PIN48_BIT, CORE_PIN48_CONFIG);
896 MAKE_PIN(P49, CORE_PIN49_PORTREG, CORE_PIN49_BIT, CORE_PIN49_CONFIG);
897 MAKE_PIN(P50, CORE_PIN50_PORTREG, CORE_PIN50_BIT, CORE_PIN50_CONFIG);
898 MAKE_PIN(P51, CORE_PIN51_PORTREG, CORE_PIN51_BIT, CORE_PIN51_CONFIG);
899 MAKE_PIN(P52, CORE_PIN52_PORTREG, CORE_PIN52_BIT, CORE_PIN52_CONFIG);
900 MAKE_PIN(P53, CORE_PIN53_PORTREG, CORE_PIN53_BIT, CORE_PIN53_CONFIG);
901 MAKE_PIN(P54, CORE_PIN54_PORTREG, CORE_PIN54_BIT, CORE_PIN54_CONFIG);
902 MAKE_PIN(P55, CORE_PIN55_PORTREG, CORE_PIN55_BIT, CORE_PIN55_CONFIG);
903 MAKE_PIN(P56, CORE_PIN56_PORTREG, CORE_PIN56_BIT, CORE_PIN56_CONFIG);
904 MAKE_PIN(P57, CORE_PIN57_PORTREG, CORE_PIN57_BIT, CORE_PIN57_CONFIG);
905 MAKE_PIN(P58, CORE_PIN58_PORTREG, CORE_PIN58_BIT, CORE_PIN58_CONFIG);
906 MAKE_PIN(P59, CORE_PIN59_PORTREG, CORE_PIN59_BIT, CORE_PIN59_CONFIG);
907 MAKE_PIN(P60, CORE_PIN60_PORTREG, CORE_PIN60_BIT, CORE_PIN60_CONFIG);
908 MAKE_PIN(P61, CORE_PIN61_PORTREG, CORE_PIN61_BIT, CORE_PIN61_CONFIG);
909 MAKE_PIN(P62, CORE_PIN62_PORTREG, CORE_PIN62_BIT, CORE_PIN62_CONFIG);
910 MAKE_PIN(P63, CORE_PIN63_PORTREG, CORE_PIN63_BIT, CORE_PIN63_CONFIG);
911 #endif
912 
913 #undef MAKE_PIN
914 
915 #elif defined(CORE_TEENSY) && (defined(__MKL26Z64__))
916 
917 // we could get lower level by making these macros work properly.
918 // for now just use the semi optimised version, it costs a lookup in the pin pgm table per op
919 // but for now it will do.
920 //#define GPIO_BITBAND_ADDR(reg, bit) (((volatile uint8_t *)&(reg) + ((bit) >> 3)))
921 //#define GPIO_BITBAND_MASK(reg, bit) (1<<((bit) & 7))
922 //#define GPIO_BITBAND_PTR(reg, bit) ((volatile uint8_t *)GPIO_BITBAND_ADDR((reg), (bit)))
923 
924 #include "core_pins.h"
925 #include "avr_emulation.h"
926 
927 #define MAKE_PIN(className, baseReg, pinNum, configReg) \
928 class className { \
929 public: \
930  static void Set() { \
931  *portSetRegister(pinNum) = digitalPinToBitMask(pinNum); \
932  } \
933  static void Clear() { \
934  *portClearRegister(pinNum) = digitalPinToBitMask(pinNum); \
935  } \
936  static void SetDirRead() { \
937  configReg = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); \
938  *portModeRegister(pinNum) &= ~digitalPinToBitMask(pinNum); \
939  } \
940  static void SetDirWrite() { \
941  configReg = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); \
942  *portModeRegister(pinNum) |= digitalPinToBitMask(pinNum); \
943  } \
944  static uint8_t IsSet() { \
945  return (*portInputRegister(pinNum) & digitalPinToBitMask(pinNum)) ? 1 : 0; \
946  } \
947 };
948 
949 MAKE_PIN(P0, CORE_PIN0_PORTREG, 0, CORE_PIN0_CONFIG);
950 MAKE_PIN(P1, CORE_PIN1_PORTREG, 1, CORE_PIN1_CONFIG);
951 MAKE_PIN(P2, CORE_PIN2_PORTREG, 2, CORE_PIN2_CONFIG);
952 MAKE_PIN(P3, CORE_PIN3_PORTREG, 3, CORE_PIN3_CONFIG);
953 MAKE_PIN(P4, CORE_PIN4_PORTREG, 4, CORE_PIN4_CONFIG);
954 MAKE_PIN(P5, CORE_PIN5_PORTREG, 5, CORE_PIN5_CONFIG);
955 MAKE_PIN(P6, CORE_PIN6_PORTREG, 6, CORE_PIN6_CONFIG);
956 MAKE_PIN(P7, CORE_PIN7_PORTREG, 7, CORE_PIN7_CONFIG);
957 MAKE_PIN(P8, CORE_PIN8_PORTREG, 8, CORE_PIN8_CONFIG);
958 MAKE_PIN(P9, CORE_PIN9_PORTREG, 9, CORE_PIN9_CONFIG);
959 MAKE_PIN(P10, CORE_PIN10_PORTREG, 10, CORE_PIN10_CONFIG);
960 MAKE_PIN(P11, CORE_PIN11_PORTREG, 11, CORE_PIN11_CONFIG);
961 MAKE_PIN(P12, CORE_PIN12_PORTREG, 12, CORE_PIN12_CONFIG);
962 MAKE_PIN(P13, CORE_PIN13_PORTREG, 13, CORE_PIN13_CONFIG);
963 MAKE_PIN(P14, CORE_PIN14_PORTREG, 14, CORE_PIN14_CONFIG);
964 MAKE_PIN(P15, CORE_PIN15_PORTREG, 15, CORE_PIN15_CONFIG);
965 MAKE_PIN(P16, CORE_PIN16_PORTREG, 16, CORE_PIN16_CONFIG);
966 MAKE_PIN(P17, CORE_PIN17_PORTREG, 17, CORE_PIN17_CONFIG);
967 MAKE_PIN(P18, CORE_PIN18_PORTREG, 18, CORE_PIN18_CONFIG);
968 MAKE_PIN(P19, CORE_PIN19_PORTREG, 19, CORE_PIN19_CONFIG);
969 MAKE_PIN(P20, CORE_PIN20_PORTREG, 20, CORE_PIN20_CONFIG);
970 MAKE_PIN(P21, CORE_PIN21_PORTREG, 21, CORE_PIN21_CONFIG);
971 MAKE_PIN(P22, CORE_PIN22_PORTREG, 22, CORE_PIN22_CONFIG);
972 MAKE_PIN(P23, CORE_PIN23_PORTREG, 23, CORE_PIN23_CONFIG);
973 MAKE_PIN(P24, CORE_PIN24_PORTREG, 24, CORE_PIN24_CONFIG);
974 MAKE_PIN(P25, CORE_PIN25_PORTREG, 25, CORE_PIN25_CONFIG);
975 MAKE_PIN(P26, CORE_PIN26_PORTREG, 26, CORE_PIN26_CONFIG);
976 
977 #undef MAKE_PIN
978 
979 #elif defined(ARDUINO_SAM_DUE) && defined(__SAM3X8E__)
980 
981 // SetDirRead:
982 // Disable interrupts
983 // Disable the pull up resistor
984 // Set to INPUT
985 // Enable PIO
986 
987 // SetDirWrite:
988 // Disable interrupts
989 // Disable the pull up resistor
990 // Set to OUTPUT
991 // Enable PIO
992 
993 #define MAKE_PIN(className, pio, pinMask) \
994 class className { \
995 public: \
996  static void Set() { \
997  pio->PIO_SODR = pinMask; \
998  } \
999  static void Clear() { \
1000  pio->PIO_CODR = pinMask; \
1001  } \
1002  static void SetDirRead() { \
1003  pio->PIO_IDR = pinMask ; \
1004  pio->PIO_PUDR = pinMask; \
1005  pio->PIO_ODR = pinMask; \
1006  pio->PIO_PER = pinMask; \
1007  } \
1008  static void SetDirWrite() { \
1009  pio->PIO_IDR = pinMask ; \
1010  pio->PIO_PUDR = pinMask; \
1011  pio->PIO_OER = pinMask; \
1012  pio->PIO_PER = pinMask; \
1013  } \
1014  static uint8_t IsSet() { \
1015  return pio->PIO_PDSR & pinMask; \
1016  } \
1017 };
1018 
1019 // See: http://arduino.cc/en/Hacking/PinMappingSAM3X and variant.cpp
1020 
1021 MAKE_PIN(P0, PIOA, PIO_PA8);
1022 MAKE_PIN(P1, PIOA, PIO_PA9);
1023 MAKE_PIN(P2, PIOB, PIO_PB25);
1024 MAKE_PIN(P3, PIOC, PIO_PC28);
1025 MAKE_PIN(P4, PIOC, PIO_PC26);
1026 MAKE_PIN(P5, PIOC, PIO_PC25);
1027 MAKE_PIN(P6, PIOC, PIO_PC24);
1028 MAKE_PIN(P7, PIOC, PIO_PC23);
1029 MAKE_PIN(P8, PIOC, PIO_PC22);
1030 MAKE_PIN(P9, PIOC, PIO_PC21);
1031 MAKE_PIN(P10, PIOC, PIO_PC29);
1032 MAKE_PIN(P11, PIOD, PIO_PD7);
1033 MAKE_PIN(P12, PIOD, PIO_PD8);
1034 MAKE_PIN(P13, PIOB, PIO_PB27);
1035 MAKE_PIN(P14, PIOD, PIO_PD4);
1036 MAKE_PIN(P15, PIOD, PIO_PD5);
1037 MAKE_PIN(P16, PIOA, PIO_PA13);
1038 MAKE_PIN(P17, PIOA, PIO_PA12);
1039 MAKE_PIN(P18, PIOA, PIO_PA11);
1040 MAKE_PIN(P19, PIOA, PIO_PA10);
1041 MAKE_PIN(P20, PIOB, PIO_PB12);
1042 MAKE_PIN(P21, PIOB, PIO_PB13);
1043 MAKE_PIN(P22, PIOB, PIO_PB26);
1044 MAKE_PIN(P23, PIOA, PIO_PA14);
1045 MAKE_PIN(P24, PIOA, PIO_PA15);
1046 MAKE_PIN(P25, PIOD, PIO_PD0);
1047 MAKE_PIN(P26, PIOD, PIO_PD1);
1048 MAKE_PIN(P27, PIOD, PIO_PD2);
1049 MAKE_PIN(P28, PIOD, PIO_PD3);
1050 MAKE_PIN(P29, PIOD, PIO_PD6);
1051 MAKE_PIN(P30, PIOD, PIO_PD9);
1052 MAKE_PIN(P31, PIOA, PIO_PA7);
1053 MAKE_PIN(P32, PIOD, PIO_PD10);
1054 MAKE_PIN(P33, PIOC, PIO_PC1);
1055 MAKE_PIN(P34, PIOC, PIO_PC2);
1056 MAKE_PIN(P35, PIOC, PIO_PC3);
1057 MAKE_PIN(P36, PIOC, PIO_PC4);
1058 MAKE_PIN(P37, PIOC, PIO_PC5);
1059 MAKE_PIN(P38, PIOC, PIO_PC6);
1060 MAKE_PIN(P39, PIOC, PIO_PC7);
1061 MAKE_PIN(P40, PIOC, PIO_PC8);
1062 MAKE_PIN(P41, PIOC, PIO_PC9);
1063 MAKE_PIN(P42, PIOA, PIO_PA19);
1064 MAKE_PIN(P43, PIOA, PIO_PA20);
1065 MAKE_PIN(P44, PIOC, PIO_PC19);
1066 MAKE_PIN(P45, PIOC, PIO_PC18);
1067 MAKE_PIN(P46, PIOC, PIO_PC17);
1068 MAKE_PIN(P47, PIOC, PIO_PC16);
1069 MAKE_PIN(P48, PIOC, PIO_PC15);
1070 MAKE_PIN(P49, PIOC, PIO_PC14);
1071 MAKE_PIN(P50, PIOC, PIO_PC13);
1072 MAKE_PIN(P51, PIOC, PIO_PC12);
1073 MAKE_PIN(P52, PIOB, PIO_PB21);
1074 MAKE_PIN(P53, PIOB, PIO_PB14);
1075 MAKE_PIN(P54, PIOA, PIO_PA16);
1076 MAKE_PIN(P55, PIOA, PIO_PA24);
1077 MAKE_PIN(P56, PIOA, PIO_PA23);
1078 MAKE_PIN(P57, PIOA, PIO_PA22);
1079 MAKE_PIN(P58, PIOA, PIO_PA6);
1080 MAKE_PIN(P59, PIOA, PIO_PA4);
1081 MAKE_PIN(P60, PIOA, PIO_PA3);
1082 MAKE_PIN(P61, PIOA, PIO_PA2);
1083 MAKE_PIN(P62, PIOB, PIO_PB17);
1084 MAKE_PIN(P63, PIOB, PIO_PB18);
1085 MAKE_PIN(P64, PIOB, PIO_PB19);
1086 MAKE_PIN(P65, PIOB, PIO_PB20);
1087 MAKE_PIN(P66, PIOB, PIO_PB15);
1088 MAKE_PIN(P67, PIOB, PIO_PB16);
1089 MAKE_PIN(P68, PIOA, PIO_PA1);
1090 MAKE_PIN(P69, PIOA, PIO_PA0);
1091 MAKE_PIN(P70, PIOA, PIO_PA17);
1092 MAKE_PIN(P71, PIOA, PIO_PA18);
1093 MAKE_PIN(P72, PIOC, PIO_PC30);
1094 MAKE_PIN(P73, PIOA, PIO_PA21);
1095 MAKE_PIN(P74, PIOA, PIO_PA25); // MISO
1096 MAKE_PIN(P75, PIOA, PIO_PA26); // MOSI
1097 MAKE_PIN(P76, PIOA, PIO_PA27); // CLK
1098 MAKE_PIN(P77, PIOA, PIO_PA28);
1099 MAKE_PIN(P78, PIOB, PIO_PB23); // Unconnected
1100 
1101 #undef MAKE_PIN
1102 
1103 #elif defined(RBL_NRF51822)
1104 
1105 #define MAKE_PIN(className, pin) \
1106 class className { \
1107 public: \
1108  static void Set() { \
1109  nrf_gpio_pin_set(pin); \
1110  } \
1111  static void Clear() { \
1112  nrf_gpio_pin_clear(pin); \
1113  } \
1114  static void SetDirRead() { \
1115  nrf_gpio_cfg_input(pin, NRF_GPIO_PIN_NOPULL); \
1116  } \
1117  static void SetDirWrite() { \
1118  nrf_gpio_cfg_output(pin); \
1119  } \
1120  static uint8_t IsSet() { \
1121  return (uint8_t)nrf_gpio_pin_read(pin); \
1122  } \
1123 };
1124 
1125 // See: pin_transform.c in RBL nRF51822 SDK
1126 MAKE_PIN(P0, Pin_nRF51822_to_Arduino(D0));
1127 MAKE_PIN(P1, Pin_nRF51822_to_Arduino(D1));
1128 MAKE_PIN(P2, Pin_nRF51822_to_Arduino(D2));
1129 MAKE_PIN(P3, Pin_nRF51822_to_Arduino(D3));
1130 MAKE_PIN(P4, Pin_nRF51822_to_Arduino(D4));
1131 MAKE_PIN(P5, Pin_nRF51822_to_Arduino(D5));
1132 MAKE_PIN(P6, Pin_nRF51822_to_Arduino(D6));
1133 MAKE_PIN(P7, Pin_nRF51822_to_Arduino(D7));
1134 MAKE_PIN(P8, Pin_nRF51822_to_Arduino(D8));
1135 MAKE_PIN(P9, Pin_nRF51822_to_Arduino(D9)); // INT
1136 MAKE_PIN(P10, Pin_nRF51822_to_Arduino(D10)); // SS
1137 MAKE_PIN(P11, Pin_nRF51822_to_Arduino(D11));
1138 MAKE_PIN(P12, Pin_nRF51822_to_Arduino(D12));
1139 MAKE_PIN(P13, Pin_nRF51822_to_Arduino(D13));
1140 MAKE_PIN(P14, Pin_nRF51822_to_Arduino(D14));
1141 MAKE_PIN(P15, Pin_nRF51822_to_Arduino(D15));
1142 MAKE_PIN(P17, Pin_nRF51822_to_Arduino(D17)); // MISO
1143 MAKE_PIN(P18, Pin_nRF51822_to_Arduino(D18)); // MOSI
1144 MAKE_PIN(P16, Pin_nRF51822_to_Arduino(D16)); // CLK
1145 MAKE_PIN(P19, Pin_nRF51822_to_Arduino(D19));
1146 MAKE_PIN(P20, Pin_nRF51822_to_Arduino(D20));
1147 MAKE_PIN(P21, Pin_nRF51822_to_Arduino(D21));
1148 MAKE_PIN(P22, Pin_nRF51822_to_Arduino(D22));
1149 MAKE_PIN(P23, Pin_nRF51822_to_Arduino(D23));
1150 MAKE_PIN(P24, Pin_nRF51822_to_Arduino(D24));
1151 
1152 #undef MAKE_PIN
1153 
1154 #elif defined(STM32F446xx)
1155 // NUCLEO-F446RE
1156 
1157 #define MAKE_PIN(className, port, pin) \
1158 class className { \
1159 public: \
1160  static void Set() { \
1161  HAL_GPIO_WritePin(port, pin, GPIO_PIN_SET); \
1162  } \
1163  static void Clear() { \
1164  HAL_GPIO_WritePin(port, pin, GPIO_PIN_RESET); \
1165  } \
1166  static void SetDirRead() { \
1167  static GPIO_InitTypeDef GPIO_InitStruct; \
1168  GPIO_InitStruct.Pin = pin; \
1169  GPIO_InitStruct.Mode = GPIO_MODE_INPUT; \
1170  GPIO_InitStruct.Pull = GPIO_NOPULL; \
1171  HAL_GPIO_Init(port, &GPIO_InitStruct); \
1172  } \
1173  static void SetDirWrite() { \
1174  static GPIO_InitTypeDef GPIO_InitStruct; \
1175  GPIO_InitStruct.Pin = pin; \
1176  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; \
1177  GPIO_InitStruct.Pull = GPIO_NOPULL; \
1178  GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; \
1179  HAL_GPIO_Init(port, &GPIO_InitStruct); \
1180  } \
1181  static GPIO_PinState IsSet() { \
1182  return HAL_GPIO_ReadPin(port, pin); \
1183  } \
1184 };
1185 
1186 MAKE_PIN(P0, GPIOA, GPIO_PIN_3); // D0
1187 MAKE_PIN(P1, GPIOA, GPIO_PIN_2); // D1
1188 MAKE_PIN(P2, GPIOA, GPIO_PIN_10); // D2
1189 MAKE_PIN(P3, GPIOB, GPIO_PIN_3); // D3
1190 MAKE_PIN(P4, GPIOB, GPIO_PIN_5); // D4
1191 MAKE_PIN(P5, GPIOB, GPIO_PIN_4); // D5
1192 MAKE_PIN(P6, GPIOB, GPIO_PIN_10); // D6
1193 MAKE_PIN(P7, GPIOA, GPIO_PIN_8); // D7
1194 MAKE_PIN(P8, GPIOA, GPIO_PIN_9); // D8
1195 MAKE_PIN(P9, GPIOC, GPIO_PIN_7); // D9
1196 MAKE_PIN(P10, GPIOB, GPIO_PIN_6); // D10
1197 MAKE_PIN(P11, GPIOA, GPIO_PIN_7); // D11
1198 MAKE_PIN(P12, GPIOA, GPIO_PIN_6); // D12
1199 MAKE_PIN(P13, GPIOA, GPIO_PIN_5); // D13
1200 
1201 MAKE_PIN(P14, GPIOA, GPIO_PIN_0); // A0
1202 MAKE_PIN(P15, GPIOA, GPIO_PIN_1); // A1
1203 MAKE_PIN(P16, GPIOA, GPIO_PIN_4); // A2
1204 MAKE_PIN(P17, GPIOB, GPIO_PIN_0); // A3
1205 MAKE_PIN(P18, GPIOC, GPIO_PIN_1); // A4
1206 MAKE_PIN(P19, GPIOC, GPIO_PIN_0); // A5
1207 
1208 #undef MAKE_PIN
1209 
1210 #else
1211 #error "Please define board in avrpins.h"
1212 
1213 #endif
1214 
1215 #elif defined(__ARDUINO_ARC__)
1216 
1217 #include <avr/pgmspace.h>
1218 // Pointers are 32 bits on arc
1219 #define pgm_read_pointer(p) pgm_read_dword(p)
1220 
1221 #define MAKE_PIN(className, pin) \
1222 class className { \
1223 public: \
1224  static void Set() { \
1225  digitalWrite(pin, HIGH);\
1226  } \
1227  static void Clear() { \
1228  digitalWrite(pin, LOW); \
1229  } \
1230  static void SetDirRead() { \
1231  pinMode(pin, INPUT); \
1232  } \
1233  static void SetDirWrite() { \
1234  pinMode(pin, OUTPUT); \
1235  } \
1236  static uint8_t IsSet() { \
1237  return digitalRead(pin); \
1238  } \
1239 };
1240 
1241 MAKE_PIN(P0, 0);
1242 MAKE_PIN(P1, 1);
1243 MAKE_PIN(P2, 2);
1244 MAKE_PIN(P3, 3); //PWM
1245 MAKE_PIN(P4, 4);
1246 MAKE_PIN(P5, 5); //PWM
1247 MAKE_PIN(P6, 6); //PWM
1248 MAKE_PIN(P7, 7);
1249 MAKE_PIN(P8, 8);
1250 MAKE_PIN(P9, 9); //PWM
1251 
1252 MAKE_PIN(P10, 10); //SPI SS
1253 MAKE_PIN(P11, 11); //SPI MOSI
1254 MAKE_PIN(P12, 12); //SPI MISO
1255 MAKE_PIN(P13, 13); //SPI SCK / BUILTIN LED
1256 
1257 MAKE_PIN(P14, 14); // A0
1258 MAKE_PIN(P15, 15); // A1
1259 MAKE_PIN(P16, 16); // A2
1260 MAKE_PIN(P17, 17); // A3
1261 MAKE_PIN(P18, 18); // A4 SDA
1262 MAKE_PIN(P19, 19); // A5 SCL
1263 MAKE_PIN(P20, 20); // ATN
1264 
1265 #undef MAKE_PIN
1266 
1267 #elif defined(__ARDUINO_X86__) // Intel Galileo, Intel Galileo 2 and Intel Edison
1268 
1269 #include <avr/pgmspace.h>
1270 
1271 // Pointers are 32 bits on x86
1272 #define pgm_read_pointer(p) pgm_read_dword(p)
1273 
1274 #if PLATFORM_ID == 0xE1 // Edison platform id
1275 #define pinToFastPin(pin) 1 // As far as I can tell all pins can be used as fast pins
1276 #endif
1277 
1278 // Pin 2 and 3 on the Intel Galileo supports a higher rate,
1279 // so it is recommended to use one of these as the SS pin.
1280 
1281 #define MAKE_PIN(className, pin) \
1282 class className { \
1283 public: \
1284  static void Set() { \
1285  fastDigitalWrite(pin, HIGH); \
1286  } \
1287  static void Clear() { \
1288  fastDigitalWrite(pin, LOW); \
1289  } \
1290  static void SetDirRead() { \
1291  if (pinToFastPin(pin)) \
1292  pinMode(pin, INPUT_FAST); \
1293  else \
1294  pinMode(pin, INPUT); \
1295  } \
1296  static void SetDirWrite() { \
1297  if (pinToFastPin(pin)) \
1298  pinMode(pin, OUTPUT_FAST); \
1299  else \
1300  pinMode(pin, OUTPUT); \
1301  } \
1302  static uint8_t IsSet() { \
1303  return fastDigitalRead(pin); \
1304  } \
1305 };
1306 
1307 MAKE_PIN(P0, 0);
1308 MAKE_PIN(P1, 1);
1309 MAKE_PIN(P2, 2);
1310 MAKE_PIN(P3, 3);
1311 MAKE_PIN(P4, 4);
1312 MAKE_PIN(P5, 5);
1313 MAKE_PIN(P6, 6);
1314 MAKE_PIN(P7, 7);
1315 MAKE_PIN(P8, 8);
1316 MAKE_PIN(P9, 9);
1317 MAKE_PIN(P10, 10);
1318 MAKE_PIN(P11, 11);
1319 MAKE_PIN(P12, 12);
1320 MAKE_PIN(P13, 13);
1321 MAKE_PIN(P14, 14); // A0
1322 MAKE_PIN(P15, 15); // A1
1323 MAKE_PIN(P16, 16); // A2
1324 MAKE_PIN(P17, 17); // A3
1325 MAKE_PIN(P18, 18); // A4
1326 MAKE_PIN(P19, 19); // A5
1327 
1328 #undef MAKE_PIN
1329 
1330 #elif defined(__MIPSEL__)
1331 // MIPSEL (MIPS architecture using a little endian byte order)
1332 
1333 // MIPS size_t = 4
1334 #define pgm_read_pointer(p) pgm_read_dword(p)
1335 
1336 #define MAKE_PIN(className, pin) \
1337 class className { \
1338 public: \
1339  static void Set() { \
1340  digitalWrite(pin, HIGH);\
1341  } \
1342  static void Clear() { \
1343  digitalWrite(pin, LOW); \
1344  } \
1345  static void SetDirRead() { \
1346  pinMode(pin, INPUT); \
1347  } \
1348  static void SetDirWrite() { \
1349  pinMode(pin, OUTPUT); \
1350  } \
1351  static uint8_t IsSet() { \
1352  return digitalRead(pin); \
1353  } \
1354 };
1355 
1356 // 0 .. 13 - Digital pins
1357 MAKE_PIN(P0, 0); // RX
1358 MAKE_PIN(P1, 1); // TX
1359 MAKE_PIN(P2, 2); //
1360 MAKE_PIN(P3, 3); //
1361 MAKE_PIN(P4, 4); //
1362 MAKE_PIN(P5, 5); //
1363 MAKE_PIN(P6, 6); //
1364 MAKE_PIN(P7, 7); //
1365 MAKE_PIN(P8, 8); //
1366 MAKE_PIN(P9, 9); //
1367 MAKE_PIN(P10, 10); //
1368 MAKE_PIN(P11, 11); //
1369 MAKE_PIN(P12, 12); //
1370 MAKE_PIN(P13, 13); //
1371 
1372 #undef MAKE_PIN
1373 
1374 #elif defined(ESP8266) || defined(ESP32)
1375 
1376 #define MAKE_PIN(className, pin) \
1377 class className { \
1378 public: \
1379  static void Set() { \
1380  digitalWrite(pin, HIGH);\
1381  } \
1382  static void Clear() { \
1383  digitalWrite(pin, LOW); \
1384  } \
1385  static void SetDirRead() { \
1386  pinMode(pin, INPUT); \
1387  } \
1388  static void SetDirWrite() { \
1389  pinMode(pin, OUTPUT); \
1390  } \
1391  static uint8_t IsSet() { \
1392  return digitalRead(pin); \
1393  } \
1394 };
1395 
1396 #if defined(ESP8266)
1397 
1398 // Workaround the following issue: https://github.com/esp8266/Arduino/pull/5735
1399 #undef pgm_read_ptr_aligned
1400 #ifdef __cplusplus
1401 #define pgm_read_ptr_aligned(addr) (*reinterpret_cast<const void* const*>(addr))
1402 #else
1403 #define pgm_read_ptr_aligned(addr) (*(const void* const*)(addr))
1404 #endif
1405 
1406 #undef pgm_read_ptr
1407 #if PGM_READ_UNALIGNED
1408 #define pgm_read_ptr(p) pgm_read_ptr_unaligned(p)
1409 #else
1410 #define pgm_read_ptr(p) pgm_read_ptr_aligned(p)
1411 #endif
1412 
1413 #ifdef pgm_read_pointer
1414 #undef pgm_read_pointer
1415 #endif
1416 #define pgm_read_pointer(p) pgm_read_ptr(p)
1417 
1418 // Pinout for ESP-12 module
1419 // 0 .. 16 - Digital pins
1420 // GPIO 6 to 11 and 16 are not usable in this library.
1421 
1422 MAKE_PIN(P0, 0);
1423 MAKE_PIN(P1, 1); // TX0
1424 MAKE_PIN(P2, 2); // TX1
1425 MAKE_PIN(P3, 3); // RX0
1426 MAKE_PIN(P4, 4); // SDA
1427 MAKE_PIN(P5, 5); // SCL
1428 MAKE_PIN(P12, 12); // MISO
1429 MAKE_PIN(P13, 13); // MOSI
1430 MAKE_PIN(P14, 14); // SCK
1431 MAKE_PIN(P15, 15); // SS
1432 
1433 #elif defined(ESP32)
1434 
1435 // Workaround strict-aliasing warnings
1436 #ifdef pgm_read_word
1437 #undef pgm_read_word
1438 #endif
1439 #ifdef pgm_read_dword
1440 #undef pgm_read_dword
1441 #endif
1442 #ifdef pgm_read_float
1443 #undef pgm_read_float
1444 #endif
1445 #ifdef pgm_read_ptr
1446 #undef pgm_read_ptr
1447 #endif
1448 
1449 #define pgm_read_word(addr) ({ \
1450  typeof(addr) _addr = (addr); \
1451  *(const unsigned short *)(_addr); \
1452 })
1453 #define pgm_read_dword(addr) ({ \
1454  typeof(addr) _addr = (addr); \
1455  *(const unsigned long *)(_addr); \
1456 })
1457 #define pgm_read_float(addr) ({ \
1458  typeof(addr) _addr = (addr); \
1459  *(const float *)(_addr); \
1460 })
1461 #define pgm_read_ptr(addr) ({ \
1462  typeof(addr) _addr = (addr); \
1463  *(void * const *)(_addr); \
1464 })
1465 
1466 // Pinout for ESP32 dev module
1467 
1468 MAKE_PIN(P0, 0);
1469 MAKE_PIN(P1, 1); // TX0
1470 MAKE_PIN(P10, 10); // TX1
1471 MAKE_PIN(P3, 3); // RX0
1472 MAKE_PIN(P21, 21); // SDA
1473 MAKE_PIN(P22, 22); // SCL
1474 MAKE_PIN(P19, 19); // MISO
1475 MAKE_PIN(P23, 23); // MOSI
1476 MAKE_PIN(P18, 18); // SCK
1477 MAKE_PIN(P5, 5); // SS
1478 MAKE_PIN(P17, 17); // INT
1479 
1480 #endif
1481 
1482 #undef MAKE_PIN
1483 
1484 // pgm_read_ptr is not defined in the ESP32, so we have to undef the diffinition from version_helper.h
1485 #ifdef pgm_read_pointer
1486 #undef pgm_read_pointer
1487 #endif
1488 #define pgm_read_pointer(p) pgm_read_ptr(p)
1489 
1490 #else
1491 #error "Please define board in avrpins.h"
1492 
1493 #endif
1494 
1495 #endif //_avrpins_h_
+Go to the documentation of this file.
1 /* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved.
2 
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; either version 2 of the License, or
6 (at your option) any later version.
7 
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12 
13 You should have received a copy of the GNU General Public License
14 along with this program; if not, write to the Free Software
15 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 
17 Contact information
18 -------------------
19 
20 Circuits At Home, LTD
21 Web : http://www.circuitsathome.com
22 e-mail : support@circuitsathome.com
23  */
24 
25 /* derived from Konstantin Chizhov's AVR port templates */
26 
27 #if !defined(_usb_h_) || defined(_avrpins_h_)
28 #error "Never include avrpins.h directly; include Usb.h instead"
29 #else
30 #define _avrpins_h_
31 
32 #if defined(__AVR__)
33 
34 // pointers are 16 bits on AVR
35 #define pgm_read_pointer(p) pgm_read_word(p)
36 
37 // Support for these boards needs to be manually activated in settings.h or in a makefile
38 #if !defined(BOARD_MEGA_ADK) && defined(__AVR_ATmega2560__) && (USE_UHS_MEGA_ADK || defined(ARDUINO_AVR_ADK))
39 #define BOARD_MEGA_ADK
40 #elif !defined(BOARD_BLACK_WIDDOW) && USE_UHS_BLACK_WIDDOW
41 #define BOARD_BLACK_WIDDOW
42 #endif
43 
44 #ifdef PORTA
45 #define USE_PORTA
46 #endif
47 #ifdef PORTB
48 #define USE_PORTB
49 #endif
50 #ifdef PORTC
51 #define USE_PORTC
52 #endif
53 #ifdef PORTD
54 #define USE_PORTD
55 #endif
56 #ifdef PORTE
57 #define USE_PORTE
58 #endif
59 #ifdef PORTF
60 #define USE_PORTF
61 #endif
62 #ifdef PORTG
63 #define USE_PORTG
64 #endif
65 #ifdef PORTH
66 #define USE_PORTH
67 #endif
68 #ifdef PORTJ
69 #define USE_PORTJ
70 #endif
71 #ifdef PORTK
72 #define USE_PORTK
73 #endif
74 #ifdef PORTL
75 #define USE_PORTL
76 #endif
77 #ifdef PORTQ
78 #define USE_PORTQ
79 #endif
80 #ifdef PORTR
81 #define USE_PORTR
82 #endif
83 
84 #ifdef TCCR0A
85 #define USE_TCCR0A
86 #endif
87 #ifdef TCCR1A
88 #define USE_TCCR1A
89 #endif
90 #ifdef TCCR2A
91 #define USE_TCCR2A
92 #endif
93 
94 //Port definitions for AtTiny, AtMega families.
95 
96 #define MAKE_PORT(portName, ddrName, pinName, className, ID) \
97  class className{\
98  public:\
99  typedef uint8_t DataT;\
100  public:\
101  static void Write(DataT value){portName = value;}\
102  static void ClearAndSet(DataT clearMask, DataT value){portName = (portName & ~clearMask) | value;}\
103  static DataT Read(){return portName;}\
104  static void DirWrite(DataT value){ddrName = value;}\
105  static DataT DirRead(){return ddrName;}\
106  static void Set(DataT value){portName |= value;}\
107  static void Clear(DataT value){portName &= ~value;}\
108  static void Toggle(DataT value){portName ^= value;}\
109  static void DirSet(DataT value){ddrName |= value;}\
110  static void DirClear(DataT value){ddrName &= ~value;}\
111  static void DirToggle(DataT value){ddrName ^= value;}\
112  static DataT PinRead(){return pinName;}\
113  enum{Id = ID};\
114  enum{Width=sizeof(DataT)*8};\
115  };
116 
117 // TCCR registers to set/clear Arduino PWM
118 #define MAKE_TCCR(TccrName, className) \
119  class className{\
120  public:\
121  typedef uint8_t DataT;\
122  public:\
123  static void Write(DataT value){TccrName = value;}\
124  static void ClearAndSet(DataT clearMask, DataT value){TccrName = (TccrName & ~clearMask) | value;}\
125  static DataT Read(){return TccrName;}\
126  static void Set(DataT value){TccrName |= value;}\
127  static void Clear(DataT value){TccrName &= ~value;}\
128  static void Toggle(DataT value){TccrName ^= value;}\
129  enum{Width=sizeof(DataT)*8};\
130  };
131 
132 #ifdef USE_PORTA
133 
134 MAKE_PORT(PORTA, DDRA, PINA, Porta, 'A')
135 #endif
136 #ifdef USE_PORTB
137 MAKE_PORT(PORTB, DDRB, PINB, Portb, 'B')
138 #endif
139 #ifdef USE_PORTC
140 MAKE_PORT(PORTC, DDRC, PINC, Portc, 'C')
141 #endif
142 #ifdef USE_PORTD
143 MAKE_PORT(PORTD, DDRD, PIND, Portd, 'D')
144 #endif
145 #ifdef USE_PORTE
146 MAKE_PORT(PORTE, DDRE, PINE, Porte, 'E')
147 #endif
148 #ifdef USE_PORTF
149 MAKE_PORT(PORTF, DDRF, PINF, Portf, 'F')
150 #endif
151 #ifdef USE_PORTG
152 MAKE_PORT(PORTG, DDRG, PING, Portg, 'G')
153 #endif
154 #ifdef USE_PORTH
155 MAKE_PORT(PORTH, DDRH, PINH, Porth, 'H')
156 #endif
157 #ifdef USE_PORTJ
158 MAKE_PORT(PORTJ, DDRJ, PINJ, Portj, 'J')
159 #endif
160 #ifdef USE_PORTK
161 MAKE_PORT(PORTK, DDRK, PINK, Portk, 'K')
162 #endif
163 #ifdef USE_PORTL
164 MAKE_PORT(PORTL, DDRL, PINL, Portl, 'L')
165 #endif
166 #ifdef USE_PORTQ
167 MAKE_PORT(PORTQ, DDRQ, PINQ, Portq, 'Q')
168 #endif
169 #ifdef USE_PORTR
170 MAKE_PORT(PORTR, DDRR, PINR, Portr, 'R')
171 #endif
172 
173 #ifdef USE_TCCR0A
174 MAKE_TCCR(TCCR0A, Tccr0a)
175 #endif
176 #ifdef USE_TCCR1A
177 MAKE_TCCR(TCCR1A, Tccr1a)
178 #endif
179 #ifdef USE_TCCR2A
180 MAKE_TCCR(TCCR2A, Tccr2a)
181 #endif
182 
183 // this class represents one pin in a IO port.
184 // It is fully static.
185 template<typename PORT, uint8_t PIN>
186 class TPin {
187  // BOOST_STATIC_ASSERT(PIN < PORT::Width);
188 public:
189  typedef PORT Port;
190 
191  enum {
192  Number = PIN
193  };
194 
195  static void Set() {
196  PORT::Set(1 << PIN);
197  }
198 
199  static void Set(uint8_t val) {
200  if(val)
201  Set();
202  else Clear();
203  }
204 
205  static void SetDir(uint8_t val) {
206  if(val)
207  SetDirWrite();
208  else SetDirRead();
209  }
210 
211  static void Clear() {
212  PORT::Clear(1 << PIN);
213  }
214 
215  static void Toggle() {
216  PORT::Toggle(1 << PIN);
217  }
218 
219  static void SetDirRead() {
220  PORT::DirClear(1 << PIN);
221  }
222 
223  static void SetDirWrite() {
224  PORT::DirSet(1 << PIN);
225  }
226 
227  static uint8_t IsSet() {
228  return PORT::PinRead() & (uint8_t)(1 << PIN);
229  }
230 
231  static void WaiteForSet() {
232  while(IsSet() == 0) {
233  }
234  }
235 
236  static void WaiteForClear() {
237  while(IsSet()) {
238  }
239  }
240 }; //class TPin...
241 
242 // this class represents one bit in TCCR port.
243 // used to set/clear TCCRx bits
244 // It is fully static.
245 
246 template<typename TCCR, uint8_t COM>
247 class TCom {
248  // BOOST_STATIC_ASSERT(PIN < PORT::Width);
249 public:
250  typedef TCCR Tccr;
251 
252  enum {
253  Com = COM
254  };
255 
256  static void Set() {
257  TCCR::Set(1 << COM);
258  }
259 
260  static void Clear() {
261  TCCR::Clear(1 << COM);
262  }
263 
264  static void Toggle() {
265  TCCR::Toggle(1 << COM);
266  }
267 }; //class TCom...
268 
269 //Short pin definitions
270 #ifdef USE_PORTA
271 typedef TPin<Porta, 0 > Pa0;
272 typedef TPin<Porta, 1 > Pa1;
273 typedef TPin<Porta, 2 > Pa2;
274 typedef TPin<Porta, 3 > Pa3;
275 typedef TPin<Porta, 4 > Pa4;
276 typedef TPin<Porta, 5 > Pa5;
277 typedef TPin<Porta, 6 > Pa6;
278 typedef TPin<Porta, 7 > Pa7;
279 #endif
280 
281 #ifdef USE_PORTB
282 typedef TPin<Portb, 0 > Pb0;
283 typedef TPin<Portb, 1 > Pb1;
284 typedef TPin<Portb, 2 > Pb2;
285 typedef TPin<Portb, 3 > Pb3;
286 typedef TPin<Portb, 4 > Pb4;
287 typedef TPin<Portb, 5 > Pb5;
288 typedef TPin<Portb, 6 > Pb6;
289 typedef TPin<Portb, 7 > Pb7;
290 #endif
291 
292 #ifdef USE_PORTC
293 typedef TPin<Portc, 0 > Pc0;
294 typedef TPin<Portc, 1 > Pc1;
295 typedef TPin<Portc, 2 > Pc2;
296 typedef TPin<Portc, 3 > Pc3;
297 typedef TPin<Portc, 4 > Pc4;
298 typedef TPin<Portc, 5 > Pc5;
299 typedef TPin<Portc, 6 > Pc6;
300 typedef TPin<Portc, 7 > Pc7;
301 #endif
302 
303 #ifdef USE_PORTD
304 typedef TPin<Portd, 0 > Pd0;
305 typedef TPin<Portd, 1 > Pd1;
306 typedef TPin<Portd, 2 > Pd2;
307 typedef TPin<Portd, 3 > Pd3;
308 typedef TPin<Portd, 4 > Pd4;
309 typedef TPin<Portd, 5 > Pd5;
310 typedef TPin<Portd, 6 > Pd6;
311 typedef TPin<Portd, 7 > Pd7;
312 #endif
313 
314 #ifdef USE_PORTE
315 typedef TPin<Porte, 0 > Pe0;
316 typedef TPin<Porte, 1 > Pe1;
317 typedef TPin<Porte, 2 > Pe2;
318 typedef TPin<Porte, 3 > Pe3;
319 typedef TPin<Porte, 4 > Pe4;
320 typedef TPin<Porte, 5 > Pe5;
321 typedef TPin<Porte, 6 > Pe6;
322 typedef TPin<Porte, 7 > Pe7;
323 #endif
324 
325 #ifdef USE_PORTF
326 typedef TPin<Portf, 0 > Pf0;
327 typedef TPin<Portf, 1 > Pf1;
328 typedef TPin<Portf, 2 > Pf2;
329 typedef TPin<Portf, 3 > Pf3;
330 typedef TPin<Portf, 4 > Pf4;
331 typedef TPin<Portf, 5 > Pf5;
332 typedef TPin<Portf, 6 > Pf6;
333 typedef TPin<Portf, 7 > Pf7;
334 #endif
335 
336 #ifdef USE_PORTG
337 typedef TPin<Portg, 0 > Pg0;
338 typedef TPin<Portg, 1 > Pg1;
339 typedef TPin<Portg, 2 > Pg2;
340 typedef TPin<Portg, 3 > Pg3;
341 typedef TPin<Portg, 4 > Pg4;
342 typedef TPin<Portg, 5 > Pg5;
343 typedef TPin<Portg, 6 > Pg6;
344 typedef TPin<Portg, 7 > Pg7;
345 #endif
346 
347 #ifdef USE_PORTH
348 typedef TPin<Porth, 0 > Ph0;
349 typedef TPin<Porth, 1 > Ph1;
350 typedef TPin<Porth, 2 > Ph2;
351 typedef TPin<Porth, 3 > Ph3;
352 typedef TPin<Porth, 4 > Ph4;
353 typedef TPin<Porth, 5 > Ph5;
354 typedef TPin<Porth, 6 > Ph6;
355 typedef TPin<Porth, 7 > Ph7;
356 #endif
357 
358 #ifdef USE_PORTJ
359 typedef TPin<Portj, 0 > Pj0;
360 typedef TPin<Portj, 1 > Pj1;
361 typedef TPin<Portj, 2 > Pj2;
362 typedef TPin<Portj, 3 > Pj3;
363 typedef TPin<Portj, 4 > Pj4;
364 typedef TPin<Portj, 5 > Pj5;
365 typedef TPin<Portj, 6 > Pj6;
366 typedef TPin<Portj, 7 > Pj7;
367 #endif
368 
369 #ifdef USE_PORTK
370 typedef TPin<Portk, 0 > Pk0;
371 typedef TPin<Portk, 1 > Pk1;
372 typedef TPin<Portk, 2 > Pk2;
373 typedef TPin<Portk, 3 > Pk3;
374 typedef TPin<Portk, 4 > Pk4;
375 typedef TPin<Portk, 5 > Pk5;
376 typedef TPin<Portk, 6 > Pk6;
377 typedef TPin<Portk, 7 > Pk7;
378 #endif
379 
380 #ifdef USE_PORTL
381 typedef TPin<Portl, 0 > Pl0;
382 typedef TPin<Portl, 1 > Pl1;
383 typedef TPin<Portl, 2 > Pl2;
384 typedef TPin<Portl, 3 > Pl3;
385 typedef TPin<Portl, 4 > Pl4;
386 typedef TPin<Portl, 5 > Pl5;
387 typedef TPin<Portl, 6 > Pl6;
388 typedef TPin<Portl, 7 > Pl7;
389 #endif
390 
391 #ifdef USE_PORTQ
392 typedef TPin<Portq, 0 > Pq0;
393 typedef TPin<Portq, 1 > Pq1;
394 typedef TPin<Portq, 2 > Pq2;
395 typedef TPin<Portq, 3 > Pq3;
396 typedef TPin<Portq, 4 > Pq4;
397 typedef TPin<Portq, 5 > Pq5;
398 typedef TPin<Portq, 6 > Pq6;
399 typedef TPin<Portq, 7 > Pq7;
400 #endif
401 
402 #ifdef USE_PORTR
403 typedef TPin<Portr, 0 > Pr0;
404 typedef TPin<Portr, 1 > Pr1;
405 typedef TPin<Portr, 2 > Pr2;
406 typedef TPin<Portr, 3 > Pr3;
407 typedef TPin<Portr, 4 > Pr4;
408 typedef TPin<Portr, 5 > Pr5;
409 typedef TPin<Portr, 6 > Pr6;
410 typedef TPin<Portr, 7 > Pr7;
411 #endif
412 
413 #ifdef USE_TCCR0A
414 typedef TCom<Tccr0a, COM0A1> Tc0a; //P6
415 typedef TCom<Tccr0a, COM0B1> Tc0b; //P5
416 #endif
417 
418 #ifdef USE_TCCR1A
419 typedef TCom<Tccr1a, COM1A1> Tc1a; //P9
420 typedef TCom<Tccr1a, COM1B1> Tc1b; //P10
421 #endif
422 
423 #ifdef USE_TCCR2A
424 typedef TCom<Tccr2a, COM2A1> Tc2a; //P11
425 typedef TCom<Tccr2a, COM2B1> Tc2b; //P3
426 #endif
427 
428 template<typename Tp_pin, typename Tc_bit>
429 class Tp_Tc {
430 public:
431 
432  static void SetDir(uint8_t val) {
433  if(val)
434  SetDirWrite();
435  else SetDirRead();
436  }
437 
438  static void SetDirRead() {
439  Tp_pin::SetDirRead(); //set pin direction
440  Tc_bit::Clear(); //disconnect pin from PWM
441  }
442 
443  static void SetDirWrite() {
444  Tp_pin::SetDirWrite();
445  Tc_bit::Clear();
446  }
447 };
448 
449 /* pin definitions for cases where it's necessary to clear compare output mode bits */
450 
451 //typedef Tp_Tc<Pd3, Tc2b> P3; //Arduino pin 3
452 //typedef Tp_Tc<Pd5, Tc0b> P5; //Arduino pin 5
453 //typedef Tp_Tc<Pd6, Tc0a> P6; //Arduino pin 6
454 //typedef Tp_Tc<Pb1, Tc1a> P9; //Arduino pin 9
455 //typedef Tp_Tc<Pb2, Tc1b> P10; //Arduino pin 10
456 //typedef Tp_Tc<Pb3, Tc2a> P11; //Arduino pin 11
457 
458 /* Arduino pin definitions */
459 #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
460 // "Mega" Arduino pin numbers
461 
462 #define P0 Pe0
463 #define P1 Pe1
464 #define P2 Pe4
465 #define P3 Pe5
466 #define P4 Pg5
467 #define P5 Pe3
468 #define P6 Ph3
469 #define P7 Ph4
470 
471 #define P8 Ph5
472 #define P9 Ph6
473 #define P10 Pb4
474 #define P11 Pb5
475 #define P12 Pb6
476 #define P13 Pb7
477 
478 #define P14 Pj1
479 #define P15 Pj0
480 #define P16 Ph1
481 #define P17 Ph0
482 #define P18 Pd3
483 #define P19 Pd2
484 #define P20 Pd1
485 #define P21 Pd0
486 
487 #define P22 Pa0
488 #define P23 Pa1
489 #define P24 Pa2
490 #define P25 Pa3
491 #define P26 Pa4
492 #define P27 Pa5
493 #define P28 Pa6
494 #define P29 Pa7
495 #define P30 Pc7
496 #define P31 Pc6
497 #define P32 Pc5
498 #define P33 Pc4
499 #define P34 Pc3
500 #define P35 Pc2
501 #define P36 Pc1
502 #define P37 Pc0
503 
504 #define P38 Pd7
505 #define P39 Pg2
506 #define P40 Pg1
507 #define P41 Pg0
508 #define P42 Pl7
509 #define P43 Pl6
510 #define P44 Pl5
511 #define P45 Pl4
512 #define P46 Pl3
513 #define P47 Pl2
514 #define P48 Pl1
515 #define P49 Pl0
516 #define P50 Pb3
517 #define P51 Pb2
518 #define P52 Pb1
519 #define P53 Pb0
520 
521 #ifdef BOARD_MEGA_ADK // These pins are not broken out on the Arduino ADK
522 #define P54 Pe6 // INT on Arduino ADK
523 #define P55 Pj2 // MAX_RESET on Arduino ADK
524 #endif
525 
526 // "Mega" pin numbers
527 
528 #elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)
529 // "Classic" Arduino pin numbers
530 
531 #define P0 Pd0
532 #define P1 Pd1
533 #define P2 Pd2
534 #define P3 Pd3
535 #define P4 Pd4
536 #define P5 Pd5
537 #define P6 Pd6
538 #define P7 Pd7
539 
540 #define P8 Pb0
541 #define P9 Pb1
542 #define P10 Pb2
543 #define P11 Pb3
544 #define P12 Pb4
545 #define P13 Pb5
546 
547 #define P14 Pc0
548 #define P15 Pc1
549 #define P16 Pc2
550 #define P17 Pc3
551 #define P18 Pc4
552 #define P19 Pc5
553 
554 // "Classic" Arduino pin numbers
555 
556 #elif defined(CORE_TEENSY) && defined(__AVR_ATmega32U4__)
557 // Teensy 2.0 pin numbers
558 // http://www.pjrc.com/teensy/pinout.html
559 #define P0 Pb0
560 #define P1 Pb1
561 #define P2 Pb2
562 #define P3 Pb3
563 #define P4 Pb7
564 #define P5 Pd0
565 #define P6 Pd1
566 #define P7 Pd2
567 #define P8 Pd3
568 #define P9 Pc6
569 #define P10 Pc7
570 #define P11 Pd6
571 #define P12 Pd7
572 #define P13 Pb4
573 #define P14 Pb5
574 #define P15 Pb6
575 #define P16 Pf7
576 #define P17 Pf6
577 #define P18 Pf5
578 #define P19 Pf4
579 #define P20 Pf1
580 #define P21 Pf0
581 #define P22 Pd4
582 #define P23 Pd5
583 #define P24 Pe6
584 // Teensy 2.0
585 
586 #elif defined(__AVR_ATmega32U4__)
587 // Arduino Leonardo pin numbers
588 
589 #define P0 Pd2 // D0 - PD2
590 #define P1 Pd3 // D1 - PD3
591 #define P2 Pd1 // D2 - PD1
592 #define P3 Pd0 // D3 - PD0
593 #define P4 Pd4 // D4 - PD4
594 #define P5 Pc6 // D5 - PC6
595 #define P6 Pd7 // D6 - PD7
596 #define P7 Pe6 // D7 - PE6
597 
598 #define P8 Pb4 // D8 - PB4
599 #define P9 Pb5 // D9 - PB5
600 #define P10 Pb6 // D10 - PB6
601 #define P11 Pb7 // D11 - PB7
602 #define P12 Pd6 // D12 - PD6
603 #define P13 Pc7 // D13 - PC7
604 
605 #define P14 Pb3 // D14 - MISO - PB3
606 #define P15 Pb1 // D15 - SCK - PB1
607 #define P16 Pb2 // D16 - MOSI - PB2
608 #define P17 Pb0 // D17 - SS - PB0
609 
610 #define P18 Pf7 // D18 - A0 - PF7
611 #define P19 Pf6 // D19 - A1 - PF6
612 #define P20 Pf5 // D20 - A2 - PF5
613 #define P21 Pf4 // D21 - A3 - PF4
614 #define P22 Pf1 // D22 - A4 - PF1
615 #define P23 Pf0 // D23 - A5 - PF0
616 
617 #define P24 Pd4 // D24 / D4 - A6 - PD4
618 #define P25 Pd7 // D25 / D6 - A7 - PD7
619 #define P26 Pb4 // D26 / D8 - A8 - PB4
620 #define P27 Pb5 // D27 / D9 - A9 - PB5
621 #define P28 Pb6 // D28 / D10 - A10 - PB6
622 #define P29 Pd6 // D29 / D12 - A11 - PD6
623 
624 // Arduino Leonardo pin numbers
625 
626 #elif defined(CORE_TEENSY) && (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__))
627 // Teensy++ 1.0 and 2.0 pin numbers
628 // http://www.pjrc.com/teensy/pinout.html
629 #define P0 Pd0
630 #define P1 Pd1
631 #define P2 Pd2
632 #define P3 Pd3
633 #define P4 Pd4
634 #define P5 Pd5
635 #define P6 Pd6
636 #define P7 Pd7
637 #define P8 Pe0
638 #define P9 Pe1
639 #define P10 Pc0
640 #define P11 Pc1
641 #define P12 Pc2
642 #define P13 Pc3
643 #define P14 Pc4
644 #define P15 Pc5
645 #define P16 Pc6
646 #define P17 Pc7
647 #define P18 Pe6
648 #define P19 Pe7
649 #define P20 Pb0
650 #define P21 Pb1
651 #define P22 Pb2
652 #define P23 Pb3
653 #define P24 Pb4
654 #define P25 Pb5
655 #define P26 Pb6
656 #define P27 Pb7
657 #define P28 Pa0
658 #define P29 Pa1
659 #define P30 Pa2
660 #define P31 Pa3
661 #define P32 Pa4
662 #define P33 Pa5
663 #define P34 Pa6
664 #define P35 Pa7
665 #define P36 Pe4
666 #define P37 Pe5
667 #define P38 Pf0
668 #define P39 Pf1
669 #define P40 Pf2
670 #define P41 Pf3
671 #define P42 Pf4
672 #define P43 Pf5
673 #define P44 Pf6
674 #define P45 Pf7
675 // Teensy++ 1.0 and 2.0
676 
677 #elif defined(ARDUINO_AVR_BALANDUINO) && (defined(__AVR_ATmega644__) || defined(__AVR_ATmega1284P__))
678 // Balanduino pin numbers
679 // http://balanduino.net/
680 #define P0 Pd0 /* 0 - PD0 */
681 #define P1 Pd1 /* 1 - PD1 */
682 
683 #if BALANDUINO_REVISION < 13
684  #define P2 Pb2 /* 2 - PB2 */
685  #define P3 Pd6 /* 3 - PD6 */
686  #define P4 Pd7 /* 4 - PD7 */
687  #define P5 Pb3 /* 5 - PB3 */
688 #else
689  #define P2 Pd2 /* 2 - PD2 */
690  #define P3 Pd3 /* 3 - PD3 */
691  #define P4 Pd6 /* 4 - PD6 */
692  #define P5 Pd7 /* 5 - PD7 */
693 #endif
694 
695 #define P6 Pb4 /* 6 - PB4 */
696 #define P7 Pa0 /* 7 - PA0 */
697 #define P8 Pa1 /* 8 - PA1 */
698 #define P9 Pa2 /* 9 - PA2 */
699 #define P10 Pa3 /* 10 - PA3 */
700 #define P11 Pa4 /* 11 - PA4 */
701 #define P12 Pa5 /* 12 - PA5 */
702 #define P13 Pc1 /* 13 - PC1 */
703 #define P14 Pc0 /* 14 - PC0 */
704 
705 #if BALANDUINO_REVISION < 13
706  #define P15 Pd2 /* 15 - PD2 */
707  #define P16 Pd3 /* 16 - PD3 */
708 #else
709  #define P15 Pb2 /* 15 - PB2 */
710  #define P16 Pb3 /* 16 - PB2 */
711 #endif
712 
713 #define P17 Pd4 /* 17 - PD4 */
714 #define P18 Pd5 /* 18 - PD5 */
715 #define P19 Pc2 /* 19 - PC2 */
716 #define P20 Pc3 /* 20 - PC3 */
717 #define P21 Pc4 /* 21 - PC4 */
718 #define P22 Pc5 /* 22 - PC5 */
719 #define P23 Pc6 /* 23 - PC6 */
720 #define P24 Pc7 /* 24 - PC7 */
721 #define P25 Pb0 /* 25 - PB0 */
722 #define P26 Pb1 /* 26 - PB1 */
723 #define P27 Pb5 /* 27 - PB5 */
724 #define P28 Pb6 /* 28 - PB6 */
725 #define P29 Pb7 /* 29 - PB7 */
726 #define P30 Pa6 /* 30 - PA6 */
727 #define P31 Pa7 /* 31 - PA7 */
728 // Balanduino
729 
730 #elif defined(ARDUINO_AVR_UNO_PRO) && defined(__AVR_ATmega1284P__)
731 // UNO*Pro pin numbers
732 // Homepage: http://www.hobbytronics.co.uk/arduino-uno-pro
733 // Pin Reference: http://www.hobbytronics.co.uk/download/uno_pro/pins_arduino.h
734 #define P0 Pd0
735 #define P1 Pd1
736 #define P2 Pb2
737 #define P3 Pb3
738 #define P4 Pb0
739 #define P5 Pb1
740 #define P6 Pd2
741 #define P7 Pd3
742 #define P8 Pd5
743 #define P9 Pd6
744 #define P10 Pb4
745 #define P11 Pb5
746 #define P12 Pb6
747 #define P13 Pb7
748 #define P14 Pa7
749 #define P15 Pa6
750 #define P16 Pa5
751 #define P17 Pa4
752 #define P18 Pa3
753 #define P19 Pa2
754 #define P20 Pa1
755 #define P21 Pa0
756 #define P22 Pc0
757 #define P23 Pc1
758 #define P24 Pc2
759 #define P25 Pc3
760 #define P26 Pc4
761 #define P27 Pc5
762 #define P28 Pc6
763 #define P29 Pc7
764 #define P30 Pd4
765 #define P31 Pd7
766 // UNO*Pro
767 
768 #elif defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)
769 // Sanguino pin numbers
770 // Homepage: http://sanguino.cc/hardware
771 // Hardware add-on: https://github.com/Lauszus/Sanguino
772 #define P0 Pb0
773 #define P1 Pb1
774 #define P2 Pb2
775 #define P3 Pb3
776 #define P4 Pb4
777 #define P5 Pb5
778 #define P6 Pb6
779 #define P7 Pb7
780 #define P8 Pd0
781 #define P9 Pd1
782 #define P10 Pd2
783 #define P11 Pd3
784 #define P12 Pd4
785 #define P13 Pd5
786 #define P14 Pd6
787 #define P15 Pd7
788 #define P16 Pc0
789 #define P17 Pc1
790 #define P18 Pc2
791 #define P19 Pc3
792 #define P20 Pc4
793 #define P21 Pc5
794 #define P22 Pc6
795 #define P23 Pc7
796 #define P24 Pa0
797 #define P25 Pa1
798 #define P26 Pa2
799 #define P27 Pa3
800 #define P28 Pa4
801 #define P29 Pa5
802 #define P30 Pa6
803 #define P31 Pa7
804 // Sanguino
805 
806 #else
807 #error "Please define board in avrpins.h"
808 
809 #endif // Arduino pin definitions
810 
811 #elif defined(__arm__)
812 
813 // pointers are 32 bits on ARM
814 #define pgm_read_pointer(p) pgm_read_dword(p)
815 
816 #if defined(CORE_TEENSY) && (defined(__MK20DX128__) || defined(__MK20DX256__) || defined(__MK64FX512__) || defined(__MK66FX1M0__))
817 // Teensy 3.x
818 
819 #include "core_pins.h"
820 #include "avr_emulation.h"
821 
822 #define GPIO_BITBAND_ADDR(reg, bit) (((uint32_t)&(reg) - 0x40000000) * 32 + (bit) * 4 + 0x42000000)
823 #define GPIO_BITBAND_PTR(reg, bit) ((uint8_t *)GPIO_BITBAND_ADDR((reg), (bit)))
824 
825 #define MAKE_PIN(className, baseReg, pinNum, configReg) \
826 class className { \
827 public: \
828  static void Set() { \
829  *GPIO_BITBAND_PTR(baseReg, pinNum) = 1; \
830  } \
831  static void Clear() { \
832  *GPIO_BITBAND_PTR(baseReg, pinNum) = 0; \
833  } \
834  static void SetDirRead() { \
835  configReg = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); \
836  *(GPIO_BITBAND_PTR(baseReg, pinNum) + 640) = 0; \
837  } \
838  static void SetDirWrite() { \
839  configReg = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); \
840  *(GPIO_BITBAND_PTR(baseReg, pinNum) + 640) = 1; \
841  } \
842  static uint8_t IsSet() { \
843  return *(GPIO_BITBAND_PTR(baseReg, pinNum) + 512); \
844  } \
845 };
846 
847 MAKE_PIN(P0, CORE_PIN0_PORTREG, CORE_PIN0_BIT, CORE_PIN0_CONFIG);
848 MAKE_PIN(P1, CORE_PIN1_PORTREG, CORE_PIN1_BIT, CORE_PIN1_CONFIG);
849 MAKE_PIN(P2, CORE_PIN2_PORTREG, CORE_PIN2_BIT, CORE_PIN2_CONFIG);
850 MAKE_PIN(P3, CORE_PIN3_PORTREG, CORE_PIN3_BIT, CORE_PIN3_CONFIG);
851 MAKE_PIN(P4, CORE_PIN4_PORTREG, CORE_PIN4_BIT, CORE_PIN4_CONFIG);
852 MAKE_PIN(P5, CORE_PIN5_PORTREG, CORE_PIN5_BIT, CORE_PIN5_CONFIG);
853 MAKE_PIN(P6, CORE_PIN6_PORTREG, CORE_PIN6_BIT, CORE_PIN6_CONFIG);
854 MAKE_PIN(P7, CORE_PIN7_PORTREG, CORE_PIN7_BIT, CORE_PIN7_CONFIG);
855 MAKE_PIN(P8, CORE_PIN8_PORTREG, CORE_PIN8_BIT, CORE_PIN8_CONFIG);
856 MAKE_PIN(P9, CORE_PIN9_PORTREG, CORE_PIN9_BIT, CORE_PIN9_CONFIG);
857 MAKE_PIN(P10, CORE_PIN10_PORTREG, CORE_PIN10_BIT, CORE_PIN10_CONFIG);
858 MAKE_PIN(P11, CORE_PIN11_PORTREG, CORE_PIN11_BIT, CORE_PIN11_CONFIG);
859 MAKE_PIN(P12, CORE_PIN12_PORTREG, CORE_PIN12_BIT, CORE_PIN12_CONFIG);
860 MAKE_PIN(P13, CORE_PIN13_PORTREG, CORE_PIN13_BIT, CORE_PIN13_CONFIG);
861 MAKE_PIN(P14, CORE_PIN14_PORTREG, CORE_PIN14_BIT, CORE_PIN14_CONFIG);
862 MAKE_PIN(P15, CORE_PIN15_PORTREG, CORE_PIN15_BIT, CORE_PIN15_CONFIG);
863 MAKE_PIN(P16, CORE_PIN16_PORTREG, CORE_PIN16_BIT, CORE_PIN16_CONFIG);
864 MAKE_PIN(P17, CORE_PIN17_PORTREG, CORE_PIN17_BIT, CORE_PIN17_CONFIG);
865 MAKE_PIN(P18, CORE_PIN18_PORTREG, CORE_PIN18_BIT, CORE_PIN18_CONFIG);
866 MAKE_PIN(P19, CORE_PIN19_PORTREG, CORE_PIN19_BIT, CORE_PIN19_CONFIG);
867 MAKE_PIN(P20, CORE_PIN20_PORTREG, CORE_PIN20_BIT, CORE_PIN20_CONFIG);
868 MAKE_PIN(P21, CORE_PIN21_PORTREG, CORE_PIN21_BIT, CORE_PIN21_CONFIG);
869 MAKE_PIN(P22, CORE_PIN22_PORTREG, CORE_PIN22_BIT, CORE_PIN22_CONFIG);
870 MAKE_PIN(P23, CORE_PIN23_PORTREG, CORE_PIN23_BIT, CORE_PIN23_CONFIG);
871 MAKE_PIN(P24, CORE_PIN24_PORTREG, CORE_PIN24_BIT, CORE_PIN24_CONFIG);
872 MAKE_PIN(P25, CORE_PIN25_PORTREG, CORE_PIN25_BIT, CORE_PIN25_CONFIG);
873 MAKE_PIN(P26, CORE_PIN26_PORTREG, CORE_PIN26_BIT, CORE_PIN26_CONFIG);
874 MAKE_PIN(P27, CORE_PIN27_PORTREG, CORE_PIN27_BIT, CORE_PIN27_CONFIG);
875 MAKE_PIN(P28, CORE_PIN28_PORTREG, CORE_PIN28_BIT, CORE_PIN28_CONFIG);
876 MAKE_PIN(P29, CORE_PIN29_PORTREG, CORE_PIN29_BIT, CORE_PIN29_CONFIG);
877 MAKE_PIN(P30, CORE_PIN30_PORTREG, CORE_PIN30_BIT, CORE_PIN30_CONFIG);
878 MAKE_PIN(P31, CORE_PIN31_PORTREG, CORE_PIN31_BIT, CORE_PIN31_CONFIG);
879 MAKE_PIN(P32, CORE_PIN32_PORTREG, CORE_PIN32_BIT, CORE_PIN32_CONFIG);
880 MAKE_PIN(P33, CORE_PIN33_PORTREG, CORE_PIN33_BIT, CORE_PIN33_CONFIG);
881 #if defined(__MK64FX512__) || defined(__MK66FX1M0__)
882 MAKE_PIN(P34, CORE_PIN34_PORTREG, CORE_PIN34_BIT, CORE_PIN34_CONFIG);
883 MAKE_PIN(P35, CORE_PIN35_PORTREG, CORE_PIN35_BIT, CORE_PIN35_CONFIG);
884 MAKE_PIN(P36, CORE_PIN36_PORTREG, CORE_PIN36_BIT, CORE_PIN36_CONFIG);
885 MAKE_PIN(P37, CORE_PIN37_PORTREG, CORE_PIN37_BIT, CORE_PIN37_CONFIG);
886 MAKE_PIN(P38, CORE_PIN38_PORTREG, CORE_PIN38_BIT, CORE_PIN38_CONFIG);
887 MAKE_PIN(P39, CORE_PIN39_PORTREG, CORE_PIN39_BIT, CORE_PIN39_CONFIG);
888 MAKE_PIN(P40, CORE_PIN40_PORTREG, CORE_PIN40_BIT, CORE_PIN40_CONFIG);
889 MAKE_PIN(P41, CORE_PIN41_PORTREG, CORE_PIN41_BIT, CORE_PIN41_CONFIG);
890 MAKE_PIN(P42, CORE_PIN42_PORTREG, CORE_PIN42_BIT, CORE_PIN42_CONFIG);
891 MAKE_PIN(P43, CORE_PIN43_PORTREG, CORE_PIN43_BIT, CORE_PIN43_CONFIG);
892 MAKE_PIN(P44, CORE_PIN44_PORTREG, CORE_PIN44_BIT, CORE_PIN44_CONFIG);
893 MAKE_PIN(P45, CORE_PIN45_PORTREG, CORE_PIN45_BIT, CORE_PIN45_CONFIG);
894 MAKE_PIN(P46, CORE_PIN46_PORTREG, CORE_PIN46_BIT, CORE_PIN46_CONFIG);
895 MAKE_PIN(P47, CORE_PIN47_PORTREG, CORE_PIN47_BIT, CORE_PIN47_CONFIG);
896 MAKE_PIN(P48, CORE_PIN48_PORTREG, CORE_PIN48_BIT, CORE_PIN48_CONFIG);
897 MAKE_PIN(P49, CORE_PIN49_PORTREG, CORE_PIN49_BIT, CORE_PIN49_CONFIG);
898 MAKE_PIN(P50, CORE_PIN50_PORTREG, CORE_PIN50_BIT, CORE_PIN50_CONFIG);
899 MAKE_PIN(P51, CORE_PIN51_PORTREG, CORE_PIN51_BIT, CORE_PIN51_CONFIG);
900 MAKE_PIN(P52, CORE_PIN52_PORTREG, CORE_PIN52_BIT, CORE_PIN52_CONFIG);
901 MAKE_PIN(P53, CORE_PIN53_PORTREG, CORE_PIN53_BIT, CORE_PIN53_CONFIG);
902 MAKE_PIN(P54, CORE_PIN54_PORTREG, CORE_PIN54_BIT, CORE_PIN54_CONFIG);
903 MAKE_PIN(P55, CORE_PIN55_PORTREG, CORE_PIN55_BIT, CORE_PIN55_CONFIG);
904 MAKE_PIN(P56, CORE_PIN56_PORTREG, CORE_PIN56_BIT, CORE_PIN56_CONFIG);
905 MAKE_PIN(P57, CORE_PIN57_PORTREG, CORE_PIN57_BIT, CORE_PIN57_CONFIG);
906 MAKE_PIN(P58, CORE_PIN58_PORTREG, CORE_PIN58_BIT, CORE_PIN58_CONFIG);
907 MAKE_PIN(P59, CORE_PIN59_PORTREG, CORE_PIN59_BIT, CORE_PIN59_CONFIG);
908 MAKE_PIN(P60, CORE_PIN60_PORTREG, CORE_PIN60_BIT, CORE_PIN60_CONFIG);
909 MAKE_PIN(P61, CORE_PIN61_PORTREG, CORE_PIN61_BIT, CORE_PIN61_CONFIG);
910 MAKE_PIN(P62, CORE_PIN62_PORTREG, CORE_PIN62_BIT, CORE_PIN62_CONFIG);
911 MAKE_PIN(P63, CORE_PIN63_PORTREG, CORE_PIN63_BIT, CORE_PIN63_CONFIG);
912 #endif
913 
914 #undef MAKE_PIN
915 
916 #elif defined(CORE_TEENSY) && (defined(__MKL26Z64__))
917 // Teensy-LC
918 
919 // we could get lower level by making these macros work properly.
920 // for now just use the semi optimised version, it costs a lookup in the pin pgm table per op
921 // but for now it will do.
922 //#define GPIO_BITBAND_ADDR(reg, bit) (((volatile uint8_t *)&(reg) + ((bit) >> 3)))
923 //#define GPIO_BITBAND_MASK(reg, bit) (1<<((bit) & 7))
924 //#define GPIO_BITBAND_PTR(reg, bit) ((volatile uint8_t *)GPIO_BITBAND_ADDR((reg), (bit)))
925 
926 #include "core_pins.h"
927 #include "avr_emulation.h"
928 
929 #define MAKE_PIN(className, baseReg, pinNum, configReg) \
930 class className { \
931 public: \
932  static void Set() { \
933  *portSetRegister(pinNum) = digitalPinToBitMask(pinNum); \
934  } \
935  static void Clear() { \
936  *portClearRegister(pinNum) = digitalPinToBitMask(pinNum); \
937  } \
938  static void SetDirRead() { \
939  configReg = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); \
940  *portModeRegister(pinNum) &= ~digitalPinToBitMask(pinNum); \
941  } \
942  static void SetDirWrite() { \
943  configReg = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); \
944  *portModeRegister(pinNum) |= digitalPinToBitMask(pinNum); \
945  } \
946  static uint8_t IsSet() { \
947  return (*portInputRegister(pinNum) & digitalPinToBitMask(pinNum)) ? 1 : 0; \
948  } \
949 };
950 
951 MAKE_PIN(P0, CORE_PIN0_PORTREG, 0, CORE_PIN0_CONFIG);
952 MAKE_PIN(P1, CORE_PIN1_PORTREG, 1, CORE_PIN1_CONFIG);
953 MAKE_PIN(P2, CORE_PIN2_PORTREG, 2, CORE_PIN2_CONFIG);
954 MAKE_PIN(P3, CORE_PIN3_PORTREG, 3, CORE_PIN3_CONFIG);
955 MAKE_PIN(P4, CORE_PIN4_PORTREG, 4, CORE_PIN4_CONFIG);
956 MAKE_PIN(P5, CORE_PIN5_PORTREG, 5, CORE_PIN5_CONFIG);
957 MAKE_PIN(P6, CORE_PIN6_PORTREG, 6, CORE_PIN6_CONFIG);
958 MAKE_PIN(P7, CORE_PIN7_PORTREG, 7, CORE_PIN7_CONFIG);
959 MAKE_PIN(P8, CORE_PIN8_PORTREG, 8, CORE_PIN8_CONFIG);
960 MAKE_PIN(P9, CORE_PIN9_PORTREG, 9, CORE_PIN9_CONFIG);
961 MAKE_PIN(P10, CORE_PIN10_PORTREG, 10, CORE_PIN10_CONFIG);
962 MAKE_PIN(P11, CORE_PIN11_PORTREG, 11, CORE_PIN11_CONFIG);
963 MAKE_PIN(P12, CORE_PIN12_PORTREG, 12, CORE_PIN12_CONFIG);
964 MAKE_PIN(P13, CORE_PIN13_PORTREG, 13, CORE_PIN13_CONFIG);
965 MAKE_PIN(P14, CORE_PIN14_PORTREG, 14, CORE_PIN14_CONFIG);
966 MAKE_PIN(P15, CORE_PIN15_PORTREG, 15, CORE_PIN15_CONFIG);
967 MAKE_PIN(P16, CORE_PIN16_PORTREG, 16, CORE_PIN16_CONFIG);
968 MAKE_PIN(P17, CORE_PIN17_PORTREG, 17, CORE_PIN17_CONFIG);
969 MAKE_PIN(P18, CORE_PIN18_PORTREG, 18, CORE_PIN18_CONFIG);
970 MAKE_PIN(P19, CORE_PIN19_PORTREG, 19, CORE_PIN19_CONFIG);
971 MAKE_PIN(P20, CORE_PIN20_PORTREG, 20, CORE_PIN20_CONFIG);
972 MAKE_PIN(P21, CORE_PIN21_PORTREG, 21, CORE_PIN21_CONFIG);
973 MAKE_PIN(P22, CORE_PIN22_PORTREG, 22, CORE_PIN22_CONFIG);
974 MAKE_PIN(P23, CORE_PIN23_PORTREG, 23, CORE_PIN23_CONFIG);
975 MAKE_PIN(P24, CORE_PIN24_PORTREG, 24, CORE_PIN24_CONFIG);
976 MAKE_PIN(P25, CORE_PIN25_PORTREG, 25, CORE_PIN25_CONFIG);
977 MAKE_PIN(P26, CORE_PIN26_PORTREG, 26, CORE_PIN26_CONFIG);
978 
979 #undef MAKE_PIN
980 
981 #elif defined(__IMXRT1062__) && (defined(ARDUINO_TEENSY40) || defined(ARDUINO_TEENSY41))
982 // Teensy 4.x
983 
984 #include "core_pins.h"
985 
986 #define MAKE_PIN(className, pin) \
987 class className { \
988 public: \
989  static void Set() { \
990  digitalWriteFast(pin, HIGH);\
991  } \
992  static void Clear() { \
993  digitalWriteFast(pin, LOW); \
994  } \
995  static void SetDirRead() { \
996  pinMode(pin, INPUT); \
997  } \
998  static void SetDirWrite() { \
999  pinMode(pin, OUTPUT); \
1000  } \
1001  static uint8_t IsSet() { \
1002  return digitalReadFast(pin); \
1003  } \
1004 };
1005 
1006 MAKE_PIN(P0, 0);
1007 MAKE_PIN(P1, 1);
1008 MAKE_PIN(P2, 2);
1009 MAKE_PIN(P3, 3);
1010 MAKE_PIN(P4, 4);
1011 MAKE_PIN(P5, 5);
1012 MAKE_PIN(P6, 6);
1013 MAKE_PIN(P7, 7);
1014 MAKE_PIN(P8, 8);
1015 MAKE_PIN(P9, 9);
1016 MAKE_PIN(P10, 10);
1017 MAKE_PIN(P11, 11);
1018 MAKE_PIN(P12, 12);
1019 MAKE_PIN(P13, 13);
1020 MAKE_PIN(P14, 14);
1021 MAKE_PIN(P15, 15);
1022 MAKE_PIN(P16, 16);
1023 MAKE_PIN(P17, 17);
1024 MAKE_PIN(P18, 18);
1025 MAKE_PIN(P19, 19);
1026 MAKE_PIN(P20, 20);
1027 MAKE_PIN(P21, 21);
1028 MAKE_PIN(P22, 22);
1029 MAKE_PIN(P23, 23);
1030 MAKE_PIN(P24, 24);
1031 MAKE_PIN(P25, 25);
1032 MAKE_PIN(P26, 26);
1033 MAKE_PIN(P27, 27);
1034 MAKE_PIN(P28, 28);
1035 MAKE_PIN(P29, 29);
1036 MAKE_PIN(P30, 30);
1037 MAKE_PIN(P31, 31);
1038 MAKE_PIN(P32, 35);
1039 MAKE_PIN(P33, 33);
1040 MAKE_PIN(P34, 34);
1041 MAKE_PIN(P35, 35);
1042 MAKE_PIN(P36, 36);
1043 MAKE_PIN(P37, 37);
1044 MAKE_PIN(P38, 38);
1045 MAKE_PIN(P39, 39);
1046 #ifdef ARDUINO_TEENSY41
1047 MAKE_PIN(P40, 40);
1048 MAKE_PIN(P41, 41);
1049 MAKE_PIN(P42, 42);
1050 MAKE_PIN(P43, 43);
1051 MAKE_PIN(P44, 44);
1052 MAKE_PIN(P45, 45);
1053 MAKE_PIN(P46, 46);
1054 MAKE_PIN(P47, 47);
1055 MAKE_PIN(P48, 48);
1056 MAKE_PIN(P49, 49);
1057 MAKE_PIN(P50, 50);
1058 MAKE_PIN(P51, 51);
1059 MAKE_PIN(P52, 52);
1060 MAKE_PIN(P53, 53);
1061 MAKE_PIN(P54, 54);
1062 #endif
1063 
1064 #undef MAKE_PIN
1065 
1066 #elif defined(ARDUINO_SAM_DUE) && defined(__SAM3X8E__)
1067 
1068 // SetDirRead:
1069 // Disable interrupts
1070 // Disable the pull up resistor
1071 // Set to INPUT
1072 // Enable PIO
1073 
1074 // SetDirWrite:
1075 // Disable interrupts
1076 // Disable the pull up resistor
1077 // Set to OUTPUT
1078 // Enable PIO
1079 
1080 #define MAKE_PIN(className, pio, pinMask) \
1081 class className { \
1082 public: \
1083  static void Set() { \
1084  pio->PIO_SODR = pinMask; \
1085  } \
1086  static void Clear() { \
1087  pio->PIO_CODR = pinMask; \
1088  } \
1089  static void SetDirRead() { \
1090  pio->PIO_IDR = pinMask ; \
1091  pio->PIO_PUDR = pinMask; \
1092  pio->PIO_ODR = pinMask; \
1093  pio->PIO_PER = pinMask; \
1094  } \
1095  static void SetDirWrite() { \
1096  pio->PIO_IDR = pinMask ; \
1097  pio->PIO_PUDR = pinMask; \
1098  pio->PIO_OER = pinMask; \
1099  pio->PIO_PER = pinMask; \
1100  } \
1101  static uint8_t IsSet() { \
1102  return pio->PIO_PDSR & pinMask; \
1103  } \
1104 };
1105 
1106 // See: http://arduino.cc/en/Hacking/PinMappingSAM3X and variant.cpp
1107 
1108 MAKE_PIN(P0, PIOA, PIO_PA8);
1109 MAKE_PIN(P1, PIOA, PIO_PA9);
1110 MAKE_PIN(P2, PIOB, PIO_PB25);
1111 MAKE_PIN(P3, PIOC, PIO_PC28);
1112 MAKE_PIN(P4, PIOC, PIO_PC26);
1113 MAKE_PIN(P5, PIOC, PIO_PC25);
1114 MAKE_PIN(P6, PIOC, PIO_PC24);
1115 MAKE_PIN(P7, PIOC, PIO_PC23);
1116 MAKE_PIN(P8, PIOC, PIO_PC22);
1117 MAKE_PIN(P9, PIOC, PIO_PC21);
1118 MAKE_PIN(P10, PIOC, PIO_PC29);
1119 MAKE_PIN(P11, PIOD, PIO_PD7);
1120 MAKE_PIN(P12, PIOD, PIO_PD8);
1121 MAKE_PIN(P13, PIOB, PIO_PB27);
1122 MAKE_PIN(P14, PIOD, PIO_PD4);
1123 MAKE_PIN(P15, PIOD, PIO_PD5);
1124 MAKE_PIN(P16, PIOA, PIO_PA13);
1125 MAKE_PIN(P17, PIOA, PIO_PA12);
1126 MAKE_PIN(P18, PIOA, PIO_PA11);
1127 MAKE_PIN(P19, PIOA, PIO_PA10);
1128 MAKE_PIN(P20, PIOB, PIO_PB12);
1129 MAKE_PIN(P21, PIOB, PIO_PB13);
1130 MAKE_PIN(P22, PIOB, PIO_PB26);
1131 MAKE_PIN(P23, PIOA, PIO_PA14);
1132 MAKE_PIN(P24, PIOA, PIO_PA15);
1133 MAKE_PIN(P25, PIOD, PIO_PD0);
1134 MAKE_PIN(P26, PIOD, PIO_PD1);
1135 MAKE_PIN(P27, PIOD, PIO_PD2);
1136 MAKE_PIN(P28, PIOD, PIO_PD3);
1137 MAKE_PIN(P29, PIOD, PIO_PD6);
1138 MAKE_PIN(P30, PIOD, PIO_PD9);
1139 MAKE_PIN(P31, PIOA, PIO_PA7);
1140 MAKE_PIN(P32, PIOD, PIO_PD10);
1141 MAKE_PIN(P33, PIOC, PIO_PC1);
1142 MAKE_PIN(P34, PIOC, PIO_PC2);
1143 MAKE_PIN(P35, PIOC, PIO_PC3);
1144 MAKE_PIN(P36, PIOC, PIO_PC4);
1145 MAKE_PIN(P37, PIOC, PIO_PC5);
1146 MAKE_PIN(P38, PIOC, PIO_PC6);
1147 MAKE_PIN(P39, PIOC, PIO_PC7);
1148 MAKE_PIN(P40, PIOC, PIO_PC8);
1149 MAKE_PIN(P41, PIOC, PIO_PC9);
1150 MAKE_PIN(P42, PIOA, PIO_PA19);
1151 MAKE_PIN(P43, PIOA, PIO_PA20);
1152 MAKE_PIN(P44, PIOC, PIO_PC19);
1153 MAKE_PIN(P45, PIOC, PIO_PC18);
1154 MAKE_PIN(P46, PIOC, PIO_PC17);
1155 MAKE_PIN(P47, PIOC, PIO_PC16);
1156 MAKE_PIN(P48, PIOC, PIO_PC15);
1157 MAKE_PIN(P49, PIOC, PIO_PC14);
1158 MAKE_PIN(P50, PIOC, PIO_PC13);
1159 MAKE_PIN(P51, PIOC, PIO_PC12);
1160 MAKE_PIN(P52, PIOB, PIO_PB21);
1161 MAKE_PIN(P53, PIOB, PIO_PB14);
1162 MAKE_PIN(P54, PIOA, PIO_PA16);
1163 MAKE_PIN(P55, PIOA, PIO_PA24);
1164 MAKE_PIN(P56, PIOA, PIO_PA23);
1165 MAKE_PIN(P57, PIOA, PIO_PA22);
1166 MAKE_PIN(P58, PIOA, PIO_PA6);
1167 MAKE_PIN(P59, PIOA, PIO_PA4);
1168 MAKE_PIN(P60, PIOA, PIO_PA3);
1169 MAKE_PIN(P61, PIOA, PIO_PA2);
1170 MAKE_PIN(P62, PIOB, PIO_PB17);
1171 MAKE_PIN(P63, PIOB, PIO_PB18);
1172 MAKE_PIN(P64, PIOB, PIO_PB19);
1173 MAKE_PIN(P65, PIOB, PIO_PB20);
1174 MAKE_PIN(P66, PIOB, PIO_PB15);
1175 MAKE_PIN(P67, PIOB, PIO_PB16);
1176 MAKE_PIN(P68, PIOA, PIO_PA1);
1177 MAKE_PIN(P69, PIOA, PIO_PA0);
1178 MAKE_PIN(P70, PIOA, PIO_PA17);
1179 MAKE_PIN(P71, PIOA, PIO_PA18);
1180 MAKE_PIN(P72, PIOC, PIO_PC30);
1181 MAKE_PIN(P73, PIOA, PIO_PA21);
1182 MAKE_PIN(P74, PIOA, PIO_PA25); // MISO
1183 MAKE_PIN(P75, PIOA, PIO_PA26); // MOSI
1184 MAKE_PIN(P76, PIOA, PIO_PA27); // CLK
1185 MAKE_PIN(P77, PIOA, PIO_PA28);
1186 MAKE_PIN(P78, PIOB, PIO_PB23); // Unconnected
1187 
1188 #undef MAKE_PIN
1189 
1190 #elif defined(RBL_NRF51822)
1191 
1192 #define MAKE_PIN(className, pin) \
1193 class className { \
1194 public: \
1195  static void Set() { \
1196  nrf_gpio_pin_set(pin); \
1197  } \
1198  static void Clear() { \
1199  nrf_gpio_pin_clear(pin); \
1200  } \
1201  static void SetDirRead() { \
1202  nrf_gpio_cfg_input(pin, NRF_GPIO_PIN_NOPULL); \
1203  } \
1204  static void SetDirWrite() { \
1205  nrf_gpio_cfg_output(pin); \
1206  } \
1207  static uint8_t IsSet() { \
1208  return (uint8_t)nrf_gpio_pin_read(pin); \
1209  } \
1210 };
1211 
1212 // See: pin_transform.c in RBL nRF51822 SDK
1213 MAKE_PIN(P0, Pin_nRF51822_to_Arduino(D0));
1214 MAKE_PIN(P1, Pin_nRF51822_to_Arduino(D1));
1215 MAKE_PIN(P2, Pin_nRF51822_to_Arduino(D2));
1216 MAKE_PIN(P3, Pin_nRF51822_to_Arduino(D3));
1217 MAKE_PIN(P4, Pin_nRF51822_to_Arduino(D4));
1218 MAKE_PIN(P5, Pin_nRF51822_to_Arduino(D5));
1219 MAKE_PIN(P6, Pin_nRF51822_to_Arduino(D6));
1220 MAKE_PIN(P7, Pin_nRF51822_to_Arduino(D7));
1221 MAKE_PIN(P8, Pin_nRF51822_to_Arduino(D8));
1222 MAKE_PIN(P9, Pin_nRF51822_to_Arduino(D9)); // INT
1223 MAKE_PIN(P10, Pin_nRF51822_to_Arduino(D10)); // SS
1224 MAKE_PIN(P11, Pin_nRF51822_to_Arduino(D11));
1225 MAKE_PIN(P12, Pin_nRF51822_to_Arduino(D12));
1226 MAKE_PIN(P13, Pin_nRF51822_to_Arduino(D13));
1227 MAKE_PIN(P14, Pin_nRF51822_to_Arduino(D14));
1228 MAKE_PIN(P15, Pin_nRF51822_to_Arduino(D15));
1229 MAKE_PIN(P17, Pin_nRF51822_to_Arduino(D17)); // MISO
1230 MAKE_PIN(P18, Pin_nRF51822_to_Arduino(D18)); // MOSI
1231 MAKE_PIN(P16, Pin_nRF51822_to_Arduino(D16)); // CLK
1232 MAKE_PIN(P19, Pin_nRF51822_to_Arduino(D19));
1233 MAKE_PIN(P20, Pin_nRF51822_to_Arduino(D20));
1234 MAKE_PIN(P21, Pin_nRF51822_to_Arduino(D21));
1235 MAKE_PIN(P22, Pin_nRF51822_to_Arduino(D22));
1236 MAKE_PIN(P23, Pin_nRF51822_to_Arduino(D23));
1237 MAKE_PIN(P24, Pin_nRF51822_to_Arduino(D24));
1238 
1239 #undef MAKE_PIN
1240 
1241 #elif defined(STM32F446xx)
1242 // NUCLEO-F446RE
1243 
1244 #define MAKE_PIN(className, port, pin) \
1245 class className { \
1246 public: \
1247  static void Set() { \
1248  HAL_GPIO_WritePin(port, pin, GPIO_PIN_SET); \
1249  } \
1250  static void Clear() { \
1251  HAL_GPIO_WritePin(port, pin, GPIO_PIN_RESET); \
1252  } \
1253  static void SetDirRead() { \
1254  static GPIO_InitTypeDef GPIO_InitStruct; \
1255  GPIO_InitStruct.Pin = pin; \
1256  GPIO_InitStruct.Mode = GPIO_MODE_INPUT; \
1257  GPIO_InitStruct.Pull = GPIO_NOPULL; \
1258  HAL_GPIO_Init(port, &GPIO_InitStruct); \
1259  } \
1260  static void SetDirWrite() { \
1261  static GPIO_InitTypeDef GPIO_InitStruct; \
1262  GPIO_InitStruct.Pin = pin; \
1263  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; \
1264  GPIO_InitStruct.Pull = GPIO_NOPULL; \
1265  GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; \
1266  HAL_GPIO_Init(port, &GPIO_InitStruct); \
1267  } \
1268  static GPIO_PinState IsSet() { \
1269  return HAL_GPIO_ReadPin(port, pin); \
1270  } \
1271 };
1272 
1273 MAKE_PIN(P0, GPIOA, GPIO_PIN_3); // D0
1274 MAKE_PIN(P1, GPIOA, GPIO_PIN_2); // D1
1275 MAKE_PIN(P2, GPIOA, GPIO_PIN_10); // D2
1276 MAKE_PIN(P3, GPIOB, GPIO_PIN_3); // D3
1277 MAKE_PIN(P4, GPIOB, GPIO_PIN_5); // D4
1278 MAKE_PIN(P5, GPIOB, GPIO_PIN_4); // D5
1279 MAKE_PIN(P6, GPIOB, GPIO_PIN_10); // D6
1280 MAKE_PIN(P7, GPIOA, GPIO_PIN_8); // D7
1281 MAKE_PIN(P8, GPIOA, GPIO_PIN_9); // D8
1282 MAKE_PIN(P9, GPIOC, GPIO_PIN_7); // D9
1283 MAKE_PIN(P10, GPIOB, GPIO_PIN_6); // D10
1284 MAKE_PIN(P11, GPIOA, GPIO_PIN_7); // D11
1285 MAKE_PIN(P12, GPIOA, GPIO_PIN_6); // D12
1286 MAKE_PIN(P13, GPIOA, GPIO_PIN_5); // D13
1287 
1288 MAKE_PIN(P14, GPIOA, GPIO_PIN_0); // A0
1289 MAKE_PIN(P15, GPIOA, GPIO_PIN_1); // A1
1290 MAKE_PIN(P16, GPIOA, GPIO_PIN_4); // A2
1291 MAKE_PIN(P17, GPIOB, GPIO_PIN_0); // A3
1292 MAKE_PIN(P18, GPIOC, GPIO_PIN_1); // A4
1293 MAKE_PIN(P19, GPIOC, GPIO_PIN_0); // A5
1294 
1295 #undef MAKE_PIN
1296 
1297 #else
1298 #error "Please define board in avrpins.h"
1299 
1300 #endif
1301 
1302 #elif defined(__ARDUINO_ARC__)
1303 
1304 #include <avr/pgmspace.h>
1305 // Pointers are 32 bits on arc
1306 #define pgm_read_pointer(p) pgm_read_dword(p)
1307 
1308 #define MAKE_PIN(className, pin) \
1309 class className { \
1310 public: \
1311  static void Set() { \
1312  digitalWrite(pin, HIGH);\
1313  } \
1314  static void Clear() { \
1315  digitalWrite(pin, LOW); \
1316  } \
1317  static void SetDirRead() { \
1318  pinMode(pin, INPUT); \
1319  } \
1320  static void SetDirWrite() { \
1321  pinMode(pin, OUTPUT); \
1322  } \
1323  static uint8_t IsSet() { \
1324  return digitalRead(pin); \
1325  } \
1326 };
1327 
1328 MAKE_PIN(P0, 0);
1329 MAKE_PIN(P1, 1);
1330 MAKE_PIN(P2, 2);
1331 MAKE_PIN(P3, 3); //PWM
1332 MAKE_PIN(P4, 4);
1333 MAKE_PIN(P5, 5); //PWM
1334 MAKE_PIN(P6, 6); //PWM
1335 MAKE_PIN(P7, 7);
1336 MAKE_PIN(P8, 8);
1337 MAKE_PIN(P9, 9); //PWM
1338 
1339 MAKE_PIN(P10, 10); //SPI SS
1340 MAKE_PIN(P11, 11); //SPI MOSI
1341 MAKE_PIN(P12, 12); //SPI MISO
1342 MAKE_PIN(P13, 13); //SPI SCK / BUILTIN LED
1343 
1344 MAKE_PIN(P14, 14); // A0
1345 MAKE_PIN(P15, 15); // A1
1346 MAKE_PIN(P16, 16); // A2
1347 MAKE_PIN(P17, 17); // A3
1348 MAKE_PIN(P18, 18); // A4 SDA
1349 MAKE_PIN(P19, 19); // A5 SCL
1350 MAKE_PIN(P20, 20); // ATN
1351 
1352 #undef MAKE_PIN
1353 
1354 #elif defined(__ARDUINO_X86__) // Intel Galileo, Intel Galileo 2 and Intel Edison
1355 
1356 #include <avr/pgmspace.h>
1357 
1358 // Pointers are 32 bits on x86
1359 #define pgm_read_pointer(p) pgm_read_dword(p)
1360 
1361 #if PLATFORM_ID == 0xE1 // Edison platform id
1362 #define pinToFastPin(pin) 1 // As far as I can tell all pins can be used as fast pins
1363 #endif
1364 
1365 // Pin 2 and 3 on the Intel Galileo supports a higher rate,
1366 // so it is recommended to use one of these as the SS pin.
1367 
1368 #define MAKE_PIN(className, pin) \
1369 class className { \
1370 public: \
1371  static void Set() { \
1372  fastDigitalWrite(pin, HIGH); \
1373  } \
1374  static void Clear() { \
1375  fastDigitalWrite(pin, LOW); \
1376  } \
1377  static void SetDirRead() { \
1378  if (pinToFastPin(pin)) \
1379  pinMode(pin, INPUT_FAST); \
1380  else \
1381  pinMode(pin, INPUT); \
1382  } \
1383  static void SetDirWrite() { \
1384  if (pinToFastPin(pin)) \
1385  pinMode(pin, OUTPUT_FAST); \
1386  else \
1387  pinMode(pin, OUTPUT); \
1388  } \
1389  static uint8_t IsSet() { \
1390  return fastDigitalRead(pin); \
1391  } \
1392 };
1393 
1394 MAKE_PIN(P0, 0);
1395 MAKE_PIN(P1, 1);
1396 MAKE_PIN(P2, 2);
1397 MAKE_PIN(P3, 3);
1398 MAKE_PIN(P4, 4);
1399 MAKE_PIN(P5, 5);
1400 MAKE_PIN(P6, 6);
1401 MAKE_PIN(P7, 7);
1402 MAKE_PIN(P8, 8);
1403 MAKE_PIN(P9, 9);
1404 MAKE_PIN(P10, 10);
1405 MAKE_PIN(P11, 11);
1406 MAKE_PIN(P12, 12);
1407 MAKE_PIN(P13, 13);
1408 MAKE_PIN(P14, 14); // A0
1409 MAKE_PIN(P15, 15); // A1
1410 MAKE_PIN(P16, 16); // A2
1411 MAKE_PIN(P17, 17); // A3
1412 MAKE_PIN(P18, 18); // A4
1413 MAKE_PIN(P19, 19); // A5
1414 
1415 #undef MAKE_PIN
1416 
1417 #elif defined(__MIPSEL__)
1418 // MIPSEL (MIPS architecture using a little endian byte order)
1419 
1420 // MIPS size_t = 4
1421 #define pgm_read_pointer(p) pgm_read_dword(p)
1422 
1423 #define MAKE_PIN(className, pin) \
1424 class className { \
1425 public: \
1426  static void Set() { \
1427  digitalWrite(pin, HIGH);\
1428  } \
1429  static void Clear() { \
1430  digitalWrite(pin, LOW); \
1431  } \
1432  static void SetDirRead() { \
1433  pinMode(pin, INPUT); \
1434  } \
1435  static void SetDirWrite() { \
1436  pinMode(pin, OUTPUT); \
1437  } \
1438  static uint8_t IsSet() { \
1439  return digitalRead(pin); \
1440  } \
1441 };
1442 
1443 // 0 .. 13 - Digital pins
1444 MAKE_PIN(P0, 0); // RX
1445 MAKE_PIN(P1, 1); // TX
1446 MAKE_PIN(P2, 2); //
1447 MAKE_PIN(P3, 3); //
1448 MAKE_PIN(P4, 4); //
1449 MAKE_PIN(P5, 5); //
1450 MAKE_PIN(P6, 6); //
1451 MAKE_PIN(P7, 7); //
1452 MAKE_PIN(P8, 8); //
1453 MAKE_PIN(P9, 9); //
1454 MAKE_PIN(P10, 10); //
1455 MAKE_PIN(P11, 11); //
1456 MAKE_PIN(P12, 12); //
1457 MAKE_PIN(P13, 13); //
1458 
1459 #undef MAKE_PIN
1460 
1461 #elif defined(ESP8266) || defined(ESP32)
1462 
1463 #define MAKE_PIN(className, pin) \
1464 class className { \
1465 public: \
1466  static void Set() { \
1467  digitalWrite(pin, HIGH);\
1468  } \
1469  static void Clear() { \
1470  digitalWrite(pin, LOW); \
1471  } \
1472  static void SetDirRead() { \
1473  pinMode(pin, INPUT); \
1474  } \
1475  static void SetDirWrite() { \
1476  pinMode(pin, OUTPUT); \
1477  } \
1478  static uint8_t IsSet() { \
1479  return digitalRead(pin); \
1480  } \
1481 };
1482 
1483 #if defined(ESP8266)
1484 
1485 // Workaround the following issue: https://github.com/esp8266/Arduino/pull/5735
1486 #undef pgm_read_ptr_aligned
1487 #ifdef __cplusplus
1488 #define pgm_read_ptr_aligned(addr) (*reinterpret_cast<const void* const*>(addr))
1489 #else
1490 #define pgm_read_ptr_aligned(addr) (*(const void* const*)(addr))
1491 #endif
1492 
1493 #undef pgm_read_ptr
1494 #if PGM_READ_UNALIGNED
1495 #define pgm_read_ptr(p) pgm_read_ptr_unaligned(p)
1496 #else
1497 #define pgm_read_ptr(p) pgm_read_ptr_aligned(p)
1498 #endif
1499 
1500 #ifdef pgm_read_pointer
1501 #undef pgm_read_pointer
1502 #endif
1503 #define pgm_read_pointer(p) pgm_read_ptr(p)
1504 
1505 // Pinout for ESP-12 module
1506 // 0 .. 16 - Digital pins
1507 // GPIO 6 to 11 and 16 are not usable in this library.
1508 
1509 MAKE_PIN(P0, 0);
1510 MAKE_PIN(P1, 1); // TX0
1511 MAKE_PIN(P2, 2); // TX1
1512 MAKE_PIN(P3, 3); // RX0
1513 MAKE_PIN(P4, 4); // SDA
1514 MAKE_PIN(P5, 5); // SCL
1515 MAKE_PIN(P12, 12); // MISO
1516 MAKE_PIN(P13, 13); // MOSI
1517 MAKE_PIN(P14, 14); // SCK
1518 MAKE_PIN(P15, 15); // SS
1519 
1520 #elif defined(ESP32)
1521 
1522 // Workaround strict-aliasing warnings
1523 #ifdef pgm_read_word
1524 #undef pgm_read_word
1525 #endif
1526 #ifdef pgm_read_dword
1527 #undef pgm_read_dword
1528 #endif
1529 #ifdef pgm_read_float
1530 #undef pgm_read_float
1531 #endif
1532 #ifdef pgm_read_ptr
1533 #undef pgm_read_ptr
1534 #endif
1535 
1536 #define pgm_read_word(addr) ({ \
1537  typeof(addr) _addr = (addr); \
1538  *(const unsigned short *)(_addr); \
1539 })
1540 #define pgm_read_dword(addr) ({ \
1541  typeof(addr) _addr = (addr); \
1542  *(const unsigned long *)(_addr); \
1543 })
1544 #define pgm_read_float(addr) ({ \
1545  typeof(addr) _addr = (addr); \
1546  *(const float *)(_addr); \
1547 })
1548 #define pgm_read_ptr(addr) ({ \
1549  typeof(addr) _addr = (addr); \
1550  *(void * const *)(_addr); \
1551 })
1552 
1553 // Pinout for ESP32 dev module
1554 
1555 MAKE_PIN(P0, 0);
1556 MAKE_PIN(P1, 1); // TX0
1557 MAKE_PIN(P10, 10); // TX1
1558 MAKE_PIN(P3, 3); // RX0
1559 MAKE_PIN(P21, 21); // SDA
1560 MAKE_PIN(P22, 22); // SCL
1561 MAKE_PIN(P19, 19); // MISO
1562 MAKE_PIN(P23, 23); // MOSI
1563 MAKE_PIN(P18, 18); // SCK
1564 MAKE_PIN(P5, 5); // SS
1565 MAKE_PIN(P17, 17); // INT
1566 
1567 #endif
1568 
1569 #undef MAKE_PIN
1570 
1571 // pgm_read_ptr is not defined in the ESP32, so we have to undef the diffinition from version_helper.h
1572 #ifdef pgm_read_pointer
1573 #undef pgm_read_pointer
1574 #endif
1575 #define pgm_read_pointer(p) pgm_read_ptr(p)
1576 
1577 #else
1578 #error "Please define board in avrpins.h"
1579 
1580 #endif
1581 
1582 #endif //_avrpins_h_
diff --git a/cdc___x_r21_b1411_8cpp.html b/cdc___x_r21_b1411_8cpp.html index 6a714c66..b09f7080 100644 --- a/cdc___x_r21_b1411_8cpp.html +++ b/cdc___x_r21_b1411_8cpp.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: cdc_XR21B1411.cpp File Reference @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + +
- - - + + +
@@ -104,7 +81,7 @@ Include dependency graph for cdc_XR21B1411.cpp: diff --git a/cdc___x_r21_b1411_8cpp__incl.map b/cdc___x_r21_b1411_8cpp__incl.map index b598ec85..bdf1f4c9 100644 --- a/cdc___x_r21_b1411_8cpp__incl.map +++ b/cdc___x_r21_b1411_8cpp__incl.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/cdc___x_r21_b1411_8cpp__incl.md5 b/cdc___x_r21_b1411_8cpp__incl.md5 index 488365a4..96940093 100644 --- a/cdc___x_r21_b1411_8cpp__incl.md5 +++ b/cdc___x_r21_b1411_8cpp__incl.md5 @@ -1 +1 @@ -94c1f3e832d30d1e0699ba30de20f4fa \ No newline at end of file +91e9029051e41cc4e0144ef4cbbca25d \ No newline at end of file diff --git a/cdc___x_r21_b1411_8cpp__incl.png b/cdc___x_r21_b1411_8cpp__incl.png index c73f1f3f..95ebcd53 100644 Binary files a/cdc___x_r21_b1411_8cpp__incl.png and b/cdc___x_r21_b1411_8cpp__incl.png differ diff --git a/cdc___x_r21_b1411_8cpp_source.html b/cdc___x_r21_b1411_8cpp_source.html index 58d197cc..8ec355bb 100644 --- a/cdc___x_r21_b1411_8cpp_source.html +++ b/cdc___x_r21_b1411_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: cdc_XR21B1411.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - + +
@@ -104,7 +81,7 @@ This graph shows which files directly or indirectly include this file:
- +
@@ -231,7 +208,9 @@ Macros  

Macro Definition Documentation

- + +

◆ XR_REG_CUSTOM_DRIVER

+
@@ -241,11 +220,13 @@ Macros
-

Definition at line 24 of file cdc_XR21B1411.h.

+

Definition at line 24 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_CUSTOM_DRIVER_ACTIVE

+
@@ -255,11 +236,13 @@ Macros
-

Definition at line 25 of file cdc_XR21B1411.h.

+

Definition at line 25 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_ACM_FLOW_CTL

+
@@ -269,11 +252,13 @@ Macros
-

Definition at line 27 of file cdc_XR21B1411.h.

+

Definition at line 27 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_FLOW_CTL

+
@@ -283,11 +268,13 @@ Macros
-

Definition at line 28 of file cdc_XR21B1411.h.

+

Definition at line 28 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_FLOW_CTL_HALF_DPLX

+
@@ -297,11 +284,13 @@ Macros
-

Definition at line 29 of file cdc_XR21B1411.h.

+

Definition at line 29 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_FLOW_CTL_MODE_MASK

+
@@ -311,11 +300,13 @@ Macros
-

Definition at line 30 of file cdc_XR21B1411.h.

+

Definition at line 30 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_FLOW_CTL_NONE

+
@@ -325,11 +316,13 @@ Macros
-

Definition at line 31 of file cdc_XR21B1411.h.

+

Definition at line 31 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_FLOW_CTL_HW

+
@@ -339,11 +332,13 @@ Macros
-

Definition at line 32 of file cdc_XR21B1411.h.

+

Definition at line 32 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_FLOW_CTL_SW

+
@@ -353,11 +348,13 @@ Macros
-

Definition at line 33 of file cdc_XR21B1411.h.

+

Definition at line 33 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_FLOW_CTL_MMMRX

+
@@ -367,11 +364,13 @@ Macros
-

Definition at line 34 of file cdc_XR21B1411.h.

+

Definition at line 34 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_FLOW_CTL_MMMRXTX

+
@@ -381,11 +380,13 @@ Macros
-

Definition at line 35 of file cdc_XR21B1411.h.

+

Definition at line 35 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_ACM_GPIO_MODE

+
@@ -395,11 +396,13 @@ Macros
-

Definition at line 37 of file cdc_XR21B1411.h.

+

Definition at line 37 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_GPIO_MODE

+
@@ -409,11 +412,13 @@ Macros
-

Definition at line 38 of file cdc_XR21B1411.h.

+

Definition at line 38 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_GPIO_MODE_GPIO

+
@@ -423,11 +428,13 @@ Macros
-

Definition at line 39 of file cdc_XR21B1411.h.

+

Definition at line 39 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_GPIO_MODE_FC_RTSCTS

+
@@ -437,11 +444,13 @@ Macros
-

Definition at line 40 of file cdc_XR21B1411.h.

+

Definition at line 40 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_GPIO_MODE_FC_DTRDSR

+
@@ -451,11 +460,13 @@ Macros
-

Definition at line 41 of file cdc_XR21B1411.h.

+

Definition at line 41 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_GPIO_MODE_ATE

+
@@ -465,11 +476,13 @@ Macros
-

Definition at line 42 of file cdc_XR21B1411.h.

+

Definition at line 42 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_GPIO_MODE_ATE_ADDRESS

+
@@ -479,11 +492,13 @@ Macros
-

Definition at line 43 of file cdc_XR21B1411.h.

+

Definition at line 43 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_ACM_GPIO_DIR

+
@@ -493,11 +508,13 @@ Macros
-

Definition at line 45 of file cdc_XR21B1411.h.

+

Definition at line 45 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_GPIO_DIR

+
@@ -507,11 +524,13 @@ Macros
-

Definition at line 46 of file cdc_XR21B1411.h.

+

Definition at line 46 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_ACM_GPIO_INT

+
@@ -521,11 +540,13 @@ Macros
-

Definition at line 48 of file cdc_XR21B1411.h.

+

Definition at line 48 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_GPIO_INT

+
@@ -535,11 +556,13 @@ Macros
-

Definition at line 49 of file cdc_XR21B1411.h.

+

Definition at line 49 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_GPIO_MASK

+
@@ -549,11 +572,13 @@ Macros
-

Definition at line 50 of file cdc_XR21B1411.h.

+

Definition at line 50 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_UART_ENABLE

+
@@ -563,11 +588,13 @@ Macros
-

Definition at line 52 of file cdc_XR21B1411.h.

+

Definition at line 52 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_UART_ENABLE_RX

+
@@ -577,11 +604,13 @@ Macros
-

Definition at line 53 of file cdc_XR21B1411.h.

+

Definition at line 53 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_UART_ENABLE_TX

+
@@ -591,11 +620,13 @@ Macros
-

Definition at line 54 of file cdc_XR21B1411.h.

+

Definition at line 54 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_ERROR_STATUS

+
@@ -605,11 +636,13 @@ Macros
-

Definition at line 56 of file cdc_XR21B1411.h.

+

Definition at line 56 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_ERROR_STATUS_MASK

+
@@ -619,11 +652,13 @@ Macros
-

Definition at line 57 of file cdc_XR21B1411.h.

+

Definition at line 57 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_ERROR_STATUS_ERROR

+
@@ -633,11 +668,13 @@ Macros
-

Definition at line 58 of file cdc_XR21B1411.h.

+

Definition at line 58 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_ERROR_STATUS_BREAK

+
@@ -647,11 +684,13 @@ Macros
-

Definition at line 59 of file cdc_XR21B1411.h.

+

Definition at line 59 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_ERROR_STATUS_OVERRUN

+
@@ -661,11 +700,13 @@ Macros
-

Definition at line 60 of file cdc_XR21B1411.h.

+

Definition at line 60 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_ERROR_STATUS_PARITY

+
@@ -675,11 +716,13 @@ Macros
-

Definition at line 61 of file cdc_XR21B1411.h.

+

Definition at line 61 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_ERROR_STATUS_FRAME

+
@@ -689,11 +732,13 @@ Macros
-

Definition at line 62 of file cdc_XR21B1411.h.

+

Definition at line 62 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_ERROR_STATUS_BREAKING

+
@@ -703,11 +748,13 @@ Macros
-

Definition at line 63 of file cdc_XR21B1411.h.

+

Definition at line 63 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_TX_BREAK

+
@@ -717,11 +764,13 @@ Macros
-

Definition at line 65 of file cdc_XR21B1411.h.

+

Definition at line 65 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_XCVR_EN_DELAY

+
@@ -731,11 +780,13 @@ Macros
-

Definition at line 67 of file cdc_XR21B1411.h.

+

Definition at line 67 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_GPIO_SET

+
@@ -745,11 +796,13 @@ Macros
-

Definition at line 69 of file cdc_XR21B1411.h.

+

Definition at line 69 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_GPIO_CLR

+
@@ -759,11 +812,13 @@ Macros
-

Definition at line 71 of file cdc_XR21B1411.h.

+

Definition at line 71 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_GPIO_STATUS

+
@@ -773,11 +828,13 @@ Macros
-

Definition at line 73 of file cdc_XR21B1411.h.

+

Definition at line 73 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_CUSTOMISED_INT

+
@@ -787,11 +844,13 @@ Macros
-

Definition at line 75 of file cdc_XR21B1411.h.

+

Definition at line 75 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_PIN_PULLUP_ENABLE

+
@@ -801,11 +860,13 @@ Macros
-

Definition at line 77 of file cdc_XR21B1411.h.

+

Definition at line 77 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_PIN_PULLDOWN_ENABLE

+
@@ -815,11 +876,13 @@ Macros
-

Definition at line 79 of file cdc_XR21B1411.h.

+

Definition at line 79 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_LOOPBACK

+
@@ -829,11 +892,13 @@ Macros
-

Definition at line 81 of file cdc_XR21B1411.h.

+

Definition at line 81 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_RX_FIFO_LATENCY

+
@@ -843,11 +908,13 @@ Macros
-

Definition at line 83 of file cdc_XR21B1411.h.

+

Definition at line 83 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_RX_FIFO_LATENCY_ENABLE

+
@@ -857,11 +924,13 @@ Macros
-

Definition at line 84 of file cdc_XR21B1411.h.

+

Definition at line 84 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_WIDE_MODE

+
@@ -871,11 +940,13 @@ Macros
-

Definition at line 86 of file cdc_XR21B1411.h.

+

Definition at line 86 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_WIDE_MODE_ENABLE

+
@@ -885,11 +956,13 @@ Macros
-

Definition at line 87 of file cdc_XR21B1411.h.

+

Definition at line 87 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_XON_CHAR

+
@@ -899,11 +972,13 @@ Macros
-

Definition at line 89 of file cdc_XR21B1411.h.

+

Definition at line 89 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_XOFF_CHAR

+
@@ -913,11 +988,13 @@ Macros
-

Definition at line 90 of file cdc_XR21B1411.h.

+

Definition at line 90 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_TX_FIFO_RESET

+
@@ -927,11 +1004,13 @@ Macros
-

Definition at line 92 of file cdc_XR21B1411.h.

+

Definition at line 92 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_TX_FIFO_COUNT

+
@@ -941,11 +1020,13 @@ Macros
-

Definition at line 93 of file cdc_XR21B1411.h.

+

Definition at line 93 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_RX_FIFO_RESET

+
@@ -955,11 +1036,13 @@ Macros
-

Definition at line 94 of file cdc_XR21B1411.h.

+

Definition at line 94 of file cdc_XR21B1411.h.

- + +

◆ XR_REG_RX_FIFO_COUNT

+
@@ -969,11 +1052,13 @@ Macros
-

Definition at line 95 of file cdc_XR21B1411.h.

+

Definition at line 95 of file cdc_XR21B1411.h.

- + +

◆ XR_WRITE_REQUEST_TYPE

+
@@ -983,11 +1068,13 @@ Macros
-

Definition at line 97 of file cdc_XR21B1411.h.

+

Definition at line 97 of file cdc_XR21B1411.h.

- + +

◆ XR_READ_REQUEST_TYPE

+
@@ -997,11 +1084,13 @@ Macros
-

Definition at line 99 of file cdc_XR21B1411.h.

+

Definition at line 99 of file cdc_XR21B1411.h.

- + +

◆ XR_MAX_ENDPOINTS

+
@@ -1011,7 +1100,7 @@ Macros
-

Definition at line 101 of file cdc_XR21B1411.h.

+

Definition at line 101 of file cdc_XR21B1411.h.

@@ -1020,7 +1109,7 @@ Macros diff --git a/cdc___x_r21_b1411_8h__dep__incl.map b/cdc___x_r21_b1411_8h__dep__incl.map index 392b1227..5a1d6fde 100644 --- a/cdc___x_r21_b1411_8h__dep__incl.map +++ b/cdc___x_r21_b1411_8h__dep__incl.map @@ -1,3 +1,3 @@ - + diff --git a/cdc___x_r21_b1411_8h__dep__incl.md5 b/cdc___x_r21_b1411_8h__dep__incl.md5 index d1f48836..ccb81d4b 100644 --- a/cdc___x_r21_b1411_8h__dep__incl.md5 +++ b/cdc___x_r21_b1411_8h__dep__incl.md5 @@ -1 +1 @@ -250b78e5b50dfc5c4569c99531678ec3 \ No newline at end of file +e53d5ac5df7beb8def48e46bf452afe4 \ No newline at end of file diff --git a/cdc___x_r21_b1411_8h__dep__incl.png b/cdc___x_r21_b1411_8h__dep__incl.png index 9fed7616..60a0dc96 100644 Binary files a/cdc___x_r21_b1411_8h__dep__incl.png and b/cdc___x_r21_b1411_8h__dep__incl.png differ diff --git a/cdc___x_r21_b1411_8h__incl.map b/cdc___x_r21_b1411_8h__incl.map index d6f9b68d..2fe685fb 100644 --- a/cdc___x_r21_b1411_8h__incl.map +++ b/cdc___x_r21_b1411_8h__incl.map @@ -1,4 +1,4 @@ - - + + diff --git a/cdc___x_r21_b1411_8h__incl.md5 b/cdc___x_r21_b1411_8h__incl.md5 index 8ab25f05..833d38dd 100644 --- a/cdc___x_r21_b1411_8h__incl.md5 +++ b/cdc___x_r21_b1411_8h__incl.md5 @@ -1 +1 @@ -ab5d3dff2680fe378e5afcfe3049b74b \ No newline at end of file +81ae8245618e642787cd8f06ec2914c8 \ No newline at end of file diff --git a/cdc___x_r21_b1411_8h__incl.png b/cdc___x_r21_b1411_8h__incl.png index a99ae5d3..e2c2a58d 100644 Binary files a/cdc___x_r21_b1411_8h__incl.png and b/cdc___x_r21_b1411_8h__incl.png differ diff --git a/cdc___x_r21_b1411_8h_source.html b/cdc___x_r21_b1411_8h_source.html index e8acb852..8155ce15 100644 --- a/cdc___x_r21_b1411_8h_source.html +++ b/cdc___x_r21_b1411_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: cdc_XR21B1411.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - + +
@@ -103,7 +80,7 @@ Include dependency graph for cdcacm.cpp: diff --git a/cdcacm_8cpp__incl.map b/cdcacm_8cpp__incl.map index fe3ebf6c..b534d4e4 100644 --- a/cdcacm_8cpp__incl.map +++ b/cdcacm_8cpp__incl.map @@ -1,4 +1,4 @@ - - + + diff --git a/cdcacm_8cpp__incl.md5 b/cdcacm_8cpp__incl.md5 index 9fd4609d..de6f288e 100644 --- a/cdcacm_8cpp__incl.md5 +++ b/cdcacm_8cpp__incl.md5 @@ -1 +1 @@ -8836c5951dac28c739547b666b24d9f8 \ No newline at end of file +dc13b74ea4b2ee21c679139ece235c5e \ No newline at end of file diff --git a/cdcacm_8cpp__incl.png b/cdcacm_8cpp__incl.png index b16418d4..e7c2ccea 100644 Binary files a/cdcacm_8cpp__incl.png and b/cdcacm_8cpp__incl.png differ diff --git a/cdcacm_8cpp_source.html b/cdcacm_8cpp_source.html index 90689eb2..7cfaa2f7 100644 --- a/cdcacm_8cpp_source.html +++ b/cdcacm_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: cdcacm.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- +
@@ -104,11 +81,11 @@ This graph shows which files directly or indirectly include this file:
- - - - - + + + + +
@@ -250,7 +227,9 @@ Typedefs  

Macro Definition Documentation

- + +

◆ bmREQ_CDCOUT

+
@@ -260,11 +239,13 @@ Typedefs
-

Definition at line 22 of file cdcacm.h.

+

Definition at line 22 of file cdcacm.h.

- + +

◆ bmREQ_CDCIN

+
@@ -274,11 +255,13 @@ Typedefs
-

Definition at line 23 of file cdcacm.h.

+

Definition at line 23 of file cdcacm.h.

- + +

◆ CDC_SUBCLASS_DLCM

+
@@ -288,11 +271,13 @@ Typedefs
-

Definition at line 26 of file cdcacm.h.

+

Definition at line 26 of file cdcacm.h.

- + +

◆ CDC_SUBCLASS_ACM

+
@@ -302,11 +287,13 @@ Typedefs
-

Definition at line 27 of file cdcacm.h.

+

Definition at line 27 of file cdcacm.h.

- + +

◆ CDC_SUBCLASS_TCM

+
@@ -316,11 +303,13 @@ Typedefs
-

Definition at line 28 of file cdcacm.h.

+

Definition at line 28 of file cdcacm.h.

- + +

◆ CDC_SUBCLASS_MCCM

+
@@ -330,11 +319,13 @@ Typedefs
-

Definition at line 29 of file cdcacm.h.

+

Definition at line 29 of file cdcacm.h.

- + +

◆ CDC_SUBCLASS_CAPI

+
@@ -344,11 +335,13 @@ Typedefs
-

Definition at line 30 of file cdcacm.h.

+

Definition at line 30 of file cdcacm.h.

- + +

◆ CDC_SUBCLASS_ETHERNET

+
@@ -358,11 +351,13 @@ Typedefs
-

Definition at line 31 of file cdcacm.h.

+

Definition at line 31 of file cdcacm.h.

- + +

◆ CDC_SUBCLASS_ATM

+
@@ -372,11 +367,13 @@ Typedefs
-

Definition at line 32 of file cdcacm.h.

+

Definition at line 32 of file cdcacm.h.

- + +

◆ CDC_SUBCLASS_WIRELESS_HANDSET

+
@@ -386,11 +383,13 @@ Typedefs
-

Definition at line 33 of file cdcacm.h.

+

Definition at line 33 of file cdcacm.h.

- + +

◆ CDC_SUBCLASS_DEVICE_MANAGEMENT

+
@@ -400,11 +399,13 @@ Typedefs
-

Definition at line 34 of file cdcacm.h.

+

Definition at line 34 of file cdcacm.h.

- + +

◆ CDC_SUBCLASS_MOBILE_DIRECT_LINE

+
@@ -414,11 +415,13 @@ Typedefs
-

Definition at line 35 of file cdcacm.h.

+

Definition at line 35 of file cdcacm.h.

- + +

◆ CDC_SUBCLASS_OBEX

+
@@ -428,11 +431,13 @@ Typedefs
-

Definition at line 36 of file cdcacm.h.

+

Definition at line 36 of file cdcacm.h.

- + +

◆ CDC_SUBCLASS_ETHERNET_EMU

+
@@ -442,11 +447,13 @@ Typedefs
-

Definition at line 37 of file cdcacm.h.

+

Definition at line 37 of file cdcacm.h.

- + +

◆ CDC_PROTOCOL_ITU_T_V_250

+
@@ -456,11 +463,13 @@ Typedefs
-

Definition at line 40 of file cdcacm.h.

+

Definition at line 40 of file cdcacm.h.

- + +

◆ CDC_PROTOCOL_PCCA_101

+
@@ -470,11 +479,13 @@ Typedefs
-

Definition at line 41 of file cdcacm.h.

+

Definition at line 41 of file cdcacm.h.

- + +

◆ CDC_PROTOCOL_PCCA_101_O

+
@@ -484,11 +495,13 @@ Typedefs
-

Definition at line 42 of file cdcacm.h.

+

Definition at line 42 of file cdcacm.h.

- + +

◆ CDC_PROTOCOL_GSM_7_07

+
@@ -498,11 +511,13 @@ Typedefs
-

Definition at line 43 of file cdcacm.h.

+

Definition at line 43 of file cdcacm.h.

- + +

◆ CDC_PROTOCOL_3GPP_27_07

+
@@ -512,11 +527,13 @@ Typedefs
-

Definition at line 44 of file cdcacm.h.

+

Definition at line 44 of file cdcacm.h.

- + +

◆ CDC_PROTOCOL_C_S0017_0

+
@@ -526,11 +543,13 @@ Typedefs
-

Definition at line 45 of file cdcacm.h.

+

Definition at line 45 of file cdcacm.h.

- + +

◆ CDC_PROTOCOL_USB_EEM

+
@@ -540,11 +559,13 @@ Typedefs
-

Definition at line 46 of file cdcacm.h.

+

Definition at line 46 of file cdcacm.h.

- + +

◆ CDC_SEND_ENCAPSULATED_COMMAND

+
@@ -554,11 +575,13 @@ Typedefs
-

Definition at line 49 of file cdcacm.h.

+

Definition at line 49 of file cdcacm.h.

- + +

◆ CDC_GET_ENCAPSULATED_RESPONSE

+
@@ -568,11 +591,13 @@ Typedefs
-

Definition at line 50 of file cdcacm.h.

+

Definition at line 50 of file cdcacm.h.

- + +

◆ CDC_SET_COMM_FEATURE

+
@@ -582,11 +607,13 @@ Typedefs
-

Definition at line 53 of file cdcacm.h.

+

Definition at line 53 of file cdcacm.h.

- + +

◆ CDC_GET_COMM_FEATURE

+
@@ -596,11 +623,13 @@ Typedefs
-

Definition at line 54 of file cdcacm.h.

+

Definition at line 54 of file cdcacm.h.

- + +

◆ CDC_CLEAR_COMM_FEATURE

+
@@ -610,11 +639,13 @@ Typedefs
-

Definition at line 55 of file cdcacm.h.

+

Definition at line 55 of file cdcacm.h.

- + +

◆ CDC_SET_AUX_LINE_STATE

+
@@ -624,11 +655,13 @@ Typedefs
-

Definition at line 56 of file cdcacm.h.

+

Definition at line 56 of file cdcacm.h.

- + +

◆ CDC_SET_HOOK_STATE

+
@@ -638,11 +671,13 @@ Typedefs
-

Definition at line 57 of file cdcacm.h.

+

Definition at line 57 of file cdcacm.h.

- + +

◆ CDC_PULSE_SETUP

+
@@ -652,11 +687,13 @@ Typedefs
-

Definition at line 58 of file cdcacm.h.

+

Definition at line 58 of file cdcacm.h.

- + +

◆ CDC_SEND_PULSE

+
@@ -666,11 +703,13 @@ Typedefs
-

Definition at line 59 of file cdcacm.h.

+

Definition at line 59 of file cdcacm.h.

- + +

◆ CDC_SET_PULSE_TIME

+
@@ -680,11 +719,13 @@ Typedefs
-

Definition at line 60 of file cdcacm.h.

+

Definition at line 60 of file cdcacm.h.

- + +

◆ CDC_RING_AUX_JACK

+
@@ -694,11 +735,13 @@ Typedefs
-

Definition at line 61 of file cdcacm.h.

+

Definition at line 61 of file cdcacm.h.

- + +

◆ CDC_SET_LINE_CODING

+
@@ -708,11 +751,13 @@ Typedefs
-

Definition at line 62 of file cdcacm.h.

+

Definition at line 62 of file cdcacm.h.

- + +

◆ CDC_GET_LINE_CODING

+
@@ -722,11 +767,13 @@ Typedefs
-

Definition at line 63 of file cdcacm.h.

+

Definition at line 63 of file cdcacm.h.

- + +

◆ CDC_SET_CONTROL_LINE_STATE

+
@@ -736,11 +783,13 @@ Typedefs
-

Definition at line 64 of file cdcacm.h.

+

Definition at line 64 of file cdcacm.h.

- + +

◆ CDC_SEND_BREAK

+
@@ -750,11 +799,13 @@ Typedefs
-

Definition at line 65 of file cdcacm.h.

+

Definition at line 65 of file cdcacm.h.

- + +

◆ CDC_SET_RINGER_PARMS

+
@@ -764,11 +815,13 @@ Typedefs
-

Definition at line 66 of file cdcacm.h.

+

Definition at line 66 of file cdcacm.h.

- + +

◆ CDC_GET_RINGER_PARMS

+
@@ -778,11 +831,13 @@ Typedefs
-

Definition at line 67 of file cdcacm.h.

+

Definition at line 67 of file cdcacm.h.

- + +

◆ CDC_SET_OPERATION_PARMS

+
@@ -792,11 +847,13 @@ Typedefs
-

Definition at line 68 of file cdcacm.h.

+

Definition at line 68 of file cdcacm.h.

- + +

◆ CDC_GET_OPERATION_PARMS

+
@@ -806,11 +863,13 @@ Typedefs
-

Definition at line 69 of file cdcacm.h.

+

Definition at line 69 of file cdcacm.h.

- + +

◆ CDC_SET_LINE_PARMS

+
@@ -820,11 +879,13 @@ Typedefs
-

Definition at line 70 of file cdcacm.h.

+

Definition at line 70 of file cdcacm.h.

- + +

◆ CDC_GET_LINE_PARMS

+
@@ -834,11 +895,13 @@ Typedefs
-

Definition at line 71 of file cdcacm.h.

+

Definition at line 71 of file cdcacm.h.

- + +

◆ CDC_DIAL_DIGITS

+
@@ -848,11 +911,13 @@ Typedefs
-

Definition at line 72 of file cdcacm.h.

+

Definition at line 72 of file cdcacm.h.

- + +

◆ NETWORK_CONNECTION

+
@@ -862,11 +927,13 @@ Typedefs
-

Definition at line 75 of file cdcacm.h.

+

Definition at line 75 of file cdcacm.h.

- + +

◆ RESPONSE_AVAILABLE

+
@@ -876,11 +943,13 @@ Typedefs
-

Definition at line 76 of file cdcacm.h.

+

Definition at line 76 of file cdcacm.h.

- + +

◆ AUX_JACK_HOOK_STATE

+
@@ -890,11 +959,13 @@ Typedefs
-

Definition at line 77 of file cdcacm.h.

+

Definition at line 77 of file cdcacm.h.

- + +

◆ RING_DETECT

+
@@ -904,11 +975,13 @@ Typedefs
-

Definition at line 78 of file cdcacm.h.

+

Definition at line 78 of file cdcacm.h.

- + +

◆ SERIAL_STATE

+
@@ -918,11 +991,13 @@ Typedefs
-

Definition at line 79 of file cdcacm.h.

+

Definition at line 79 of file cdcacm.h.

- + +

◆ CALL_STATE_CHANGE

+
@@ -932,11 +1007,13 @@ Typedefs
-

Definition at line 80 of file cdcacm.h.

+

Definition at line 80 of file cdcacm.h.

- + +

◆ LINE_STATE_CHANGE

+
@@ -946,11 +1023,13 @@ Typedefs
-

Definition at line 81 of file cdcacm.h.

+

Definition at line 81 of file cdcacm.h.

- + +

◆ CONNECTION_SPEED_CHANGE

+
@@ -960,11 +1039,13 @@ Typedefs
-

Definition at line 82 of file cdcacm.h.

+

Definition at line 82 of file cdcacm.h.

- + +

◆ ACM_MAX_ENDPOINTS

+
@@ -974,12 +1055,14 @@ Typedefs
-

Definition at line 161 of file cdcacm.h.

+

Definition at line 161 of file cdcacm.h.

Typedef Documentation

- + +

◆ DLM_FUNC_DESCR

+
@@ -991,7 +1074,9 @@ Typedefs - + +

◆ TEL_OPER_MODES_FUNC_DESCR

+
@@ -1003,7 +1088,9 @@ Typedefs - + +

◆ TEL_CALL_STATE_REP_CPBL_FUNC_DESCR

+
@@ -1021,7 +1108,7 @@ Typedefs diff --git a/cdcacm_8h__dep__incl.map b/cdcacm_8h__dep__incl.map index c9aff920..ad768a98 100644 --- a/cdcacm_8h__dep__incl.map +++ b/cdcacm_8h__dep__incl.map @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/cdcacm_8h__dep__incl.md5 b/cdcacm_8h__dep__incl.md5 index 9355f061..b8fe34c4 100644 --- a/cdcacm_8h__dep__incl.md5 +++ b/cdcacm_8h__dep__incl.md5 @@ -1 +1 @@ -d9684fa8dbbab21f6c77cde6aba312ed \ No newline at end of file +a290fd140b9c53cb509a0c1f221809bd \ No newline at end of file diff --git a/cdcacm_8h__dep__incl.png b/cdcacm_8h__dep__incl.png index 68f7165a..47d6abeb 100644 Binary files a/cdcacm_8h__dep__incl.png and b/cdcacm_8h__dep__incl.png differ diff --git a/cdcacm_8h__incl.map b/cdcacm_8h__incl.map index 5f0a1aaf..3630a2d5 100644 --- a/cdcacm_8h__incl.map +++ b/cdcacm_8h__incl.map @@ -1,3 +1,3 @@ - + diff --git a/cdcacm_8h__incl.md5 b/cdcacm_8h__incl.md5 index ac958164..4ba15cd9 100644 --- a/cdcacm_8h__incl.md5 +++ b/cdcacm_8h__incl.md5 @@ -1 +1 @@ -107fd47c127eab19013c78d1f9837064 \ No newline at end of file +e1dbfabc42dd79acb3eb7148c02f8f1f \ No newline at end of file diff --git a/cdcacm_8h__incl.png b/cdcacm_8h__incl.png index 257282e1..70fff0df 100644 Binary files a/cdcacm_8h__incl.png and b/cdcacm_8h__incl.png differ diff --git a/cdcacm_8h_source.html b/cdcacm_8h_source.html index 8bfd2068..856eabd5 100644 --- a/cdcacm_8h_source.html +++ b/cdcacm_8h_source.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: cdcacm.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
cdcacm.h
-Go to the documentation of this file.
1 /* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved.
2 
3 This software may be distributed and modified under the terms of the GNU
4 General Public License version 2 (GPL2) as published by the Free Software
5 Foundation and appearing in the file GPL2.TXT included in the packaging of
6 this file. Please note that GPL2 Section 2[b] requires that all works based
7 on this software must also be made publicly available under the terms of
8 the GPL2 ("Copyleft").
9 
10 Contact information
11 -------------------
12 
13 Circuits At Home, LTD
14 Web : http://www.circuitsathome.com
15 e-mail : support@circuitsathome.com
16  */
17 #if !defined(__CDCACM_H__)
18 #define __CDCACM_H__
19 
20 #include "Usb.h"
21 
22 #define bmREQ_CDCOUT USB_SETUP_HOST_TO_DEVICE|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_INTERFACE
23 #define bmREQ_CDCIN USB_SETUP_DEVICE_TO_HOST|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_INTERFACE
24 
25 // CDC Subclass Constants
26 #define CDC_SUBCLASS_DLCM 0x01 // Direct Line Control Model
27 #define CDC_SUBCLASS_ACM 0x02 // Abstract Control Model
28 #define CDC_SUBCLASS_TCM 0x03 // Telephone Control Model
29 #define CDC_SUBCLASS_MCCM 0x04 // Multi Channel Control Model
30 #define CDC_SUBCLASS_CAPI 0x05 // CAPI Control Model
31 #define CDC_SUBCLASS_ETHERNET 0x06 // Ethernet Network Control Model
32 #define CDC_SUBCLASS_ATM 0x07 // ATM Network Control Model
33 #define CDC_SUBCLASS_WIRELESS_HANDSET 0x08 // Wireless Handset Control Model
34 #define CDC_SUBCLASS_DEVICE_MANAGEMENT 0x09 // Device Management
35 #define CDC_SUBCLASS_MOBILE_DIRECT_LINE 0x0A // Mobile Direct Line Model
36 #define CDC_SUBCLASS_OBEX 0x0B // OBEX
37 #define CDC_SUBCLASS_ETHERNET_EMU 0x0C // Ethernet Emulation Model
38 
39 // Communication Interface Class Control Protocol Codes
40 #define CDC_PROTOCOL_ITU_T_V_250 0x01 // AT Commands defined by ITU-T V.250
41 #define CDC_PROTOCOL_PCCA_101 0x02 // AT Commands defined by PCCA-101
42 #define CDC_PROTOCOL_PCCA_101_O 0x03 // AT Commands defined by PCCA-101 & Annex O
43 #define CDC_PROTOCOL_GSM_7_07 0x04 // AT Commands defined by GSM 7.07
44 #define CDC_PROTOCOL_3GPP_27_07 0x05 // AT Commands defined by 3GPP 27.007
45 #define CDC_PROTOCOL_C_S0017_0 0x06 // AT Commands defined by TIA for CDMA
46 #define CDC_PROTOCOL_USB_EEM 0x07 // Ethernet Emulation Model
47 
48 // CDC Commands defined by CDC 1.2
49 #define CDC_SEND_ENCAPSULATED_COMMAND 0x00
50 #define CDC_GET_ENCAPSULATED_RESPONSE 0x01
51 
52 // CDC Commands defined by PSTN 1.2
53 #define CDC_SET_COMM_FEATURE 0x02
54 #define CDC_GET_COMM_FEATURE 0x03
55 #define CDC_CLEAR_COMM_FEATURE 0x04
56 #define CDC_SET_AUX_LINE_STATE 0x10
57 #define CDC_SET_HOOK_STATE 0x11
58 #define CDC_PULSE_SETUP 0x12
59 #define CDC_SEND_PULSE 0x13
60 #define CDC_SET_PULSE_TIME 0x14
61 #define CDC_RING_AUX_JACK 0x15
62 #define CDC_SET_LINE_CODING 0x20
63 #define CDC_GET_LINE_CODING 0x21
64 #define CDC_SET_CONTROL_LINE_STATE 0x22
65 #define CDC_SEND_BREAK 0x23
66 #define CDC_SET_RINGER_PARMS 0x30
67 #define CDC_GET_RINGER_PARMS 0x31
68 #define CDC_SET_OPERATION_PARMS 0x32
69 #define CDC_GET_OPERATION_PARMS 0x33
70 #define CDC_SET_LINE_PARMS 0x34
71 #define CDC_GET_LINE_PARMS 0x35
72 #define CDC_DIAL_DIGITS 0x36
73 
74 //Class-Specific Notification Codes
75 #define NETWORK_CONNECTION 0x00
76 #define RESPONSE_AVAILABLE 0x01
77 #define AUX_JACK_HOOK_STATE 0x08
78 #define RING_DETECT 0x09
79 #define SERIAL_STATE 0x20
80 #define CALL_STATE_CHANGE 0x28
81 #define LINE_STATE_CHANGE 0x29
82 #define CONNECTION_SPEED_CHANGE 0x2a
83 
84 // CDC Functional Descriptor Structures
85 
86 typedef struct {
87  uint8_t bFunctionLength;
88  uint8_t bDescriptorType;
90  uint8_t bmCapabilities;
91  uint8_t bDataInterface;
93 
94 typedef struct {
95  uint8_t bFunctionLength;
96  uint8_t bDescriptorType;
98  uint8_t bmCapabilities;
101 
102 typedef struct {
109 
110 typedef struct {
111  uint32_t dwDTERate; // Data Terminal Rate in bits per second
112  uint8_t bCharFormat; // 0 - 1 stop bit, 1 - 1.5 stop bits, 2 - 2 stop bits
113  uint8_t bParityType; // 0 - None, 1 - Odd, 2 - Even, 3 - Mark, 4 - Space
114  uint8_t bDataBits; // Data bits (5, 6, 7, 8 or 16)
115 } LINE_CODING;
116 
117 typedef struct {
118  uint8_t bmRequestType; // 0xa1 for class-specific notifications
119  uint8_t bNotification;
120  uint16_t wValue;
121  uint16_t wIndex;
122  uint16_t wLength;
123  uint16_t bmState; //UART state bitmap for SERIAL_STATE, other notifications variable length
125 
126 class ACM;
127 
129 public:
130 
131  virtual uint8_t OnInit(ACM *pacm __attribute__((unused))) {
132  return 0;
133  };
134  //virtual void OnDataRcvd(ACM *pacm, uint8_t nbytes, uint8_t *dataptr) = 0;
135  //virtual void OnDisconnected(ACM *pacm) = 0;
136 };
137 
143 typedef struct {
144 
145  union {
146  uint8_t tty;
147 
148  struct {
149  bool enhanced : 1; // Do we have the ability to set/clear any features?
150  // Status and 8th bit in data stream.
151  // Presence only indicates feature is available, but this isn't used for CDC-ACM.
152  bool wide : 1;
153  bool autoflow_RTS : 1; // Has autoflow on RTS/CTS
154  bool autoflow_DSR : 1; // Has autoflow on DTR/DSR
155  bool autoflow_XON : 1; // Has autoflow XON/XOFF
156  bool half_duplex : 1; // Has half-duplex capability.
157  } __attribute__((packed));
158  };
159 } tty_features;
160 
161 #define ACM_MAX_ENDPOINTS 4
162 
163 class ACM : public USBDeviceConfig, public UsbConfigXtracter {
164 protected:
167  uint8_t bAddress;
168  uint8_t bConfNum; // configuration number
169  uint8_t bControlIface; // Control interface value
170  uint8_t bDataIface; // Data interface value
171  uint8_t bNumEP; // total number of EP in the configuration
172  uint32_t qNextPollTime; // next poll time
173  volatile bool bPollEnable; // poll enable flag
174  volatile bool ready; //device ready indicator
175  tty_features _enhanced_status; // current status
176 
177  void PrintEndpointDescriptor(const USB_ENDPOINT_DESCRIPTOR* ep_ptr);
178 
179 public:
180  static const uint8_t epDataInIndex; // DataIn endpoint index
181  static const uint8_t epDataOutIndex; // DataOUT endpoint index
182  static const uint8_t epInterruptInIndex; // InterruptIN endpoint index
184 
185  ACM(USB *pusb, CDCAsyncOper *pasync);
186 
187  uint8_t SetCommFeature(uint16_t fid, uint8_t nbytes, uint8_t *dataptr);
188  uint8_t GetCommFeature(uint16_t fid, uint8_t nbytes, uint8_t *dataptr);
189  uint8_t ClearCommFeature(uint16_t fid);
190  uint8_t SetLineCoding(const LINE_CODING *dataptr);
191  uint8_t GetLineCoding(LINE_CODING *dataptr);
192  uint8_t SetControlLineState(uint8_t state);
193  uint8_t SendBreak(uint16_t duration);
194  uint8_t GetNotif(uint16_t *bytes_rcvd, uint8_t *dataptr);
195 
196  // Methods for receiving and sending data
197  uint8_t RcvData(uint16_t *nbytesptr, uint8_t *dataptr);
198  uint8_t SndData(uint16_t nbytes, uint8_t *dataptr);
199 
200  // USBDeviceConfig implementation
201  uint8_t Init(uint8_t parent, uint8_t port, bool lowspeed);
202  uint8_t Release();
203  uint8_t Poll();
204 
205  bool available(void) {
206  return false;
207  };
208 
209  virtual uint8_t GetAddress() {
210  return bAddress;
211  };
212 
213  virtual bool isReady() {
214  return ready;
215  };
216 
218  return _enhanced_status;
219  };
220 
222  tty_features rv;
223  rv.enhanced = false;
224  rv.autoflow_RTS = false;
225  rv.autoflow_DSR = false;
226  rv.autoflow_XON = false;
227  rv.half_duplex = false;
228  rv.wide = false;
229  return rv;
230  };
231 
232  virtual void autoflowRTS(bool s __attribute__((unused))) {
233  };
234 
235  virtual void autoflowDSR(bool s __attribute__((unused))) {
236  };
237 
238  virtual void autoflowXON(bool s __attribute__((unused))) {
239  };
240 
241  virtual void half_duplex(bool s __attribute__((unused))) {
242  };
243 
244  virtual void wide(bool s __attribute__((unused))) {
245  };
246 
247  // UsbConfigXtracter implementation
248  void EndpointXtract(uint8_t conf, uint8_t iface, uint8_t alt, uint8_t proto, const USB_ENDPOINT_DESCRIPTOR *ep);
249 };
250 
251 #endif // __CDCACM_H__
uint16_t wIndex
Definition: cdcacm.h:121
+Go to the documentation of this file.
1 /* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved.
2 
3 This software may be distributed and modified under the terms of the GNU
4 General Public License version 2 (GPL2) as published by the Free Software
5 Foundation and appearing in the file GPL2.TXT included in the packaging of
6 this file. Please note that GPL2 Section 2[b] requires that all works based
7 on this software must also be made publicly available under the terms of
8 the GPL2 ("Copyleft").
9 
10 Contact information
11 -------------------
12 
13 Circuits At Home, LTD
14 Web : http://www.circuitsathome.com
15 e-mail : support@circuitsathome.com
16  */
17 #if !defined(__CDCACM_H__)
18 #define __CDCACM_H__
19 
20 #include "Usb.h"
21 
22 #define bmREQ_CDCOUT USB_SETUP_HOST_TO_DEVICE|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_INTERFACE
23 #define bmREQ_CDCIN USB_SETUP_DEVICE_TO_HOST|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_INTERFACE
24 
25 // CDC Subclass Constants
26 #define CDC_SUBCLASS_DLCM 0x01 // Direct Line Control Model
27 #define CDC_SUBCLASS_ACM 0x02 // Abstract Control Model
28 #define CDC_SUBCLASS_TCM 0x03 // Telephone Control Model
29 #define CDC_SUBCLASS_MCCM 0x04 // Multi Channel Control Model
30 #define CDC_SUBCLASS_CAPI 0x05 // CAPI Control Model
31 #define CDC_SUBCLASS_ETHERNET 0x06 // Ethernet Network Control Model
32 #define CDC_SUBCLASS_ATM 0x07 // ATM Network Control Model
33 #define CDC_SUBCLASS_WIRELESS_HANDSET 0x08 // Wireless Handset Control Model
34 #define CDC_SUBCLASS_DEVICE_MANAGEMENT 0x09 // Device Management
35 #define CDC_SUBCLASS_MOBILE_DIRECT_LINE 0x0A // Mobile Direct Line Model
36 #define CDC_SUBCLASS_OBEX 0x0B // OBEX
37 #define CDC_SUBCLASS_ETHERNET_EMU 0x0C // Ethernet Emulation Model
38 
39 // Communication Interface Class Control Protocol Codes
40 #define CDC_PROTOCOL_ITU_T_V_250 0x01 // AT Commands defined by ITU-T V.250
41 #define CDC_PROTOCOL_PCCA_101 0x02 // AT Commands defined by PCCA-101
42 #define CDC_PROTOCOL_PCCA_101_O 0x03 // AT Commands defined by PCCA-101 & Annex O
43 #define CDC_PROTOCOL_GSM_7_07 0x04 // AT Commands defined by GSM 7.07
44 #define CDC_PROTOCOL_3GPP_27_07 0x05 // AT Commands defined by 3GPP 27.007
45 #define CDC_PROTOCOL_C_S0017_0 0x06 // AT Commands defined by TIA for CDMA
46 #define CDC_PROTOCOL_USB_EEM 0x07 // Ethernet Emulation Model
47 
48 // CDC Commands defined by CDC 1.2
49 #define CDC_SEND_ENCAPSULATED_COMMAND 0x00
50 #define CDC_GET_ENCAPSULATED_RESPONSE 0x01
51 
52 // CDC Commands defined by PSTN 1.2
53 #define CDC_SET_COMM_FEATURE 0x02
54 #define CDC_GET_COMM_FEATURE 0x03
55 #define CDC_CLEAR_COMM_FEATURE 0x04
56 #define CDC_SET_AUX_LINE_STATE 0x10
57 #define CDC_SET_HOOK_STATE 0x11
58 #define CDC_PULSE_SETUP 0x12
59 #define CDC_SEND_PULSE 0x13
60 #define CDC_SET_PULSE_TIME 0x14
61 #define CDC_RING_AUX_JACK 0x15
62 #define CDC_SET_LINE_CODING 0x20
63 #define CDC_GET_LINE_CODING 0x21
64 #define CDC_SET_CONTROL_LINE_STATE 0x22
65 #define CDC_SEND_BREAK 0x23
66 #define CDC_SET_RINGER_PARMS 0x30
67 #define CDC_GET_RINGER_PARMS 0x31
68 #define CDC_SET_OPERATION_PARMS 0x32
69 #define CDC_GET_OPERATION_PARMS 0x33
70 #define CDC_SET_LINE_PARMS 0x34
71 #define CDC_GET_LINE_PARMS 0x35
72 #define CDC_DIAL_DIGITS 0x36
73 
74 //Class-Specific Notification Codes
75 #define NETWORK_CONNECTION 0x00
76 #define RESPONSE_AVAILABLE 0x01
77 #define AUX_JACK_HOOK_STATE 0x08
78 #define RING_DETECT 0x09
79 #define SERIAL_STATE 0x20
80 #define CALL_STATE_CHANGE 0x28
81 #define LINE_STATE_CHANGE 0x29
82 #define CONNECTION_SPEED_CHANGE 0x2a
83 
84 // CDC Functional Descriptor Structures
85 
86 typedef struct {
87  uint8_t bFunctionLength;
88  uint8_t bDescriptorType;
90  uint8_t bmCapabilities;
91  uint8_t bDataInterface;
93 
94 typedef struct {
95  uint8_t bFunctionLength;
96  uint8_t bDescriptorType;
98  uint8_t bmCapabilities;
101 
102 typedef struct {
109 
110 typedef struct {
111  uint32_t dwDTERate; // Data Terminal Rate in bits per second
112  uint8_t bCharFormat; // 0 - 1 stop bit, 1 - 1.5 stop bits, 2 - 2 stop bits
113  uint8_t bParityType; // 0 - None, 1 - Odd, 2 - Even, 3 - Mark, 4 - Space
114  uint8_t bDataBits; // Data bits (5, 6, 7, 8 or 16)
115 } LINE_CODING;
116 
117 typedef struct {
118  uint8_t bmRequestType; // 0xa1 for class-specific notifications
119  uint8_t bNotification;
120  uint16_t wValue;
121  uint16_t wIndex;
122  uint16_t wLength;
123  uint16_t bmState; //UART state bitmap for SERIAL_STATE, other notifications variable length
125 
126 class ACM;
127 
129 public:
130 
131  virtual uint8_t OnInit(ACM *pacm __attribute__((unused))) {
132  return 0;
133  };
134  //virtual void OnDataRcvd(ACM *pacm, uint8_t nbytes, uint8_t *dataptr) = 0;
135  //virtual void OnDisconnected(ACM *pacm) = 0;
136 };
137 
143 typedef struct {
144 
145  union {
146  uint8_t tty;
147 
148  struct {
149  bool enhanced : 1; // Do we have the ability to set/clear any features?
150  // Status and 8th bit in data stream.
151  // Presence only indicates feature is available, but this isn't used for CDC-ACM.
152  bool wide : 1;
153  bool autoflow_RTS : 1; // Has autoflow on RTS/CTS
154  bool autoflow_DSR : 1; // Has autoflow on DTR/DSR
155  bool autoflow_XON : 1; // Has autoflow XON/XOFF
156  bool half_duplex : 1; // Has half-duplex capability.
157  } __attribute__((packed));
158  };
159 } tty_features;
160 
161 #define ACM_MAX_ENDPOINTS 4
162 
163 class ACM : public USBDeviceConfig, public UsbConfigXtracter {
164 protected:
167  uint8_t bAddress;
168  uint8_t bConfNum; // configuration number
169  uint8_t bControlIface; // Control interface value
170  uint8_t bDataIface; // Data interface value
171  uint8_t bNumEP; // total number of EP in the configuration
172  uint32_t qNextPollTime; // next poll time
173  volatile bool bPollEnable; // poll enable flag
174  volatile bool ready; //device ready indicator
175  tty_features _enhanced_status; // current status
176 
177  void PrintEndpointDescriptor(const USB_ENDPOINT_DESCRIPTOR* ep_ptr);
178 
179 public:
180  static const uint8_t epDataInIndex; // DataIn endpoint index
181  static const uint8_t epDataOutIndex; // DataOUT endpoint index
182  static const uint8_t epInterruptInIndex; // InterruptIN endpoint index
184 
185  ACM(USB *pusb, CDCAsyncOper *pasync);
186 
187  uint8_t SetCommFeature(uint16_t fid, uint8_t nbytes, uint8_t *dataptr);
188  uint8_t GetCommFeature(uint16_t fid, uint8_t nbytes, uint8_t *dataptr);
189  uint8_t ClearCommFeature(uint16_t fid);
190  uint8_t SetLineCoding(const LINE_CODING *dataptr);
191  uint8_t GetLineCoding(LINE_CODING *dataptr);
192  uint8_t SetControlLineState(uint8_t state);
193  uint8_t SendBreak(uint16_t duration);
194  uint8_t GetNotif(uint16_t *bytes_rcvd, uint8_t *dataptr);
195 
196  // Methods for receiving and sending data
197  uint8_t RcvData(uint16_t *nbytesptr, uint8_t *dataptr);
198  uint8_t SndData(uint16_t nbytes, uint8_t *dataptr);
199 
200  // USBDeviceConfig implementation
201  uint8_t Init(uint8_t parent, uint8_t port, bool lowspeed);
202  uint8_t Release();
203  uint8_t Poll();
204 
205  bool available(void) {
206  return false;
207  };
208 
209  virtual uint8_t GetAddress() {
210  return bAddress;
211  };
212 
213  virtual bool isReady() {
214  return ready;
215  };
216 
218  return _enhanced_status;
219  };
220 
222  tty_features rv;
223  rv.enhanced = false;
224  rv.autoflow_RTS = false;
225  rv.autoflow_DSR = false;
226  rv.autoflow_XON = false;
227  rv.half_duplex = false;
228  rv.wide = false;
229  return rv;
230  };
231 
232  virtual void autoflowRTS(bool s __attribute__((unused))) {
233  };
234 
235  virtual void autoflowDSR(bool s __attribute__((unused))) {
236  };
237 
238  virtual void autoflowXON(bool s __attribute__((unused))) {
239  };
240 
241  virtual void half_duplex(bool s __attribute__((unused))) {
242  };
243 
244  virtual void wide(bool s __attribute__((unused))) {
245  };
246 
247  // UsbConfigXtracter implementation
248  void EndpointXtract(uint8_t conf, uint8_t iface, uint8_t alt, uint8_t proto, const USB_ENDPOINT_DESCRIPTOR *ep);
249 };
250 
251 #endif // __CDCACM_H__
uint16_t wIndex
Definition: cdcacm.h:121
virtual tty_features enhanced_features(void)
Definition: cdcacm.h:221
bool available(void)
Definition: cdcacm.h:205
virtual uint8_t OnInit(ACM *pacm)
Definition: cdcacm.h:131
@@ -165,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/cdcftdi_8cpp.html b/cdcftdi_8cpp.html index c35f07cf..2f64ee47 100644 --- a/cdcftdi_8cpp.html +++ b/cdcftdi_8cpp.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: cdcftdi.cpp File Reference @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
- - + +
@@ -103,7 +80,7 @@ Include dependency graph for cdcftdi.cpp:
diff --git a/cdcftdi_8cpp__incl.map b/cdcftdi_8cpp__incl.map index 3ee0a9ea..c2bb4794 100644 --- a/cdcftdi_8cpp__incl.map +++ b/cdcftdi_8cpp__incl.map @@ -1,4 +1,4 @@ - - + + diff --git a/cdcftdi_8cpp__incl.md5 b/cdcftdi_8cpp__incl.md5 index f6dd1fa8..c172e2fa 100644 --- a/cdcftdi_8cpp__incl.md5 +++ b/cdcftdi_8cpp__incl.md5 @@ -1 +1 @@ -e865f32d985af2b4d5e2da82e7c52bae \ No newline at end of file +5aa4a4ebba11b439405ccd1452ff839b \ No newline at end of file diff --git a/cdcftdi_8cpp__incl.png b/cdcftdi_8cpp__incl.png index fe259a22..ff63efd9 100644 Binary files a/cdcftdi_8cpp__incl.png and b/cdcftdi_8cpp__incl.png differ diff --git a/cdcftdi_8cpp_source.html b/cdcftdi_8cpp_source.html index b5088307..bda0cbf6 100644 --- a/cdcftdi_8cpp_source.html +++ b/cdcftdi_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: cdcftdi.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + + - + - - + + + +
- +
@@ -103,7 +80,7 @@ This graph shows which files directly or indirectly include this file:
- +
@@ -210,7 +187,9 @@ Macros  

Macro Definition Documentation

- + +

◆ bmREQ_FTDI_OUT

+
@@ -220,11 +199,13 @@ Macros
-

Definition at line 22 of file cdcftdi.h.

+

Definition at line 22 of file cdcftdi.h.

- + +

◆ bmREQ_FTDI_IN

+
@@ -234,11 +215,13 @@ Macros
-

Definition at line 23 of file cdcftdi.h.

+

Definition at line 23 of file cdcftdi.h.

- + +

◆ FTDI_VID

+
@@ -248,11 +231,13 @@ Macros
-

Definition at line 28 of file cdcftdi.h.

+

Definition at line 28 of file cdcftdi.h.

- + +

◆ FTDI_PID

+
@@ -262,11 +247,13 @@ Macros
-

Definition at line 29 of file cdcftdi.h.

+

Definition at line 29 of file cdcftdi.h.

- + +

◆ FT232AM

+
@@ -276,11 +263,13 @@ Macros
-

Definition at line 31 of file cdcftdi.h.

+

Definition at line 31 of file cdcftdi.h.

- + +

◆ FT232BM

+
@@ -290,11 +279,13 @@ Macros
-

Definition at line 32 of file cdcftdi.h.

+

Definition at line 32 of file cdcftdi.h.

- + +

◆ FT2232

+
@@ -304,11 +295,13 @@ Macros
-

Definition at line 33 of file cdcftdi.h.

+

Definition at line 33 of file cdcftdi.h.

- + +

◆ FT232R

+
@@ -318,11 +311,13 @@ Macros
-

Definition at line 34 of file cdcftdi.h.

+

Definition at line 34 of file cdcftdi.h.

- + +

◆ FTDI_SIO_RESET

+
@@ -332,11 +327,13 @@ Macros
-

Definition at line 37 of file cdcftdi.h.

+

Definition at line 37 of file cdcftdi.h.

- + +

◆ FTDI_SIO_MODEM_CTRL

+
@@ -346,11 +343,13 @@ Macros
-

Definition at line 38 of file cdcftdi.h.

+

Definition at line 38 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_FLOW_CTRL

+
@@ -360,11 +359,13 @@ Macros
-

Definition at line 39 of file cdcftdi.h.

+

Definition at line 39 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_BAUD_RATE

+
@@ -374,11 +375,13 @@ Macros
-

Definition at line 40 of file cdcftdi.h.

+

Definition at line 40 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_DATA

+
@@ -388,11 +391,13 @@ Macros
-

Definition at line 41 of file cdcftdi.h.

+

Definition at line 41 of file cdcftdi.h.

- + +

◆ FTDI_SIO_GET_MODEM_STATUS

+
@@ -402,11 +407,13 @@ Macros
-

Definition at line 42 of file cdcftdi.h.

+

Definition at line 42 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_EVENT_CHAR

+
@@ -416,11 +423,13 @@ Macros
-

Definition at line 43 of file cdcftdi.h.

+

Definition at line 43 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_ERROR_CHAR

+
@@ -430,11 +439,13 @@ Macros
-

Definition at line 44 of file cdcftdi.h.

+

Definition at line 44 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_LATENCY_TIMER

+
@@ -444,11 +455,13 @@ Macros
-

Definition at line 45 of file cdcftdi.h.

+

Definition at line 45 of file cdcftdi.h.

- + +

◆ FTDI_SIO_GET_LATENCY_TIMER

+
@@ -458,11 +471,13 @@ Macros
-

Definition at line 46 of file cdcftdi.h.

+

Definition at line 46 of file cdcftdi.h.

- + +

◆ FTDI_SIO_RESET_SIO

+
@@ -472,11 +487,13 @@ Macros
-

Definition at line 48 of file cdcftdi.h.

+

Definition at line 48 of file cdcftdi.h.

- + +

◆ FTDI_SIO_RESET_PURGE_RX

+
@@ -486,11 +503,13 @@ Macros
-

Definition at line 49 of file cdcftdi.h.

+

Definition at line 49 of file cdcftdi.h.

- + +

◆ FTDI_SIO_RESET_PURGE_TX

+
@@ -500,11 +519,13 @@ Macros
-

Definition at line 50 of file cdcftdi.h.

+

Definition at line 50 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_DATA_PARITY_NONE

+
@@ -514,11 +535,13 @@ Macros
-

Definition at line 52 of file cdcftdi.h.

+

Definition at line 52 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_DATA_PARITY_ODD

+
@@ -528,11 +551,13 @@ Macros
-

Definition at line 53 of file cdcftdi.h.

+

Definition at line 53 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_DATA_PARITY_EVEN

+
@@ -542,11 +567,13 @@ Macros
-

Definition at line 54 of file cdcftdi.h.

+

Definition at line 54 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_DATA_PARITY_MARK

+
@@ -556,11 +583,13 @@ Macros
-

Definition at line 55 of file cdcftdi.h.

+

Definition at line 55 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_DATA_PARITY_SPACE

+
@@ -570,11 +599,13 @@ Macros
-

Definition at line 56 of file cdcftdi.h.

+

Definition at line 56 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_DATA_STOP_BITS_1

+
@@ -584,11 +615,13 @@ Macros
-

Definition at line 57 of file cdcftdi.h.

+

Definition at line 57 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_DATA_STOP_BITS_15

+
@@ -598,11 +631,13 @@ Macros
-

Definition at line 58 of file cdcftdi.h.

+

Definition at line 58 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_DATA_STOP_BITS_2

+
@@ -612,11 +647,13 @@ Macros
-

Definition at line 59 of file cdcftdi.h.

+

Definition at line 59 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_BREAK

+
@@ -626,11 +663,13 @@ Macros
-

Definition at line 60 of file cdcftdi.h.

+

Definition at line 60 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_DTR_MASK

+
@@ -640,11 +679,13 @@ Macros
-

Definition at line 62 of file cdcftdi.h.

+

Definition at line 62 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_DTR_HIGH

+
@@ -654,11 +695,13 @@ Macros
-

Definition at line 63 of file cdcftdi.h.

+

Definition at line 63 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_DTR_LOW

+
@@ -668,11 +711,13 @@ Macros
-

Definition at line 64 of file cdcftdi.h.

+

Definition at line 64 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_RTS_MASK

+
@@ -682,11 +727,13 @@ Macros
-

Definition at line 65 of file cdcftdi.h.

+

Definition at line 65 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_RTS_HIGH

+
@@ -696,11 +743,13 @@ Macros
-

Definition at line 66 of file cdcftdi.h.

+

Definition at line 66 of file cdcftdi.h.

- + +

◆ FTDI_SIO_SET_RTS_LOW

+
@@ -710,11 +759,13 @@ Macros
-

Definition at line 67 of file cdcftdi.h.

+

Definition at line 67 of file cdcftdi.h.

- + +

◆ FTDI_SIO_DISABLE_FLOW_CTRL

+
@@ -724,11 +775,13 @@ Macros
-

Definition at line 69 of file cdcftdi.h.

+

Definition at line 69 of file cdcftdi.h.

- + +

◆ FTDI_SIO_RTS_CTS_HS

+
@@ -738,11 +791,13 @@ Macros
-

Definition at line 70 of file cdcftdi.h.

+

Definition at line 70 of file cdcftdi.h.

- + +

◆ FTDI_SIO_DTR_DSR_HS

+
@@ -752,11 +807,13 @@ Macros
-

Definition at line 71 of file cdcftdi.h.

+

Definition at line 71 of file cdcftdi.h.

- + +

◆ FTDI_SIO_XON_XOFF_HS

+
@@ -766,11 +823,13 @@ Macros
-

Definition at line 72 of file cdcftdi.h.

+

Definition at line 72 of file cdcftdi.h.

- + +

◆ FTDI_SIO_CTS_MASK

+
@@ -780,11 +839,13 @@ Macros
-

Definition at line 74 of file cdcftdi.h.

+

Definition at line 74 of file cdcftdi.h.

- + +

◆ FTDI_SIO_DSR_MASK

+
@@ -794,11 +855,13 @@ Macros
-

Definition at line 75 of file cdcftdi.h.

+

Definition at line 75 of file cdcftdi.h.

- + +

◆ FTDI_SIO_RI_MASK

+
@@ -808,11 +871,13 @@ Macros
-

Definition at line 76 of file cdcftdi.h.

+

Definition at line 76 of file cdcftdi.h.

- + +

◆ FTDI_SIO_RLSD_MASK

+
@@ -822,11 +887,13 @@ Macros
-

Definition at line 77 of file cdcftdi.h.

+

Definition at line 77 of file cdcftdi.h.

- + +

◆ FTDI_MAX_ENDPOINTS

+
@@ -836,7 +903,7 @@ Macros
-

Definition at line 96 of file cdcftdi.h.

+

Definition at line 96 of file cdcftdi.h.

@@ -845,7 +912,7 @@ Macros diff --git a/cdcftdi_8h__dep__incl.map b/cdcftdi_8h__dep__incl.map index c9f26512..53fee69d 100644 --- a/cdcftdi_8h__dep__incl.map +++ b/cdcftdi_8h__dep__incl.map @@ -1,3 +1,3 @@ - + diff --git a/cdcftdi_8h__dep__incl.md5 b/cdcftdi_8h__dep__incl.md5 index d2a73e5f..d21df7d0 100644 --- a/cdcftdi_8h__dep__incl.md5 +++ b/cdcftdi_8h__dep__incl.md5 @@ -1 +1 @@ -bb94e7e9d10e1bde33f1040736fc690f \ No newline at end of file +2580f835598c65f780bc9a84dd4f7552 \ No newline at end of file diff --git a/cdcftdi_8h__dep__incl.png b/cdcftdi_8h__dep__incl.png index 412bb622..03a86e6b 100644 Binary files a/cdcftdi_8h__dep__incl.png and b/cdcftdi_8h__dep__incl.png differ diff --git a/cdcftdi_8h__incl.map b/cdcftdi_8h__incl.map index 3ce4a3cc..b104f383 100644 --- a/cdcftdi_8h__incl.map +++ b/cdcftdi_8h__incl.map @@ -1,3 +1,3 @@ - + diff --git a/cdcftdi_8h__incl.md5 b/cdcftdi_8h__incl.md5 index 8f85634d..51c8bad8 100644 --- a/cdcftdi_8h__incl.md5 +++ b/cdcftdi_8h__incl.md5 @@ -1 +1 @@ -5a325c73b89e2318a59e437a1ca1f735 \ No newline at end of file +891212ff8fe5d0168dc1f0aa39801762 \ No newline at end of file diff --git a/cdcftdi_8h__incl.png b/cdcftdi_8h__incl.png index 6e886a96..0294d4df 100644 Binary files a/cdcftdi_8h__incl.png and b/cdcftdi_8h__incl.png differ diff --git a/cdcftdi_8h_source.html b/cdcftdi_8h_source.html index d50be30e..c00597e1 100644 --- a/cdcftdi_8h_source.html +++ b/cdcftdi_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: cdcftdi.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - - + + +
@@ -104,7 +81,7 @@ Include dependency graph for cdcprolific.cpp: diff --git a/cdcprolific_8cpp__incl.map b/cdcprolific_8cpp__incl.map index 8db88071..73f154e8 100644 --- a/cdcprolific_8cpp__incl.map +++ b/cdcprolific_8cpp__incl.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/cdcprolific_8cpp__incl.md5 b/cdcprolific_8cpp__incl.md5 index 1e1ab220..23a54331 100644 --- a/cdcprolific_8cpp__incl.md5 +++ b/cdcprolific_8cpp__incl.md5 @@ -1 +1 @@ -a91e5714ebd81502b745c96a64138390 \ No newline at end of file +80a2f4a7375bdcd59e0374c878b54419 \ No newline at end of file diff --git a/cdcprolific_8cpp__incl.png b/cdcprolific_8cpp__incl.png index 012df5af..a846d27a 100644 Binary files a/cdcprolific_8cpp__incl.png and b/cdcprolific_8cpp__incl.png differ diff --git a/cdcprolific_8cpp_source.html b/cdcprolific_8cpp_source.html index 3e3b65c5..36984a0c 100644 --- a/cdcprolific_8cpp_source.html +++ b/cdcprolific_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: cdcprolific.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - + +
@@ -105,7 +82,7 @@ This graph shows which files directly or indirectly include this file:
- +
@@ -262,7 +239,9 @@ Enumerations  

Macro Definition Documentation

- + +

◆ PL_VID

+
@@ -272,11 +251,13 @@ Enumerations
-

Definition at line 24 of file cdcprolific.h.

+

Definition at line 24 of file cdcprolific.h.

- + +

◆ CHECK_PID

+
@@ -290,11 +271,13 @@ Enumerations
-

Definition at line 25 of file cdcprolific.h.

+

Definition at line 25 of file cdcprolific.h.

- + +

◆ PROLIFIC_REV_H

+
@@ -304,11 +287,13 @@ Enumerations
-

Definition at line 29 of file cdcprolific.h.

+

Definition at line 29 of file cdcprolific.h.

- + +

◆ PROLIFIC_REV_X

+
@@ -318,11 +303,13 @@ Enumerations
-

Definition at line 30 of file cdcprolific.h.

+

Definition at line 30 of file cdcprolific.h.

- + +

◆ PROLIFIC_REV_HX_CHIP_D

+
@@ -332,11 +319,13 @@ Enumerations
-

Definition at line 31 of file cdcprolific.h.

+

Definition at line 31 of file cdcprolific.h.

- + +

◆ PROLIFIC_REV_1

+
@@ -346,11 +335,13 @@ Enumerations
-

Definition at line 32 of file cdcprolific.h.

+

Definition at line 32 of file cdcprolific.h.

- + +

◆ kXOnChar

+
@@ -360,11 +351,13 @@ Enumerations
-

Definition at line 34 of file cdcprolific.h.

+

Definition at line 34 of file cdcprolific.h.

- + +

◆ kXOffChar

+
@@ -374,11 +367,13 @@ Enumerations
-

Definition at line 35 of file cdcprolific.h.

+

Definition at line 35 of file cdcprolific.h.

- + +

◆ SPECIAL_SHIFT

+
@@ -388,11 +383,13 @@ Enumerations
-

Definition at line 37 of file cdcprolific.h.

+

Definition at line 37 of file cdcprolific.h.

- + +

◆ SPECIAL_MASK

+
@@ -402,11 +399,13 @@ Enumerations
-

Definition at line 38 of file cdcprolific.h.

+

Definition at line 38 of file cdcprolific.h.

- + +

◆ STATE_ALL

+
@@ -416,11 +415,13 @@ Enumerations
-

Definition at line 39 of file cdcprolific.h.

+

Definition at line 39 of file cdcprolific.h.

- + +

◆ FLOW_RX_AUTO

+
@@ -430,11 +431,13 @@ Enumerations
-

Definition at line 40 of file cdcprolific.h.

+

Definition at line 40 of file cdcprolific.h.

- + +

◆ FLOW_TX_AUTO

+
@@ -444,11 +447,13 @@ Enumerations
-

Definition at line 41 of file cdcprolific.h.

+

Definition at line 41 of file cdcprolific.h.

- + +

◆ CAN_BE_AUTO

+
@@ -458,11 +463,13 @@ Enumerations
-

Definition at line 42 of file cdcprolific.h.

+

Definition at line 42 of file cdcprolific.h.

- + +

◆ CAN_NOTIFY

+
@@ -472,11 +479,13 @@ Enumerations
-

Definition at line 43 of file cdcprolific.h.

+

Definition at line 43 of file cdcprolific.h.

- + +

◆ EXTERNAL_MASK

+
@@ -486,11 +495,13 @@ Enumerations
-

Definition at line 44 of file cdcprolific.h.

+

Definition at line 44 of file cdcprolific.h.

- + +

◆ INTERNAL_DELAY

+
@@ -500,11 +511,13 @@ Enumerations
-

Definition at line 45 of file cdcprolific.h.

+

Definition at line 45 of file cdcprolific.h.

- + +

◆ DEFAULT_AUTO

+
@@ -514,11 +527,13 @@ Enumerations
-

Definition at line 46 of file cdcprolific.h.

+

Definition at line 46 of file cdcprolific.h.

- + +

◆ DEFAULT_NOTIFY

+
@@ -528,11 +543,13 @@ Enumerations
-

Definition at line 47 of file cdcprolific.h.

+

Definition at line 47 of file cdcprolific.h.

- + +

◆ DEFAULT_STATE

+
@@ -542,11 +559,13 @@ Enumerations
-

Definition at line 48 of file cdcprolific.h.

+

Definition at line 48 of file cdcprolific.h.

- + +

◆ CONTINUE_SEND

+
@@ -556,11 +575,13 @@ Enumerations
-

Definition at line 50 of file cdcprolific.h.

+

Definition at line 50 of file cdcprolific.h.

- + +

◆ PAUSE_SEND

+
@@ -570,11 +591,13 @@ Enumerations
-

Definition at line 51 of file cdcprolific.h.

+

Definition at line 51 of file cdcprolific.h.

- + +

◆ kRxAutoFlow

+
@@ -584,11 +607,13 @@ Enumerations
-

Definition at line 53 of file cdcprolific.h.

+

Definition at line 53 of file cdcprolific.h.

- + +

◆ kTxAutoFlow

+
@@ -598,11 +623,13 @@ Enumerations
-

Definition at line 54 of file cdcprolific.h.

+

Definition at line 54 of file cdcprolific.h.

- + +

◆ kControl_StateMask

+
@@ -612,11 +639,13 @@ Enumerations
-

Definition at line 55 of file cdcprolific.h.

+

Definition at line 55 of file cdcprolific.h.

- + +

◆ kRxQueueState

+
@@ -626,11 +655,13 @@ Enumerations
-

Definition at line 56 of file cdcprolific.h.

+

Definition at line 56 of file cdcprolific.h.

- + +

◆ kTxQueueState

+
@@ -640,11 +671,13 @@ Enumerations
-

Definition at line 57 of file cdcprolific.h.

+

Definition at line 57 of file cdcprolific.h.

- + +

◆ kCONTROL_DTR

+
@@ -654,11 +687,13 @@ Enumerations
-

Definition at line 59 of file cdcprolific.h.

+

Definition at line 59 of file cdcprolific.h.

- + +

◆ kCONTROL_RTS

+
@@ -668,11 +703,13 @@ Enumerations
-

Definition at line 60 of file cdcprolific.h.

+

Definition at line 60 of file cdcprolific.h.

- + +

◆ kStateTransientMask

+
@@ -682,11 +719,13 @@ Enumerations
-

Definition at line 62 of file cdcprolific.h.

+

Definition at line 62 of file cdcprolific.h.

- + +

◆ kBreakError

+
@@ -696,11 +735,13 @@ Enumerations
-

Definition at line 63 of file cdcprolific.h.

+

Definition at line 63 of file cdcprolific.h.

- + +

◆ kFrameError

+
@@ -710,11 +751,13 @@ Enumerations
-

Definition at line 64 of file cdcprolific.h.

+

Definition at line 64 of file cdcprolific.h.

- + +

◆ kParityError

+
@@ -724,11 +767,13 @@ Enumerations
-

Definition at line 65 of file cdcprolific.h.

+

Definition at line 65 of file cdcprolific.h.

- + +

◆ kOverrunError

+
@@ -738,11 +783,13 @@ Enumerations
-

Definition at line 66 of file cdcprolific.h.

+

Definition at line 66 of file cdcprolific.h.

- + +

◆ kCTS

+
@@ -752,11 +799,13 @@ Enumerations
-

Definition at line 68 of file cdcprolific.h.

+

Definition at line 68 of file cdcprolific.h.

- + +

◆ kDSR

+
@@ -766,11 +815,13 @@ Enumerations
-

Definition at line 69 of file cdcprolific.h.

+

Definition at line 69 of file cdcprolific.h.

- + +

◆ kRI

+
@@ -780,11 +831,13 @@ Enumerations
-

Definition at line 70 of file cdcprolific.h.

+

Definition at line 70 of file cdcprolific.h.

- + +

◆ kDCD

+
@@ -794,11 +847,13 @@ Enumerations
-

Definition at line 71 of file cdcprolific.h.

+

Definition at line 71 of file cdcprolific.h.

- + +

◆ kHandshakeInMask

+
@@ -808,11 +863,13 @@ Enumerations
-

Definition at line 72 of file cdcprolific.h.

+

Definition at line 72 of file cdcprolific.h.

- + +

◆ VENDOR_WRITE_REQUEST_TYPE

+
@@ -822,11 +879,13 @@ Enumerations
-

Definition at line 74 of file cdcprolific.h.

+

Definition at line 74 of file cdcprolific.h.

- + +

◆ VENDOR_WRITE_REQUEST

+
@@ -836,11 +895,13 @@ Enumerations
-

Definition at line 75 of file cdcprolific.h.

+

Definition at line 75 of file cdcprolific.h.

- + +

◆ VENDOR_READ_REQUEST_TYPE

+
@@ -850,11 +911,13 @@ Enumerations
-

Definition at line 77 of file cdcprolific.h.

+

Definition at line 77 of file cdcprolific.h.

- + +

◆ VENDOR_READ_REQUEST

+
@@ -864,11 +927,13 @@ Enumerations
-

Definition at line 78 of file cdcprolific.h.

+

Definition at line 78 of file cdcprolific.h.

- + +

◆ SET_DCR0

+
@@ -878,11 +943,13 @@ Enumerations
-

Definition at line 81 of file cdcprolific.h.

+

Definition at line 81 of file cdcprolific.h.

- + +

◆ GET_DCR0

+
@@ -892,11 +959,13 @@ Enumerations
-

Definition at line 82 of file cdcprolific.h.

+

Definition at line 82 of file cdcprolific.h.

- + +

◆ DCR0_INIT

+
@@ -906,11 +975,13 @@ Enumerations
-

Definition at line 83 of file cdcprolific.h.

+

Definition at line 83 of file cdcprolific.h.

- + +

◆ DCR0_INIT_H

+
@@ -920,11 +991,13 @@ Enumerations
-

Definition at line 84 of file cdcprolific.h.

+

Definition at line 84 of file cdcprolific.h.

- + +

◆ DCR0_INIT_X

+
@@ -934,11 +1007,13 @@ Enumerations
-

Definition at line 85 of file cdcprolific.h.

+

Definition at line 85 of file cdcprolific.h.

- + +

◆ SET_DCR1

+
@@ -948,11 +1023,13 @@ Enumerations
-

Definition at line 87 of file cdcprolific.h.

+

Definition at line 87 of file cdcprolific.h.

- + +

◆ GET_DCR1

+
@@ -962,11 +1039,13 @@ Enumerations
-

Definition at line 88 of file cdcprolific.h.

+

Definition at line 88 of file cdcprolific.h.

- + +

◆ DCR1_INIT_H

+
@@ -976,11 +1055,13 @@ Enumerations
-

Definition at line 89 of file cdcprolific.h.

+

Definition at line 89 of file cdcprolific.h.

- + +

◆ DCR1_INIT_X

+
@@ -990,11 +1071,13 @@ Enumerations
-

Definition at line 90 of file cdcprolific.h.

+

Definition at line 90 of file cdcprolific.h.

- + +

◆ SET_DCR2

+
@@ -1004,11 +1087,13 @@ Enumerations
-

Definition at line 92 of file cdcprolific.h.

+

Definition at line 92 of file cdcprolific.h.

- + +

◆ GET_DCR2

+
@@ -1018,11 +1103,13 @@ Enumerations
-

Definition at line 93 of file cdcprolific.h.

+

Definition at line 93 of file cdcprolific.h.

- + +

◆ DCR2_INIT_H

+
@@ -1032,11 +1119,13 @@ Enumerations
-

Definition at line 94 of file cdcprolific.h.

+

Definition at line 94 of file cdcprolific.h.

- + +

◆ DCR2_INIT_X

+
@@ -1046,11 +1135,13 @@ Enumerations
-

Definition at line 95 of file cdcprolific.h.

+

Definition at line 95 of file cdcprolific.h.

- + +

◆ RESET_DOWNSTREAM_DATA_PIPE

+
@@ -1060,11 +1151,13 @@ Enumerations
-

Definition at line 98 of file cdcprolific.h.

+

Definition at line 98 of file cdcprolific.h.

- + +

◆ RESET_UPSTREAM_DATA_PIPE

+
@@ -1074,11 +1167,13 @@ Enumerations
-

Definition at line 99 of file cdcprolific.h.

+

Definition at line 99 of file cdcprolific.h.

- + +

◆ PL_MAX_ENDPOINTS

+
@@ -1088,12 +1183,14 @@ Enumerations
-

Definition at line 102 of file cdcprolific.h.

+

Definition at line 102 of file cdcprolific.h.

Enumeration Type Documentation

- + +

◆ tXO_State

+
@@ -1103,23 +1200,20 @@ Enumerations
- - - - - + + + + +
Enumerator
kXOnSent  -
kXOffSent  -
kXO_Idle  -
kXOffNeeded  -
kXOnNeeded  -
Enumerator
kXOnSent 
kXOffSent 
kXO_Idle 
kXOffNeeded 
kXOnNeeded 
-

Definition at line 104 of file cdcprolific.h.

+

Definition at line 104 of file cdcprolific.h.

- + +

◆ pl2303_type

+
@@ -1129,21 +1223,15 @@ Enumerations
- - - - - - + + + + + +
Enumerator
unknown  -
type_0  -
type_1  -
rev_X  -
rev_HX  -
rev_H  -
Enumerator
unknown 
type_0 
type_1 
rev_X 
rev_HX 
rev_H 
-

Definition at line 112 of file cdcprolific.h.

+

Definition at line 112 of file cdcprolific.h.

@@ -1152,7 +1240,7 @@ Enumerations diff --git a/cdcprolific_8h__dep__incl.map b/cdcprolific_8h__dep__incl.map index 83eaf52c..28581b5d 100644 --- a/cdcprolific_8h__dep__incl.map +++ b/cdcprolific_8h__dep__incl.map @@ -1,3 +1,3 @@ - + diff --git a/cdcprolific_8h__dep__incl.md5 b/cdcprolific_8h__dep__incl.md5 index 3f648651..c78552e9 100644 --- a/cdcprolific_8h__dep__incl.md5 +++ b/cdcprolific_8h__dep__incl.md5 @@ -1 +1 @@ -5601c68c5c5e913b421194d3f765f64d \ No newline at end of file +2a214c1fef9fd137dcc008a5d205d6e0 \ No newline at end of file diff --git a/cdcprolific_8h__dep__incl.png b/cdcprolific_8h__dep__incl.png index 7680aa9d..a28049a0 100644 Binary files a/cdcprolific_8h__dep__incl.png and b/cdcprolific_8h__dep__incl.png differ diff --git a/cdcprolific_8h__incl.map b/cdcprolific_8h__incl.map index 3c82d573..70460c8b 100644 --- a/cdcprolific_8h__incl.map +++ b/cdcprolific_8h__incl.map @@ -1,4 +1,4 @@ - - + + diff --git a/cdcprolific_8h__incl.md5 b/cdcprolific_8h__incl.md5 index e7519a47..f207c73e 100644 --- a/cdcprolific_8h__incl.md5 +++ b/cdcprolific_8h__incl.md5 @@ -1 +1 @@ -9d9a09dd605ff7c3be8e192a907ecbfe \ No newline at end of file +22650dc525aafafba98e38845a99fed8 \ No newline at end of file diff --git a/cdcprolific_8h__incl.png b/cdcprolific_8h__incl.png index 552068b9..643ccb06 100644 Binary files a/cdcprolific_8h__incl.png and b/cdcprolific_8h__incl.png differ diff --git a/cdcprolific_8h_source.html b/cdcprolific_8h_source.html index 6337d9db..ac45a28a 100644 --- a/cdcprolific_8h_source.html +++ b/cdcprolific_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: cdcprolific.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + + - + - - + + + +
Inheritance graph
- - - - + + + +
[legend]
@@ -113,13 +88,13 @@ Collaboration diagram for ACM:
Collaboration graph
- - - - - - - + + + + + + +
[legend]
@@ -233,9 +208,11 @@ Protected Attributes

Detailed Description

-

Definition at line 163 of file cdcacm.h.

+

Definition at line 163 of file cdcacm.h.

Constructor & Destructor Documentation

- + +

◆ ACM()

+
@@ -259,12 +236,14 @@ Protected Attributes
-

Definition at line 23 of file cdcacm.cpp.

+

Definition at line 23 of file cdcacm.cpp.

Member Function Documentation

- + +

◆ PrintEndpointDescriptor()

+
@@ -286,11 +265,13 @@ Protected Attributes
-

Definition at line 352 of file cdcacm.cpp.

+

Definition at line 352 of file cdcacm.cpp.

- + +

◆ SetCommFeature()

+
@@ -320,11 +301,13 @@ Protected Attributes
-

Definition at line 296 of file cdcacm.cpp.

+

Definition at line 296 of file cdcacm.cpp.

- + +

◆ GetCommFeature()

+
@@ -354,11 +337,13 @@ Protected Attributes
-

Definition at line 304 of file cdcacm.cpp.

+

Definition at line 304 of file cdcacm.cpp.

- + +

◆ ClearCommFeature()

+
@@ -372,11 +357,13 @@ Protected Attributes
-

Definition at line 312 of file cdcacm.cpp.

+

Definition at line 312 of file cdcacm.cpp.

- + +

◆ SetLineCoding()

+
@@ -390,11 +377,13 @@ Protected Attributes
-

Definition at line 320 of file cdcacm.cpp.

+

Definition at line 320 of file cdcacm.cpp.

- + +

◆ GetLineCoding()

+
@@ -408,11 +397,13 @@ Protected Attributes
-

Definition at line 328 of file cdcacm.cpp.

+

Definition at line 328 of file cdcacm.cpp.

- + +

◆ SetControlLineState()

+
@@ -426,11 +417,13 @@ Protected Attributes
-

Definition at line 336 of file cdcacm.cpp.

+

Definition at line 336 of file cdcacm.cpp.

- + +

◆ SendBreak()

+
@@ -444,11 +437,13 @@ Protected Attributes
-

Definition at line 344 of file cdcacm.cpp.

+

Definition at line 344 of file cdcacm.cpp.

- + +

◆ GetNotif()

+
@@ -474,7 +469,9 @@ Protected Attributes - + +

◆ RcvData()

+
@@ -498,11 +495,13 @@ Protected Attributes
-

Definition at line 280 of file cdcacm.cpp.

+

Definition at line 280 of file cdcacm.cpp.

- + +

◆ SndData()

+
@@ -526,11 +525,13 @@ Protected Attributes
-

Definition at line 288 of file cdcacm.cpp.

+

Definition at line 288 of file cdcacm.cpp.

- + +

◆ Init()

+
@@ -572,11 +573,13 @@ Protected Attributes

Reimplemented in PL2303.

-

Definition at line 46 of file cdcacm.cpp.

+

Definition at line 46 of file cdcacm.cpp.

- + +

◆ Release()

+
@@ -599,11 +602,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 258 of file cdcacm.cpp.

+

Definition at line 258 of file cdcacm.cpp.

- + +

◆ Poll()

+
@@ -626,11 +631,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 272 of file cdcacm.cpp.

+

Definition at line 272 of file cdcacm.cpp.

- + +

◆ available()

+
@@ -652,11 +659,13 @@ Protected Attributes
-

Definition at line 205 of file cdcacm.h.

+

Definition at line 205 of file cdcacm.h.

- + +

◆ GetAddress()

+
@@ -679,11 +688,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 209 of file cdcacm.h.

+

Definition at line 209 of file cdcacm.h.

- + +

◆ isReady()

+
@@ -704,11 +715,13 @@ Protected Attributes
-

Definition at line 213 of file cdcacm.h.

+

Definition at line 213 of file cdcacm.h.

- + +

◆ enhanced_status()

+
@@ -730,11 +743,13 @@ Protected Attributes
-

Definition at line 217 of file cdcacm.h.

+

Definition at line 217 of file cdcacm.h.

- + +

◆ enhanced_features()

+
@@ -758,11 +773,13 @@ Protected Attributes

Reimplemented in XR21B1411.

-

Definition at line 221 of file cdcacm.h.

+

Definition at line 221 of file cdcacm.h.

- + +

◆ autoflowRTS()

+
@@ -786,11 +803,13 @@ Protected Attributes

Reimplemented in XR21B1411.

-

Definition at line 232 of file cdcacm.h.

+

Definition at line 232 of file cdcacm.h.

- + +

◆ autoflowDSR()

+
@@ -814,11 +833,13 @@ Protected Attributes

Reimplemented in XR21B1411.

-

Definition at line 235 of file cdcacm.h.

+

Definition at line 235 of file cdcacm.h.

- + +

◆ autoflowXON()

+
@@ -842,11 +863,13 @@ Protected Attributes

Reimplemented in XR21B1411.

-

Definition at line 238 of file cdcacm.h.

+

Definition at line 238 of file cdcacm.h.

- + +

◆ half_duplex()

+
@@ -870,11 +893,13 @@ Protected Attributes

Reimplemented in XR21B1411.

-

Definition at line 241 of file cdcacm.h.

+

Definition at line 241 of file cdcacm.h.

- + +

◆ wide()

+
@@ -896,11 +921,13 @@ Protected Attributes
-

Definition at line 244 of file cdcacm.h.

+

Definition at line 244 of file cdcacm.h.

- + +

◆ EndpointXtract()

+
@@ -952,12 +979,14 @@ Protected Attributes

Reimplemented from UsbConfigXtracter.

-

Definition at line 231 of file cdcacm.cpp.

+

Definition at line 231 of file cdcacm.cpp.

Member Data Documentation

- + +

◆ pUsb

+
@@ -975,11 +1004,13 @@ Protected Attributes
-

Definition at line 165 of file cdcacm.h.

+

Definition at line 165 of file cdcacm.h.

- + +

◆ pAsync

+
@@ -997,11 +1028,13 @@ Protected Attributes
-

Definition at line 166 of file cdcacm.h.

+

Definition at line 166 of file cdcacm.h.

- + +

◆ bAddress

+
@@ -1019,11 +1052,13 @@ Protected Attributes
-

Definition at line 167 of file cdcacm.h.

+

Definition at line 167 of file cdcacm.h.

- + +

◆ bConfNum

+
@@ -1041,11 +1076,13 @@ Protected Attributes
-

Definition at line 168 of file cdcacm.h.

+

Definition at line 168 of file cdcacm.h.

- + +

◆ bControlIface

+
@@ -1063,11 +1100,13 @@ Protected Attributes
-

Definition at line 169 of file cdcacm.h.

+

Definition at line 169 of file cdcacm.h.

- + +

◆ bDataIface

+
@@ -1085,11 +1124,13 @@ Protected Attributes
-

Definition at line 170 of file cdcacm.h.

+

Definition at line 170 of file cdcacm.h.

- + +

◆ bNumEP

+
@@ -1107,11 +1148,13 @@ Protected Attributes
-

Definition at line 171 of file cdcacm.h.

+

Definition at line 171 of file cdcacm.h.

- + +

◆ qNextPollTime

+
@@ -1129,11 +1172,13 @@ Protected Attributes
-

Definition at line 172 of file cdcacm.h.

+

Definition at line 172 of file cdcacm.h.

- + +

◆ bPollEnable

+
@@ -1151,11 +1196,13 @@ Protected Attributes
-

Definition at line 173 of file cdcacm.h.

+

Definition at line 173 of file cdcacm.h.

- + +

◆ ready

+
@@ -1173,11 +1220,13 @@ Protected Attributes
-

Definition at line 174 of file cdcacm.h.

+

Definition at line 174 of file cdcacm.h.

- + +

◆ _enhanced_status

+
@@ -1195,11 +1244,13 @@ Protected Attributes
-

Definition at line 175 of file cdcacm.h.

+

Definition at line 175 of file cdcacm.h.

- + +

◆ epDataInIndex

+
@@ -1217,11 +1268,13 @@ Protected Attributes
-

Definition at line 180 of file cdcacm.h.

+

Definition at line 180 of file cdcacm.h.

- + +

◆ epDataOutIndex

+
@@ -1239,11 +1292,13 @@ Protected Attributes
-

Definition at line 181 of file cdcacm.h.

+

Definition at line 181 of file cdcacm.h.

- + +

◆ epInterruptInIndex

+
@@ -1261,11 +1316,13 @@ Protected Attributes
-

Definition at line 182 of file cdcacm.h.

+

Definition at line 182 of file cdcacm.h.

- + +

◆ epInfo

+
@@ -1275,7 +1332,7 @@ Protected Attributes
-

Definition at line 183 of file cdcacm.h.

+

Definition at line 183 of file cdcacm.h.

@@ -1288,7 +1345,7 @@ Protected Attributes diff --git a/class_a_c_m__coll__graph.map b/class_a_c_m__coll__graph.map index 6520e6af..c1445a58 100644 --- a/class_a_c_m__coll__graph.map +++ b/class_a_c_m__coll__graph.map @@ -1,9 +1,9 @@ - - - - - - - + + + + + + + diff --git a/class_a_c_m__coll__graph.md5 b/class_a_c_m__coll__graph.md5 index f43712cc..be335838 100644 --- a/class_a_c_m__coll__graph.md5 +++ b/class_a_c_m__coll__graph.md5 @@ -1 +1 @@ -587ce662854a9a2b4677918117ea2d18 \ No newline at end of file +38f287d7d437d8845cd9849dda3c4ebc \ No newline at end of file diff --git a/class_a_c_m__coll__graph.png b/class_a_c_m__coll__graph.png index c81a9565..c2f26e7f 100644 Binary files a/class_a_c_m__coll__graph.png and b/class_a_c_m__coll__graph.png differ diff --git a/class_a_c_m__inherit__graph.map b/class_a_c_m__inherit__graph.map index 12559e81..24853262 100644 --- a/class_a_c_m__inherit__graph.map +++ b/class_a_c_m__inherit__graph.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/class_a_c_m__inherit__graph.md5 b/class_a_c_m__inherit__graph.md5 index 69d55cdc..f0237ac2 100644 --- a/class_a_c_m__inherit__graph.md5 +++ b/class_a_c_m__inherit__graph.md5 @@ -1 +1 @@ -1778af41b23c3b83c73bd88577cd17cc \ No newline at end of file +34233ca0a4afb6e0d20ee9a1d854c8cf \ No newline at end of file diff --git a/class_a_c_m__inherit__graph.png b/class_a_c_m__inherit__graph.png index 2e0b1c04..4091db06 100644 Binary files a/class_a_c_m__inherit__graph.png and b/class_a_c_m__inherit__graph.png differ diff --git a/class_a_d_k-members.html b/class_a_d_k-members.html index 13ffc9ca..d2d7b8c4 100644 --- a/class_a_d_k-members.html +++ b/class_a_d_k-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - + +
[legend]
@@ -110,11 +85,11 @@ Collaboration diagram for ADK:
Collaboration graph
- - - - - + + + + +
[legend]
@@ -179,9 +154,11 @@ Static Protected Attributes

Detailed Description

-

Definition at line 53 of file adk.h.

+

Definition at line 53 of file adk.h.

Constructor & Destructor Documentation

- + +

◆ ADK()

+
@@ -235,12 +212,14 @@ Static Protected Attributes
-

Definition at line 25 of file adk.cpp.

+

Definition at line 25 of file adk.cpp.

Member Function Documentation

- + +

◆ PrintEndpointDescriptor()

+
@@ -262,11 +241,13 @@ Static Protected Attributes
-

Definition at line 357 of file adk.cpp.

+

Definition at line 357 of file adk.cpp.

- + +

◆ RcvData()

+
@@ -290,11 +271,13 @@ Static Protected Attributes
-

Definition at line 347 of file adk.cpp.

+

Definition at line 347 of file adk.cpp.

- + +

◆ SndData()

+
@@ -318,11 +301,13 @@ Static Protected Attributes
-

Definition at line 353 of file adk.cpp.

+

Definition at line 353 of file adk.cpp.

- + +

◆ ConfigureDevice()

+
@@ -362,11 +347,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 59 of file adk.cpp.

+

Definition at line 59 of file adk.cpp.

- + +

◆ Init()

+
@@ -406,11 +393,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 64 of file adk.cpp.

+

Definition at line 64 of file adk.cpp.

- + +

◆ Release()

+
@@ -433,11 +422,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 337 of file adk.cpp.

+

Definition at line 337 of file adk.cpp.

- + +

◆ Poll()

+
@@ -460,11 +451,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 103 of file adk.h.

+

Definition at line 103 of file adk.h.

- + +

◆ GetAddress()

+
@@ -487,11 +480,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 107 of file adk.h.

+

Definition at line 107 of file adk.h.

- + +

◆ isReady()

+
@@ -512,11 +507,13 @@ Static Protected Attributes
-

Definition at line 111 of file adk.h.

+

Definition at line 111 of file adk.h.

- + +

◆ VIDPIDOK()

+
@@ -550,11 +547,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 115 of file adk.h.

+

Definition at line 115 of file adk.h.

- + +

◆ EndpointXtract()

+
@@ -606,12 +605,14 @@ Static Protected Attributes

Reimplemented from UsbConfigXtracter.

-

Definition at line 312 of file adk.cpp.

+

Definition at line 312 of file adk.cpp.

Member Data Documentation

- + +

◆ epDataInIndex

+
@@ -629,11 +630,13 @@ Static Protected Attributes
-

Definition at line 69 of file adk.h.

+

Definition at line 69 of file adk.h.

- + +

◆ epDataOutIndex

+
@@ -651,11 +654,13 @@ Static Protected Attributes
-

Definition at line 70 of file adk.h.

+

Definition at line 70 of file adk.h.

- + +

◆ pUsb

+
@@ -673,11 +678,13 @@ Static Protected Attributes
-

Definition at line 73 of file adk.h.

+

Definition at line 73 of file adk.h.

- + +

◆ bAddress

+
@@ -695,11 +702,13 @@ Static Protected Attributes
-

Definition at line 74 of file adk.h.

+

Definition at line 74 of file adk.h.

- + +

◆ bConfNum

+
@@ -717,11 +726,13 @@ Static Protected Attributes
-

Definition at line 75 of file adk.h.

+

Definition at line 75 of file adk.h.

- + +

◆ bNumEP

+
@@ -739,11 +750,13 @@ Static Protected Attributes
-

Definition at line 77 of file adk.h.

+

Definition at line 77 of file adk.h.

- + +

◆ ready

+
@@ -761,11 +774,13 @@ Static Protected Attributes
-

Definition at line 78 of file adk.h.

+

Definition at line 78 of file adk.h.

- + +

◆ epInfo

+
@@ -783,7 +798,7 @@ Static Protected Attributes
-

Definition at line 81 of file adk.h.

+

Definition at line 81 of file adk.h.

@@ -796,7 +811,7 @@ Static Protected Attributes diff --git a/class_a_d_k__coll__graph.map b/class_a_d_k__coll__graph.map index 72616cf5..4115de73 100644 --- a/class_a_d_k__coll__graph.map +++ b/class_a_d_k__coll__graph.map @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/class_a_d_k__coll__graph.md5 b/class_a_d_k__coll__graph.md5 index 6e64816d..25bc8093 100644 --- a/class_a_d_k__coll__graph.md5 +++ b/class_a_d_k__coll__graph.md5 @@ -1 +1 @@ -677a6776b852e96bee247fd946d74be2 \ No newline at end of file +348104757e62d2b90a8ea7ecf8b2514d \ No newline at end of file diff --git a/class_a_d_k__coll__graph.png b/class_a_d_k__coll__graph.png index 4176edac..fd5eb1a7 100644 Binary files a/class_a_d_k__coll__graph.png and b/class_a_d_k__coll__graph.png differ diff --git a/class_a_d_k__inherit__graph.map b/class_a_d_k__inherit__graph.map index a1e35774..fb33f602 100644 --- a/class_a_d_k__inherit__graph.map +++ b/class_a_d_k__inherit__graph.map @@ -1,4 +1,4 @@ - - + + diff --git a/class_a_d_k__inherit__graph.md5 b/class_a_d_k__inherit__graph.md5 index 55e30802..473c9f33 100644 --- a/class_a_d_k__inherit__graph.md5 +++ b/class_a_d_k__inherit__graph.md5 @@ -1 +1 @@ -bca330dbfb30c1761bf024a703ee6a77 \ No newline at end of file +5f518fcc911734c80c7fef9e0bbfcf11 \ No newline at end of file diff --git a/class_a_d_k__inherit__graph.png b/class_a_d_k__inherit__graph.png index f9cb31fe..512053a3 100644 Binary files a/class_a_d_k__inherit__graph.png and b/class_a_d_k__inherit__graph.png differ diff --git a/class_address_pool-members.html b/class_address_pool-members.html index 63250730..5df1ec19 100644 --- a/class_address_pool-members.html +++ b/class_address_pool-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - + +
[legend]
@@ -114,9 +89,11 @@ Public Member Functions

Detailed Description

-

Definition at line 90 of file address.h.

+

Definition at line 90 of file address.h.

Member Function Documentation

- + +

◆ GetUsbDevicePtr()

+
@@ -142,7 +119,9 @@ Public Member Functions - + +

◆ AllocAddress()

+
@@ -184,7 +163,9 @@ Public Member Functions - + +

◆ FreeAddress()

+
@@ -218,7 +199,7 @@ Public Member Functions diff --git a/class_address_pool__inherit__graph.map b/class_address_pool__inherit__graph.map index bb73e640..f1edddff 100644 --- a/class_address_pool__inherit__graph.map +++ b/class_address_pool__inherit__graph.map @@ -1,4 +1,4 @@ - - + + diff --git a/class_address_pool__inherit__graph.md5 b/class_address_pool__inherit__graph.md5 index 67a01c56..01fc9bff 100644 --- a/class_address_pool__inherit__graph.md5 +++ b/class_address_pool__inherit__graph.md5 @@ -1 +1 @@ -1e8b44e83a78a2dc42bcafc432f2a436 \ No newline at end of file +555ffc408a79052867a3f670eda97a3c \ No newline at end of file diff --git a/class_address_pool__inherit__graph.png b/class_address_pool__inherit__graph.png index 7d887516..6662ba44 100644 Binary files a/class_address_pool__inherit__graph.png and b/class_address_pool__inherit__graph.png differ diff --git a/class_address_pool_impl-members.html b/class_address_pool_impl-members.html index 367af086..7ba4d378 100644 --- a/class_address_pool_impl-members.html +++ b/class_address_pool_impl-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- +
[legend]
@@ -106,7 +81,7 @@ Collaboration diagram for AddressPoolImpl< MAX_DEVICES_ALLOWED >:
Collaboration graph
- +
[legend]
@@ -128,9 +103,11 @@ Public Member Functions class AddressPoolImpl< MAX_DEVICES_ALLOWED > -

Definition at line 103 of file address.h.

+

Definition at line 103 of file address.h.

Constructor & Destructor Documentation

- + +

◆ AddressPoolImpl()

+
@@ -153,12 +130,14 @@ template<const uint8_t MAX_DEVICES_ALLOWED>
-

Definition at line 171 of file address.h.

+

Definition at line 171 of file address.h.

Member Function Documentation

- + +

◆ GetUsbDevicePtr()

+
@@ -184,11 +163,13 @@ template<const uint8_t MAX_DEVICES_ALLOWED>

Implements AddressPool.

-

Definition at line 188 of file address.h.

+

Definition at line 188 of file address.h.

- + +

◆ ForEachUsbDevice()

+
@@ -212,11 +193,13 @@ template<const uint8_t MAX_DEVICES_ALLOWED>
-

Definition at line 199 of file address.h.

+

Definition at line 199 of file address.h.

- + +

◆ AllocAddress()

+
@@ -258,11 +241,13 @@ template<const uint8_t MAX_DEVICES_ALLOWED>

Implements AddressPool.

-

Definition at line 210 of file address.h.

+

Definition at line 210 of file address.h.

- + +

◆ FreeAddress()

+
@@ -288,7 +273,7 @@ template<const uint8_t MAX_DEVICES_ALLOWED>

Implements AddressPool.

-

Definition at line 262 of file address.h.

+

Definition at line 262 of file address.h.

@@ -300,7 +285,7 @@ template<const uint8_t MAX_DEVICES_ALLOWED>
diff --git a/class_address_pool_impl__coll__graph.map b/class_address_pool_impl__coll__graph.map index 528ab859..5bddb0ec 100644 --- a/class_address_pool_impl__coll__graph.map +++ b/class_address_pool_impl__coll__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_address_pool_impl__coll__graph.md5 b/class_address_pool_impl__coll__graph.md5 index 77f1e07a..b9076984 100644 --- a/class_address_pool_impl__coll__graph.md5 +++ b/class_address_pool_impl__coll__graph.md5 @@ -1 +1 @@ -77bc5e9fa2748d39429df403e8aba060 \ No newline at end of file +0ccbc0934c894d97b943ba1fd85404e1 \ No newline at end of file diff --git a/class_address_pool_impl__coll__graph.png b/class_address_pool_impl__coll__graph.png index 7f744d8b..ba726a1c 100644 Binary files a/class_address_pool_impl__coll__graph.png and b/class_address_pool_impl__coll__graph.png differ diff --git a/class_address_pool_impl__inherit__graph.map b/class_address_pool_impl__inherit__graph.map index 528ab859..5bddb0ec 100644 --- a/class_address_pool_impl__inherit__graph.map +++ b/class_address_pool_impl__inherit__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_address_pool_impl__inherit__graph.md5 b/class_address_pool_impl__inherit__graph.md5 index 77f1e07a..f9ed713c 100644 --- a/class_address_pool_impl__inherit__graph.md5 +++ b/class_address_pool_impl__inherit__graph.md5 @@ -1 +1 @@ -77bc5e9fa2748d39429df403e8aba060 \ No newline at end of file +bf21db1ad5951b3ac32e2bce64875193 \ No newline at end of file diff --git a/class_address_pool_impl__inherit__graph.png b/class_address_pool_impl__inherit__graph.png index 7f744d8b..ba726a1c 100644 Binary files a/class_address_pool_impl__inherit__graph.png and b/class_address_pool_impl__inherit__graph.png differ diff --git a/class_b_t_d-members.html b/class_b_t_d-members.html index f39e81d9..698b5418 100644 --- a/class_b_t_d-members.html +++ b/class_b_t_d-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@ - + - - + + + + - + - - + + + +
Inheritance graph
- - + +
[legend]
@@ -111,11 +86,11 @@ Collaboration diagram for BTD:
Collaboration graph
- - - - - + + + + +
[legend]
@@ -302,9 +277,11 @@ Static Protected Attributes

Detailed Description

The Bluetooth Dongle class will take care of all the USB communication and then pass the data to the BluetoothService classes.

-

Definition at line 221 of file BTD.h.

+

Definition at line 221 of file BTD.h.

Constructor & Destructor Documentation

- + +

◆ BTD()

+
@@ -324,12 +301,14 @@ Static Protected Attributes -

Definition at line 27 of file BTD.cpp.

+

Definition at line 27 of file BTD.cpp.

Member Function Documentation

- + +

◆ ConfigureDevice()

+
@@ -378,11 +357,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 50 of file BTD.cpp.

+

Definition at line 50 of file BTD.cpp.

- + +

◆ Init()

+
@@ -431,11 +412,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 136 of file BTD.cpp.

+

Definition at line 136 of file BTD.cpp.

- + +

◆ Release()

+
@@ -459,11 +442,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 379 of file BTD.cpp.

+

Definition at line 379 of file BTD.cpp.

- + +

◆ Poll()

+
@@ -487,11 +472,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 385 of file BTD.cpp.

+

Definition at line 385 of file BTD.cpp.

- + +

◆ GetAddress()

+
@@ -515,11 +502,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 261 of file BTD.h.

+

Definition at line 261 of file BTD.h.

- + +

◆ isReady()

+
@@ -541,11 +530,13 @@ Static Protected Attributes

Used to check if the dongle has been initialized.

Returns
True if it's ready.
-

Definition at line 269 of file BTD.h.

+

Definition at line 269 of file BTD.h.

- + +

◆ DEVCLASSOK()

+
@@ -576,11 +567,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 278 of file BTD.h.

+

Definition at line 278 of file BTD.h.

- + +

◆ VIDPIDOK()

+
@@ -622,11 +615,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 289 of file BTD.h.

+

Definition at line 289 of file BTD.h.

- + +

◆ EndpointXtract()

+
@@ -688,11 +683,13 @@ Static Protected Attributes

Reimplemented from UsbConfigXtracter.

-

Definition at line 330 of file BTD.cpp.

+

Definition at line 330 of file BTD.cpp.

- + +

◆ disconnect()

+
@@ -706,11 +703,13 @@ Static Protected Attributes

Disconnects both the L2CAP Channel and the HCI Connection for all Bluetooth services.

-

Definition at line 397 of file BTD.cpp.

+

Definition at line 397 of file BTD.cpp.

- + +

◆ registerBluetoothService()

+
@@ -739,11 +738,13 @@ Static Protected Attributes
Returns
The service ID on success or -1 on fail.
-

Definition at line 320 of file BTD.h.

+

Definition at line 320 of file BTD.h.

- + +

◆ HCI_Command()

+
@@ -774,11 +775,13 @@ Static Protected Attributes -

Definition at line 1108 of file BTD.cpp.

+

Definition at line 1108 of file BTD.cpp.

- + +

◆ hci_reset()

+
@@ -792,11 +795,13 @@ Static Protected Attributes

Reset the Bluetooth dongle.

-

Definition at line 1113 of file BTD.cpp.

+

Definition at line 1113 of file BTD.cpp.

- + +

◆ hci_read_bdaddr()

+
@@ -810,11 +815,13 @@ Static Protected Attributes

Read the Bluetooth address of the dongle.

-

Definition at line 1144 of file BTD.cpp.

+

Definition at line 1144 of file BTD.cpp.

- + +

◆ hci_read_local_version_information()

+
@@ -828,11 +835,13 @@ Static Protected Attributes

Read the HCI Version of the Bluetooth dongle.

-

Definition at line 1153 of file BTD.cpp.

+

Definition at line 1153 of file BTD.cpp.

- + +

◆ hci_read_local_extended_features()

+
@@ -847,11 +856,13 @@ Static Protected Attributes

Used to check if the dongle supports simple paring

-

Definition at line 1162 of file BTD.cpp.

+

Definition at line 1162 of file BTD.cpp.

- + +

◆ hci_write_local_name()

+
@@ -871,11 +882,13 @@ Static Protected Attributes -

Definition at line 1207 of file BTD.cpp.

+

Definition at line 1207 of file BTD.cpp.

- + +

◆ hci_write_simple_pairing_mode()

+
@@ -890,11 +903,13 @@ Static Protected Attributes

Used to enable simply paring if the dongle supports it

-

Definition at line 1237 of file BTD.cpp.

+

Definition at line 1237 of file BTD.cpp.

- + +

◆ hci_set_event_mask()

+
@@ -908,11 +923,13 @@ Static Protected Attributes

Used to enable events related to simple paring

-

Definition at line 1219 of file BTD.cpp.

+

Definition at line 1219 of file BTD.cpp.

- + +

◆ hci_write_scan_enable()

+
@@ -926,11 +943,13 @@ Static Protected Attributes

Enable visibility to other Bluetooth devices.

-

Definition at line 1122 of file BTD.cpp.

+

Definition at line 1122 of file BTD.cpp.

- + +

◆ hci_write_scan_disable()

+
@@ -944,11 +963,13 @@ Static Protected Attributes

Disable visibility to other Bluetooth devices.

-

Definition at line 1135 of file BTD.cpp.

+

Definition at line 1135 of file BTD.cpp.

- + +

◆ hci_remote_name()

+
@@ -962,11 +983,13 @@ Static Protected Attributes

Read the remote devices name.

-

Definition at line 1188 of file BTD.cpp.

+

Definition at line 1188 of file BTD.cpp.

- + +

◆ hci_accept_connection()

+
@@ -980,11 +1003,13 @@ Static Protected Attributes

Accept the connection with the Bluetooth device.

-

Definition at line 1172 of file BTD.cpp.

+

Definition at line 1172 of file BTD.cpp.

- + +

◆ hci_disconnect()

+
@@ -1004,11 +1029,13 @@ Static Protected Attributes -

Definition at line 1399 of file BTD.cpp.

+

Definition at line 1399 of file BTD.cpp.

- + +

◆ hci_pin_code_request_reply()

+
@@ -1022,11 +1049,13 @@ Static Protected Attributes

Respond with the pin for the connection. The pin is automatically set for the Wii library, but can be customized for the SPP library.

-

Definition at line 1294 of file BTD.cpp.

+

Definition at line 1294 of file BTD.cpp.

- + +

◆ hci_pin_code_negative_request_reply()

+
@@ -1040,11 +1069,13 @@ Static Protected Attributes

Respons when no pin was set.

-

Definition at line 1330 of file BTD.cpp.

+

Definition at line 1330 of file BTD.cpp.

- + +

◆ hci_link_key_request_negative_reply()

+
@@ -1058,11 +1089,13 @@ Static Protected Attributes

Command is used to reply to a Link Key Request event from the BR/EDR Controller if the Host does not have a stored Link Key for the connection.

-

Definition at line 1344 of file BTD.cpp.

+

Definition at line 1344 of file BTD.cpp.

- + +

◆ hci_user_confirmation_request_reply()

+
@@ -1076,11 +1109,13 @@ Static Protected Attributes

Used to during simple paring to confirm that the we want to connect

-

Definition at line 1375 of file BTD.cpp.

+

Definition at line 1375 of file BTD.cpp.

- + +

◆ hci_authentication_request()

+
@@ -1094,11 +1129,13 @@ Static Protected Attributes

Used to try to authenticate with the remote device.

-

Definition at line 1389 of file BTD.cpp.

+

Definition at line 1389 of file BTD.cpp.

- + +

◆ hci_inquiry()

+
@@ -1112,11 +1149,13 @@ Static Protected Attributes

Start a HCI inquiry.

-

Definition at line 1246 of file BTD.cpp.

+

Definition at line 1246 of file BTD.cpp.

- + +

◆ hci_inquiry_cancel()

+
@@ -1130,11 +1169,13 @@ Static Protected Attributes

Cancel a HCI inquiry.

-

Definition at line 1260 of file BTD.cpp.

+

Definition at line 1260 of file BTD.cpp.

- + +

◆ hci_connect() [1/2]

+
@@ -1148,11 +1189,13 @@ Static Protected Attributes

Connect to last device communicated with.

-

Definition at line 1268 of file BTD.cpp.

+

Definition at line 1268 of file BTD.cpp.

- + +

◆ hci_io_capability_request_reply()

+
@@ -1166,11 +1209,13 @@ Static Protected Attributes

Used during simple paring to reply to a IO capability request

-

Definition at line 1358 of file BTD.cpp.

+

Definition at line 1358 of file BTD.cpp.

- + +

◆ hci_connect() [2/2]

+
@@ -1190,11 +1235,13 @@ Static Protected Attributes -

Definition at line 1272 of file BTD.cpp.

+

Definition at line 1272 of file BTD.cpp.

- + +

◆ hci_write_class_of_device()

+
@@ -1208,11 +1255,13 @@ Static Protected Attributes

Used to a set the class of the device.

-

Definition at line 1411 of file BTD.cpp.

+

Definition at line 1411 of file BTD.cpp.

- + +

◆ L2CAP_Command()

+
@@ -1263,11 +1312,13 @@ Static Protected Attributes -

Definition at line 1447 of file BTD.cpp.

+

Definition at line 1447 of file BTD.cpp.

- + +

◆ l2cap_connection_request()

+
@@ -1312,11 +1363,13 @@ Static Protected Attributes -

Definition at line 1475 of file BTD.cpp.

+

Definition at line 1475 of file BTD.cpp.

- + +

◆ l2cap_connection_response()

+
@@ -1368,11 +1421,13 @@ Static Protected Attributes -

Definition at line 1488 of file BTD.cpp.

+

Definition at line 1488 of file BTD.cpp.

- + +

◆ l2cap_config_request()

+
@@ -1410,11 +1465,13 @@ Static Protected Attributes -

Definition at line 1505 of file BTD.cpp.

+

Definition at line 1505 of file BTD.cpp.

- + +

◆ l2cap_config_response()

+
@@ -1452,11 +1509,13 @@ Static Protected Attributes -

Definition at line 1522 of file BTD.cpp.

+

Definition at line 1522 of file BTD.cpp.

- + +

◆ l2cap_disconnection_request()

+
@@ -1501,11 +1560,13 @@ Static Protected Attributes -

Definition at line 1541 of file BTD.cpp.

+

Definition at line 1541 of file BTD.cpp.

- + +

◆ l2cap_disconnection_response()

+
@@ -1550,11 +1611,13 @@ Static Protected Attributes -

Definition at line 1554 of file BTD.cpp.

+

Definition at line 1554 of file BTD.cpp.

- + +

◆ l2cap_information_response()

+
@@ -1598,11 +1661,13 @@ Static Protected Attributes -

Definition at line 1567 of file BTD.cpp.

+

Definition at line 1567 of file BTD.cpp.

- + +

◆ pairWithWiimote()

+
@@ -1624,11 +1689,13 @@ Static Protected Attributes

Call this function to pair with a Wiimote

-

Definition at line 497 of file BTD.h.

+

Definition at line 497 of file BTD.h.

- + +

◆ pairWithHID()

+
@@ -1650,11 +1717,13 @@ Static Protected Attributes

Call this function to pair with a HID device

-

Definition at line 513 of file BTD.h.

+

Definition at line 513 of file BTD.h.

- + +

◆ readPollInterval()

+
@@ -1676,11 +1745,13 @@ Static Protected Attributes

Read the poll interval taken from the endpoint descriptors.

Returns
The poll interval in ms.
-

Definition at line 529 of file BTD.h.

+

Definition at line 529 of file BTD.h.

- + +

◆ PrintEndpointDescriptor()

+
@@ -1708,12 +1779,14 @@ Static Protected Attributes -

Definition at line 360 of file BTD.cpp.

+

Definition at line 360 of file BTD.cpp.

Member Data Documentation

- + +

◆ waitingForConnection

+
@@ -1724,11 +1797,13 @@ Static Protected Attributes

Use this to see if it is waiting for a incoming connection.

-

Definition at line 468 of file BTD.h.

+

Definition at line 468 of file BTD.h.

- + +

◆ l2capConnectionClaimed

+
@@ -1739,11 +1814,13 @@ Static Protected Attributes

This is used by the service to know when to store the device information.

-

Definition at line 470 of file BTD.h.

+

Definition at line 470 of file BTD.h.

- + +

◆ sdpConnectionClaimed

+
@@ -1754,11 +1831,13 @@ Static Protected Attributes

This is used by the SPP library to claim the current SDP incoming request.

-

Definition at line 472 of file BTD.h.

+

Definition at line 472 of file BTD.h.

- + +

◆ rfcommConnectionClaimed

+
@@ -1769,11 +1848,13 @@ Static Protected Attributes

This is used by the SPP library to claim the current RFCOMM incoming request.

-

Definition at line 474 of file BTD.h.

+

Definition at line 474 of file BTD.h.

- + +

◆ btdName

+
@@ -1784,11 +1865,13 @@ Static Protected Attributes

The name you wish to make the dongle show up as. It is set automatically by the SPP library.

-

Definition at line 477 of file BTD.h.

+

Definition at line 477 of file BTD.h.

- + +

◆ btdPin

+
@@ -1799,11 +1882,13 @@ Static Protected Attributes

The pin you wish to make the dongle use for authentication. It is set automatically by the SPP and BTHID library.

-

Definition at line 479 of file BTD.h.

+

Definition at line 479 of file BTD.h.

- + +

◆ my_bdaddr

+
@@ -1814,11 +1899,13 @@ Static Protected Attributes

The bluetooth dongles Bluetooth address.

-

Definition at line 482 of file BTD.h.

+

Definition at line 482 of file BTD.h.

- + +

◆ hci_handle

+
@@ -1829,11 +1916,13 @@ Static Protected Attributes

HCI handle for the last connection.

-

Definition at line 484 of file BTD.h.

+

Definition at line 484 of file BTD.h.

- + +

◆ disc_bdaddr

+
@@ -1844,11 +1933,13 @@ Static Protected Attributes

Last incoming devices Bluetooth address.

-

Definition at line 486 of file BTD.h.

+

Definition at line 486 of file BTD.h.

- + +

◆ remote_name

+
@@ -1859,11 +1950,13 @@ Static Protected Attributes

First 30 chars of last remote name.

-

Definition at line 488 of file BTD.h.

+

Definition at line 488 of file BTD.h.

- + +

◆ hci_version

+
@@ -1874,11 +1967,13 @@ Static Protected Attributes

The supported HCI Version read from the Bluetooth dongle. Used by the PS3BT library to check the HCI Version of the Bluetooth dongle, it should be at least 3 to work properly with the library.

-

Definition at line 494 of file BTD.h.

+

Definition at line 494 of file BTD.h.

- + +

◆ connectToWii

+
@@ -1889,11 +1984,13 @@ Static Protected Attributes

Used to only send the ACL data to the Wiimote.

-

Definition at line 500 of file BTD.h.

+

Definition at line 500 of file BTD.h.

- + +

◆ incomingWii

+
@@ -1904,11 +2001,13 @@ Static Protected Attributes

True if a Wiimote is connecting.

-

Definition at line 504 of file BTD.h.

+

Definition at line 504 of file BTD.h.

- + +

◆ pairWithWii

+
@@ -1919,11 +2018,13 @@ Static Protected Attributes

True when it should pair with a Wiimote.

-

Definition at line 506 of file BTD.h.

+

Definition at line 506 of file BTD.h.

- + +

◆ motionPlusInside

+
@@ -1934,11 +2035,13 @@ Static Protected Attributes

True if it's the new Wiimote with the Motion Plus Inside or a Wii U Pro Controller.

-

Definition at line 508 of file BTD.h.

+

Definition at line 508 of file BTD.h.

- + +

◆ wiiUProController

+
@@ -1949,11 +2052,13 @@ Static Protected Attributes

True if it's a Wii U Pro Controller.

-

Definition at line 510 of file BTD.h.

+

Definition at line 510 of file BTD.h.

- + +

◆ connectToHIDDevice

+
@@ -1964,11 +2069,13 @@ Static Protected Attributes

Used to only send the ACL data to the HID device.

-

Definition at line 517 of file BTD.h.

+

Definition at line 517 of file BTD.h.

- + +

◆ incomingHIDDevice

+
@@ -1979,11 +2086,13 @@ Static Protected Attributes

True if a HID device is connecting.

-

Definition at line 521 of file BTD.h.

+

Definition at line 521 of file BTD.h.

- + +

◆ pairWithHIDDevice

+
@@ -1994,11 +2103,13 @@ Static Protected Attributes

True when it should pair with a device like a mouse or keyboard.

-

Definition at line 523 of file BTD.h.

+

Definition at line 523 of file BTD.h.

- + +

◆ useSimplePairing

+
@@ -2009,11 +2120,13 @@ Static Protected Attributes

Used by the drivers to enable simple pairing

-

Definition at line 531 of file BTD.h.

+

Definition at line 531 of file BTD.h.

- + +

◆ pUsb

+
@@ -2032,11 +2145,13 @@ Static Protected Attributes

Pointer to USB class instance.

-

Definition at line 538 of file BTD.h.

+

Definition at line 538 of file BTD.h.

- + +

◆ bAddress

+
@@ -2055,11 +2170,13 @@ Static Protected Attributes

Device address.

-

Definition at line 540 of file BTD.h.

+

Definition at line 540 of file BTD.h.

- + +

◆ epInfo

+
@@ -2078,11 +2195,13 @@ Static Protected Attributes

Endpoint info structure.

-

Definition at line 542 of file BTD.h.

+

Definition at line 542 of file BTD.h.

- + +

◆ bConfNum

+
@@ -2101,11 +2220,13 @@ Static Protected Attributes

Configuration number.

-

Definition at line 545 of file BTD.h.

+

Definition at line 545 of file BTD.h.

- + +

◆ bNumEP

+
@@ -2124,11 +2245,13 @@ Static Protected Attributes

Total number of endpoints in the configuration.

-

Definition at line 547 of file BTD.h.

+

Definition at line 547 of file BTD.h.

- + +

◆ qNextPollTime

+
@@ -2147,11 +2270,13 @@ Static Protected Attributes

Next poll time based on poll interval taken from the USB descriptor.

-

Definition at line 549 of file BTD.h.

+

Definition at line 549 of file BTD.h.

- + +

◆ BTD_CONTROL_PIPE

+
@@ -2170,11 +2295,13 @@ Static Protected Attributes

Bluetooth dongle control endpoint.

-

Definition at line 552 of file BTD.h.

+

Definition at line 552 of file BTD.h.

- + +

◆ BTD_EVENT_PIPE

+
@@ -2193,11 +2320,13 @@ Static Protected Attributes

HCI event endpoint index.

-

Definition at line 554 of file BTD.h.

+

Definition at line 554 of file BTD.h.

- + +

◆ BTD_DATAIN_PIPE

+
@@ -2216,11 +2345,13 @@ Static Protected Attributes

ACL In endpoint index.

-

Definition at line 556 of file BTD.h.

+

Definition at line 556 of file BTD.h.

- + +

◆ BTD_DATAOUT_PIPE

+
@@ -2239,7 +2370,7 @@ Static Protected Attributes

ACL Out endpoint index.

-

Definition at line 558 of file BTD.h.

+

Definition at line 558 of file BTD.h.

@@ -2252,7 +2383,7 @@ Static Protected Attributes diff --git a/class_b_t_d__coll__graph.map b/class_b_t_d__coll__graph.map index faf78d2f..b127acd8 100644 --- a/class_b_t_d__coll__graph.map +++ b/class_b_t_d__coll__graph.map @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/class_b_t_d__coll__graph.md5 b/class_b_t_d__coll__graph.md5 index 7288133e..6b850d5b 100644 --- a/class_b_t_d__coll__graph.md5 +++ b/class_b_t_d__coll__graph.md5 @@ -1 +1 @@ -e72568841cb2f05e3bfabb29e1ce8457 \ No newline at end of file +d30fe5eedeff8ac785a92b5f99c8d16d \ No newline at end of file diff --git a/class_b_t_d__coll__graph.png b/class_b_t_d__coll__graph.png index b553c6ff..5bac874a 100644 Binary files a/class_b_t_d__coll__graph.png and b/class_b_t_d__coll__graph.png differ diff --git a/class_b_t_d__inherit__graph.map b/class_b_t_d__inherit__graph.map index ed1c9ace..586850de 100644 --- a/class_b_t_d__inherit__graph.map +++ b/class_b_t_d__inherit__graph.map @@ -1,4 +1,4 @@ - - + + diff --git a/class_b_t_d__inherit__graph.md5 b/class_b_t_d__inherit__graph.md5 index 95bb3a3b..bf83e9fe 100644 --- a/class_b_t_d__inherit__graph.md5 +++ b/class_b_t_d__inherit__graph.md5 @@ -1 +1 @@ -36ee382408a95d482da81524513435df \ No newline at end of file +cc3b5af420b1b442f97eb1e44ba768a6 \ No newline at end of file diff --git a/class_b_t_d__inherit__graph.png b/class_b_t_d__inherit__graph.png index 0ac39bf3..cb998fc7 100644 Binary files a/class_b_t_d__inherit__graph.png and b/class_b_t_d__inherit__graph.png differ diff --git a/class_b_t_h_i_d-members.html b/class_b_t_h_i_d-members.html index ead8e4c5..929e90b5 100644 --- a/class_b_t_h_i_d-members.html +++ b/class_b_t_h_i_d-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - - + + +
[legend]
@@ -110,13 +85,13 @@ Collaboration diagram for BTHID:
Collaboration graph
- - - - - - - + + + + + + +
[legend]
@@ -201,9 +176,11 @@ BluetoothService implementation

Detailed Description

This BluetoothService class implements support for Bluetooth HID devices.

-

Definition at line 29 of file BTHID.h.

+

Definition at line 29 of file BTHID.h.

Constructor & Destructor Documentation

- + +

◆ BTHID()

+
@@ -241,12 +218,14 @@ BluetoothService implementation -

Definition at line 23 of file BTHID.cpp.

+

Definition at line 23 of file BTHID.cpp.

Member Function Documentation

- + +

◆ disconnect()

+
@@ -270,11 +249,13 @@ BluetoothService implementation

Implements BluetoothService.

-

Definition at line 53 of file BTHID.cpp.

+

Definition at line 53 of file BTHID.cpp.

- + +

◆ GetReportParser()

+
@@ -303,11 +284,13 @@ BluetoothService implementation
Returns
Returns the corresponding HIDReportParser. Returns NULL if id is not valid.
-

Definition at line 49 of file BTHID.h.

+

Definition at line 49 of file BTHID.h.

- + +

◆ SetReportParser()

+
@@ -347,11 +330,13 @@ BluetoothService implementation
Returns
Returns true if the HIDReportParser is set. False otherwise.
-

Definition at line 61 of file BTHID.h.

+

Definition at line 61 of file BTHID.h.

- + +

◆ setProtocolMode()

+
@@ -379,11 +364,13 @@ BluetoothService implementation -

Definition at line 72 of file BTHID.h.

+

Definition at line 72 of file BTHID.h.

- + +

◆ setLeds() [1/2]

+
@@ -411,11 +398,13 @@ BluetoothService implementation -

Definition at line 81 of file BTHID.h.

+

Definition at line 81 of file BTHID.h.

- + +

◆ setLeds() [2/2]

+
@@ -435,11 +424,13 @@ BluetoothService implementation -

Definition at line 618 of file BTHID.cpp.

+

Definition at line 618 of file BTHID.cpp.

- + +

◆ pair()

+
@@ -462,11 +453,13 @@ BluetoothService implementation

Call this to start the pairing sequence with a device

-

Definition at line 91 of file BTHID.h.

+

Definition at line 91 of file BTHID.h.

- + +

◆ ACLData()

+
@@ -496,11 +489,13 @@ BluetoothService implementation

Implements BluetoothService.

-

Definition at line 63 of file BTHID.cpp.

+

Definition at line 63 of file BTHID.cpp.

- + +

◆ Run()

+
@@ -524,11 +519,13 @@ BluetoothService implementation

Implements BluetoothService.

-

Definition at line 548 of file BTHID.cpp.

+

Definition at line 548 of file BTHID.cpp.

- + +

◆ Reset()

+
@@ -552,11 +549,13 @@ BluetoothService implementation

Implements BluetoothService.

-

Definition at line 43 of file BTHID.cpp.

+

Definition at line 43 of file BTHID.cpp.

- + +

◆ onInit()

+
@@ -580,11 +579,13 @@ BluetoothService implementation

Implements BluetoothService.

-

Definition at line 112 of file BTHID.h.

+

Definition at line 112 of file BTHID.h.

- + +

◆ ParseBTHIDData()

+
@@ -625,11 +626,13 @@ BluetoothService implementation

Reimplemented in PS4BT, and XBOXONESBT.

-

Definition at line 125 of file BTHID.h.

+

Definition at line 125 of file BTHID.h.

- + +

◆ ParseBTHIDControlData()

+
@@ -662,11 +665,13 @@ BluetoothService implementation

Same as ParseBTHIDData for reports that are sent through the interrupt pipe (in response to a GET_REPORT).

-

Definition at line 132 of file BTHID.h.

+

Definition at line 132 of file BTHID.h.

- + +

◆ OnInitBTHID()

+
@@ -690,11 +695,13 @@ BluetoothService implementation

Reimplemented in PS4BT, and XBOXONESBT.

-

Definition at line 136 of file BTHID.h.

+

Definition at line 136 of file BTHID.h.

- + +

◆ ResetBTHID()

+
@@ -718,12 +725,14 @@ BluetoothService implementation

Reimplemented in PS4BT, and XBOXONESBT.

-

Definition at line 140 of file BTHID.h.

+

Definition at line 140 of file BTHID.h.

Member Data Documentation

- + +

◆ connected

+
@@ -734,11 +743,13 @@ BluetoothService implementation

True if a device is connected

-

Definition at line 88 of file BTHID.h.

+

Definition at line 88 of file BTHID.h.

- + +

◆ control_scid

+
@@ -757,11 +768,13 @@ BluetoothService implementation

L2CAP source CID for HID_Control

-

Definition at line 146 of file BTHID.h.

+

Definition at line 146 of file BTHID.h.

- + +

◆ interrupt_scid

+
@@ -780,11 +793,13 @@ BluetoothService implementation

L2CAP source CID for HID_Interrupt

-

Definition at line 149 of file BTHID.h.

+

Definition at line 149 of file BTHID.h.

- + +

◆ l2cap_sdp_state

+
@@ -802,11 +817,13 @@ BluetoothService implementation
-

Definition at line 151 of file BTHID.h.

+

Definition at line 151 of file BTHID.h.

- + +

◆ sdp_scid

+
@@ -824,7 +841,7 @@ BluetoothService implementation
-

Definition at line 152 of file BTHID.h.

+

Definition at line 152 of file BTHID.h.

@@ -837,7 +854,7 @@ BluetoothService implementation diff --git a/class_b_t_h_i_d__coll__graph.map b/class_b_t_h_i_d__coll__graph.map index 3de13548..3ccb5bd2 100644 --- a/class_b_t_h_i_d__coll__graph.map +++ b/class_b_t_h_i_d__coll__graph.map @@ -1,9 +1,9 @@ - - - - - - - + + + + + + + diff --git a/class_b_t_h_i_d__coll__graph.md5 b/class_b_t_h_i_d__coll__graph.md5 index b8a6fc7c..2121b658 100644 --- a/class_b_t_h_i_d__coll__graph.md5 +++ b/class_b_t_h_i_d__coll__graph.md5 @@ -1 +1 @@ -328440863f58d32544996d4a0a7788ae \ No newline at end of file +3b8278cef06a7b1a6670fd63f49235a9 \ No newline at end of file diff --git a/class_b_t_h_i_d__coll__graph.png b/class_b_t_h_i_d__coll__graph.png index 8cbed0ca..fa5d3c3e 100644 Binary files a/class_b_t_h_i_d__coll__graph.png and b/class_b_t_h_i_d__coll__graph.png differ diff --git a/class_b_t_h_i_d__inherit__graph.map b/class_b_t_h_i_d__inherit__graph.map index 26edea61..31e785f3 100644 --- a/class_b_t_h_i_d__inherit__graph.map +++ b/class_b_t_h_i_d__inherit__graph.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/class_b_t_h_i_d__inherit__graph.md5 b/class_b_t_h_i_d__inherit__graph.md5 index aa802986..01278e42 100644 --- a/class_b_t_h_i_d__inherit__graph.md5 +++ b/class_b_t_h_i_d__inherit__graph.md5 @@ -1 +1 @@ -92986d8b2e993ef1ed7d358c02d021f2 \ No newline at end of file +eee85effef418f7404da53bc61be5232 \ No newline at end of file diff --git a/class_b_t_h_i_d__inherit__graph.png b/class_b_t_h_i_d__inherit__graph.png index cd3cc589..9f3c31d5 100644 Binary files a/class_b_t_h_i_d__inherit__graph.png and b/class_b_t_h_i_d__inherit__graph.png differ diff --git a/class_bluetooth_service-members.html b/class_bluetooth_service-members.html index b0a89b3e..e1c0f0f4 100644 --- a/class_bluetooth_service-members.html +++ b/class_bluetooth_service-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@ - + - - + + + + - + - - + + + +
Inheritance graph
- - - - - - + + + + + +
[legend]
@@ -113,12 +88,12 @@ Collaboration diagram for BluetoothService:
Collaboration graph
- - - - - - + + + + + +
[legend]
@@ -160,9 +135,11 @@ Protected Attributes

Detailed Description

All Bluetooth services should inherit this class.

-

Definition at line 603 of file BTD.h.

+

Definition at line 603 of file BTD.h.

Constructor & Destructor Documentation

- + +

◆ BluetoothService()

+
@@ -184,12 +161,14 @@ Protected Attributes
-

Definition at line 605 of file BTD.h.

+

Definition at line 605 of file BTD.h.

Member Function Documentation

- + +

◆ ACLData()

+
@@ -221,7 +200,9 @@ Protected Attributes - + +

◆ Run()

+
@@ -247,7 +228,9 @@ Protected Attributes - + +

◆ Reset()

+
@@ -273,7 +256,9 @@ Protected Attributes - + +

◆ disconnect()

+
@@ -299,7 +284,9 @@ Protected Attributes - + +

◆ attachOnInit()

+
@@ -327,11 +314,13 @@ Protected Attributes -

Definition at line 625 of file BTD.h.

+

Definition at line 625 of file BTD.h.

- + +

◆ onInit()

+
@@ -357,7 +346,9 @@ Protected Attributes - + +

◆ checkHciHandle()

+
@@ -390,12 +381,14 @@ Protected Attributes

Used to check if the incoming L2CAP data matches the HCI Handle

-

Definition at line 638 of file BTD.h.

+

Definition at line 638 of file BTD.h.

Member Data Documentation

- + +

◆ pFuncOnInit

+
@@ -414,11 +407,13 @@ Protected Attributes

Pointer to function called in onInit().

-

Definition at line 643 of file BTD.h.

+

Definition at line 643 of file BTD.h.

- + +

◆ pBtd

+
@@ -437,11 +432,13 @@ Protected Attributes

Pointer to BTD instance.

-

Definition at line 646 of file BTD.h.

+

Definition at line 646 of file BTD.h.

- + +

◆ hci_handle

+
@@ -460,11 +457,13 @@ Protected Attributes

The HCI Handle for the connection.

-

Definition at line 649 of file BTD.h.

+

Definition at line 649 of file BTD.h.

- + +

◆ l2cap_event_flag

+
@@ -483,11 +482,13 @@ Protected Attributes

L2CAP flags of received Bluetooth events.

-

Definition at line 652 of file BTD.h.

+

Definition at line 652 of file BTD.h.

- + +

◆ identifier

+
@@ -506,7 +507,7 @@ Protected Attributes

Identifier for L2CAP commands.

-

Definition at line 655 of file BTD.h.

+

Definition at line 655 of file BTD.h.

@@ -518,7 +519,7 @@ Protected Attributes diff --git a/class_bluetooth_service__coll__graph.map b/class_bluetooth_service__coll__graph.map index 6e6676cd..78616394 100644 --- a/class_bluetooth_service__coll__graph.map +++ b/class_bluetooth_service__coll__graph.map @@ -1,8 +1,8 @@ - - - - - - + + + + + + diff --git a/class_bluetooth_service__coll__graph.md5 b/class_bluetooth_service__coll__graph.md5 index c59d7e12..b708cfc1 100644 --- a/class_bluetooth_service__coll__graph.md5 +++ b/class_bluetooth_service__coll__graph.md5 @@ -1 +1 @@ -63004da77f15c2792f7eb5740b2b02f1 \ No newline at end of file +070e1cbbcad92a5495383b260ea40bb9 \ No newline at end of file diff --git a/class_bluetooth_service__coll__graph.png b/class_bluetooth_service__coll__graph.png index b1863f95..daf59302 100644 Binary files a/class_bluetooth_service__coll__graph.png and b/class_bluetooth_service__coll__graph.png differ diff --git a/class_bluetooth_service__inherit__graph.map b/class_bluetooth_service__inherit__graph.map index 7310d7d5..af5dc499 100644 --- a/class_bluetooth_service__inherit__graph.map +++ b/class_bluetooth_service__inherit__graph.map @@ -1,8 +1,8 @@ - - - - - - + + + + + + diff --git a/class_bluetooth_service__inherit__graph.md5 b/class_bluetooth_service__inherit__graph.md5 index d9f5352e..75c38a7a 100644 --- a/class_bluetooth_service__inherit__graph.md5 +++ b/class_bluetooth_service__inherit__graph.md5 @@ -1 +1 @@ -3d5267962243b5573494854871794b16 \ No newline at end of file +da327df8fa48213df2fe2fc9ea014911 \ No newline at end of file diff --git a/class_bluetooth_service__inherit__graph.png b/class_bluetooth_service__inherit__graph.png index d05fab6c..f7e60f6f 100644 Binary files a/class_bluetooth_service__inherit__graph.png and b/class_bluetooth_service__inherit__graph.png differ diff --git a/class_bulk_only-members.html b/class_bulk_only-members.html index 8fd4e61d..95541176 100644 --- a/class_bulk_only-members.html +++ b/class_bulk_only-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - + +
[legend]
@@ -110,11 +85,11 @@ Collaboration diagram for BulkOnly:
Collaboration graph
- - - - - + + + + +
[legend]
@@ -225,9 +200,11 @@ Static Protected Attributes

Detailed Description

-

Definition at line 469 of file masstorage.h.

+

Definition at line 469 of file masstorage.h.

Constructor & Destructor Documentation

- + +

◆ BulkOnly()

+
@@ -241,12 +218,14 @@ Static Protected Attributes
-

Definition at line 229 of file masstorage.cpp.

+

Definition at line 229 of file masstorage.cpp.

Member Function Documentation

- + +

◆ PrintEndpointDescriptor()

+
@@ -274,11 +253,13 @@ Static Protected Attributes -

Definition at line 1220 of file masstorage.cpp.

+

Definition at line 1220 of file masstorage.cpp.

- + +

◆ OnInit()

+
@@ -299,11 +280,13 @@ Static Protected Attributes
-

Definition at line 499 of file masstorage.h.

+

Definition at line 499 of file masstorage.h.

- + +

◆ GetLastUsbError()

+
@@ -324,11 +307,13 @@ Static Protected Attributes
-

Definition at line 505 of file masstorage.h.

+

Definition at line 505 of file masstorage.h.

- + +

◆ GetbMaxLUN()

+
@@ -349,11 +334,13 @@ Static Protected Attributes
-

Definition at line 509 of file masstorage.h.

+

Definition at line 509 of file masstorage.h.

- + +

◆ GetbTheLUN()

+
@@ -374,11 +361,13 @@ Static Protected Attributes
-

Definition at line 513 of file masstorage.h.

+

Definition at line 513 of file masstorage.h.

- + +

◆ WriteProtected()

+
@@ -400,11 +389,13 @@ Static Protected Attributes
Returns
cached status of write protect switch
-

Definition at line 77 of file masstorage.cpp.

+

Definition at line 77 of file masstorage.cpp.

- + +

◆ MediaCTL()

+
@@ -437,11 +428,13 @@ Static Protected Attributes
Returns
0 on success
-

Definition at line 137 of file masstorage.cpp.

+

Definition at line 137 of file masstorage.cpp.

- + +

◆ Read() [1/2]

+
@@ -495,11 +488,13 @@ Static Protected Attributes
Returns
0 on success
-

Definition at line 161 of file masstorage.cpp.

+

Definition at line 161 of file masstorage.cpp.

- + +

◆ Read() [2/2]

+
@@ -541,11 +536,13 @@ Static Protected Attributes
-

Definition at line 1247 of file masstorage.cpp.

+

Definition at line 1247 of file masstorage.cpp.

- + +

◆ Write()

+
@@ -599,11 +596,13 @@ Static Protected Attributes
Returns
0 on success
-

Definition at line 195 of file masstorage.cpp.

+

Definition at line 195 of file masstorage.cpp.

- + +

◆ LockMedia()

+
@@ -636,11 +635,13 @@ Static Protected Attributes
Returns
-

Definition at line 121 of file masstorage.cpp.

+

Definition at line 121 of file masstorage.cpp.

- + +

◆ LUNIsGood()

+
@@ -662,11 +663,13 @@ Static Protected Attributes
Returns
true if LUN is ready for use
-

Definition at line 67 of file masstorage.cpp.

+

Definition at line 67 of file masstorage.cpp.

- + +

◆ GetCapacity()

+
@@ -688,11 +691,13 @@ Static Protected Attributes
Returns
media capacity
-

Definition at line 43 of file masstorage.cpp.

+

Definition at line 43 of file masstorage.cpp.

- + +

◆ GetSectorSize()

+
@@ -714,11 +719,13 @@ Static Protected Attributes
Returns
media sector size
-

Definition at line 55 of file masstorage.cpp.

+

Definition at line 55 of file masstorage.cpp.

- + +

◆ Init()

+
@@ -767,11 +774,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 333 of file masstorage.cpp.

+

Definition at line 333 of file masstorage.cpp.

- + +

◆ ConfigureDevice()

+
@@ -822,11 +831,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 258 of file masstorage.cpp.

+

Definition at line 258 of file masstorage.cpp.

- + +

◆ Release()

+
@@ -851,11 +862,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 598 of file masstorage.cpp.

+

Definition at line 598 of file masstorage.cpp.

- + +

◆ Poll()

+
@@ -880,11 +893,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 676 of file masstorage.cpp.

+

Definition at line 676 of file masstorage.cpp.

- + +

◆ GetAddress()

+
@@ -907,11 +922,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 535 of file masstorage.h.

+

Definition at line 535 of file masstorage.h.

- + +

◆ EndpointXtract()

+
@@ -974,11 +991,13 @@ Static Protected Attributes

Reimplemented from UsbConfigXtracter.

-

Definition at line 550 of file masstorage.cpp.

+

Definition at line 550 of file masstorage.cpp.

- + +

◆ DEVCLASSOK()

+
@@ -1002,11 +1021,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 542 of file masstorage.h.

+

Definition at line 542 of file masstorage.h.

- + +

◆ SCSITransaction6()

+
@@ -1053,11 +1074,13 @@ Static Protected Attributes
Returns
-

Definition at line 90 of file masstorage.cpp.

+

Definition at line 90 of file masstorage.cpp.

- + +

◆ SCSITransaction10()

+
@@ -1104,12 +1127,14 @@ Static Protected Attributes
Returns
-

Definition at line 106 of file masstorage.cpp.

+

Definition at line 106 of file masstorage.cpp.

Member Data Documentation

- + +

◆ epDataInIndex

+
@@ -1127,11 +1152,13 @@ Static Protected Attributes
-

Definition at line 471 of file masstorage.h.

+

Definition at line 471 of file masstorage.h.

- + +

◆ epDataOutIndex

+
@@ -1149,11 +1176,13 @@ Static Protected Attributes
-

Definition at line 472 of file masstorage.h.

+

Definition at line 472 of file masstorage.h.

- + +

◆ epInterruptInIndex

+
@@ -1171,11 +1200,13 @@ Static Protected Attributes
-

Definition at line 473 of file masstorage.h.

+

Definition at line 473 of file masstorage.h.

- + +

◆ pUsb

+
@@ -1193,11 +1224,13 @@ Static Protected Attributes
-

Definition at line 475 of file masstorage.h.

+

Definition at line 475 of file masstorage.h.

- + +

◆ bAddress

+
@@ -1215,11 +1248,13 @@ Static Protected Attributes
-

Definition at line 476 of file masstorage.h.

+

Definition at line 476 of file masstorage.h.

- + +

◆ bConfNum

+
@@ -1237,11 +1272,13 @@ Static Protected Attributes
-

Definition at line 477 of file masstorage.h.

+

Definition at line 477 of file masstorage.h.

- + +

◆ bIface

+
@@ -1259,11 +1296,13 @@ Static Protected Attributes
-

Definition at line 478 of file masstorage.h.

+

Definition at line 478 of file masstorage.h.

- + +

◆ bNumEP

+
@@ -1281,11 +1320,13 @@ Static Protected Attributes
-

Definition at line 479 of file masstorage.h.

+

Definition at line 479 of file masstorage.h.

- + +

◆ qNextPollTime

+
@@ -1303,11 +1344,13 @@ Static Protected Attributes
-

Definition at line 480 of file masstorage.h.

+

Definition at line 480 of file masstorage.h.

- + +

◆ bPollEnable

+
@@ -1325,11 +1368,13 @@ Static Protected Attributes
-

Definition at line 481 of file masstorage.h.

+

Definition at line 481 of file masstorage.h.

- + +

◆ epInfo

+
@@ -1347,11 +1392,13 @@ Static Protected Attributes
-

Definition at line 483 of file masstorage.h.

+

Definition at line 483 of file masstorage.h.

- + +

◆ dCBWTag

+
@@ -1369,11 +1416,13 @@ Static Protected Attributes
-

Definition at line 485 of file masstorage.h.

+

Definition at line 485 of file masstorage.h.

- + +

◆ bLastUsbError

+
@@ -1391,11 +1440,13 @@ Static Protected Attributes
-

Definition at line 487 of file masstorage.h.

+

Definition at line 487 of file masstorage.h.

- + +

◆ bMaxLUN

+
@@ -1413,11 +1464,13 @@ Static Protected Attributes
-

Definition at line 488 of file masstorage.h.

+

Definition at line 488 of file masstorage.h.

- + +

◆ bTheLUN

+
@@ -1435,11 +1488,13 @@ Static Protected Attributes
-

Definition at line 489 of file masstorage.h.

+

Definition at line 489 of file masstorage.h.

- + +

◆ CurrentCapacity

+
@@ -1457,11 +1512,13 @@ Static Protected Attributes
-

Definition at line 490 of file masstorage.h.

+

Definition at line 490 of file masstorage.h.

- + +

◆ CurrentSectorSize

+
@@ -1479,11 +1536,13 @@ Static Protected Attributes
-

Definition at line 491 of file masstorage.h.

+

Definition at line 491 of file masstorage.h.

- + +

◆ LUNOk

+
@@ -1501,11 +1560,13 @@ Static Protected Attributes
-

Definition at line 492 of file masstorage.h.

+

Definition at line 492 of file masstorage.h.

- + +

◆ WriteOk

+
@@ -1523,7 +1584,7 @@ Static Protected Attributes
-

Definition at line 493 of file masstorage.h.

+

Definition at line 493 of file masstorage.h.

@@ -1536,7 +1597,7 @@ Static Protected Attributes diff --git a/class_bulk_only__coll__graph.map b/class_bulk_only__coll__graph.map index d56caf34..3ea782fd 100644 --- a/class_bulk_only__coll__graph.map +++ b/class_bulk_only__coll__graph.map @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/class_bulk_only__coll__graph.md5 b/class_bulk_only__coll__graph.md5 index 65616e8f..38e17c78 100644 --- a/class_bulk_only__coll__graph.md5 +++ b/class_bulk_only__coll__graph.md5 @@ -1 +1 @@ -f9839364bbfdcee0034202ae5496cf49 \ No newline at end of file +922595c1eab8d375f2394c87eb7b7d3b \ No newline at end of file diff --git a/class_bulk_only__coll__graph.png b/class_bulk_only__coll__graph.png index 693683e3..59371216 100644 Binary files a/class_bulk_only__coll__graph.png and b/class_bulk_only__coll__graph.png differ diff --git a/class_bulk_only__inherit__graph.map b/class_bulk_only__inherit__graph.map index 86773e66..8eae436e 100644 --- a/class_bulk_only__inherit__graph.map +++ b/class_bulk_only__inherit__graph.map @@ -1,4 +1,4 @@ - - + + diff --git a/class_bulk_only__inherit__graph.md5 b/class_bulk_only__inherit__graph.md5 index ab44521f..f268bf55 100644 --- a/class_bulk_only__inherit__graph.md5 +++ b/class_bulk_only__inherit__graph.md5 @@ -1 +1 @@ -2b66e1860fb7442508174e207255d1ed \ No newline at end of file +f8d5729746afdcd2f3b036bed5864279 \ No newline at end of file diff --git a/class_bulk_only__inherit__graph.png b/class_bulk_only__inherit__graph.png index 839beb4a..7f4346f7 100644 Binary files a/class_bulk_only__inherit__graph.png and b/class_bulk_only__inherit__graph.png differ diff --git a/class_byte_skipper-members.html b/class_byte_skipper-members.html index a53e8f7c..b7bfaf33 100644 --- a/class_byte_skipper-members.html +++ b/class_byte_skipper-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +

Detailed Description

-

Definition at line 62 of file parsetools.h.

+

Definition at line 62 of file parsetools.h.

Constructor & Destructor Documentation

- + +

◆ ByteSkipper()

+
@@ -128,12 +105,14 @@ Public Member Functions
-

Definition at line 69 of file parsetools.h.

+

Definition at line 69 of file parsetools.h.

Member Function Documentation

- + +

◆ Initialize()

+
@@ -155,11 +134,13 @@ Public Member Functions
-

Definition at line 72 of file parsetools.h.

+

Definition at line 72 of file parsetools.h.

- + +

◆ Skip()

+
@@ -197,7 +178,7 @@ Public Member Functions
-

Definition at line 77 of file parsetools.h.

+

Definition at line 77 of file parsetools.h.

@@ -209,7 +190,7 @@ Public Member Functions diff --git a/class_c_d_c_async_oper-members.html b/class_c_d_c_async_oper-members.html index f1af7c38..0c0296ca 100644 --- a/class_c_d_c_async_oper-members.html +++ b/class_c_d_c_async_oper-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +

Detailed Description

-

Definition at line 128 of file cdcacm.h.

+

Definition at line 128 of file cdcacm.h.

Member Function Documentation

- + +

◆ OnInit()

+
@@ -125,7 +102,7 @@ Public Member Functions
-

Definition at line 131 of file cdcacm.h.

+

Definition at line 131 of file cdcacm.h.

@@ -137,7 +114,7 @@ Public Member Functions diff --git a/class_config_desc_parser-members.html b/class_config_desc_parser-members.html index 46d3e697..b2ab42a3 100644 --- a/class_config_desc_parser-members.html +++ b/class_config_desc_parser-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- +
[legend]
@@ -106,7 +81,7 @@ Collaboration diagram for ConfigDescParser< CLASS_ID, SUBCLASS_ID, PROTOCOL_I
Collaboration graph
- +
[legend]
@@ -124,9 +99,11 @@ Public Member Functions class ConfigDescParser< CLASS_ID, SUBCLASS_ID, PROTOCOL_ID, MASK > -

Definition at line 47 of file confdescparser.h.

+

Definition at line 47 of file confdescparser.h.

Constructor & Destructor Documentation

- + +

◆ ConfigDescParser()

+
@@ -142,12 +119,14 @@ template<const uint8_t CLASS_ID, const uint8_t SUBCLASS_ID, const uint8_t PRO
-

Definition at line 79 of file confdescparser.h.

+

Definition at line 79 of file confdescparser.h.

Member Function Documentation

- + +

◆ SetOR()

+
@@ -171,11 +150,13 @@ template<const uint8_t CLASS_ID, const uint8_t SUBCLASS_ID, const uint8_t PRO
-

Definition at line 71 of file confdescparser.h.

+

Definition at line 71 of file confdescparser.h.

- + +

◆ Parse()

+
@@ -217,7 +198,7 @@ template<const uint8_t CLASS_ID, const uint8_t SUBCLASS_ID, const uint8_t PRO

Implements USBReadParser.

-

Definition at line 91 of file confdescparser.h.

+

Definition at line 91 of file confdescparser.h.

@@ -229,7 +210,7 @@ template<const uint8_t CLASS_ID, const uint8_t SUBCLASS_ID, const uint8_t PRO diff --git a/class_config_desc_parser__coll__graph.map b/class_config_desc_parser__coll__graph.map index 6c292de0..a7791619 100644 --- a/class_config_desc_parser__coll__graph.map +++ b/class_config_desc_parser__coll__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_config_desc_parser__coll__graph.md5 b/class_config_desc_parser__coll__graph.md5 index 6d67d32a..9543b832 100644 --- a/class_config_desc_parser__coll__graph.md5 +++ b/class_config_desc_parser__coll__graph.md5 @@ -1 +1 @@ -43e2ececa16e23c2ef0bb98404d9dd99 \ No newline at end of file +8d46f1e236686517ba32dc78e05067b2 \ No newline at end of file diff --git a/class_config_desc_parser__coll__graph.png b/class_config_desc_parser__coll__graph.png index b1e39aab..6acf7ff6 100644 Binary files a/class_config_desc_parser__coll__graph.png and b/class_config_desc_parser__coll__graph.png differ diff --git a/class_config_desc_parser__inherit__graph.map b/class_config_desc_parser__inherit__graph.map index 6c292de0..a7791619 100644 --- a/class_config_desc_parser__inherit__graph.map +++ b/class_config_desc_parser__inherit__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_config_desc_parser__inherit__graph.md5 b/class_config_desc_parser__inherit__graph.md5 index 6d67d32a..007fa887 100644 --- a/class_config_desc_parser__inherit__graph.md5 +++ b/class_config_desc_parser__inherit__graph.md5 @@ -1 +1 @@ -43e2ececa16e23c2ef0bb98404d9dd99 \ No newline at end of file +09e7aef4816627c161587a65c67bc25c \ No newline at end of file diff --git a/class_config_desc_parser__inherit__graph.png b/class_config_desc_parser__inherit__graph.png index b1e39aab..6acf7ff6 100644 Binary files a/class_config_desc_parser__inherit__graph.png and b/class_config_desc_parser__inherit__graph.png differ diff --git a/class_f_t_d_i-members.html b/class_f_t_d_i-members.html index 60d0e34a..33e3f011 100644 --- a/class_f_t_d_i-members.html +++ b/class_f_t_d_i-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - + +
[legend]
@@ -107,8 +82,8 @@ Collaboration diagram for FTDI:
Collaboration graph
- - + +
[legend]
@@ -158,9 +133,11 @@ Public Member Functions

Detailed Description

-

Definition at line 98 of file cdcftdi.h.

+

Definition at line 98 of file cdcftdi.h.

Constructor & Destructor Documentation

- + +

◆ FTDI()

+
@@ -190,12 +167,14 @@ Public Member Functions
-

Definition at line 23 of file cdcftdi.cpp.

+

Definition at line 23 of file cdcftdi.cpp.

Member Function Documentation

- + +

◆ SetBaudRate()

+
@@ -209,11 +188,13 @@ Public Member Functions
-

Definition at line 293 of file cdcftdi.cpp.

+

Definition at line 293 of file cdcftdi.cpp.

- + +

◆ SetModemControl()

+
@@ -227,11 +208,13 @@ Public Member Functions
-

Definition at line 353 of file cdcftdi.cpp.

+

Definition at line 353 of file cdcftdi.cpp.

- + +

◆ SetFlowControl()

+
@@ -261,11 +244,13 @@ Public Member Functions
-

Definition at line 361 of file cdcftdi.cpp.

+

Definition at line 361 of file cdcftdi.cpp.

- + +

◆ SetData()

+
@@ -279,11 +264,13 @@ Public Member Functions
-

Definition at line 369 of file cdcftdi.cpp.

+

Definition at line 369 of file cdcftdi.cpp.

- + +

◆ SetLatency()

+
@@ -297,11 +284,13 @@ Public Member Functions
-

Definition at line 335 of file cdcftdi.cpp.

+

Definition at line 335 of file cdcftdi.cpp.

- + +

◆ GetLatency()

+
@@ -315,11 +304,13 @@ Public Member Functions
-

Definition at line 345 of file cdcftdi.cpp.

+

Definition at line 345 of file cdcftdi.cpp.

- + +

◆ RcvData()

+
@@ -343,11 +334,13 @@ Public Member Functions
-

Definition at line 377 of file cdcftdi.cpp.

+

Definition at line 377 of file cdcftdi.cpp.

- + +

◆ SndData()

+
@@ -371,11 +364,13 @@ Public Member Functions
-

Definition at line 385 of file cdcftdi.cpp.

+

Definition at line 385 of file cdcftdi.cpp.

- + +

◆ Init()

+
@@ -415,11 +410,13 @@ Public Member Functions

Reimplemented from USBDeviceConfig.

-

Definition at line 41 of file cdcftdi.cpp.

+

Definition at line 41 of file cdcftdi.cpp.

- + +

◆ Release()

+
@@ -442,11 +439,13 @@ Public Member Functions

Reimplemented from USBDeviceConfig.

-

Definition at line 267 of file cdcftdi.cpp.

+

Definition at line 267 of file cdcftdi.cpp.

- + +

◆ Poll()

+
@@ -469,11 +468,13 @@ Public Member Functions

Reimplemented from USBDeviceConfig.

-

Definition at line 278 of file cdcftdi.cpp.

+

Definition at line 278 of file cdcftdi.cpp.

- + +

◆ GetAddress()

+
@@ -496,11 +497,13 @@ Public Member Functions

Reimplemented from USBDeviceConfig.

-

Definition at line 138 of file cdcftdi.h.

+

Definition at line 138 of file cdcftdi.h.

- + +

◆ EndpointXtract()

+
@@ -552,11 +555,13 @@ Public Member Functions

Reimplemented from UsbConfigXtracter.

-

Definition at line 237 of file cdcftdi.cpp.

+

Definition at line 237 of file cdcftdi.cpp.

- + +

◆ VIDPIDOK()

+
@@ -590,11 +595,13 @@ Public Member Functions

Reimplemented from USBDeviceConfig.

-

Definition at line 145 of file cdcftdi.h.

+

Definition at line 145 of file cdcftdi.h.

- + +

◆ isReady()

+
@@ -615,7 +622,7 @@ Public Member Functions
-

Definition at line 148 of file cdcftdi.h.

+

Definition at line 148 of file cdcftdi.h.

@@ -628,7 +635,7 @@ Public Member Functions diff --git a/class_f_t_d_i__coll__graph.map b/class_f_t_d_i__coll__graph.map index 4dc81904..916a96c4 100644 --- a/class_f_t_d_i__coll__graph.map +++ b/class_f_t_d_i__coll__graph.map @@ -1,4 +1,4 @@ - - + + diff --git a/class_f_t_d_i__coll__graph.md5 b/class_f_t_d_i__coll__graph.md5 index 8736ae0b..03701d05 100644 --- a/class_f_t_d_i__coll__graph.md5 +++ b/class_f_t_d_i__coll__graph.md5 @@ -1 +1 @@ -7639ae03a2a3c77cae9f7ef89dc8dcfd \ No newline at end of file +ce47df1c759cd4a94063a5e7d0082de2 \ No newline at end of file diff --git a/class_f_t_d_i__coll__graph.png b/class_f_t_d_i__coll__graph.png index 68dacf23..074955e9 100644 Binary files a/class_f_t_d_i__coll__graph.png and b/class_f_t_d_i__coll__graph.png differ diff --git a/class_f_t_d_i__inherit__graph.map b/class_f_t_d_i__inherit__graph.map index 4dc81904..916a96c4 100644 --- a/class_f_t_d_i__inherit__graph.map +++ b/class_f_t_d_i__inherit__graph.map @@ -1,4 +1,4 @@ - - + + diff --git a/class_f_t_d_i__inherit__graph.md5 b/class_f_t_d_i__inherit__graph.md5 index 8736ae0b..64b84c33 100644 --- a/class_f_t_d_i__inherit__graph.md5 +++ b/class_f_t_d_i__inherit__graph.md5 @@ -1 +1 @@ -7639ae03a2a3c77cae9f7ef89dc8dcfd \ No newline at end of file +5c89ec39cab7057f56e7027e29a41346 \ No newline at end of file diff --git a/class_f_t_d_i__inherit__graph.png b/class_f_t_d_i__inherit__graph.png index 68dacf23..074955e9 100644 Binary files a/class_f_t_d_i__inherit__graph.png and b/class_f_t_d_i__inherit__graph.png differ diff --git a/class_f_t_d_i_async_oper-members.html b/class_f_t_d_i_async_oper-members.html index d1083ae9..77ab38ee 100644 --- a/class_f_t_d_i_async_oper-members.html +++ b/class_f_t_d_i_async_oper-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +

Detailed Description

-

Definition at line 81 of file cdcftdi.h.

+

Definition at line 81 of file cdcftdi.h.

Member Function Documentation

- + +

◆ OnInit()

+
@@ -127,11 +104,13 @@ Public Member Functions
-

Definition at line 84 of file cdcftdi.h.

+

Definition at line 84 of file cdcftdi.h.

- + +

◆ OnRelease()

+
@@ -153,7 +132,7 @@ Public Member Functions
-

Definition at line 88 of file cdcftdi.h.

+

Definition at line 88 of file cdcftdi.h.

@@ -165,7 +144,7 @@ Public Member Functions diff --git a/class_h_i_d_boot-members.html b/class_h_i_d_boot-members.html index f1e06336..50710df8 100644 --- a/class_h_i_d_boot-members.html +++ b/class_h_i_d_boot-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - - + + +
[legend]
@@ -108,11 +83,11 @@ Collaboration diagram for HIDBoot< BOOT_PROTOCOL >:
Collaboration graph
- - - - - + + + + +
[legend]
@@ -196,9 +171,11 @@ Additional Inherited Members class HIDBoot< BOOT_PROTOCOL > -

Definition at line 201 of file hidboot.h.

+

Definition at line 201 of file hidboot.h.

Constructor & Destructor Documentation

- + +

◆ HIDBoot()

+
@@ -224,12 +201,14 @@ template<const uint8_t BOOT_PROTOCOL>
-

Definition at line 256 of file hidboot.h.

+

Definition at line 256 of file hidboot.h.

Member Function Documentation

- + +

◆ SetReportParser()

+
@@ -265,11 +244,13 @@ template<const uint8_t BOOT_PROTOCOL>

Reimplemented from USBHID.

-

Definition at line 224 of file hidboot.h.

+

Definition at line 224 of file hidboot.h.

- + +

◆ Init()

+
@@ -311,11 +292,13 @@ template<const uint8_t BOOT_PROTOCOL>

Reimplemented from USBDeviceConfig.

-

Definition at line 285 of file hidboot.h.

+

Definition at line 285 of file hidboot.h.

- + +

◆ Release()

+
@@ -340,11 +323,13 @@ template<const uint8_t BOOT_PROTOCOL>

Reimplemented from USBDeviceConfig.

-

Definition at line 564 of file hidboot.h.

+

Definition at line 564 of file hidboot.h.

- + +

◆ Poll()

+
@@ -369,11 +354,13 @@ template<const uint8_t BOOT_PROTOCOL>

Reimplemented from USBDeviceConfig.

-

Definition at line 578 of file hidboot.h.

+

Definition at line 578 of file hidboot.h.

- + +

◆ GetAddress()

+
@@ -398,11 +385,13 @@ template<const uint8_t BOOT_PROTOCOL>

Reimplemented from USBDeviceConfig.

-

Definition at line 234 of file hidboot.h.

+

Definition at line 234 of file hidboot.h.

- + +

◆ isReady()

+
@@ -425,11 +414,13 @@ template<const uint8_t BOOT_PROTOCOL>
-

Definition at line 238 of file hidboot.h.

+

Definition at line 238 of file hidboot.h.

- + +

◆ EndpointXtract()

+
@@ -483,11 +474,13 @@ template<const uint8_t BOOT_PROTOCOL>

Reimplemented from UsbConfigXtracter.

-

Definition at line 539 of file hidboot.h.

+

Definition at line 539 of file hidboot.h.

- + +

◆ DEVCLASSOK()

+
@@ -513,11 +506,13 @@ template<const uint8_t BOOT_PROTOCOL>

Reimplemented from USBDeviceConfig.

-

Definition at line 246 of file hidboot.h.

+

Definition at line 246 of file hidboot.h.

- + +

◆ DEVSUBCLASSOK()

+
@@ -543,7 +538,7 @@ template<const uint8_t BOOT_PROTOCOL>

Reimplemented from USBDeviceConfig.

-

Definition at line 250 of file hidboot.h.

+

Definition at line 250 of file hidboot.h.

@@ -555,7 +550,7 @@ template<const uint8_t BOOT_PROTOCOL> diff --git a/class_h_i_d_boot__coll__graph.map b/class_h_i_d_boot__coll__graph.map index ba4eca0e..662fc791 100644 --- a/class_h_i_d_boot__coll__graph.map +++ b/class_h_i_d_boot__coll__graph.map @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/class_h_i_d_boot__coll__graph.md5 b/class_h_i_d_boot__coll__graph.md5 index de81f923..3625c217 100644 --- a/class_h_i_d_boot__coll__graph.md5 +++ b/class_h_i_d_boot__coll__graph.md5 @@ -1 +1 @@ -a19c6c2c9e133ec0ee972f6c6da3910c \ No newline at end of file +f259975bab1bae919945e1d52865d138 \ No newline at end of file diff --git a/class_h_i_d_boot__coll__graph.png b/class_h_i_d_boot__coll__graph.png index 85d7fd8e..bdb80574 100644 Binary files a/class_h_i_d_boot__coll__graph.png and b/class_h_i_d_boot__coll__graph.png differ diff --git a/class_h_i_d_boot__inherit__graph.map b/class_h_i_d_boot__inherit__graph.map index d6cfb2d8..0ab4700e 100644 --- a/class_h_i_d_boot__inherit__graph.map +++ b/class_h_i_d_boot__inherit__graph.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/class_h_i_d_boot__inherit__graph.md5 b/class_h_i_d_boot__inherit__graph.md5 index bb37f2b2..22fee73b 100644 --- a/class_h_i_d_boot__inherit__graph.md5 +++ b/class_h_i_d_boot__inherit__graph.md5 @@ -1 +1 @@ -0163fec2b92b9cadecd0eed3ad26c28f \ No newline at end of file +33a2d817f07a1965ceb3d476c83e4fdb \ No newline at end of file diff --git a/class_h_i_d_boot__inherit__graph.png b/class_h_i_d_boot__inherit__graph.png index 357fd5a2..a959492d 100644 Binary files a/class_h_i_d_boot__inherit__graph.png and b/class_h_i_d_boot__inherit__graph.png differ diff --git a/class_h_i_d_composite-members.html b/class_h_i_d_composite-members.html index e1e1749d..07edf329 100644 --- a/class_h_i_d_composite-members.html +++ b/class_h_i_d_composite-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@ - + - - + + + + - + - - + + + +
Inheritance graph
- - - + + +
[legend]
@@ -111,12 +86,12 @@ Collaboration diagram for HIDComposite:
Collaboration graph
- - - - - - + + + + + +
[legend]
@@ -223,9 +198,11 @@ Additional Inherited Members

Detailed Description

-

Definition at line 24 of file hidcomposite.h.

+

Definition at line 24 of file hidcomposite.h.

Constructor & Destructor Documentation

- + +

◆ HIDComposite()

+
@@ -239,12 +216,14 @@ Additional Inherited Members
-

Definition at line 20 of file hidcomposite.cpp.

+

Definition at line 20 of file hidcomposite.cpp.

Member Function Documentation

- + +

◆ GetReportParser()

+
@@ -268,11 +247,13 @@ Additional Inherited Members

Reimplemented from USBHID.

-

Definition at line 83 of file hidcomposite.cpp.

+

Definition at line 83 of file hidcomposite.cpp.

- + +

◆ OnInitSuccessful()

+
@@ -293,11 +274,13 @@ Additional Inherited Members
-

Definition at line 71 of file hidcomposite.h.

+

Definition at line 71 of file hidcomposite.h.

- + +

◆ ParseHIDData()

+
@@ -347,11 +330,13 @@ Additional Inherited Members
-

Definition at line 75 of file hidcomposite.h.

+

Definition at line 75 of file hidcomposite.h.

- + +

◆ SetReportParser()

+
@@ -385,11 +370,13 @@ Additional Inherited Members

Reimplemented from USBHID.

-

Definition at line 72 of file hidcomposite.cpp.

+

Definition at line 72 of file hidcomposite.cpp.

- + +

◆ Init()

+
@@ -429,11 +416,13 @@ Additional Inherited Members

Reimplemented from USBDeviceConfig.

-

Definition at line 94 of file hidcomposite.cpp.

+

Definition at line 94 of file hidcomposite.cpp.

- + +

◆ Release()

+
@@ -456,11 +445,13 @@ Additional Inherited Members

Reimplemented from USBDeviceConfig.

-

Definition at line 340 of file hidcomposite.cpp.

+

Definition at line 340 of file hidcomposite.cpp.

- + +

◆ Poll()

+
@@ -483,11 +474,13 @@ Additional Inherited Members

Reimplemented from USBDeviceConfig.

-

Definition at line 355 of file hidcomposite.cpp.

+

Definition at line 355 of file hidcomposite.cpp.

- + +

◆ GetAddress()

+
@@ -510,11 +503,13 @@ Additional Inherited Members

Reimplemented from USBDeviceConfig.

-

Definition at line 90 of file hidcomposite.h.

+

Definition at line 90 of file hidcomposite.h.

- + +

◆ isReady()

+
@@ -535,11 +530,13 @@ Additional Inherited Members
-

Definition at line 94 of file hidcomposite.h.

+

Definition at line 94 of file hidcomposite.h.

- + +

◆ EndpointXtract()

+
@@ -591,11 +588,13 @@ Additional Inherited Members

Reimplemented from UsbConfigXtracter.

-

Definition at line 297 of file hidcomposite.cpp.

+

Definition at line 297 of file hidcomposite.cpp.

- + +

◆ SndRpt()

+
@@ -619,11 +618,13 @@ Additional Inherited Members
-

Definition at line 413 of file hidcomposite.cpp.

+

Definition at line 413 of file hidcomposite.cpp.

- + +

◆ SelectInterface()

+
@@ -658,7 +659,9 @@ Additional Inherited Members

Member Data Documentation

- + +

◆ epInfo

+
@@ -676,11 +679,13 @@ Additional Inherited Members
-

Definition at line 61 of file hidcomposite.h.

+

Definition at line 61 of file hidcomposite.h.

- + +

◆ hidInterfaces

+
@@ -698,11 +703,13 @@ Additional Inherited Members
-

Definition at line 62 of file hidcomposite.h.

+

Definition at line 62 of file hidcomposite.h.

- + +

◆ bHasReportId

+
@@ -720,11 +727,13 @@ Additional Inherited Members
-

Definition at line 64 of file hidcomposite.h.

+

Definition at line 64 of file hidcomposite.h.

- + +

◆ PID

+
@@ -742,11 +751,13 @@ Additional Inherited Members
-

Definition at line 66 of file hidcomposite.h.

+

Definition at line 66 of file hidcomposite.h.

- + +

◆ VID

+
@@ -764,7 +775,7 @@ Additional Inherited Members
-

Definition at line 66 of file hidcomposite.h.

+

Definition at line 66 of file hidcomposite.h.

@@ -777,7 +788,7 @@ Additional Inherited Members diff --git a/class_h_i_d_composite__coll__graph.map b/class_h_i_d_composite__coll__graph.map index 7bad2110..d7ae0f68 100644 --- a/class_h_i_d_composite__coll__graph.map +++ b/class_h_i_d_composite__coll__graph.map @@ -1,8 +1,8 @@ - - - - - - + + + + + + diff --git a/class_h_i_d_composite__coll__graph.md5 b/class_h_i_d_composite__coll__graph.md5 index cb51ec95..8c822c0b 100644 --- a/class_h_i_d_composite__coll__graph.md5 +++ b/class_h_i_d_composite__coll__graph.md5 @@ -1 +1 @@ -cb1afeb4ef0790903388054fd3bdbf40 \ No newline at end of file +53a6c18af1475d71fd895b0881f48e79 \ No newline at end of file diff --git a/class_h_i_d_composite__coll__graph.png b/class_h_i_d_composite__coll__graph.png index f1ac41c2..76bf03c9 100644 Binary files a/class_h_i_d_composite__coll__graph.png and b/class_h_i_d_composite__coll__graph.png differ diff --git a/class_h_i_d_composite__inherit__graph.map b/class_h_i_d_composite__inherit__graph.map index 0b42aee7..408d5f41 100644 --- a/class_h_i_d_composite__inherit__graph.map +++ b/class_h_i_d_composite__inherit__graph.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/class_h_i_d_composite__inherit__graph.md5 b/class_h_i_d_composite__inherit__graph.md5 index 9ac7faab..8e8d4518 100644 --- a/class_h_i_d_composite__inherit__graph.md5 +++ b/class_h_i_d_composite__inherit__graph.md5 @@ -1 +1 @@ -7bba052169c3e9cd86fb29246bed4535 \ No newline at end of file +5365f14a032a8fd6dcc87df5954edbd5 \ No newline at end of file diff --git a/class_h_i_d_composite__inherit__graph.png b/class_h_i_d_composite__inherit__graph.png index dbd01da4..f596e486 100644 Binary files a/class_h_i_d_composite__inherit__graph.png and b/class_h_i_d_composite__inherit__graph.png differ diff --git a/class_h_i_d_report_parser-members.html b/class_h_i_d_report_parser-members.html index a8dfd0a0..f2201376 100644 --- a/class_h_i_d_report_parser-members.html +++ b/class_h_i_d_report_parser-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - - + + +
[legend]
@@ -111,9 +86,11 @@ Public Member Functions

Detailed Description

-

Definition at line 138 of file usbhid.h.

+

Definition at line 138 of file usbhid.h.

Member Function Documentation

- + +

◆ Parse()

+
@@ -169,7 +146,7 @@ Public Member Functions diff --git a/class_h_i_d_report_parser__inherit__graph.map b/class_h_i_d_report_parser__inherit__graph.map index 23a666ea..f021f386 100644 --- a/class_h_i_d_report_parser__inherit__graph.map +++ b/class_h_i_d_report_parser__inherit__graph.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/class_h_i_d_report_parser__inherit__graph.md5 b/class_h_i_d_report_parser__inherit__graph.md5 index 25b71fe2..593cf846 100644 --- a/class_h_i_d_report_parser__inherit__graph.md5 +++ b/class_h_i_d_report_parser__inherit__graph.md5 @@ -1 +1 @@ -8be112e5d3300b51cf0649c53a258712 \ No newline at end of file +7f123ea9da7dc06b494537ace718925b \ No newline at end of file diff --git a/class_h_i_d_report_parser__inherit__graph.png b/class_h_i_d_report_parser__inherit__graph.png index a9296e70..b1da206e 100644 Binary files a/class_h_i_d_report_parser__inherit__graph.png and b/class_h_i_d_report_parser__inherit__graph.png differ diff --git a/class_h_i_d_universal-members.html b/class_h_i_d_universal-members.html index 61c1b3c4..9f8fb2ba 100644 --- a/class_h_i_d_universal-members.html +++ b/class_h_i_d_universal-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - - - - + + + + +
[legend]
@@ -113,12 +88,12 @@ Collaboration diagram for HIDUniversal:
Collaboration graph
- - - - - - + + + + + +
[legend]
@@ -223,9 +198,11 @@ Additional Inherited Members

Detailed Description

-

Definition at line 24 of file hiduniversal.h.

+

Definition at line 24 of file hiduniversal.h.

Constructor & Destructor Documentation

- + +

◆ HIDUniversal()

+
@@ -239,12 +216,14 @@ Additional Inherited Members
-

Definition at line 20 of file hiduniversal.cpp.

+

Definition at line 20 of file hiduniversal.cpp.

Member Function Documentation

- + +

◆ GetReportParser()

+
@@ -268,11 +247,13 @@ Additional Inherited Members

Reimplemented from USBHID.

-

Definition at line 85 of file hiduniversal.cpp.

+

Definition at line 85 of file hiduniversal.cpp.

- + +

◆ OnInitSuccessful()

+
@@ -295,11 +276,13 @@ Additional Inherited Members

Reimplemented in PSBuzz, and PS4USB.

-

Definition at line 74 of file hiduniversal.h.

+

Definition at line 74 of file hiduniversal.h.

- + +

◆ ParseHIDData()

+
@@ -345,11 +328,13 @@ Additional Inherited Members

Reimplemented in PSBuzz, and PS4USB.

-

Definition at line 78 of file hiduniversal.h.

+

Definition at line 78 of file hiduniversal.h.

- + +

◆ SetReportParser()

+
@@ -383,11 +368,13 @@ Additional Inherited Members

Reimplemented from USBHID.

-

Definition at line 74 of file hiduniversal.cpp.

+

Definition at line 74 of file hiduniversal.cpp.

- + +

◆ Init()

+
@@ -427,11 +414,13 @@ Additional Inherited Members

Reimplemented from USBDeviceConfig.

-

Definition at line 96 of file hiduniversal.cpp.

+

Definition at line 96 of file hiduniversal.cpp.

- + +

◆ Release()

+
@@ -454,11 +443,13 @@ Additional Inherited Members

Reimplemented from USBDeviceConfig.

-

Definition at line 340 of file hiduniversal.cpp.

+

Definition at line 340 of file hiduniversal.cpp.

- + +

◆ Poll()

+
@@ -481,11 +472,13 @@ Additional Inherited Members

Reimplemented from USBDeviceConfig.

-

Definition at line 367 of file hiduniversal.cpp.

+

Definition at line 367 of file hiduniversal.cpp.

- + +

◆ GetAddress()

+
@@ -508,11 +501,13 @@ Additional Inherited Members

Reimplemented from USBDeviceConfig.

-

Definition at line 93 of file hiduniversal.h.

+

Definition at line 93 of file hiduniversal.h.

- + +

◆ isReady()

+
@@ -533,11 +528,13 @@ Additional Inherited Members
-

Definition at line 97 of file hiduniversal.h.

+

Definition at line 97 of file hiduniversal.h.

- + +

◆ EndpointXtract()

+
@@ -589,11 +586,13 @@ Additional Inherited Members

Reimplemented from UsbConfigXtracter.

-

Definition at line 295 of file hiduniversal.cpp.

+

Definition at line 295 of file hiduniversal.cpp.

- + +

◆ SndRpt()

+
@@ -617,12 +616,14 @@ Additional Inherited Members
-

Definition at line 423 of file hiduniversal.cpp.

+

Definition at line 423 of file hiduniversal.cpp.

Member Data Documentation

- + +

◆ epInfo

+
@@ -640,11 +641,13 @@ Additional Inherited Members
-

Definition at line 64 of file hiduniversal.h.

+

Definition at line 64 of file hiduniversal.h.

- + +

◆ hidInterfaces

+
@@ -662,11 +665,13 @@ Additional Inherited Members
-

Definition at line 65 of file hiduniversal.h.

+

Definition at line 65 of file hiduniversal.h.

- + +

◆ bHasReportId

+
@@ -684,11 +689,13 @@ Additional Inherited Members
-

Definition at line 67 of file hiduniversal.h.

+

Definition at line 67 of file hiduniversal.h.

- + +

◆ PID

+
@@ -706,11 +713,13 @@ Additional Inherited Members
-

Definition at line 69 of file hiduniversal.h.

+

Definition at line 69 of file hiduniversal.h.

- + +

◆ VID

+
@@ -728,7 +737,7 @@ Additional Inherited Members
-

Definition at line 69 of file hiduniversal.h.

+

Definition at line 69 of file hiduniversal.h.

@@ -741,7 +750,7 @@ Additional Inherited Members diff --git a/class_h_i_d_universal__coll__graph.map b/class_h_i_d_universal__coll__graph.map index 659c6197..46cd8306 100644 --- a/class_h_i_d_universal__coll__graph.map +++ b/class_h_i_d_universal__coll__graph.map @@ -1,8 +1,8 @@ - - - - - - + + + + + + diff --git a/class_h_i_d_universal__coll__graph.md5 b/class_h_i_d_universal__coll__graph.md5 index 5c56aa71..13f76bd9 100644 --- a/class_h_i_d_universal__coll__graph.md5 +++ b/class_h_i_d_universal__coll__graph.md5 @@ -1 +1 @@ -9798e993ef1d49a2c1f0b1530f49b8e4 \ No newline at end of file +358769c50e28d51b35035f35270dea75 \ No newline at end of file diff --git a/class_h_i_d_universal__coll__graph.png b/class_h_i_d_universal__coll__graph.png index 90af5ab0..437b9f95 100644 Binary files a/class_h_i_d_universal__coll__graph.png and b/class_h_i_d_universal__coll__graph.png differ diff --git a/class_h_i_d_universal__inherit__graph.map b/class_h_i_d_universal__inherit__graph.map index 2aa0c95e..514fe755 100644 --- a/class_h_i_d_universal__inherit__graph.map +++ b/class_h_i_d_universal__inherit__graph.map @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/class_h_i_d_universal__inherit__graph.md5 b/class_h_i_d_universal__inherit__graph.md5 index 2e820cab..3c09b3e6 100644 --- a/class_h_i_d_universal__inherit__graph.md5 +++ b/class_h_i_d_universal__inherit__graph.md5 @@ -1 +1 @@ -1ce1a5f9211e70eba63ba823d3663601 \ No newline at end of file +382694dd81f1384547b0acd28e432505 \ No newline at end of file diff --git a/class_h_i_d_universal__inherit__graph.png b/class_h_i_d_universal__inherit__graph.png index c1f7f48e..57a6d4b9 100644 Binary files a/class_h_i_d_universal__inherit__graph.png and b/class_h_i_d_universal__inherit__graph.png differ diff --git a/class_hex_dumper-members.html b/class_hex_dumper-members.html index 8d952b32..4be4190d 100644 --- a/class_hex_dumper-members.html +++ b/class_hex_dumper-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
class HexDumper< BASE_CLASS, LEN_TYPE, OFFSET_TYPE > -

Definition at line 33 of file hexdump.h.

+

Definition at line 33 of file hexdump.h.

Constructor & Destructor Documentation

- + +

◆ HexDumper()

+
@@ -147,12 +124,14 @@ template<class BASE_CLASS, class LEN_TYPE, class OFFSET_TYPE>
-

Definition at line 39 of file hexdump.h.

+

Definition at line 39 of file hexdump.h.

Member Function Documentation

- + +

◆ Initialize()

+
@@ -175,11 +154,13 @@ template<class BASE_CLASS, class LEN_TYPE, class OFFSET_TYPE>
-

Definition at line 42 of file hexdump.h.

+

Definition at line 42 of file hexdump.h.

- + +

◆ Parse()

+
@@ -211,7 +192,7 @@ template<class BASE_CLASS , class LEN_TYPE , class OFFSET_TYPE >
-

Definition at line 51 of file hexdump.h.

+

Definition at line 51 of file hexdump.h.

@@ -223,7 +204,7 @@ template<class BASE_CLASS , class LEN_TYPE , class OFFSET_TYPE >
diff --git a/class_hex_dumper__coll__graph.md5 b/class_hex_dumper__coll__graph.md5 index c9f3f213..5f2c81dd 100644 --- a/class_hex_dumper__coll__graph.md5 +++ b/class_hex_dumper__coll__graph.md5 @@ -1 +1 @@ -5be5e99ec5970ed3fe98ca3cc812cd40 \ No newline at end of file +d0d43b636db83e71ec57c3a665a482d9 \ No newline at end of file diff --git a/class_hex_dumper__coll__graph.png b/class_hex_dumper__coll__graph.png index f6ec58a4..151370f5 100644 Binary files a/class_hex_dumper__coll__graph.png and b/class_hex_dumper__coll__graph.png differ diff --git a/class_hex_dumper__inherit__graph.md5 b/class_hex_dumper__inherit__graph.md5 index c9f3f213..f9793cee 100644 --- a/class_hex_dumper__inherit__graph.md5 +++ b/class_hex_dumper__inherit__graph.md5 @@ -1 +1 @@ -5be5e99ec5970ed3fe98ca3cc812cd40 \ No newline at end of file +cc82cd63686d13b6e0e1784a3a9e8b6b \ No newline at end of file diff --git a/class_hex_dumper__inherit__graph.png b/class_hex_dumper__inherit__graph.png index f6ec58a4..151370f5 100644 Binary files a/class_hex_dumper__inherit__graph.png and b/class_hex_dumper__inherit__graph.png differ diff --git a/class_keyboard_report_parser-members.html b/class_keyboard_report_parser-members.html index 6fdc420b..a5e30fb6 100644 --- a/class_keyboard_report_parser-members.html +++ b/class_keyboard_report_parser-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- +
[legend]
@@ -108,9 +83,9 @@ Collaboration diagram for KeyboardReportParser:
Collaboration graph
- - - + + +
[legend]
@@ -161,9 +136,11 @@ Protected Attributes

Detailed Description

-

Definition at line 121 of file hidboot.h.

+

Definition at line 121 of file hidboot.h.

Constructor & Destructor Documentation

- + +

◆ KeyboardReportParser()

+
@@ -184,12 +161,14 @@ Protected Attributes
-

Definition at line 143 of file hidboot.h.

+

Definition at line 143 of file hidboot.h.

Member Function Documentation

- + +

◆ OemToAscii()

+
@@ -221,11 +200,13 @@ Protected Attributes
-

Definition at line 165 of file hidboot.cpp.

+

Definition at line 165 of file hidboot.cpp.

- + +

◆ Parse()

+
@@ -271,11 +252,13 @@ Protected Attributes

Implements HIDReportParser.

-

Definition at line 127 of file hidboot.cpp.

+

Definition at line 127 of file hidboot.cpp.

- + +

◆ HandleLockingKeys()

+
@@ -307,11 +290,13 @@ Protected Attributes
-

Definition at line 151 of file hidboot.h.

+

Definition at line 151 of file hidboot.h.

- + +

◆ OnControlKeysChanged()

+
@@ -343,11 +328,13 @@ Protected Attributes
-

Definition at line 174 of file hidboot.h.

+

Definition at line 174 of file hidboot.h.

- + +

◆ OnKeyDown()

+
@@ -379,11 +366,13 @@ Protected Attributes
-

Definition at line 177 of file hidboot.h.

+

Definition at line 177 of file hidboot.h.

- + +

◆ OnKeyUp()

+
@@ -415,11 +404,13 @@ Protected Attributes
-

Definition at line 180 of file hidboot.h.

+

Definition at line 180 of file hidboot.h.

- + +

◆ getNumKeys()

+
@@ -440,11 +431,13 @@ Protected Attributes
-

Definition at line 183 of file hidboot.h.

+

Definition at line 183 of file hidboot.h.

- + +

◆ getSymKeysUp()

+
@@ -465,11 +458,13 @@ Protected Attributes
-

Definition at line 187 of file hidboot.h.

+

Definition at line 187 of file hidboot.h.

- + +

◆ getSymKeysLo()

+
@@ -490,11 +485,13 @@ Protected Attributes
-

Definition at line 191 of file hidboot.h.

+

Definition at line 191 of file hidboot.h.

- + +

◆ getPadKeys()

+
@@ -515,12 +512,14 @@ Protected Attributes
-

Definition at line 195 of file hidboot.h.

+

Definition at line 195 of file hidboot.h.

Member Data Documentation

- + +

◆ kbdInfo

+
@@ -530,11 +529,13 @@ Protected Attributes
-

Definition at line 130 of file hidboot.h.

+

Definition at line 130 of file hidboot.h.

- + +

◆ bInfo

+
@@ -544,11 +545,13 @@ Protected Attributes
-

Definition at line 131 of file hidboot.h.

+

Definition at line 131 of file hidboot.h.

- + +

◆ prevState

+
@@ -560,7 +563,9 @@ Protected Attributes - + +

◆ kbdLeds

+
@@ -570,11 +575,13 @@ Protected Attributes
-

Definition at line 135 of file hidboot.h.

+

Definition at line 135 of file hidboot.h.

- + +

◆ bLeds

+
@@ -584,11 +591,13 @@ Protected Attributes
-

Definition at line 136 of file hidboot.h.

+

Definition at line 136 of file hidboot.h.

- + +

◆ kbdLockingKeys

+
@@ -609,7 +618,7 @@ Protected Attributes diff --git a/class_keyboard_report_parser__coll__graph.map b/class_keyboard_report_parser__coll__graph.map index 27581ba7..da2a437c 100644 --- a/class_keyboard_report_parser__coll__graph.map +++ b/class_keyboard_report_parser__coll__graph.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/class_keyboard_report_parser__coll__graph.md5 b/class_keyboard_report_parser__coll__graph.md5 index b3538af0..f53186dd 100644 --- a/class_keyboard_report_parser__coll__graph.md5 +++ b/class_keyboard_report_parser__coll__graph.md5 @@ -1 +1 @@ -bb7b1a74ec2625233c79c3d3448ef47a \ No newline at end of file +f2c6d00835acadc8658c82e0cf0d6156 \ No newline at end of file diff --git a/class_keyboard_report_parser__coll__graph.png b/class_keyboard_report_parser__coll__graph.png index 580a325f..72c342fa 100644 Binary files a/class_keyboard_report_parser__coll__graph.png and b/class_keyboard_report_parser__coll__graph.png differ diff --git a/class_keyboard_report_parser__inherit__graph.map b/class_keyboard_report_parser__inherit__graph.map index 0ab483c0..22634e27 100644 --- a/class_keyboard_report_parser__inherit__graph.map +++ b/class_keyboard_report_parser__inherit__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_keyboard_report_parser__inherit__graph.md5 b/class_keyboard_report_parser__inherit__graph.md5 index 5b9658e5..c76aa0ce 100644 --- a/class_keyboard_report_parser__inherit__graph.md5 +++ b/class_keyboard_report_parser__inherit__graph.md5 @@ -1 +1 @@ -c874e74f72d0db473ce869577e6f92d6 \ No newline at end of file +adfb83fe955c3333a5c32778e9b1fc68 \ No newline at end of file diff --git a/class_keyboard_report_parser__inherit__graph.png b/class_keyboard_report_parser__inherit__graph.png index cdf473ef..9238556e 100644 Binary files a/class_keyboard_report_parser__inherit__graph.png and b/class_keyboard_report_parser__inherit__graph.png differ diff --git a/class_m_a_x3421e-members.html b/class_m_a_x3421e-members.html index 001a8a17..97707289 100644 --- a/class_m_a_x3421e-members.html +++ b/class_m_a_x3421e-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- +
[legend]
@@ -146,9 +121,11 @@ Public Member Functions class MAX3421e< SPI_SS, INTR > -

Definition at line 132 of file usbhost.h.

+

Definition at line 132 of file usbhost.h.

Constructor & Destructor Documentation

- + +

◆ MAX3421e()

+
@@ -163,12 +140,14 @@ template<typename SPI_SS , typename INTR >
-

Definition at line 166 of file usbhost.h.

+

Definition at line 166 of file usbhost.h.

Member Function Documentation

- + +

◆ regWr()

+
@@ -194,11 +173,13 @@ template<typename SPI_SS , typename INTR >
-

Definition at line 177 of file usbhost.h.

+

Definition at line 177 of file usbhost.h.

- + +

◆ bytesWr()

+
@@ -230,11 +211,13 @@ template<typename SPI_SS , typename INTR >
-

Definition at line 220 of file usbhost.h.

+

Definition at line 220 of file usbhost.h.

- + +

◆ gpioWr()

+
@@ -250,11 +233,13 @@ template<typename SPI_SS , typename INTR >
-

Definition at line 269 of file usbhost.h.

+

Definition at line 269 of file usbhost.h.

- + +

◆ regRd()

+
@@ -270,11 +255,13 @@ template<typename SPI_SS , typename INTR >
-

Definition at line 278 of file usbhost.h.

+

Definition at line 278 of file usbhost.h.

- + +

◆ bytesRd()

+
@@ -306,11 +293,13 @@ template<typename SPI_SS , typename INTR >
-

Definition at line 317 of file usbhost.h.

+

Definition at line 317 of file usbhost.h.

- + +

◆ gpioRd()

+
@@ -333,11 +322,13 @@ template<typename SPI_SS , typename INTR >
-

Definition at line 384 of file usbhost.h.

+

Definition at line 384 of file usbhost.h.

- + +

◆ gpioRdOutput()

+
@@ -360,11 +351,13 @@ template<typename SPI_SS , typename INTR >
-

Definition at line 397 of file usbhost.h.

+

Definition at line 397 of file usbhost.h.

- + +

◆ reset()

+
@@ -379,11 +372,13 @@ template<typename SPI_SS , typename INTR >
-

Definition at line 408 of file usbhost.h.

+

Definition at line 408 of file usbhost.h.

- + +

◆ Init() [1/2]

+
@@ -398,11 +393,13 @@ template<typename SPI_SS , typename INTR >
-

Definition at line 422 of file usbhost.h.

+

Definition at line 422 of file usbhost.h.

- + +

◆ Init() [2/2]

+
@@ -418,11 +415,13 @@ template<typename SPI_SS , typename INTR >
-

Definition at line 459 of file usbhost.h.

+

Definition at line 459 of file usbhost.h.

- + +

◆ vbusPower()

+
@@ -446,11 +445,13 @@ template<typename SPI_SS , typename INTR >
-

Definition at line 148 of file usbhost.h.

+

Definition at line 148 of file usbhost.h.

- + +

◆ getVbusState()

+
@@ -474,11 +475,13 @@ template<typename SPI_SS , typename INTR >
-

Definition at line 152 of file usbhost.h.

+

Definition at line 152 of file usbhost.h.

- + +

◆ busprobe()

+
@@ -493,11 +496,13 @@ template<typename SPI_SS , typename INTR >
-

Definition at line 503 of file usbhost.h.

+

Definition at line 503 of file usbhost.h.

- + +

◆ GpxHandler()

+
@@ -514,7 +519,9 @@ template<typename SPI_SS , typename INTR >
- + +

◆ IntHandler()

+
@@ -529,11 +536,13 @@ template<typename SPI_SS , typename INTR >
-

Definition at line 557 of file usbhost.h.

+

Definition at line 557 of file usbhost.h.

- + +

◆ Task()

+
@@ -549,7 +558,7 @@ template<typename SPI_SS , typename INTR >
-

Definition at line 538 of file usbhost.h.

+

Definition at line 538 of file usbhost.h.

@@ -561,7 +570,7 @@ template<typename SPI_SS , typename INTR >
diff --git a/class_m_a_x3421e__inherit__graph.map b/class_m_a_x3421e__inherit__graph.map index ef6587aa..9138e809 100644 --- a/class_m_a_x3421e__inherit__graph.map +++ b/class_m_a_x3421e__inherit__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_m_a_x3421e__inherit__graph.md5 b/class_m_a_x3421e__inherit__graph.md5 index e9dc0389..c1c302a9 100644 --- a/class_m_a_x3421e__inherit__graph.md5 +++ b/class_m_a_x3421e__inherit__graph.md5 @@ -1 +1 @@ -6b7dcdcf5b00fbf00c69a08de5fc301c \ No newline at end of file +0fb6ebaa0a7caab1752808a63748c691 \ No newline at end of file diff --git a/class_m_a_x3421e__inherit__graph.png b/class_m_a_x3421e__inherit__graph.png index 9d8cb8d8..e59ba5e5 100644 Binary files a/class_m_a_x3421e__inherit__graph.png and b/class_m_a_x3421e__inherit__graph.png differ diff --git a/class_max___l_c_d-members.html b/class_max___l_c_d-members.html index c2da4d08..62ad6d41 100644 --- a/class_max___l_c_d-members.html +++ b/class_max___l_c_d-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@ - + - - + + + + - + - - + + + +

Detailed Description

-

Definition at line 65 of file max_LCD.h.

+

Definition at line 65 of file max_LCD.h.

Constructor & Destructor Documentation

- + +

◆ Max_LCD()

+
@@ -171,12 +148,14 @@ Public Member Functions
-

Definition at line 42 of file max_LCD.cpp.

+

Definition at line 42 of file max_LCD.cpp.

Member Function Documentation

- + +

◆ init()

+
@@ -189,11 +168,13 @@ Public Member Functions
-

Definition at line 46 of file max_LCD.cpp.

+

Definition at line 46 of file max_LCD.cpp.

- + +

◆ begin()

+
@@ -223,11 +204,13 @@ Public Member Functions
-

Definition at line 54 of file max_LCD.cpp.

+

Definition at line 54 of file max_LCD.cpp.

- + +

◆ clear()

+
@@ -240,11 +223,13 @@ Public Member Functions
-

Definition at line 114 of file max_LCD.cpp.

+

Definition at line 114 of file max_LCD.cpp.

- + +

◆ home()

+
@@ -257,11 +242,13 @@ Public Member Functions
-

Definition at line 119 of file max_LCD.cpp.

+

Definition at line 119 of file max_LCD.cpp.

- + +

◆ noDisplay()

+
@@ -274,11 +261,13 @@ Public Member Functions
-

Definition at line 135 of file max_LCD.cpp.

+

Definition at line 135 of file max_LCD.cpp.

- + +

◆ display()

+
@@ -291,11 +280,13 @@ Public Member Functions
-

Definition at line 140 of file max_LCD.cpp.

+

Definition at line 140 of file max_LCD.cpp.

- + +

◆ noBlink()

+
@@ -308,11 +299,13 @@ Public Member Functions
-

Definition at line 160 of file max_LCD.cpp.

+

Definition at line 160 of file max_LCD.cpp.

- + +

◆ blink()

+
@@ -325,11 +318,13 @@ Public Member Functions
-

Definition at line 165 of file max_LCD.cpp.

+

Definition at line 165 of file max_LCD.cpp.

- + +

◆ noCursor()

+
@@ -342,11 +337,13 @@ Public Member Functions
-

Definition at line 147 of file max_LCD.cpp.

+

Definition at line 147 of file max_LCD.cpp.

- + +

◆ cursor()

+
@@ -359,11 +356,13 @@ Public Member Functions
-

Definition at line 152 of file max_LCD.cpp.

+

Definition at line 152 of file max_LCD.cpp.

- + +

◆ scrollDisplayLeft()

+
@@ -377,11 +376,13 @@ Public Member Functions
-

Definition at line 172 of file max_LCD.cpp.

+

Definition at line 172 of file max_LCD.cpp.

- + +

◆ scrollDisplayRight()

+
@@ -395,11 +396,13 @@ Public Member Functions
-

Definition at line 176 of file max_LCD.cpp.

+

Definition at line 176 of file max_LCD.cpp.

- + +

◆ leftToRight()

+
@@ -413,11 +416,13 @@ Public Member Functions
-

Definition at line 182 of file max_LCD.cpp.

+

Definition at line 182 of file max_LCD.cpp.

- + +

◆ rightToLeft()

+
@@ -431,11 +436,13 @@ Public Member Functions
-

Definition at line 189 of file max_LCD.cpp.

+

Definition at line 189 of file max_LCD.cpp.

- + +

◆ autoscroll()

+
@@ -449,11 +456,13 @@ Public Member Functions
-

Definition at line 196 of file max_LCD.cpp.

+

Definition at line 196 of file max_LCD.cpp.

- + +

◆ noAutoscroll()

+
@@ -467,11 +476,13 @@ Public Member Functions
-

Definition at line 203 of file max_LCD.cpp.

+

Definition at line 203 of file max_LCD.cpp.

- + +

◆ createChar()

+
@@ -495,11 +506,13 @@ Public Member Functions
-

Definition at line 211 of file max_LCD.cpp.

+

Definition at line 211 of file max_LCD.cpp.

- + +

◆ setCursor()

+
@@ -523,11 +536,13 @@ Public Member Functions
-

Definition at line 124 of file max_LCD.cpp.

+

Definition at line 124 of file max_LCD.cpp.

- + +

◆ command()

+
@@ -549,11 +564,13 @@ Public Member Functions
-

Definition at line 221 of file max_LCD.cpp.

+

Definition at line 221 of file max_LCD.cpp.

- + +

◆ write()

+
@@ -575,7 +592,7 @@ Public Member Functions
-

Definition at line 228 of file max_LCD.cpp.

+

Definition at line 228 of file max_LCD.cpp.

@@ -588,7 +605,7 @@ Public Member Functions diff --git a/class_max___l_c_d__coll__graph.md5 b/class_max___l_c_d__coll__graph.md5 index 8d049f39..3f3bddcb 100644 --- a/class_max___l_c_d__coll__graph.md5 +++ b/class_max___l_c_d__coll__graph.md5 @@ -1 +1 @@ -14cf14911886c71d7e91596c82a5010c \ No newline at end of file +e2f8a913599c12410a410520826dbb8e \ No newline at end of file diff --git a/class_max___l_c_d__coll__graph.png b/class_max___l_c_d__coll__graph.png index 400d5204..c56a67b3 100644 Binary files a/class_max___l_c_d__coll__graph.png and b/class_max___l_c_d__coll__graph.png differ diff --git a/class_max___l_c_d__inherit__graph.md5 b/class_max___l_c_d__inherit__graph.md5 index 8d049f39..f53444bf 100644 --- a/class_max___l_c_d__inherit__graph.md5 +++ b/class_max___l_c_d__inherit__graph.md5 @@ -1 +1 @@ -14cf14911886c71d7e91596c82a5010c \ No newline at end of file +74eb966daa02727e2eb676099a813686 \ No newline at end of file diff --git a/class_max___l_c_d__inherit__graph.png b/class_max___l_c_d__inherit__graph.png index 400d5204..c56a67b3 100644 Binary files a/class_max___l_c_d__inherit__graph.png and b/class_max___l_c_d__inherit__graph.png differ diff --git a/class_mouse_report_parser-members.html b/class_mouse_report_parser-members.html index 56bbe033..67e9faa6 100644 --- a/class_mouse_report_parser-members.html +++ b/class_mouse_report_parser-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- +
[legend]
@@ -107,8 +82,8 @@ Collaboration diagram for MouseReportParser:
Collaboration graph
- - + +
[legend]
@@ -136,9 +111,11 @@ Protected Member Functions

Detailed Description

-

Definition at line 51 of file hidboot.h.

+

Definition at line 51 of file hidboot.h.

Member Function Documentation

- + +

◆ Parse()

+
@@ -184,11 +161,13 @@ Protected Member Functions

Implements HIDReportParser.

-

Definition at line 19 of file hidboot.cpp.

+

Definition at line 19 of file hidboot.cpp.

- + +

◆ OnMouseMove()

+
@@ -210,11 +189,13 @@ Protected Member Functions
-

Definition at line 63 of file hidboot.h.

+

Definition at line 63 of file hidboot.h.

- + +

◆ OnLeftButtonUp()

+
@@ -236,11 +217,13 @@ Protected Member Functions
-

Definition at line 66 of file hidboot.h.

+

Definition at line 66 of file hidboot.h.

- + +

◆ OnLeftButtonDown()

+
@@ -262,11 +245,13 @@ Protected Member Functions
-

Definition at line 69 of file hidboot.h.

+

Definition at line 69 of file hidboot.h.

- + +

◆ OnRightButtonUp()

+
@@ -288,11 +273,13 @@ Protected Member Functions
-

Definition at line 72 of file hidboot.h.

+

Definition at line 72 of file hidboot.h.

- + +

◆ OnRightButtonDown()

+
@@ -314,11 +301,13 @@ Protected Member Functions
-

Definition at line 75 of file hidboot.h.

+

Definition at line 75 of file hidboot.h.

- + +

◆ OnMiddleButtonUp()

+
@@ -340,11 +329,13 @@ Protected Member Functions
-

Definition at line 78 of file hidboot.h.

+

Definition at line 78 of file hidboot.h.

- + +

◆ OnMiddleButtonDown()

+
@@ -366,12 +357,14 @@ Protected Member Functions
-

Definition at line 81 of file hidboot.h.

+

Definition at line 81 of file hidboot.h.

Member Data Documentation

- + +

◆ mouseInfo

+
@@ -381,11 +374,13 @@ Protected Member Functions
-

Definition at line 54 of file hidboot.h.

+

Definition at line 54 of file hidboot.h.

- + +

◆ bInfo

+
@@ -395,7 +390,7 @@ Protected Member Functions
-

Definition at line 55 of file hidboot.h.

+

Definition at line 55 of file hidboot.h.

@@ -408,7 +403,7 @@ Protected Member Functions diff --git a/class_mouse_report_parser__coll__graph.map b/class_mouse_report_parser__coll__graph.map index fd308ae3..2d2572e1 100644 --- a/class_mouse_report_parser__coll__graph.map +++ b/class_mouse_report_parser__coll__graph.map @@ -1,4 +1,4 @@ - - + + diff --git a/class_mouse_report_parser__coll__graph.md5 b/class_mouse_report_parser__coll__graph.md5 index 0d410a43..d0d55908 100644 --- a/class_mouse_report_parser__coll__graph.md5 +++ b/class_mouse_report_parser__coll__graph.md5 @@ -1 +1 @@ -405a7d8e938e10b74a7c678fcf2f2523 \ No newline at end of file +f9c222dcf7223f947690ce165b721cd3 \ No newline at end of file diff --git a/class_mouse_report_parser__coll__graph.png b/class_mouse_report_parser__coll__graph.png index 82ca8ea2..2a16114c 100644 Binary files a/class_mouse_report_parser__coll__graph.png and b/class_mouse_report_parser__coll__graph.png differ diff --git a/class_mouse_report_parser__inherit__graph.map b/class_mouse_report_parser__inherit__graph.map index 10699d49..2abdf8bc 100644 --- a/class_mouse_report_parser__inherit__graph.map +++ b/class_mouse_report_parser__inherit__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_mouse_report_parser__inherit__graph.md5 b/class_mouse_report_parser__inherit__graph.md5 index 6dbeddc2..74c8e5f2 100644 --- a/class_mouse_report_parser__inherit__graph.md5 +++ b/class_mouse_report_parser__inherit__graph.md5 @@ -1 +1 @@ -06cbf9c7fbacf4aaec1bcdfdc9d69628 \ No newline at end of file +a2dc8148933377ae624709e45bd68601 \ No newline at end of file diff --git a/class_mouse_report_parser__inherit__graph.png b/class_mouse_report_parser__inherit__graph.png index 7881c6df..8f7e18cd 100644 Binary files a/class_mouse_report_parser__inherit__graph.png and b/class_mouse_report_parser__inherit__graph.png differ diff --git a/class_multi_byte_value_parser-members.html b/class_multi_byte_value_parser-members.html index 915006af..6f721697 100644 --- a/class_multi_byte_value_parser-members.html +++ b/class_multi_byte_value_parser-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +

Detailed Description

-

Definition at line 40 of file parsetools.h.

+

Definition at line 40 of file parsetools.h.

Constructor & Destructor Documentation

- + +

◆ MultiByteValueParser()

+
@@ -130,12 +107,14 @@ Public Member Functions
-

Definition at line 47 of file parsetools.h.

+

Definition at line 47 of file parsetools.h.

Member Function Documentation

- + +

◆ GetBuffer()

+
@@ -156,11 +135,13 @@ Public Member Functions
-

Definition at line 50 of file parsetools.h.

+

Definition at line 50 of file parsetools.h.

- + +

◆ Initialize()

+
@@ -182,11 +163,13 @@ Public Member Functions
-

Definition at line 54 of file parsetools.h.

+

Definition at line 54 of file parsetools.h.

- + +

◆ Parse()

+
@@ -210,7 +193,7 @@ Public Member Functions
-

Definition at line 26 of file parsetools.cpp.

+

Definition at line 26 of file parsetools.cpp.

@@ -223,7 +206,7 @@ Public Member Functions diff --git a/class_p_l2303-members.html b/class_p_l2303-members.html index 7086003f..d5e7311d 100644 --- a/class_p_l2303-members.html +++ b/class_p_l2303-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - - + + +
[legend]
@@ -108,14 +83,14 @@ Collaboration diagram for PL2303:
Collaboration graph
- - - - - - - - + + + + + + + +
[legend]
@@ -227,9 +202,11 @@ Additional Inherited Members

Detailed Description

-

Definition at line 122 of file cdcprolific.h.

+

Definition at line 122 of file cdcprolific.h.

Constructor & Destructor Documentation

- + +

◆ PL2303()

+
@@ -253,12 +230,14 @@ Additional Inherited Members
-

Definition at line 19 of file cdcprolific.cpp.

+

Definition at line 19 of file cdcprolific.cpp.

Member Function Documentation

- + +

◆ Init()

+
@@ -298,7 +277,7 @@ Additional Inherited Members

Reimplemented from ACM.

-

Definition at line 24 of file cdcprolific.cpp.

+

Definition at line 24 of file cdcprolific.cpp.

@@ -311,7 +290,7 @@ Additional Inherited Members diff --git a/class_p_l2303__coll__graph.map b/class_p_l2303__coll__graph.map index 37a260cf..79d4c454 100644 --- a/class_p_l2303__coll__graph.map +++ b/class_p_l2303__coll__graph.map @@ -1,10 +1,10 @@ - - - - - - - - + + + + + + + + diff --git a/class_p_l2303__coll__graph.md5 b/class_p_l2303__coll__graph.md5 index 3fccb2c3..747c3494 100644 --- a/class_p_l2303__coll__graph.md5 +++ b/class_p_l2303__coll__graph.md5 @@ -1 +1 @@ -da3590f8b39ab5267484ef72f2899a2c \ No newline at end of file +a109a304a1e8b7c2885b5ed40e050f2d \ No newline at end of file diff --git a/class_p_l2303__coll__graph.png b/class_p_l2303__coll__graph.png index 07644dcb..bf47b598 100644 Binary files a/class_p_l2303__coll__graph.png and b/class_p_l2303__coll__graph.png differ diff --git a/class_p_l2303__inherit__graph.map b/class_p_l2303__inherit__graph.map index 82470977..122bacee 100644 --- a/class_p_l2303__inherit__graph.map +++ b/class_p_l2303__inherit__graph.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/class_p_l2303__inherit__graph.md5 b/class_p_l2303__inherit__graph.md5 index 8fff62d8..71c336d7 100644 --- a/class_p_l2303__inherit__graph.md5 +++ b/class_p_l2303__inherit__graph.md5 @@ -1 +1 @@ -dd455d55317b48c08e2327d045dafb04 \ No newline at end of file +2921424f538e5b4baf7916aede8cb89f \ No newline at end of file diff --git a/class_p_l2303__inherit__graph.png b/class_p_l2303__inherit__graph.png index 455cd550..498fffbb 100644 Binary files a/class_p_l2303__inherit__graph.png and b/class_p_l2303__inherit__graph.png differ diff --git a/class_p_s3_b_t-members.html b/class_p_s3_b_t-members.html index dfaa9f75..da25de2d 100644 --- a/class_p_s3_b_t-members.html +++ b/class_p_s3_b_t-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- +
[legend]
@@ -107,13 +82,13 @@ Collaboration diagram for PS3BT:
Collaboration graph
- - - - - - - + + + + + + +
[legend]
@@ -217,9 +192,11 @@ Additional Inherited Members

This BluetoothService class implements support for all the official PS3 Controllers: Dualshock 3, Navigation or a Motion controller via Bluetooth.

Information about the protocol can be found at the wiki: https://github.com/felis/USB_Host_Shield_2.0/wiki/PS3-Information.

-

Definition at line 32 of file PS3BT.h.

+

Definition at line 32 of file PS3BT.h.

Constructor & Destructor Documentation

- + +

◆ PS3BT()

+
@@ -280,12 +257,14 @@ Additional Inherited Members -

Definition at line 23 of file PS3BT.cpp.

+

Definition at line 23 of file PS3BT.cpp.

Member Function Documentation

- + +

◆ disconnect()

+
@@ -309,11 +288,13 @@ Additional Inherited Members

Implements BluetoothService.

-

Definition at line 217 of file PS3BT.cpp.

+

Definition at line 217 of file PS3BT.cpp.

- + +

◆ getButtonPress()

+
@@ -336,11 +317,13 @@ Additional Inherited Members
Returns
getButtonPress(ButtonEnum b) will return a true as long as a button is held down, while getButtonClick(ButtonEnum b) will return true once for each button press.
-

Definition at line 49 of file PS3BT.cpp.

+

Definition at line 49 of file PS3BT.cpp.

- + +

◆ getButtonClick()

+
@@ -363,11 +346,13 @@ Additional Inherited Members
Returns
getButtonPress(ButtonEnum b) will return a true as long as a button is held down, while getButtonClick(ButtonEnum b) will return true once for each button press.
-

Definition at line 53 of file PS3BT.cpp.

+

Definition at line 53 of file PS3BT.cpp.

- + +

◆ getAnalogButton()

+
@@ -388,11 +373,13 @@ Additional Inherited Members
Returns
Analog value in the range of 0-255.
-

Definition at line 60 of file PS3BT.cpp.

+

Definition at line 60 of file PS3BT.cpp.

- + +

◆ getAnalogHat()

+
@@ -413,11 +400,13 @@ Additional Inherited Members
Returns
Return the analog value in the range of 0-255.
-

Definition at line 64 of file PS3BT.cpp.

+

Definition at line 64 of file PS3BT.cpp.

- + +

◆ getSensor()

+
@@ -438,11 +427,13 @@ Additional Inherited Members
Returns
Return the raw sensor value.
-

Definition at line 68 of file PS3BT.cpp.

+

Definition at line 68 of file PS3BT.cpp.

- + +

◆ getAngle()

+
@@ -463,11 +454,13 @@ Additional Inherited Members
Returns
Return the angle in the range of 0-360.
-

Definition at line 85 of file PS3BT.cpp.

+

Definition at line 85 of file PS3BT.cpp.

- + +

◆ get9DOFValues()

+
@@ -488,11 +481,13 @@ Additional Inherited Members
Returns
The value in SI units.
-

Definition at line 112 of file PS3BT.cpp.

+

Definition at line 112 of file PS3BT.cpp.

- + +

◆ getStatus()

+
@@ -513,11 +508,13 @@ Additional Inherited Members
Returns
True if correct and false if not.
-

Definition at line 156 of file PS3BT.cpp.

+

Definition at line 156 of file PS3BT.cpp.

- + +

◆ printStatusString()

+
@@ -531,11 +528,13 @@ Additional Inherited Members

Read all the available statuses from the controller and prints it as a nice formated string.

-

Definition at line 160 of file PS3BT.cpp.

+

Definition at line 160 of file PS3BT.cpp.

- + +

◆ getTemperature()

+
@@ -549,11 +548,13 @@ Additional Inherited Members

Read the temperature from the Move controller.

Returns
The temperature in degrees Celsius.
-

Definition at line 141 of file PS3BT.cpp.

+

Definition at line 141 of file PS3BT.cpp.

- + +

◆ setAllOff()

+
@@ -567,11 +568,13 @@ Additional Inherited Members

Used to set all LEDs and rumble off.

-

Definition at line 519 of file PS3BT.cpp.

+

Definition at line 519 of file PS3BT.cpp.

- + +

◆ setRumbleOff()

+
@@ -585,11 +588,13 @@ Additional Inherited Members

Turn off rumble.

-

Definition at line 530 of file PS3BT.cpp.

+

Definition at line 530 of file PS3BT.cpp.

- + +

◆ setRumbleOn() [1/2]

+
@@ -609,11 +614,13 @@ Additional Inherited Members -

Definition at line 540 of file PS3BT.cpp.

+

Definition at line 540 of file PS3BT.cpp.

- + +

◆ setRumbleOn() [2/2]

+
@@ -658,11 +665,13 @@ Additional Inherited Members -

Definition at line 549 of file PS3BT.cpp.

+

Definition at line 549 of file PS3BT.cpp.

- + +

◆ setLedRaw()

+
@@ -682,11 +691,13 @@ Additional Inherited Members -

Definition at line 559 of file PS3BT.cpp.

+

Definition at line 559 of file PS3BT.cpp.

- + +

◆ setLedOff() [1/2]

+
@@ -708,11 +719,13 @@ Additional Inherited Members

Turn all LEDs off.

-

Definition at line 138 of file PS3BT.h.

+

Definition at line 138 of file PS3BT.h.

- + +

◆ setLedOff() [2/2]

+
@@ -732,11 +745,13 @@ Additional Inherited Members -

Definition at line 564 of file PS3BT.cpp.

+

Definition at line 564 of file PS3BT.cpp.

- + +

◆ setLedOn()

+
@@ -756,11 +771,13 @@ Additional Inherited Members -

Definition at line 569 of file PS3BT.cpp.

+

Definition at line 569 of file PS3BT.cpp.

- + +

◆ setLedToggle()

+
@@ -780,11 +797,13 @@ Additional Inherited Members -

Definition at line 578 of file PS3BT.cpp.

+

Definition at line 578 of file PS3BT.cpp.

- + +

◆ moveSetBulb() [1/2]

+
@@ -820,11 +839,13 @@ Additional Inherited Members -

Definition at line 604 of file PS3BT.cpp.

+

Definition at line 604 of file PS3BT.cpp.

- + +

◆ moveSetBulb() [2/2]

+
@@ -844,11 +865,13 @@ Additional Inherited Members -

Definition at line 613 of file PS3BT.cpp.

+

Definition at line 613 of file PS3BT.cpp.

- + +

◆ moveSetRumble()

+
@@ -868,11 +891,13 @@ Additional Inherited Members -

Definition at line 617 of file PS3BT.cpp.

+

Definition at line 617 of file PS3BT.cpp.

- + +

◆ getLastMessageTime()

+
@@ -894,11 +919,13 @@ Additional Inherited Members

Used to get the millis() of the last message

-

Definition at line 174 of file PS3BT.h.

+

Definition at line 174 of file PS3BT.h.

- + +

◆ ACLData()

+
@@ -928,11 +955,13 @@ Additional Inherited Members

Implements BluetoothService.

-

Definition at line 224 of file PS3BT.cpp.

+

Definition at line 224 of file PS3BT.cpp.

- + +

◆ Run()

+
@@ -956,11 +985,13 @@ Additional Inherited Members

Implements BluetoothService.

-

Definition at line 454 of file PS3BT.cpp.

+

Definition at line 454 of file PS3BT.cpp.

- + +

◆ Reset()

+
@@ -984,11 +1015,13 @@ Additional Inherited Members

Implements BluetoothService.

-

Definition at line 204 of file PS3BT.cpp.

+

Definition at line 204 of file PS3BT.cpp.

- + +

◆ onInit()

+
@@ -1012,12 +1045,14 @@ Additional Inherited Members

Implements BluetoothService.

-

Definition at line 628 of file PS3BT.cpp.

+

Definition at line 628 of file PS3BT.cpp.

Member Data Documentation

- + +

◆ PS3Connected

+
@@ -1028,11 +1063,13 @@ Additional Inherited Members

Variable used to indicate if the normal Playstation controller is successfully connected.

-

Definition at line 176 of file PS3BT.h.

+

Definition at line 176 of file PS3BT.h.

- + +

◆ PS3MoveConnected

+
@@ -1043,11 +1080,13 @@ Additional Inherited Members

Variable used to indicate if the Move controller is successfully connected.

-

Definition at line 182 of file PS3BT.h.

+

Definition at line 182 of file PS3BT.h.

- + +

◆ PS3NavigationConnected

+
@@ -1058,7 +1097,7 @@ Additional Inherited Members

Variable used to indicate if the Navigation controller is successfully connected.

-

Definition at line 184 of file PS3BT.h.

+

Definition at line 184 of file PS3BT.h.

@@ -1071,7 +1110,7 @@ Additional Inherited Members diff --git a/class_p_s3_b_t__coll__graph.map b/class_p_s3_b_t__coll__graph.map index 25410a78..99dc7b4d 100644 --- a/class_p_s3_b_t__coll__graph.map +++ b/class_p_s3_b_t__coll__graph.map @@ -1,9 +1,9 @@ - - - - - - - + + + + + + + diff --git a/class_p_s3_b_t__coll__graph.md5 b/class_p_s3_b_t__coll__graph.md5 index 9944a07a..8d1c35cc 100644 --- a/class_p_s3_b_t__coll__graph.md5 +++ b/class_p_s3_b_t__coll__graph.md5 @@ -1 +1 @@ -7cded78e6e9cacc4756734b2d8e3a17f \ No newline at end of file +2afa3c1ee396396537c80a9e82e8ab8c \ No newline at end of file diff --git a/class_p_s3_b_t__coll__graph.png b/class_p_s3_b_t__coll__graph.png index 22ebb4ff..9d88e09c 100644 Binary files a/class_p_s3_b_t__coll__graph.png and b/class_p_s3_b_t__coll__graph.png differ diff --git a/class_p_s3_b_t__inherit__graph.map b/class_p_s3_b_t__inherit__graph.map index 94a99870..fa6aecee 100644 --- a/class_p_s3_b_t__inherit__graph.map +++ b/class_p_s3_b_t__inherit__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_p_s3_b_t__inherit__graph.md5 b/class_p_s3_b_t__inherit__graph.md5 index c4a47a9b..485bbf3f 100644 --- a/class_p_s3_b_t__inherit__graph.md5 +++ b/class_p_s3_b_t__inherit__graph.md5 @@ -1 +1 @@ -af123ea0ba1b2bc2c3a6775f7cb65fa0 \ No newline at end of file +3d26891ef8cb1c025100fb5c239bf7cb \ No newline at end of file diff --git a/class_p_s3_b_t__inherit__graph.png b/class_p_s3_b_t__inherit__graph.png index e425f895..bba8bdb0 100644 Binary files a/class_p_s3_b_t__inherit__graph.png and b/class_p_s3_b_t__inherit__graph.png differ diff --git a/class_p_s3_u_s_b-members.html b/class_p_s3_u_s_b-members.html index 61040b73..2cf2214b 100644 --- a/class_p_s3_u_s_b-members.html +++ b/class_p_s3_u_s_b-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- +
[legend]
@@ -108,10 +83,10 @@ Collaboration diagram for PS3USB:
Collaboration graph
- - - - + + + +
[legend]
@@ -218,9 +193,11 @@ Protected Attributes

One can only set the color of the bulb, set the rumble, set and get the bluetooth address and calibrate the magnetometer via USB on the Move controller.

Information about the protocol can be found at the wiki: https://github.com/felis/USB_Host_Shield_2.0/wiki/PS3-Information.

-

Definition at line 49 of file PS3USB.h.

+

Definition at line 49 of file PS3USB.h.

Constructor & Destructor Documentation

- + +

◆ PS3USB()

+
@@ -281,12 +258,14 @@ Protected Attributes -

Definition at line 23 of file PS3USB.cpp.

+

Definition at line 23 of file PS3USB.cpp.

Member Function Documentation

- + +

◆ Init()

+
@@ -335,11 +314,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 47 of file PS3USB.cpp.

+

Definition at line 47 of file PS3USB.cpp.

- + +

◆ Release()

+
@@ -363,11 +344,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 262 of file PS3USB.cpp.

+

Definition at line 262 of file PS3USB.cpp.

- + +

◆ Poll()

+
@@ -391,11 +374,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 272 of file PS3USB.cpp.

+

Definition at line 272 of file PS3USB.cpp.

- + +

◆ GetAddress()

+
@@ -419,11 +404,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 84 of file PS3USB.h.

+

Definition at line 84 of file PS3USB.h.

- + +

◆ isReady()

+
@@ -445,11 +432,13 @@ Protected Attributes

Used to check if the controller has been initialized.

Returns
True if it's ready.
-

Definition at line 92 of file PS3USB.h.

+

Definition at line 92 of file PS3USB.h.

- + +

◆ VIDPIDOK()

+
@@ -491,11 +480,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 102 of file PS3USB.h.

+

Definition at line 102 of file PS3USB.h.

- + +

◆ setBdaddr()

+
@@ -515,11 +506,13 @@ Protected Attributes -

Definition at line 465 of file PS3USB.cpp.

+

Definition at line 465 of file PS3USB.cpp.

- + +

◆ getBdaddr()

+
@@ -539,11 +532,13 @@ Protected Attributes -

Definition at line 478 of file PS3USB.cpp.

+

Definition at line 478 of file PS3USB.cpp.

- + +

◆ setMoveBdaddr()

+
@@ -563,11 +558,13 @@ Protected Attributes -

Definition at line 527 of file PS3USB.cpp.

+

Definition at line 527 of file PS3USB.cpp.

- + +

◆ getMoveBdaddr()

+
@@ -587,11 +584,13 @@ Protected Attributes -

Definition at line 543 of file PS3USB.cpp.

+

Definition at line 543 of file PS3USB.cpp.

- + +

◆ getMoveCalibration()

+
@@ -611,11 +610,13 @@ Protected Attributes -

Definition at line 553 of file PS3USB.cpp.

+

Definition at line 553 of file PS3USB.cpp.

- + +

◆ getButtonPress()

+
@@ -638,11 +639,13 @@ Protected Attributes
Returns
getButtonPress(ButtonEnum b) will return a true as long as a button is held down, while getButtonClick(ButtonEnum b) will return true once for each button press.
-

Definition at line 316 of file PS3USB.cpp.

+

Definition at line 316 of file PS3USB.cpp.

- + +

◆ getButtonClick()

+
@@ -665,11 +668,13 @@ Protected Attributes
Returns
getButtonPress(ButtonEnum b) will return a true as long as a button is held down, while getButtonClick(ButtonEnum b) will return true once for each button press.
-

Definition at line 320 of file PS3USB.cpp.

+

Definition at line 320 of file PS3USB.cpp.

- + +

◆ getAnalogButton()

+
@@ -690,11 +695,13 @@ Protected Attributes
Returns
Analog value in the range of 0-255.
-

Definition at line 327 of file PS3USB.cpp.

+

Definition at line 327 of file PS3USB.cpp.

- + +

◆ getAnalogHat()

+
@@ -715,11 +722,13 @@ Protected Attributes
Returns
Return the analog value in the range of 0-255.
-

Definition at line 331 of file PS3USB.cpp.

+

Definition at line 331 of file PS3USB.cpp.

- + +

◆ getSensor()

+
@@ -740,11 +749,13 @@ Protected Attributes
Returns
Return the raw sensor value.
-

Definition at line 335 of file PS3USB.cpp.

+

Definition at line 335 of file PS3USB.cpp.

- + +

◆ getAngle()

+
@@ -765,11 +776,13 @@ Protected Attributes
Returns
Return the angle in the range of 0-360.
-

Definition at line 339 of file PS3USB.cpp.

+

Definition at line 339 of file PS3USB.cpp.

- + +

◆ getStatus()

+
@@ -790,11 +803,13 @@ Protected Attributes
Returns
True if correct and false if not.
-

Definition at line 360 of file PS3USB.cpp.

+

Definition at line 360 of file PS3USB.cpp.

- + +

◆ printStatusString()

+
@@ -808,11 +823,13 @@ Protected Attributes

Read all the available statuses from the controller and prints it as a nice formated string.

-

Definition at line 364 of file PS3USB.cpp.

+

Definition at line 364 of file PS3USB.cpp.

- + +

◆ setAllOff()

+
@@ -826,11 +843,13 @@ Protected Attributes

Used to set all LEDs and rumble off.

-

Definition at line 403 of file PS3USB.cpp.

+

Definition at line 403 of file PS3USB.cpp.

- + +

◆ setRumbleOff()

+
@@ -844,11 +863,13 @@ Protected Attributes

Turn off rumble.

-

Definition at line 410 of file PS3USB.cpp.

+

Definition at line 410 of file PS3USB.cpp.

- + +

◆ setRumbleOn() [1/2]

+
@@ -868,11 +889,13 @@ Protected Attributes -

Definition at line 420 of file PS3USB.cpp.

+

Definition at line 420 of file PS3USB.cpp.

- + +

◆ setRumbleOn() [2/2]

+
@@ -917,11 +940,13 @@ Protected Attributes -

Definition at line 431 of file PS3USB.cpp.

+

Definition at line 431 of file PS3USB.cpp.

- + +

◆ setLedRaw()

+
@@ -941,11 +966,13 @@ Protected Attributes -

Definition at line 441 of file PS3USB.cpp.

+

Definition at line 441 of file PS3USB.cpp.

- + +

◆ setLedOff() [1/2]

+
@@ -967,11 +994,13 @@ Protected Attributes

Turn all LEDs off.

-

Definition at line 215 of file PS3USB.h.

+

Definition at line 215 of file PS3USB.h.

- + +

◆ setLedOff() [2/2]

+
@@ -991,11 +1020,13 @@ Protected Attributes -

Definition at line 446 of file PS3USB.cpp.

+

Definition at line 446 of file PS3USB.cpp.

- + +

◆ setLedOn()

+
@@ -1015,11 +1046,13 @@ Protected Attributes -

Definition at line 451 of file PS3USB.cpp.

+

Definition at line 451 of file PS3USB.cpp.

- + +

◆ setLedToggle()

+
@@ -1039,11 +1072,13 @@ Protected Attributes -

Definition at line 460 of file PS3USB.cpp.

+

Definition at line 460 of file PS3USB.cpp.

- + +

◆ moveSetBulb() [1/2]

+
@@ -1079,11 +1114,13 @@ Protected Attributes -

Definition at line 504 of file PS3USB.cpp.

+

Definition at line 504 of file PS3USB.cpp.

- + +

◆ moveSetBulb() [2/2]

+
@@ -1103,11 +1140,13 @@ Protected Attributes -

Definition at line 513 of file PS3USB.cpp.

+

Definition at line 513 of file PS3USB.cpp.

- + +

◆ moveSetRumble()

+
@@ -1127,11 +1166,13 @@ Protected Attributes -

Definition at line 517 of file PS3USB.cpp.

+

Definition at line 517 of file PS3USB.cpp.

- + +

◆ attachOnInit()

+
@@ -1159,12 +1200,14 @@ Protected Attributes -

Definition at line 254 of file PS3USB.h.

+

Definition at line 254 of file PS3USB.h.

Member Data Documentation

- + +

◆ PS3Connected

+
@@ -1175,11 +1218,13 @@ Protected Attributes

Variable used to indicate if the normal playstation controller is successfully connected.

-

Definition at line 256 of file PS3USB.h.

+

Definition at line 256 of file PS3USB.h.

- + +

◆ PS3MoveConnected

+
@@ -1190,11 +1235,13 @@ Protected Attributes

Variable used to indicate if the move controller is successfully connected.

-

Definition at line 262 of file PS3USB.h.

+

Definition at line 262 of file PS3USB.h.

- + +

◆ PS3NavigationConnected

+
@@ -1205,11 +1252,13 @@ Protected Attributes

Variable used to indicate if the navigation controller is successfully connected.

-

Definition at line 264 of file PS3USB.h.

+

Definition at line 264 of file PS3USB.h.

- + +

◆ pUsb

+
@@ -1228,11 +1277,13 @@ Protected Attributes

Pointer to USB class instance.

-

Definition at line 268 of file PS3USB.h.

+

Definition at line 268 of file PS3USB.h.

- + +

◆ bAddress

+
@@ -1251,11 +1302,13 @@ Protected Attributes

Device address.

-

Definition at line 270 of file PS3USB.h.

+

Definition at line 270 of file PS3USB.h.

- + +

◆ epInfo

+
@@ -1274,7 +1327,7 @@ Protected Attributes

Endpoint info structure.

-

Definition at line 272 of file PS3USB.h.

+

Definition at line 272 of file PS3USB.h.

@@ -1287,7 +1340,7 @@ Protected Attributes diff --git a/class_p_s3_u_s_b__coll__graph.map b/class_p_s3_u_s_b__coll__graph.map index 3e75fdd3..5264762c 100644 --- a/class_p_s3_u_s_b__coll__graph.map +++ b/class_p_s3_u_s_b__coll__graph.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/class_p_s3_u_s_b__coll__graph.md5 b/class_p_s3_u_s_b__coll__graph.md5 index 1aae81d3..3cb61626 100644 --- a/class_p_s3_u_s_b__coll__graph.md5 +++ b/class_p_s3_u_s_b__coll__graph.md5 @@ -1 +1 @@ -06f5f28fefcd0973f7f3cf5ab5f01033 \ No newline at end of file +419b4e935c78301cc0a62882347018ba \ No newline at end of file diff --git a/class_p_s3_u_s_b__coll__graph.png b/class_p_s3_u_s_b__coll__graph.png index 3def6455..06c5c9ff 100644 Binary files a/class_p_s3_u_s_b__coll__graph.png and b/class_p_s3_u_s_b__coll__graph.png differ diff --git a/class_p_s3_u_s_b__inherit__graph.map b/class_p_s3_u_s_b__inherit__graph.map index 33940989..1e21ae06 100644 --- a/class_p_s3_u_s_b__inherit__graph.map +++ b/class_p_s3_u_s_b__inherit__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_p_s3_u_s_b__inherit__graph.md5 b/class_p_s3_u_s_b__inherit__graph.md5 index b241da78..25fa853d 100644 --- a/class_p_s3_u_s_b__inherit__graph.md5 +++ b/class_p_s3_u_s_b__inherit__graph.md5 @@ -1 +1 @@ -77f7ca570be060c1a40a0845510a4a59 \ No newline at end of file +b322f707cca63b07e436aa0d678c09f6 \ No newline at end of file diff --git a/class_p_s3_u_s_b__inherit__graph.png b/class_p_s3_u_s_b__inherit__graph.png index b1442de3..3c9a178a 100644 Binary files a/class_p_s3_u_s_b__inherit__graph.png and b/class_p_s3_u_s_b__inherit__graph.png differ diff --git a/class_p_s4_b_t-members.html b/class_p_s4_b_t-members.html index 2af13e41..fb6f7f6c 100644 --- a/class_p_s4_b_t-members.html +++ b/class_p_s4_b_t-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - - + + +
[legend]
@@ -108,15 +83,15 @@ Collaboration diagram for PS4BT:
Collaboration graph
- - - - - - - - - + + + + + + + + +
[legend]
@@ -257,9 +232,11 @@ Additional Inherited Members

Detailed Description

This class implements support for the PS4 controller via Bluetooth. It uses the BTHID class for all the Bluetooth communication.

-

Definition at line 28 of file PS4BT.h.

+

Definition at line 28 of file PS4BT.h.

Constructor & Destructor Documentation

- + +

◆ PS4BT()

+
@@ -305,12 +282,14 @@ Additional Inherited Members -

Definition at line 36 of file PS4BT.h.

+

Definition at line 36 of file PS4BT.h.

Member Function Documentation

- + +

◆ connected()

+
@@ -332,11 +311,13 @@ Additional Inherited Members

Used to check if a PS4 controller is connected.

Returns
Returns true if it is connected.
-

Definition at line 45 of file PS4BT.h.

+

Definition at line 45 of file PS4BT.h.

- + +

◆ ParseBTHIDData()

+
@@ -377,11 +358,13 @@ Additional Inherited Members

Reimplemented from BTHID.

-

Definition at line 56 of file PS4BT.h.

+

Definition at line 56 of file PS4BT.h.

- + +

◆ OnInitBTHID()

+
@@ -405,11 +388,13 @@ Additional Inherited Members

Reimplemented from BTHID.

-

Definition at line 65 of file PS4BT.h.

+

Definition at line 65 of file PS4BT.h.

- + +

◆ ResetBTHID()

+
@@ -433,11 +418,13 @@ Additional Inherited Members

Reimplemented from BTHID.

-

Definition at line 75 of file PS4BT.h.

+

Definition at line 75 of file PS4BT.h.

- + +

◆ sendOutputReport()

+
@@ -467,7 +454,7 @@ Additional Inherited Members

Implements PS4Parser.

-

Definition at line 81 of file PS4BT.h.

+

Definition at line 81 of file PS4BT.h.

@@ -479,7 +466,7 @@ Additional Inherited Members diff --git a/class_p_s4_b_t__coll__graph.map b/class_p_s4_b_t__coll__graph.map index d2126a78..e7ff1b1c 100644 --- a/class_p_s4_b_t__coll__graph.map +++ b/class_p_s4_b_t__coll__graph.map @@ -1,11 +1,11 @@ - - - - - - - - - + + + + + + + + + diff --git a/class_p_s4_b_t__coll__graph.md5 b/class_p_s4_b_t__coll__graph.md5 index 57a44763..62540081 100644 --- a/class_p_s4_b_t__coll__graph.md5 +++ b/class_p_s4_b_t__coll__graph.md5 @@ -1 +1 @@ -4bb85a2b4d5163f1d591f32b835727dc \ No newline at end of file +caf6d41b8cdc6da742f8f2054e40560a \ No newline at end of file diff --git a/class_p_s4_b_t__coll__graph.png b/class_p_s4_b_t__coll__graph.png index 56e8eaf2..105c2bf1 100644 Binary files a/class_p_s4_b_t__coll__graph.png and b/class_p_s4_b_t__coll__graph.png differ diff --git a/class_p_s4_b_t__inherit__graph.map b/class_p_s4_b_t__inherit__graph.map index b5de590c..ec3ec543 100644 --- a/class_p_s4_b_t__inherit__graph.map +++ b/class_p_s4_b_t__inherit__graph.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/class_p_s4_b_t__inherit__graph.md5 b/class_p_s4_b_t__inherit__graph.md5 index 22e73541..10dc4741 100644 --- a/class_p_s4_b_t__inherit__graph.md5 +++ b/class_p_s4_b_t__inherit__graph.md5 @@ -1 +1 @@ -405752bfa16040ed3832aa96d3e4fa2f \ No newline at end of file +2de412526e28e795ed39015c162d3536 \ No newline at end of file diff --git a/class_p_s4_b_t__inherit__graph.png b/class_p_s4_b_t__inherit__graph.png index cfb58080..f8997676 100644 Binary files a/class_p_s4_b_t__inherit__graph.png and b/class_p_s4_b_t__inherit__graph.png differ diff --git a/class_p_s4_parser-members.html b/class_p_s4_parser-members.html index baa936ec..8359a8f5 100644 --- a/class_p_s4_parser-members.html +++ b/class_p_s4_parser-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - + +
[legend]
@@ -166,9 +141,11 @@ Protected Member Functions

Detailed Description

This class parses all the data sent by the PS4 controller

-

Definition at line 124 of file PS4Parser.h.

+

Definition at line 124 of file PS4Parser.h.

Constructor & Destructor Documentation

- + +

◆ PS4Parser()

+
@@ -190,12 +167,14 @@ Protected Member Functions

Constructor for the PS4Parser class.

-

Definition at line 127 of file PS4Parser.h.

+

Definition at line 127 of file PS4Parser.h.

Member Function Documentation

- + +

◆ getButtonPress()

+
@@ -218,11 +197,13 @@ Protected Member Functions
Returns
getButtonPress(ButtonEnum b) will return a true as long as a button is held down, while getButtonClick(ButtonEnum b) will return true once for each button press.
-

Definition at line 50 of file PS4Parser.cpp.

+

Definition at line 50 of file PS4Parser.cpp.

- + +

◆ getButtonClick()

+
@@ -245,11 +226,13 @@ Protected Member Functions
Returns
getButtonPress(ButtonEnum b) will return a true as long as a button is held down, while getButtonClick(ButtonEnum b) will return true once for each button press.
-

Definition at line 57 of file PS4Parser.cpp.

+

Definition at line 57 of file PS4Parser.cpp.

- + +

◆ getAnalogButton()

+
@@ -270,11 +253,13 @@ Protected Member Functions
Returns
Analog value in the range of 0-255.
-

Definition at line 64 of file PS4Parser.cpp.

+

Definition at line 64 of file PS4Parser.cpp.

- + +

◆ getAnalogHat()

+
@@ -295,11 +280,13 @@ Protected Member Functions
Returns
Return the analog value in the range of 0-255.
-

Definition at line 72 of file PS4Parser.cpp.

+

Definition at line 72 of file PS4Parser.cpp.

- + +

◆ getX()

+
@@ -339,11 +326,13 @@ Protected Member Functions
Returns
Returns the x-coordinate of the finger.
-

Definition at line 170 of file PS4Parser.h.

+

Definition at line 170 of file PS4Parser.h.

- + +

◆ getY()

+
@@ -383,11 +372,13 @@ Protected Member Functions
Returns
Returns the y-coordinate of the finger.
-

Definition at line 182 of file PS4Parser.h.

+

Definition at line 182 of file PS4Parser.h.

- + +

◆ isTouching()

+
@@ -427,11 +418,13 @@ Protected Member Functions
Returns
Returns true if the specific finger is touching the touchpad.
-

Definition at line 194 of file PS4Parser.h.

+

Definition at line 194 of file PS4Parser.h.

- + +

◆ getTouchCounter()

+
@@ -471,11 +464,13 @@ Protected Member Functions
Returns
Return the value of the counter, note that it is only a 7-bit value.
-

Definition at line 206 of file PS4Parser.h.

+

Definition at line 206 of file PS4Parser.h.

- + +

◆ getAngle()

+
@@ -504,11 +499,13 @@ Protected Member Functions
Returns
Return the angle in the range of 0-360.
-

Definition at line 215 of file PS4Parser.h.

+

Definition at line 215 of file PS4Parser.h.

- + +

◆ getSensor()

+
@@ -537,11 +534,13 @@ Protected Member Functions
Returns
Returns the raw sensor reading.
-

Definition at line 227 of file PS4Parser.h.

+

Definition at line 227 of file PS4Parser.h.

- + +

◆ getBatteryLevel()

+
@@ -563,11 +562,13 @@ Protected Member Functions

Return the battery level of the PS4 controller.

Returns
The battery level in the range 0-15.
-

Definition at line 250 of file PS4Parser.h.

+

Definition at line 250 of file PS4Parser.h.

- + +

◆ getUsbStatus()

+
@@ -589,11 +590,13 @@ Protected Member Functions

Use this to check if an USB cable is connected to the PS4 controller.

Returns
Returns true if an USB cable is connected.
-

Definition at line 258 of file PS4Parser.h.

+

Definition at line 258 of file PS4Parser.h.

- + +

◆ getAudioStatus()

+
@@ -615,11 +618,13 @@ Protected Member Functions

Use this to check if an audio jack cable is connected to the PS4 controller.

Returns
Returns true if an audio jack cable is connected.
-

Definition at line 266 of file PS4Parser.h.

+

Definition at line 266 of file PS4Parser.h.

- + +

◆ getMicStatus()

+
@@ -641,11 +646,13 @@ Protected Member Functions

Use this to check if a microphone is connected to the PS4 controller.

Returns
Returns true if a microphone is connected.
-

Definition at line 274 of file PS4Parser.h.

+

Definition at line 274 of file PS4Parser.h.

- + +

◆ setAllOff()

+
@@ -667,11 +674,13 @@ Protected Member Functions

Turn both rumble and the LEDs off.

-

Definition at line 279 of file PS4Parser.h.

+

Definition at line 279 of file PS4Parser.h.

- + +

◆ setRumbleOff()

+
@@ -693,11 +702,13 @@ Protected Member Functions

Set rumble off.

-

Definition at line 285 of file PS4Parser.h.

+

Definition at line 285 of file PS4Parser.h.

- + +

◆ setRumbleOn() [1/2]

+
@@ -725,11 +736,13 @@ Protected Member Functions -

Definition at line 293 of file PS4Parser.h.

+

Definition at line 293 of file PS4Parser.h.

- + +

◆ setRumbleOn() [2/2]

+
@@ -768,11 +781,13 @@ Protected Member Functions -

Definition at line 305 of file PS4Parser.h.

+

Definition at line 305 of file PS4Parser.h.

- + +

◆ setLedOff()

+
@@ -794,11 +809,13 @@ Protected Member Functions

Turn all LEDs off.

-

Definition at line 312 of file PS4Parser.h.

+

Definition at line 312 of file PS4Parser.h.

- + +

◆ setLed() [1/2]

+
@@ -842,11 +859,13 @@ Protected Member Functions -

Definition at line 320 of file PS4Parser.h.

+

Definition at line 320 of file PS4Parser.h.

- + +

◆ setLed() [2/2]

+
@@ -874,11 +893,13 @@ Protected Member Functions -

Definition at line 331 of file PS4Parser.h.

+

Definition at line 331 of file PS4Parser.h.

- + +

◆ setLedFlash()

+
@@ -917,11 +938,13 @@ Protected Member Functions -

Definition at line 340 of file PS4Parser.h.

+

Definition at line 340 of file PS4Parser.h.

- + +

◆ Parse()

+
@@ -960,11 +983,13 @@ Protected Member Functions -

Definition at line 76 of file PS4Parser.cpp.

+

Definition at line 76 of file PS4Parser.cpp.

- + +

◆ Reset()

+
@@ -986,11 +1011,13 @@ Protected Member Functions

Used to reset the different buffers to their default values

-

Definition at line 130 of file PS4Parser.cpp.

+

Definition at line 130 of file PS4Parser.cpp.

- + +

◆ sendOutputReport()

+
@@ -1031,7 +1058,7 @@ Protected Member Functions diff --git a/class_p_s4_parser__inherit__graph.map b/class_p_s4_parser__inherit__graph.map index 5b3ff389..9f167a7f 100644 --- a/class_p_s4_parser__inherit__graph.map +++ b/class_p_s4_parser__inherit__graph.map @@ -1,4 +1,4 @@ - - + + diff --git a/class_p_s4_parser__inherit__graph.md5 b/class_p_s4_parser__inherit__graph.md5 index 7d6cd78a..65bfd4cb 100644 --- a/class_p_s4_parser__inherit__graph.md5 +++ b/class_p_s4_parser__inherit__graph.md5 @@ -1 +1 @@ -b842fe07d690c9e08045bf8e0d96d45b \ No newline at end of file +dc6cd7ca1f2260cb5f86a8ae5bfdc9df \ No newline at end of file diff --git a/class_p_s4_parser__inherit__graph.png b/class_p_s4_parser__inherit__graph.png index 76bde1ff..fd0acdf9 100644 Binary files a/class_p_s4_parser__inherit__graph.png and b/class_p_s4_parser__inherit__graph.png differ diff --git a/class_p_s4_u_s_b-members.html b/class_p_s4_u_s_b-members.html index 8bea55cc..aa146c1f 100644 --- a/class_p_s4_u_s_b-members.html +++ b/class_p_s4_u_s_b-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - - - - + + + + +
[legend]
@@ -110,14 +85,14 @@ Collaboration diagram for PS4USB:
Collaboration graph
- - - - - - - - + + + + + + + +
[legend]
@@ -286,9 +261,11 @@ Additional Inherited Members

Detailed Description

This class implements support for the PS4 controller via USB. It uses the HIDUniversal class for all the USB communication.

-

Definition at line 32 of file PS4USB.h.

+

Definition at line 32 of file PS4USB.h.

Constructor & Destructor Documentation

- + +

◆ PS4USB()

+
@@ -316,12 +293,14 @@ Additional Inherited Members -

Definition at line 38 of file PS4USB.h.

+

Definition at line 38 of file PS4USB.h.

Member Function Documentation

- + +

◆ connected()

+
@@ -343,11 +322,13 @@ Additional Inherited Members

Used to check if a PS4 controller is connected.

Returns
Returns true if it is connected.
-

Definition at line 47 of file PS4USB.h.

+

Definition at line 47 of file PS4USB.h.

- + +

◆ attachOnInit()

+
@@ -375,11 +356,13 @@ Additional Inherited Members -

Definition at line 55 of file PS4USB.h.

+

Definition at line 55 of file PS4USB.h.

- + +

◆ ParseHIDData()

+
@@ -434,11 +417,13 @@ Additional Inherited Members

Reimplemented from HIDUniversal.

-

Definition at line 68 of file PS4USB.h.

+

Definition at line 68 of file PS4USB.h.

- + +

◆ OnInitSuccessful()

+
@@ -462,11 +447,13 @@ Additional Inherited Members

Reimplemented from HIDUniversal.

-

Definition at line 78 of file PS4USB.h.

+

Definition at line 78 of file PS4USB.h.

- + +

◆ sendOutputReport()

+
@@ -496,11 +483,13 @@ Additional Inherited Members

Implements PS4Parser.

-

Definition at line 91 of file PS4USB.h.

+

Definition at line 91 of file PS4USB.h.

- + +

◆ VIDPIDOK()

+
@@ -542,7 +531,7 @@ Additional Inherited Members

Reimplemented from USBDeviceConfig.

-

Definition at line 123 of file PS4USB.h.

+

Definition at line 123 of file PS4USB.h.

@@ -554,7 +543,7 @@ Additional Inherited Members diff --git a/class_p_s4_u_s_b__coll__graph.map b/class_p_s4_u_s_b__coll__graph.map index e7c3c37e..73de91ef 100644 --- a/class_p_s4_u_s_b__coll__graph.map +++ b/class_p_s4_u_s_b__coll__graph.map @@ -1,10 +1,10 @@ - - - - - - - - + + + + + + + + diff --git a/class_p_s4_u_s_b__coll__graph.md5 b/class_p_s4_u_s_b__coll__graph.md5 index 31d2a590..58a3f35e 100644 --- a/class_p_s4_u_s_b__coll__graph.md5 +++ b/class_p_s4_u_s_b__coll__graph.md5 @@ -1 +1 @@ -6510784396c1c05ff338806741b9ed6c \ No newline at end of file +c1e443ad969075b8a7ad79af4e899d3e \ No newline at end of file diff --git a/class_p_s4_u_s_b__coll__graph.png b/class_p_s4_u_s_b__coll__graph.png index cfbf5f0e..4509681b 100644 Binary files a/class_p_s4_u_s_b__coll__graph.png and b/class_p_s4_u_s_b__coll__graph.png differ diff --git a/class_p_s4_u_s_b__inherit__graph.map b/class_p_s4_u_s_b__inherit__graph.map index fb842e03..1dfeeefe 100644 --- a/class_p_s4_u_s_b__inherit__graph.map +++ b/class_p_s4_u_s_b__inherit__graph.map @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/class_p_s4_u_s_b__inherit__graph.md5 b/class_p_s4_u_s_b__inherit__graph.md5 index da6b8966..dca636bd 100644 --- a/class_p_s4_u_s_b__inherit__graph.md5 +++ b/class_p_s4_u_s_b__inherit__graph.md5 @@ -1 +1 @@ -cb813f5f3004b0786d96c27613056cb9 \ No newline at end of file +2c2ec41d26cf7fe9f9ccfbd8eebeb9bd \ No newline at end of file diff --git a/class_p_s4_u_s_b__inherit__graph.png b/class_p_s4_u_s_b__inherit__graph.png index 58495758..d086f36e 100644 Binary files a/class_p_s4_u_s_b__inherit__graph.png and b/class_p_s4_u_s_b__inherit__graph.png differ diff --git a/class_p_s_buzz-members.html b/class_p_s_buzz-members.html index 1c84c0fe..9222c48e 100644 --- a/class_p_s_buzz-members.html +++ b/class_p_s_buzz-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - - - + + + +
[legend]
@@ -110,13 +85,13 @@ Collaboration diagram for PSBuzz:
Collaboration graph
- - - - - - - + + + + + + +
[legend]
@@ -249,9 +224,11 @@ Additional Inherited Members

Detailed Description

This class implements support for the PS Buzz controllers via USB. It uses the HIDUniversal class for all the USB communication.

-

Definition at line 43 of file PSBuzz.h.

+

Definition at line 43 of file PSBuzz.h.

Constructor & Destructor Documentation

- + +

◆ PSBuzz()

+
@@ -279,12 +256,14 @@ Additional Inherited Members -

Definition at line 49 of file PSBuzz.h.

+

Definition at line 49 of file PSBuzz.h.

Member Function Documentation

- + +

◆ connected()

+
@@ -306,11 +285,13 @@ Additional Inherited Members

Used to check if a PS Buzz controller is connected.

Returns
Returns true if it is connected.
-

Definition at line 58 of file PSBuzz.h.

+

Definition at line 58 of file PSBuzz.h.

- + +

◆ attachOnInit()

+
@@ -338,11 +319,13 @@ Additional Inherited Members -

Definition at line 66 of file PSBuzz.h.

+

Definition at line 66 of file PSBuzz.h.

- + +

◆ getButtonPress()

+
@@ -376,11 +359,13 @@ Additional Inherited Members
Returns
getButtonPress(ButtonEnum b) will return a true as long as a button is held down, while getButtonClick(ButtonEnum b) will return true once for each button press.
-

Definition at line 52 of file PSBuzz.cpp.

+

Definition at line 52 of file PSBuzz.cpp.

- + +

◆ getButtonClick()

+
@@ -414,11 +399,13 @@ Additional Inherited Members
Returns
getButtonPress(ButtonEnum b) will return a true as long as a button is held down, while getButtonClick(ButtonEnum b) will return true once for each button press.
-

Definition at line 56 of file PSBuzz.cpp.

+

Definition at line 56 of file PSBuzz.cpp.

- + +

◆ setLedRaw()

+
@@ -450,11 +437,13 @@ Additional Inherited Members -

Definition at line 64 of file PSBuzz.cpp.

+

Definition at line 64 of file PSBuzz.cpp.

- + +

◆ setLedOffAll()

+
@@ -476,11 +465,13 @@ Additional Inherited Members

Turn all LEDs off.

-

Definition at line 98 of file PSBuzz.h.

+

Definition at line 98 of file PSBuzz.h.

- + +

◆ setLedOff()

+
@@ -508,11 +499,13 @@ Additional Inherited Members -

Definition at line 108 of file PSBuzz.h.

+

Definition at line 108 of file PSBuzz.h.

- + +

◆ setLedOnAll()

+
@@ -534,11 +527,13 @@ Additional Inherited Members

Turn all LEDs on.

-

Definition at line 114 of file PSBuzz.h.

+

Definition at line 114 of file PSBuzz.h.

- + +

◆ setLedOn()

+
@@ -566,11 +561,13 @@ Additional Inherited Members -

Definition at line 124 of file PSBuzz.h.

+

Definition at line 124 of file PSBuzz.h.

- + +

◆ setLedToggle()

+
@@ -598,11 +595,13 @@ Additional Inherited Members -

Definition at line 132 of file PSBuzz.h.

+

Definition at line 132 of file PSBuzz.h.

- + +

◆ ParseHIDData()

+
@@ -657,11 +656,13 @@ Additional Inherited Members

Reimplemented from HIDUniversal.

-

Definition at line 23 of file PSBuzz.cpp.

+

Definition at line 23 of file PSBuzz.cpp.

- + +

◆ OnInitSuccessful()

+
@@ -685,11 +686,13 @@ Additional Inherited Members

Reimplemented from HIDUniversal.

-

Definition at line 41 of file PSBuzz.cpp.

+

Definition at line 41 of file PSBuzz.cpp.

- + +

◆ Reset()

+
@@ -711,11 +714,13 @@ Additional Inherited Members

Used to reset the different buffers to their default values

-

Definition at line 157 of file PSBuzz.h.

+

Definition at line 157 of file PSBuzz.h.

- + +

◆ VIDPIDOK()

+
@@ -757,7 +762,7 @@ Additional Inherited Members

Reimplemented from USBDeviceConfig.

-

Definition at line 172 of file PSBuzz.h.

+

Definition at line 172 of file PSBuzz.h.

@@ -770,7 +775,7 @@ Additional Inherited Members diff --git a/class_p_s_buzz__coll__graph.map b/class_p_s_buzz__coll__graph.map index f195bd2c..e66070f0 100644 --- a/class_p_s_buzz__coll__graph.map +++ b/class_p_s_buzz__coll__graph.map @@ -1,9 +1,9 @@ - - - - - - - + + + + + + + diff --git a/class_p_s_buzz__coll__graph.md5 b/class_p_s_buzz__coll__graph.md5 index babb5e21..a7baa4ca 100644 --- a/class_p_s_buzz__coll__graph.md5 +++ b/class_p_s_buzz__coll__graph.md5 @@ -1 +1 @@ -fea9ba05db96f5aefabee7a11c9c9f52 \ No newline at end of file +21462fd15ee84876fa8daa1b607dba33 \ No newline at end of file diff --git a/class_p_s_buzz__coll__graph.png b/class_p_s_buzz__coll__graph.png index 788f51c9..7f22b269 100644 Binary files a/class_p_s_buzz__coll__graph.png and b/class_p_s_buzz__coll__graph.png differ diff --git a/class_p_s_buzz__inherit__graph.map b/class_p_s_buzz__inherit__graph.map index 86a7f79c..192a2ce5 100644 --- a/class_p_s_buzz__inherit__graph.map +++ b/class_p_s_buzz__inherit__graph.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/class_p_s_buzz__inherit__graph.md5 b/class_p_s_buzz__inherit__graph.md5 index f6913f03..9e4d2b3d 100644 --- a/class_p_s_buzz__inherit__graph.md5 +++ b/class_p_s_buzz__inherit__graph.md5 @@ -1 +1 @@ -044341a0d1db5d69a79fcdf68e3f63aa \ No newline at end of file +24bc2881d71535eed040c27bf71992a9 \ No newline at end of file diff --git a/class_p_s_buzz__inherit__graph.png b/class_p_s_buzz__inherit__graph.png index 35c3aa8d..764ca7e9 100644 Binary files a/class_p_s_buzz__inherit__graph.png and b/class_p_s_buzz__inherit__graph.png differ diff --git a/class_p_t_p_list_parser-members.html b/class_p_t_p_list_parser-members.html index 20cd64dd..424a73b9 100644 --- a/class_p_t_p_list_parser-members.html +++ b/class_p_t_p_list_parser-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +

Detailed Description

-

Definition at line 96 of file parsetools.h.

+

Definition at line 96 of file parsetools.h.

Member Enumeration Documentation

- + +

◆ ParseMode

+
@@ -125,18 +102,18 @@ Public Member Functions
- - + +
Enumerator
modeArray  -
modeRange  -
Enumerator
modeArray 
modeRange 
-

Definition at line 99 of file parsetools.h.

+

Definition at line 99 of file parsetools.h.

Constructor & Destructor Documentation

- + +

◆ PTPListParser()

+
@@ -157,12 +134,14 @@ Public Member Functions
-

Definition at line 122 of file parsetools.h.

+

Definition at line 122 of file parsetools.h.

Member Function Documentation

- + +

◆ Initialize()

+
@@ -206,11 +185,13 @@ Public Member Functions
-

Definition at line 133 of file parsetools.h.

+

Definition at line 133 of file parsetools.h.

- + +

◆ Parse()

+
@@ -246,7 +227,7 @@ Public Member Functions
-

Definition at line 41 of file parsetools.cpp.

+

Definition at line 41 of file parsetools.cpp.

@@ -259,7 +240,7 @@ Public Member Functions diff --git a/class_report_desc_parser-members.html b/class_report_desc_parser-members.html index 84967627..5c81f12c 100644 --- a/class_report_desc_parser-members.html +++ b/class_report_desc_parser-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - + +
[legend]
@@ -106,11 +81,11 @@ Collaboration diagram for ReportDescParser:
Collaboration graph
- - - - - + + + + +
[legend]
@@ -304,7 +279,7 @@ Additional Inherited Members

Detailed Description

-

Definition at line 145 of file hidescriptorparser.h.

+

Definition at line 145 of file hidescriptorparser.h.


The documentation for this class was generated from the following file: @@ -313,7 +288,7 @@ Additional Inherited Members diff --git a/class_report_desc_parser2-members.html b/class_report_desc_parser2-members.html index 2f4844f5..89ff050c 100644 --- a/class_report_desc_parser2-members.html +++ b/class_report_desc_parser2-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - + +
[legend]
@@ -108,11 +83,11 @@ Collaboration diagram for ReportDescParser2:
Collaboration graph
- - - - - + + + + +
[legend]
@@ -314,9 +289,11 @@ Additional Inherited Members

Detailed Description

-

Definition at line 148 of file hidescriptorparser.h.

+

Definition at line 148 of file hidescriptorparser.h.

Constructor & Destructor Documentation

- + +

◆ ReportDescParser2()

+
@@ -348,12 +325,14 @@ Additional Inherited Members
-

Definition at line 165 of file hidescriptorparser.h.

+

Definition at line 165 of file hidescriptorparser.h.

Member Function Documentation

- + +

◆ ParseItem()

+
@@ -387,7 +366,7 @@ Additional Inherited Members

Reimplemented from ReportDescParserBase.

-

Definition at line 1432 of file hidescriptorparser.cpp.

+

Definition at line 1432 of file hidescriptorparser.cpp.

@@ -400,7 +379,7 @@ Additional Inherited Members diff --git a/class_report_desc_parser2__coll__graph.map b/class_report_desc_parser2__coll__graph.map index 8f0cb1a5..f0e83ac9 100644 --- a/class_report_desc_parser2__coll__graph.map +++ b/class_report_desc_parser2__coll__graph.map @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/class_report_desc_parser2__coll__graph.md5 b/class_report_desc_parser2__coll__graph.md5 index af9db977..a7dc2736 100644 --- a/class_report_desc_parser2__coll__graph.md5 +++ b/class_report_desc_parser2__coll__graph.md5 @@ -1 +1 @@ -27a80771267ed2f61d1a7277c51beb79 \ No newline at end of file +337962214a97d1da9120f71057904a21 \ No newline at end of file diff --git a/class_report_desc_parser2__coll__graph.png b/class_report_desc_parser2__coll__graph.png index 9196dd1b..50cb5e90 100644 Binary files a/class_report_desc_parser2__coll__graph.png and b/class_report_desc_parser2__coll__graph.png differ diff --git a/class_report_desc_parser2__inherit__graph.map b/class_report_desc_parser2__inherit__graph.map index 77e43e20..b83eb9a4 100644 --- a/class_report_desc_parser2__inherit__graph.map +++ b/class_report_desc_parser2__inherit__graph.map @@ -1,4 +1,4 @@ - - + + diff --git a/class_report_desc_parser2__inherit__graph.md5 b/class_report_desc_parser2__inherit__graph.md5 index 5a0ef029..819fec93 100644 --- a/class_report_desc_parser2__inherit__graph.md5 +++ b/class_report_desc_parser2__inherit__graph.md5 @@ -1 +1 @@ -28f3942ed411cf191d1a779af42e8bd4 \ No newline at end of file +820b0c432ce98035ef31739b6890111a \ No newline at end of file diff --git a/class_report_desc_parser2__inherit__graph.png b/class_report_desc_parser2__inherit__graph.png index d7a61232..566a7381 100644 Binary files a/class_report_desc_parser2__inherit__graph.png and b/class_report_desc_parser2__inherit__graph.png differ diff --git a/class_report_desc_parser__coll__graph.map b/class_report_desc_parser__coll__graph.map index a53f7c5b..e3836237 100644 --- a/class_report_desc_parser__coll__graph.map +++ b/class_report_desc_parser__coll__graph.map @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/class_report_desc_parser__coll__graph.md5 b/class_report_desc_parser__coll__graph.md5 index 60356562..ece91e52 100644 --- a/class_report_desc_parser__coll__graph.md5 +++ b/class_report_desc_parser__coll__graph.md5 @@ -1 +1 @@ -4eeff98c7d713241096fda58cb34b342 \ No newline at end of file +bba4c01c09194908b45e06e17ad8b5da \ No newline at end of file diff --git a/class_report_desc_parser__coll__graph.png b/class_report_desc_parser__coll__graph.png index 71e7d2d8..d0a12245 100644 Binary files a/class_report_desc_parser__coll__graph.png and b/class_report_desc_parser__coll__graph.png differ diff --git a/class_report_desc_parser__inherit__graph.map b/class_report_desc_parser__inherit__graph.map index 9f5e893c..0d81a849 100644 --- a/class_report_desc_parser__inherit__graph.map +++ b/class_report_desc_parser__inherit__graph.map @@ -1,4 +1,4 @@ - - + + diff --git a/class_report_desc_parser__inherit__graph.md5 b/class_report_desc_parser__inherit__graph.md5 index f89c23d6..110a89dc 100644 --- a/class_report_desc_parser__inherit__graph.md5 +++ b/class_report_desc_parser__inherit__graph.md5 @@ -1 +1 @@ -d91197785a3b88c599def77d68a6ee2e \ No newline at end of file +2251768d2a22ec22c4c321cf08cb7759 \ No newline at end of file diff --git a/class_report_desc_parser__inherit__graph.png b/class_report_desc_parser__inherit__graph.png index 06451a5d..ed79734f 100644 Binary files a/class_report_desc_parser__inherit__graph.png and b/class_report_desc_parser__inherit__graph.png differ diff --git a/class_report_desc_parser_base-members.html b/class_report_desc_parser_base-members.html index 65eb99e4..ab91da41 100644 --- a/class_report_desc_parser_base-members.html +++ b/class_report_desc_parser_base-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - - + + +
[legend]
@@ -115,10 +90,10 @@ Collaboration diagram for ReportDescParserBase:
Collaboration graph
- - - - + + + +
[legend]
@@ -325,9 +300,11 @@ Static Protected Attributes

Detailed Description

-

Definition at line 22 of file hidescriptorparser.h.

+

Definition at line 22 of file hidescriptorparser.h.

Member Typedef Documentation

- + +

◆ UsagePageFunc

+
@@ -337,12 +314,14 @@ Static Protected Attributes
-

Definition at line 24 of file hidescriptorparser.h.

+

Definition at line 24 of file hidescriptorparser.h.

Member Enumeration Documentation

- + +

◆ anonymous enum

+
@@ -352,20 +331,19 @@ Static Protected Attributes
- - - + + +
Enumerator
enErrorSuccess  -
enErrorIncomplete  -
enErrorBufferTooSmall  -
Enumerator
enErrorSuccess 
enErrorIncomplete 
enErrorBufferTooSmall 
-

Definition at line 138 of file hidescriptorparser.h.

+

Definition at line 138 of file hidescriptorparser.h.

Constructor & Destructor Documentation

- + +

◆ ReportDescParserBase()

+
@@ -386,12 +364,14 @@ Static Protected Attributes
-

Definition at line 124 of file hidescriptorparser.h.

+

Definition at line 124 of file hidescriptorparser.h.

Member Function Documentation

- + +

◆ PrintGenericDesktopPageUsage()

+
@@ -413,11 +393,13 @@ Static Protected Attributes
-

Definition at line 1296 of file hidescriptorparser.cpp.

+

Definition at line 1296 of file hidescriptorparser.cpp.

- + +

◆ PrintSimulationControlsPageUsage()

+
@@ -439,11 +421,13 @@ Static Protected Attributes
-

Definition at line 1308 of file hidescriptorparser.cpp.

+

Definition at line 1308 of file hidescriptorparser.cpp.

- + +

◆ PrintVRControlsPageUsage()

+
@@ -465,11 +449,13 @@ Static Protected Attributes
-

Definition at line 1318 of file hidescriptorparser.cpp.

+

Definition at line 1318 of file hidescriptorparser.cpp.

- + +

◆ PrintSportsControlsPageUsage()

+
@@ -491,11 +477,13 @@ Static Protected Attributes
-

Definition at line 1327 of file hidescriptorparser.cpp.

+

Definition at line 1327 of file hidescriptorparser.cpp.

- + +

◆ PrintGameControlsPageUsage()

+
@@ -517,11 +505,13 @@ Static Protected Attributes
-

Definition at line 1337 of file hidescriptorparser.cpp.

+

Definition at line 1337 of file hidescriptorparser.cpp.

- + +

◆ PrintGenericDeviceControlsPageUsage()

+
@@ -543,11 +533,13 @@ Static Protected Attributes
-

Definition at line 1346 of file hidescriptorparser.cpp.

+

Definition at line 1346 of file hidescriptorparser.cpp.

- + +

◆ PrintLEDPageUsage()

+
@@ -569,11 +561,13 @@ Static Protected Attributes
-

Definition at line 1354 of file hidescriptorparser.cpp.

+

Definition at line 1354 of file hidescriptorparser.cpp.

- + +

◆ PrintButtonPageUsage()

+
@@ -595,11 +589,13 @@ Static Protected Attributes
-

Definition at line 1279 of file hidescriptorparser.cpp.

+

Definition at line 1279 of file hidescriptorparser.cpp.

- + +

◆ PrintOrdinalPageUsage()

+
@@ -621,11 +617,13 @@ Static Protected Attributes
-

Definition at line 1287 of file hidescriptorparser.cpp.

+

Definition at line 1287 of file hidescriptorparser.cpp.

- + +

◆ PrintTelephonyPageUsage()

+
@@ -647,11 +645,13 @@ Static Protected Attributes
-

Definition at line 1362 of file hidescriptorparser.cpp.

+

Definition at line 1362 of file hidescriptorparser.cpp.

- + +

◆ PrintConsumerPageUsage()

+
@@ -673,11 +673,13 @@ Static Protected Attributes
-

Definition at line 1375 of file hidescriptorparser.cpp.

+

Definition at line 1375 of file hidescriptorparser.cpp.

- + +

◆ PrintDigitizerPageUsage()

+
@@ -699,11 +701,13 @@ Static Protected Attributes
-

Definition at line 1397 of file hidescriptorparser.cpp.

+

Definition at line 1397 of file hidescriptorparser.cpp.

- + +

◆ PrintAlphanumDisplayPageUsage()

+
@@ -725,11 +729,13 @@ Static Protected Attributes
-

Definition at line 1407 of file hidescriptorparser.cpp.

+

Definition at line 1407 of file hidescriptorparser.cpp.

- + +

◆ PrintMedicalInstrumentPageUsage()

+
@@ -751,11 +757,13 @@ Static Protected Attributes
-

Definition at line 1417 of file hidescriptorparser.cpp.

+

Definition at line 1417 of file hidescriptorparser.cpp.

- + +

◆ PrintValue()

+
@@ -787,11 +795,13 @@ Static Protected Attributes
-

Definition at line 1013 of file hidescriptorparser.cpp.

+

Definition at line 1013 of file hidescriptorparser.cpp.

- + +

◆ PrintByteValue()

+
@@ -813,11 +823,13 @@ Static Protected Attributes
-

Definition at line 1020 of file hidescriptorparser.cpp.

+

Definition at line 1020 of file hidescriptorparser.cpp.

- + +

◆ PrintItemTitle()

+
@@ -839,11 +851,13 @@ Static Protected Attributes
-

Definition at line 1026 of file hidescriptorparser.cpp.

+

Definition at line 1026 of file hidescriptorparser.cpp.

- + +

◆ ParseItem()

+
@@ -877,11 +891,13 @@ Static Protected Attributes

Reimplemented in ReportDescParser2.

-

Definition at line 1091 of file hidescriptorparser.cpp.

+

Definition at line 1091 of file hidescriptorparser.cpp.

- + +

◆ PrintUsagePage()

+
@@ -903,11 +919,13 @@ Static Protected Attributes
-

Definition at line 1254 of file hidescriptorparser.cpp.

+

Definition at line 1254 of file hidescriptorparser.cpp.

- + +

◆ SetUsagePage()

+
@@ -929,11 +947,13 @@ Static Protected Attributes
-

Definition at line 1236 of file hidescriptorparser.cpp.

+

Definition at line 1236 of file hidescriptorparser.cpp.

- + +

◆ Parse()

+
@@ -973,12 +993,14 @@ Static Protected Attributes

Implements USBReadParser.

-

Definition at line 993 of file hidescriptorparser.cpp.

+

Definition at line 993 of file hidescriptorparser.cpp.

Member Data Documentation

- + +

◆ usagePageTitles0

+
@@ -996,11 +1018,13 @@ Static Protected Attributes
- + +

◆ usagePageTitles1

+
@@ -1018,11 +1042,13 @@ Static Protected Attributes
- + +

◆ genDesktopTitles0

+
@@ -1040,11 +1066,13 @@ Static Protected Attributes
- + +

◆ genDesktopTitles1

+ - + +

◆ genDesktopTitles2

+ - + +

◆ genDesktopTitles3

+ - + +

◆ genDesktopTitles4

+ - + +

◆ simuTitles0

+ - + +

◆ simuTitles1

+
@@ -1172,11 +1210,13 @@ Static Protected Attributes
- + +

◆ simuTitles2

+
@@ -1194,11 +1234,13 @@ Static Protected Attributes
-

Definition at line 55 of file hidescriptorparser.h.

+

Definition at line 55 of file hidescriptorparser.h.

- + +

◆ vrTitles0

+
@@ -1216,11 +1258,13 @@ Static Protected Attributes
- + +

◆ vrTitles1

+
@@ -1238,11 +1282,13 @@ Static Protected Attributes
Initial value: -

Definition at line 57 of file hidescriptorparser.h.

+

Definition at line 57 of file hidescriptorparser.h.

- + +

◆ sportsCtrlTitles0

+
@@ -1260,11 +1306,13 @@ Static Protected Attributes
Initial value: -

Definition at line 58 of file hidescriptorparser.h.

+

Definition at line 58 of file hidescriptorparser.h.

- + +

◆ sportsCtrlTitles1

+
@@ -1282,11 +1330,13 @@ Static Protected Attributes
- + +

◆ sportsCtrlTitles2

+ - + +

◆ gameTitles0

+
@@ -1326,11 +1378,13 @@ Static Protected Attributes
Initial value: -

Definition at line 61 of file hidescriptorparser.h.

+

Definition at line 61 of file hidescriptorparser.h.

- + +

◆ gameTitles1

+ - + +

◆ genDevCtrlTitles

+ - + +

◆ ledTitles

+
@@ -1392,11 +1450,13 @@ Static Protected Attributes
-

Definition at line 64 of file hidescriptorparser.h.

+

Definition at line 64 of file hidescriptorparser.h.

- + +

◆ telTitles0

+
@@ -1414,11 +1474,13 @@ Static Protected Attributes
- + +

◆ telTitles1

+ - + +

◆ telTitles2

+
@@ -1458,11 +1522,13 @@ Static Protected Attributes
Initial value: -

Definition at line 67 of file hidescriptorparser.h.

+

Definition at line 67 of file hidescriptorparser.h.

- + +

◆ telTitles3

+
@@ -1480,11 +1546,13 @@ Static Protected Attributes
- + +

◆ telTitles4

+ - + +

◆ telTitles5

+ - + +

◆ consTitles0

+
@@ -1546,11 +1618,13 @@ Static Protected Attributes
- + +

◆ consTitles1

+
@@ -1568,11 +1642,13 @@ Static Protected Attributes
Initial value: -

Definition at line 72 of file hidescriptorparser.h.

+

Definition at line 72 of file hidescriptorparser.h.

- + +

◆ consTitles2

+
@@ -1590,11 +1666,13 @@ Static Protected Attributes
- + +

◆ consTitles3

+
@@ -1612,11 +1690,13 @@ Static Protected Attributes
- + +

◆ consTitles4

+
@@ -1634,11 +1714,13 @@ Static Protected Attributes
- + +

◆ consTitles5

+
@@ -1656,11 +1738,13 @@ Static Protected Attributes
-

Definition at line 76 of file hidescriptorparser.h.

+

Definition at line 76 of file hidescriptorparser.h.

- + +

◆ consTitles6

+
@@ -1678,11 +1762,13 @@ Static Protected Attributes
-

Definition at line 77 of file hidescriptorparser.h.

+

Definition at line 77 of file hidescriptorparser.h.

- + +

◆ consTitles7

+
@@ -1700,11 +1786,13 @@ Static Protected Attributes
- + +

◆ consTitles8

+
@@ -1722,11 +1810,13 @@ Static Protected Attributes
- + +

◆ consTitles9

+ - + +

◆ consTitlesA

+
@@ -1766,11 +1858,13 @@ Static Protected Attributes
- + +

◆ consTitlesB

+ - + +

◆ consTitlesC

+
@@ -1810,11 +1906,13 @@ Static Protected Attributes
- + +

◆ consTitlesD

+
@@ -1832,11 +1930,13 @@ Static Protected Attributes
-

Definition at line 84 of file hidescriptorparser.h.

+

Definition at line 84 of file hidescriptorparser.h.

- + +

◆ consTitlesE

+
@@ -1854,11 +1954,13 @@ Static Protected Attributes
-

Definition at line 85 of file hidescriptorparser.h.

+

Definition at line 85 of file hidescriptorparser.h.

- + +

◆ digitTitles0

+ - + +

◆ digitTitles1

+
@@ -1898,11 +2002,13 @@ Static Protected Attributes
Initial value: -

Definition at line 87 of file hidescriptorparser.h.

+

Definition at line 87 of file hidescriptorparser.h.

- + +

◆ digitTitles2

+ - + +

◆ aplphanumTitles0

+
@@ -1942,11 +2050,13 @@ Static Protected Attributes
Initial value: -

Definition at line 89 of file hidescriptorparser.h.

+

Definition at line 89 of file hidescriptorparser.h.

- + +

◆ aplphanumTitles1

+
@@ -1964,11 +2074,13 @@ Static Protected Attributes
-

Definition at line 90 of file hidescriptorparser.h.

+

Definition at line 90 of file hidescriptorparser.h.

- + +

◆ aplphanumTitles2

+ - + +

◆ medInstrTitles0

+
@@ -2008,11 +2122,13 @@ Static Protected Attributes
- + +

◆ medInstrTitles1

+
@@ -2030,11 +2146,13 @@ Static Protected Attributes
Initial value: -

Definition at line 93 of file hidescriptorparser.h.

+

Definition at line 93 of file hidescriptorparser.h.

- + +

◆ medInstrTitles2

+
@@ -2052,11 +2170,13 @@ Static Protected Attributes
Initial value: -

Definition at line 94 of file hidescriptorparser.h.

+

Definition at line 94 of file hidescriptorparser.h.

- + +

◆ medInstrTitles3

+ - + +

◆ medInstrTitles4

+
@@ -2096,11 +2218,13 @@ Static Protected Attributes
Initial value: -

Definition at line 96 of file hidescriptorparser.h.

+

Definition at line 96 of file hidescriptorparser.h.

- + +

◆ usagePageFunctions

+ - + +

◆ theBuffer

+
@@ -2140,11 +2266,13 @@ Static Protected Attributes
-

Definition at line 101 of file hidescriptorparser.h.

+

Definition at line 101 of file hidescriptorparser.h.

- + +

◆ valParser

+
@@ -2162,11 +2290,13 @@ Static Protected Attributes
-

Definition at line 102 of file hidescriptorparser.h.

+

Definition at line 102 of file hidescriptorparser.h.

- + +

◆ theSkipper

+
@@ -2184,11 +2314,13 @@ Static Protected Attributes
-

Definition at line 103 of file hidescriptorparser.h.

+

Definition at line 103 of file hidescriptorparser.h.

- + +

◆ varBuffer

+
@@ -2206,11 +2338,13 @@ Static Protected Attributes
-

Definition at line 104 of file hidescriptorparser.h.

+

Definition at line 104 of file hidescriptorparser.h.

- + +

◆ itemParseState

+
@@ -2228,11 +2362,13 @@ Static Protected Attributes
-

Definition at line 106 of file hidescriptorparser.h.

+

Definition at line 106 of file hidescriptorparser.h.

- + +

◆ itemSize

+
@@ -2250,11 +2386,13 @@ Static Protected Attributes
-

Definition at line 107 of file hidescriptorparser.h.

+

Definition at line 107 of file hidescriptorparser.h.

- + +

◆ itemPrefix

+
@@ -2272,11 +2410,13 @@ Static Protected Attributes
-

Definition at line 108 of file hidescriptorparser.h.

+

Definition at line 108 of file hidescriptorparser.h.

- + +

◆ rptSize

+
@@ -2294,11 +2434,13 @@ Static Protected Attributes
-

Definition at line 109 of file hidescriptorparser.h.

+

Definition at line 109 of file hidescriptorparser.h.

- + +

◆ rptCount

+
@@ -2316,11 +2458,13 @@ Static Protected Attributes
-

Definition at line 110 of file hidescriptorparser.h.

+

Definition at line 110 of file hidescriptorparser.h.

- + +

◆ totalSize

+
@@ -2338,11 +2482,13 @@ Static Protected Attributes
-

Definition at line 112 of file hidescriptorparser.h.

+

Definition at line 112 of file hidescriptorparser.h.

- + +

◆ pfUsage

+
@@ -2360,7 +2506,7 @@ Static Protected Attributes
-

Definition at line 117 of file hidescriptorparser.h.

+

Definition at line 117 of file hidescriptorparser.h.

@@ -2373,7 +2519,7 @@ Static Protected Attributes diff --git a/class_report_desc_parser_base__coll__graph.map b/class_report_desc_parser_base__coll__graph.map index b2e067a7..daf04811 100644 --- a/class_report_desc_parser_base__coll__graph.map +++ b/class_report_desc_parser_base__coll__graph.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/class_report_desc_parser_base__coll__graph.md5 b/class_report_desc_parser_base__coll__graph.md5 index 668df278..bbe75e65 100644 --- a/class_report_desc_parser_base__coll__graph.md5 +++ b/class_report_desc_parser_base__coll__graph.md5 @@ -1 +1 @@ -b9d3bd37562883d7bba8b8814d6dc468 \ No newline at end of file +f73fbd568e2e89c15da6964b370648d9 \ No newline at end of file diff --git a/class_report_desc_parser_base__coll__graph.png b/class_report_desc_parser_base__coll__graph.png index 6eea22d6..fab6bbd6 100644 Binary files a/class_report_desc_parser_base__coll__graph.png and b/class_report_desc_parser_base__coll__graph.png differ diff --git a/class_report_desc_parser_base__inherit__graph.map b/class_report_desc_parser_base__inherit__graph.map index 5372b1fb..9b3f79b6 100644 --- a/class_report_desc_parser_base__inherit__graph.map +++ b/class_report_desc_parser_base__inherit__graph.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/class_report_desc_parser_base__inherit__graph.md5 b/class_report_desc_parser_base__inherit__graph.md5 index 92049196..d89bf997 100644 --- a/class_report_desc_parser_base__inherit__graph.md5 +++ b/class_report_desc_parser_base__inherit__graph.md5 @@ -1 +1 @@ -e17b83123517010d14d04955e7bfd25a \ No newline at end of file +bf2a9d7ab53e22e743a9e609df1e484c \ No newline at end of file diff --git a/class_report_desc_parser_base__inherit__graph.png b/class_report_desc_parser_base__inherit__graph.png index 4ceac2e4..f808dc59 100644 Binary files a/class_report_desc_parser_base__inherit__graph.png and b/class_report_desc_parser_base__inherit__graph.png differ diff --git a/class_s_p_p-members.html b/class_s_p_p-members.html index e4f89282..08553a81 100644 --- a/class_s_p_p-members.html +++ b/class_s_p_p-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- +
[legend]
@@ -107,13 +82,13 @@ Collaboration diagram for SPP:
Collaboration graph
- - - - - - - + + + + + + +
[legend]
@@ -184,9 +159,11 @@ Additional Inherited Members

Detailed Description

This BluetoothService class implements the Serial Port Protocol (SPP). It inherits the Arduino Stream class. This allows it to use all the standard Arduino print and stream functions.

-

Definition at line 55 of file SPP.h.

+

Definition at line 55 of file SPP.h.

Constructor & Destructor Documentation

- + +

◆ SPP()

+
@@ -224,12 +201,14 @@ Additional Inherited Members -

Definition at line 45 of file SPP.cpp.

+

Definition at line 45 of file SPP.cpp.

Member Function Documentation

- + +

◆ disconnect()

+
@@ -253,11 +232,13 @@ Additional Inherited Members

Implements BluetoothService.

-

Definition at line 72 of file SPP.cpp.

+

Definition at line 72 of file SPP.cpp.

- + +

◆ operator bool()

+
@@ -279,11 +260,13 @@ Additional Inherited Members

Used to provide Boolean tests for the class.

Returns
Return true if SPP communication is connected.
-

Definition at line 74 of file SPP.h.

+

Definition at line 74 of file SPP.h.

- + +

◆ available()

+
@@ -298,11 +281,13 @@ Additional Inherited Members

Get number of bytes waiting to be read.

Returns
Return the number of bytes ready to be read.
-

Definition at line 797 of file SPP.cpp.

+

Definition at line 797 of file SPP.cpp.

- + +

◆ flush()

+
@@ -325,11 +310,13 @@ Additional Inherited Members

Send out all bytes in the buffer.

-

Definition at line 88 of file SPP.h.

+

Definition at line 88 of file SPP.h.

- + +

◆ peek()

+
@@ -344,11 +331,13 @@ Additional Inherited Members

Used to read the next value in the buffer without advancing to the next one.

Returns
Return the byte. Will return -1 if no bytes are available.
-

Definition at line 805 of file SPP.cpp.

+

Definition at line 805 of file SPP.cpp.

- + +

◆ read()

+
@@ -363,11 +352,13 @@ Additional Inherited Members

Used to read the buffer.

Returns
Return the byte. Will return -1 if no bytes are available.
-

Definition at line 811 of file SPP.cpp.

+

Definition at line 811 of file SPP.cpp.

- + +

◆ write() [1/2]

+
@@ -388,11 +379,13 @@ Additional Inherited Members
Returns
Return the number of bytes written.
-

Definition at line 742 of file SPP.cpp.

+

Definition at line 742 of file SPP.cpp.

- + +

◆ write() [2/2]

+
@@ -424,11 +417,13 @@ Additional Inherited Members
Returns
Return the number of bytes written.
-

Definition at line 754 of file SPP.cpp.

+

Definition at line 754 of file SPP.cpp.

- + +

◆ discard()

+
@@ -443,11 +438,13 @@ Additional Inherited Members

Discard all the bytes in the buffer.

-

Definition at line 801 of file SPP.cpp.

+

Definition at line 801 of file SPP.cpp.

- + +

◆ send()

+
@@ -462,11 +459,13 @@ Additional Inherited Members

This will send all the bytes in the buffer. This is called whenever Usb.Task() is called, but can also be called via this function.

-

Definition at line 769 of file SPP.cpp.

+

Definition at line 769 of file SPP.cpp.

- + +

◆ ACLData()

+
@@ -496,11 +495,13 @@ Additional Inherited Members

Implements BluetoothService.

-

Definition at line 84 of file SPP.cpp.

+

Definition at line 84 of file SPP.cpp.

- + +

◆ Run()

+
@@ -524,11 +525,13 @@ Additional Inherited Members

Implements BluetoothService.

-

Definition at line 423 of file SPP.cpp.

+

Definition at line 423 of file SPP.cpp.

- + +

◆ Reset()

+
@@ -552,11 +555,13 @@ Additional Inherited Members

Implements BluetoothService.

-

Definition at line 60 of file SPP.cpp.

+

Definition at line 60 of file SPP.cpp.

- + +

◆ onInit()

+
@@ -580,12 +585,14 @@ Additional Inherited Members

Implements BluetoothService.

-

Definition at line 433 of file SPP.cpp.

+

Definition at line 433 of file SPP.cpp.

Member Data Documentation

- + +

◆ connected

+
@@ -596,7 +603,7 @@ Additional Inherited Members

Variable used to indicate if the connection is established.

-

Definition at line 78 of file SPP.h.

+

Definition at line 78 of file SPP.h.

@@ -609,7 +616,7 @@ Additional Inherited Members diff --git a/class_s_p_p__coll__graph.map b/class_s_p_p__coll__graph.map index 1a07ec6a..7b783448 100644 --- a/class_s_p_p__coll__graph.map +++ b/class_s_p_p__coll__graph.map @@ -1,9 +1,9 @@ - - - - - - - + + + + + + + diff --git a/class_s_p_p__coll__graph.md5 b/class_s_p_p__coll__graph.md5 index 7a218c80..787a2f39 100644 --- a/class_s_p_p__coll__graph.md5 +++ b/class_s_p_p__coll__graph.md5 @@ -1 +1 @@ -cad9aa3d2819cbf714312820a38ed5ae \ No newline at end of file +1e3a16374007af2c1704b8030bf6cd2e \ No newline at end of file diff --git a/class_s_p_p__coll__graph.png b/class_s_p_p__coll__graph.png index 3184888a..329e8d5e 100644 Binary files a/class_s_p_p__coll__graph.png and b/class_s_p_p__coll__graph.png differ diff --git a/class_s_p_p__inherit__graph.map b/class_s_p_p__inherit__graph.map index a070f5d4..bb4355cf 100644 --- a/class_s_p_p__inherit__graph.map +++ b/class_s_p_p__inherit__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_s_p_p__inherit__graph.md5 b/class_s_p_p__inherit__graph.md5 index 57b548e0..4994254f 100644 --- a/class_s_p_p__inherit__graph.md5 +++ b/class_s_p_p__inherit__graph.md5 @@ -1 +1 @@ -c60255fca3d4c819dfb05175121e3419 \ No newline at end of file +7800950b72dc105e9aff9c4a92cf0a7f \ No newline at end of file diff --git a/class_s_p_p__inherit__graph.png b/class_s_p_p__inherit__graph.png index 99ed458c..1b2858f5 100644 Binary files a/class_s_p_p__inherit__graph.png and b/class_s_p_p__inherit__graph.png differ diff --git a/class_s_pi-members.html b/class_s_pi-members.html index f5815981..2b0f8ce5 100644 --- a/class_s_pi-members.html +++ b/class_s_pi-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
class SPi< SPI_CLK, SPI_MOSI, SPI_MISO, SPI_SS > -

Definition at line 38 of file usbhost.h.

+

Definition at line 38 of file usbhost.h.

Member Function Documentation

- + +

◆ init()

+
@@ -129,7 +106,7 @@ template<typename SPI_CLK , typename SPI_MOSI , typename SPI_MISO , typename
-

Definition at line 61 of file usbhost.h.

+

Definition at line 61 of file usbhost.h.

@@ -141,7 +118,7 @@ template<typename SPI_CLK , typename SPI_MOSI , typename SPI_MISO , typename diff --git a/class_sink_parser-members.html b/class_sink_parser-members.html index c7f21334..e701b773 100644 --- a/class_sink_parser-members.html +++ b/class_sink_parser-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
class SinkParser< BASE_CLASS, LEN_TYPE, OFFSET_TYPE > -

Definition at line 35 of file sink_parser.h.

+

Definition at line 35 of file sink_parser.h.

Constructor & Destructor Documentation

- + +

◆ SinkParser()

+
@@ -147,12 +124,14 @@ template<class BASE_CLASS, class LEN_TYPE, class OFFSET_TYPE>
-

Definition at line 38 of file sink_parser.h.

+

Definition at line 38 of file sink_parser.h.

Member Function Documentation

- + +

◆ Initialize()

+
@@ -175,11 +154,13 @@ template<class BASE_CLASS, class LEN_TYPE, class OFFSET_TYPE>
-

Definition at line 41 of file sink_parser.h.

+

Definition at line 41 of file sink_parser.h.

- + +

◆ Parse()

+
@@ -219,7 +200,7 @@ template<class BASE_CLASS, class LEN_TYPE, class OFFSET_TYPE>
-

Definition at line 44 of file sink_parser.h.

+

Definition at line 44 of file sink_parser.h.

@@ -231,7 +212,7 @@ template<class BASE_CLASS, class LEN_TYPE, class OFFSET_TYPE>
diff --git a/class_sink_parser__coll__graph.md5 b/class_sink_parser__coll__graph.md5 index 1a5a95f4..d1545881 100644 --- a/class_sink_parser__coll__graph.md5 +++ b/class_sink_parser__coll__graph.md5 @@ -1 +1 @@ -d02f7fd8d26a0375ade46df3226bf199 \ No newline at end of file +d020ff3f97932ad0814add922e6e3f64 \ No newline at end of file diff --git a/class_sink_parser__coll__graph.png b/class_sink_parser__coll__graph.png index f51849ae..40f13f3f 100644 Binary files a/class_sink_parser__coll__graph.png and b/class_sink_parser__coll__graph.png differ diff --git a/class_sink_parser__inherit__graph.md5 b/class_sink_parser__inherit__graph.md5 index 1a5a95f4..10b46018 100644 --- a/class_sink_parser__inherit__graph.md5 +++ b/class_sink_parser__inherit__graph.md5 @@ -1 +1 @@ -d02f7fd8d26a0375ade46df3226bf199 \ No newline at end of file +2cc3cf9eea33b15a4670b329f94ff207 \ No newline at end of file diff --git a/class_sink_parser__inherit__graph.png b/class_sink_parser__inherit__graph.png index f51849ae..40f13f3f 100644 Binary files a/class_sink_parser__inherit__graph.png and b/class_sink_parser__inherit__graph.png differ diff --git a/class_u_h_s2___g_p_i_o-members.html b/class_u_h_s2___g_p_i_o-members.html index cf87533a..4d8909d7 100644 --- a/class_u_h_s2___g_p_i_o-members.html +++ b/class_u_h_s2___g_p_i_o-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +

Detailed Description

-

Definition at line 32 of file UHS2_gpio.h.

+

Definition at line 32 of file UHS2_gpio.h.

Constructor & Destructor Documentation

- + +

◆ UHS2_GPIO()

+
@@ -135,12 +112,14 @@ Public Member Functions -

Definition at line 32 of file UHS2_gpio.cpp.

+

Definition at line 32 of file UHS2_gpio.cpp.

Member Function Documentation

- + +

◆ digitalWrite()

+
@@ -173,11 +152,13 @@ Public Member Functions -

Definition at line 40 of file UHS2_gpio.cpp.

+

Definition at line 40 of file UHS2_gpio.cpp.

- + +

◆ digitalRead()

+
@@ -205,11 +186,13 @@ Public Member Functions -

Definition at line 55 of file UHS2_gpio.cpp.

+

Definition at line 55 of file UHS2_gpio.cpp.

- + +

◆ digitalReadOutput()

+
@@ -238,7 +221,7 @@ Public Member Functions
Note
Value of MAX3421E output register, i.e. what the device has been set to, not the physical value on the pin
-

Definition at line 68 of file UHS2_gpio.cpp.

+

Definition at line 68 of file UHS2_gpio.cpp.

@@ -251,7 +234,7 @@ Public Member Functions diff --git a/class_u_s_b-members.html b/class_u_s_b-members.html index 252d8aa0..34dc7a73 100644 --- a/class_u_s_b-members.html +++ b/class_u_s_b-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- +
[legend]
@@ -106,7 +81,7 @@ Collaboration diagram for USB:
Collaboration graph
- +
[legend]
@@ -179,10 +154,10 @@ Public Member Functions - + - + @@ -205,9 +180,11 @@ Public Member Functions
uint8_t * bytesRd (uint8_t reg, uint8_t nbytes, uint8_t *data_p)
 
uint8_t gpioRd ()
 Reads the current GPI input values. More...
 Reads the current GPI input values. More...
 
uint8_t gpioRdOutput ()
 Reads the current GPI output values. More...
 Reads the current GPI output values. More...
 
uint16_t reset ()
 

Detailed Description

-

Definition at line 210 of file UsbCore.h.

+

Definition at line 210 of file UsbCore.h.

Constructor & Destructor Documentation

- + +

◆ USB()

+
@@ -221,12 +198,14 @@ Public Member Functions
-

Definition at line 25 of file Usb.cpp.

+

Definition at line 25 of file Usb.cpp.

Member Function Documentation

- + +

◆ SetHubPreMask()

+
@@ -247,11 +226,13 @@ Public Member Functions
-

Definition at line 218 of file UsbCore.h.

+

Definition at line 218 of file UsbCore.h.

- + +

◆ ResetHubPreMask()

+
@@ -272,11 +253,13 @@ Public Member Functions
-

Definition at line 222 of file UsbCore.h.

+

Definition at line 222 of file UsbCore.h.

- + +

◆ GetAddressPool()

+
@@ -297,11 +280,13 @@ Public Member Functions
-

Definition at line 226 of file UsbCore.h.

+

Definition at line 226 of file UsbCore.h.

- + +

◆ RegisterDeviceClass()

+
@@ -323,11 +308,13 @@ Public Member Functions
-

Definition at line 230 of file UsbCore.h.

+

Definition at line 230 of file UsbCore.h.

- + +

◆ ForEachUsbDevice()

+
@@ -349,11 +336,13 @@ Public Member Functions
-

Definition at line 240 of file UsbCore.h.

+

Definition at line 240 of file UsbCore.h.

- + +

◆ getUsbTaskState()

+
@@ -367,11 +356,13 @@ Public Member Functions
-

Definition at line 36 of file Usb.cpp.

+

Definition at line 36 of file Usb.cpp.

- + +

◆ setUsbTaskState()

+
@@ -385,11 +376,13 @@ Public Member Functions
-

Definition at line 40 of file Usb.cpp.

+

Definition at line 40 of file Usb.cpp.

- + +

◆ getEpInfoEntry()

+
@@ -413,11 +406,13 @@ Public Member Functions
-

Definition at line 44 of file Usb.cpp.

+

Definition at line 44 of file Usb.cpp.

- + +

◆ setEpInfoEntry()

+
@@ -447,11 +442,13 @@ Public Member Functions
-

Definition at line 64 of file Usb.cpp.

+

Definition at line 64 of file Usb.cpp.

- + +

◆ getDevDescr()

+
@@ -489,11 +486,13 @@ Public Member Functions

defined(USB_METHODS_INLINE)

-

Definition at line 796 of file Usb.cpp.

+

Definition at line 796 of file Usb.cpp.

- + +

◆ getConfDescr() [1/2]

+
@@ -535,11 +534,13 @@ Public Member Functions
-

Definition at line 801 of file Usb.cpp.

+

Definition at line 801 of file Usb.cpp.

- + +

◆ getConfDescr() [2/2]

+
@@ -575,11 +576,13 @@ Public Member Functions
-

Definition at line 807 of file Usb.cpp.

+

Definition at line 807 of file Usb.cpp.

- + +

◆ getStrDescr()

+
@@ -627,11 +630,13 @@ Public Member Functions
-

Definition at line 826 of file Usb.cpp.

+

Definition at line 826 of file Usb.cpp.

- + +

◆ setAddr()

+
@@ -661,11 +666,13 @@ Public Member Functions
-

Definition at line 831 of file Usb.cpp.

+

Definition at line 831 of file Usb.cpp.

- + +

◆ setConf()

+
@@ -695,11 +702,13 @@ Public Member Functions
-

Definition at line 840 of file Usb.cpp.

+

Definition at line 840 of file Usb.cpp.

- + +

◆ ctrlData()

+
@@ -743,7 +752,9 @@ Public Member Functions - + +

◆ ctrlStatus()

+
@@ -775,7 +786,9 @@ Public Member Functions - + +

◆ inTransfer()

+
@@ -817,11 +830,13 @@ Public Member Functions
-

Definition at line 209 of file Usb.cpp.

+

Definition at line 209 of file Usb.cpp.

- + +

◆ outTransfer()

+
@@ -857,11 +872,13 @@ Public Member Functions
-

Definition at line 303 of file Usb.cpp.

+

Definition at line 303 of file Usb.cpp.

- + +

◆ dispatchPkt()

+
@@ -891,11 +908,13 @@ Public Member Functions
-

Definition at line 401 of file Usb.cpp.

+

Definition at line 401 of file Usb.cpp.

- + +

◆ Task()

+
@@ -909,11 +928,13 @@ Public Member Functions
-

Definition at line 455 of file Usb.cpp.

+

Definition at line 455 of file Usb.cpp.

- + +

◆ DefaultAddressing()

+
@@ -943,11 +964,13 @@ Public Member Functions
-

Definition at line 561 of file Usb.cpp.

+

Definition at line 561 of file Usb.cpp.

- + +

◆ Configuring()

+
@@ -977,11 +1000,13 @@ Public Member Functions
-

Definition at line 683 of file Usb.cpp.

+

Definition at line 683 of file Usb.cpp.

- + +

◆ ReleaseDevice()

+
@@ -995,11 +1020,13 @@ Public Member Functions
-

Definition at line 781 of file Usb.cpp.

+

Definition at line 781 of file Usb.cpp.

- + +

◆ ctrlReq()

+
@@ -1077,7 +1104,7 @@ Public Member Functions
-

Definition at line 126 of file Usb.cpp.

+

Definition at line 126 of file Usb.cpp.

@@ -1090,7 +1117,7 @@ Public Member Functions diff --git a/class_u_s_b__coll__graph.map b/class_u_s_b__coll__graph.map index e0772ba6..4b63da77 100644 --- a/class_u_s_b__coll__graph.map +++ b/class_u_s_b__coll__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_u_s_b__coll__graph.md5 b/class_u_s_b__coll__graph.md5 index 2b3a8617..ca823f4a 100644 --- a/class_u_s_b__coll__graph.md5 +++ b/class_u_s_b__coll__graph.md5 @@ -1 +1 @@ -48f1f6d22e8ca875c8c73c2869a63fbd \ No newline at end of file +f6ccf1fad8d6ecd2cff38fc98711f46e \ No newline at end of file diff --git a/class_u_s_b__coll__graph.png b/class_u_s_b__coll__graph.png index b64f8fc0..49f8f36c 100644 Binary files a/class_u_s_b__coll__graph.png and b/class_u_s_b__coll__graph.png differ diff --git a/class_u_s_b__inherit__graph.map b/class_u_s_b__inherit__graph.map index e0772ba6..4b63da77 100644 --- a/class_u_s_b__inherit__graph.map +++ b/class_u_s_b__inherit__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_u_s_b__inherit__graph.md5 b/class_u_s_b__inherit__graph.md5 index 2b3a8617..9e938cee 100644 --- a/class_u_s_b__inherit__graph.md5 +++ b/class_u_s_b__inherit__graph.md5 @@ -1 +1 @@ -48f1f6d22e8ca875c8c73c2869a63fbd \ No newline at end of file +23dbf1d6fae001672365342de66fd798 \ No newline at end of file diff --git a/class_u_s_b__inherit__graph.png b/class_u_s_b__inherit__graph.png index b64f8fc0..49f8f36c 100644 Binary files a/class_u_s_b__inherit__graph.png and b/class_u_s_b__inherit__graph.png differ diff --git a/class_u_s_b_device_config-members.html b/class_u_s_b_device_config-members.html index a7627f28..4703d3e9 100644 --- a/class_u_s_b_device_config-members.html +++ b/class_u_s_b_device_config-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + +
[legend]
@@ -144,9 +119,11 @@ Public Member Functions

Detailed Description

-

Definition at line 134 of file UsbCore.h.

+

Definition at line 134 of file UsbCore.h.

Member Function Documentation

- + +

◆ Init()

+
@@ -186,11 +163,13 @@ Public Member Functions

Reimplemented in BulkOnly, BTD, HIDBoot< BOOT_PROTOCOL >, ACM, USBHub, FTDI, PL2303, XR21B1411, ADK, HIDUniversal, USBH_MIDI, HIDComposite, XBOXONE, XBOXRECV, XBOXUSB, PS3USB, and XBOXOLD.

-

Definition at line 137 of file UsbCore.h.

+

Definition at line 137 of file UsbCore.h.

- + +

◆ ConfigureDevice()

+
@@ -230,11 +209,13 @@ Public Member Functions

Reimplemented in BulkOnly, BTD, ADK, and XBOXRECV.

-

Definition at line 141 of file UsbCore.h.

+

Definition at line 141 of file UsbCore.h.

- + +

◆ Release()

+
@@ -257,11 +238,13 @@ Public Member Functions

Reimplemented in BulkOnly, BTD, HIDBoot< BOOT_PROTOCOL >, ACM, USBHub, FTDI, ADK, HIDUniversal, USBH_MIDI, HIDComposite, XBOXONE, XBOXRECV, XBOXUSB, PS3USB, and XBOXOLD.

-

Definition at line 145 of file UsbCore.h.

+

Definition at line 145 of file UsbCore.h.

- + +

◆ Poll()

+
@@ -284,11 +267,13 @@ Public Member Functions

Reimplemented in BulkOnly, BTD, HIDBoot< BOOT_PROTOCOL >, ACM, USBHub, FTDI, ADK, XBOXONE, HIDUniversal, XBOXRECV, HIDComposite, XBOXUSB, PS3USB, and XBOXOLD.

-

Definition at line 149 of file UsbCore.h.

+

Definition at line 149 of file UsbCore.h.

- + +

◆ GetAddress()

+
@@ -311,11 +296,13 @@ Public Member Functions

Reimplemented in BulkOnly, BTD, HIDBoot< BOOT_PROTOCOL >, ACM, USBHub, FTDI, ADK, XBOXONE, XBOXRECV, HIDUniversal, HIDComposite, USBH_MIDI, XBOXUSB, PS3USB, and XBOXOLD.

-

Definition at line 153 of file UsbCore.h.

+

Definition at line 153 of file UsbCore.h.

- + +

◆ ResetHubPort()

+
@@ -339,11 +326,13 @@ Public Member Functions

Reimplemented in USBHub.

-

Definition at line 157 of file UsbCore.h.

+

Definition at line 157 of file UsbCore.h.

- + +

◆ VIDPIDOK()

+
@@ -377,11 +366,13 @@ Public Member Functions

Reimplemented in BTD, PSBuzz, FTDI, XBOXONE, PS4USB, ADK, XR21B1411, XBOXRECV, XBOXUSB, PS3USB, and XBOXOLD.

-

Definition at line 161 of file UsbCore.h.

+

Definition at line 161 of file UsbCore.h.

- + +

◆ DEVCLASSOK()

+
@@ -405,11 +396,13 @@ Public Member Functions

Reimplemented in BulkOnly, BTD, HIDBoot< BOOT_PROTOCOL >, and USBHub.

-

Definition at line 165 of file UsbCore.h.

+

Definition at line 165 of file UsbCore.h.

- + +

◆ DEVSUBCLASSOK()

+
@@ -433,7 +426,7 @@ Public Member Functions

Reimplemented in HIDBoot< BOOT_PROTOCOL >.

-

Definition at line 169 of file UsbCore.h.

+

Definition at line 169 of file UsbCore.h.

@@ -445,7 +438,7 @@ Public Member Functions diff --git a/class_u_s_b_device_config__inherit__graph.map b/class_u_s_b_device_config__inherit__graph.map index 775c2aa6..997dae0c 100644 --- a/class_u_s_b_device_config__inherit__graph.map +++ b/class_u_s_b_device_config__inherit__graph.map @@ -1,22 +1,22 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/class_u_s_b_device_config__inherit__graph.md5 b/class_u_s_b_device_config__inherit__graph.md5 index 336e2e81..3348af13 100644 --- a/class_u_s_b_device_config__inherit__graph.md5 +++ b/class_u_s_b_device_config__inherit__graph.md5 @@ -1 +1 @@ -fd915a8e1b72b3dd4dec81d6c1c419c0 \ No newline at end of file +994d0cc22c63895732978d50034f369c \ No newline at end of file diff --git a/class_u_s_b_device_config__inherit__graph.png b/class_u_s_b_device_config__inherit__graph.png index 255f7b9e..d6be754c 100644 Binary files a/class_u_s_b_device_config__inherit__graph.png and b/class_u_s_b_device_config__inherit__graph.png differ diff --git a/class_u_s_b_h___m_i_d_i-members.html b/class_u_s_b_h___m_i_d_i-members.html index 2d0ecd04..1b88b789 100644 --- a/class_u_s_b_h___m_i_d_i-members.html +++ b/class_u_s_b_h___m_i_d_i-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- +
[legend]
@@ -109,10 +84,10 @@ Collaboration diagram for USBH_MIDI:
Collaboration graph
- - - - + + + +
[legend]
@@ -215,9 +190,11 @@ Static Protected Attributes

Detailed Description

-

Definition at line 39 of file usbh_midi.h.

+

Definition at line 39 of file usbh_midi.h.

Constructor & Destructor Documentation

- + +

◆ USBH_MIDI()

+
@@ -231,12 +208,14 @@ Static Protected Attributes
-

Definition at line 87 of file usbh_midi.cpp.

+

Definition at line 87 of file usbh_midi.cpp.

Member Function Documentation

- + +

◆ parseConfigDescr()

+
@@ -268,11 +247,13 @@ Static Protected Attributes
-

Definition at line 253 of file usbh_midi.cpp.

+

Definition at line 253 of file usbh_midi.cpp.

- + +

◆ countSysExDataSize()

+
@@ -294,11 +275,13 @@ Static Protected Attributes
-

Definition at line 532 of file usbh_midi.cpp.

+

Definition at line 532 of file usbh_midi.cpp.

- + +

◆ setupDeviceSpecific()

+
@@ -319,11 +302,13 @@ Static Protected Attributes
-

Definition at line 345 of file usbh_midi.cpp.

+

Definition at line 345 of file usbh_midi.cpp.

- + +

◆ operator bool()

+
@@ -344,11 +329,13 @@ Static Protected Attributes
-

Definition at line 71 of file usbh_midi.h.

+

Definition at line 71 of file usbh_midi.h.

- + +

◆ idVendor()

+
@@ -369,11 +356,13 @@ Static Protected Attributes
-

Definition at line 72 of file usbh_midi.h.

+

Definition at line 72 of file usbh_midi.h.

- + +

◆ idProduct()

+
@@ -394,11 +383,13 @@ Static Protected Attributes
-

Definition at line 73 of file usbh_midi.h.

+

Definition at line 73 of file usbh_midi.h.

- + +

◆ RecvData() [1/2]

+
@@ -422,11 +413,13 @@ Static Protected Attributes
-

Definition at line 357 of file usbh_midi.cpp.

+

Definition at line 357 of file usbh_midi.cpp.

- + +

◆ RecvData() [2/2]

+
@@ -450,11 +443,13 @@ Static Protected Attributes
-

Definition at line 370 of file usbh_midi.cpp.

+

Definition at line 370 of file usbh_midi.cpp.

- + +

◆ RecvRawData()

+
@@ -468,11 +463,13 @@ Static Protected Attributes
-

Definition at line 411 of file usbh_midi.cpp.

+

Definition at line 411 of file usbh_midi.cpp.

- + +

◆ SendData()

+
@@ -496,11 +493,13 @@ Static Protected Attributes
-

Definition at line 417 of file usbh_midi.cpp.

+

Definition at line 417 of file usbh_midi.cpp.

- + +

◆ lookupMsgSize()

+
@@ -524,11 +523,13 @@ Static Protected Attributes
-

Definition at line 481 of file usbh_midi.cpp.

+

Definition at line 481 of file usbh_midi.cpp.

- + +

◆ SendSysEx()

+
@@ -558,11 +559,13 @@ Static Protected Attributes
-

Definition at line 556 of file usbh_midi.cpp.

+

Definition at line 556 of file usbh_midi.cpp.

- + +

◆ extractSysExData()

+
@@ -586,11 +589,13 @@ Static Protected Attributes
-

Definition at line 620 of file usbh_midi.cpp.

+

Definition at line 620 of file usbh_midi.cpp.

- + +

◆ SendRawData()

+
@@ -614,11 +619,13 @@ Static Protected Attributes
-

Definition at line 614 of file usbh_midi.cpp.

+

Definition at line 614 of file usbh_midi.cpp.

- + +

◆ RcvData() [1/2]

+
@@ -650,11 +657,13 @@ Static Protected Attributes
-

Definition at line 84 of file usbh_midi.h.

+

Definition at line 84 of file usbh_midi.h.

- + +

◆ RcvData() [2/2]

+
@@ -676,11 +685,13 @@ Static Protected Attributes
-

Definition at line 85 of file usbh_midi.h.

+

Definition at line 85 of file usbh_midi.h.

- + +

◆ Init()

+
@@ -720,11 +731,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 108 of file usbh_midi.cpp.

+

Definition at line 108 of file usbh_midi.cpp.

- + +

◆ Release()

+
@@ -747,11 +760,13 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 334 of file usbh_midi.cpp.

+

Definition at line 334 of file usbh_midi.cpp.

- + +

◆ GetAddress()

+
@@ -774,12 +789,14 @@ Static Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 90 of file usbh_midi.h.

+

Definition at line 90 of file usbh_midi.h.

Member Data Documentation

- + +

◆ epDataInIndex

+
@@ -797,11 +814,13 @@ Static Protected Attributes
-

Definition at line 42 of file usbh_midi.h.

+

Definition at line 42 of file usbh_midi.h.

- + +

◆ epDataOutIndex

+
@@ -819,11 +838,13 @@ Static Protected Attributes
-

Definition at line 43 of file usbh_midi.h.

+

Definition at line 43 of file usbh_midi.h.

- + +

◆ epDataInIndexVSP

+
@@ -841,11 +862,13 @@ Static Protected Attributes
-

Definition at line 44 of file usbh_midi.h.

+

Definition at line 44 of file usbh_midi.h.

- + +

◆ epDataOutIndexVSP

+
@@ -863,11 +886,13 @@ Static Protected Attributes
-

Definition at line 45 of file usbh_midi.h.

+

Definition at line 45 of file usbh_midi.h.

- + +

◆ pUsb

+
@@ -885,11 +910,13 @@ Static Protected Attributes
-

Definition at line 48 of file usbh_midi.h.

+

Definition at line 48 of file usbh_midi.h.

- + +

◆ bAddress

+
@@ -907,11 +934,13 @@ Static Protected Attributes
-

Definition at line 49 of file usbh_midi.h.

+

Definition at line 49 of file usbh_midi.h.

- + +

◆ bConfNum

+
@@ -929,11 +958,13 @@ Static Protected Attributes
-

Definition at line 50 of file usbh_midi.h.

+

Definition at line 50 of file usbh_midi.h.

- + +

◆ bNumEP

+
@@ -951,11 +982,13 @@ Static Protected Attributes
-

Definition at line 51 of file usbh_midi.h.

+

Definition at line 51 of file usbh_midi.h.

- + +

◆ bPollEnable

+
@@ -973,11 +1006,13 @@ Static Protected Attributes
-

Definition at line 52 of file usbh_midi.h.

+

Definition at line 52 of file usbh_midi.h.

- + +

◆ isMidiFound

+
@@ -995,11 +1030,13 @@ Static Protected Attributes
-

Definition at line 53 of file usbh_midi.h.

+

Definition at line 53 of file usbh_midi.h.

- + +

◆ pid

+
@@ -1017,11 +1054,13 @@ Static Protected Attributes
-

Definition at line 54 of file usbh_midi.h.

+

Definition at line 54 of file usbh_midi.h.

- + +

◆ vid

+
@@ -1039,11 +1078,13 @@ Static Protected Attributes
-

Definition at line 54 of file usbh_midi.h.

+

Definition at line 54 of file usbh_midi.h.

- + +

◆ bTransferTypeMask

+
@@ -1061,11 +1102,13 @@ Static Protected Attributes
-

Definition at line 55 of file usbh_midi.h.

+

Definition at line 55 of file usbh_midi.h.

- + +

◆ epInfo

+
@@ -1083,11 +1126,13 @@ Static Protected Attributes
-

Definition at line 57 of file usbh_midi.h.

+

Definition at line 57 of file usbh_midi.h.

- + +

◆ recvBuf

+
@@ -1105,11 +1150,13 @@ Static Protected Attributes
-

Definition at line 59 of file usbh_midi.h.

+

Definition at line 59 of file usbh_midi.h.

- + +

◆ readPtr

+
@@ -1127,7 +1174,7 @@ Static Protected Attributes
-

Definition at line 60 of file usbh_midi.h.

+

Definition at line 60 of file usbh_midi.h.

@@ -1140,7 +1187,7 @@ Static Protected Attributes diff --git a/class_u_s_b_h___m_i_d_i__coll__graph.map b/class_u_s_b_h___m_i_d_i__coll__graph.map index d89c496f..115a7213 100644 --- a/class_u_s_b_h___m_i_d_i__coll__graph.map +++ b/class_u_s_b_h___m_i_d_i__coll__graph.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/class_u_s_b_h___m_i_d_i__coll__graph.md5 b/class_u_s_b_h___m_i_d_i__coll__graph.md5 index 9672b222..0da20209 100644 --- a/class_u_s_b_h___m_i_d_i__coll__graph.md5 +++ b/class_u_s_b_h___m_i_d_i__coll__graph.md5 @@ -1 +1 @@ -25cb7fd7fbb45243f203aae31cb09034 \ No newline at end of file +68a4b7f7cabc03126d08e6372706b04f \ No newline at end of file diff --git a/class_u_s_b_h___m_i_d_i__coll__graph.png b/class_u_s_b_h___m_i_d_i__coll__graph.png index 52eb917a..351407c0 100644 Binary files a/class_u_s_b_h___m_i_d_i__coll__graph.png and b/class_u_s_b_h___m_i_d_i__coll__graph.png differ diff --git a/class_u_s_b_h___m_i_d_i__inherit__graph.map b/class_u_s_b_h___m_i_d_i__inherit__graph.map index 490a48c9..599c8ea6 100644 --- a/class_u_s_b_h___m_i_d_i__inherit__graph.map +++ b/class_u_s_b_h___m_i_d_i__inherit__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_u_s_b_h___m_i_d_i__inherit__graph.md5 b/class_u_s_b_h___m_i_d_i__inherit__graph.md5 index 3e6af39f..906c0796 100644 --- a/class_u_s_b_h___m_i_d_i__inherit__graph.md5 +++ b/class_u_s_b_h___m_i_d_i__inherit__graph.md5 @@ -1 +1 @@ -040098623cab6b270fc5a8a159a31c5e \ No newline at end of file +46133410a3d5a24eaed9e2779b770092 \ No newline at end of file diff --git a/class_u_s_b_h___m_i_d_i__inherit__graph.png b/class_u_s_b_h___m_i_d_i__inherit__graph.png index f27a71f3..556267bc 100644 Binary files a/class_u_s_b_h___m_i_d_i__inherit__graph.png and b/class_u_s_b_h___m_i_d_i__inherit__graph.png differ diff --git a/class_u_s_b_h_i_d-members.html b/class_u_s_b_h_i_d-members.html index cfecbb96..a18f123b 100644 --- a/class_u_s_b_h_i_d-members.html +++ b/class_u_s_b_h_i_d-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - - - - - - + + + + + + +
[legend]
@@ -115,10 +90,10 @@ Collaboration diagram for USBHID:
Collaboration graph
- - - - + + + +
[legend]
@@ -200,9 +175,11 @@ Static Protected Attributes

Detailed Description

-

Definition at line 143 of file usbhid.h.

+

Definition at line 143 of file usbhid.h.

Constructor & Destructor Documentation

- + +

◆ USBHID()

+
@@ -224,12 +201,14 @@ Static Protected Attributes
-

Definition at line 165 of file usbhid.h.

+

Definition at line 165 of file usbhid.h.

Member Function Documentation

- + +

◆ PrintEndpointDescriptor()

+
@@ -251,11 +230,13 @@ Static Protected Attributes
-

Definition at line 74 of file usbhid.cpp.

+

Definition at line 74 of file usbhid.cpp.

- + +

◆ PrintHidDescriptor()

+
@@ -277,11 +258,13 @@ Static Protected Attributes
-

Definition at line 90 of file usbhid.cpp.

+

Definition at line 90 of file usbhid.cpp.

- + +

◆ GetReportParser()

+
@@ -305,11 +288,13 @@ Static Protected Attributes

Reimplemented in HIDUniversal, and HIDComposite.

-

Definition at line 159 of file usbhid.h.

+

Definition at line 159 of file usbhid.h.

- + +

◆ GetUsb()

+
@@ -330,11 +315,13 @@ Static Protected Attributes
-

Definition at line 168 of file usbhid.h.

+

Definition at line 168 of file usbhid.h.

- + +

◆ SetReportParser()

+
@@ -368,11 +355,13 @@ Static Protected Attributes

Reimplemented in HIDBoot< BOOT_PROTOCOL >, HIDUniversal, and HIDComposite.

-

Definition at line 172 of file usbhid.h.

+

Definition at line 172 of file usbhid.h.

- + +

◆ SetProtocol()

+
@@ -396,11 +385,13 @@ Static Protected Attributes
-

Definition at line 66 of file usbhid.cpp.

+

Definition at line 66 of file usbhid.cpp.

- + +

◆ GetProtocol()

+
@@ -424,11 +415,13 @@ Static Protected Attributes
-

Definition at line 70 of file usbhid.cpp.

+

Definition at line 70 of file usbhid.cpp.

- + +

◆ GetIdle()

+
@@ -458,11 +451,13 @@ Static Protected Attributes
-

Definition at line 58 of file usbhid.cpp.

+

Definition at line 58 of file usbhid.cpp.

- + +

◆ SetIdle()

+
@@ -492,11 +487,13 @@ Static Protected Attributes
-

Definition at line 62 of file usbhid.cpp.

+

Definition at line 62 of file usbhid.cpp.

- + +

◆ GetReportDescr()

+
@@ -520,11 +517,13 @@ Static Protected Attributes
-

Definition at line 34 of file usbhid.cpp.

+

Definition at line 34 of file usbhid.cpp.

- + +

◆ GetHidDescr()

+
@@ -556,7 +555,9 @@ Static Protected Attributes - + +

◆ GetReport()

+
@@ -604,11 +605,13 @@ Static Protected Attributes
-

Definition at line 54 of file usbhid.cpp.

+

Definition at line 54 of file usbhid.cpp.

- + +

◆ SetReport()

+
@@ -656,12 +659,14 @@ Static Protected Attributes
-

Definition at line 50 of file usbhid.cpp.

+

Definition at line 50 of file usbhid.cpp.

Member Data Documentation

- + +

◆ pUsb

+
@@ -679,11 +684,13 @@ Static Protected Attributes
-

Definition at line 145 of file usbhid.h.

+

Definition at line 145 of file usbhid.h.

- + +

◆ bAddress

+
@@ -701,11 +708,13 @@ Static Protected Attributes
-

Definition at line 146 of file usbhid.h.

+

Definition at line 146 of file usbhid.h.

- + +

◆ epInterruptInIndex

+
@@ -723,11 +732,13 @@ Static Protected Attributes
-

Definition at line 149 of file usbhid.h.

+

Definition at line 149 of file usbhid.h.

- + +

◆ epInterruptOutIndex

+
@@ -745,11 +756,13 @@ Static Protected Attributes
-

Definition at line 150 of file usbhid.h.

+

Definition at line 150 of file usbhid.h.

- + +

◆ maxHidInterfaces

+
@@ -767,11 +780,13 @@ Static Protected Attributes
-

Definition at line 152 of file usbhid.h.

+

Definition at line 152 of file usbhid.h.

- + +

◆ maxEpPerInterface

+
@@ -789,11 +804,13 @@ Static Protected Attributes
-

Definition at line 153 of file usbhid.h.

+

Definition at line 153 of file usbhid.h.

- + +

◆ totalEndpoints

+
@@ -811,7 +828,7 @@ Static Protected Attributes
-

Definition at line 154 of file usbhid.h.

+

Definition at line 154 of file usbhid.h.

@@ -824,7 +841,7 @@ Static Protected Attributes diff --git a/class_u_s_b_h_i_d__coll__graph.map b/class_u_s_b_h_i_d__coll__graph.map index e856d868..4354142e 100644 --- a/class_u_s_b_h_i_d__coll__graph.map +++ b/class_u_s_b_h_i_d__coll__graph.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/class_u_s_b_h_i_d__coll__graph.md5 b/class_u_s_b_h_i_d__coll__graph.md5 index 92be9460..b8d9dc3c 100644 --- a/class_u_s_b_h_i_d__coll__graph.md5 +++ b/class_u_s_b_h_i_d__coll__graph.md5 @@ -1 +1 @@ -cf485acf15d75bd6f1697dfca03233cb \ No newline at end of file +55575cb1417a298be7b19ac4ba5cc390 \ No newline at end of file diff --git a/class_u_s_b_h_i_d__coll__graph.png b/class_u_s_b_h_i_d__coll__graph.png index a5eb0f3f..ba3cfee1 100644 Binary files a/class_u_s_b_h_i_d__coll__graph.png and b/class_u_s_b_h_i_d__coll__graph.png differ diff --git a/class_u_s_b_h_i_d__inherit__graph.map b/class_u_s_b_h_i_d__inherit__graph.map index ee28546d..56bcf222 100644 --- a/class_u_s_b_h_i_d__inherit__graph.map +++ b/class_u_s_b_h_i_d__inherit__graph.map @@ -1,9 +1,9 @@ - - - - - - - + + + + + + + diff --git a/class_u_s_b_h_i_d__inherit__graph.md5 b/class_u_s_b_h_i_d__inherit__graph.md5 index 1094a598..966fc3f1 100644 --- a/class_u_s_b_h_i_d__inherit__graph.md5 +++ b/class_u_s_b_h_i_d__inherit__graph.md5 @@ -1 +1 @@ -fd1ceed8df188748cafb6f9910104e67 \ No newline at end of file +21b3a3c0457bbd752948baa7e8c1df2a \ No newline at end of file diff --git a/class_u_s_b_h_i_d__inherit__graph.png b/class_u_s_b_h_i_d__inherit__graph.png index 7bbcf2d5..5bc20bcd 100644 Binary files a/class_u_s_b_h_i_d__inherit__graph.png and b/class_u_s_b_h_i_d__inherit__graph.png differ diff --git a/class_u_s_b_hub-members.html b/class_u_s_b_hub-members.html index 9c2d71ce..7bde51e3 100644 --- a/class_u_s_b_hub-members.html +++ b/class_u_s_b_hub-members.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- +
[legend]
@@ -106,7 +81,7 @@ Collaboration diagram for USBHub:
Collaboration graph
- +
[legend]
@@ -147,9 +122,11 @@ Public Member Functions

Detailed Description

-

Definition at line 164 of file usbhub.h.

+

Definition at line 164 of file usbhub.h.

Constructor & Destructor Documentation

- + +

◆ USBHub()

+
@@ -163,12 +140,14 @@ Public Member Functions
-

Definition at line 21 of file usbhub.cpp.

+

Definition at line 21 of file usbhub.cpp.

Member Function Documentation

- + +

◆ ClearHubFeature()

+
@@ -190,11 +169,13 @@ Public Member Functions
-

Definition at line 211 of file usbhub.h.

+

Definition at line 211 of file usbhub.h.

- + +

◆ ClearPortFeature()

+
@@ -232,11 +213,13 @@ Public Member Functions
-

Definition at line 216 of file usbhub.h.

+

Definition at line 216 of file usbhub.h.

- + +

◆ GetHubDescriptor()

+
@@ -274,11 +257,13 @@ Public Member Functions
-

Definition at line 221 of file usbhub.h.

+

Definition at line 221 of file usbhub.h.

- + +

◆ GetHubStatus()

+
@@ -310,11 +295,13 @@ Public Member Functions
-

Definition at line 226 of file usbhub.h.

+

Definition at line 226 of file usbhub.h.

- + +

◆ GetPortStatus()

+
@@ -352,11 +339,13 @@ Public Member Functions
-

Definition at line 231 of file usbhub.h.

+

Definition at line 231 of file usbhub.h.

- + +

◆ SetHubDescriptor()

+
@@ -394,11 +383,13 @@ Public Member Functions
-

Definition at line 236 of file usbhub.h.

+

Definition at line 236 of file usbhub.h.

- + +

◆ SetHubFeature()

+
@@ -420,11 +411,13 @@ Public Member Functions
-

Definition at line 241 of file usbhub.h.

+

Definition at line 241 of file usbhub.h.

- + +

◆ SetPortFeature()

+
@@ -462,11 +455,13 @@ Public Member Functions
-

Definition at line 246 of file usbhub.h.

+

Definition at line 246 of file usbhub.h.

- + +

◆ PrintHubStatus()

+
@@ -481,7 +476,9 @@ Public Member Functions - + +

◆ Init()

+
@@ -521,11 +518,13 @@ Public Member Functions

Reimplemented from USBDeviceConfig.

-

Definition at line 44 of file usbhub.cpp.

+

Definition at line 44 of file usbhub.cpp.

- + +

◆ Release()

+
@@ -548,11 +547,13 @@ Public Member Functions

Reimplemented from USBDeviceConfig.

-

Definition at line 216 of file usbhub.cpp.

+

Definition at line 216 of file usbhub.cpp.

- + +

◆ Poll()

+
@@ -575,11 +576,13 @@ Public Member Functions

Reimplemented from USBDeviceConfig.

-

Definition at line 229 of file usbhub.cpp.

+

Definition at line 229 of file usbhub.cpp.

- + +

◆ ResetHubPort()

+
@@ -603,11 +606,13 @@ Public Member Functions

Reimplemented from USBDeviceConfig.

-

Definition at line 309 of file usbhub.cpp.

+

Definition at line 309 of file usbhub.cpp.

- + +

◆ GetAddress()

+
@@ -630,11 +635,13 @@ Public Member Functions

Reimplemented from USBDeviceConfig.

-

Definition at line 199 of file usbhub.h.

+

Definition at line 199 of file usbhub.h.

- + +

◆ DEVCLASSOK()

+
@@ -658,7 +665,7 @@ Public Member Functions

Reimplemented from USBDeviceConfig.

-

Definition at line 203 of file usbhub.h.

+

Definition at line 203 of file usbhub.h.

@@ -671,7 +678,7 @@ Public Member Functions diff --git a/class_u_s_b_hub__coll__graph.map b/class_u_s_b_hub__coll__graph.map index 04f84c15..edffc860 100644 --- a/class_u_s_b_hub__coll__graph.map +++ b/class_u_s_b_hub__coll__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_u_s_b_hub__coll__graph.md5 b/class_u_s_b_hub__coll__graph.md5 index 5328fe8d..acaaeb5a 100644 --- a/class_u_s_b_hub__coll__graph.md5 +++ b/class_u_s_b_hub__coll__graph.md5 @@ -1 +1 @@ -bf8ca3c3b9277566d37448eda78dfa47 \ No newline at end of file +19a6b573cae00d583786c381a3eb5446 \ No newline at end of file diff --git a/class_u_s_b_hub__coll__graph.png b/class_u_s_b_hub__coll__graph.png index 921bd62a..51d7bed2 100644 Binary files a/class_u_s_b_hub__coll__graph.png and b/class_u_s_b_hub__coll__graph.png differ diff --git a/class_u_s_b_hub__inherit__graph.map b/class_u_s_b_hub__inherit__graph.map index 04f84c15..edffc860 100644 --- a/class_u_s_b_hub__inherit__graph.map +++ b/class_u_s_b_hub__inherit__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_u_s_b_hub__inherit__graph.md5 b/class_u_s_b_hub__inherit__graph.md5 index 5328fe8d..33450caf 100644 --- a/class_u_s_b_hub__inherit__graph.md5 +++ b/class_u_s_b_hub__inherit__graph.md5 @@ -1 +1 @@ -bf8ca3c3b9277566d37448eda78dfa47 \ No newline at end of file +f8fb8ebf62ffeb914faf5e448f0fa095 \ No newline at end of file diff --git a/class_u_s_b_hub__inherit__graph.png b/class_u_s_b_hub__inherit__graph.png index 921bd62a..51d7bed2 100644 Binary files a/class_u_s_b_hub__inherit__graph.png and b/class_u_s_b_hub__inherit__graph.png differ diff --git a/class_u_s_b_read_parser-members.html b/class_u_s_b_read_parser-members.html index 5b07368b..b949f4d7 100644 --- a/class_u_s_b_read_parser-members.html +++ b/class_u_s_b_read_parser-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - - - + + + +
[legend]
@@ -112,9 +87,11 @@ Public Member Functions

Detailed Description

-

Definition at line 205 of file UsbCore.h.

+

Definition at line 205 of file UsbCore.h.

Member Function Documentation

- + +

◆ Parse()

+
@@ -164,7 +141,7 @@ Public Member Functions diff --git a/class_u_s_b_read_parser__inherit__graph.map b/class_u_s_b_read_parser__inherit__graph.map index aa62913b..50ef4849 100644 --- a/class_u_s_b_read_parser__inherit__graph.map +++ b/class_u_s_b_read_parser__inherit__graph.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/class_u_s_b_read_parser__inherit__graph.md5 b/class_u_s_b_read_parser__inherit__graph.md5 index b9ca8675..083c726c 100644 --- a/class_u_s_b_read_parser__inherit__graph.md5 +++ b/class_u_s_b_read_parser__inherit__graph.md5 @@ -1 +1 @@ -ec3e429c5021a90ad76c1c993c8aa8bc \ No newline at end of file +bfbf139c46e46f9f8d2fef64f5bb2e5b \ No newline at end of file diff --git a/class_u_s_b_read_parser__inherit__graph.png b/class_u_s_b_read_parser__inherit__graph.png index 6aec8228..e126ab83 100644 Binary files a/class_u_s_b_read_parser__inherit__graph.png and b/class_u_s_b_read_parser__inherit__graph.png differ diff --git a/class_universal_report_parser-members.html b/class_universal_report_parser-members.html index f6dd7f79..020188b8 100644 --- a/class_universal_report_parser-members.html +++ b/class_universal_report_parser-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- +
[legend]
@@ -106,7 +81,7 @@ Collaboration diagram for UniversalReportParser:
Collaboration graph
- +
[legend]
@@ -117,9 +92,11 @@ Public Member Functions

Detailed Description

-

Definition at line 170 of file hidescriptorparser.h.

+

Definition at line 170 of file hidescriptorparser.h.

Member Function Documentation

- + +

◆ Parse()

+
@@ -165,7 +142,7 @@ Public Member Functions

Implements HIDReportParser.

-

Definition at line 1587 of file hidescriptorparser.cpp.

+

Definition at line 1587 of file hidescriptorparser.cpp.

@@ -178,7 +155,7 @@ Public Member Functions diff --git a/class_universal_report_parser__coll__graph.map b/class_universal_report_parser__coll__graph.map index c873c83a..a7c5dd97 100644 --- a/class_universal_report_parser__coll__graph.map +++ b/class_universal_report_parser__coll__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_universal_report_parser__coll__graph.md5 b/class_universal_report_parser__coll__graph.md5 index 18ce6809..b9a0d07a 100644 --- a/class_universal_report_parser__coll__graph.md5 +++ b/class_universal_report_parser__coll__graph.md5 @@ -1 +1 @@ -6ae2ae36eea0ce9a020916893890ce48 \ No newline at end of file +77621cd9b3f148b98b1c0c2ce929a351 \ No newline at end of file diff --git a/class_universal_report_parser__coll__graph.png b/class_universal_report_parser__coll__graph.png index 85f3c95a..02fb571c 100644 Binary files a/class_universal_report_parser__coll__graph.png and b/class_universal_report_parser__coll__graph.png differ diff --git a/class_universal_report_parser__inherit__graph.map b/class_universal_report_parser__inherit__graph.map index c873c83a..a7c5dd97 100644 --- a/class_universal_report_parser__inherit__graph.map +++ b/class_universal_report_parser__inherit__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_universal_report_parser__inherit__graph.md5 b/class_universal_report_parser__inherit__graph.md5 index 18ce6809..078a0db8 100644 --- a/class_universal_report_parser__inherit__graph.md5 +++ b/class_universal_report_parser__inherit__graph.md5 @@ -1 +1 @@ -6ae2ae36eea0ce9a020916893890ce48 \ No newline at end of file +6e5e7f853ac6bc17614d8031baec2670 \ No newline at end of file diff --git a/class_universal_report_parser__inherit__graph.png b/class_universal_report_parser__inherit__graph.png index 85f3c95a..02fb571c 100644 Binary files a/class_universal_report_parser__inherit__graph.png and b/class_universal_report_parser__inherit__graph.png differ diff --git a/class_usb_config_xtracter-members.html b/class_usb_config_xtracter-members.html index 7d758e70..d7990334 100644 --- a/class_usb_config_xtracter-members.html +++ b/class_usb_config_xtracter-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - - - - - - - - - - - - - + + + + + + + + + + + + + +
[legend]
@@ -122,9 +97,11 @@ Public Member Functions

Detailed Description

-

Definition at line 30 of file confdescparser.h.

+

Definition at line 30 of file confdescparser.h.

Member Function Documentation

- + +

◆ EndpointXtract()

+
@@ -176,7 +153,7 @@ Public Member Functions

Reimplemented in BulkOnly, BTD, ACM, HIDBoot< BOOT_PROTOCOL >, XBOXONE, FTDI, ADK, HIDUniversal, and HIDComposite.

-

Definition at line 35 of file confdescparser.h.

+

Definition at line 35 of file confdescparser.h.

@@ -188,7 +165,7 @@ Public Member Functions diff --git a/class_usb_config_xtracter__inherit__graph.map b/class_usb_config_xtracter__inherit__graph.map index a95fdf96..1645e7b7 100644 --- a/class_usb_config_xtracter__inherit__graph.map +++ b/class_usb_config_xtracter__inherit__graph.map @@ -1,16 +1,16 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + diff --git a/class_usb_config_xtracter__inherit__graph.md5 b/class_usb_config_xtracter__inherit__graph.md5 index 1d61e3cd..122b897f 100644 --- a/class_usb_config_xtracter__inherit__graph.md5 +++ b/class_usb_config_xtracter__inherit__graph.md5 @@ -1 +1 @@ -8b41492a27286a05ac2d4683d2b4d6c6 \ No newline at end of file +9c2a0c5b68bd54ead963169aff634d3f \ No newline at end of file diff --git a/class_usb_config_xtracter__inherit__graph.png b/class_usb_config_xtracter__inherit__graph.png index 7cb16ff6..56008785 100644 Binary files a/class_usb_config_xtracter__inherit__graph.png and b/class_usb_config_xtracter__inherit__graph.png differ diff --git a/class_w_i_i-members.html b/class_w_i_i-members.html index 3bc3840c..29d77c5e 100644 --- a/class_w_i_i-members.html +++ b/class_w_i_i-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- +
[legend]
@@ -107,13 +82,13 @@ Collaboration diagram for WII:
Collaboration graph
- - - - - - - + + + + + + +
[legend]
@@ -311,9 +286,11 @@ Additional Inherited Members

This BluetoothService class implements support for the Wiimote including the Nunchuck and Motion Plus extension.

It also support the Wii U Pro Controller.

-

Definition at line 56 of file Wii.h.

+

Definition at line 56 of file Wii.h.

Constructor & Destructor Documentation

- + +

◆ WII()

+
@@ -344,12 +321,14 @@ Additional Inherited Members -

Definition at line 85 of file Wii.cpp.

+

Definition at line 85 of file Wii.cpp.

Member Function Documentation

- + +

◆ disconnect()

+
@@ -373,11 +352,13 @@ Additional Inherited Members

Implements BluetoothService.

-

Definition at line 116 of file Wii.cpp.

+

Definition at line 116 of file Wii.cpp.

- + +

◆ getButtonPress()

+
@@ -400,11 +381,13 @@ Additional Inherited Members
Returns
getButtonPress(ButtonEnum b) will return a true as long as a button is held down, while getButtonClick(ButtonEnum b) will return true once for each button press.
-

Definition at line 1097 of file Wii.cpp.

+

Definition at line 1097 of file Wii.cpp.

- + +

◆ getButtonClick()

+
@@ -427,11 +410,13 @@ Additional Inherited Members
Returns
getButtonPress(ButtonEnum b) will return a true as long as a button is held down, while getButtonClick(ButtonEnum b) will return true once for each button press.
-

Definition at line 1104 of file Wii.cpp.

+

Definition at line 1104 of file Wii.cpp.

- + +

◆ pair()

+
@@ -454,11 +439,13 @@ Additional Inherited Members

Call this to start the pairing sequence with a controller

-

Definition at line 89 of file Wii.h.

+

Definition at line 89 of file Wii.h.

- + +

◆ getAnalogHat() [1/2]

+
@@ -479,11 +466,13 @@ Additional Inherited Members
Returns
Return the analog value in the range from approximately 25-230.
-

Definition at line 1115 of file Wii.cpp.

+

Definition at line 1115 of file Wii.cpp.

- + +

◆ getAnalogHat() [2/2]

+
@@ -504,11 +493,13 @@ Additional Inherited Members
Returns
Return the analog value in the range from approximately 800-3200.
-

Definition at line 1127 of file Wii.cpp.

+

Definition at line 1127 of file Wii.cpp.

- + +

◆ getPitch()

+
@@ -530,11 +521,13 @@ Additional Inherited Members

Pitch calculated from the Wiimote. A complimentary filter is used if the Motion Plus is connected.

Returns
Pitch in the range from 0-360.
-

Definition at line 110 of file Wii.h.

+

Definition at line 110 of file Wii.h.

- + +

◆ getRoll()

+
@@ -556,11 +549,13 @@ Additional Inherited Members

Roll calculated from the Wiimote. A complimentary filter is used if the Motion Plus is connected.

Returns
Roll in the range from 0-360.
-

Definition at line 120 of file Wii.h.

+

Definition at line 120 of file Wii.h.

- + +

◆ getYaw()

+
@@ -583,11 +578,13 @@ Additional Inherited Members

This is the yaw calculated by the gyro.

NOTE: This angle will drift a lot and is only available if the Motion Plus extension is connected.

Returns
The angle calculated using the gyro.
-

Definition at line 132 of file Wii.h.

+

Definition at line 132 of file Wii.h.

- + +

◆ setAllOff()

+
@@ -601,11 +598,13 @@ Additional Inherited Members

Used to set all LEDs and rumble off.

-

Definition at line 903 of file Wii.cpp.

+

Definition at line 903 of file Wii.cpp.

- + +

◆ setRumbleOff()

+
@@ -619,11 +618,13 @@ Additional Inherited Members

Turn off rumble.

-

Definition at line 909 of file Wii.cpp.

+

Definition at line 909 of file Wii.cpp.

- + +

◆ setRumbleOn()

+
@@ -637,11 +638,13 @@ Additional Inherited Members

Turn on rumble.

-

Definition at line 915 of file Wii.cpp.

+

Definition at line 915 of file Wii.cpp.

- + +

◆ setRumbleToggle()

+
@@ -655,11 +658,13 @@ Additional Inherited Members

Toggle rumble.

-

Definition at line 921 of file Wii.cpp.

+

Definition at line 921 of file Wii.cpp.

- + +

◆ setLedRaw()

+
@@ -679,11 +684,13 @@ Additional Inherited Members -

Definition at line 927 of file Wii.cpp.

+

Definition at line 927 of file Wii.cpp.

- + +

◆ setLedOff() [1/2]

+
@@ -705,11 +712,13 @@ Additional Inherited Members

Turn all LEDs off.

-

Definition at line 152 of file Wii.h.

+

Definition at line 152 of file Wii.h.

- + +

◆ setLedOff() [2/2]

+
@@ -729,11 +738,13 @@ Additional Inherited Members -

Definition at line 933 of file Wii.cpp.

+

Definition at line 933 of file Wii.cpp.

- + +

◆ setLedOn()

+
@@ -753,11 +764,13 @@ Additional Inherited Members -

Definition at line 939 of file Wii.cpp.

+

Definition at line 939 of file Wii.cpp.

- + +

◆ setLedToggle()

+
@@ -777,11 +790,13 @@ Additional Inherited Members -

Definition at line 949 of file Wii.cpp.

+

Definition at line 949 of file Wii.cpp.

- + +

◆ setLedStatus()

+
@@ -796,11 +811,13 @@ Additional Inherited Members

This will set the LEDs, so the user can see which connections are active.

The first LEDEnum indicate that the Wiimote is connected, the second LEDEnum indicate indicate that a Motion Plus is also connected the third LEDEnum will indicate that a Nunchuck controller is also connected.

-

Definition at line 955 of file Wii.cpp.

+

Definition at line 955 of file Wii.cpp.

- + +

◆ getBatteryLevel()

+
@@ -814,11 +831,13 @@ Additional Inherited Members

Return the battery level of the Wiimote.

Returns
The battery level in the range 0-255.
-

Definition at line 968 of file Wii.cpp.

+

Definition at line 968 of file Wii.cpp.

- + +

◆ getWiiState()

+
@@ -840,11 +859,13 @@ Additional Inherited Members

Return the Wiimote state.

Returns
See: http://wiibrew.org/wiki/Wiimote#0x20:_Status.
-

Definition at line 189 of file Wii.h.

+

Definition at line 189 of file Wii.h.

- + +

◆ getWiimotePitch()

+
@@ -866,11 +887,13 @@ Additional Inherited Members

Pitch and roll calculated from the accelerometer inside the Wiimote.

-

Definition at line 212 of file Wii.h.

+

Definition at line 212 of file Wii.h.

- + +

◆ getWiimoteRoll()

+
@@ -892,11 +915,13 @@ Additional Inherited Members

Pitch and roll calculated from the accelerometer inside the Wiimote.

-

Definition at line 216 of file Wii.h.

+

Definition at line 216 of file Wii.h.

- + +

◆ getNunchuckPitch()

+
@@ -918,11 +943,13 @@ Additional Inherited Members

Pitch and roll calculated from the accelerometer inside the Nunchuck.

-

Definition at line 224 of file Wii.h.

+

Definition at line 224 of file Wii.h.

- + +

◆ getNunchuckRoll()

+
@@ -944,11 +971,13 @@ Additional Inherited Members

Pitch and roll calculated from the accelerometer inside the Nunchuck.

-

Definition at line 228 of file Wii.h.

+

Definition at line 228 of file Wii.h.

- + +

◆ getWeight()

+
@@ -969,11 +998,13 @@ Additional Inherited Members
Returns
Returns the weight in kg.
-

Definition at line 1150 of file Wii.cpp.

+

Definition at line 1150 of file Wii.cpp.

- + +

◆ getTotalWeight()

+
@@ -987,11 +1018,13 @@ Additional Inherited Members

Used to get total weight on the Wii Balance Board.

Returns
Returns the weight in kg.
-

Definition at line 1163 of file Wii.cpp.

+

Definition at line 1163 of file Wii.cpp.

- + +

◆ getWeightRaw()

+
@@ -1020,11 +1053,13 @@ Additional Inherited Members
Returns
Returns the raw reading.
-

Definition at line 295 of file Wii.h.

+

Definition at line 295 of file Wii.h.

- + +

◆ IRinitialize()

+
@@ -1038,11 +1073,13 @@ Additional Inherited Members

Initialises the camera as per the steps from: http://wiibrew.org/wiki/Wiimote#IR_Camera

-

Definition at line 1173 of file Wii.cpp.

+

Definition at line 1173 of file Wii.cpp.

- + +

◆ getIRx1()

+
@@ -1064,11 +1101,13 @@ Additional Inherited Members

IR object 1 x-position read from the Wii IR camera.

Returns
The x-position of the object in the range 0-1023.
-

Definition at line 311 of file Wii.h.

+

Definition at line 311 of file Wii.h.

- + +

◆ getIRy1()

+
@@ -1090,11 +1129,13 @@ Additional Inherited Members

IR object 1 y-position read from the Wii IR camera.

Returns
The y-position of the object in the range 0-767.
-

Definition at line 319 of file Wii.h.

+

Definition at line 319 of file Wii.h.

- + +

◆ getIRs1()

+
@@ -1116,11 +1157,13 @@ Additional Inherited Members

IR object 1 size read from the Wii IR camera.

Returns
The size of the object in the range 0-15.
-

Definition at line 327 of file Wii.h.

+

Definition at line 327 of file Wii.h.

- + +

◆ getIRx2()

+
@@ -1142,11 +1185,13 @@ Additional Inherited Members

IR object 2 x-position read from the Wii IR camera.

Returns
The x-position of the object in the range 0-1023.
-

Definition at line 335 of file Wii.h.

+

Definition at line 335 of file Wii.h.

- + +

◆ getIRy2()

+
@@ -1168,11 +1213,13 @@ Additional Inherited Members

IR object 2 y-position read from the Wii IR camera.

Returns
The y-position of the object in the range 0-767.
-

Definition at line 343 of file Wii.h.

+

Definition at line 343 of file Wii.h.

- + +

◆ getIRs2()

+
@@ -1194,11 +1241,13 @@ Additional Inherited Members

IR object 2 size read from the Wii IR camera.

Returns
The size of the object in the range 0-15.
-

Definition at line 351 of file Wii.h.

+

Definition at line 351 of file Wii.h.

- + +

◆ getIRx3()

+
@@ -1220,11 +1269,13 @@ Additional Inherited Members

IR object 3 x-position read from the Wii IR camera.

Returns
The x-position of the object in the range 0-1023.
-

Definition at line 359 of file Wii.h.

+

Definition at line 359 of file Wii.h.

- + +

◆ getIRy3()

+
@@ -1246,11 +1297,13 @@ Additional Inherited Members

IR object 3 y-position read from the Wii IR camera.

Returns
The y-position of the object in the range 0-767.
-

Definition at line 367 of file Wii.h.

+

Definition at line 367 of file Wii.h.

- + +

◆ getIRs3()

+
@@ -1272,11 +1325,13 @@ Additional Inherited Members

IR object 3 size read from the Wii IR camera.

Returns
The size of the object in the range 0-15.
-

Definition at line 375 of file Wii.h.

+

Definition at line 375 of file Wii.h.

- + +

◆ getIRx4()

+
@@ -1298,11 +1353,13 @@ Additional Inherited Members

IR object 4 x-position read from the Wii IR camera.

Returns
The x-position of the object in the range 0-1023.
-

Definition at line 383 of file Wii.h.

+

Definition at line 383 of file Wii.h.

- + +

◆ getIRy4()

+
@@ -1324,11 +1381,13 @@ Additional Inherited Members

IR object 4 y-position read from the Wii IR camera.

Returns
The y-position of the object in the range 0-767.
-

Definition at line 391 of file Wii.h.

+

Definition at line 391 of file Wii.h.

- + +

◆ getIRs4()

+
@@ -1350,11 +1409,13 @@ Additional Inherited Members

IR object 4 size read from the Wii IR camera.

Returns
The size of the object in the range 0-15.
-

Definition at line 399 of file Wii.h.

+

Definition at line 399 of file Wii.h.

- + +

◆ isIRCameraEnabled()

+
@@ -1376,11 +1437,13 @@ Additional Inherited Members

Use this to check if the camera is enabled or not. If not call WII::IRinitialize to initialize the IR camera.

Returns
True if it's enabled, false if not.
-

Definition at line 408 of file Wii.h.

+

Definition at line 408 of file Wii.h.

- + +

◆ ACLData()

+
@@ -1410,11 +1473,13 @@ Additional Inherited Members

Implements BluetoothService.

-

Definition at line 133 of file Wii.cpp.

+

Definition at line 133 of file Wii.cpp.

- + +

◆ Run()

+
@@ -1438,11 +1503,13 @@ Additional Inherited Members

Implements BluetoothService.

-

Definition at line 725 of file Wii.cpp.

+

Definition at line 725 of file Wii.cpp.

- + +

◆ Reset()

+
@@ -1466,11 +1533,13 @@ Additional Inherited Members

Implements BluetoothService.

-

Definition at line 101 of file Wii.cpp.

+

Definition at line 101 of file Wii.cpp.

- + +

◆ onInit()

+
@@ -1494,12 +1563,14 @@ Additional Inherited Members

Implements BluetoothService.

-

Definition at line 1139 of file Wii.cpp.

+

Definition at line 1139 of file Wii.cpp.

Member Data Documentation

- + +

◆ wiimoteConnected

+
@@ -1510,11 +1581,13 @@ Additional Inherited Members

Variable used to indicate if a Wiimote is connected.

-

Definition at line 191 of file Wii.h.

+

Definition at line 191 of file Wii.h.

- + +

◆ nunchuckConnected

+
@@ -1525,11 +1598,13 @@ Additional Inherited Members

Variable used to indicate if a Nunchuck controller is connected.

-

Definition at line 198 of file Wii.h.

+

Definition at line 198 of file Wii.h.

- + +

◆ motionPlusConnected

+
@@ -1540,11 +1615,13 @@ Additional Inherited Members

Variable used to indicate if a Nunchuck controller is connected.

-

Definition at line 200 of file Wii.h.

+

Definition at line 200 of file Wii.h.

- + +

◆ wiiUProControllerConnected

+
@@ -1555,11 +1632,13 @@ Additional Inherited Members

Variable used to indicate if a Wii U Pro controller is connected.

-

Definition at line 202 of file Wii.h.

+

Definition at line 202 of file Wii.h.

- + +

◆ wiiBalanceBoardConnected

+
@@ -1570,11 +1649,13 @@ Additional Inherited Members

Variable used to indicate if a Wii Balance Board is connected.

-

Definition at line 204 of file Wii.h.

+

Definition at line 204 of file Wii.h.

- + +

◆ accXwiimote

+
@@ -1585,11 +1666,13 @@ Additional Inherited Members

Accelerometer values used to calculate pitch and roll.

-

Definition at line 230 of file Wii.h.

+

Definition at line 230 of file Wii.h.

- + +

◆ accYwiimote

+
@@ -1600,11 +1683,13 @@ Additional Inherited Members

Accelerometer values used to calculate pitch and roll.

-

Definition at line 230 of file Wii.h.

+

Definition at line 230 of file Wii.h.

- + +

◆ accZwiimote

+
@@ -1615,11 +1700,13 @@ Additional Inherited Members

Accelerometer values used to calculate pitch and roll.

-

Definition at line 230 of file Wii.h.

+

Definition at line 230 of file Wii.h.

- + +

◆ accXnunchuck

+
@@ -1630,11 +1717,13 @@ Additional Inherited Members

Accelerometer values used to calculate pitch and roll.

-

Definition at line 236 of file Wii.h.

+

Definition at line 236 of file Wii.h.

- + +

◆ accYnunchuck

+
@@ -1645,11 +1734,13 @@ Additional Inherited Members

Accelerometer values used to calculate pitch and roll.

-

Definition at line 236 of file Wii.h.

+

Definition at line 236 of file Wii.h.

- + +

◆ accZnunchuck

+
@@ -1660,11 +1751,13 @@ Additional Inherited Members

Accelerometer values used to calculate pitch and roll.

-

Definition at line 236 of file Wii.h.

+

Definition at line 236 of file Wii.h.

- + +

◆ gyroPitch

+
@@ -1675,11 +1768,13 @@ Additional Inherited Members

This is the pitch calculated by the gyro - use this to tune WII::pitchGyroScale.

-

Definition at line 241 of file Wii.h.

+

Definition at line 241 of file Wii.h.

- + +

◆ gyroRoll

+
@@ -1690,11 +1785,13 @@ Additional Inherited Members

This is the roll calculated by the gyro - use this to tune WII::rollGyroScale.

-

Definition at line 243 of file Wii.h.

+

Definition at line 243 of file Wii.h.

- + +

◆ gyroYaw

+
@@ -1705,11 +1802,13 @@ Additional Inherited Members

This is the yaw calculated by the gyro - use this to tune WII::yawGyroScale.

-

Definition at line 245 of file Wii.h.

+

Definition at line 245 of file Wii.h.

- + +

◆ pitchGyroSpeed

+
@@ -1720,11 +1819,13 @@ Additional Inherited Members

The speed in deg/s from the gyro.

-

Definition at line 249 of file Wii.h.

+

Definition at line 249 of file Wii.h.

- + +

◆ rollGyroSpeed

+
@@ -1735,11 +1836,13 @@ Additional Inherited Members

The speed in deg/s from the gyro.

-

Definition at line 250 of file Wii.h.

+

Definition at line 250 of file Wii.h.

- + +

◆ yawGyroSpeed

+
@@ -1750,11 +1853,13 @@ Additional Inherited Members

The speed in deg/s from the gyro.

-

Definition at line 251 of file Wii.h.

+

Definition at line 251 of file Wii.h.

- + +

◆ pitchGyroScale

+
@@ -1765,11 +1870,13 @@ Additional Inherited Members

You might need to fine-tune these values.

-

Definition at line 256 of file Wii.h.

+

Definition at line 256 of file Wii.h.

- + +

◆ rollGyroScale

+
@@ -1780,11 +1887,13 @@ Additional Inherited Members

You might need to fine-tune these values.

-

Definition at line 257 of file Wii.h.

+

Definition at line 257 of file Wii.h.

- + +

◆ yawGyroScale

+
@@ -1795,11 +1904,13 @@ Additional Inherited Members

You might need to fine-tune these values.

-

Definition at line 258 of file Wii.h.

+

Definition at line 258 of file Wii.h.

- + +

◆ gyroYawRaw

+
@@ -1810,11 +1921,13 @@ Additional Inherited Members

Raw value read directly from the Motion Plus.

-

Definition at line 263 of file Wii.h.

+

Definition at line 263 of file Wii.h.

- + +

◆ gyroRollRaw

+
@@ -1825,11 +1938,13 @@ Additional Inherited Members

Raw value read directly from the Motion Plus.

-

Definition at line 264 of file Wii.h.

+

Definition at line 264 of file Wii.h.

- + +

◆ gyroPitchRaw

+
@@ -1840,11 +1955,13 @@ Additional Inherited Members

Raw value read directly from the Motion Plus.

-

Definition at line 265 of file Wii.h.

+

Definition at line 265 of file Wii.h.

- + +

◆ gyroYawZero

+
@@ -1855,11 +1972,13 @@ Additional Inherited Members

These values are set when the controller is first initialized.

-

Definition at line 270 of file Wii.h.

+

Definition at line 270 of file Wii.h.

- + +

◆ gyroRollZero

+
@@ -1870,11 +1989,13 @@ Additional Inherited Members

These values are set when the controller is first initialized.

-

Definition at line 271 of file Wii.h.

+

Definition at line 271 of file Wii.h.

- + +

◆ gyroPitchZero

+
@@ -1885,7 +2006,7 @@ Additional Inherited Members

These values are set when the controller is first initialized.

-

Definition at line 272 of file Wii.h.

+

Definition at line 272 of file Wii.h.

@@ -1898,7 +2019,7 @@ Additional Inherited Members diff --git a/class_w_i_i__coll__graph.map b/class_w_i_i__coll__graph.map index d3abf026..f0c52a3e 100644 --- a/class_w_i_i__coll__graph.map +++ b/class_w_i_i__coll__graph.map @@ -1,9 +1,9 @@ - - - - - - - + + + + + + + diff --git a/class_w_i_i__coll__graph.md5 b/class_w_i_i__coll__graph.md5 index 32ea2769..a10fe2cb 100644 --- a/class_w_i_i__coll__graph.md5 +++ b/class_w_i_i__coll__graph.md5 @@ -1 +1 @@ -e2fa40aab171687d763b41a969505c68 \ No newline at end of file +e1501afe750d6b78ef0a9e4e2bae788b \ No newline at end of file diff --git a/class_w_i_i__coll__graph.png b/class_w_i_i__coll__graph.png index 6928eefc..43744ae1 100644 Binary files a/class_w_i_i__coll__graph.png and b/class_w_i_i__coll__graph.png differ diff --git a/class_w_i_i__inherit__graph.map b/class_w_i_i__inherit__graph.map index 95a09884..012edda3 100644 --- a/class_w_i_i__inherit__graph.map +++ b/class_w_i_i__inherit__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_w_i_i__inherit__graph.md5 b/class_w_i_i__inherit__graph.md5 index 6b41428e..7b7bcaf0 100644 --- a/class_w_i_i__inherit__graph.md5 +++ b/class_w_i_i__inherit__graph.md5 @@ -1 +1 @@ -0f2ab569d0b7006cfff8d64fe9f9fda1 \ No newline at end of file +e76134827ecba3876499802eaee4ce30 \ No newline at end of file diff --git a/class_w_i_i__inherit__graph.png b/class_w_i_i__inherit__graph.png index 5f2cbe2d..fa1371cf 100644 Binary files a/class_w_i_i__inherit__graph.png and b/class_w_i_i__inherit__graph.png differ diff --git a/class_x_b_o_x_o_l_d-members.html b/class_x_b_o_x_o_l_d-members.html index d04599e4..ee08df6e 100644 --- a/class_x_b_o_x_o_l_d-members.html +++ b/class_x_b_o_x_o_l_d-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- +
[legend]
@@ -108,10 +83,10 @@ Collaboration diagram for XBOXOLD:
Collaboration graph
- - - - + + + +
[legend]
@@ -172,9 +147,11 @@ Protected Attributes

Detailed Description

This class implements support for a the original Xbox controller via USB.

-

Definition at line 46 of file XBOXOLD.h.

+

Definition at line 46 of file XBOXOLD.h.

Constructor & Destructor Documentation

- + +

◆ XBOXOLD()

+
@@ -194,12 +171,14 @@ Protected Attributes -

Definition at line 47 of file XBOXOLD.cpp.

+

Definition at line 47 of file XBOXOLD.cpp.

Member Function Documentation

- + +

◆ Init()

+
@@ -248,11 +227,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 63 of file XBOXOLD.cpp.

+

Definition at line 63 of file XBOXOLD.cpp.

- + +

◆ Release()

+
@@ -276,11 +257,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 237 of file XBOXOLD.cpp.

+

Definition at line 237 of file XBOXOLD.cpp.

- + +

◆ Poll()

+
@@ -304,11 +287,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 245 of file XBOXOLD.cpp.

+

Definition at line 245 of file XBOXOLD.cpp.

- + +

◆ GetAddress()

+
@@ -332,11 +317,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 78 of file XBOXOLD.h.

+

Definition at line 78 of file XBOXOLD.h.

- + +

◆ isReady()

+
@@ -358,11 +345,13 @@ Protected Attributes

Used to check if the controller has been initialized.

Returns
True if it's ready.
-

Definition at line 86 of file XBOXOLD.h.

+

Definition at line 86 of file XBOXOLD.h.

- + +

◆ VIDPIDOK()

+
@@ -404,11 +393,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 96 of file XBOXOLD.h.

+

Definition at line 96 of file XBOXOLD.h.

- + +

◆ getButtonPress()

+
@@ -431,11 +422,13 @@ Protected Attributes
Returns
getButtonClick(ButtonEnum b) will return a bool, while getButtonPress(ButtonEnum b) will return a byte if reading L2 or R2.
-

Definition at line 295 of file XBOXOLD.cpp.

+

Definition at line 295 of file XBOXOLD.cpp.

- + +

◆ getButtonClick()

+
@@ -458,11 +451,13 @@ Protected Attributes
Returns
getButtonClick(ButtonEnum b) will return a bool, while getButtonPress(ButtonEnum b) will return a byte if reading L2 or R2.
-

Definition at line 302 of file XBOXOLD.cpp.

+

Definition at line 302 of file XBOXOLD.cpp.

- + +

◆ getAnalogHat()

+
@@ -483,11 +478,13 @@ Protected Attributes
Returns
Returns a signed 16-bit integer.
-

Definition at line 317 of file XBOXOLD.cpp.

+

Definition at line 317 of file XBOXOLD.cpp.

- + +

◆ setRumbleOff()

+
@@ -509,11 +506,13 @@ Protected Attributes

Turn rumble off the controller.

-

Definition at line 125 of file XBOXOLD.h.

+

Definition at line 125 of file XBOXOLD.h.

- + +

◆ setRumbleOn()

+
@@ -544,11 +543,13 @@ Protected Attributes -

Definition at line 327 of file XBOXOLD.cpp.

+

Definition at line 327 of file XBOXOLD.cpp.

- + +

◆ attachOnInit()

+
@@ -576,12 +577,14 @@ Protected Attributes -

Definition at line 139 of file XBOXOLD.h.

+

Definition at line 139 of file XBOXOLD.h.

Member Data Documentation

- + +

◆ XboxConnected

+
@@ -592,11 +595,13 @@ Protected Attributes

True if a Xbox controller is connected.

-

Definition at line 141 of file XBOXOLD.h.

+

Definition at line 141 of file XBOXOLD.h.

- + +

◆ pUsb

+
@@ -615,11 +620,13 @@ Protected Attributes

Pointer to USB class instance.

-

Definition at line 149 of file XBOXOLD.h.

+

Definition at line 149 of file XBOXOLD.h.

- + +

◆ bAddress

+
@@ -638,11 +645,13 @@ Protected Attributes

Device address.

-

Definition at line 151 of file XBOXOLD.h.

+

Definition at line 151 of file XBOXOLD.h.

- + +

◆ epInfo

+
@@ -661,7 +670,7 @@ Protected Attributes

Endpoint info structure.

-

Definition at line 153 of file XBOXOLD.h.

+

Definition at line 153 of file XBOXOLD.h.

@@ -674,7 +683,7 @@ Protected Attributes diff --git a/class_x_b_o_x_o_l_d__coll__graph.map b/class_x_b_o_x_o_l_d__coll__graph.map index d42fe55d..15595386 100644 --- a/class_x_b_o_x_o_l_d__coll__graph.map +++ b/class_x_b_o_x_o_l_d__coll__graph.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/class_x_b_o_x_o_l_d__coll__graph.md5 b/class_x_b_o_x_o_l_d__coll__graph.md5 index c02a188a..42b7005f 100644 --- a/class_x_b_o_x_o_l_d__coll__graph.md5 +++ b/class_x_b_o_x_o_l_d__coll__graph.md5 @@ -1 +1 @@ -3285ca35607fc26fc3c6347499cd29e6 \ No newline at end of file +c0023cd1084e2018409a7a9723373210 \ No newline at end of file diff --git a/class_x_b_o_x_o_l_d__coll__graph.png b/class_x_b_o_x_o_l_d__coll__graph.png index e1f1ed8b..980c7046 100644 Binary files a/class_x_b_o_x_o_l_d__coll__graph.png and b/class_x_b_o_x_o_l_d__coll__graph.png differ diff --git a/class_x_b_o_x_o_l_d__inherit__graph.map b/class_x_b_o_x_o_l_d__inherit__graph.map index aadd3be4..56c84bae 100644 --- a/class_x_b_o_x_o_l_d__inherit__graph.map +++ b/class_x_b_o_x_o_l_d__inherit__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_x_b_o_x_o_l_d__inherit__graph.md5 b/class_x_b_o_x_o_l_d__inherit__graph.md5 index 73dafbc3..de29cd5b 100644 --- a/class_x_b_o_x_o_l_d__inherit__graph.md5 +++ b/class_x_b_o_x_o_l_d__inherit__graph.md5 @@ -1 +1 @@ -1eeb2bcd708d5b17ef18f534c5633a29 \ No newline at end of file +8ea0f3477d33c1fccfccfb30f84bc05e \ No newline at end of file diff --git a/class_x_b_o_x_o_l_d__inherit__graph.png b/class_x_b_o_x_o_l_d__inherit__graph.png index 3a601a30..32c56a69 100644 Binary files a/class_x_b_o_x_o_l_d__inherit__graph.png and b/class_x_b_o_x_o_l_d__inherit__graph.png differ diff --git a/class_x_b_o_x_o_n_e-members.html b/class_x_b_o_x_o_n_e-members.html index 96c22c5e..ba23a712 100644 --- a/class_x_b_o_x_o_n_e-members.html +++ b/class_x_b_o_x_o_n_e-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - + +
[legend]
@@ -110,11 +85,11 @@ Collaboration diagram for XBOXONE:
Collaboration graph
- - - - - + + + + +
[legend]
@@ -191,9 +166,11 @@ Protected Attributes

Detailed Description

This class implements support for a Xbox ONE controller connected via USB.

-

Definition at line 66 of file XBOXONE.h.

+

Definition at line 66 of file XBOXONE.h.

Constructor & Destructor Documentation

- + +

◆ XBOXONE()

+
@@ -213,12 +190,14 @@ Protected Attributes -

Definition at line 27 of file XBOXONE.cpp.

+

Definition at line 27 of file XBOXONE.cpp.

Member Function Documentation

- + +

◆ Init()

+
@@ -267,11 +246,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 46 of file XBOXONE.cpp.

+

Definition at line 46 of file XBOXONE.cpp.

- + +

◆ Release()

+
@@ -295,11 +276,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 286 of file XBOXONE.cpp.

+

Definition at line 286 of file XBOXONE.cpp.

- + +

◆ Poll()

+
@@ -323,11 +306,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 300 of file XBOXONE.cpp.

+

Definition at line 300 of file XBOXONE.cpp.

- + +

◆ GetAddress()

+
@@ -351,11 +336,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 98 of file XBOXONE.h.

+

Definition at line 98 of file XBOXONE.h.

- + +

◆ isReady()

+
@@ -377,11 +364,13 @@ Protected Attributes

Used to check if the controller has been initialized.

Returns
True if it's ready.
-

Definition at line 106 of file XBOXONE.h.

+

Definition at line 106 of file XBOXONE.h.

- + +

◆ readPollInterval()

+
@@ -403,11 +392,13 @@ Protected Attributes

Read the poll interval taken from the endpoint descriptors.

Returns
The poll interval in ms.
-

Definition at line 114 of file XBOXONE.h.

+

Definition at line 114 of file XBOXONE.h.

- + +

◆ VIDPIDOK()

+
@@ -449,11 +440,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 124 of file XBOXONE.h.

+

Definition at line 124 of file XBOXONE.h.

- + +

◆ getButtonPress()

+
@@ -476,11 +469,13 @@ Protected Attributes
Returns
getButtonClick(ButtonEnum b) will return a bool, while getButtonPress(ButtonEnum b) will return a word if reading L2 or R2.
-

Definition at line 380 of file XBOXONE.cpp.

+

Definition at line 380 of file XBOXONE.cpp.

- + +

◆ getButtonClick()

+
@@ -503,11 +498,13 @@ Protected Attributes
Returns
getButtonClick(ButtonEnum b) will return a bool, while getButtonPress(ButtonEnum b) will return a word if reading L2 or R2.
-

Definition at line 388 of file XBOXONE.cpp.

+

Definition at line 388 of file XBOXONE.cpp.

- + +

◆ getAnalogHat()

+
@@ -528,11 +525,13 @@ Protected Attributes
Returns
Returns a signed 16-bit integer.
-

Definition at line 408 of file XBOXONE.cpp.

+

Definition at line 408 of file XBOXONE.cpp.

- + +

◆ attachOnInit()

+
@@ -560,11 +559,13 @@ Protected Attributes -

Definition at line 157 of file XBOXONE.h.

+

Definition at line 157 of file XBOXONE.h.

- + +

◆ setRumbleOff()

+
@@ -578,11 +579,13 @@ Protected Attributes

Used to set the rumble off.

-

Definition at line 450 of file XBOXONE.cpp.

+

Definition at line 450 of file XBOXONE.cpp.

- + +

◆ setRumbleOn()

+
@@ -627,11 +630,13 @@ Protected Attributes -

Definition at line 472 of file XBOXONE.cpp.

+

Definition at line 472 of file XBOXONE.cpp.

- + +

◆ EndpointXtract()

+
@@ -693,11 +698,13 @@ Protected Attributes

Reimplemented from UsbConfigXtracter.

-

Definition at line 239 of file XBOXONE.cpp.

+

Definition at line 239 of file XBOXONE.cpp.

- + +

◆ PrintEndpointDescriptor()

+
@@ -725,12 +732,14 @@ Protected Attributes -

Definition at line 265 of file XBOXONE.cpp.

+

Definition at line 265 of file XBOXONE.cpp.

Member Data Documentation

- + +

◆ XboxOneConnected

+
@@ -741,11 +750,13 @@ Protected Attributes

True if a Xbox ONE controller is connected.

-

Definition at line 175 of file XBOXONE.h.

+

Definition at line 175 of file XBOXONE.h.

- + +

◆ pUsb

+
@@ -764,11 +775,13 @@ Protected Attributes

Pointer to USB class instance.

-

Definition at line 179 of file XBOXONE.h.

+

Definition at line 179 of file XBOXONE.h.

- + +

◆ bAddress

+
@@ -787,11 +800,13 @@ Protected Attributes

Device address.

-

Definition at line 181 of file XBOXONE.h.

+

Definition at line 181 of file XBOXONE.h.

- + +

◆ epInfo

+
@@ -810,11 +825,13 @@ Protected Attributes

Endpoint info structure.

-

Definition at line 183 of file XBOXONE.h.

+

Definition at line 183 of file XBOXONE.h.

- + +

◆ bConfNum

+
@@ -833,11 +850,13 @@ Protected Attributes

Configuration number.

-

Definition at line 186 of file XBOXONE.h.

+

Definition at line 186 of file XBOXONE.h.

- + +

◆ bNumEP

+
@@ -856,11 +875,13 @@ Protected Attributes

Total number of endpoints in the configuration.

-

Definition at line 188 of file XBOXONE.h.

+

Definition at line 188 of file XBOXONE.h.

- + +

◆ qNextPollTime

+
@@ -879,7 +900,7 @@ Protected Attributes

Next poll time based on poll interval taken from the USB descriptor.

-

Definition at line 190 of file XBOXONE.h.

+

Definition at line 190 of file XBOXONE.h.

@@ -892,7 +913,7 @@ Protected Attributes diff --git a/class_x_b_o_x_o_n_e__coll__graph.map b/class_x_b_o_x_o_n_e__coll__graph.map index 81ce6aa5..5593ee1c 100644 --- a/class_x_b_o_x_o_n_e__coll__graph.map +++ b/class_x_b_o_x_o_n_e__coll__graph.map @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/class_x_b_o_x_o_n_e__coll__graph.md5 b/class_x_b_o_x_o_n_e__coll__graph.md5 index d3362d25..11a3d6d9 100644 --- a/class_x_b_o_x_o_n_e__coll__graph.md5 +++ b/class_x_b_o_x_o_n_e__coll__graph.md5 @@ -1 +1 @@ -ab6103dfda6af6e334c7e58ac7721ece \ No newline at end of file +685a1b999dfc021cbeace7d73ca5f08c \ No newline at end of file diff --git a/class_x_b_o_x_o_n_e__coll__graph.png b/class_x_b_o_x_o_n_e__coll__graph.png index e7222c5b..bb859741 100644 Binary files a/class_x_b_o_x_o_n_e__coll__graph.png and b/class_x_b_o_x_o_n_e__coll__graph.png differ diff --git a/class_x_b_o_x_o_n_e__inherit__graph.map b/class_x_b_o_x_o_n_e__inherit__graph.map index 44cd7708..b6551e61 100644 --- a/class_x_b_o_x_o_n_e__inherit__graph.map +++ b/class_x_b_o_x_o_n_e__inherit__graph.map @@ -1,4 +1,4 @@ - - + + diff --git a/class_x_b_o_x_o_n_e__inherit__graph.md5 b/class_x_b_o_x_o_n_e__inherit__graph.md5 index 5e155b32..3e4c3048 100644 --- a/class_x_b_o_x_o_n_e__inherit__graph.md5 +++ b/class_x_b_o_x_o_n_e__inherit__graph.md5 @@ -1 +1 @@ -d14ff9b240aab210984df810f6df378d \ No newline at end of file +01199dc77ff7dcdfb5dccdc4b3c6381b \ No newline at end of file diff --git a/class_x_b_o_x_o_n_e__inherit__graph.png b/class_x_b_o_x_o_n_e__inherit__graph.png index 36068495..1594c049 100644 Binary files a/class_x_b_o_x_o_n_e__inherit__graph.png and b/class_x_b_o_x_o_n_e__inherit__graph.png differ diff --git a/class_x_b_o_x_o_n_e_s_b_t-members.html b/class_x_b_o_x_o_n_e_s_b_t-members.html index 6685b6e3..76dd01ef 100644 --- a/class_x_b_o_x_o_n_e_s_b_t-members.html +++ b/class_x_b_o_x_o_n_e_s_b_t-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - - + + +
[legend]
@@ -108,15 +83,15 @@ Collaboration diagram for XBOXONESBT:
Collaboration graph
- - - - - - - - - + + + + + + + + +
[legend]
@@ -216,9 +191,11 @@ Additional Inherited Members

Detailed Description

This class implements support for the Xbox One S controller via Bluetooth. It uses the BTHID class for all the Bluetooth communication.

-

Definition at line 28 of file XBOXONESBT.h.

+

Definition at line 28 of file XBOXONESBT.h.

Constructor & Destructor Documentation

- + +

◆ XBOXONESBT()

+
@@ -257,12 +234,14 @@ Additional Inherited Members -

Definition at line 35 of file XBOXONESBT.h.

+

Definition at line 35 of file XBOXONESBT.h.

Member Function Documentation

- + +

◆ connected()

+
@@ -284,11 +263,13 @@ Additional Inherited Members

Used to check if a Xbox One S controller is connected.

Returns
Returns true if it is connected.
-

Definition at line 45 of file XBOXONESBT.h.

+

Definition at line 45 of file XBOXONESBT.h.

- + +

◆ ParseBTHIDData()

+
@@ -329,11 +310,13 @@ Additional Inherited Members

Reimplemented from BTHID.

-

Definition at line 56 of file XBOXONESBT.h.

+

Definition at line 56 of file XBOXONESBT.h.

- + +

◆ OnInitBTHID()

+
@@ -357,11 +340,13 @@ Additional Inherited Members

Reimplemented from BTHID.

-

Definition at line 65 of file XBOXONESBT.h.

+

Definition at line 65 of file XBOXONESBT.h.

- + +

◆ ResetBTHID()

+
@@ -385,7 +370,7 @@ Additional Inherited Members

Reimplemented from BTHID.

-

Definition at line 72 of file XBOXONESBT.h.

+

Definition at line 72 of file XBOXONESBT.h.

@@ -397,7 +382,7 @@ Additional Inherited Members diff --git a/class_x_b_o_x_o_n_e_s_b_t__coll__graph.map b/class_x_b_o_x_o_n_e_s_b_t__coll__graph.map index 105bb353..dede758a 100644 --- a/class_x_b_o_x_o_n_e_s_b_t__coll__graph.map +++ b/class_x_b_o_x_o_n_e_s_b_t__coll__graph.map @@ -1,11 +1,11 @@ - - - - - - - - - + + + + + + + + + diff --git a/class_x_b_o_x_o_n_e_s_b_t__coll__graph.md5 b/class_x_b_o_x_o_n_e_s_b_t__coll__graph.md5 index 16eeb07d..927d8a61 100644 --- a/class_x_b_o_x_o_n_e_s_b_t__coll__graph.md5 +++ b/class_x_b_o_x_o_n_e_s_b_t__coll__graph.md5 @@ -1 +1 @@ -d0f53f539e449721da09627ae39bd54f \ No newline at end of file +6c9a21fa0883371d3ba385960cfc9cc3 \ No newline at end of file diff --git a/class_x_b_o_x_o_n_e_s_b_t__coll__graph.png b/class_x_b_o_x_o_n_e_s_b_t__coll__graph.png index 0d481286..591895f9 100644 Binary files a/class_x_b_o_x_o_n_e_s_b_t__coll__graph.png and b/class_x_b_o_x_o_n_e_s_b_t__coll__graph.png differ diff --git a/class_x_b_o_x_o_n_e_s_b_t__inherit__graph.map b/class_x_b_o_x_o_n_e_s_b_t__inherit__graph.map index 9f195fed..718b6814 100644 --- a/class_x_b_o_x_o_n_e_s_b_t__inherit__graph.map +++ b/class_x_b_o_x_o_n_e_s_b_t__inherit__graph.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/class_x_b_o_x_o_n_e_s_b_t__inherit__graph.md5 b/class_x_b_o_x_o_n_e_s_b_t__inherit__graph.md5 index 57c5c466..8f8b21ab 100644 --- a/class_x_b_o_x_o_n_e_s_b_t__inherit__graph.md5 +++ b/class_x_b_o_x_o_n_e_s_b_t__inherit__graph.md5 @@ -1 +1 @@ -e1573688b319ec5ee68fc12f1dcd9eb5 \ No newline at end of file +836e0a5f00181bd888f2ff751c3dbc59 \ No newline at end of file diff --git a/class_x_b_o_x_o_n_e_s_b_t__inherit__graph.png b/class_x_b_o_x_o_n_e_s_b_t__inherit__graph.png index 4411883e..8451e22a 100644 Binary files a/class_x_b_o_x_o_n_e_s_b_t__inherit__graph.png and b/class_x_b_o_x_o_n_e_s_b_t__inherit__graph.png differ diff --git a/class_x_b_o_x_o_n_e_s_parser-members.html b/class_x_b_o_x_o_n_e_s_parser-members.html index 8b22257f..9097fc73 100644 --- a/class_x_b_o_x_o_n_e_s_parser-members.html +++ b/class_x_b_o_x_o_n_e_s_parser-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- +
[legend]
@@ -125,9 +100,11 @@ Protected Member Functions

Detailed Description

This class parses all the data sent by the Xbox One S controller

-

Definition at line 54 of file XBOXONESParser.h.

+

Definition at line 54 of file XBOXONESParser.h.

Constructor & Destructor Documentation

- + +

◆ XBOXONESParser()

+
@@ -149,12 +126,14 @@ Protected Member Functions

Constructor for the XBOXONESParser class.

-

Definition at line 57 of file XBOXONESParser.h.

+

Definition at line 57 of file XBOXONESParser.h.

Member Function Documentation

- + +

◆ getButtonPress()

+
@@ -177,11 +156,13 @@ Protected Member Functions
Returns
getButtonPress(ButtonEnum b) will return a true as long as a button is held down, while getButtonClick(ButtonEnum b) will return true once for each button press.
-

Definition at line 72 of file XBOXONESParser.cpp.

+

Definition at line 72 of file XBOXONESParser.cpp.

- + +

◆ getButtonClick()

+
@@ -204,11 +185,13 @@ Protected Member Functions
Returns
getButtonPress(ButtonEnum b) will return a true as long as a button is held down, while getButtonClick(ButtonEnum b) will return true once for each button press.
-

Definition at line 84 of file XBOXONESParser.cpp.

+

Definition at line 84 of file XBOXONESParser.cpp.

- + +

◆ getAnalogHat()

+
@@ -229,11 +212,13 @@ Protected Member Functions
Returns
Return the analog value as a 16-bit signed integer.
-

Definition at line 108 of file XBOXONESParser.cpp.

+

Definition at line 108 of file XBOXONESParser.cpp.

- + +

◆ Parse()

+
@@ -276,11 +261,13 @@ Protected Member Functions -

Definition at line 112 of file XBOXONESParser.cpp.

+

Definition at line 112 of file XBOXONESParser.cpp.

- + +

◆ Reset()

+
@@ -302,7 +289,7 @@ Protected Member Functions

Used to reset the different buffers to their default values

-

Definition at line 171 of file XBOXONESParser.cpp.

+

Definition at line 171 of file XBOXONESParser.cpp.

@@ -315,7 +302,7 @@ Protected Member Functions diff --git a/class_x_b_o_x_o_n_e_s_parser__inherit__graph.map b/class_x_b_o_x_o_n_e_s_parser__inherit__graph.map index c66c7937..6cd41af7 100644 --- a/class_x_b_o_x_o_n_e_s_parser__inherit__graph.map +++ b/class_x_b_o_x_o_n_e_s_parser__inherit__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_x_b_o_x_o_n_e_s_parser__inherit__graph.md5 b/class_x_b_o_x_o_n_e_s_parser__inherit__graph.md5 index fd76db55..c3061ea0 100644 --- a/class_x_b_o_x_o_n_e_s_parser__inherit__graph.md5 +++ b/class_x_b_o_x_o_n_e_s_parser__inherit__graph.md5 @@ -1 +1 @@ -a1e83baf59aaaef04fff9db54fd642ca \ No newline at end of file +820f401952cf618eb033d9b8dc7fdae8 \ No newline at end of file diff --git a/class_x_b_o_x_o_n_e_s_parser__inherit__graph.png b/class_x_b_o_x_o_n_e_s_parser__inherit__graph.png index ef9c138a..7087d71e 100644 Binary files a/class_x_b_o_x_o_n_e_s_parser__inherit__graph.png and b/class_x_b_o_x_o_n_e_s_parser__inherit__graph.png differ diff --git a/class_x_b_o_x_r_e_c_v-members.html b/class_x_b_o_x_r_e_c_v-members.html index 8204172e..33ad35e0 100644 --- a/class_x_b_o_x_r_e_c_v-members.html +++ b/class_x_b_o_x_r_e_c_v-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- +
[legend]
@@ -108,10 +83,10 @@ Collaboration diagram for XBOXRECV:
Collaboration graph
- - - - + + + +
[legend]
@@ -193,9 +168,11 @@ Protected Attributes

This class implements support for a Xbox Wireless receiver.

Up to four controllers can connect to one receiver, if more is needed one can use a second receiver via the USBHub class.

-

Definition at line 55 of file XBOXRECV.h.

+

Definition at line 55 of file XBOXRECV.h.

Constructor & Destructor Documentation

- + +

◆ XBOXRECV()

+
@@ -215,12 +192,14 @@ Protected Attributes -

Definition at line 25 of file XBOXRECV.cpp.

+

Definition at line 25 of file XBOXRECV.cpp.

Member Function Documentation

- + +

◆ ConfigureDevice()

+
@@ -269,11 +248,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 41 of file XBOXRECV.cpp.

+

Definition at line 41 of file XBOXRECV.cpp.

- + +

◆ Init()

+
@@ -322,11 +303,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 138 of file XBOXRECV.cpp.

+

Definition at line 138 of file XBOXRECV.cpp.

- + +

◆ Release()

+
@@ -350,11 +333,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 283 of file XBOXRECV.cpp.

+

Definition at line 283 of file XBOXRECV.cpp.

- + +

◆ Poll()

+
@@ -378,11 +363,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 293 of file XBOXRECV.cpp.

+

Definition at line 293 of file XBOXRECV.cpp.

- + +

◆ GetAddress()

+
@@ -406,11 +393,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 95 of file XBOXRECV.h.

+

Definition at line 95 of file XBOXRECV.h.

- + +

◆ isReady()

+
@@ -432,11 +421,13 @@ Protected Attributes

Used to check if the controller has been initialized.

Returns
True if it's ready.
-

Definition at line 103 of file XBOXRECV.h.

+

Definition at line 103 of file XBOXRECV.h.

- + +

◆ VIDPIDOK()

+
@@ -478,11 +469,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 113 of file XBOXRECV.h.

+

Definition at line 113 of file XBOXRECV.h.

- + +

◆ getButtonPress()

+
@@ -516,11 +509,13 @@ Protected Attributes
Returns
getButtonClick(uint8_t controller, ButtonEnum b) will return a bool, while getButtonPress(uint8_t controller, ButtonEnum b) will return a byte if reading L2 or R2.
-

Definition at line 410 of file XBOXRECV.cpp.

+

Definition at line 410 of file XBOXRECV.cpp.

- + +

◆ getButtonClick()

+
@@ -554,11 +549,13 @@ Protected Attributes
Returns
getButtonClick(uint8_t controller, ButtonEnum b) will return a bool, while getButtonPress(uint8_t controller, ButtonEnum b) will return a byte if reading L2 or R2.
-

Definition at line 418 of file XBOXRECV.cpp.

+

Definition at line 418 of file XBOXRECV.cpp.

- + +

◆ getAnalogHat()

+
@@ -590,11 +587,13 @@ Protected Attributes
Returns
Returns a signed 16-bit integer.
-

Definition at line 438 of file XBOXRECV.cpp.

+

Definition at line 438 of file XBOXRECV.cpp.

- + +

◆ disconnect()

+
@@ -614,11 +613,13 @@ Protected Attributes -

Definition at line 498 of file XBOXRECV.cpp.

+

Definition at line 498 of file XBOXRECV.cpp.

- + +

◆ setAllOff()

+
@@ -646,11 +647,13 @@ Protected Attributes -

Definition at line 153 of file XBOXRECV.h.

+

Definition at line 153 of file XBOXRECV.h.

- + +

◆ setRumbleOff()

+
@@ -678,11 +681,13 @@ Protected Attributes -

Definition at line 162 of file XBOXRECV.h.

+

Definition at line 162 of file XBOXRECV.h.

- + +

◆ setRumbleOn()

+
@@ -720,11 +725,13 @@ Protected Attributes -

Definition at line 557 of file XBOXRECV.cpp.

+

Definition at line 557 of file XBOXRECV.cpp.

- + +

◆ setLedRaw()

+
@@ -755,11 +762,13 @@ Protected Attributes -

Definition at line 507 of file XBOXRECV.cpp.

+

Definition at line 507 of file XBOXRECV.cpp.

- + +

◆ setLedOff()

+
@@ -787,11 +796,13 @@ Protected Attributes -

Definition at line 185 of file XBOXRECV.h.

+

Definition at line 185 of file XBOXRECV.h.

- + +

◆ setLedOn()

+
@@ -822,11 +833,13 @@ Protected Attributes -

Definition at line 516 of file XBOXRECV.cpp.

+

Definition at line 516 of file XBOXRECV.cpp.

- + +

◆ setLedBlink()

+
@@ -857,11 +870,13 @@ Protected Attributes -

Definition at line 523 of file XBOXRECV.cpp.

+

Definition at line 523 of file XBOXRECV.cpp.

- + +

◆ setLedMode()

+
@@ -892,11 +907,13 @@ Protected Attributes -

Definition at line 527 of file XBOXRECV.cpp.

+

Definition at line 527 of file XBOXRECV.cpp.

- + +

◆ getBatteryLevel()

+
@@ -917,11 +934,13 @@ Protected Attributes
Returns
Returns the battery level as an integer in the range of 0-3.
-

Definition at line 467 of file XBOXRECV.cpp.

+

Definition at line 467 of file XBOXRECV.cpp.

- + +

◆ buttonChanged()

+
@@ -942,11 +961,13 @@ Protected Attributes
Returns
True if a button has changed.
-

Definition at line 442 of file XBOXRECV.cpp.

+

Definition at line 442 of file XBOXRECV.cpp.

- + +

◆ attachOnInit()

+
@@ -974,12 +995,14 @@ Protected Attributes -

Definition at line 223 of file XBOXRECV.h.

+

Definition at line 223 of file XBOXRECV.h.

Member Data Documentation

- + +

◆ XboxReceiverConnected

+
@@ -990,11 +1013,13 @@ Protected Attributes

True if a wireless receiver is connected.

-

Definition at line 225 of file XBOXRECV.h.

+

Definition at line 225 of file XBOXRECV.h.

- + +

◆ Xbox360Connected

+
@@ -1005,11 +1030,13 @@ Protected Attributes

Variable used to indicate if the XBOX 360 controller is successfully connected.

-

Definition at line 231 of file XBOXRECV.h.

+

Definition at line 231 of file XBOXRECV.h.

- + +

◆ pUsb

+
@@ -1028,11 +1055,13 @@ Protected Attributes

Pointer to USB class instance.

-

Definition at line 235 of file XBOXRECV.h.

+

Definition at line 235 of file XBOXRECV.h.

- + +

◆ bAddress

+
@@ -1051,11 +1080,13 @@ Protected Attributes

Device address.

-

Definition at line 237 of file XBOXRECV.h.

+

Definition at line 237 of file XBOXRECV.h.

- + +

◆ epInfo

+
@@ -1074,7 +1105,7 @@ Protected Attributes

Endpoint info structure.

-

Definition at line 239 of file XBOXRECV.h.

+

Definition at line 239 of file XBOXRECV.h.

@@ -1087,7 +1118,7 @@ Protected Attributes diff --git a/class_x_b_o_x_r_e_c_v__coll__graph.map b/class_x_b_o_x_r_e_c_v__coll__graph.map index 4f9b5ac7..3f752564 100644 --- a/class_x_b_o_x_r_e_c_v__coll__graph.map +++ b/class_x_b_o_x_r_e_c_v__coll__graph.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/class_x_b_o_x_r_e_c_v__coll__graph.md5 b/class_x_b_o_x_r_e_c_v__coll__graph.md5 index bb538112..d5c8e537 100644 --- a/class_x_b_o_x_r_e_c_v__coll__graph.md5 +++ b/class_x_b_o_x_r_e_c_v__coll__graph.md5 @@ -1 +1 @@ -2d7f0ed5a487b4ea4ec343e72841b2c4 \ No newline at end of file +0ca59a14f198ee4c34dfdb2ce5f86159 \ No newline at end of file diff --git a/class_x_b_o_x_r_e_c_v__coll__graph.png b/class_x_b_o_x_r_e_c_v__coll__graph.png index dcada608..ab075616 100644 Binary files a/class_x_b_o_x_r_e_c_v__coll__graph.png and b/class_x_b_o_x_r_e_c_v__coll__graph.png differ diff --git a/class_x_b_o_x_r_e_c_v__inherit__graph.map b/class_x_b_o_x_r_e_c_v__inherit__graph.map index 21b8422b..9fb2b298 100644 --- a/class_x_b_o_x_r_e_c_v__inherit__graph.map +++ b/class_x_b_o_x_r_e_c_v__inherit__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_x_b_o_x_r_e_c_v__inherit__graph.md5 b/class_x_b_o_x_r_e_c_v__inherit__graph.md5 index b6ad7df6..1518a1e6 100644 --- a/class_x_b_o_x_r_e_c_v__inherit__graph.md5 +++ b/class_x_b_o_x_r_e_c_v__inherit__graph.md5 @@ -1 +1 @@ -f7208ed6bda886c3efbb05f7e1cbd52d \ No newline at end of file +74130f6418584d70a67a0ea80db1eaa1 \ No newline at end of file diff --git a/class_x_b_o_x_r_e_c_v__inherit__graph.png b/class_x_b_o_x_r_e_c_v__inherit__graph.png index 71d28ecd..db413c05 100644 Binary files a/class_x_b_o_x_r_e_c_v__inherit__graph.png and b/class_x_b_o_x_r_e_c_v__inherit__graph.png differ diff --git a/class_x_b_o_x_u_s_b-members.html b/class_x_b_o_x_u_s_b-members.html index ff22878d..fecb1fa3 100644 --- a/class_x_b_o_x_u_s_b-members.html +++ b/class_x_b_o_x_u_s_b-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- +
[legend]
@@ -108,10 +83,10 @@ Collaboration diagram for XBOXUSB:
Collaboration graph
- - - - + + + +
[legend]
@@ -184,9 +159,11 @@ Protected Attributes

Detailed Description

This class implements support for a Xbox wired controller via USB.

-

Definition at line 53 of file XBOXUSB.h.

+

Definition at line 53 of file XBOXUSB.h.

Constructor & Destructor Documentation

- + +

◆ XBOXUSB()

+
@@ -206,12 +183,14 @@ Protected Attributes -

Definition at line 23 of file XBOXUSB.cpp.

+

Definition at line 23 of file XBOXUSB.cpp.

Member Function Documentation

- + +

◆ Init()

+
@@ -260,11 +239,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 39 of file XBOXUSB.cpp.

+

Definition at line 39 of file XBOXUSB.cpp.

- + +

◆ Release()

+
@@ -288,11 +269,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 224 of file XBOXUSB.cpp.

+

Definition at line 224 of file XBOXUSB.cpp.

- + +

◆ Poll()

+
@@ -316,11 +299,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 232 of file XBOXUSB.cpp.

+

Definition at line 232 of file XBOXUSB.cpp.

- + +

◆ GetAddress()

+
@@ -344,11 +329,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 85 of file XBOXUSB.h.

+

Definition at line 85 of file XBOXUSB.h.

- + +

◆ isReady()

+
@@ -370,11 +357,13 @@ Protected Attributes

Used to check if the controller has been initialized.

Returns
True if it's ready.
-

Definition at line 93 of file XBOXUSB.h.

+

Definition at line 93 of file XBOXUSB.h.

- + +

◆ VIDPIDOK()

+
@@ -416,11 +405,13 @@ Protected Attributes

Reimplemented from USBDeviceConfig.

-

Definition at line 103 of file XBOXUSB.h.

+

Definition at line 103 of file XBOXUSB.h.

- + +

◆ getButtonPress()

+
@@ -443,11 +434,13 @@ Protected Attributes
Returns
getButtonClick(ButtonEnum b) will return a bool, while getButtonPress(ButtonEnum b) will return a byte if reading L2 or R2.
-

Definition at line 283 of file XBOXUSB.cpp.

+

Definition at line 283 of file XBOXUSB.cpp.

- + +

◆ getButtonClick()

+
@@ -470,11 +463,13 @@ Protected Attributes
Returns
getButtonClick(ButtonEnum b) will return a bool, while getButtonPress(ButtonEnum b) will return a byte if reading L2 or R2.
-

Definition at line 291 of file XBOXUSB.cpp.

+

Definition at line 291 of file XBOXUSB.cpp.

- + +

◆ getAnalogHat()

+
@@ -495,11 +490,13 @@ Protected Attributes
Returns
Returns a signed 16-bit integer.
-

Definition at line 311 of file XBOXUSB.cpp.

+

Definition at line 311 of file XBOXUSB.cpp.

- + +

◆ setAllOff()

+
@@ -521,11 +518,13 @@ Protected Attributes

Turn rumble off and all the LEDs on the controller.

-

Definition at line 132 of file XBOXUSB.h.

+

Definition at line 132 of file XBOXUSB.h.

- + +

◆ setRumbleOff()

+
@@ -547,11 +546,13 @@ Protected Attributes

Turn rumble off the controller.

-

Definition at line 138 of file XBOXUSB.h.

+

Definition at line 138 of file XBOXUSB.h.

- + +

◆ setRumbleOn()

+
@@ -582,11 +583,13 @@ Protected Attributes -

Definition at line 344 of file XBOXUSB.cpp.

+

Definition at line 344 of file XBOXUSB.cpp.

- + +

◆ setLedRaw()

+
@@ -606,11 +609,13 @@ Protected Attributes -

Definition at line 321 of file XBOXUSB.cpp.

+

Definition at line 321 of file XBOXUSB.cpp.

- + +

◆ setLedOff()

+
@@ -632,11 +637,13 @@ Protected Attributes

Turn all LEDs off the controller.

-

Definition at line 156 of file XBOXUSB.h.

+

Definition at line 156 of file XBOXUSB.h.

- + +

◆ setLedOn()

+
@@ -656,11 +663,13 @@ Protected Attributes -

Definition at line 329 of file XBOXUSB.cpp.

+

Definition at line 329 of file XBOXUSB.cpp.

- + +

◆ setLedBlink()

+
@@ -680,11 +689,13 @@ Protected Attributes -

Definition at line 336 of file XBOXUSB.cpp.

+

Definition at line 336 of file XBOXUSB.cpp.

- + +

◆ setLedMode()

+
@@ -704,11 +715,13 @@ Protected Attributes -

Definition at line 340 of file XBOXUSB.cpp.

+

Definition at line 340 of file XBOXUSB.cpp.

- + +

◆ attachOnInit()

+
@@ -736,12 +749,14 @@ Protected Attributes -

Definition at line 179 of file XBOXUSB.h.

+

Definition at line 179 of file XBOXUSB.h.

Member Data Documentation

- + +

◆ Xbox360Connected

+
@@ -752,11 +767,13 @@ Protected Attributes

True if a Xbox 360 controller is connected.

-

Definition at line 181 of file XBOXUSB.h.

+

Definition at line 181 of file XBOXUSB.h.

- + +

◆ pUsb

+
@@ -775,11 +792,13 @@ Protected Attributes

Pointer to USB class instance.

-

Definition at line 189 of file XBOXUSB.h.

+

Definition at line 189 of file XBOXUSB.h.

- + +

◆ bAddress

+
@@ -798,11 +817,13 @@ Protected Attributes

Device address.

-

Definition at line 191 of file XBOXUSB.h.

+

Definition at line 191 of file XBOXUSB.h.

- + +

◆ epInfo

+
@@ -821,7 +842,7 @@ Protected Attributes

Endpoint info structure.

-

Definition at line 193 of file XBOXUSB.h.

+

Definition at line 193 of file XBOXUSB.h.

@@ -834,7 +855,7 @@ Protected Attributes diff --git a/class_x_b_o_x_u_s_b__coll__graph.map b/class_x_b_o_x_u_s_b__coll__graph.map index 5ea7e477..8a15c23c 100644 --- a/class_x_b_o_x_u_s_b__coll__graph.map +++ b/class_x_b_o_x_u_s_b__coll__graph.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/class_x_b_o_x_u_s_b__coll__graph.md5 b/class_x_b_o_x_u_s_b__coll__graph.md5 index d2631857..4024397e 100644 --- a/class_x_b_o_x_u_s_b__coll__graph.md5 +++ b/class_x_b_o_x_u_s_b__coll__graph.md5 @@ -1 +1 @@ -654de9f0f1b78cafbc20482878c5abaf \ No newline at end of file +3faed061859104f3cc71c3486dd11752 \ No newline at end of file diff --git a/class_x_b_o_x_u_s_b__coll__graph.png b/class_x_b_o_x_u_s_b__coll__graph.png index deacbb47..c2dbd5de 100644 Binary files a/class_x_b_o_x_u_s_b__coll__graph.png and b/class_x_b_o_x_u_s_b__coll__graph.png differ diff --git a/class_x_b_o_x_u_s_b__inherit__graph.map b/class_x_b_o_x_u_s_b__inherit__graph.map index f9dd3b82..e8860ed9 100644 --- a/class_x_b_o_x_u_s_b__inherit__graph.map +++ b/class_x_b_o_x_u_s_b__inherit__graph.map @@ -1,3 +1,3 @@ - + diff --git a/class_x_b_o_x_u_s_b__inherit__graph.md5 b/class_x_b_o_x_u_s_b__inherit__graph.md5 index 816edbfb..5035c5d3 100644 --- a/class_x_b_o_x_u_s_b__inherit__graph.md5 +++ b/class_x_b_o_x_u_s_b__inherit__graph.md5 @@ -1 +1 @@ -f856eb1a72c58d28a6481d6c3bc6012d \ No newline at end of file +901d7e9b19359e5d2c53012c155e3718 \ No newline at end of file diff --git a/class_x_b_o_x_u_s_b__inherit__graph.png b/class_x_b_o_x_u_s_b__inherit__graph.png index 8e473b7d..3aae4648 100644 Binary files a/class_x_b_o_x_u_s_b__inherit__graph.png and b/class_x_b_o_x_u_s_b__inherit__graph.png differ diff --git a/class_x_r21_b1411-members.html b/class_x_r21_b1411-members.html index 5974918f..3dbf8ad0 100644 --- a/class_x_r21_b1411-members.html +++ b/class_x_r21_b1411-members.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Member List @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + + - + - - + + + +
Inheritance graph
- - - + + +
[legend]
@@ -108,14 +83,14 @@ Collaboration diagram for XR21B1411:
Collaboration graph
- - - - - - - - + + + + + + + +
[legend]
@@ -233,9 +208,11 @@ Additional Inherited Members

Detailed Description

-

Definition at line 103 of file cdc_XR21B1411.h.

+

Definition at line 103 of file cdc_XR21B1411.h.

Constructor & Destructor Documentation

- + +

◆ XR21B1411()

+
@@ -259,12 +236,14 @@ Additional Inherited Members
-

Definition at line 19 of file cdc_XR21B1411.cpp.

+

Definition at line 19 of file cdc_XR21B1411.cpp.

Member Function Documentation

- + +

◆ VIDPIDOK()

+
@@ -306,11 +285,13 @@ Additional Inherited Members

Reimplemented from USBDeviceConfig.

-

Definition at line 115 of file cdc_XR21B1411.h.

+

Definition at line 115 of file cdc_XR21B1411.h.

- + +

◆ Init()

+
@@ -350,11 +331,13 @@ Additional Inherited Members

Reimplemented from USBDeviceConfig.

-

Definition at line 25 of file cdc_XR21B1411.cpp.

+

Definition at line 25 of file cdc_XR21B1411.cpp.

- + +

◆ enhanced_features()

+
@@ -378,11 +361,13 @@ Additional Inherited Members

Reimplemented from ACM.

-

Definition at line 121 of file cdc_XR21B1411.h.

+

Definition at line 121 of file cdc_XR21B1411.h.

- + +

◆ read_register()

+
@@ -414,11 +399,13 @@ Additional Inherited Members
-

Definition at line 132 of file cdc_XR21B1411.h.

+

Definition at line 132 of file cdc_XR21B1411.h.

- + +

◆ write_register()

+
@@ -450,11 +437,13 @@ Additional Inherited Members
-

Definition at line 136 of file cdc_XR21B1411.h.

+

Definition at line 136 of file cdc_XR21B1411.h.

- + +

◆ autoflowRTS()

+
@@ -478,11 +467,13 @@ Additional Inherited Members

Reimplemented from ACM.

-

Definition at line 145 of file cdc_XR21B1411.h.

+

Definition at line 145 of file cdc_XR21B1411.h.

- + +

◆ autoflowDSR()

+
@@ -506,11 +497,13 @@ Additional Inherited Members

Reimplemented from ACM.

-

Definition at line 176 of file cdc_XR21B1411.h.

+

Definition at line 176 of file cdc_XR21B1411.h.

- + +

◆ autoflowXON()

+
@@ -534,11 +527,13 @@ Additional Inherited Members

Reimplemented from ACM.

-

Definition at line 211 of file cdc_XR21B1411.h.

+

Definition at line 211 of file cdc_XR21B1411.h.

- + +

◆ half_duplex()

+
@@ -562,7 +557,7 @@ Additional Inherited Members

Reimplemented from ACM.

-

Definition at line 243 of file cdc_XR21B1411.h.

+

Definition at line 243 of file cdc_XR21B1411.h.

@@ -575,7 +570,7 @@ Additional Inherited Members diff --git a/class_x_r21_b1411__coll__graph.map b/class_x_r21_b1411__coll__graph.map index ef7794b0..8a27dafc 100644 --- a/class_x_r21_b1411__coll__graph.map +++ b/class_x_r21_b1411__coll__graph.map @@ -1,10 +1,10 @@ - - - - - - - - + + + + + + + + diff --git a/class_x_r21_b1411__coll__graph.md5 b/class_x_r21_b1411__coll__graph.md5 index f6a09260..3553a473 100644 --- a/class_x_r21_b1411__coll__graph.md5 +++ b/class_x_r21_b1411__coll__graph.md5 @@ -1 +1 @@ -2dbccd1b011c53b5f85709ffafe012c5 \ No newline at end of file +74eb1928e681995aa3f1df1987bc06dc \ No newline at end of file diff --git a/class_x_r21_b1411__coll__graph.png b/class_x_r21_b1411__coll__graph.png index b0212e1a..dbf735ad 100644 Binary files a/class_x_r21_b1411__coll__graph.png and b/class_x_r21_b1411__coll__graph.png differ diff --git a/class_x_r21_b1411__inherit__graph.map b/class_x_r21_b1411__inherit__graph.map index 71b4bc43..45e6a4d4 100644 --- a/class_x_r21_b1411__inherit__graph.map +++ b/class_x_r21_b1411__inherit__graph.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/class_x_r21_b1411__inherit__graph.md5 b/class_x_r21_b1411__inherit__graph.md5 index b61794d2..cf04dca4 100644 --- a/class_x_r21_b1411__inherit__graph.md5 +++ b/class_x_r21_b1411__inherit__graph.md5 @@ -1 +1 @@ -b90701a331346260b7eefd76bf910398 \ No newline at end of file +a23c31938e633c59322b2327db463c90 \ No newline at end of file diff --git a/class_x_r21_b1411__inherit__graph.png b/class_x_r21_b1411__inherit__graph.png index 19b7e439..4da9d918 100644 Binary files a/class_x_r21_b1411__inherit__graph.png and b/class_x_r21_b1411__inherit__graph.png differ diff --git a/classes.html b/classes.html index 8c424052..be38d926 100644 --- a/classes.html +++ b/classes.html @@ -3,7 +3,8 @@ - + +USB Host Shield 2.0: Class Index @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
- + - - + + + +
Class Index
-
A | B | C | E | F | H | I | K | L | M | P | R | S | T | U | W | X
+
a | b | c | e | f | h | i | k | l | m | p | r | s | t | u | w | x
- - - - - - - - - - + + + + + + + + + + + - - - + + - - - - - - + + + + + - - - - - - - - + + + + + +
  A  
-
CommandBlockWrapperBase   KBDLEDS   PSBuzz   USB_INTERFACE_DESCRIPTOR   
CommandStatusWrapper   KeyboardReportParser   PSBUZZButtons   UsbConfigXtracter   
ACM   ConfigDescParser   
  L  
-
PTPListParser   UsbDevice   
ACM_FUNC_DESCR   
  E  
-
  R  
-
UsbDeviceAddress   
AddressPool   LINE_CODING   USBDeviceConfig   
AddressPoolImpl   EpInfo   
  M  
-
ReportDescParser   USBH_MIDI   
ADK   
  F  
-
ReportDescParser2   USBHID   
  B  
-
MainItemIOFeature   ReportDescParserBase   USBHub   
FTDI   MAX3421e   RequestSenseResponce   USBReadParser   
BASICCDB   FTDIAsyncOper   Max_LCD   
  S  
-
  W  
+
  a  
+
CommandBlockWrapperBase   KBDLEDS   PSBuzz   USB_ENDPOINT_DESCRIPTOR   
CommandStatusWrapper   KeyboardReportParser   PSBUZZButtons   USB_HID_DESCRIPTOR   
ACM   ConfigDescParser   
  l  
+
PTPListParser   USB_INTERFACE_DESCRIPTOR   
ACM_FUNC_DESCR   
  e  
+
  r  
+
UsbConfigXtracter   
AddressPool   LINE_CODING   UsbDevice   
AddressPoolImpl   EpInfo   
  m  
+
ReportDescParser   UsbDeviceAddress   
ADK   
  f  
+
ReportDescParser2   USBDeviceConfig   
  b  
+
MainItemIOFeature   ReportDescParserBase   USBH_MIDI   
FTDI   MAX3421e   RequestSenseResponce   USBHID   
BASICCDB   FTDIAsyncOper   Max_LCD   
  s  
+
USBHub   
BluetoothService   
  h  
+
MODIFIERKEYS   USBReadParser   
BTD   MOUSEINFO   SETUP_PKT   
  w  
BluetoothService   
  H  
-
MODIFIERKEYS   
BTD   MOUSEINFO   SETUP_PKT   WII   
BTHID   HexDumper   MouseReportParser   SinkParser   
  X  
+
BTHID   HexDumper   MouseReportParser   SinkParser   
BulkOnly   HID_CLASS_DESCRIPTOR_LEN_AND_TYPE   MultiByteValueParser   SPi   WII   
ByteSkipper   HIDBoot   MultiValueBuffer   SPP   
  x  
BulkOnly   HID_CLASS_DESCRIPTOR_LEN_AND_TYPE   MultiByteValueParser   SPi   
ByteSkipper   HIDBoot   MultiValueBuffer   SPP   XBOXOLD   
  C  
-
HIDComposite   
  P  
-
  T  
-
XBOXONE   
HidItemPrefix   XBOXONESBT   
CALL_MGMNT_FUNC_DESCR   HIDReportParser   PL2303   TEL_RINGER_FUNC_DESCR   XboxOneSButtons   
Capacity   HIDUniversal   PS3BT   
  U  
+
  c  
+
HIDComposite   
  p  
+
  t  
+
HidItemPrefix   XBOXOLD   
CALL_MGMNT_FUNC_DESCR   HIDReportParser   PL2303   TEL_RINGER_FUNC_DESCR   XBOXONE   
Capacity   HIDUniversal   PS3BT   touchpadXY   XBOXONESBT   
CDB10   HubDescriptor   PS3USB   tty_features   XboxOneSButtons   
CDB12   HubEvent   PS4BT   
  u  
XboxOneSData   
CDB10   HubDescriptor   PS3USB   XBOXONESParser   
CDB12   HubEvent   PS4BT   UHS2_GPIO   XBOXRECV   
CDB6   
  I  
-
PS4Buttons   UniversalReportParser   XBOXUSB   
CDB_LBA32_16   PS4Data   USB   XR21B1411   
CDB_LBA64_16   InquiryResponse   PS4Output   USB_CONFIGURATION_DESCRIPTOR   
  t  
-
CDCAsyncOper   
  K  
-
PS4Parser   USB_DEVICE_DESCRIPTOR   
CLASS_NOTIFICATION   PS4Status   USB_ENDPOINT_DESCRIPTOR   touchpadXY   
CommandBlockWrapper   KBDINFO   PS4USB   USB_HID_DESCRIPTOR   tty_features   
CDB6   
  i  
+
PS4Buttons   XBOXONESParser   
CDB_LBA32_16   PS4Data   UHS2_GPIO   XBOXRECV   
CDB_LBA64_16   InquiryResponse   PS4Output   UniversalReportParser   XBOXUSB   
CDCAsyncOper   
  k  
+
PS4Parser   USB   XR21B1411   
CLASS_NOTIFICATION   PS4Status   USB_CONFIGURATION_DESCRIPTOR   
CommandBlockWrapper   KBDINFO   PS4USB   USB_DEVICE_DESCRIPTOR   
-
A | B | C | E | F | H | I | K | L | M | P | R | S | T | U | W | X
+
a | b | c | e | f | h | i | k | l | m | p | r | s | t | u | w | x
diff --git a/confdescparser_8h.html b/confdescparser_8h.html index 0cad4899..a96b1f08 100644 --- a/confdescparser_8h.html +++ b/confdescparser_8h.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: confdescparser.h File Reference @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
 

Macro Definition Documentation

- + +

◆ CP_MASK_COMPARE_CLASS

+
@@ -121,11 +100,13 @@ Macros
-

Definition at line 39 of file confdescparser.h.

+

Definition at line 39 of file confdescparser.h.

- + +

◆ CP_MASK_COMPARE_SUBCLASS

+
@@ -135,11 +116,13 @@ Macros
-

Definition at line 40 of file confdescparser.h.

+

Definition at line 40 of file confdescparser.h.

- + +

◆ CP_MASK_COMPARE_PROTOCOL

+
@@ -149,11 +132,13 @@ Macros
-

Definition at line 41 of file confdescparser.h.

+

Definition at line 41 of file confdescparser.h.

- + +

◆ CP_MASK_COMPARE_ALL

+
@@ -163,7 +148,7 @@ Macros
-

Definition at line 42 of file confdescparser.h.

+

Definition at line 42 of file confdescparser.h.

@@ -172,7 +157,7 @@ Macros diff --git a/confdescparser_8h_source.html b/confdescparser_8h_source.html index 6169440c..589d7159 100644 --- a/confdescparser_8h_source.html +++ b/confdescparser_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: confdescparser.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
- + - - + + + +
- - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + +
@@ -262,7 +239,9 @@ Enumerations  

Enumeration Type Documentation

- + +

◆ LEDEnum

+
@@ -273,38 +252,28 @@ Enumerations

This header file is used to store different enums for the controllers, This is necessary so all the different libraries can be used at once.Enum used to turn on the LEDs on the different controllers.

- - - - - - - - - - - - + + + + + + + + + + +
Enumerator
OFF  -
LED1  -
LED2  -
LED3  -
LED4  -
LED5  -
LED6  -
LED7  -
LED8  -
LED9  -
LED10  -
ALL  -

Used to blink all LEDs on the Xbox controller

+
Enumerator
OFF 
LED1 
LED2 
LED3 
LED4 
LED5 
LED6 
LED7 
LED8 
LED9 
LED10 
ALL 

Used to blink all LEDs on the Xbox controller

-

Definition at line 31 of file controllerEnums.h.

+

Definition at line 31 of file controllerEnums.h.

- + +

◆ ColorsEnum

+
@@ -315,39 +284,32 @@ Enumerations

Used to set the colors of the Move and PS4 controller.

- - - - - - - + - -
Enumerator
Red  -

r = 255, g = 0, b = 0

+
Enumerator
Red 

r = 255, g = 0, b = 0

Green  -

r = 0, g = 255, b = 0

+
Green 

r = 0, g = 255, b = 0

Blue  -

r = 0, g = 0, b = 255

+
Blue 

r = 0, g = 0, b = 255

Yellow  -

r = 255, g = 235, b = 4

+
Yellow 

r = 255, g = 235, b = 4

Lightblue  -

r = 0, g = 255, b = 255

+
Lightblue 

r = 0, g = 255, b = 255

Purple  -

r = 255, g = 0, b = 255

+
Purple 

r = 255, g = 0, b = 255

Purble  +
Purble 
White 

r = 255, g = 255, b = 255

White  -

r = 255, g = 255, b = 255

-
Off  -

r = 0, g = 0, b = 0

+
Off 

r = 0, g = 0, b = 0

-

Definition at line 50 of file controllerEnums.h.

+

Definition at line 50 of file controllerEnums.h.

- + +

◆ RumbleEnum

+
@@ -357,17 +319,17 @@ Enumerations
- - + +
Enumerator
RumbleHigh  -
RumbleLow  -
Enumerator
RumbleHigh 
RumbleLow 
-

Definition at line 72 of file controllerEnums.h.

+

Definition at line 72 of file controllerEnums.h.

- + +

◆ ButtonEnum

+
@@ -378,154 +340,107 @@ Enumerations

This enum is used to read all the different buttons on the different controllers

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - + + + +
Enumerator
UP  -

These buttons are available on all the the controllers

+
Enumerator
UP 

These buttons are available on all the the controllers

RIGHT  -

These buttons are available on all the the controllers

+
RIGHT 

These buttons are available on all the the controllers

DOWN  -

These buttons are available on all the the controllers

+
DOWN 

These buttons are available on all the the controllers

LEFT  -

These buttons are available on all the the controllers

+
LEFT 

These buttons are available on all the the controllers

PLUS  -

Wii buttons

+
PLUS 

Wii buttons

TWO  -

Wii buttons

+
TWO 

Wii buttons

ONE  -

Wii buttons

+
ONE 

Wii buttons

MINUS  -

Wii buttons

+
MINUS 

Wii buttons

HOME  -

Wii buttons

+
HOME 

Wii buttons

-

Wii buttons

+

Wii buttons

-

Wii buttons

+

Wii buttons

-

Wii buttons

+

Wii buttons

-

Wii buttons

+

Wii buttons

-

These are only available on the Wii U Pro Controller

+

These are only available on the Wii U Pro Controller

-

These are only available on the Wii U Pro Controller

+

These are only available on the Wii U Pro Controller

ZL  -

These are only available on the Wii U Pro Controller

+
ZL 

These are only available on the Wii U Pro Controller

ZR  -

These are only available on the Wii U Pro Controller

+
ZR 

These are only available on the Wii U Pro Controller

SELECT  -

PS3 controllers buttons

+
SELECT 

PS3 controllers buttons

START  -

PS3 controllers buttons

+
START 

PS3 controllers buttons

L3  -

PS3 controllers buttons

+
L3 

PS3 controllers buttons

R3  -

PS3 controllers buttons

+
R3 

PS3 controllers buttons

L2  -

PS3 controllers buttons

+
L2 

PS3 controllers buttons

R2  -

PS3 controllers buttons

+
R2 

PS3 controllers buttons

L1  -

PS3 controllers buttons

+
L1 

PS3 controllers buttons

R1  -

PS3 controllers buttons

+
R1 

PS3 controllers buttons

TRIANGLE  -

PS3 controllers buttons

+
TRIANGLE 

PS3 controllers buttons

CIRCLE  -

PS3 controllers buttons

+
CIRCLE 

PS3 controllers buttons

CROSS  -

PS3 controllers buttons

+
CROSS 

PS3 controllers buttons

SQUARE  -

PS3 controllers buttons

+
SQUARE 

PS3 controllers buttons

PS  -

PS3 controllers buttons

+
PS 

PS3 controllers buttons

MOVE  -

PS3 controllers buttons

+
MOVE 

PS3 controllers buttons

-

PS3 controllers buttons

+

PS3 controllers buttons

SHARE  -

PS4 controllers buttons - SHARE and OPTIONS are present instead of SELECT and START

+
SHARE 

PS4 controllers buttons - SHARE and OPTIONS are present instead of SELECT and START

OPTIONS  +
OPTIONS 
TOUCHPAD 
BACK 

Xbox buttons

TOUCHPAD  +

Xbox buttons

BACK  -

Xbox buttons

+

Xbox buttons

-

Xbox buttons

+
XBOX 

Xbox buttons

-

Xbox buttons

+
SYNC 

Xbox buttons

XBOX  -

Xbox buttons

+
BLACK 

Xbox buttons

SYNC  -

Xbox buttons

+
WHITE 

Xbox buttons

BLACK  -

Xbox buttons

+
VIEW 

Xbox One S buttons

WHITE  -

Xbox buttons

+
MENU 

Xbox One S buttons

VIEW  -

Xbox One S buttons

-
MENU  -

Xbox One S buttons

-
RED  -

PS Buzz controllers

-
YELLOW  -
GREEN  -
ORANGE  -
BLUE  +
RED 

PS Buzz controllers

YELLOW 
GREEN 
ORANGE 
BLUE 
-

Definition at line 78 of file controllerEnums.h.

+

Definition at line 78 of file controllerEnums.h.

- + +

◆ AnalogHatEnum

+
@@ -536,25 +451,23 @@ Enumerations

Joysticks on the PS3 and Xbox controllers.

- - - -
Enumerator
LeftHatX  -

Left joystick x-axis

+
Enumerator
LeftHatX 

Left joystick x-axis

LeftHatY  -

Left joystick y-axis

+
LeftHatY 

Left joystick y-axis

RightHatX  -

Right joystick x-axis

+
RightHatX 

Right joystick x-axis

RightHatY  -

Right joystick y-axis

+
RightHatY 

Right joystick y-axis

-

Definition at line 163 of file controllerEnums.h.

+

Definition at line 163 of file controllerEnums.h.

- + +

◆ SensorEnum

+
@@ -565,57 +478,43 @@ Enumerations

Sensors inside the Sixaxis Dualshock 3, Move controller and PS4 controller. Note: that the location is shifted 9 when it's connected via USB on the PS3 controller.

- - + + - + + - - - - - - - - - - - - -
Enumerator
aX  -

Accelerometer values

+
Enumerator
aX 

Accelerometer values

aY  +
aY 
aZ 
gZ 

Gyro z-axis

aZ  +
gX 
gY 
aXmove 

Accelerometer x-axis

gZ  -

Gyro z-axis

+
aZmove 

Accelerometer z-axis

gX  +
aYmove 

Accelerometer y-axis

gY  +
gXmove 

Gyro x-axis

aXmove  -

Accelerometer x-axis

+
gZmove 

Gyro z-axis

aZmove  -

Accelerometer z-axis

+
gYmove 

Gyro y-axis

aYmove  -

Accelerometer y-axis

+
tempMove 

Temperature sensor

gXmove  -

Gyro x-axis

+
mXmove 

Magnetometer x-axis

gZmove  -

Gyro z-axis

+
mZmove 

Magnetometer z-axis

gYmove  -

Gyro y-axis

-
tempMove  -

Temperature sensor

-
mXmove  -

Magnetometer x-axis

-
mZmove  -

Magnetometer z-axis

-
mYmove  -

Magnetometer y-axis

+
mYmove 

Magnetometer y-axis

-

Definition at line 178 of file controllerEnums.h.

+

Definition at line 178 of file controllerEnums.h.

- + +

◆ AngleEnum

+
@@ -626,13 +525,11 @@ Enumerations

Used to get the angle calculated using the PS3 controller and PS4 controller.

- - + +
Enumerator
Pitch  -
Roll  -
Enumerator
Pitch 
Roll 
-

Definition at line 211 of file controllerEnums.h.

+

Definition at line 211 of file controllerEnums.h.

@@ -641,7 +538,7 @@ Enumerations diff --git a/controller_enums_8h__dep__incl.map b/controller_enums_8h__dep__incl.map index e92fcb94..24accfbc 100644 --- a/controller_enums_8h__dep__incl.map +++ b/controller_enums_8h__dep__incl.map @@ -1,27 +1,27 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/controller_enums_8h__dep__incl.png b/controller_enums_8h__dep__incl.png index aadc1293..9a37cf5d 100644 Binary files a/controller_enums_8h__dep__incl.png and b/controller_enums_8h__dep__incl.png differ diff --git a/controller_enums_8h_source.html b/controller_enums_8h_source.html index 9ccb4af0..d5a42900 100644 --- a/controller_enums_8h_source.html +++ b/controller_enums_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: controllerEnums.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
- + - - + + + +
- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- _ -

    +

    - _ -

    • _enhanced_status : ACM
    • @@ -135,7 +71,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_a.html b/functions_a.html index 00491c7e..ae46aef7 100644 --- a/functions_a.html +++ b/functions_a.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Class Members @@ -11,9 +12,6 @@ - @@ -32,81 +30,19 @@
- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- a -

    +

    - a -

    • a : XboxOneSButtons
    • @@ -287,7 +223,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_b.html b/functions_b.html index e607c67d..620e2554 100644 --- a/functions_b.html +++ b/functions_b.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Class Members @@ -11,9 +12,6 @@ - @@ -32,81 +30,19 @@
- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- b -

    +

    - b -

    • b : PS4Output , XboxOneSButtons @@ -591,7 +527,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_c.html b/functions_c.html index 996219a1..ee056361 100644 --- a/functions_c.html +++ b/functions_c.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Class Members @@ -11,9 +12,6 @@ - @@ -32,81 +30,19 @@
- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- c -

    +

    - c -

    • CBWCB : CommandBlockWrapper
    • @@ -289,7 +225,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_d.html b/functions_d.html index 6a3b3bdb..fa7240cc 100644 --- a/functions_d.html +++ b/functions_d.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Class Members @@ -11,9 +12,6 @@ - @@ -32,81 +30,19 @@
- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- d -

    +

    - d -

    • data : Capacity
    • @@ -239,7 +175,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_e.html b/functions_e.html index 64a4dd8c..48e4daaa 100644 --- a/functions_e.html +++ b/functions_e.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Class Members @@ -11,9 +12,6 @@ - @@ -32,81 +30,19 @@
- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- e -

    +

    - e -

    • ENCSERV : InquiryResponse
    • @@ -226,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_enum.html b/functions_enum.html index 1fe022a9..400dd9ad 100644 --- a/functions_enum.html +++ b/functions_enum.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Class Members - Enumerations @@ -11,9 +12,6 @@ - @@ -32,52 +30,19 @@
- + - - - + + + +
- + - - - + + + +
- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- f -

- + - - - - + + + +
  -

- a -

- + - - - - + + + +
  -

- b -

- + - - - - + + + +
  -

- c -

- + - - - - + + + +
  -

- d -

- + - - - - + + + +
  -

- e -

- + - - - - + + + +
  -

- f -

- + - - - - + + + +
  -

- g -

- + - - - - + + + +
  -

- h -

- + - - - - + + + +
  -

- i -

- + - - - - + + + +
  -

- k -

- + - - - - + + + +
  -

- l -

- + - - - - + + + +
  -

- m -

- + - - - - + + + +
  -

- n -

- + - - - - + + + +
  -

- o -

- + - - - - + + + +
  -

- p -

- + - - - - + + + +
  -

- r -

- + - - - - + + + +
  -

- s -

- + - - - - + + + +
  -

- t -

- + - - - - + + + +
  -

- u -

- + - - - - + + + +
  -

- v -

- + - - - - + + + +
  -

- w -

- + - - - - + + + +
  -

- x -

- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- g -

- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- h -

- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- i -

- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- k -

- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- l -

- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- m -

- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- n -

- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- o -

- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- p -

- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- q -

- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- r -

- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- s -

- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- t -

- + - - - + + + + - + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- u -

- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- v -

- + - - - - + + + +
  -

- _ -

- + - - - - + + + +
  -

- a -

- + - - - - + + + +
  -

- b -

- + - - - - + + + +
  -

- c -

- + - - - - + + + +
  -

- d -

- + - - - - + + + +
  -

- e -

- + - - - - + + + +
  -

- f -

- + - - - - + + + +
  -

- g -

- + - - - - + + + +
  -

- h -

- + - - - - + + + +
  -

- i -

- + - - - - + + + +
  -

- k -

- + - - - - + + + +
  -

- l -

- + - - - - + + + +
  -

- m -

- + - - - - + + + +
  -

- n -

- + - - - - + + + +
  -

- o -

- + - - - - + + + +
  -

- p -

- + - - - - + + + +
  -

- q -

- + - - - - + + + +
  -

- r -

- + - - - - + + + +
  -

- s -

- + - - - - + + + +
  -

- t -

- + - - - - + + + +
  -

- u -

- + - - - - + + + +
  -

- v -

- + - - - - + + + +
  -

- w -

- + - - - - + + + +
  -

- x -

- + - - - - + + + +
  -

- y -

- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- w -

- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- x -

- + - - - - + + + +
Here is a list of all class members with links to the classes they belong to:
-

- y -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- _ -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- a -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- b -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- c -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- d -

- + - - - - + + + +
  -

- _ -

- + - - - - + + + +
  -

- a -

- + - - - - + + + +
  -

- b -

- + - - - - + + + +
  -

- c -

- + - - - - + + + +
  -

- d -

- + - - - - + + + +
  -

- e -

- + - - - - + + + +
  -

- f -

- + - - - - + + + +
  -

- g -

- + - - - - + + + +
  -

- h -

- + - - - - + + + +
  -

- i -

- + - - - - + + + +
  -

- j -

- + - - - - + + + +
  -

- k -

- + - - - - + + + +
  -

- l -

- + - - - - + + + +
  -

- m -

- + - - - - + + + +
  -

- n -

- + - - - - + + + +
  -

- o -

- + - - - - + + + +
  -

- p -

- + - - - - + + + +
  -

- r -

- + - - - - + + + +
  -

- s -

- + - - - - + + + +
  -

- t -

- + - - - - + + + +
  -

- u -

- + - - - - + + + +
  -

- v -

- + - - - - + + + +
  -

- w -

- + - - - - + + + +
  -

- x -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- e -

- + - - - + + + + - + - - - - + + + +
  -

- a -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- f -

- + - - - + + + + - + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- g -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- h -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- i -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- j -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- k -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- l -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- m -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- n -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- o -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- p -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- r -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- s -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- t -

- + - - - + + + + - + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- u -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- v -

- + - - - - + + + +
  -

- p -

- + - - - - + + + +
  -

- r -

- + - - - - + + + +
  -

- u -

- + - - - - + + + +
  -

- w -

- + - - - - + + + +
  -

- x -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- w -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- x -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- y -

- + - - - - + + + +
Here is a list of all file members with links to the files they belong to:
-

- z -

- + - + + + +

This page explains how to interpret the graphs that are generated by doxygen.

-

Consider the following example:

1 /*! Invisible class because of truncation */
2 class Invisible { };
3 
4 /*! Truncated class, inheritance relation is hidden */
5 class Truncated : public Invisible { };
6 
7 /* Class not documented with doxygen comments */
8 class Undocumented { };
9 
10 /*! Class that is inherited using public inheritance */
11 class PublicBase : public Truncated { };
12 
13 /*! A template class */
14 template<class T> class Templ { };
15 
16 /*! Class that is inherited using protected inheritance */
17 class ProtectedBase { };
18 
19 /*! Class that is inherited using private inheritance */
20 class PrivateBase { };
21 
22 /*! Class that is used by the Inherited class */
23 class Used { };
24 
25 /*! Super class that inherits a number of other classes */
26 class Inherited : public PublicBase,
27  protected ProtectedBase,
28  private PrivateBase,
29  public Undocumented,
30  public Templ<int>
31 {
32  private:
33  Used *m_usedClass;
34 };

This will result in the following graph:

+

Consider the following example:

/*! Invisible class because of truncation */
class Invisible { };
/*! Truncated class, inheritance relation is hidden */
class Truncated : public Invisible { };
/* Class not documented with doxygen comments */
class Undocumented { };
/*! Class that is inherited using public inheritance */
class PublicBase : public Truncated { };
/*! A template class */
template<class T> class Templ { };
/*! Class that is inherited using protected inheritance */
class ProtectedBase { };
/*! Class that is inherited using private inheritance */
class PrivateBase { };
/*! Class that is used by the Inherited class */
class Used { };
/*! Super class that inherits a number of other classes */
class Inherited : public PublicBase,
protected ProtectedBase,
private PrivateBase,
public Undocumented,
public Templ<int>
{
private:
Used *m_usedClass;
};

This will result in the following graph:

- +

The boxes in the above graph have the following meaning:

diff --git a/graph_legend.png b/graph_legend.png index ab7a9c06..81788d8b 100644 Binary files a/graph_legend.png and b/graph_legend.png differ diff --git a/hexdump_8h.html b/hexdump_8h.html index 29838106..814544d8 100644 --- a/hexdump_8h.html +++ b/hexdump_8h.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: hexdump.h File Reference @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
 

Variable Documentation

- + +

◆ UsbDEBUGlvl

+
@@ -113,7 +92,7 @@ Variables
-

Definition at line 29 of file message.cpp.

+

Definition at line 29 of file message.cpp.

@@ -122,7 +101,7 @@ Variables diff --git a/hexdump_8h_source.html b/hexdump_8h_source.html index 13b381c5..074cd8ec 100644 --- a/hexdump_8h_source.html +++ b/hexdump_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: hexdump.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + + - + - - + + + +
- - - - + + + +
@@ -105,7 +82,7 @@ Include dependency graph for hidboot.cpp: diff --git a/hidboot_8cpp__incl.map b/hidboot_8cpp__incl.map index 92e244b0..7fbc3671 100644 --- a/hidboot_8cpp__incl.map +++ b/hidboot_8cpp__incl.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/hidboot_8cpp__incl.md5 b/hidboot_8cpp__incl.md5 index 8925fe78..de6cd8aa 100644 --- a/hidboot_8cpp__incl.md5 +++ b/hidboot_8cpp__incl.md5 @@ -1 +1 @@ -fd9ffd5fbb0339f5a30f2cdb6ce0f03f \ No newline at end of file +b569b0654ae2e389bfc498a0f61c5075 \ No newline at end of file diff --git a/hidboot_8cpp__incl.png b/hidboot_8cpp__incl.png index 1fb992f9..5b3c55ba 100644 Binary files a/hidboot_8cpp__incl.png and b/hidboot_8cpp__incl.png differ diff --git a/hidboot_8cpp_source.html b/hidboot_8cpp_source.html index f253b4a7..9a74f2df 100644 --- a/hidboot_8cpp_source.html +++ b/hidboot_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: hidboot.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - - + + +
@@ -105,11 +82,11 @@ This graph shows which files directly or indirectly include this file:
- - + + - - + +
@@ -158,7 +135,9 @@ Macros  

Macro Definition Documentation

- + +

◆ UHS_HID_BOOT_KEY_ZERO

+
@@ -168,11 +147,13 @@ Macros
-

Definition at line 22 of file hidboot.h.

+

Definition at line 22 of file hidboot.h.

- + +

◆ UHS_HID_BOOT_KEY_ENTER

+
@@ -182,11 +163,13 @@ Macros
-

Definition at line 23 of file hidboot.h.

+

Definition at line 23 of file hidboot.h.

- + +

◆ UHS_HID_BOOT_KEY_SPACE

+
@@ -196,11 +179,13 @@ Macros
-

Definition at line 24 of file hidboot.h.

+

Definition at line 24 of file hidboot.h.

- + +

◆ UHS_HID_BOOT_KEY_CAPS_LOCK

+
@@ -210,11 +195,13 @@ Macros
-

Definition at line 25 of file hidboot.h.

+

Definition at line 25 of file hidboot.h.

- + +

◆ UHS_HID_BOOT_KEY_SCROLL_LOCK

+
@@ -224,11 +211,13 @@ Macros
-

Definition at line 26 of file hidboot.h.

+

Definition at line 26 of file hidboot.h.

- + +

◆ UHS_HID_BOOT_KEY_NUM_LOCK

+
@@ -238,11 +227,13 @@ Macros
-

Definition at line 27 of file hidboot.h.

+

Definition at line 27 of file hidboot.h.

- + +

◆ UHS_HID_BOOT_KEY_ZERO2

+
@@ -252,11 +243,13 @@ Macros
-

Definition at line 28 of file hidboot.h.

+

Definition at line 28 of file hidboot.h.

- + +

◆ UHS_HID_BOOT_KEY_PERIOD

+
@@ -266,11 +259,13 @@ Macros
-

Definition at line 29 of file hidboot.h.

+

Definition at line 29 of file hidboot.h.

- + +

◆ bitsEndpoints

+
@@ -284,11 +279,13 @@ Macros
-

Definition at line 32 of file hidboot.h.

+

Definition at line 32 of file hidboot.h.

- + +

◆ totalEndpoints

+
@@ -302,11 +299,13 @@ Macros
-

Definition at line 33 of file hidboot.h.

+

Definition at line 33 of file hidboot.h.

- + +

◆ epMUL

+
@@ -320,7 +319,7 @@ Macros
-

Definition at line 34 of file hidboot.h.

+

Definition at line 34 of file hidboot.h.

@@ -329,7 +328,7 @@ Macros diff --git a/hidboot_8h__dep__incl.map b/hidboot_8h__dep__incl.map index 275e3a8c..0da36b67 100644 --- a/hidboot_8h__dep__incl.map +++ b/hidboot_8h__dep__incl.map @@ -1,7 +1,7 @@ - - + + - - + + diff --git a/hidboot_8h__dep__incl.md5 b/hidboot_8h__dep__incl.md5 index de59ebc7..ddc114e6 100644 --- a/hidboot_8h__dep__incl.md5 +++ b/hidboot_8h__dep__incl.md5 @@ -1 +1 @@ -0856b5f458a202d3086dc4dd47e4b019 \ No newline at end of file +54c9e9421628f4174d67f5e073203a7f \ No newline at end of file diff --git a/hidboot_8h__dep__incl.png b/hidboot_8h__dep__incl.png index 40d82dc3..d9e27040 100644 Binary files a/hidboot_8h__dep__incl.png and b/hidboot_8h__dep__incl.png differ diff --git a/hidboot_8h__incl.map b/hidboot_8h__incl.map index 710046fa..c3e6779f 100644 --- a/hidboot_8h__incl.map +++ b/hidboot_8h__incl.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/hidboot_8h__incl.md5 b/hidboot_8h__incl.md5 index 0cf8d499..99907aea 100644 --- a/hidboot_8h__incl.md5 +++ b/hidboot_8h__incl.md5 @@ -1 +1 @@ -8dee61608a93687c155ca4b339d92198 \ No newline at end of file +83d1d2f9fe90e118568a3d6b3086c8da \ No newline at end of file diff --git a/hidboot_8h__incl.png b/hidboot_8h__incl.png index 62f0a421..38450dd1 100644 Binary files a/hidboot_8h__incl.png and b/hidboot_8h__incl.png differ diff --git a/hidboot_8h_source.html b/hidboot_8h_source.html index 83e8a8d5..88118e81 100644 --- a/hidboot_8h_source.html +++ b/hidboot_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: hidboot.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + +
hidboot.h
-Go to the documentation of this file.
1 /* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved.
2 
3 This software may be distributed and modified under the terms of the GNU
4 General Public License version 2 (GPL2) as published by the Free Software
5 Foundation and appearing in the file GPL2.TXT included in the packaging of
6 this file. Please note that GPL2 Section 2[b] requires that all works based
7 on this software must also be made publicly available under the terms of
8 the GPL2 ("Copyleft").
9 
10 Contact information
11 -------------------
12 
13 Circuits At Home, LTD
14 Web : http://www.circuitsathome.com
15 e-mail : support@circuitsathome.com
16  */
17 #if !defined(__HIDBOOT_H__)
18 #define __HIDBOOT_H__
19 
20 #include "usbhid.h"
21 
22 #define UHS_HID_BOOT_KEY_ZERO 0x27
23 #define UHS_HID_BOOT_KEY_ENTER 0x28
24 #define UHS_HID_BOOT_KEY_SPACE 0x2c
25 #define UHS_HID_BOOT_KEY_CAPS_LOCK 0x39
26 #define UHS_HID_BOOT_KEY_SCROLL_LOCK 0x47
27 #define UHS_HID_BOOT_KEY_NUM_LOCK 0x53
28 #define UHS_HID_BOOT_KEY_ZERO2 0x62
29 #define UHS_HID_BOOT_KEY_PERIOD 0x63
30 
31 // Don't worry, GCC will optimize the result to a final value.
32 #define bitsEndpoints(p) ((((p) & USB_HID_PROTOCOL_KEYBOARD)? 2 : 0) | (((p) & USB_HID_PROTOCOL_MOUSE)? 1 : 0))
33 #define totalEndpoints(p) ((bitsEndpoints(p) == 3) ? 3 : 2)
34 #define epMUL(p) ((((p) & USB_HID_PROTOCOL_KEYBOARD)? 1 : 0) + (((p) & USB_HID_PROTOCOL_MOUSE)? 1 : 0))
35 
36 // Already defined in hid.h
37 // #define HID_MAX_HID_CLASS_DESCRIPTORS 5
38 
39 struct MOUSEINFO {
40 
41  struct {
42  uint8_t bmLeftButton : 1;
43  uint8_t bmRightButton : 1;
44  uint8_t bmMiddleButton : 1;
45  uint8_t bmDummy : 5;
46  };
47  int8_t dX;
48  int8_t dY;
49 };
50 
52 
53  union {
55  uint8_t bInfo[sizeof (MOUSEINFO)];
56  } prevState;
57 
58 public:
59  void Parse(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf);
60 
61 protected:
62 
63  virtual void OnMouseMove(MOUSEINFO *mi __attribute__((unused))) {
64  };
65 
66  virtual void OnLeftButtonUp(MOUSEINFO *mi __attribute__((unused))) {
67  };
68 
69  virtual void OnLeftButtonDown(MOUSEINFO *mi __attribute__((unused))) {
70  };
71 
72  virtual void OnRightButtonUp(MOUSEINFO *mi __attribute__((unused))) {
73  };
74 
75  virtual void OnRightButtonDown(MOUSEINFO *mi __attribute__((unused))) {
76  };
77 
78  virtual void OnMiddleButtonUp(MOUSEINFO *mi __attribute__((unused))) {
79  };
80 
81  virtual void OnMiddleButtonDown(MOUSEINFO *mi __attribute__((unused))) {
82  };
83 };
84 
85 struct MODIFIERKEYS {
86  uint8_t bmLeftCtrl : 1;
87  uint8_t bmLeftShift : 1;
88  uint8_t bmLeftAlt : 1;
89  uint8_t bmLeftGUI : 1;
90  uint8_t bmRightCtrl : 1;
91  uint8_t bmRightShift : 1;
92  uint8_t bmRightAlt : 1;
93  uint8_t bmRightGUI : 1;
94 };
95 
96 struct KBDINFO {
97 
98  struct {
99  uint8_t bmLeftCtrl : 1;
100  uint8_t bmLeftShift : 1;
101  uint8_t bmLeftAlt : 1;
102  uint8_t bmLeftGUI : 1;
103  uint8_t bmRightCtrl : 1;
104  uint8_t bmRightShift : 1;
105  uint8_t bmRightAlt : 1;
106  uint8_t bmRightGUI : 1;
107  };
108  uint8_t bReserved;
109  uint8_t Keys[6];
110 };
111 
112 struct KBDLEDS {
113  uint8_t bmNumLock : 1;
114  uint8_t bmCapsLock : 1;
115  uint8_t bmScrollLock : 1;
116  uint8_t bmCompose : 1;
117  uint8_t bmKana : 1;
118  uint8_t bmReserved : 3;
119 };
120 
122  static const uint8_t numKeys[10];
123  static const uint8_t symKeysUp[12];
124  static const uint8_t symKeysLo[12];
125  static const uint8_t padKeys[5];
126 
127 protected:
128 
129  union {
131  uint8_t bInfo[sizeof (KBDINFO)];
132  } prevState;
133 
134  union {
136  uint8_t bLeds;
137  } kbdLockingKeys;
138 
139  uint8_t OemToAscii(uint8_t mod, uint8_t key);
140 
141 public:
142 
144  kbdLockingKeys.bLeds = 0;
145  };
146 
147  void Parse(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf);
148 
149 protected:
150 
151  virtual uint8_t HandleLockingKeys(USBHID* hid, uint8_t key) {
152  uint8_t old_keys = kbdLockingKeys.bLeds;
153 
154  switch(key) {
156  kbdLockingKeys.kbdLeds.bmNumLock = ~kbdLockingKeys.kbdLeds.bmNumLock;
157  break;
159  kbdLockingKeys.kbdLeds.bmCapsLock = ~kbdLockingKeys.kbdLeds.bmCapsLock;
160  break;
162  kbdLockingKeys.kbdLeds.bmScrollLock = ~kbdLockingKeys.kbdLeds.bmScrollLock;
163  break;
164  }
165 
166  if(old_keys != kbdLockingKeys.bLeds && hid) {
167  uint8_t lockLeds = kbdLockingKeys.bLeds;
168  return (hid->SetReport(0, 0/*hid->GetIface()*/, 2, 0, 1, &lockLeds));
169  }
170 
171  return 0;
172  };
173 
174  virtual void OnControlKeysChanged(uint8_t before __attribute__((unused)), uint8_t after __attribute__((unused))) {
175  };
176 
177  virtual void OnKeyDown(uint8_t mod __attribute__((unused)), uint8_t key __attribute__((unused))) {
178  };
179 
180  virtual void OnKeyUp(uint8_t mod __attribute__((unused)), uint8_t key __attribute__((unused))) {
181  };
182 
183  virtual const uint8_t *getNumKeys() {
184  return numKeys;
185  };
186 
187  virtual const uint8_t *getSymKeysUp() {
188  return symKeysUp;
189  };
190 
191  virtual const uint8_t *getSymKeysLo() {
192  return symKeysLo;
193  };
194 
195  virtual const uint8_t *getPadKeys() {
196  return padKeys;
197  };
198 };
199 
200 template <const uint8_t BOOT_PROTOCOL>
201 class HIDBoot : public USBHID //public USBDeviceConfig, public UsbConfigXtracter
202 {
203  EpInfo epInfo[totalEndpoints(BOOT_PROTOCOL)];
204  HIDReportParser *pRptParser[epMUL(BOOT_PROTOCOL)];
205 
206  uint8_t bConfNum; // configuration number
207  uint8_t bIfaceNum; // Interface Number
208  uint8_t bNumIface; // number of interfaces in the configuration
209  uint8_t bNumEP; // total number of EP in the configuration
210  uint32_t qNextPollTime; // next poll time
211  bool bPollEnable; // poll enable flag
212  uint8_t bInterval; // largest interval
213  bool bRptProtoEnable; // Report Protocol enable flag
214 
215  void Initialize();
216 
217  virtual HIDReportParser* GetReportParser(uint8_t id) {
218  return pRptParser[id];
219  };
220 
221 public:
222  HIDBoot(USB *p, bool bRptProtoEnable = false);
223 
224  virtual bool SetReportParser(uint8_t id, HIDReportParser *prs) {
225  pRptParser[id] = prs;
226  return true;
227  };
228 
229  // USBDeviceConfig implementation
230  uint8_t Init(uint8_t parent, uint8_t port, bool lowspeed);
231  uint8_t Release();
232  uint8_t Poll();
233 
234  virtual uint8_t GetAddress() {
235  return bAddress;
236  };
237 
238  virtual bool isReady() {
239  return bPollEnable;
240  };
241 
242  // UsbConfigXtracter implementation
243  // Method should be defined here if virtual.
244  virtual void EndpointXtract(uint8_t conf, uint8_t iface, uint8_t alt, uint8_t proto, const USB_ENDPOINT_DESCRIPTOR *ep);
245 
246  virtual bool DEVCLASSOK(uint8_t klass) {
247  return (klass == USB_CLASS_HID);
248  }
249 
250  virtual bool DEVSUBCLASSOK(uint8_t subklass) {
251  return (subklass == BOOT_PROTOCOL);
252  }
253 };
254 
255 template <const uint8_t BOOT_PROTOCOL>
256 HIDBoot<BOOT_PROTOCOL>::HIDBoot(USB *p, bool bRptProtoEnable/* = false*/) :
257 USBHID(p),
258 qNextPollTime(0),
259 bPollEnable(false),
260 bRptProtoEnable(bRptProtoEnable) {
261  Initialize();
262 
263  for(int i = 0; i < epMUL(BOOT_PROTOCOL); i++) {
264  pRptParser[i] = NULL;
265  }
266  if(pUsb)
267  pUsb->RegisterDeviceClass(this);
268 }
269 
270 template <const uint8_t BOOT_PROTOCOL>
272  for(int i = 0; i < totalEndpoints(BOOT_PROTOCOL); i++) {
273  epInfo[i].epAddr = 0;
274  epInfo[i].maxPktSize = (i) ? 0 : 8;
275  epInfo[i].bmSndToggle = 0;
276  epInfo[i].bmRcvToggle = 0;
277  epInfo[i].bmNakPower = (i) ? USB_NAK_NOWAIT : USB_NAK_MAX_POWER;
278  }
279  bNumEP = 1;
280  bNumIface = 0;
281  bConfNum = 0;
282 }
283 
284 template <const uint8_t BOOT_PROTOCOL>
285 uint8_t HIDBoot<BOOT_PROTOCOL>::Init(uint8_t parent, uint8_t port, bool lowspeed) {
286  const uint8_t constBufSize = sizeof (USB_DEVICE_DESCRIPTOR);
287 
288  uint8_t buf[constBufSize];
289  USB_DEVICE_DESCRIPTOR* device;
290  uint8_t rcode;
291  UsbDevice *p = NULL;
292  EpInfo *oldep_ptr = NULL;
293  uint8_t len = 0;
294  //uint16_t cd_len = 0;
295 
296  uint8_t num_of_conf; // number of configurations
297  //uint8_t num_of_intf; // number of interfaces
298 
299  AddressPool &addrPool = pUsb->GetAddressPool();
300 
301  USBTRACE("BM Init\r\n");
302  //USBTRACE2("totalEndpoints:", (uint8_t) (totalEndpoints(BOOT_PROTOCOL)));
303  //USBTRACE2("epMUL:", epMUL(BOOT_PROTOCOL));
304 
305  if(bAddress)
307 
308  bInterval = 0;
309  // Get pointer to pseudo device with address 0 assigned
310  p = addrPool.GetUsbDevicePtr(0);
311 
312  if(!p)
314 
315  if(!p->epinfo) {
316  USBTRACE("epinfo\r\n");
318  }
319 
320  // Save old pointer to EP_RECORD of address 0
321  oldep_ptr = p->epinfo;
322 
323  // Temporary assign new pointer to epInfo to p->epinfo in order to avoid toggle inconsistence
324  p->epinfo = epInfo;
325 
326  p->lowspeed = lowspeed;
327 
328  // Get device descriptor
329  rcode = pUsb->getDevDescr(0, 0, 8, (uint8_t*)buf);
330 
331  if(!rcode)
332  len = (buf[0] > constBufSize) ? constBufSize : buf[0];
333 
334  device = reinterpret_cast<USB_DEVICE_DESCRIPTOR*>(buf);
335 
336  if(rcode) {
337  // Restore p->epinfo
338  p->epinfo = oldep_ptr;
339 
340  goto FailGetDevDescr;
341  }
342 
343  // Restore p->epinfo
344  p->epinfo = oldep_ptr;
345 
346  // Allocate new address according to device class
347  bAddress = addrPool.AllocAddress(parent, false, port);
348 
349  if(!bAddress)
351 
352  // Extract Max Packet Size from the device descriptor
353  epInfo[0].maxPktSize = (uint8_t)(device->bMaxPacketSize0);
354 
355  // Assign new address to the device
356  rcode = pUsb->setAddr(0, 0, bAddress);
357 
358  if(rcode) {
359  p->lowspeed = false;
360  addrPool.FreeAddress(bAddress);
361  bAddress = 0;
362  USBTRACE2("setAddr:", rcode);
363  return rcode;
364  }
365  //delay(2); //per USB 2.0 sect.9.2.6.3
366 
367  USBTRACE2("Addr:", bAddress);
368 
369  p->lowspeed = false;
370 
371  p = addrPool.GetUsbDevicePtr(bAddress);
372 
373  if(!p)
375 
376  p->lowspeed = lowspeed;
377 
378  if(len)
379  rcode = pUsb->getDevDescr(bAddress, 0, len, (uint8_t*)buf);
380 
381  if(rcode)
382  goto FailGetDevDescr;
383 
384  num_of_conf = device->bNumConfigurations;
385 
386  USBTRACE2("NC:", num_of_conf);
387 
388  // GCC will optimize unused stuff away.
390  USBTRACE("HID_PROTOCOL_KEYBOARD AND MOUSE\r\n");
395  CP_MASK_COMPARE_ALL > confDescrParser(this);
396  confDescrParser.SetOR(); // Use the OR variant.
397  for(uint8_t i = 0; i < num_of_conf; i++) {
398  pUsb->getConfDescr(bAddress, 0, i, &confDescrParser);
399  if(bNumEP == (uint8_t)(totalEndpoints(BOOT_PROTOCOL)))
400  break;
401  }
402  } else {
403  // GCC will optimize unused stuff away.
404  if(BOOT_PROTOCOL & USB_HID_PROTOCOL_KEYBOARD) {
405  USBTRACE("HID_PROTOCOL_KEYBOARD\r\n");
406  for(uint8_t i = 0; i < num_of_conf; i++) {
411  CP_MASK_COMPARE_ALL> confDescrParserA(this);
412 
413  pUsb->getConfDescr(bAddress, 0, i, &confDescrParserA);
414  if(bNumEP == (uint8_t)(totalEndpoints(BOOT_PROTOCOL)))
415  break;
416  }
417  }
418 
419  // GCC will optimize unused stuff away.
420  if(BOOT_PROTOCOL & USB_HID_PROTOCOL_MOUSE) {
421  USBTRACE("HID_PROTOCOL_MOUSE\r\n");
422  for(uint8_t i = 0; i < num_of_conf; i++) {
427  CP_MASK_COMPARE_ALL> confDescrParserB(this);
428 
429  pUsb->getConfDescr(bAddress, 0, i, &confDescrParserB);
430  if(bNumEP == ((uint8_t)(totalEndpoints(BOOT_PROTOCOL))))
431  break;
432 
433  }
434  }
435  }
436  USBTRACE2("bNumEP:", bNumEP);
437 
438  if(bNumEP != (uint8_t)(totalEndpoints(BOOT_PROTOCOL))) {
440  goto Fail;
441  }
442 
443  // Assign epInfo to epinfo pointer
444  rcode = pUsb->setEpInfoEntry(bAddress, bNumEP, epInfo);
445  //USBTRACE2("setEpInfoEntry returned ", rcode);
446  USBTRACE2("Cnf:", bConfNum);
447 
448  delay(1000);
449 
450  // Set Configuration Value
451  rcode = pUsb->setConf(bAddress, 0, bConfNum);
452 
453  if(rcode)
454  goto FailSetConfDescr;
455 
456  delay(1000);
457 
458  USBTRACE2("bIfaceNum:", bIfaceNum);
459  USBTRACE2("bNumIface:", bNumIface);
460 
461  // Yes, mouse wants SetProtocol and SetIdle too!
462  for(uint8_t i = 0; i < epMUL(BOOT_PROTOCOL); i++) {
463  USBTRACE2("\r\nInterface:", i);
464  rcode = SetProtocol(i, bRptProtoEnable ? HID_RPT_PROTOCOL : USB_HID_BOOT_PROTOCOL);
465  if(rcode) goto FailSetProtocol;
466  USBTRACE2("PROTOCOL SET HID_BOOT rcode:", rcode);
467  rcode = SetIdle(i, 0, 0);
468  USBTRACE2("SET_IDLE rcode:", rcode);
469  // if(rcode) goto FailSetIdle; This can fail.
470  // Get the RPIPE and just throw it away.
472  rcode = GetReportDescr(i, &sink);
473  USBTRACE2("RPIPE rcode:", rcode);
474  }
475 
476  // Get RPIPE and throw it away.
477 
478  if(BOOT_PROTOCOL & USB_HID_PROTOCOL_KEYBOARD) {
479  // Wake keyboard interface by twinkling up to 5 LEDs that are in the spec.
480  // kana, compose, scroll, caps, num
481  rcode = 0x20; // Reuse rcode.
482  while(rcode) {
483  rcode >>= 1;
484  // Ignore any error returned, we don't care if LED is not supported
485  SetReport(0, 0, 2, 0, 1, &rcode); // Eventually becomes zero (All off)
486  delay(25);
487  }
488  }
489  USBTRACE("BM configured\r\n");
490 
491  bPollEnable = true;
492  return 0;
493 
494 FailGetDevDescr:
495 #ifdef DEBUG_USB_HOST
497  goto Fail;
498 #endif
499 
500  //FailSetDevTblEntry:
501  //#ifdef DEBUG_USB_HOST
502  // NotifyFailSetDevTblEntry();
503  // goto Fail;
504  //#endif
505 
506  //FailGetConfDescr:
507  //#ifdef DEBUG_USB_HOST
508  // NotifyFailGetConfDescr();
509  // goto Fail;
510  //#endif
511 
512 FailSetConfDescr:
513 #ifdef DEBUG_USB_HOST
515  goto Fail;
516 #endif
517 
518 FailSetProtocol:
519 #ifdef DEBUG_USB_HOST
520  USBTRACE("SetProto:");
521  goto Fail;
522 #endif
523 
524  //FailSetIdle:
525  //#ifdef DEBUG_USB_HOST
526  // USBTRACE("SetIdle:");
527  //#endif
528 
529 Fail:
530 #ifdef DEBUG_USB_HOST
531  NotifyFail(rcode);
532 #endif
533  Release();
534 
535  return rcode;
536 }
537 
538 template <const uint8_t BOOT_PROTOCOL>
539 void HIDBoot<BOOT_PROTOCOL>::EndpointXtract(uint8_t conf, uint8_t iface, uint8_t alt, uint8_t proto, const USB_ENDPOINT_DESCRIPTOR *pep) {
540 
541  // If the first configuration satisfies, the others are not considered.
542  //if(bNumEP > 1 && conf != bConfNum)
543  if(bNumEP == totalEndpoints(BOOT_PROTOCOL))
544  return;
545 
546  bConfNum = conf;
547  bIfaceNum = iface;
548 
549  if((pep->bmAttributes & bmUSB_TRANSFER_TYPE) == USB_TRANSFER_TYPE_INTERRUPT && (pep->bEndpointAddress & 0x80) == 0x80) {
550  if(pep->bInterval > bInterval) bInterval = pep->bInterval;
551 
552  // Fill in the endpoint info structure
553  epInfo[bNumEP].epAddr = (pep->bEndpointAddress & 0x0F);
554  epInfo[bNumEP].maxPktSize = (uint8_t)pep->wMaxPacketSize;
555  epInfo[bNumEP].bmSndToggle = 0;
556  epInfo[bNumEP].bmRcvToggle = 0;
557  epInfo[bNumEP].bmNakPower = USB_NAK_NOWAIT;
558  bNumEP++;
559 
560  }
561 }
562 
563 template <const uint8_t BOOT_PROTOCOL>
566 
567  bConfNum = 0;
568  bIfaceNum = 0;
569  bNumEP = 1;
570  bAddress = 0;
571  qNextPollTime = 0;
572  bPollEnable = false;
573 
574  return 0;
575 }
576 
577 template <const uint8_t BOOT_PROTOCOL>
579  uint8_t rcode = 0;
580 
581  if(bPollEnable && ((int32_t)((uint32_t)millis() - qNextPollTime) >= 0L)) {
582 
583  // To-do: optimize manually, using the for loop only if needed.
584  for(int i = 0; i < epMUL(BOOT_PROTOCOL); i++) {
585  const uint16_t const_buff_len = 16;
586  uint8_t buf[const_buff_len];
587 
588  USBTRACE3("(hidboot.h) i=", i, 0x81);
589  USBTRACE3("(hidboot.h) epInfo[epInterruptInIndex + i].epAddr=", epInfo[epInterruptInIndex + i].epAddr, 0x81);
590  USBTRACE3("(hidboot.h) epInfo[epInterruptInIndex + i].maxPktSize=", epInfo[epInterruptInIndex + i].maxPktSize, 0x81);
591  uint16_t read = (uint16_t)epInfo[epInterruptInIndex + i].maxPktSize;
592 
593  rcode = pUsb->inTransfer(bAddress, epInfo[epInterruptInIndex + i].epAddr, &read, buf);
594  // SOME buggy dongles report extra keys (like sleep) using a 2 byte packet on the wrong endpoint.
595  // Since keyboard and mice must report at least 3 bytes, we ignore the extra data.
596  if(!rcode && read > 2) {
597  if(pRptParser[i])
598  pRptParser[i]->Parse((USBHID*)this, 0, (uint8_t)read, buf);
599 #ifdef DEBUG_USB_HOST
600  // We really don't care about errors and anomalies unless we are debugging.
601  } else {
602  if(rcode != hrNAK) {
603  USBTRACE3("(hidboot.h) Poll:", rcode, 0x81);
604  }
605  if(!rcode && read) {
606  USBTRACE3("(hidboot.h) Strange read count: ", read, 0x80);
607  USBTRACE3("(hidboot.h) Interface:", i, 0x80);
608  }
609  }
610 
611  if(!rcode && read && (UsbDEBUGlvl > 0x7f)) {
612  for(uint8_t i = 0; i < read; i++) {
613  PrintHex<uint8_t > (buf[i], 0x80);
614  USBTRACE1(" ", 0x80);
615  }
616  if(read)
617  USBTRACE1("\r\n", 0x80);
618 #endif
619  }
620 
621  }
622  qNextPollTime = (uint32_t)millis() + bInterval;
623  }
624  return rcode;
625 }
626 
627 #endif // __HIDBOOTMOUSE_H__
uint8_t getConfDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t conf, uint8_t *dataptr)
Definition: Usb.cpp:801
+Go to the documentation of this file.
1 /* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved.
2 
3 This software may be distributed and modified under the terms of the GNU
4 General Public License version 2 (GPL2) as published by the Free Software
5 Foundation and appearing in the file GPL2.TXT included in the packaging of
6 this file. Please note that GPL2 Section 2[b] requires that all works based
7 on this software must also be made publicly available under the terms of
8 the GPL2 ("Copyleft").
9 
10 Contact information
11 -------------------
12 
13 Circuits At Home, LTD
14 Web : http://www.circuitsathome.com
15 e-mail : support@circuitsathome.com
16  */
17 #if !defined(__HIDBOOT_H__)
18 #define __HIDBOOT_H__
19 
20 #include "usbhid.h"
21 
22 #define UHS_HID_BOOT_KEY_ZERO 0x27
23 #define UHS_HID_BOOT_KEY_ENTER 0x28
24 #define UHS_HID_BOOT_KEY_SPACE 0x2c
25 #define UHS_HID_BOOT_KEY_CAPS_LOCK 0x39
26 #define UHS_HID_BOOT_KEY_SCROLL_LOCK 0x47
27 #define UHS_HID_BOOT_KEY_NUM_LOCK 0x53
28 #define UHS_HID_BOOT_KEY_ZERO2 0x62
29 #define UHS_HID_BOOT_KEY_PERIOD 0x63
30 
31 // Don't worry, GCC will optimize the result to a final value.
32 #define bitsEndpoints(p) ((((p) & USB_HID_PROTOCOL_KEYBOARD)? 2 : 0) | (((p) & USB_HID_PROTOCOL_MOUSE)? 1 : 0))
33 #define totalEndpoints(p) ((bitsEndpoints(p) == 3) ? 3 : 2)
34 #define epMUL(p) ((((p) & USB_HID_PROTOCOL_KEYBOARD)? 1 : 0) + (((p) & USB_HID_PROTOCOL_MOUSE)? 1 : 0))
35 
36 // Already defined in hid.h
37 // #define HID_MAX_HID_CLASS_DESCRIPTORS 5
38 
39 struct MOUSEINFO {
40 
41  struct {
42  uint8_t bmLeftButton : 1;
43  uint8_t bmRightButton : 1;
44  uint8_t bmMiddleButton : 1;
45  uint8_t bmDummy : 5;
46  };
47  int8_t dX;
48  int8_t dY;
49 };
50 
52 
53  union {
55  uint8_t bInfo[sizeof (MOUSEINFO)];
56  } prevState;
57 
58 public:
59  void Parse(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf);
60 
61 protected:
62 
63  virtual void OnMouseMove(MOUSEINFO *mi __attribute__((unused))) {
64  };
65 
66  virtual void OnLeftButtonUp(MOUSEINFO *mi __attribute__((unused))) {
67  };
68 
69  virtual void OnLeftButtonDown(MOUSEINFO *mi __attribute__((unused))) {
70  };
71 
72  virtual void OnRightButtonUp(MOUSEINFO *mi __attribute__((unused))) {
73  };
74 
75  virtual void OnRightButtonDown(MOUSEINFO *mi __attribute__((unused))) {
76  };
77 
78  virtual void OnMiddleButtonUp(MOUSEINFO *mi __attribute__((unused))) {
79  };
80 
81  virtual void OnMiddleButtonDown(MOUSEINFO *mi __attribute__((unused))) {
82  };
83 };
84 
85 struct MODIFIERKEYS {
86  uint8_t bmLeftCtrl : 1;
87  uint8_t bmLeftShift : 1;
88  uint8_t bmLeftAlt : 1;
89  uint8_t bmLeftGUI : 1;
90  uint8_t bmRightCtrl : 1;
91  uint8_t bmRightShift : 1;
92  uint8_t bmRightAlt : 1;
93  uint8_t bmRightGUI : 1;
94 };
95 
96 struct KBDINFO {
97 
98  struct {
99  uint8_t bmLeftCtrl : 1;
100  uint8_t bmLeftShift : 1;
101  uint8_t bmLeftAlt : 1;
102  uint8_t bmLeftGUI : 1;
103  uint8_t bmRightCtrl : 1;
104  uint8_t bmRightShift : 1;
105  uint8_t bmRightAlt : 1;
106  uint8_t bmRightGUI : 1;
107  };
108  uint8_t bReserved;
109  uint8_t Keys[6];
110 };
111 
112 struct KBDLEDS {
113  uint8_t bmNumLock : 1;
114  uint8_t bmCapsLock : 1;
115  uint8_t bmScrollLock : 1;
116  uint8_t bmCompose : 1;
117  uint8_t bmKana : 1;
118  uint8_t bmReserved : 3;
119 };
120 
122  static const uint8_t numKeys[10];
123  static const uint8_t symKeysUp[12];
124  static const uint8_t symKeysLo[12];
125  static const uint8_t padKeys[5];
126 
127 protected:
128 
129  union {
131  uint8_t bInfo[sizeof (KBDINFO)];
132  } prevState;
133 
134  union {
136  uint8_t bLeds;
137  } kbdLockingKeys;
138 
139  uint8_t OemToAscii(uint8_t mod, uint8_t key);
140 
141 public:
142 
144  kbdLockingKeys.bLeds = 0;
145  };
146 
147  void Parse(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf);
148 
149 protected:
150 
151  virtual uint8_t HandleLockingKeys(USBHID* hid, uint8_t key) {
152  uint8_t old_keys = kbdLockingKeys.bLeds;
153 
154  switch(key) {
156  kbdLockingKeys.kbdLeds.bmNumLock = ~kbdLockingKeys.kbdLeds.bmNumLock;
157  break;
159  kbdLockingKeys.kbdLeds.bmCapsLock = ~kbdLockingKeys.kbdLeds.bmCapsLock;
160  break;
162  kbdLockingKeys.kbdLeds.bmScrollLock = ~kbdLockingKeys.kbdLeds.bmScrollLock;
163  break;
164  }
165 
166  if(old_keys != kbdLockingKeys.bLeds && hid) {
167  uint8_t lockLeds = kbdLockingKeys.bLeds;
168  return (hid->SetReport(0, 0/*hid->GetIface()*/, 2, 0, 1, &lockLeds));
169  }
170 
171  return 0;
172  };
173 
174  virtual void OnControlKeysChanged(uint8_t before __attribute__((unused)), uint8_t after __attribute__((unused))) {
175  };
176 
177  virtual void OnKeyDown(uint8_t mod __attribute__((unused)), uint8_t key __attribute__((unused))) {
178  };
179 
180  virtual void OnKeyUp(uint8_t mod __attribute__((unused)), uint8_t key __attribute__((unused))) {
181  };
182 
183  virtual const uint8_t *getNumKeys() {
184  return numKeys;
185  };
186 
187  virtual const uint8_t *getSymKeysUp() {
188  return symKeysUp;
189  };
190 
191  virtual const uint8_t *getSymKeysLo() {
192  return symKeysLo;
193  };
194 
195  virtual const uint8_t *getPadKeys() {
196  return padKeys;
197  };
198 };
199 
200 template <const uint8_t BOOT_PROTOCOL>
201 class HIDBoot : public USBHID //public USBDeviceConfig, public UsbConfigXtracter
202 {
203  EpInfo epInfo[totalEndpoints(BOOT_PROTOCOL)];
204  HIDReportParser *pRptParser[epMUL(BOOT_PROTOCOL)];
205 
206  uint8_t bConfNum; // configuration number
207  uint8_t bIfaceNum; // Interface Number
208  uint8_t bNumIface; // number of interfaces in the configuration
209  uint8_t bNumEP; // total number of EP in the configuration
210  uint32_t qNextPollTime; // next poll time
211  bool bPollEnable; // poll enable flag
212  uint8_t bInterval; // largest interval
213  bool bRptProtoEnable; // Report Protocol enable flag
214 
215  void Initialize();
216 
217  virtual HIDReportParser* GetReportParser(uint8_t id) {
218  return pRptParser[id];
219  };
220 
221 public:
222  HIDBoot(USB *p, bool bRptProtoEnable = false);
223 
224  virtual bool SetReportParser(uint8_t id, HIDReportParser *prs) {
225  pRptParser[id] = prs;
226  return true;
227  };
228 
229  // USBDeviceConfig implementation
230  uint8_t Init(uint8_t parent, uint8_t port, bool lowspeed);
231  uint8_t Release();
232  uint8_t Poll();
233 
234  virtual uint8_t GetAddress() {
235  return bAddress;
236  };
237 
238  virtual bool isReady() {
239  return bPollEnable;
240  };
241 
242  // UsbConfigXtracter implementation
243  // Method should be defined here if virtual.
244  virtual void EndpointXtract(uint8_t conf, uint8_t iface, uint8_t alt, uint8_t proto, const USB_ENDPOINT_DESCRIPTOR *ep);
245 
246  virtual bool DEVCLASSOK(uint8_t klass) {
247  return (klass == USB_CLASS_HID);
248  }
249 
250  virtual bool DEVSUBCLASSOK(uint8_t subklass) {
251  return (subklass == BOOT_PROTOCOL);
252  }
253 };
254 
255 template <const uint8_t BOOT_PROTOCOL>
256 HIDBoot<BOOT_PROTOCOL>::HIDBoot(USB *p, bool bRptProtoEnable/* = false*/) :
257 USBHID(p),
258 qNextPollTime(0),
259 bPollEnable(false),
260 bRptProtoEnable(bRptProtoEnable) {
261  Initialize();
262 
263  for(int i = 0; i < epMUL(BOOT_PROTOCOL); i++) {
264  pRptParser[i] = NULL;
265  }
266  if(pUsb)
267  pUsb->RegisterDeviceClass(this);
268 }
269 
270 template <const uint8_t BOOT_PROTOCOL>
272  for(int i = 0; i < totalEndpoints(BOOT_PROTOCOL); i++) {
273  epInfo[i].epAddr = 0;
274  epInfo[i].maxPktSize = (i) ? 0 : 8;
275  epInfo[i].bmSndToggle = 0;
276  epInfo[i].bmRcvToggle = 0;
277  epInfo[i].bmNakPower = (i) ? USB_NAK_NOWAIT : USB_NAK_MAX_POWER;
278  }
279  bNumEP = 1;
280  bNumIface = 0;
281  bConfNum = 0;
282 }
283 
284 template <const uint8_t BOOT_PROTOCOL>
285 uint8_t HIDBoot<BOOT_PROTOCOL>::Init(uint8_t parent, uint8_t port, bool lowspeed) {
286  const uint8_t constBufSize = sizeof (USB_DEVICE_DESCRIPTOR);
287 
288  uint8_t buf[constBufSize];
289  USB_DEVICE_DESCRIPTOR* device;
290  uint8_t rcode;
291  UsbDevice *p = NULL;
292  EpInfo *oldep_ptr = NULL;
293  uint8_t len = 0;
294  //uint16_t cd_len = 0;
295 
296  uint8_t num_of_conf; // number of configurations
297  //uint8_t num_of_intf; // number of interfaces
298 
299  AddressPool &addrPool = pUsb->GetAddressPool();
300 
301  USBTRACE("BM Init\r\n");
302  //USBTRACE2("totalEndpoints:", (uint8_t) (totalEndpoints(BOOT_PROTOCOL)));
303  //USBTRACE2("epMUL:", epMUL(BOOT_PROTOCOL));
304 
305  if(bAddress)
307 
308  bInterval = 0;
309  // Get pointer to pseudo device with address 0 assigned
310  p = addrPool.GetUsbDevicePtr(0);
311 
312  if(!p)
314 
315  if(!p->epinfo) {
316  USBTRACE("epinfo\r\n");
318  }
319 
320  // Save old pointer to EP_RECORD of address 0
321  oldep_ptr = p->epinfo;
322 
323  // Temporary assign new pointer to epInfo to p->epinfo in order to avoid toggle inconsistence
324  p->epinfo = epInfo;
325 
326  p->lowspeed = lowspeed;
327 
328  // Get device descriptor
329  rcode = pUsb->getDevDescr(0, 0, 8, (uint8_t*)buf);
330 
331  if(!rcode)
332  len = (buf[0] > constBufSize) ? constBufSize : buf[0];
333 
334  device = reinterpret_cast<USB_DEVICE_DESCRIPTOR*>(buf);
335 
336  if(rcode) {
337  // Restore p->epinfo
338  p->epinfo = oldep_ptr;
339 
340  goto FailGetDevDescr;
341  }
342 
343  // Restore p->epinfo
344  p->epinfo = oldep_ptr;
345 
346  // Allocate new address according to device class
347  bAddress = addrPool.AllocAddress(parent, false, port);
348 
349  if(!bAddress)
351 
352  // Extract Max Packet Size from the device descriptor
353  epInfo[0].maxPktSize = (uint8_t)(device->bMaxPacketSize0);
354 
355  // Assign new address to the device
356  rcode = pUsb->setAddr(0, 0, bAddress);
357 
358  if(rcode) {
359  p->lowspeed = false;
360  addrPool.FreeAddress(bAddress);
361  bAddress = 0;
362  USBTRACE2("setAddr:", rcode);
363  return rcode;
364  }
365  //delay(2); //per USB 2.0 sect.9.2.6.3
366 
367  USBTRACE2("Addr:", bAddress);
368 
369  p->lowspeed = false;
370 
371  p = addrPool.GetUsbDevicePtr(bAddress);
372 
373  if(!p)
375 
376  p->lowspeed = lowspeed;
377 
378  if(len)
379  rcode = pUsb->getDevDescr(bAddress, 0, len, (uint8_t*)buf);
380 
381  if(rcode)
382  goto FailGetDevDescr;
383 
384  num_of_conf = device->bNumConfigurations;
385 
386  USBTRACE2("NC:", num_of_conf);
387 
388  // GCC will optimize unused stuff away.
390  USBTRACE("HID_PROTOCOL_KEYBOARD AND MOUSE\r\n");
395  CP_MASK_COMPARE_ALL > confDescrParser(this);
396  confDescrParser.SetOR(); // Use the OR variant.
397  for(uint8_t i = 0; i < num_of_conf; i++) {
398  pUsb->getConfDescr(bAddress, 0, i, &confDescrParser);
399  if(bNumEP == (uint8_t)(totalEndpoints(BOOT_PROTOCOL)))
400  break;
401  }
402  } else {
403  // GCC will optimize unused stuff away.
404  if(BOOT_PROTOCOL & USB_HID_PROTOCOL_KEYBOARD) {
405  USBTRACE("HID_PROTOCOL_KEYBOARD\r\n");
406  for(uint8_t i = 0; i < num_of_conf; i++) {
411  CP_MASK_COMPARE_ALL> confDescrParserA(this);
412 
413  pUsb->getConfDescr(bAddress, 0, i, &confDescrParserA);
414  if(bNumEP == (uint8_t)(totalEndpoints(BOOT_PROTOCOL)))
415  break;
416  }
417  }
418 
419  // GCC will optimize unused stuff away.
420  if(BOOT_PROTOCOL & USB_HID_PROTOCOL_MOUSE) {
421  USBTRACE("HID_PROTOCOL_MOUSE\r\n");
422  for(uint8_t i = 0; i < num_of_conf; i++) {
427  CP_MASK_COMPARE_ALL> confDescrParserB(this);
428 
429  pUsb->getConfDescr(bAddress, 0, i, &confDescrParserB);
430  if(bNumEP == ((uint8_t)(totalEndpoints(BOOT_PROTOCOL))))
431  break;
432 
433  }
434  }
435  }
436  USBTRACE2("bNumEP:", bNumEP);
437 
438  if(bNumEP != (uint8_t)(totalEndpoints(BOOT_PROTOCOL))) {
440  goto Fail;
441  }
442 
443  // Assign epInfo to epinfo pointer
444  rcode = pUsb->setEpInfoEntry(bAddress, bNumEP, epInfo);
445  //USBTRACE2("setEpInfoEntry returned ", rcode);
446  USBTRACE2("Cnf:", bConfNum);
447 
448  delay(1000);
449 
450  // Set Configuration Value
451  rcode = pUsb->setConf(bAddress, 0, bConfNum);
452 
453  if(rcode)
454  goto FailSetConfDescr;
455 
456  delay(1000);
457 
458  USBTRACE2("bIfaceNum:", bIfaceNum);
459  USBTRACE2("bNumIface:", bNumIface);
460 
461  // Yes, mouse wants SetProtocol and SetIdle too!
462  for(uint8_t i = 0; i < epMUL(BOOT_PROTOCOL); i++) {
463  USBTRACE2("\r\nInterface:", i);
464  rcode = SetProtocol(i, bRptProtoEnable ? HID_RPT_PROTOCOL : USB_HID_BOOT_PROTOCOL);
465  if(rcode) goto FailSetProtocol;
466  USBTRACE2("PROTOCOL SET HID_BOOT rcode:", rcode);
467  rcode = SetIdle(i, 0, 0);
468  USBTRACE2("SET_IDLE rcode:", rcode);
469  // if(rcode) goto FailSetIdle; This can fail.
470  // Get the RPIPE and just throw it away.
472  rcode = GetReportDescr(i, &sink);
473  USBTRACE2("RPIPE rcode:", rcode);
474  }
475 
476  // Get RPIPE and throw it away.
477 
478  if(BOOT_PROTOCOL & USB_HID_PROTOCOL_KEYBOARD) {
479  // Wake keyboard interface by twinkling up to 5 LEDs that are in the spec.
480  // kana, compose, scroll, caps, num
481  rcode = 0x20; // Reuse rcode.
482  while(rcode) {
483  rcode >>= 1;
484  // Ignore any error returned, we don't care if LED is not supported
485  SetReport(0, 0, 2, 0, 1, &rcode); // Eventually becomes zero (All off)
486  delay(25);
487  }
488  }
489  USBTRACE("BM configured\r\n");
490 
491  bPollEnable = true;
492  return 0;
493 
494 FailGetDevDescr:
495 #ifdef DEBUG_USB_HOST
497  goto Fail;
498 #endif
499 
500  //FailSetDevTblEntry:
501  //#ifdef DEBUG_USB_HOST
502  // NotifyFailSetDevTblEntry();
503  // goto Fail;
504  //#endif
505 
506  //FailGetConfDescr:
507  //#ifdef DEBUG_USB_HOST
508  // NotifyFailGetConfDescr();
509  // goto Fail;
510  //#endif
511 
512 FailSetConfDescr:
513 #ifdef DEBUG_USB_HOST
515  goto Fail;
516 #endif
517 
518 FailSetProtocol:
519 #ifdef DEBUG_USB_HOST
520  USBTRACE("SetProto:");
521  goto Fail;
522 #endif
523 
524  //FailSetIdle:
525  //#ifdef DEBUG_USB_HOST
526  // USBTRACE("SetIdle:");
527  //#endif
528 
529 Fail:
530 #ifdef DEBUG_USB_HOST
531  NotifyFail(rcode);
532 #endif
533  Release();
534 
535  return rcode;
536 }
537 
538 template <const uint8_t BOOT_PROTOCOL>
539 void HIDBoot<BOOT_PROTOCOL>::EndpointXtract(uint8_t conf, uint8_t iface, uint8_t alt, uint8_t proto, const USB_ENDPOINT_DESCRIPTOR *pep) {
540 
541  // If the first configuration satisfies, the others are not considered.
542  //if(bNumEP > 1 && conf != bConfNum)
543  if(bNumEP == totalEndpoints(BOOT_PROTOCOL))
544  return;
545 
546  bConfNum = conf;
547  bIfaceNum = iface;
548 
549  if((pep->bmAttributes & bmUSB_TRANSFER_TYPE) == USB_TRANSFER_TYPE_INTERRUPT && (pep->bEndpointAddress & 0x80) == 0x80) {
550  if(pep->bInterval > bInterval) bInterval = pep->bInterval;
551 
552  // Fill in the endpoint info structure
553  epInfo[bNumEP].epAddr = (pep->bEndpointAddress & 0x0F);
554  epInfo[bNumEP].maxPktSize = (uint8_t)pep->wMaxPacketSize;
555  epInfo[bNumEP].bmSndToggle = 0;
556  epInfo[bNumEP].bmRcvToggle = 0;
557  epInfo[bNumEP].bmNakPower = USB_NAK_NOWAIT;
558  bNumEP++;
559 
560  }
561 }
562 
563 template <const uint8_t BOOT_PROTOCOL>
566 
567  bConfNum = 0;
568  bIfaceNum = 0;
569  bNumEP = 1;
570  bAddress = 0;
571  qNextPollTime = 0;
572  bPollEnable = false;
573 
574  return 0;
575 }
576 
577 template <const uint8_t BOOT_PROTOCOL>
579  uint8_t rcode = 0;
580 
581  if(bPollEnable && ((int32_t)((uint32_t)millis() - qNextPollTime) >= 0L)) {
582 
583  // To-do: optimize manually, using the for loop only if needed.
584  for(int i = 0; i < epMUL(BOOT_PROTOCOL); i++) {
585  const uint16_t const_buff_len = 16;
586  uint8_t buf[const_buff_len];
587 
588  USBTRACE3("(hidboot.h) i=", i, 0x81);
589  USBTRACE3("(hidboot.h) epInfo[epInterruptInIndex + i].epAddr=", epInfo[epInterruptInIndex + i].epAddr, 0x81);
590  USBTRACE3("(hidboot.h) epInfo[epInterruptInIndex + i].maxPktSize=", epInfo[epInterruptInIndex + i].maxPktSize, 0x81);
591  uint16_t read = (uint16_t)epInfo[epInterruptInIndex + i].maxPktSize;
592 
593  rcode = pUsb->inTransfer(bAddress, epInfo[epInterruptInIndex + i].epAddr, &read, buf);
594  // SOME buggy dongles report extra keys (like sleep) using a 2 byte packet on the wrong endpoint.
595  // Since keyboard and mice must report at least 3 bytes, we ignore the extra data.
596  if(!rcode && read > 2) {
597  if(pRptParser[i])
598  pRptParser[i]->Parse((USBHID*)this, 0, (uint8_t)read, buf);
599 #ifdef DEBUG_USB_HOST
600  // We really don't care about errors and anomalies unless we are debugging.
601  } else {
602  if(rcode != hrNAK) {
603  USBTRACE3("(hidboot.h) Poll:", rcode, 0x81);
604  }
605  if(!rcode && read) {
606  USBTRACE3("(hidboot.h) Strange read count: ", read, 0x80);
607  USBTRACE3("(hidboot.h) Interface:", i, 0x80);
608  }
609  }
610 
611  if(!rcode && read && (UsbDEBUGlvl > 0x7f)) {
612  for(uint8_t i = 0; i < read; i++) {
613  PrintHex<uint8_t > (buf[i], 0x80);
614  USBTRACE1(" ", 0x80);
615  }
616  if(read)
617  USBTRACE1("\r\n", 0x80);
618 #endif
619  }
620 
621  }
622  qNextPollTime = (uint32_t)millis() + bInterval;
623  }
624  return rcode;
625 }
626 
627 #endif // __HIDBOOTMOUSE_H__
uint8_t getConfDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t conf, uint8_t *dataptr)
Definition: Usb.cpp:801
uint8_t bmRcvToggle
Definition: address.h:48
@@ -95,7 +72,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
#define CP_MASK_COMPARE_ALL
Definition: usbhid.h:143
USB * pUsb
Definition: usbhid.h:145
+
uint8_t bmLeftShift
Definition: hidboot.h:87
EpInfo * epinfo
Definition: address.h:83
+
uint8_t bmKana
Definition: hidboot.h:117
#define HID_BOOT_INTF_SUBCLASS
Definition: usbhid.h:89
uint8_t bmRightButton
Definition: hidboot.h:43
bool lowspeed
Definition: address.h:86
@@ -108,10 +87,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
uint8_t Poll()
Definition: hidboot.h:578
+
uint8_t bmLeftCtrl
Definition: hidboot.h:99
uint8_t bMaxPacketSize0
Definition: usb_ch9.h:112
+
uint8_t bmRightShift
Definition: hidboot.h:104
#define NotifyFail(...)
Definition: message.h:62
virtual void OnMiddleButtonUp(MOUSEINFO *mi)
Definition: hidboot.h:78
MOUSEINFO mouseInfo
Definition: hidboot.h:54
@@ -120,6 +101,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
virtual void EndpointXtract(uint8_t conf, uint8_t iface, uint8_t alt, uint8_t proto, const USB_ENDPOINT_DESCRIPTOR *ep)
Definition: hidboot.h:539
virtual bool DEVCLASSOK(uint8_t klass)
Definition: hidboot.h:246
#define USB_TRANSFER_TYPE_INTERRUPT
Definition: usb_ch9.h:93
+
uint8_t bmCapsLock
Definition: hidboot.h:114
+
uint8_t bmNumLock
Definition: hidboot.h:113
#define UHS_HID_BOOT_KEY_SCROLL_LOCK
Definition: hidboot.h:26
#define NotifyFailGetDevDescr(...)
Definition: message.h:57
uint8_t setEpInfoEntry(uint8_t addr, uint8_t epcount, EpInfo *eprecord_ptr)
Definition: Usb.cpp:64
@@ -127,11 +110,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
virtual bool SetReportParser(uint8_t id, HIDReportParser *prs)
Definition: hidboot.h:224
virtual void OnKeyUp(uint8_t mod, uint8_t key)
Definition: hidboot.h:180
int UsbDEBUGlvl
Definition: message.cpp:29
+
uint8_t bmLeftGUI
Definition: hidboot.h:102
#define USB_CLASS_HID
Definition: UsbCore.h:72
virtual void FreeAddress(uint8_t addr)=0
virtual UsbDevice * GetUsbDevicePtr(uint8_t addr)=0
uint8_t SetIdle(uint8_t iface, uint8_t reportID, uint8_t duration)
Definition: usbhid.cpp:62
+
uint8_t bmReserved
Definition: hidboot.h:118
virtual const uint8_t * getSymKeysUp()
Definition: hidboot.h:187
#define USBTRACE2(s, r)
Definition: macros.h:84
@@ -141,31 +126,39 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
uint8_t epAddr
Definition: address.h:40
uint8_t bmDummy
Definition: hidboot.h:45
+
uint8_t bmLeftAlt
Definition: hidboot.h:88
virtual uint8_t GetAddress()
Definition: hidboot.h:234
#define USB_NAK_MAX_POWER
Definition: address.h:34
HIDBoot(USB *p, bool bRptProtoEnable=false)
Definition: hidboot.h:256
+
uint8_t bmRightCtrl
Definition: hidboot.h:103
virtual uint8_t HandleLockingKeys(USBHID *hid, uint8_t key)
Definition: hidboot.h:151
#define epMUL(p)
Definition: hidboot.h:34
Definition: address.h:39
virtual void OnMouseMove(MOUSEINFO *mi)
Definition: hidboot.h:63
#define hrNAK
Definition: max3421e.h:218
virtual void OnRightButtonUp(MOUSEINFO *mi)
Definition: hidboot.h:72
+
uint8_t bmLeftGUI
Definition: hidboot.h:89
uint8_t bAddress
Definition: usbhid.h:146
uint16_t wMaxPacketSize
Definition: usb_ch9.h:153
#define bmUSB_TRANSFER_TYPE
Definition: usb_ch9.h:94
virtual void OnMiddleButtonDown(MOUSEINFO *mi)
Definition: hidboot.h:81
+
uint8_t bmRightCtrl
Definition: hidboot.h:90
static const uint8_t epInterruptInIndex
Definition: usbhid.h:149
virtual uint8_t AllocAddress(uint8_t parent, bool is_hub=false, uint8_t port=0)=0
uint8_t bEndpointAddress
Definition: usb_ch9.h:151
+
uint8_t bmRightGUI
Definition: hidboot.h:93
#define UHS_HID_BOOT_KEY_NUM_LOCK
Definition: hidboot.h:27
uint8_t bmSndToggle
Definition: address.h:47
+
uint8_t bmScrollLock
Definition: hidboot.h:115
#define USB_ERROR_CLASS_INSTANCE_ALREADY_IN_USE
Definition: UsbCore.h:98
#define USB_HID_PROTOCOL_KEYBOARD
Definition: usbhid.h:93
#define totalEndpoints(p)
Definition: hidboot.h:33
+
uint8_t bmLeftShift
Definition: hidboot.h:100
#define USBTRACE1(s, l)
Definition: macros.h:83
+
uint8_t bmRightShift
Definition: hidboot.h:91
#define USB_NAK_NOWAIT
Definition: address.h:36
uint8_t SetProtocol(uint8_t iface, uint8_t protocol)
Definition: usbhid.cpp:66
#define USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL
Definition: UsbCore.h:95
@@ -175,6 +168,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
static const uint8_t totalEndpoints
Definition: usbhid.h:154
uint8_t Release()
Definition: hidboot.h:564
+
uint8_t bmRightGUI
Definition: hidboot.h:106
virtual void OnLeftButtonDown(MOUSEINFO *mi)
Definition: hidboot.h:69
uint8_t inTransfer(uint8_t addr, uint8_t ep, uint16_t *nbytesptr, uint8_t *data, uint8_t bInterval=0)
Definition: Usb.cpp:209
@@ -183,21 +177,26 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
virtual const uint8_t * getNumKeys()
Definition: hidboot.h:183
uint8_t bNumConfigurations
Definition: usb_ch9.h:119
#define USB_ERROR_OUT_OF_ADDRESS_SPACE_IN_POOL
Definition: UsbCore.h:93
+
uint8_t bmLeftCtrl
Definition: hidboot.h:86
virtual bool isReady()
Definition: hidboot.h:238
#define USB_HID_BOOT_PROTOCOL
Definition: usbhid.h:82
virtual const uint8_t * getPadKeys()
Definition: hidboot.h:195
uint8_t maxPktSize
Definition: address.h:41
AddressPool & GetAddressPool()
Definition: UsbCore.h:226
+
uint8_t bmRightAlt
Definition: hidboot.h:92
int8_t dY
Definition: hidboot.h:48
Definition: UsbCore.h:210
+
uint8_t bmRightAlt
Definition: hidboot.h:105
virtual bool DEVSUBCLASSOK(uint8_t subklass)
Definition: hidboot.h:250
#define USB_HID_PROTOCOL_MOUSE
Definition: usbhid.h:94
#define USBTRACE3(s, r, l)
Definition: macros.h:85
uint8_t RegisterDeviceClass(USBDeviceConfig *pdev)
Definition: UsbCore.h:230
#define NotifyFailSetConfDescr(...)
Definition: message.h:60
virtual void Parse(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf)=0
+
uint8_t bmCompose
Definition: hidboot.h:116
uint8_t bmLeftButton
Definition: hidboot.h:42
+
uint8_t bmLeftAlt
Definition: hidboot.h:101
uint8_t bReserved
Definition: hidboot.h:108
#define HID_RPT_PROTOCOL
Definition: usbhid.h:83
@@ -210,7 +209,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/hidcomposite_8cpp.html b/hidcomposite_8cpp.html index 8e5a65c5..b8933785 100644 --- a/hidcomposite_8cpp.html +++ b/hidcomposite_8cpp.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: hidcomposite.cpp File Reference @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
- - - - + + + +
@@ -105,7 +82,7 @@ Include dependency graph for hidcomposite.cpp:
diff --git a/hidcomposite_8cpp__incl.map b/hidcomposite_8cpp__incl.map index 393fd223..40dad17a 100644 --- a/hidcomposite_8cpp__incl.map +++ b/hidcomposite_8cpp__incl.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/hidcomposite_8cpp__incl.md5 b/hidcomposite_8cpp__incl.md5 index 26f07e87..d41de51b 100644 --- a/hidcomposite_8cpp__incl.md5 +++ b/hidcomposite_8cpp__incl.md5 @@ -1 +1 @@ -5165af043119ae7e1520852120f4b3a4 \ No newline at end of file +cfde20a929775a9aa01710373822c470 \ No newline at end of file diff --git a/hidcomposite_8cpp__incl.png b/hidcomposite_8cpp__incl.png index 765a5ae1..58884815 100644 Binary files a/hidcomposite_8cpp__incl.png and b/hidcomposite_8cpp__incl.png differ diff --git a/hidcomposite_8cpp_source.html b/hidcomposite_8cpp_source.html index f234883b..3887c9a2 100644 --- a/hidcomposite_8cpp_source.html +++ b/hidcomposite_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: hidcomposite.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + + - + - - + + + +
- - - + + +
@@ -104,7 +81,7 @@ This graph shows which files directly or indirectly include this file:
- +
@@ -120,7 +97,7 @@ Classes diff --git a/hidcomposite_8h__dep__incl.map b/hidcomposite_8h__dep__incl.map index 68b4ce9c..5c9b0b00 100644 --- a/hidcomposite_8h__dep__incl.map +++ b/hidcomposite_8h__dep__incl.map @@ -1,3 +1,3 @@ - + diff --git a/hidcomposite_8h__dep__incl.md5 b/hidcomposite_8h__dep__incl.md5 index fa654d6e..3a8e4864 100644 --- a/hidcomposite_8h__dep__incl.md5 +++ b/hidcomposite_8h__dep__incl.md5 @@ -1 +1 @@ -e5cefe8e10450dabf59c09b38501c8d9 \ No newline at end of file +dad990da35aed65ee7e44e6b13e7614e \ No newline at end of file diff --git a/hidcomposite_8h__dep__incl.png b/hidcomposite_8h__dep__incl.png index 14502198..4cf57d84 100644 Binary files a/hidcomposite_8h__dep__incl.png and b/hidcomposite_8h__dep__incl.png differ diff --git a/hidcomposite_8h__incl.map b/hidcomposite_8h__incl.map index 71782bd9..5b368371 100644 --- a/hidcomposite_8h__incl.map +++ b/hidcomposite_8h__incl.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/hidcomposite_8h__incl.md5 b/hidcomposite_8h__incl.md5 index a69ff5ec..7ee388ff 100644 --- a/hidcomposite_8h__incl.md5 +++ b/hidcomposite_8h__incl.md5 @@ -1 +1 @@ -dbac9dbca596a8ac61230cf0b5b0afd8 \ No newline at end of file +87d62da96e30b2fb1795d9cd42c0eb09 \ No newline at end of file diff --git a/hidcomposite_8h__incl.png b/hidcomposite_8h__incl.png index fe23c57a..af03dcdc 100644 Binary files a/hidcomposite_8h__incl.png and b/hidcomposite_8h__incl.png differ diff --git a/hidcomposite_8h_source.html b/hidcomposite_8h_source.html index 45b6dff7..8496e9d3 100644 --- a/hidcomposite_8h_source.html +++ b/hidcomposite_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: hidcomposite.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - - - + + + +
@@ -105,7 +82,7 @@ Include dependency graph for hidescriptorparser.cpp: diff --git a/hidescriptorparser_8cpp__incl.map b/hidescriptorparser_8cpp__incl.map index 2af760a8..d7af03a4 100644 --- a/hidescriptorparser_8cpp__incl.map +++ b/hidescriptorparser_8cpp__incl.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/hidescriptorparser_8cpp__incl.md5 b/hidescriptorparser_8cpp__incl.md5 index d9090345..5f7a7e19 100644 --- a/hidescriptorparser_8cpp__incl.md5 +++ b/hidescriptorparser_8cpp__incl.md5 @@ -1 +1 @@ -ae4f9bfa13694d05aed5bfbb544f5ac5 \ No newline at end of file +d1d45d08b037bd2134a3e6ccd1c08310 \ No newline at end of file diff --git a/hidescriptorparser_8cpp__incl.png b/hidescriptorparser_8cpp__incl.png index 852671a8..eb04e6a6 100644 Binary files a/hidescriptorparser_8cpp__incl.png and b/hidescriptorparser_8cpp__incl.png differ diff --git a/hidescriptorparser_8cpp_source.html b/hidescriptorparser_8cpp_source.html index 3835cbf2..645eca73 100644 --- a/hidescriptorparser_8cpp_source.html +++ b/hidescriptorparser_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: hidescriptorparser.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + +
hidescriptorparser.cpp
-Go to the documentation of this file.
1 /* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved.
2 
3 This software may be distributed and modified under the terms of the GNU
4 General Public License version 2 (GPL2) as published by the Free Software
5 Foundation and appearing in the file GPL2.TXT included in the packaging of
6 this file. Please note that GPL2 Section 2[b] requires that all works based
7 on this software must also be made publicly available under the terms of
8 the GPL2 ("Copyleft").
9 
10 Contact information
11 -------------------
12 
13 Circuits At Home, LTD
14 Web : http://www.circuitsathome.com
15 e-mail : support@circuitsathome.com
16  */
17 
18 #include "hidescriptorparser.h"
19 
20 const char * const ReportDescParserBase::usagePageTitles0[] PROGMEM = {
36 };
37 
38 const char * const ReportDescParserBase::usagePageTitles1[] PROGMEM = {
45 };
46 const char * const ReportDescParserBase::genDesktopTitles0[] PROGMEM = {
55 
56 };
57 const char * const ReportDescParserBase::genDesktopTitles1[] PROGMEM = {
58  pstrUsageX,
59  pstrUsageY,
60  pstrUsageZ,
83 };
84 const char * const ReportDescParserBase::genDesktopTitles2[] PROGMEM = {
105 };
106 const char * const ReportDescParserBase::genDesktopTitles3[] PROGMEM = {
116 };
117 const char * const ReportDescParserBase::genDesktopTitles4[] PROGMEM = {
126 };
127 const char * const ReportDescParserBase::simuTitles0[] PROGMEM = {
140 };
141 const char * const ReportDescParserBase::simuTitles1[] PROGMEM = {
148 };
149 const char * const ReportDescParserBase::simuTitles2[] PROGMEM = {
183 };
184 const char * const ReportDescParserBase::vrTitles0[] PROGMEM = {
195 };
196 const char * const ReportDescParserBase::vrTitles1[] PROGMEM = {
199 };
200 const char * const ReportDescParserBase::sportsCtrlTitles0[] PROGMEM = {
205 };
206 const char * const ReportDescParserBase::sportsCtrlTitles1[] PROGMEM = {
207  pstrUsageOar,
217 };
218 const char * const ReportDescParserBase::sportsCtrlTitles2[] PROGMEM = {
239 };
240 const char * const ReportDescParserBase::gameTitles0[] PROGMEM = {
244 };
245 const char * const ReportDescParserBase::gameTitles1[] PROGMEM = {
271 };
272 const char * const ReportDescParserBase::genDevCtrlTitles[] PROGMEM = {
280 };
281 const char * const ReportDescParserBase::ledTitles[] PROGMEM = {
301  pstrUsageCAV,
302  pstrUsageCLV,
359 };
360 const char * const ReportDescParserBase::telTitles0 [] PROGMEM = {
368 };
369 const char * const ReportDescParserBase::telTitles1 [] PROGMEM = {
388 };
389 const char * const ReportDescParserBase::telTitles2 [] PROGMEM = {
394 };
395 const char * const ReportDescParserBase::telTitles3 [] PROGMEM = {
401 };
402 const char * const ReportDescParserBase::telTitles4 [] PROGMEM = {
418 };
419 const char * const ReportDescParserBase::telTitles5 [] PROGMEM = {
436 };
437 const char * const ReportDescParserBase::consTitles0[] PROGMEM = {
444 };
445 const char * const ReportDescParserBase::consTitles1[] PROGMEM = {
449 };
450 const char * const ReportDescParserBase::consTitles2[] PROGMEM = {
458 
459 };
460 const char * const ReportDescParserBase::consTitles3[] PROGMEM = {
470 };
471 const char * const ReportDescParserBase::consTitles4[] PROGMEM = {
479 };
480 const char * const ReportDescParserBase::consTitles5[] PROGMEM = {
518 };
519 const char * const ReportDescParserBase::consTitles6[] PROGMEM = {
551 };
552 const char * const ReportDescParserBase::consTitles7[] PROGMEM = {
561  pstrUsageMPX,
564 };
565 const char * const ReportDescParserBase::consTitles8[] PROGMEM = {
572 };
573 const char * const ReportDescParserBase::consTitles9[] PROGMEM = {
588 };
589 const char * const ReportDescParserBase::consTitlesA[] PROGMEM = {
596 };
597 const char * const ReportDescParserBase::consTitlesB[] PROGMEM = {
609 };
610 const char * const ReportDescParserBase::consTitlesC[] PROGMEM = {
616 };
617 const char * const ReportDescParserBase::consTitlesD[] PROGMEM = {
690 };
691 const char * const ReportDescParserBase::consTitlesE[] PROGMEM = {
833 };
834 const char * const ReportDescParserBase::digitTitles0[] PROGMEM = {
836  pstrUsagePen,
848 };
849 const char * const ReportDescParserBase::digitTitles1[] PROGMEM = {
853 
854 };
855 const char * const ReportDescParserBase::digitTitles2[] PROGMEM = {
861  pstrUsageTap,
879 };
880 const char * const ReportDescParserBase::aplphanumTitles0[] PROGMEM = {
883 };
884 const char * const ReportDescParserBase::aplphanumTitles1[] PROGMEM = {
904  pstrUsageRow,
931 };
932 const char * const ReportDescParserBase::aplphanumTitles2[] PROGMEM = {
954 };
955 const char * const ReportDescParserBase::medInstrTitles0[] PROGMEM = {
964 };
965 const char * const ReportDescParserBase::medInstrTitles1[] PROGMEM = {
971 };
972 const char * const ReportDescParserBase::medInstrTitles2[] PROGMEM = {
975 };
976 const char * const ReportDescParserBase::medInstrTitles3[] PROGMEM = {
987 };
988 const char * const ReportDescParserBase::medInstrTitles4[] PROGMEM = {
991 };
992 
993 void ReportDescParserBase::Parse(const uint16_t len, const uint8_t *pbuf, const uint16_t &offset __attribute__((unused))) {
994  uint16_t cntdn = (uint16_t)len;
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 
1013 void ReportDescParserBase::PrintValue(uint8_t *p, uint8_t len) {
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)) {
1028  case (TYPE_GLOBAL | TAG_GLOBAL_PUSH):
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;
1052  case (TYPE_GLOBAL | TAG_GLOBAL_UNIT):
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;
1067  case (TYPE_LOCAL | TAG_LOCAL_USAGEMIN):
1068  E_Notify(PSTR("\r\nUsage Min"), 0x80);
1069  break;
1070  case (TYPE_LOCAL | TAG_LOCAL_USAGEMAX):
1071  E_Notify(PSTR("\r\nUsage Max"), 0x80);
1072  break;
1073  case (TYPE_MAIN | TAG_MAIN_COLLECTION):
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 
1091 uint8_t ReportDescParserBase::ParseItem(uint8_t **pp, uint16_t *pcntdn) {
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;
1156  case (TYPE_LOCAL | TAG_LOCAL_USAGEMIN):
1157  case (TYPE_LOCAL | TAG_LOCAL_USAGEMAX):
1159  case (TYPE_GLOBAL | TAG_GLOBAL_UNIT):
1161  break;
1162  case (TYPE_GLOBAL | TAG_GLOBAL_PUSH):
1163  case (TYPE_GLOBAL | TAG_GLOBAL_POP):
1164  break;
1166  SetUsagePage(data);
1167  PrintUsagePage(data);
1168  PrintByteValue(data);
1169  break;
1170  case (TYPE_MAIN | TAG_MAIN_COLLECTION):
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):
1203  totalSize += (uint16_t)rptSize * (uint16_t)rptCount;
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)) {
1240  pfUsage = (usagePageFunctions[page - 1]);
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 
1421  if(usage == 1) E_Notify(pstrUsageMedicalUltrasound, 0x80);
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 
1432 uint8_t ReportDescParser2::ParseItem(uint8_t **pp, uint16_t *pcntdn) {
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;
1488  case (TYPE_LOCAL | TAG_LOCAL_USAGEMIN):
1489  useMin = data;
1490  break;
1491  case (TYPE_LOCAL | TAG_LOCAL_USAGEMAX):
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 
1507  totalSize += (uint16_t)rptSize * (uint16_t)rptCount;
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 
1521 void 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 
1534  uint8_t bits_of_byte = 8;
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];
1542  uint32_t dwResult;
1543  } result;
1544 
1545  result.dwResult = 0;
1546  uint8_t mask = 0;
1547 
1548  if(print_usemin_usemax)
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
1556  for(uint8_t bits_left = rptSize, bits_to_copy = 0; bits_left;
1557  bits_left -= bits_to_copy) {
1558  bits_to_copy = (bits_left > bits_of_byte) ? bits_of_byte : bits_left;
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 
1575  bits_of_byte -= bits_to_copy;
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 
1587 void UniversalReportParser::Parse(USBHID *hid, bool is_rpt_id __attribute__((unused)), uint8_t len, uint8_t *buf) {
1588  ReportDescParser2 prs(len, buf);
1589 
1590  uint8_t ret = hid->GetReportDescr(0, &prs);
1591 
1592  if(ret)
1593  ErrorMessage<uint8_t > (PSTR("GetReportDescr-2"), ret);
1594 }
const char pstrUsageYTilt[]
Definition: hidusagestr.h:814
+Go to the documentation of this file.
1 /* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved.
2 
3 This software may be distributed and modified under the terms of the GNU
4 General Public License version 2 (GPL2) as published by the Free Software
5 Foundation and appearing in the file GPL2.TXT included in the packaging of
6 this file. Please note that GPL2 Section 2[b] requires that all works based
7 on this software must also be made publicly available under the terms of
8 the GPL2 ("Copyleft").
9 
10 Contact information
11 -------------------
12 
13 Circuits At Home, LTD
14 Web : http://www.circuitsathome.com
15 e-mail : support@circuitsathome.com
16  */
17 
18 #include "hidescriptorparser.h"
19 
20 const char * const ReportDescParserBase::usagePageTitles0[] PROGMEM = {
36 };
37 
38 const char * const ReportDescParserBase::usagePageTitles1[] PROGMEM = {
45 };
46 const char * const ReportDescParserBase::genDesktopTitles0[] PROGMEM = {
55 
56 };
57 const char * const ReportDescParserBase::genDesktopTitles1[] PROGMEM = {
58  pstrUsageX,
59  pstrUsageY,
60  pstrUsageZ,
83 };
84 const char * const ReportDescParserBase::genDesktopTitles2[] PROGMEM = {
105 };
106 const char * const ReportDescParserBase::genDesktopTitles3[] PROGMEM = {
116 };
117 const char * const ReportDescParserBase::genDesktopTitles4[] PROGMEM = {
126 };
127 const char * const ReportDescParserBase::simuTitles0[] PROGMEM = {
140 };
141 const char * const ReportDescParserBase::simuTitles1[] PROGMEM = {
148 };
149 const char * const ReportDescParserBase::simuTitles2[] PROGMEM = {
183 };
184 const char * const ReportDescParserBase::vrTitles0[] PROGMEM = {
195 };
196 const char * const ReportDescParserBase::vrTitles1[] PROGMEM = {
199 };
200 const char * const ReportDescParserBase::sportsCtrlTitles0[] PROGMEM = {
205 };
206 const char * const ReportDescParserBase::sportsCtrlTitles1[] PROGMEM = {
207  pstrUsageOar,
217 };
218 const char * const ReportDescParserBase::sportsCtrlTitles2[] PROGMEM = {
239 };
240 const char * const ReportDescParserBase::gameTitles0[] PROGMEM = {
244 };
245 const char * const ReportDescParserBase::gameTitles1[] PROGMEM = {
271 };
272 const char * const ReportDescParserBase::genDevCtrlTitles[] PROGMEM = {
280 };
281 const char * const ReportDescParserBase::ledTitles[] PROGMEM = {
301  pstrUsageCAV,
302  pstrUsageCLV,
359 };
360 const char * const ReportDescParserBase::telTitles0 [] PROGMEM = {
368 };
369 const char * const ReportDescParserBase::telTitles1 [] PROGMEM = {
388 };
389 const char * const ReportDescParserBase::telTitles2 [] PROGMEM = {
394 };
395 const char * const ReportDescParserBase::telTitles3 [] PROGMEM = {
401 };
402 const char * const ReportDescParserBase::telTitles4 [] PROGMEM = {
418 };
419 const char * const ReportDescParserBase::telTitles5 [] PROGMEM = {
436 };
437 const char * const ReportDescParserBase::consTitles0[] PROGMEM = {
444 };
445 const char * const ReportDescParserBase::consTitles1[] PROGMEM = {
449 };
450 const char * const ReportDescParserBase::consTitles2[] PROGMEM = {
458 
459 };
460 const char * const ReportDescParserBase::consTitles3[] PROGMEM = {
470 };
471 const char * const ReportDescParserBase::consTitles4[] PROGMEM = {
479 };
480 const char * const ReportDescParserBase::consTitles5[] PROGMEM = {
518 };
519 const char * const ReportDescParserBase::consTitles6[] PROGMEM = {
551 };
552 const char * const ReportDescParserBase::consTitles7[] PROGMEM = {
561  pstrUsageMPX,
564 };
565 const char * const ReportDescParserBase::consTitles8[] PROGMEM = {
572 };
573 const char * const ReportDescParserBase::consTitles9[] PROGMEM = {
588 };
589 const char * const ReportDescParserBase::consTitlesA[] PROGMEM = {
596 };
597 const char * const ReportDescParserBase::consTitlesB[] PROGMEM = {
609 };
610 const char * const ReportDescParserBase::consTitlesC[] PROGMEM = {
616 };
617 const char * const ReportDescParserBase::consTitlesD[] PROGMEM = {
690 };
691 const char * const ReportDescParserBase::consTitlesE[] PROGMEM = {
833 };
834 const char * const ReportDescParserBase::digitTitles0[] PROGMEM = {
836  pstrUsagePen,
848 };
849 const char * const ReportDescParserBase::digitTitles1[] PROGMEM = {
853 
854 };
855 const char * const ReportDescParserBase::digitTitles2[] PROGMEM = {
861  pstrUsageTap,
879 };
880 const char * const ReportDescParserBase::aplphanumTitles0[] PROGMEM = {
883 };
884 const char * const ReportDescParserBase::aplphanumTitles1[] PROGMEM = {
904  pstrUsageRow,
931 };
932 const char * const ReportDescParserBase::aplphanumTitles2[] PROGMEM = {
954 };
955 const char * const ReportDescParserBase::medInstrTitles0[] PROGMEM = {
964 };
965 const char * const ReportDescParserBase::medInstrTitles1[] PROGMEM = {
971 };
972 const char * const ReportDescParserBase::medInstrTitles2[] PROGMEM = {
975 };
976 const char * const ReportDescParserBase::medInstrTitles3[] PROGMEM = {
987 };
988 const char * const ReportDescParserBase::medInstrTitles4[] PROGMEM = {
991 };
992 
993 void ReportDescParserBase::Parse(const uint16_t len, const uint8_t *pbuf, const uint16_t &offset __attribute__((unused))) {
994  uint16_t cntdn = (uint16_t)len;
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 
1013 void ReportDescParserBase::PrintValue(uint8_t *p, uint8_t len) {
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)) {
1028  case (TYPE_GLOBAL | TAG_GLOBAL_PUSH):
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;
1052  case (TYPE_GLOBAL | TAG_GLOBAL_UNIT):
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;
1067  case (TYPE_LOCAL | TAG_LOCAL_USAGEMIN):
1068  E_Notify(PSTR("\r\nUsage Min"), 0x80);
1069  break;
1070  case (TYPE_LOCAL | TAG_LOCAL_USAGEMAX):
1071  E_Notify(PSTR("\r\nUsage Max"), 0x80);
1072  break;
1073  case (TYPE_MAIN | TAG_MAIN_COLLECTION):
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 
1091 uint8_t ReportDescParserBase::ParseItem(uint8_t **pp, uint16_t *pcntdn) {
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;
1156  case (TYPE_LOCAL | TAG_LOCAL_USAGEMIN):
1157  case (TYPE_LOCAL | TAG_LOCAL_USAGEMAX):
1159  case (TYPE_GLOBAL | TAG_GLOBAL_UNIT):
1161  break;
1162  case (TYPE_GLOBAL | TAG_GLOBAL_PUSH):
1163  case (TYPE_GLOBAL | TAG_GLOBAL_POP):
1164  break;
1166  SetUsagePage(data);
1167  PrintUsagePage(data);
1168  PrintByteValue(data);
1169  break;
1170  case (TYPE_MAIN | TAG_MAIN_COLLECTION):
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):
1203  totalSize += (uint16_t)rptSize * (uint16_t)rptCount;
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)) {
1240  pfUsage = (usagePageFunctions[page - 1]);
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 
1421  if(usage == 1) E_Notify(pstrUsageMedicalUltrasound, 0x80);
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 
1432 uint8_t ReportDescParser2::ParseItem(uint8_t **pp, uint16_t *pcntdn) {
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;
1488  case (TYPE_LOCAL | TAG_LOCAL_USAGEMIN):
1489  useMin = data;
1490  break;
1491  case (TYPE_LOCAL | TAG_LOCAL_USAGEMAX):
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 
1507  totalSize += (uint16_t)rptSize * (uint16_t)rptCount;
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 
1521 void 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 
1534  uint8_t bits_of_byte = 8;
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];
1542  uint32_t dwResult;
1543  } result;
1544 
1545  result.dwResult = 0;
1546  uint8_t mask = 0;
1547 
1548  if(print_usemin_usemax)
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
1556  for(uint8_t bits_left = rptSize, bits_to_copy = 0; bits_left;
1557  bits_left -= bits_to_copy) {
1558  bits_to_copy = (bits_left > bits_of_byte) ? bits_of_byte : bits_left;
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 
1575  bits_of_byte -= bits_to_copy;
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 
1587 void UniversalReportParser::Parse(USBHID *hid, bool is_rpt_id __attribute__((unused)), uint8_t len, uint8_t *buf) {
1588  ReportDescParser2 prs(len, buf);
1589 
1590  uint8_t ret = hid->GetReportDescr(0, &prs);
1591 
1592  if(ret)
1593  ErrorMessage<uint8_t > (PSTR("GetReportDescr-2"), ret);
1594 }
const char pstrUsageYTilt[]
Definition: hidusagestr.h:814
const char pstrUsageRewind[]
Definition: hidusagestr.h:323
static const char *const medInstrTitles0[]
static const char *const usagePageTitles0[]
@@ -1074,7 +1051,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/hidescriptorparser_8h.html b/hidescriptorparser_8h.html index 83773e59..8ae4168f 100644 --- a/hidescriptorparser_8h.html +++ b/hidescriptorparser_8h.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: hidescriptorparser.h File Reference @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
- - - + + +
@@ -104,7 +81,7 @@ This graph shows which files directly or indirectly include this file:
- +
@@ -126,7 +103,7 @@ Classes diff --git a/hidescriptorparser_8h__dep__incl.map b/hidescriptorparser_8h__dep__incl.map index 5e966f16..ca645a3a 100644 --- a/hidescriptorparser_8h__dep__incl.map +++ b/hidescriptorparser_8h__dep__incl.map @@ -1,3 +1,3 @@ - + diff --git a/hidescriptorparser_8h__dep__incl.md5 b/hidescriptorparser_8h__dep__incl.md5 index e086c781..a1421715 100644 --- a/hidescriptorparser_8h__dep__incl.md5 +++ b/hidescriptorparser_8h__dep__incl.md5 @@ -1 +1 @@ -f9ba94ed99ad5905f056e92fce988411 \ No newline at end of file +ef699e62c545d11d2c79ea503d951f57 \ No newline at end of file diff --git a/hidescriptorparser_8h__dep__incl.png b/hidescriptorparser_8h__dep__incl.png index 475e2ace..7cb6c2f1 100644 Binary files a/hidescriptorparser_8h__dep__incl.png and b/hidescriptorparser_8h__dep__incl.png differ diff --git a/hidescriptorparser_8h__incl.map b/hidescriptorparser_8h__incl.map index 7559fe1b..e6ba6475 100644 --- a/hidescriptorparser_8h__incl.map +++ b/hidescriptorparser_8h__incl.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/hidescriptorparser_8h__incl.md5 b/hidescriptorparser_8h__incl.md5 index bfc34772..f713943a 100644 --- a/hidescriptorparser_8h__incl.md5 +++ b/hidescriptorparser_8h__incl.md5 @@ -1 +1 @@ -fe5843698cf13b222c52c15fd3ff6cda \ No newline at end of file +81e0e69900d2442c43e8471fdfc78594 \ No newline at end of file diff --git a/hidescriptorparser_8h__incl.png b/hidescriptorparser_8h__incl.png index 8836b9d1..75bb32bf 100644 Binary files a/hidescriptorparser_8h__incl.png and b/hidescriptorparser_8h__incl.png differ diff --git a/hidescriptorparser_8h_source.html b/hidescriptorparser_8h_source.html index e36ae434..87d61b1f 100644 --- a/hidescriptorparser_8h_source.html +++ b/hidescriptorparser_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: hidescriptorparser.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@
- + - - + + + +
- + - - + + + +
- - - - + + + +
@@ -105,7 +82,7 @@ Include dependency graph for hiduniversal.cpp: diff --git a/hiduniversal_8cpp__incl.map b/hiduniversal_8cpp__incl.map index 1478dbe7..80db73d7 100644 --- a/hiduniversal_8cpp__incl.map +++ b/hiduniversal_8cpp__incl.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/hiduniversal_8cpp__incl.md5 b/hiduniversal_8cpp__incl.md5 index c3ad3b07..52c67d09 100644 --- a/hiduniversal_8cpp__incl.md5 +++ b/hiduniversal_8cpp__incl.md5 @@ -1 +1 @@ -1e66e5231753075199ca54c70eb24f20 \ No newline at end of file +61bccc66dff51679312c2d4713fe6ee2 \ No newline at end of file diff --git a/hiduniversal_8cpp__incl.png b/hiduniversal_8cpp__incl.png index 0cdf0ede..01aedb2b 100644 Binary files a/hiduniversal_8cpp__incl.png and b/hiduniversal_8cpp__incl.png differ diff --git a/hiduniversal_8cpp_source.html b/hiduniversal_8cpp_source.html index 1702fb76..e760a5b5 100644 --- a/hiduniversal_8cpp_source.html +++ b/hiduniversal_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: hiduniversal.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - - + + +
@@ -104,10 +81,10 @@ This graph shows which files directly or indirectly include this file:
- - - - + + + +
@@ -123,7 +100,7 @@ Classes diff --git a/hiduniversal_8h__dep__incl.map b/hiduniversal_8h__dep__incl.map index cc31424c..0862c3a8 100644 --- a/hiduniversal_8h__dep__incl.map +++ b/hiduniversal_8h__dep__incl.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/hiduniversal_8h__dep__incl.md5 b/hiduniversal_8h__dep__incl.md5 index 8b07bcbb..9c8e9ff2 100644 --- a/hiduniversal_8h__dep__incl.md5 +++ b/hiduniversal_8h__dep__incl.md5 @@ -1 +1 @@ -6079ba5023de3a9bc19938f024e95433 \ No newline at end of file +1a6e99a32a72ade5845249f3b21766ae \ No newline at end of file diff --git a/hiduniversal_8h__dep__incl.png b/hiduniversal_8h__dep__incl.png index 00e1012a..4988bc37 100644 Binary files a/hiduniversal_8h__dep__incl.png and b/hiduniversal_8h__dep__incl.png differ diff --git a/hiduniversal_8h__incl.map b/hiduniversal_8h__incl.map index 630ff149..76fb2a84 100644 --- a/hiduniversal_8h__incl.map +++ b/hiduniversal_8h__incl.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/hiduniversal_8h__incl.md5 b/hiduniversal_8h__incl.md5 index 649b21d3..1ef6962c 100644 --- a/hiduniversal_8h__incl.md5 +++ b/hiduniversal_8h__incl.md5 @@ -1 +1 @@ -f268788864ba2a6e059e34b990a9ae71 \ No newline at end of file +d068f50cb7c808f3f0e52a5289e1b776 \ No newline at end of file diff --git a/hiduniversal_8h__incl.png b/hiduniversal_8h__incl.png index 0fb7eb20..52fbee7b 100644 Binary files a/hiduniversal_8h__incl.png and b/hiduniversal_8h__incl.png differ diff --git a/hiduniversal_8h_source.html b/hiduniversal_8h_source.html index 7372d04e..a577d381 100644 --- a/hiduniversal_8h_source.html +++ b/hiduniversal_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: hiduniversal.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- +
@@ -102,38 +79,38 @@ This graph shows which files directly or indirectly include this file:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
@@ -1861,7 +1838,9 @@ Variables  

Variable Documentation

- + +

◆ pstrSpace

+
@@ -1871,11 +1850,13 @@ Variables
-

Definition at line 22 of file hidusagestr.h.

+

Definition at line 22 of file hidusagestr.h.

- + +

◆ pstrCRLF

+
@@ -1885,11 +1866,13 @@ Variables
-

Definition at line 23 of file hidusagestr.h.

+

Definition at line 23 of file hidusagestr.h.

- + +

◆ pstrSingleTab

+
@@ -1899,11 +1882,13 @@ Variables
-

Definition at line 24 of file hidusagestr.h.

+

Definition at line 24 of file hidusagestr.h.

- + +

◆ pstrDoubleTab

+
@@ -1913,11 +1898,13 @@ Variables
-

Definition at line 25 of file hidusagestr.h.

+

Definition at line 25 of file hidusagestr.h.

- + +

◆ pstrTripleTab

+
@@ -1927,11 +1914,13 @@ Variables
-

Definition at line 26 of file hidusagestr.h.

+

Definition at line 26 of file hidusagestr.h.

- + +

◆ pstrUsagePageUndefined

+
@@ -1941,11 +1930,13 @@ Variables
-

Definition at line 29 of file hidusagestr.h.

+

Definition at line 29 of file hidusagestr.h.

- + +

◆ pstrUsagePageGenericDesktopControls

+
@@ -1955,11 +1946,13 @@ Variables
-

Definition at line 30 of file hidusagestr.h.

+

Definition at line 30 of file hidusagestr.h.

- + +

◆ pstrUsagePageSimulationControls

+
@@ -1969,11 +1962,13 @@ Variables
-

Definition at line 31 of file hidusagestr.h.

+

Definition at line 31 of file hidusagestr.h.

- + +

◆ pstrUsagePageVRControls

+
@@ -1983,11 +1978,13 @@ Variables
-

Definition at line 32 of file hidusagestr.h.

+

Definition at line 32 of file hidusagestr.h.

- + +

◆ pstrUsagePageSportControls

+
@@ -1997,11 +1994,13 @@ Variables
-

Definition at line 33 of file hidusagestr.h.

+

Definition at line 33 of file hidusagestr.h.

- + +

◆ pstrUsagePageGameControls

+
@@ -2011,11 +2010,13 @@ Variables
-

Definition at line 34 of file hidusagestr.h.

+

Definition at line 34 of file hidusagestr.h.

- + +

◆ pstrUsagePageGenericDeviceControls

+
@@ -2025,11 +2026,13 @@ Variables
-

Definition at line 35 of file hidusagestr.h.

+

Definition at line 35 of file hidusagestr.h.

- + +

◆ pstrUsagePageKeyboardKeypad

+
@@ -2039,11 +2042,13 @@ Variables
-

Definition at line 36 of file hidusagestr.h.

+

Definition at line 36 of file hidusagestr.h.

- + +

◆ pstrUsagePageLEDs

+
@@ -2053,11 +2058,13 @@ Variables
-

Definition at line 37 of file hidusagestr.h.

+

Definition at line 37 of file hidusagestr.h.

- + +

◆ pstrUsagePageButton

+
@@ -2067,11 +2074,13 @@ Variables
-

Definition at line 38 of file hidusagestr.h.

+

Definition at line 38 of file hidusagestr.h.

- + +

◆ pstrUsagePageOrdinal

+
@@ -2081,11 +2090,13 @@ Variables
-

Definition at line 39 of file hidusagestr.h.

+

Definition at line 39 of file hidusagestr.h.

- + +

◆ pstrUsagePageTelephone

+
@@ -2095,11 +2106,13 @@ Variables
-

Definition at line 40 of file hidusagestr.h.

+

Definition at line 40 of file hidusagestr.h.

- + +

◆ pstrUsagePageConsumer

+
@@ -2109,11 +2122,13 @@ Variables
-

Definition at line 41 of file hidusagestr.h.

+

Definition at line 41 of file hidusagestr.h.

- + +

◆ pstrUsagePageDigitizer

+
@@ -2123,11 +2138,13 @@ Variables
-

Definition at line 42 of file hidusagestr.h.

+

Definition at line 42 of file hidusagestr.h.

- + +

◆ pstrUsagePagePID

+
@@ -2137,11 +2154,13 @@ Variables
-

Definition at line 43 of file hidusagestr.h.

+

Definition at line 43 of file hidusagestr.h.

- + +

◆ pstrUsagePageUnicode

+
@@ -2151,11 +2170,13 @@ Variables
-

Definition at line 44 of file hidusagestr.h.

+

Definition at line 44 of file hidusagestr.h.

- + +

◆ pstrUsagePageAlphaNumericDisplay

+
@@ -2165,11 +2186,13 @@ Variables
-

Definition at line 45 of file hidusagestr.h.

+

Definition at line 45 of file hidusagestr.h.

- + +

◆ pstrUsagePageMedicalInstruments

+
@@ -2179,11 +2202,13 @@ Variables
-

Definition at line 46 of file hidusagestr.h.

+

Definition at line 46 of file hidusagestr.h.

- + +

◆ pstrUsagePageMonitor

+
@@ -2193,11 +2218,13 @@ Variables
-

Definition at line 47 of file hidusagestr.h.

+

Definition at line 47 of file hidusagestr.h.

- + +

◆ pstrUsagePagePower

+
@@ -2207,11 +2234,13 @@ Variables
-

Definition at line 48 of file hidusagestr.h.

+

Definition at line 48 of file hidusagestr.h.

- + +

◆ pstrUsagePageBarCodeScanner

+
@@ -2221,11 +2250,13 @@ Variables
-

Definition at line 49 of file hidusagestr.h.

+

Definition at line 49 of file hidusagestr.h.

- + +

◆ pstrUsagePageScale

+
@@ -2235,11 +2266,13 @@ Variables
-

Definition at line 50 of file hidusagestr.h.

+

Definition at line 50 of file hidusagestr.h.

- + +

◆ pstrUsagePageMSRDevices

+
@@ -2249,11 +2282,13 @@ Variables
-

Definition at line 51 of file hidusagestr.h.

+

Definition at line 51 of file hidusagestr.h.

- + +

◆ pstrUsagePagePointOfSale

+
@@ -2263,11 +2298,13 @@ Variables
-

Definition at line 52 of file hidusagestr.h.

+

Definition at line 52 of file hidusagestr.h.

- + +

◆ pstrUsagePageCameraControl

+
@@ -2277,11 +2314,13 @@ Variables
-

Definition at line 53 of file hidusagestr.h.

+

Definition at line 53 of file hidusagestr.h.

- + +

◆ pstrUsagePageArcade

+
@@ -2291,11 +2330,13 @@ Variables
-

Definition at line 54 of file hidusagestr.h.

+

Definition at line 54 of file hidusagestr.h.

- + +

◆ pstrUsagePageReserved

+
@@ -2305,11 +2346,13 @@ Variables
-

Definition at line 55 of file hidusagestr.h.

+

Definition at line 55 of file hidusagestr.h.

- + +

◆ pstrUsagePageVendorDefined

+
@@ -2319,11 +2362,13 @@ Variables
-

Definition at line 56 of file hidusagestr.h.

+

Definition at line 56 of file hidusagestr.h.

- + +

◆ pstrUsagePointer

+
@@ -2333,11 +2378,13 @@ Variables
-

Definition at line 59 of file hidusagestr.h.

+

Definition at line 59 of file hidusagestr.h.

- + +

◆ pstrUsageMouse

+
@@ -2347,11 +2394,13 @@ Variables
-

Definition at line 60 of file hidusagestr.h.

+

Definition at line 60 of file hidusagestr.h.

- + +

◆ pstrUsageJoystick

+
@@ -2361,11 +2410,13 @@ Variables
-

Definition at line 61 of file hidusagestr.h.

+

Definition at line 61 of file hidusagestr.h.

- + +

◆ pstrUsageGamePad

+
@@ -2375,11 +2426,13 @@ Variables
-

Definition at line 62 of file hidusagestr.h.

+

Definition at line 62 of file hidusagestr.h.

- + +

◆ pstrUsageKeyboard

+
@@ -2389,11 +2442,13 @@ Variables
-

Definition at line 63 of file hidusagestr.h.

+

Definition at line 63 of file hidusagestr.h.

- + +

◆ pstrUsageKeypad

+
@@ -2403,11 +2458,13 @@ Variables
-

Definition at line 64 of file hidusagestr.h.

+

Definition at line 64 of file hidusagestr.h.

- + +

◆ pstrUsageMultiAxisController

+
@@ -2417,11 +2474,13 @@ Variables
-

Definition at line 65 of file hidusagestr.h.

+

Definition at line 65 of file hidusagestr.h.

- + +

◆ pstrUsageTabletPCSystemControls

+
@@ -2431,11 +2490,13 @@ Variables
-

Definition at line 66 of file hidusagestr.h.

+

Definition at line 66 of file hidusagestr.h.

- + +

◆ pstrUsageX

+
@@ -2445,11 +2506,13 @@ Variables
-

Definition at line 67 of file hidusagestr.h.

+

Definition at line 67 of file hidusagestr.h.

- + +

◆ pstrUsageY

+
@@ -2459,11 +2522,13 @@ Variables
-

Definition at line 68 of file hidusagestr.h.

+

Definition at line 68 of file hidusagestr.h.

- + +

◆ pstrUsageZ

+
@@ -2473,11 +2538,13 @@ Variables
-

Definition at line 69 of file hidusagestr.h.

+

Definition at line 69 of file hidusagestr.h.

- + +

◆ pstrUsageRx

+
@@ -2487,11 +2554,13 @@ Variables
-

Definition at line 70 of file hidusagestr.h.

+

Definition at line 70 of file hidusagestr.h.

- + +

◆ pstrUsageRy

+
@@ -2501,11 +2570,13 @@ Variables
-

Definition at line 71 of file hidusagestr.h.

+

Definition at line 71 of file hidusagestr.h.

- + +

◆ pstrUsageRz

+
@@ -2515,11 +2586,13 @@ Variables
-

Definition at line 72 of file hidusagestr.h.

+

Definition at line 72 of file hidusagestr.h.

- + +

◆ pstrUsageSlider

+
@@ -2529,11 +2602,13 @@ Variables
-

Definition at line 73 of file hidusagestr.h.

+

Definition at line 73 of file hidusagestr.h.

- + +

◆ pstrUsageDial

+
@@ -2543,11 +2618,13 @@ Variables
-

Definition at line 74 of file hidusagestr.h.

+

Definition at line 74 of file hidusagestr.h.

- + +

◆ pstrUsageWheel

+
@@ -2557,11 +2634,13 @@ Variables
-

Definition at line 75 of file hidusagestr.h.

+

Definition at line 75 of file hidusagestr.h.

- + +

◆ pstrUsageHatSwitch

+
@@ -2571,11 +2650,13 @@ Variables
-

Definition at line 76 of file hidusagestr.h.

+

Definition at line 76 of file hidusagestr.h.

- + +

◆ pstrUsageCountedBuffer

+
@@ -2585,11 +2666,13 @@ Variables
-

Definition at line 77 of file hidusagestr.h.

+

Definition at line 77 of file hidusagestr.h.

- + +

◆ pstrUsageByteCount

+
@@ -2599,11 +2682,13 @@ Variables
-

Definition at line 78 of file hidusagestr.h.

+

Definition at line 78 of file hidusagestr.h.

- + +

◆ pstrUsageMotionWakeup

+
@@ -2613,11 +2698,13 @@ Variables
-

Definition at line 79 of file hidusagestr.h.

+

Definition at line 79 of file hidusagestr.h.

- + +

◆ pstrUsageStart

+
@@ -2627,11 +2714,13 @@ Variables
-

Definition at line 80 of file hidusagestr.h.

+

Definition at line 80 of file hidusagestr.h.

- + +

◆ pstrUsageSelect

+
@@ -2641,11 +2730,13 @@ Variables
-

Definition at line 81 of file hidusagestr.h.

+

Definition at line 81 of file hidusagestr.h.

- + +

◆ pstrUsageVx

+
@@ -2655,11 +2746,13 @@ Variables
-

Definition at line 82 of file hidusagestr.h.

+

Definition at line 82 of file hidusagestr.h.

- + +

◆ pstrUsageVy

+
@@ -2669,11 +2762,13 @@ Variables
-

Definition at line 83 of file hidusagestr.h.

+

Definition at line 83 of file hidusagestr.h.

- + +

◆ pstrUsageVz

+
@@ -2683,11 +2778,13 @@ Variables
-

Definition at line 84 of file hidusagestr.h.

+

Definition at line 84 of file hidusagestr.h.

- + +

◆ pstrUsageVbrx

+
@@ -2697,11 +2794,13 @@ Variables
-

Definition at line 85 of file hidusagestr.h.

+

Definition at line 85 of file hidusagestr.h.

- + +

◆ pstrUsageVbry

+
@@ -2711,11 +2810,13 @@ Variables
-

Definition at line 86 of file hidusagestr.h.

+

Definition at line 86 of file hidusagestr.h.

- + +

◆ pstrUsageVbrz

+
@@ -2725,11 +2826,13 @@ Variables
-

Definition at line 87 of file hidusagestr.h.

+

Definition at line 87 of file hidusagestr.h.

- + +

◆ pstrUsageVno

+
@@ -2739,11 +2842,13 @@ Variables
-

Definition at line 88 of file hidusagestr.h.

+

Definition at line 88 of file hidusagestr.h.

- + +

◆ pstrUsageFeatureNotification

+
@@ -2753,11 +2858,13 @@ Variables
-

Definition at line 89 of file hidusagestr.h.

+

Definition at line 89 of file hidusagestr.h.

- + +

◆ pstrUsageResolutionMultiplier

+
@@ -2767,11 +2874,13 @@ Variables
-

Definition at line 90 of file hidusagestr.h.

+

Definition at line 90 of file hidusagestr.h.

- + +

◆ pstrUsageSystemControl

+
@@ -2781,11 +2890,13 @@ Variables
-

Definition at line 91 of file hidusagestr.h.

+

Definition at line 91 of file hidusagestr.h.

- + +

◆ pstrUsageSystemPowerDown

+
@@ -2795,11 +2906,13 @@ Variables
-

Definition at line 92 of file hidusagestr.h.

+

Definition at line 92 of file hidusagestr.h.

- + +

◆ pstrUsageSystemSleep

+
@@ -2809,11 +2922,13 @@ Variables
-

Definition at line 93 of file hidusagestr.h.

+

Definition at line 93 of file hidusagestr.h.

- + +

◆ pstrUsageSystemWakeup

+
@@ -2823,11 +2938,13 @@ Variables
-

Definition at line 94 of file hidusagestr.h.

+

Definition at line 94 of file hidusagestr.h.

- + +

◆ pstrUsageSystemContextMenu

+
@@ -2837,11 +2954,13 @@ Variables
-

Definition at line 95 of file hidusagestr.h.

+

Definition at line 95 of file hidusagestr.h.

- + +

◆ pstrUsageSystemMainMenu

+
@@ -2851,11 +2970,13 @@ Variables
-

Definition at line 96 of file hidusagestr.h.

+

Definition at line 96 of file hidusagestr.h.

- + +

◆ pstrUsageSystemAppMenu

+
@@ -2865,11 +2986,13 @@ Variables
-

Definition at line 97 of file hidusagestr.h.

+

Definition at line 97 of file hidusagestr.h.

- + +

◆ pstrUsageSystemMenuHelp

+
@@ -2879,11 +3002,13 @@ Variables
-

Definition at line 98 of file hidusagestr.h.

+

Definition at line 98 of file hidusagestr.h.

- + +

◆ pstrUsageSystemMenuExit

+
@@ -2893,11 +3018,13 @@ Variables
-

Definition at line 99 of file hidusagestr.h.

+

Definition at line 99 of file hidusagestr.h.

- + +

◆ pstrUsageSystemMenuSelect

+
@@ -2907,11 +3034,13 @@ Variables
-

Definition at line 100 of file hidusagestr.h.

+

Definition at line 100 of file hidusagestr.h.

- + +

◆ pstrUsageSystemMenuRight

+
@@ -2921,11 +3050,13 @@ Variables
-

Definition at line 101 of file hidusagestr.h.

+

Definition at line 101 of file hidusagestr.h.

- + +

◆ pstrUsageSystemMenuLeft

+
@@ -2935,11 +3066,13 @@ Variables
-

Definition at line 102 of file hidusagestr.h.

+

Definition at line 102 of file hidusagestr.h.

- + +

◆ pstrUsageSystemMenuUp

+
@@ -2949,11 +3082,13 @@ Variables
-

Definition at line 103 of file hidusagestr.h.

+

Definition at line 103 of file hidusagestr.h.

- + +

◆ pstrUsageSystemMenuDown

+
@@ -2963,11 +3098,13 @@ Variables
-

Definition at line 104 of file hidusagestr.h.

+

Definition at line 104 of file hidusagestr.h.

- + +

◆ pstrUsageSystemColdRestart

+
@@ -2977,11 +3114,13 @@ Variables
-

Definition at line 105 of file hidusagestr.h.

+

Definition at line 105 of file hidusagestr.h.

- + +

◆ pstrUsageSystemWarmRestart

+
@@ -2991,11 +3130,13 @@ Variables
-

Definition at line 106 of file hidusagestr.h.

+

Definition at line 106 of file hidusagestr.h.

- + +

◆ pstrUsageDPadUp

+
@@ -3005,11 +3146,13 @@ Variables
-

Definition at line 107 of file hidusagestr.h.

+

Definition at line 107 of file hidusagestr.h.

- + +

◆ pstrUsageDPadDown

+
@@ -3019,11 +3162,13 @@ Variables
-

Definition at line 108 of file hidusagestr.h.

+

Definition at line 108 of file hidusagestr.h.

- + +

◆ pstrUsageDPadRight

+
@@ -3033,11 +3178,13 @@ Variables
-

Definition at line 109 of file hidusagestr.h.

+

Definition at line 109 of file hidusagestr.h.

- + +

◆ pstrUsageDPadLeft

+
@@ -3047,11 +3194,13 @@ Variables
-

Definition at line 110 of file hidusagestr.h.

+

Definition at line 110 of file hidusagestr.h.

- + +

◆ pstrUsageSystemDock

+
@@ -3061,11 +3210,13 @@ Variables
-

Definition at line 111 of file hidusagestr.h.

+

Definition at line 111 of file hidusagestr.h.

- + +

◆ pstrUsageSystemUndock

+
@@ -3075,11 +3226,13 @@ Variables
-

Definition at line 112 of file hidusagestr.h.

+

Definition at line 112 of file hidusagestr.h.

- + +

◆ pstrUsageSystemSetup

+
@@ -3089,11 +3242,13 @@ Variables
-

Definition at line 113 of file hidusagestr.h.

+

Definition at line 113 of file hidusagestr.h.

- + +

◆ pstrUsageSystemBreak

+
@@ -3103,11 +3258,13 @@ Variables
-

Definition at line 114 of file hidusagestr.h.

+

Definition at line 114 of file hidusagestr.h.

- + +

◆ pstrUsageSystemDebuggerBreak

+
@@ -3117,11 +3274,13 @@ Variables
-

Definition at line 115 of file hidusagestr.h.

+

Definition at line 115 of file hidusagestr.h.

- + +

◆ pstrUsageApplicationBreak

+
@@ -3131,11 +3290,13 @@ Variables
-

Definition at line 116 of file hidusagestr.h.

+

Definition at line 116 of file hidusagestr.h.

- + +

◆ pstrUsageApplicationDebuggerBreak

+
@@ -3145,11 +3306,13 @@ Variables
-

Definition at line 117 of file hidusagestr.h.

+

Definition at line 117 of file hidusagestr.h.

- + +

◆ pstrUsageSystemSpeakerMute

+
@@ -3159,11 +3322,13 @@ Variables
-

Definition at line 118 of file hidusagestr.h.

+

Definition at line 118 of file hidusagestr.h.

- + +

◆ pstrUsageSystemHibernate

+
@@ -3173,11 +3338,13 @@ Variables
-

Definition at line 119 of file hidusagestr.h.

+

Definition at line 119 of file hidusagestr.h.

- + +

◆ pstrUsageSystemDisplayInvert

+
@@ -3187,11 +3354,13 @@ Variables
-

Definition at line 120 of file hidusagestr.h.

+

Definition at line 120 of file hidusagestr.h.

- + +

◆ pstrUsageSystemDisplayInternal

+
@@ -3201,11 +3370,13 @@ Variables
-

Definition at line 121 of file hidusagestr.h.

+

Definition at line 121 of file hidusagestr.h.

- + +

◆ pstrUsageSystemDisplayExternal

+
@@ -3215,11 +3386,13 @@ Variables
-

Definition at line 122 of file hidusagestr.h.

+

Definition at line 122 of file hidusagestr.h.

- + +

◆ pstrUsageSystemDisplayBoth

+
@@ -3229,11 +3402,13 @@ Variables
-

Definition at line 123 of file hidusagestr.h.

+

Definition at line 123 of file hidusagestr.h.

- + +

◆ pstrUsageSystemDisplayDual

+
@@ -3243,11 +3418,13 @@ Variables
-

Definition at line 124 of file hidusagestr.h.

+

Definition at line 124 of file hidusagestr.h.

- + +

◆ pstrUsageSystemDisplayToggleIntExt

+
@@ -3257,11 +3434,13 @@ Variables
-

Definition at line 125 of file hidusagestr.h.

+

Definition at line 125 of file hidusagestr.h.

- + +

◆ pstrUsageSystemDisplaySwapPriSec

+
@@ -3271,11 +3450,13 @@ Variables
-

Definition at line 126 of file hidusagestr.h.

+

Definition at line 126 of file hidusagestr.h.

- + +

◆ pstrUsageSystemDisplayLCDAutoscale

+
@@ -3285,11 +3466,13 @@ Variables
-

Definition at line 127 of file hidusagestr.h.

+

Definition at line 127 of file hidusagestr.h.

- + +

◆ pstrUsageFlightSimulationDevice

+
@@ -3299,11 +3482,13 @@ Variables
-

Definition at line 130 of file hidusagestr.h.

+

Definition at line 130 of file hidusagestr.h.

- + +

◆ pstrUsageAutomobileSimulationDevice

+
@@ -3313,11 +3498,13 @@ Variables
-

Definition at line 131 of file hidusagestr.h.

+

Definition at line 131 of file hidusagestr.h.

- + +

◆ pstrUsageTankSimulationDevice

+
@@ -3327,11 +3514,13 @@ Variables
-

Definition at line 132 of file hidusagestr.h.

+

Definition at line 132 of file hidusagestr.h.

- + +

◆ pstrUsageSpaceshipSimulationDevice

+
@@ -3341,11 +3530,13 @@ Variables
-

Definition at line 133 of file hidusagestr.h.

+

Definition at line 133 of file hidusagestr.h.

- + +

◆ pstrUsageSubmarineSimulationDevice

+
@@ -3355,11 +3546,13 @@ Variables
-

Definition at line 134 of file hidusagestr.h.

+

Definition at line 134 of file hidusagestr.h.

- + +

◆ pstrUsageSailingSimulationDevice

+
@@ -3369,11 +3562,13 @@ Variables
-

Definition at line 135 of file hidusagestr.h.

+

Definition at line 135 of file hidusagestr.h.

- + +

◆ pstrUsageMotocicleSimulationDevice

+
@@ -3383,11 +3578,13 @@ Variables
-

Definition at line 136 of file hidusagestr.h.

+

Definition at line 136 of file hidusagestr.h.

- + +

◆ pstrUsageSportsSimulationDevice

+
@@ -3397,11 +3594,13 @@ Variables
-

Definition at line 137 of file hidusagestr.h.

+

Definition at line 137 of file hidusagestr.h.

- + +

◆ pstrUsageAirplaneSimulationDevice

+
@@ -3411,11 +3610,13 @@ Variables
-

Definition at line 138 of file hidusagestr.h.

+

Definition at line 138 of file hidusagestr.h.

- + +

◆ pstrUsageHelicopterSimulationDevice

+
@@ -3425,11 +3626,13 @@ Variables
-

Definition at line 139 of file hidusagestr.h.

+

Definition at line 139 of file hidusagestr.h.

- + +

◆ pstrUsageMagicCarpetSimulationDevice

+
@@ -3439,11 +3642,13 @@ Variables
-

Definition at line 140 of file hidusagestr.h.

+

Definition at line 140 of file hidusagestr.h.

- + +

◆ pstrUsageBicycleSimulationDevice

+
@@ -3453,11 +3658,13 @@ Variables
-

Definition at line 141 of file hidusagestr.h.

+

Definition at line 141 of file hidusagestr.h.

- + +

◆ pstrUsageFlightControlStick

+
@@ -3467,11 +3674,13 @@ Variables
-

Definition at line 142 of file hidusagestr.h.

+

Definition at line 142 of file hidusagestr.h.

- + +

◆ pstrUsageFlightStick

+
@@ -3481,11 +3690,13 @@ Variables
-

Definition at line 143 of file hidusagestr.h.

+

Definition at line 143 of file hidusagestr.h.

- + +

◆ pstrUsageCyclicControl

+
@@ -3495,11 +3706,13 @@ Variables
-

Definition at line 144 of file hidusagestr.h.

+

Definition at line 144 of file hidusagestr.h.

- + +

◆ pstrUsageCyclicTrim

+
@@ -3509,11 +3722,13 @@ Variables
-

Definition at line 145 of file hidusagestr.h.

+

Definition at line 145 of file hidusagestr.h.

- + +

◆ pstrUsageFlightYoke

+
@@ -3523,11 +3738,13 @@ Variables
-

Definition at line 146 of file hidusagestr.h.

+

Definition at line 146 of file hidusagestr.h.

- + +

◆ pstrUsageTrackControl

+
@@ -3537,11 +3754,13 @@ Variables
-

Definition at line 147 of file hidusagestr.h.

+

Definition at line 147 of file hidusagestr.h.

- + +

◆ pstrUsageAileron

+
@@ -3551,11 +3770,13 @@ Variables
-

Definition at line 148 of file hidusagestr.h.

+

Definition at line 148 of file hidusagestr.h.

- + +

◆ pstrUsageAileronTrim

+
@@ -3565,11 +3786,13 @@ Variables
-

Definition at line 149 of file hidusagestr.h.

+

Definition at line 149 of file hidusagestr.h.

- + +

◆ pstrUsageAntiTorqueControl

+
@@ -3579,11 +3802,13 @@ Variables
-

Definition at line 150 of file hidusagestr.h.

+

Definition at line 150 of file hidusagestr.h.

- + +

◆ pstrUsageAutopilotEnable

+
@@ -3593,11 +3818,13 @@ Variables
-

Definition at line 151 of file hidusagestr.h.

+

Definition at line 151 of file hidusagestr.h.

- + +

◆ pstrUsageChaffRelease

+
@@ -3607,11 +3834,13 @@ Variables
-

Definition at line 152 of file hidusagestr.h.

+

Definition at line 152 of file hidusagestr.h.

- + +

◆ pstrUsageCollectiveControl

+
@@ -3621,11 +3850,13 @@ Variables
-

Definition at line 153 of file hidusagestr.h.

+

Definition at line 153 of file hidusagestr.h.

- + +

◆ pstrUsageDiveBrake

+
@@ -3635,11 +3866,13 @@ Variables
-

Definition at line 154 of file hidusagestr.h.

+

Definition at line 154 of file hidusagestr.h.

- + +

◆ pstrUsageElectronicCountermeasures

+
@@ -3649,11 +3882,13 @@ Variables
-

Definition at line 155 of file hidusagestr.h.

+

Definition at line 155 of file hidusagestr.h.

- + +

◆ pstrUsageElevator

+
@@ -3663,11 +3898,13 @@ Variables
-

Definition at line 156 of file hidusagestr.h.

+

Definition at line 156 of file hidusagestr.h.

- + +

◆ pstrUsageElevatorTrim

+
@@ -3677,11 +3914,13 @@ Variables
-

Definition at line 157 of file hidusagestr.h.

+

Definition at line 157 of file hidusagestr.h.

- + +

◆ pstrUsageRudder

+
@@ -3691,11 +3930,13 @@ Variables
-

Definition at line 158 of file hidusagestr.h.

+

Definition at line 158 of file hidusagestr.h.

- + +

◆ pstrUsageThrottle

+
@@ -3705,11 +3946,13 @@ Variables
-

Definition at line 159 of file hidusagestr.h.

+

Definition at line 159 of file hidusagestr.h.

- + +

◆ pstrUsageFlightCommunications

+
@@ -3719,11 +3962,13 @@ Variables
-

Definition at line 160 of file hidusagestr.h.

+

Definition at line 160 of file hidusagestr.h.

- + +

◆ pstrUsageFlareRelease

+
@@ -3733,11 +3978,13 @@ Variables
-

Definition at line 161 of file hidusagestr.h.

+

Definition at line 161 of file hidusagestr.h.

- + +

◆ pstrUsageLandingGear

+
@@ -3747,11 +3994,13 @@ Variables
-

Definition at line 162 of file hidusagestr.h.

+

Definition at line 162 of file hidusagestr.h.

- + +

◆ pstrUsageToeBrake

+
@@ -3761,11 +4010,13 @@ Variables
-

Definition at line 163 of file hidusagestr.h.

+

Definition at line 163 of file hidusagestr.h.

- + +

◆ pstrUsageTrigger

+
@@ -3775,11 +4026,13 @@ Variables
-

Definition at line 164 of file hidusagestr.h.

+

Definition at line 164 of file hidusagestr.h.

- + +

◆ pstrUsageWeaponsArm

+
@@ -3789,11 +4042,13 @@ Variables
-

Definition at line 165 of file hidusagestr.h.

+

Definition at line 165 of file hidusagestr.h.

- + +

◆ pstrUsageWeaponsSelect

+
@@ -3803,11 +4058,13 @@ Variables
-

Definition at line 166 of file hidusagestr.h.

+

Definition at line 166 of file hidusagestr.h.

- + +

◆ pstrUsageWingFlaps

+
@@ -3817,11 +4074,13 @@ Variables
-

Definition at line 167 of file hidusagestr.h.

+

Definition at line 167 of file hidusagestr.h.

- + +

◆ pstrUsageAccelerator

+
@@ -3831,11 +4090,13 @@ Variables
-

Definition at line 168 of file hidusagestr.h.

+

Definition at line 168 of file hidusagestr.h.

- + +

◆ pstrUsageBrake

+
@@ -3845,11 +4106,13 @@ Variables
-

Definition at line 169 of file hidusagestr.h.

+

Definition at line 169 of file hidusagestr.h.

- + +

◆ pstrUsageClutch

+
@@ -3859,11 +4122,13 @@ Variables
-

Definition at line 170 of file hidusagestr.h.

+

Definition at line 170 of file hidusagestr.h.

- + +

◆ pstrUsageShifter

+
@@ -3873,11 +4138,13 @@ Variables
-

Definition at line 171 of file hidusagestr.h.

+

Definition at line 171 of file hidusagestr.h.

- + +

◆ pstrUsageSteering

+
@@ -3887,11 +4154,13 @@ Variables
-

Definition at line 172 of file hidusagestr.h.

+

Definition at line 172 of file hidusagestr.h.

- + +

◆ pstrUsageTurretDirection

+
@@ -3901,11 +4170,13 @@ Variables
-

Definition at line 173 of file hidusagestr.h.

+

Definition at line 173 of file hidusagestr.h.

- + +

◆ pstrUsageBarrelElevation

+
@@ -3915,11 +4186,13 @@ Variables
-

Definition at line 174 of file hidusagestr.h.

+

Definition at line 174 of file hidusagestr.h.

- + +

◆ pstrUsageDivePlane

+
@@ -3929,11 +4202,13 @@ Variables
-

Definition at line 175 of file hidusagestr.h.

+

Definition at line 175 of file hidusagestr.h.

- + +

◆ pstrUsageBallast

+
@@ -3943,11 +4218,13 @@ Variables
-

Definition at line 176 of file hidusagestr.h.

+

Definition at line 176 of file hidusagestr.h.

- + +

◆ pstrUsageBicycleCrank

+
@@ -3957,11 +4234,13 @@ Variables
-

Definition at line 177 of file hidusagestr.h.

+

Definition at line 177 of file hidusagestr.h.

- + +

◆ pstrUsageHandleBars

+
@@ -3971,11 +4250,13 @@ Variables
-

Definition at line 178 of file hidusagestr.h.

+

Definition at line 178 of file hidusagestr.h.

- + +

◆ pstrUsageFrontBrake

+
@@ -3985,11 +4266,13 @@ Variables
-

Definition at line 179 of file hidusagestr.h.

+

Definition at line 179 of file hidusagestr.h.

- + +

◆ pstrUsageRearBrake

+
@@ -3999,11 +4282,13 @@ Variables
-

Definition at line 180 of file hidusagestr.h.

+

Definition at line 180 of file hidusagestr.h.

- + +

◆ pstrUsageBelt

+
@@ -4013,11 +4298,13 @@ Variables
-

Definition at line 183 of file hidusagestr.h.

+

Definition at line 183 of file hidusagestr.h.

- + +

◆ pstrUsageBodySuit

+
@@ -4027,11 +4314,13 @@ Variables
-

Definition at line 184 of file hidusagestr.h.

+

Definition at line 184 of file hidusagestr.h.

- + +

◆ pstrUsageFlexor

+
@@ -4041,11 +4330,13 @@ Variables
-

Definition at line 185 of file hidusagestr.h.

+

Definition at line 185 of file hidusagestr.h.

- + +

◆ pstrUsageGlove

+
@@ -4055,11 +4346,13 @@ Variables
-

Definition at line 186 of file hidusagestr.h.

+

Definition at line 186 of file hidusagestr.h.

- + +

◆ pstrUsageHeadTracker

+
@@ -4069,11 +4362,13 @@ Variables
-

Definition at line 187 of file hidusagestr.h.

+

Definition at line 187 of file hidusagestr.h.

- + +

◆ pstrUsageHeadMountedDisplay

+
@@ -4083,11 +4378,13 @@ Variables
-

Definition at line 188 of file hidusagestr.h.

+

Definition at line 188 of file hidusagestr.h.

- + +

◆ pstrUsageHandTracker

+
@@ -4097,11 +4394,13 @@ Variables
-

Definition at line 189 of file hidusagestr.h.

+

Definition at line 189 of file hidusagestr.h.

- + +

◆ pstrUsageOculometer

+
@@ -4111,11 +4410,13 @@ Variables
-

Definition at line 190 of file hidusagestr.h.

+

Definition at line 190 of file hidusagestr.h.

- + +

◆ pstrUsageVest

+
@@ -4125,11 +4426,13 @@ Variables
-

Definition at line 191 of file hidusagestr.h.

+

Definition at line 191 of file hidusagestr.h.

- + +

◆ pstrUsageAnimatronicDevice

+
@@ -4139,11 +4442,13 @@ Variables
-

Definition at line 192 of file hidusagestr.h.

+

Definition at line 192 of file hidusagestr.h.

- + +

◆ pstrUsageStereoEnable

+
@@ -4153,11 +4458,13 @@ Variables
-

Definition at line 193 of file hidusagestr.h.

+

Definition at line 193 of file hidusagestr.h.

- + +

◆ pstrUsageDisplayEnable

+
@@ -4167,11 +4474,13 @@ Variables
-

Definition at line 194 of file hidusagestr.h.

+

Definition at line 194 of file hidusagestr.h.

- + +

◆ pstrUsageBaseballBat

+
@@ -4181,11 +4490,13 @@ Variables
-

Definition at line 197 of file hidusagestr.h.

+

Definition at line 197 of file hidusagestr.h.

- + +

◆ pstrUsageGolfClub

+
@@ -4195,11 +4506,13 @@ Variables
-

Definition at line 198 of file hidusagestr.h.

+

Definition at line 198 of file hidusagestr.h.

- + +

◆ pstrUsageRowingMachine

+
@@ -4209,11 +4522,13 @@ Variables
-

Definition at line 199 of file hidusagestr.h.

+

Definition at line 199 of file hidusagestr.h.

- + +

◆ pstrUsageTreadmill

+
@@ -4223,11 +4538,13 @@ Variables
-

Definition at line 200 of file hidusagestr.h.

+

Definition at line 200 of file hidusagestr.h.

- + +

◆ pstrUsageOar

+
@@ -4237,11 +4554,13 @@ Variables
-

Definition at line 201 of file hidusagestr.h.

+

Definition at line 201 of file hidusagestr.h.

- + +

◆ pstrUsageSlope

+
@@ -4251,11 +4570,13 @@ Variables
-

Definition at line 202 of file hidusagestr.h.

+

Definition at line 202 of file hidusagestr.h.

- + +

◆ pstrUsageRate

+
@@ -4265,11 +4586,13 @@ Variables
-

Definition at line 203 of file hidusagestr.h.

+

Definition at line 203 of file hidusagestr.h.

- + +

◆ pstrUsageStickSpeed

+
@@ -4279,11 +4602,13 @@ Variables
-

Definition at line 204 of file hidusagestr.h.

+

Definition at line 204 of file hidusagestr.h.

- + +

◆ pstrUsageStickFaceAngle

+
@@ -4293,11 +4618,13 @@ Variables
-

Definition at line 205 of file hidusagestr.h.

+

Definition at line 205 of file hidusagestr.h.

- + +

◆ pstrUsageStickHeelToe

+
@@ -4307,11 +4634,13 @@ Variables
-

Definition at line 206 of file hidusagestr.h.

+

Definition at line 206 of file hidusagestr.h.

- + +

◆ pstrUsageStickFollowThough

+
@@ -4321,11 +4650,13 @@ Variables
-

Definition at line 207 of file hidusagestr.h.

+

Definition at line 207 of file hidusagestr.h.

- + +

◆ pstrUsageStickTempo

+
@@ -4335,11 +4666,13 @@ Variables
-

Definition at line 208 of file hidusagestr.h.

+

Definition at line 208 of file hidusagestr.h.

- + +

◆ pstrUsageStickType

+
@@ -4349,11 +4682,13 @@ Variables
-

Definition at line 209 of file hidusagestr.h.

+

Definition at line 209 of file hidusagestr.h.

- + +

◆ pstrUsageStickHeight

+
@@ -4363,11 +4698,13 @@ Variables
-

Definition at line 210 of file hidusagestr.h.

+

Definition at line 210 of file hidusagestr.h.

- + +

◆ pstrUsagePutter

+
@@ -4377,11 +4714,13 @@ Variables
-

Definition at line 211 of file hidusagestr.h.

+

Definition at line 211 of file hidusagestr.h.

- + +

◆ pstrUsage1Iron

+
@@ -4391,11 +4730,13 @@ Variables
-

Definition at line 212 of file hidusagestr.h.

+

Definition at line 212 of file hidusagestr.h.

- + +

◆ pstrUsage2Iron

+
@@ -4405,11 +4746,13 @@ Variables
-

Definition at line 213 of file hidusagestr.h.

+

Definition at line 213 of file hidusagestr.h.

- + +

◆ pstrUsage3Iron

+
@@ -4419,11 +4762,13 @@ Variables
-

Definition at line 214 of file hidusagestr.h.

+

Definition at line 214 of file hidusagestr.h.

- + +

◆ pstrUsage4Iron

+
@@ -4433,11 +4778,13 @@ Variables
-

Definition at line 215 of file hidusagestr.h.

+

Definition at line 215 of file hidusagestr.h.

- + +

◆ pstrUsage5Iron

+
@@ -4447,11 +4794,13 @@ Variables
-

Definition at line 216 of file hidusagestr.h.

+

Definition at line 216 of file hidusagestr.h.

- + +

◆ pstrUsage6Iron

+
@@ -4461,11 +4810,13 @@ Variables
-

Definition at line 217 of file hidusagestr.h.

+

Definition at line 217 of file hidusagestr.h.

- + +

◆ pstrUsage7Iron

+
@@ -4475,11 +4826,13 @@ Variables
-

Definition at line 218 of file hidusagestr.h.

+

Definition at line 218 of file hidusagestr.h.

- + +

◆ pstrUsage8Iron

+
@@ -4489,11 +4842,13 @@ Variables
-

Definition at line 219 of file hidusagestr.h.

+

Definition at line 219 of file hidusagestr.h.

- + +

◆ pstrUsage9Iron

+
@@ -4503,11 +4858,13 @@ Variables
-

Definition at line 220 of file hidusagestr.h.

+

Definition at line 220 of file hidusagestr.h.

- + +

◆ pstrUsage10Iron

+
@@ -4517,11 +4874,13 @@ Variables
-

Definition at line 221 of file hidusagestr.h.

+

Definition at line 221 of file hidusagestr.h.

- + +

◆ pstrUsage11Iron

+
@@ -4531,11 +4890,13 @@ Variables
-

Definition at line 222 of file hidusagestr.h.

+

Definition at line 222 of file hidusagestr.h.

- + +

◆ pstrUsageSandWedge

+
@@ -4545,11 +4906,13 @@ Variables
-

Definition at line 223 of file hidusagestr.h.

+

Definition at line 223 of file hidusagestr.h.

- + +

◆ pstrUsageLoftWedge

+
@@ -4559,11 +4922,13 @@ Variables
-

Definition at line 224 of file hidusagestr.h.

+

Definition at line 224 of file hidusagestr.h.

- + +

◆ pstrUsagePowerWedge

+
@@ -4573,11 +4938,13 @@ Variables
-

Definition at line 225 of file hidusagestr.h.

+

Definition at line 225 of file hidusagestr.h.

- + +

◆ pstrUsage1Wood

+
@@ -4587,11 +4954,13 @@ Variables
-

Definition at line 226 of file hidusagestr.h.

+

Definition at line 226 of file hidusagestr.h.

- + +

◆ pstrUsage3Wood

+
@@ -4601,11 +4970,13 @@ Variables
-

Definition at line 227 of file hidusagestr.h.

+

Definition at line 227 of file hidusagestr.h.

- + +

◆ pstrUsage5Wood

+
@@ -4615,11 +4986,13 @@ Variables
-

Definition at line 228 of file hidusagestr.h.

+

Definition at line 228 of file hidusagestr.h.

- + +

◆ pstrUsage7Wood

+
@@ -4629,11 +5002,13 @@ Variables
-

Definition at line 229 of file hidusagestr.h.

+

Definition at line 229 of file hidusagestr.h.

- + +

◆ pstrUsage9Wood

+
@@ -4643,11 +5018,13 @@ Variables
-

Definition at line 230 of file hidusagestr.h.

+

Definition at line 230 of file hidusagestr.h.

- + +

◆ pstrUsage3DGameController

+
@@ -4657,11 +5034,13 @@ Variables
-

Definition at line 233 of file hidusagestr.h.

+

Definition at line 233 of file hidusagestr.h.

- + +

◆ pstrUsagePinballDevice

+
@@ -4671,11 +5050,13 @@ Variables
-

Definition at line 234 of file hidusagestr.h.

+

Definition at line 234 of file hidusagestr.h.

- + +

◆ pstrUsageGunDevice

+
@@ -4685,11 +5066,13 @@ Variables
-

Definition at line 235 of file hidusagestr.h.

+

Definition at line 235 of file hidusagestr.h.

- + +

◆ pstrUsagePointOfView

+
@@ -4699,11 +5082,13 @@ Variables
-

Definition at line 236 of file hidusagestr.h.

+

Definition at line 236 of file hidusagestr.h.

- + +

◆ pstrUsageTurnRightLeft

+
@@ -4713,11 +5098,13 @@ Variables
-

Definition at line 237 of file hidusagestr.h.

+

Definition at line 237 of file hidusagestr.h.

- + +

◆ pstrUsagePitchForwardBackward

+
@@ -4727,11 +5114,13 @@ Variables
-

Definition at line 238 of file hidusagestr.h.

+

Definition at line 238 of file hidusagestr.h.

- + +

◆ pstrUsageRollRightLeft

+
@@ -4741,11 +5130,13 @@ Variables
-

Definition at line 239 of file hidusagestr.h.

+

Definition at line 239 of file hidusagestr.h.

- + +

◆ pstrUsageMoveRightLeft

+
@@ -4755,11 +5146,13 @@ Variables
-

Definition at line 240 of file hidusagestr.h.

+

Definition at line 240 of file hidusagestr.h.

- + +

◆ pstrUsageMoveForwardBackward

+
@@ -4769,11 +5162,13 @@ Variables
-

Definition at line 241 of file hidusagestr.h.

+

Definition at line 241 of file hidusagestr.h.

- + +

◆ pstrUsageMoveUpDown

+
@@ -4783,11 +5178,13 @@ Variables
-

Definition at line 242 of file hidusagestr.h.

+

Definition at line 242 of file hidusagestr.h.

- + +

◆ pstrUsageLeanRightLeft

+
@@ -4797,11 +5194,13 @@ Variables
-

Definition at line 243 of file hidusagestr.h.

+

Definition at line 243 of file hidusagestr.h.

- + +

◆ pstrUsageLeanForwardBackward

+
@@ -4811,11 +5210,13 @@ Variables
-

Definition at line 244 of file hidusagestr.h.

+

Definition at line 244 of file hidusagestr.h.

- + +

◆ pstrUsageHeightOfPOV

+
@@ -4825,11 +5226,13 @@ Variables
-

Definition at line 245 of file hidusagestr.h.

+

Definition at line 245 of file hidusagestr.h.

- + +

◆ pstrUsageFlipper

+
@@ -4839,11 +5242,13 @@ Variables
-

Definition at line 246 of file hidusagestr.h.

+

Definition at line 246 of file hidusagestr.h.

- + +

◆ pstrUsageSecondaryFlipper

+
@@ -4853,11 +5258,13 @@ Variables
-

Definition at line 247 of file hidusagestr.h.

+

Definition at line 247 of file hidusagestr.h.

- + +

◆ pstrUsageBump

+
@@ -4867,11 +5274,13 @@ Variables
-

Definition at line 248 of file hidusagestr.h.

+

Definition at line 248 of file hidusagestr.h.

- + +

◆ pstrUsageNewGame

+
@@ -4881,11 +5290,13 @@ Variables
-

Definition at line 249 of file hidusagestr.h.

+

Definition at line 249 of file hidusagestr.h.

- + +

◆ pstrUsageShootBall

+
@@ -4895,11 +5306,13 @@ Variables
-

Definition at line 250 of file hidusagestr.h.

+

Definition at line 250 of file hidusagestr.h.

- + +

◆ pstrUsagePlayer

+
@@ -4909,11 +5322,13 @@ Variables
-

Definition at line 251 of file hidusagestr.h.

+

Definition at line 251 of file hidusagestr.h.

- + +

◆ pstrUsageGunBolt

+
@@ -4923,11 +5338,13 @@ Variables
-

Definition at line 252 of file hidusagestr.h.

+

Definition at line 252 of file hidusagestr.h.

- + +

◆ pstrUsageGunClip

+
@@ -4937,11 +5354,13 @@ Variables
-

Definition at line 253 of file hidusagestr.h.

+

Definition at line 253 of file hidusagestr.h.

- + +

◆ pstrUsageGunSelector

+
@@ -4951,11 +5370,13 @@ Variables
-

Definition at line 254 of file hidusagestr.h.

+

Definition at line 254 of file hidusagestr.h.

- + +

◆ pstrUsageGunSingleShot

+
@@ -4965,11 +5386,13 @@ Variables
-

Definition at line 255 of file hidusagestr.h.

+

Definition at line 255 of file hidusagestr.h.

- + +

◆ pstrUsageGunBurst

+
@@ -4979,11 +5402,13 @@ Variables
-

Definition at line 256 of file hidusagestr.h.

+

Definition at line 256 of file hidusagestr.h.

- + +

◆ pstrUsageGunAutomatic

+
@@ -4993,11 +5418,13 @@ Variables
-

Definition at line 257 of file hidusagestr.h.

+

Definition at line 257 of file hidusagestr.h.

- + +

◆ pstrUsageGunSafety

+
@@ -5007,11 +5434,13 @@ Variables
-

Definition at line 258 of file hidusagestr.h.

+

Definition at line 258 of file hidusagestr.h.

- + +

◆ pstrUsageGamepadFireJump

+
@@ -5021,11 +5450,13 @@ Variables
-

Definition at line 259 of file hidusagestr.h.

+

Definition at line 259 of file hidusagestr.h.

- + +

◆ pstrUsageGamepadTrigger

+
@@ -5035,11 +5466,13 @@ Variables
-

Definition at line 260 of file hidusagestr.h.

+

Definition at line 260 of file hidusagestr.h.

- + +

◆ pstrUsageBatteryStrength

+
@@ -5049,11 +5482,13 @@ Variables
-

Definition at line 263 of file hidusagestr.h.

+

Definition at line 263 of file hidusagestr.h.

- + +

◆ pstrUsageWirelessChannel

+
@@ -5063,11 +5498,13 @@ Variables
-

Definition at line 264 of file hidusagestr.h.

+

Definition at line 264 of file hidusagestr.h.

- + +

◆ pstrUsageWirelessID

+
@@ -5077,11 +5514,13 @@ Variables
-

Definition at line 265 of file hidusagestr.h.

+

Definition at line 265 of file hidusagestr.h.

- + +

◆ pstrUsageDiscoverWirelessControl

+
@@ -5091,11 +5530,13 @@ Variables
-

Definition at line 266 of file hidusagestr.h.

+

Definition at line 266 of file hidusagestr.h.

- + +

◆ pstrUsageSecurityCodeCharEntered

+
@@ -5105,11 +5546,13 @@ Variables
-

Definition at line 267 of file hidusagestr.h.

+

Definition at line 267 of file hidusagestr.h.

- + +

◆ pstrUsageSecurityCodeCharErased

+
@@ -5119,11 +5562,13 @@ Variables
-

Definition at line 268 of file hidusagestr.h.

+

Definition at line 268 of file hidusagestr.h.

- + +

◆ pstrUsageSecurityCodeCleared

+
@@ -5133,11 +5578,13 @@ Variables
-

Definition at line 269 of file hidusagestr.h.

+

Definition at line 269 of file hidusagestr.h.

- + +

◆ pstrUsageNumLock

+
@@ -5147,11 +5594,13 @@ Variables
-

Definition at line 272 of file hidusagestr.h.

+

Definition at line 272 of file hidusagestr.h.

- + +

◆ pstrUsageCapsLock

+
@@ -5161,11 +5610,13 @@ Variables
-

Definition at line 273 of file hidusagestr.h.

+

Definition at line 273 of file hidusagestr.h.

- + +

◆ pstrUsageScrollLock

+
@@ -5175,11 +5626,13 @@ Variables
-

Definition at line 274 of file hidusagestr.h.

+

Definition at line 274 of file hidusagestr.h.

- + +

◆ pstrUsageCompose

+
@@ -5189,11 +5642,13 @@ Variables
-

Definition at line 275 of file hidusagestr.h.

+

Definition at line 275 of file hidusagestr.h.

- + +

◆ pstrUsageKana

+
@@ -5203,11 +5658,13 @@ Variables
-

Definition at line 276 of file hidusagestr.h.

+

Definition at line 276 of file hidusagestr.h.

- + +

◆ pstrUsagePower

+
@@ -5217,11 +5674,13 @@ Variables
-

Definition at line 277 of file hidusagestr.h.

+

Definition at line 277 of file hidusagestr.h.

- + +

◆ pstrUsageShift

+
@@ -5231,11 +5690,13 @@ Variables
-

Definition at line 278 of file hidusagestr.h.

+

Definition at line 278 of file hidusagestr.h.

- + +

◆ pstrUsageDoNotDisturb

+
@@ -5245,11 +5706,13 @@ Variables
-

Definition at line 279 of file hidusagestr.h.

+

Definition at line 279 of file hidusagestr.h.

- + +

◆ pstrUsageMute

+
@@ -5259,11 +5722,13 @@ Variables
-

Definition at line 280 of file hidusagestr.h.

+

Definition at line 280 of file hidusagestr.h.

- + +

◆ pstrUsageToneEnable

+
@@ -5273,11 +5738,13 @@ Variables
-

Definition at line 281 of file hidusagestr.h.

+

Definition at line 281 of file hidusagestr.h.

- + +

◆ pstrUsageHighCutFilter

+
@@ -5287,11 +5754,13 @@ Variables
-

Definition at line 282 of file hidusagestr.h.

+

Definition at line 282 of file hidusagestr.h.

- + +

◆ pstrUsageLowCutFilter

+
@@ -5301,11 +5770,13 @@ Variables
-

Definition at line 283 of file hidusagestr.h.

+

Definition at line 283 of file hidusagestr.h.

- + +

◆ pstrUsageEqualizerEnable

+
@@ -5315,11 +5786,13 @@ Variables
-

Definition at line 284 of file hidusagestr.h.

+

Definition at line 284 of file hidusagestr.h.

- + +

◆ pstrUsageSoundFieldOn

+
@@ -5329,11 +5802,13 @@ Variables
-

Definition at line 285 of file hidusagestr.h.

+

Definition at line 285 of file hidusagestr.h.

- + +

◆ pstrUsageSurroundOn

+
@@ -5343,11 +5818,13 @@ Variables
-

Definition at line 286 of file hidusagestr.h.

+

Definition at line 286 of file hidusagestr.h.

- + +

◆ pstrUsageRepeat

+
@@ -5357,11 +5834,13 @@ Variables
-

Definition at line 287 of file hidusagestr.h.

+

Definition at line 287 of file hidusagestr.h.

- + +

◆ pstrUsageStereo

+
@@ -5371,11 +5850,13 @@ Variables
-

Definition at line 288 of file hidusagestr.h.

+

Definition at line 288 of file hidusagestr.h.

- + +

◆ pstrUsageSamplingRateDetect

+
@@ -5385,11 +5866,13 @@ Variables
-

Definition at line 289 of file hidusagestr.h.

+

Definition at line 289 of file hidusagestr.h.

- + +

◆ pstrUsageSpinning

+
@@ -5399,11 +5882,13 @@ Variables
-

Definition at line 290 of file hidusagestr.h.

+

Definition at line 290 of file hidusagestr.h.

- + +

◆ pstrUsageCAV

+
@@ -5413,11 +5898,13 @@ Variables
-

Definition at line 291 of file hidusagestr.h.

+

Definition at line 291 of file hidusagestr.h.

- + +

◆ pstrUsageCLV

+
@@ -5427,11 +5914,13 @@ Variables
-

Definition at line 292 of file hidusagestr.h.

+

Definition at line 292 of file hidusagestr.h.

- + +

◆ pstrUsageRecordingFormatDetect

+
@@ -5441,11 +5930,13 @@ Variables
-

Definition at line 293 of file hidusagestr.h.

+

Definition at line 293 of file hidusagestr.h.

- + +

◆ pstrUsageOffHook

+
@@ -5455,11 +5946,13 @@ Variables
-

Definition at line 294 of file hidusagestr.h.

+

Definition at line 294 of file hidusagestr.h.

- + +

◆ pstrUsageRing

+
@@ -5469,11 +5962,13 @@ Variables
-

Definition at line 295 of file hidusagestr.h.

+

Definition at line 295 of file hidusagestr.h.

- + +

◆ pstrUsageMessageWaiting

+
@@ -5483,11 +5978,13 @@ Variables
-

Definition at line 296 of file hidusagestr.h.

+

Definition at line 296 of file hidusagestr.h.

- + +

◆ pstrUsageDataMode

+
@@ -5497,11 +5994,13 @@ Variables
-

Definition at line 297 of file hidusagestr.h.

+

Definition at line 297 of file hidusagestr.h.

- + +

◆ pstrUsageBatteryOperation

+
@@ -5511,11 +6010,13 @@ Variables
-

Definition at line 298 of file hidusagestr.h.

+

Definition at line 298 of file hidusagestr.h.

- + +

◆ pstrUsageBatteryOK

+
@@ -5525,11 +6026,13 @@ Variables
-

Definition at line 299 of file hidusagestr.h.

+

Definition at line 299 of file hidusagestr.h.

- + +

◆ pstrUsageBatteryLow

+
@@ -5539,11 +6042,13 @@ Variables
-

Definition at line 300 of file hidusagestr.h.

+

Definition at line 300 of file hidusagestr.h.

- + +

◆ pstrUsageSpeaker

+
@@ -5553,11 +6058,13 @@ Variables
-

Definition at line 301 of file hidusagestr.h.

+

Definition at line 301 of file hidusagestr.h.

- + +

◆ pstrUsageHeadSet

+
@@ -5567,11 +6074,13 @@ Variables
-

Definition at line 302 of file hidusagestr.h.

+

Definition at line 302 of file hidusagestr.h.

- + +

◆ pstrUsageHold

+
@@ -5581,11 +6090,13 @@ Variables
-

Definition at line 303 of file hidusagestr.h.

+

Definition at line 303 of file hidusagestr.h.

- + +

◆ pstrUsageMicrophone

+
@@ -5595,11 +6106,13 @@ Variables
-

Definition at line 304 of file hidusagestr.h.

+

Definition at line 304 of file hidusagestr.h.

- + +

◆ pstrUsageCoverage

+
@@ -5609,11 +6122,13 @@ Variables
-

Definition at line 305 of file hidusagestr.h.

+

Definition at line 305 of file hidusagestr.h.

- + +

◆ pstrUsageNightMode

+
@@ -5623,11 +6138,13 @@ Variables
-

Definition at line 306 of file hidusagestr.h.

+

Definition at line 306 of file hidusagestr.h.

- + +

◆ pstrUsageSendCalls

+
@@ -5637,11 +6154,13 @@ Variables
-

Definition at line 307 of file hidusagestr.h.

+

Definition at line 307 of file hidusagestr.h.

- + +

◆ pstrUsageCallPickup

+
@@ -5651,11 +6170,13 @@ Variables
-

Definition at line 308 of file hidusagestr.h.

+

Definition at line 308 of file hidusagestr.h.

- + +

◆ pstrUsageConference

+
@@ -5665,11 +6186,13 @@ Variables
-

Definition at line 309 of file hidusagestr.h.

+

Definition at line 309 of file hidusagestr.h.

- + +

◆ pstrUsageStandBy

+
@@ -5679,11 +6202,13 @@ Variables
-

Definition at line 310 of file hidusagestr.h.

+

Definition at line 310 of file hidusagestr.h.

- + +

◆ pstrUsageCameraOn

+
@@ -5693,11 +6218,13 @@ Variables
-

Definition at line 311 of file hidusagestr.h.

+

Definition at line 311 of file hidusagestr.h.

- + +

◆ pstrUsageCameraOff

+
@@ -5707,11 +6234,13 @@ Variables
-

Definition at line 312 of file hidusagestr.h.

+

Definition at line 312 of file hidusagestr.h.

- + +

◆ pstrUsageOnLine

+
@@ -5721,11 +6250,13 @@ Variables
-

Definition at line 313 of file hidusagestr.h.

+

Definition at line 313 of file hidusagestr.h.

- + +

◆ pstrUsageOffLine

+
@@ -5735,11 +6266,13 @@ Variables
-

Definition at line 314 of file hidusagestr.h.

+

Definition at line 314 of file hidusagestr.h.

- + +

◆ pstrUsageBusy

+
@@ -5749,11 +6282,13 @@ Variables
-

Definition at line 315 of file hidusagestr.h.

+

Definition at line 315 of file hidusagestr.h.

- + +

◆ pstrUsageReady

+
@@ -5763,11 +6298,13 @@ Variables
-

Definition at line 316 of file hidusagestr.h.

+

Definition at line 316 of file hidusagestr.h.

- + +

◆ pstrUsagePaperOut

+
@@ -5777,11 +6314,13 @@ Variables
-

Definition at line 317 of file hidusagestr.h.

+

Definition at line 317 of file hidusagestr.h.

- + +

◆ pstrUsagePaperJam

+
@@ -5791,11 +6330,13 @@ Variables
-

Definition at line 318 of file hidusagestr.h.

+

Definition at line 318 of file hidusagestr.h.

- + +

◆ pstrUsageRemote

+
@@ -5805,11 +6346,13 @@ Variables
-

Definition at line 319 of file hidusagestr.h.

+

Definition at line 319 of file hidusagestr.h.

- + +

◆ pstrUsageForward

+
@@ -5819,11 +6362,13 @@ Variables
-

Definition at line 320 of file hidusagestr.h.

+

Definition at line 320 of file hidusagestr.h.

- + +

◆ pstrUsageReverse

+
@@ -5833,11 +6378,13 @@ Variables
-

Definition at line 321 of file hidusagestr.h.

+

Definition at line 321 of file hidusagestr.h.

- + +

◆ pstrUsageStop

+
@@ -5847,11 +6394,13 @@ Variables
-

Definition at line 322 of file hidusagestr.h.

+

Definition at line 322 of file hidusagestr.h.

- + +

◆ pstrUsageRewind

+
@@ -5861,11 +6410,13 @@ Variables
-

Definition at line 323 of file hidusagestr.h.

+

Definition at line 323 of file hidusagestr.h.

- + +

◆ pstrUsageFastForward

+
@@ -5875,11 +6426,13 @@ Variables
-

Definition at line 324 of file hidusagestr.h.

+

Definition at line 324 of file hidusagestr.h.

- + +

◆ pstrUsagePlay

+
@@ -5889,11 +6442,13 @@ Variables
-

Definition at line 325 of file hidusagestr.h.

+

Definition at line 325 of file hidusagestr.h.

- + +

◆ pstrUsagePause

+
@@ -5903,11 +6458,13 @@ Variables
-

Definition at line 326 of file hidusagestr.h.

+

Definition at line 326 of file hidusagestr.h.

- + +

◆ pstrUsageRecord

+
@@ -5917,11 +6474,13 @@ Variables
-

Definition at line 327 of file hidusagestr.h.

+

Definition at line 327 of file hidusagestr.h.

- + +

◆ pstrUsageError

+
@@ -5931,11 +6490,13 @@ Variables
-

Definition at line 328 of file hidusagestr.h.

+

Definition at line 328 of file hidusagestr.h.

- + +

◆ pstrUsageSelectedIndicator

+
@@ -5945,11 +6506,13 @@ Variables
-

Definition at line 329 of file hidusagestr.h.

+

Definition at line 329 of file hidusagestr.h.

- + +

◆ pstrUsageInUseIndicator

+
@@ -5959,11 +6522,13 @@ Variables
-

Definition at line 330 of file hidusagestr.h.

+

Definition at line 330 of file hidusagestr.h.

- + +

◆ pstrUsageMultiModeIndicator

+
@@ -5973,11 +6538,13 @@ Variables
-

Definition at line 331 of file hidusagestr.h.

+

Definition at line 331 of file hidusagestr.h.

- + +

◆ pstrUsageIndicatorOn

+
@@ -5987,11 +6554,13 @@ Variables
-

Definition at line 332 of file hidusagestr.h.

+

Definition at line 332 of file hidusagestr.h.

- + +

◆ pstrUsageIndicatorFlash

+
@@ -6001,11 +6570,13 @@ Variables
-

Definition at line 333 of file hidusagestr.h.

+

Definition at line 333 of file hidusagestr.h.

- + +

◆ pstrUsageIndicatorSlowBlink

+
@@ -6015,11 +6586,13 @@ Variables
-

Definition at line 334 of file hidusagestr.h.

+

Definition at line 334 of file hidusagestr.h.

- + +

◆ pstrUsageIndicatorFastBlink

+
@@ -6029,11 +6602,13 @@ Variables
-

Definition at line 335 of file hidusagestr.h.

+

Definition at line 335 of file hidusagestr.h.

- + +

◆ pstrUsageIndicatorOff

+
@@ -6043,11 +6618,13 @@ Variables
-

Definition at line 336 of file hidusagestr.h.

+

Definition at line 336 of file hidusagestr.h.

- + +

◆ pstrUsageFlashOnTime

+
@@ -6057,11 +6634,13 @@ Variables
-

Definition at line 337 of file hidusagestr.h.

+

Definition at line 337 of file hidusagestr.h.

- + +

◆ pstrUsageSlowBlinkOnTime

+
@@ -6071,11 +6650,13 @@ Variables
-

Definition at line 338 of file hidusagestr.h.

+

Definition at line 338 of file hidusagestr.h.

- + +

◆ pstrUsageSlowBlinkOffTime

+
@@ -6085,11 +6666,13 @@ Variables
-

Definition at line 339 of file hidusagestr.h.

+

Definition at line 339 of file hidusagestr.h.

- + +

◆ pstrUsageFastBlinkOnTime

+
@@ -6099,11 +6682,13 @@ Variables
-

Definition at line 340 of file hidusagestr.h.

+

Definition at line 340 of file hidusagestr.h.

- + +

◆ pstrUsageFastBlinkOffTime

+
@@ -6113,11 +6698,13 @@ Variables
-

Definition at line 341 of file hidusagestr.h.

+

Definition at line 341 of file hidusagestr.h.

- + +

◆ pstrUsageIndicatorColor

+
@@ -6127,11 +6714,13 @@ Variables
-

Definition at line 342 of file hidusagestr.h.

+

Definition at line 342 of file hidusagestr.h.

- + +

◆ pstrUsageIndicatorRed

+
@@ -6141,11 +6730,13 @@ Variables
-

Definition at line 343 of file hidusagestr.h.

+

Definition at line 343 of file hidusagestr.h.

- + +

◆ pstrUsageIndicatorGreen

+
@@ -6155,11 +6746,13 @@ Variables
-

Definition at line 344 of file hidusagestr.h.

+

Definition at line 344 of file hidusagestr.h.

- + +

◆ pstrUsageIndicatorAmber

+
@@ -6169,11 +6762,13 @@ Variables
-

Definition at line 345 of file hidusagestr.h.

+

Definition at line 345 of file hidusagestr.h.

- + +

◆ pstrUsageGenericIndicator

+
@@ -6183,11 +6778,13 @@ Variables
-

Definition at line 346 of file hidusagestr.h.

+

Definition at line 346 of file hidusagestr.h.

- + +

◆ pstrUsageSystemSuspend

+
@@ -6197,11 +6794,13 @@ Variables
-

Definition at line 347 of file hidusagestr.h.

+

Definition at line 347 of file hidusagestr.h.

- + +

◆ pstrUsageExternalPowerConnected

+
@@ -6211,11 +6810,13 @@ Variables
-

Definition at line 348 of file hidusagestr.h.

+

Definition at line 348 of file hidusagestr.h.

- + +

◆ pstrUsagePhone

+
@@ -6225,11 +6826,13 @@ Variables
-

Definition at line 351 of file hidusagestr.h.

+

Definition at line 351 of file hidusagestr.h.

- + +

◆ pstrUsageAnsweringMachine

+
@@ -6239,11 +6842,13 @@ Variables
-

Definition at line 352 of file hidusagestr.h.

+

Definition at line 352 of file hidusagestr.h.

- + +

◆ pstrUsageMessageControls

+
@@ -6253,11 +6858,13 @@ Variables
-

Definition at line 353 of file hidusagestr.h.

+

Definition at line 353 of file hidusagestr.h.

- + +

◆ pstrUsageHandset

+
@@ -6267,11 +6874,13 @@ Variables
-

Definition at line 354 of file hidusagestr.h.

+

Definition at line 354 of file hidusagestr.h.

- + +

◆ pstrUsageHeadset

+
@@ -6281,11 +6890,13 @@ Variables
-

Definition at line 355 of file hidusagestr.h.

+

Definition at line 355 of file hidusagestr.h.

- + +

◆ pstrUsageTelephonyKeyPad

+
@@ -6295,11 +6906,13 @@ Variables
-

Definition at line 356 of file hidusagestr.h.

+

Definition at line 356 of file hidusagestr.h.

- + +

◆ pstrUsageProgrammableButton

+
@@ -6309,11 +6922,13 @@ Variables
-

Definition at line 357 of file hidusagestr.h.

+

Definition at line 357 of file hidusagestr.h.

- + +

◆ pstrUsageHookSwitch

+
@@ -6323,11 +6938,13 @@ Variables
-

Definition at line 358 of file hidusagestr.h.

+

Definition at line 358 of file hidusagestr.h.

- + +

◆ pstrUsageFlash

+
@@ -6337,11 +6954,13 @@ Variables
-

Definition at line 359 of file hidusagestr.h.

+

Definition at line 359 of file hidusagestr.h.

- + +

◆ pstrUsageFeature

+
@@ -6351,11 +6970,13 @@ Variables
-

Definition at line 360 of file hidusagestr.h.

+

Definition at line 360 of file hidusagestr.h.

- + +

◆ pstrUsageRedial

+
@@ -6365,11 +6986,13 @@ Variables
-

Definition at line 362 of file hidusagestr.h.

+

Definition at line 362 of file hidusagestr.h.

- + +

◆ pstrUsageTransfer

+
@@ -6379,11 +7002,13 @@ Variables
-

Definition at line 363 of file hidusagestr.h.

+

Definition at line 363 of file hidusagestr.h.

- + +

◆ pstrUsageDrop

+
@@ -6393,11 +7018,13 @@ Variables
-

Definition at line 364 of file hidusagestr.h.

+

Definition at line 364 of file hidusagestr.h.

- + +

◆ pstrUsagePark

+
@@ -6407,11 +7034,13 @@ Variables
-

Definition at line 365 of file hidusagestr.h.

+

Definition at line 365 of file hidusagestr.h.

- + +

◆ pstrUsageForwardCalls

+
@@ -6421,11 +7050,13 @@ Variables
-

Definition at line 366 of file hidusagestr.h.

+

Definition at line 366 of file hidusagestr.h.

- + +

◆ pstrUsageAlternateFunction

+
@@ -6435,11 +7066,13 @@ Variables
-

Definition at line 367 of file hidusagestr.h.

+

Definition at line 367 of file hidusagestr.h.

- + +

◆ pstrUsageLine

+
@@ -6449,11 +7082,13 @@ Variables
-

Definition at line 368 of file hidusagestr.h.

+

Definition at line 368 of file hidusagestr.h.

- + +

◆ pstrUsageSpeakerPhone

+
@@ -6463,11 +7098,13 @@ Variables
-

Definition at line 369 of file hidusagestr.h.

+

Definition at line 369 of file hidusagestr.h.

- + +

◆ pstrUsageRingEnable

+
@@ -6477,11 +7114,13 @@ Variables
-

Definition at line 371 of file hidusagestr.h.

+

Definition at line 371 of file hidusagestr.h.

- + +

◆ pstrUsageRingSelect

+
@@ -6491,11 +7130,13 @@ Variables
-

Definition at line 372 of file hidusagestr.h.

+

Definition at line 372 of file hidusagestr.h.

- + +

◆ pstrUsagePhoneMute

+
@@ -6505,11 +7146,13 @@ Variables
-

Definition at line 373 of file hidusagestr.h.

+

Definition at line 373 of file hidusagestr.h.

- + +

◆ pstrUsageCallerID

+
@@ -6519,11 +7162,13 @@ Variables
-

Definition at line 374 of file hidusagestr.h.

+

Definition at line 374 of file hidusagestr.h.

- + +

◆ pstrUsageSend

+
@@ -6533,11 +7178,13 @@ Variables
-

Definition at line 375 of file hidusagestr.h.

+

Definition at line 375 of file hidusagestr.h.

- + +

◆ pstrUsageSpeedDial

+
@@ -6547,11 +7194,13 @@ Variables
-

Definition at line 376 of file hidusagestr.h.

+

Definition at line 376 of file hidusagestr.h.

- + +

◆ pstrUsageStoreNumber

+
@@ -6561,11 +7210,13 @@ Variables
-

Definition at line 377 of file hidusagestr.h.

+

Definition at line 377 of file hidusagestr.h.

- + +

◆ pstrUsageRecallNumber

+
@@ -6575,11 +7226,13 @@ Variables
-

Definition at line 378 of file hidusagestr.h.

+

Definition at line 378 of file hidusagestr.h.

- + +

◆ pstrUsagePhoneDirectory

+
@@ -6589,11 +7242,13 @@ Variables
-

Definition at line 379 of file hidusagestr.h.

+

Definition at line 379 of file hidusagestr.h.

- + +

◆ pstrUsageVoiceMail

+
@@ -6603,11 +7258,13 @@ Variables
-

Definition at line 380 of file hidusagestr.h.

+

Definition at line 380 of file hidusagestr.h.

- + +

◆ pstrUsageScreenCalls

+
@@ -6617,11 +7274,13 @@ Variables
-

Definition at line 381 of file hidusagestr.h.

+

Definition at line 381 of file hidusagestr.h.

- + +

◆ pstrUsageMessage

+
@@ -6631,11 +7290,13 @@ Variables
-

Definition at line 383 of file hidusagestr.h.

+

Definition at line 383 of file hidusagestr.h.

- + +

◆ pstrUsageAnswerOnOff

+
@@ -6645,11 +7306,13 @@ Variables
-

Definition at line 384 of file hidusagestr.h.

+

Definition at line 384 of file hidusagestr.h.

- + +

◆ pstrUsageInsideDialTone

+
@@ -6659,11 +7322,13 @@ Variables
-

Definition at line 385 of file hidusagestr.h.

+

Definition at line 385 of file hidusagestr.h.

- + +

◆ pstrUsageOutsideDialTone

+
@@ -6673,11 +7338,13 @@ Variables
-

Definition at line 386 of file hidusagestr.h.

+

Definition at line 386 of file hidusagestr.h.

- + +

◆ pstrUsageInsideRingTone

+
@@ -6687,11 +7354,13 @@ Variables
-

Definition at line 387 of file hidusagestr.h.

+

Definition at line 387 of file hidusagestr.h.

- + +

◆ pstrUsageOutsideRingTone

+
@@ -6701,11 +7370,13 @@ Variables
-

Definition at line 388 of file hidusagestr.h.

+

Definition at line 388 of file hidusagestr.h.

- + +

◆ pstrUsagePriorityRingTone

+
@@ -6715,11 +7386,13 @@ Variables
-

Definition at line 389 of file hidusagestr.h.

+

Definition at line 389 of file hidusagestr.h.

- + +

◆ pstrUsageInsideRingback

+
@@ -6729,11 +7402,13 @@ Variables
-

Definition at line 390 of file hidusagestr.h.

+

Definition at line 390 of file hidusagestr.h.

- + +

◆ pstrUsagePriorityRingback

+
@@ -6743,11 +7418,13 @@ Variables
-

Definition at line 391 of file hidusagestr.h.

+

Definition at line 391 of file hidusagestr.h.

- + +

◆ pstrUsageLineBusyTone

+
@@ -6757,11 +7434,13 @@ Variables
-

Definition at line 392 of file hidusagestr.h.

+

Definition at line 392 of file hidusagestr.h.

- + +

◆ pstrUsageReorderTone

+
@@ -6771,11 +7450,13 @@ Variables
-

Definition at line 393 of file hidusagestr.h.

+

Definition at line 393 of file hidusagestr.h.

- + +

◆ pstrUsageCallWaitingTone

+
@@ -6785,11 +7466,13 @@ Variables
-

Definition at line 394 of file hidusagestr.h.

+

Definition at line 394 of file hidusagestr.h.

- + +

◆ pstrUsageConfirmationTone1

+
@@ -6799,11 +7482,13 @@ Variables
-

Definition at line 395 of file hidusagestr.h.

+

Definition at line 395 of file hidusagestr.h.

- + +

◆ pstrUsageConfirmationTone2

+
@@ -6813,11 +7498,13 @@ Variables
-

Definition at line 396 of file hidusagestr.h.

+

Definition at line 396 of file hidusagestr.h.

- + +

◆ pstrUsageTonesOff

+
@@ -6827,11 +7514,13 @@ Variables
-

Definition at line 397 of file hidusagestr.h.

+

Definition at line 397 of file hidusagestr.h.

- + +

◆ pstrUsageOutsideRingback

+
@@ -6841,11 +7530,13 @@ Variables
-

Definition at line 398 of file hidusagestr.h.

+

Definition at line 398 of file hidusagestr.h.

- + +

◆ pstrUsageRinger

+
@@ -6855,11 +7546,13 @@ Variables
-

Definition at line 399 of file hidusagestr.h.

+

Definition at line 399 of file hidusagestr.h.

- + +

◆ pstrUsagePhoneKey0

+
@@ -6869,11 +7562,13 @@ Variables
-

Definition at line 400 of file hidusagestr.h.

+

Definition at line 400 of file hidusagestr.h.

- + +

◆ pstrUsagePhoneKey1

+
@@ -6883,11 +7578,13 @@ Variables
-

Definition at line 401 of file hidusagestr.h.

+

Definition at line 401 of file hidusagestr.h.

- + +

◆ pstrUsagePhoneKey2

+
@@ -6897,11 +7594,13 @@ Variables
-

Definition at line 402 of file hidusagestr.h.

+

Definition at line 402 of file hidusagestr.h.

- + +

◆ pstrUsagePhoneKey3

+
@@ -6911,11 +7610,13 @@ Variables
-

Definition at line 403 of file hidusagestr.h.

+

Definition at line 403 of file hidusagestr.h.

- + +

◆ pstrUsagePhoneKey4

+
@@ -6925,11 +7626,13 @@ Variables
-

Definition at line 404 of file hidusagestr.h.

+

Definition at line 404 of file hidusagestr.h.

- + +

◆ pstrUsagePhoneKey5

+
@@ -6939,11 +7642,13 @@ Variables
-

Definition at line 405 of file hidusagestr.h.

+

Definition at line 405 of file hidusagestr.h.

- + +

◆ pstrUsagePhoneKey6

+
@@ -6953,11 +7658,13 @@ Variables
-

Definition at line 406 of file hidusagestr.h.

+

Definition at line 406 of file hidusagestr.h.

- + +

◆ pstrUsagePhoneKey7

+
@@ -6967,11 +7674,13 @@ Variables
-

Definition at line 407 of file hidusagestr.h.

+

Definition at line 407 of file hidusagestr.h.

- + +

◆ pstrUsagePhoneKey8

+
@@ -6981,11 +7690,13 @@ Variables
-

Definition at line 408 of file hidusagestr.h.

+

Definition at line 408 of file hidusagestr.h.

- + +

◆ pstrUsagePhoneKey9

+
@@ -6995,11 +7706,13 @@ Variables
-

Definition at line 409 of file hidusagestr.h.

+

Definition at line 409 of file hidusagestr.h.

- + +

◆ pstrUsagePhoneKeyStar

+
@@ -7009,11 +7722,13 @@ Variables
-

Definition at line 410 of file hidusagestr.h.

+

Definition at line 410 of file hidusagestr.h.

- + +

◆ pstrUsagePhoneKeyPound

+
@@ -7023,11 +7738,13 @@ Variables
-

Definition at line 411 of file hidusagestr.h.

+

Definition at line 411 of file hidusagestr.h.

- + +

◆ pstrUsagePhoneKeyA

+
@@ -7037,11 +7754,13 @@ Variables
-

Definition at line 412 of file hidusagestr.h.

+

Definition at line 412 of file hidusagestr.h.

- + +

◆ pstrUsagePhoneKeyB

+
@@ -7051,11 +7770,13 @@ Variables
-

Definition at line 413 of file hidusagestr.h.

+

Definition at line 413 of file hidusagestr.h.

- + +

◆ pstrUsagePhoneKeyC

+
@@ -7065,11 +7786,13 @@ Variables
-

Definition at line 414 of file hidusagestr.h.

+

Definition at line 414 of file hidusagestr.h.

- + +

◆ pstrUsagePhoneKeyD

+
@@ -7079,11 +7802,13 @@ Variables
-

Definition at line 415 of file hidusagestr.h.

+

Definition at line 415 of file hidusagestr.h.

- + +

◆ pstrUsageConsumerControl

+
@@ -7093,11 +7818,13 @@ Variables
-

Definition at line 418 of file hidusagestr.h.

+

Definition at line 418 of file hidusagestr.h.

- + +

◆ pstrUsageNumericKeyPad

+
@@ -7107,11 +7834,13 @@ Variables
-

Definition at line 419 of file hidusagestr.h.

+

Definition at line 419 of file hidusagestr.h.

- + +

◆ pstrUsageHeadphone

+
@@ -7121,11 +7850,13 @@ Variables
-

Definition at line 422 of file hidusagestr.h.

+

Definition at line 422 of file hidusagestr.h.

- + +

◆ pstrUsageGraphicEqualizer

+
@@ -7135,11 +7866,13 @@ Variables
-

Definition at line 423 of file hidusagestr.h.

+

Definition at line 423 of file hidusagestr.h.

- + +

◆ pstrUsagePlus10

+
@@ -7149,11 +7882,13 @@ Variables
-

Definition at line 424 of file hidusagestr.h.

+

Definition at line 424 of file hidusagestr.h.

- + +

◆ pstrUsagePlus100

+
@@ -7163,11 +7898,13 @@ Variables
-

Definition at line 425 of file hidusagestr.h.

+

Definition at line 425 of file hidusagestr.h.

- + +

◆ pstrUsageAMPM

+
@@ -7177,11 +7914,13 @@ Variables
-

Definition at line 426 of file hidusagestr.h.

+

Definition at line 426 of file hidusagestr.h.

- + +

◆ pstrUsageReset

+
@@ -7191,11 +7930,13 @@ Variables
-

Definition at line 428 of file hidusagestr.h.

+

Definition at line 428 of file hidusagestr.h.

- + +

◆ pstrUsageSleep

+
@@ -7205,11 +7946,13 @@ Variables
-

Definition at line 429 of file hidusagestr.h.

+

Definition at line 429 of file hidusagestr.h.

- + +

◆ pstrUsageSleepAfter

+
@@ -7219,11 +7962,13 @@ Variables
-

Definition at line 430 of file hidusagestr.h.

+

Definition at line 430 of file hidusagestr.h.

- + +

◆ pstrUsageSleepMode

+
@@ -7233,11 +7978,13 @@ Variables
-

Definition at line 431 of file hidusagestr.h.

+

Definition at line 431 of file hidusagestr.h.

- + +

◆ pstrUsageIllumination

+
@@ -7247,11 +7994,13 @@ Variables
-

Definition at line 432 of file hidusagestr.h.

+

Definition at line 432 of file hidusagestr.h.

- + +

◆ pstrUsageFunctionButtons

+
@@ -7261,11 +8010,13 @@ Variables
-

Definition at line 433 of file hidusagestr.h.

+

Definition at line 433 of file hidusagestr.h.

- + +

◆ pstrUsageMenu

+
@@ -7275,11 +8026,13 @@ Variables
-

Definition at line 434 of file hidusagestr.h.

+

Definition at line 434 of file hidusagestr.h.

- + +

◆ pstrUsageMenuPick

+
@@ -7289,11 +8042,13 @@ Variables
-

Definition at line 435 of file hidusagestr.h.

+

Definition at line 435 of file hidusagestr.h.

- + +

◆ pstrUsageMenuUp

+
@@ -7303,11 +8058,13 @@ Variables
-

Definition at line 436 of file hidusagestr.h.

+

Definition at line 436 of file hidusagestr.h.

- + +

◆ pstrUsageMenuDown

+
@@ -7317,11 +8074,13 @@ Variables
-

Definition at line 437 of file hidusagestr.h.

+

Definition at line 437 of file hidusagestr.h.

- + +

◆ pstrUsageMenuLeft

+
@@ -7331,11 +8090,13 @@ Variables
-

Definition at line 438 of file hidusagestr.h.

+

Definition at line 438 of file hidusagestr.h.

- + +

◆ pstrUsageMenuRight

+
@@ -7345,11 +8106,13 @@ Variables
-

Definition at line 439 of file hidusagestr.h.

+

Definition at line 439 of file hidusagestr.h.

- + +

◆ pstrUsageMenuEscape

+
@@ -7359,11 +8122,13 @@ Variables
-

Definition at line 440 of file hidusagestr.h.

+

Definition at line 440 of file hidusagestr.h.

- + +

◆ pstrUsageMenuValueIncrease

+
@@ -7373,11 +8138,13 @@ Variables
-

Definition at line 441 of file hidusagestr.h.

+

Definition at line 441 of file hidusagestr.h.

- + +

◆ pstrUsageMenuValueDecrease

+
@@ -7387,11 +8154,13 @@ Variables
-

Definition at line 442 of file hidusagestr.h.

+

Definition at line 442 of file hidusagestr.h.

- + +

◆ pstrUsageDataOnScreen

+
@@ -7401,11 +8170,13 @@ Variables
-

Definition at line 443 of file hidusagestr.h.

+

Definition at line 443 of file hidusagestr.h.

- + +

◆ pstrUsageClosedCaption

+
@@ -7415,11 +8186,13 @@ Variables
-

Definition at line 444 of file hidusagestr.h.

+

Definition at line 444 of file hidusagestr.h.

- + +

◆ pstrUsageClosedCaptionSelect

+
@@ -7429,11 +8202,13 @@ Variables
-

Definition at line 445 of file hidusagestr.h.

+

Definition at line 445 of file hidusagestr.h.

- + +

◆ pstrUsageVCRTV

+
@@ -7443,11 +8218,13 @@ Variables
-

Definition at line 446 of file hidusagestr.h.

+

Definition at line 446 of file hidusagestr.h.

- + +

◆ pstrUsageBroadcastMode

+
@@ -7457,11 +8234,13 @@ Variables
-

Definition at line 447 of file hidusagestr.h.

+

Definition at line 447 of file hidusagestr.h.

- + +

◆ pstrUsageSnapshot

+
@@ -7471,11 +8250,13 @@ Variables
-

Definition at line 448 of file hidusagestr.h.

+

Definition at line 448 of file hidusagestr.h.

- + +

◆ pstrUsageStill

+
@@ -7485,11 +8266,13 @@ Variables
-

Definition at line 449 of file hidusagestr.h.

+

Definition at line 449 of file hidusagestr.h.

- + +

◆ pstrUsageSelection

+
@@ -7499,11 +8282,13 @@ Variables
-

Definition at line 450 of file hidusagestr.h.

+

Definition at line 450 of file hidusagestr.h.

- + +

◆ pstrUsageAssignSelection

+
@@ -7513,11 +8298,13 @@ Variables
-

Definition at line 451 of file hidusagestr.h.

+

Definition at line 451 of file hidusagestr.h.

- + +

◆ pstrUsageModeStep

+
@@ -7527,11 +8314,13 @@ Variables
-

Definition at line 452 of file hidusagestr.h.

+

Definition at line 452 of file hidusagestr.h.

- + +

◆ pstrUsageRecallLast

+
@@ -7541,11 +8330,13 @@ Variables
-

Definition at line 453 of file hidusagestr.h.

+

Definition at line 453 of file hidusagestr.h.

- + +

◆ pstrUsageEnterChannel

+
@@ -7555,11 +8346,13 @@ Variables
-

Definition at line 454 of file hidusagestr.h.

+

Definition at line 454 of file hidusagestr.h.

- + +

◆ pstrUsageOrderMovie

+
@@ -7569,11 +8362,13 @@ Variables
-

Definition at line 455 of file hidusagestr.h.

+

Definition at line 455 of file hidusagestr.h.

- + +

◆ pstrUsageChannel

+
@@ -7583,11 +8378,13 @@ Variables
-

Definition at line 456 of file hidusagestr.h.

+

Definition at line 456 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelection

+
@@ -7597,11 +8394,13 @@ Variables
-

Definition at line 457 of file hidusagestr.h.

+

Definition at line 457 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelectComputer

+
@@ -7611,11 +8410,13 @@ Variables
-

Definition at line 458 of file hidusagestr.h.

+

Definition at line 458 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelectTV

+
@@ -7625,11 +8426,13 @@ Variables
-

Definition at line 459 of file hidusagestr.h.

+

Definition at line 459 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelectWWW

+
@@ -7639,11 +8442,13 @@ Variables
-

Definition at line 460 of file hidusagestr.h.

+

Definition at line 460 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelectDVD

+
@@ -7653,11 +8458,13 @@ Variables
-

Definition at line 461 of file hidusagestr.h.

+

Definition at line 461 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelectTelephone

+
@@ -7667,11 +8474,13 @@ Variables
-

Definition at line 462 of file hidusagestr.h.

+

Definition at line 462 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelectProgramGuide

+
@@ -7681,11 +8490,13 @@ Variables
-

Definition at line 463 of file hidusagestr.h.

+

Definition at line 463 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelectVideoPhone

+
@@ -7695,11 +8506,13 @@ Variables
-

Definition at line 464 of file hidusagestr.h.

+

Definition at line 464 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelectGames

+
@@ -7709,11 +8522,13 @@ Variables
-

Definition at line 465 of file hidusagestr.h.

+

Definition at line 465 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelectMessages

+
@@ -7723,11 +8538,13 @@ Variables
-

Definition at line 466 of file hidusagestr.h.

+

Definition at line 466 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelectCD

+
@@ -7737,11 +8554,13 @@ Variables
-

Definition at line 467 of file hidusagestr.h.

+

Definition at line 467 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelectVCR

+
@@ -7751,11 +8570,13 @@ Variables
-

Definition at line 468 of file hidusagestr.h.

+

Definition at line 468 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelectTuner

+
@@ -7765,11 +8586,13 @@ Variables
-

Definition at line 469 of file hidusagestr.h.

+

Definition at line 469 of file hidusagestr.h.

- + +

◆ pstrUsageQuit

+
@@ -7779,11 +8602,13 @@ Variables
-

Definition at line 470 of file hidusagestr.h.

+

Definition at line 470 of file hidusagestr.h.

- + +

◆ pstrUsageHelp

+
@@ -7793,11 +8618,13 @@ Variables
-

Definition at line 471 of file hidusagestr.h.

+

Definition at line 471 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelectTape

+
@@ -7807,11 +8634,13 @@ Variables
-

Definition at line 472 of file hidusagestr.h.

+

Definition at line 472 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelectCable

+
@@ -7821,11 +8650,13 @@ Variables
-

Definition at line 473 of file hidusagestr.h.

+

Definition at line 473 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelectSatellite

+
@@ -7835,11 +8666,13 @@ Variables
-

Definition at line 474 of file hidusagestr.h.

+

Definition at line 474 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelectSecurity

+
@@ -7849,11 +8682,13 @@ Variables
-

Definition at line 475 of file hidusagestr.h.

+

Definition at line 475 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelectHome

+
@@ -7863,11 +8698,13 @@ Variables
-

Definition at line 476 of file hidusagestr.h.

+

Definition at line 476 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelectCall

+
@@ -7877,11 +8714,13 @@ Variables
-

Definition at line 477 of file hidusagestr.h.

+

Definition at line 477 of file hidusagestr.h.

- + +

◆ pstrUsageChannelIncrement

+
@@ -7891,11 +8730,13 @@ Variables
-

Definition at line 478 of file hidusagestr.h.

+

Definition at line 478 of file hidusagestr.h.

- + +

◆ pstrUsageChannelDecrement

+
@@ -7905,11 +8746,13 @@ Variables
-

Definition at line 479 of file hidusagestr.h.

+

Definition at line 479 of file hidusagestr.h.

- + +

◆ pstrUsageMediaSelectSAP

+
@@ -7919,11 +8762,13 @@ Variables
-

Definition at line 480 of file hidusagestr.h.

+

Definition at line 480 of file hidusagestr.h.

- + +

◆ pstrUsageVCRPlus

+
@@ -7933,11 +8778,13 @@ Variables
-

Definition at line 481 of file hidusagestr.h.

+

Definition at line 481 of file hidusagestr.h.

- + +

◆ pstrUsageOnce

+
@@ -7947,11 +8794,13 @@ Variables
-

Definition at line 482 of file hidusagestr.h.

+

Definition at line 482 of file hidusagestr.h.

- + +

◆ pstrUsageDaily

+
@@ -7961,11 +8810,13 @@ Variables
-

Definition at line 483 of file hidusagestr.h.

+

Definition at line 483 of file hidusagestr.h.

- + +

◆ pstrUsageWeekly

+
@@ -7975,11 +8826,13 @@ Variables
-

Definition at line 484 of file hidusagestr.h.

+

Definition at line 484 of file hidusagestr.h.

- + +

◆ pstrUsageMonthly

+
@@ -7989,11 +8842,13 @@ Variables
-

Definition at line 485 of file hidusagestr.h.

+

Definition at line 485 of file hidusagestr.h.

- + +

◆ pstrUsageScanNextTrack

+
@@ -8003,11 +8858,13 @@ Variables
-

Definition at line 491 of file hidusagestr.h.

+

Definition at line 491 of file hidusagestr.h.

- + +

◆ pstrUsageScanPreviousTrack

+
@@ -8017,11 +8874,13 @@ Variables
-

Definition at line 492 of file hidusagestr.h.

+

Definition at line 492 of file hidusagestr.h.

- + +

◆ pstrUsageEject

+
@@ -8031,11 +8890,13 @@ Variables
-

Definition at line 494 of file hidusagestr.h.

+

Definition at line 494 of file hidusagestr.h.

- + +

◆ pstrUsageRandomPlay

+
@@ -8045,11 +8906,13 @@ Variables
-

Definition at line 495 of file hidusagestr.h.

+

Definition at line 495 of file hidusagestr.h.

- + +

◆ pstrUsageSelectDisk

+
@@ -8059,11 +8922,13 @@ Variables
-

Definition at line 496 of file hidusagestr.h.

+

Definition at line 496 of file hidusagestr.h.

- + +

◆ pstrUsageEnterDisk

+
@@ -8073,11 +8938,13 @@ Variables
-

Definition at line 497 of file hidusagestr.h.

+

Definition at line 497 of file hidusagestr.h.

- + +

◆ pstrUsageTracking

+
@@ -8087,11 +8954,13 @@ Variables
-

Definition at line 499 of file hidusagestr.h.

+

Definition at line 499 of file hidusagestr.h.

- + +

◆ pstrUsageTrackNormal

+
@@ -8101,11 +8970,13 @@ Variables
-

Definition at line 500 of file hidusagestr.h.

+

Definition at line 500 of file hidusagestr.h.

- + +

◆ pstrUsageSlowTracking

+
@@ -8115,11 +8986,13 @@ Variables
-

Definition at line 501 of file hidusagestr.h.

+

Definition at line 501 of file hidusagestr.h.

- + +

◆ pstrUsageFrameForward

+
@@ -8129,11 +9002,13 @@ Variables
-

Definition at line 502 of file hidusagestr.h.

+

Definition at line 502 of file hidusagestr.h.

- + +

◆ pstrUsageFrameBackwards

+
@@ -8143,11 +9018,13 @@ Variables
-

Definition at line 503 of file hidusagestr.h.

+

Definition at line 503 of file hidusagestr.h.

- + +

◆ pstrUsageMark

+
@@ -8157,11 +9034,13 @@ Variables
-

Definition at line 504 of file hidusagestr.h.

+

Definition at line 504 of file hidusagestr.h.

- + +

◆ pstrUsageClearMark

+
@@ -8171,11 +9050,13 @@ Variables
-

Definition at line 505 of file hidusagestr.h.

+

Definition at line 505 of file hidusagestr.h.

- + +

◆ pstrUsageRepeatFromMark

+
@@ -8185,11 +9066,13 @@ Variables
-

Definition at line 506 of file hidusagestr.h.

+

Definition at line 506 of file hidusagestr.h.

- + +

◆ pstrUsageReturnToMark

+
@@ -8199,11 +9082,13 @@ Variables
-

Definition at line 507 of file hidusagestr.h.

+

Definition at line 507 of file hidusagestr.h.

- + +

◆ pstrUsageSearchMarkForward

+
@@ -8213,11 +9098,13 @@ Variables
-

Definition at line 508 of file hidusagestr.h.

+

Definition at line 508 of file hidusagestr.h.

- + +

◆ pstrUsageSearchMarkBackwards

+
@@ -8227,11 +9114,13 @@ Variables
-

Definition at line 509 of file hidusagestr.h.

+

Definition at line 509 of file hidusagestr.h.

- + +

◆ pstrUsageCounterReset

+
@@ -8241,11 +9130,13 @@ Variables
-

Definition at line 510 of file hidusagestr.h.

+

Definition at line 510 of file hidusagestr.h.

- + +

◆ pstrUsageShowCounter

+
@@ -8255,11 +9146,13 @@ Variables
-

Definition at line 511 of file hidusagestr.h.

+

Definition at line 511 of file hidusagestr.h.

- + +

◆ pstrUsageTrackingIncrement

+
@@ -8269,11 +9162,13 @@ Variables
-

Definition at line 512 of file hidusagestr.h.

+

Definition at line 512 of file hidusagestr.h.

- + +

◆ pstrUsageTrackingDecrement

+
@@ -8283,11 +9178,13 @@ Variables
-

Definition at line 513 of file hidusagestr.h.

+

Definition at line 513 of file hidusagestr.h.

- + +

◆ pstrUsageStopEject

+
@@ -8297,11 +9194,13 @@ Variables
-

Definition at line 514 of file hidusagestr.h.

+

Definition at line 514 of file hidusagestr.h.

- + +

◆ pstrUsagePlayPause

+
@@ -8311,11 +9210,13 @@ Variables
-

Definition at line 515 of file hidusagestr.h.

+

Definition at line 515 of file hidusagestr.h.

- + +

◆ pstrUsagePlaySkip

+
@@ -8325,11 +9226,13 @@ Variables
-

Definition at line 516 of file hidusagestr.h.

+

Definition at line 516 of file hidusagestr.h.

- + +

◆ pstrUsageVolume

+
@@ -8339,11 +9242,13 @@ Variables
-

Definition at line 517 of file hidusagestr.h.

+

Definition at line 517 of file hidusagestr.h.

- + +

◆ pstrUsageBalance

+
@@ -8353,11 +9258,13 @@ Variables
-

Definition at line 518 of file hidusagestr.h.

+

Definition at line 518 of file hidusagestr.h.

- + +

◆ pstrUsageBass

+
@@ -8367,11 +9274,13 @@ Variables
-

Definition at line 520 of file hidusagestr.h.

+

Definition at line 520 of file hidusagestr.h.

- + +

◆ pstrUsageTreble

+
@@ -8381,11 +9290,13 @@ Variables
-

Definition at line 521 of file hidusagestr.h.

+

Definition at line 521 of file hidusagestr.h.

- + +

◆ pstrUsageBassBoost

+
@@ -8395,11 +9306,13 @@ Variables
-

Definition at line 522 of file hidusagestr.h.

+

Definition at line 522 of file hidusagestr.h.

- + +

◆ pstrUsageSurroundMode

+
@@ -8409,11 +9322,13 @@ Variables
-

Definition at line 523 of file hidusagestr.h.

+

Definition at line 523 of file hidusagestr.h.

- + +

◆ pstrUsageLoudness

+
@@ -8423,11 +9338,13 @@ Variables
-

Definition at line 524 of file hidusagestr.h.

+

Definition at line 524 of file hidusagestr.h.

- + +

◆ pstrUsageMPX

+
@@ -8437,11 +9354,13 @@ Variables
-

Definition at line 525 of file hidusagestr.h.

+

Definition at line 525 of file hidusagestr.h.

- + +

◆ pstrUsageVolumeIncrement

+
@@ -8451,11 +9370,13 @@ Variables
-

Definition at line 526 of file hidusagestr.h.

+

Definition at line 526 of file hidusagestr.h.

- + +

◆ pstrUsageVolumeDecrement

+
@@ -8465,11 +9386,13 @@ Variables
-

Definition at line 527 of file hidusagestr.h.

+

Definition at line 527 of file hidusagestr.h.

- + +

◆ pstrUsageSpeedSelect

+
@@ -8479,11 +9402,13 @@ Variables
-

Definition at line 528 of file hidusagestr.h.

+

Definition at line 528 of file hidusagestr.h.

- + +

◆ pstrUsagePlaybackSpeed

+
@@ -8493,11 +9418,13 @@ Variables
-

Definition at line 529 of file hidusagestr.h.

+

Definition at line 529 of file hidusagestr.h.

- + +

◆ pstrUsageStandardPlay

+
@@ -8507,11 +9434,13 @@ Variables
-

Definition at line 530 of file hidusagestr.h.

+

Definition at line 530 of file hidusagestr.h.

- + +

◆ pstrUsageLongPlay

+
@@ -8521,11 +9450,13 @@ Variables
-

Definition at line 531 of file hidusagestr.h.

+

Definition at line 531 of file hidusagestr.h.

- + +

◆ pstrUsageExtendedPlay

+
@@ -8535,11 +9466,13 @@ Variables
-

Definition at line 532 of file hidusagestr.h.

+

Definition at line 532 of file hidusagestr.h.

- + +

◆ pstrUsageSlow

+
@@ -8549,11 +9482,13 @@ Variables
-

Definition at line 533 of file hidusagestr.h.

+

Definition at line 533 of file hidusagestr.h.

- + +

◆ pstrUsageFanEnable

+
@@ -8563,11 +9498,13 @@ Variables
-

Definition at line 534 of file hidusagestr.h.

+

Definition at line 534 of file hidusagestr.h.

- + +

◆ pstrUsageFanSpeed

+
@@ -8577,11 +9514,13 @@ Variables
-

Definition at line 535 of file hidusagestr.h.

+

Definition at line 535 of file hidusagestr.h.

- + +

◆ pstrUsageLightEnable

+
@@ -8591,11 +9530,13 @@ Variables
-

Definition at line 536 of file hidusagestr.h.

+

Definition at line 536 of file hidusagestr.h.

- + +

◆ pstrUsageLightIlluminationLevel

+
@@ -8605,11 +9546,13 @@ Variables
-

Definition at line 537 of file hidusagestr.h.

+

Definition at line 537 of file hidusagestr.h.

- + +

◆ pstrUsageClimateControlEnable

+
@@ -8619,11 +9562,13 @@ Variables
-

Definition at line 538 of file hidusagestr.h.

+

Definition at line 538 of file hidusagestr.h.

- + +

◆ pstrUsageRoomTemperature

+
@@ -8633,11 +9578,13 @@ Variables
-

Definition at line 539 of file hidusagestr.h.

+

Definition at line 539 of file hidusagestr.h.

- + +

◆ pstrUsageSecurityEnable

+
@@ -8647,11 +9594,13 @@ Variables
-

Definition at line 540 of file hidusagestr.h.

+

Definition at line 540 of file hidusagestr.h.

- + +

◆ pstrUsageFireAlarm

+
@@ -8661,11 +9610,13 @@ Variables
-

Definition at line 541 of file hidusagestr.h.

+

Definition at line 541 of file hidusagestr.h.

- + +

◆ pstrUsagePoliceAlarm

+
@@ -8675,11 +9626,13 @@ Variables
-

Definition at line 542 of file hidusagestr.h.

+

Definition at line 542 of file hidusagestr.h.

- + +

◆ pstrUsageProximity

+
@@ -8689,11 +9642,13 @@ Variables
-

Definition at line 543 of file hidusagestr.h.

+

Definition at line 543 of file hidusagestr.h.

- + +

◆ pstrUsageMotion

+
@@ -8703,11 +9658,13 @@ Variables
-

Definition at line 544 of file hidusagestr.h.

+

Definition at line 544 of file hidusagestr.h.

- + +

◆ pstrUsageDuresAlarm

+
@@ -8717,11 +9674,13 @@ Variables
-

Definition at line 545 of file hidusagestr.h.

+

Definition at line 545 of file hidusagestr.h.

- + +

◆ pstrUsageHoldupAlarm

+
@@ -8731,11 +9690,13 @@ Variables
-

Definition at line 546 of file hidusagestr.h.

+

Definition at line 546 of file hidusagestr.h.

- + +

◆ pstrUsageMedicalAlarm

+
@@ -8745,11 +9706,13 @@ Variables
-

Definition at line 547 of file hidusagestr.h.

+

Definition at line 547 of file hidusagestr.h.

- + +

◆ pstrUsageBalanceRight

+
@@ -8759,11 +9722,13 @@ Variables
-

Definition at line 548 of file hidusagestr.h.

+

Definition at line 548 of file hidusagestr.h.

- + +

◆ pstrUsageBalanceLeft

+
@@ -8773,11 +9738,13 @@ Variables
-

Definition at line 549 of file hidusagestr.h.

+

Definition at line 549 of file hidusagestr.h.

- + +

◆ pstrUsageBassIncrement

+
@@ -8787,11 +9754,13 @@ Variables
-

Definition at line 550 of file hidusagestr.h.

+

Definition at line 550 of file hidusagestr.h.

- + +

◆ pstrUsageBassDecrement

+
@@ -8801,11 +9770,13 @@ Variables
-

Definition at line 551 of file hidusagestr.h.

+

Definition at line 551 of file hidusagestr.h.

- + +

◆ pstrUsageTrebleIncrement

+
@@ -8815,11 +9786,13 @@ Variables
-

Definition at line 552 of file hidusagestr.h.

+

Definition at line 552 of file hidusagestr.h.

- + +

◆ pstrUsageTrebleDecrement

+
@@ -8829,11 +9802,13 @@ Variables
-

Definition at line 553 of file hidusagestr.h.

+

Definition at line 553 of file hidusagestr.h.

- + +

◆ pstrUsageSpeakerSystem

+
@@ -8843,11 +9818,13 @@ Variables
-

Definition at line 554 of file hidusagestr.h.

+

Definition at line 554 of file hidusagestr.h.

- + +

◆ pstrUsageChannelLeft

+
@@ -8857,11 +9834,13 @@ Variables
-

Definition at line 555 of file hidusagestr.h.

+

Definition at line 555 of file hidusagestr.h.

- + +

◆ pstrUsageChannelRight

+
@@ -8871,11 +9850,13 @@ Variables
-

Definition at line 556 of file hidusagestr.h.

+

Definition at line 556 of file hidusagestr.h.

- + +

◆ pstrUsageChannelCenter

+
@@ -8885,11 +9866,13 @@ Variables
-

Definition at line 557 of file hidusagestr.h.

+

Definition at line 557 of file hidusagestr.h.

- + +

◆ pstrUsageChannelFront

+
@@ -8899,11 +9882,13 @@ Variables
-

Definition at line 558 of file hidusagestr.h.

+

Definition at line 558 of file hidusagestr.h.

- + +

◆ pstrUsageChannelCenterFront

+
@@ -8913,11 +9898,13 @@ Variables
-

Definition at line 559 of file hidusagestr.h.

+

Definition at line 559 of file hidusagestr.h.

- + +

◆ pstrUsageChannelSide

+
@@ -8927,11 +9914,13 @@ Variables
-

Definition at line 560 of file hidusagestr.h.

+

Definition at line 560 of file hidusagestr.h.

- + +

◆ pstrUsageChannelSurround

+
@@ -8941,11 +9930,13 @@ Variables
-

Definition at line 561 of file hidusagestr.h.

+

Definition at line 561 of file hidusagestr.h.

- + +

◆ pstrUsageChannelLowFreqEnhancement

+
@@ -8955,11 +9946,13 @@ Variables
-

Definition at line 562 of file hidusagestr.h.

+

Definition at line 562 of file hidusagestr.h.

- + +

◆ pstrUsageChannelTop

+
@@ -8969,11 +9962,13 @@ Variables
-

Definition at line 563 of file hidusagestr.h.

+

Definition at line 563 of file hidusagestr.h.

- + +

◆ pstrUsageChannelUnknown

+
@@ -8983,11 +9978,13 @@ Variables
-

Definition at line 564 of file hidusagestr.h.

+

Definition at line 564 of file hidusagestr.h.

- + +

◆ pstrUsageSubChannel

+
@@ -8997,11 +9994,13 @@ Variables
-

Definition at line 565 of file hidusagestr.h.

+

Definition at line 565 of file hidusagestr.h.

- + +

◆ pstrUsageSubChannelIncrement

+
@@ -9011,11 +10010,13 @@ Variables
-

Definition at line 566 of file hidusagestr.h.

+

Definition at line 566 of file hidusagestr.h.

- + +

◆ pstrUsageSubChannelDecrement

+
@@ -9025,11 +10026,13 @@ Variables
-

Definition at line 567 of file hidusagestr.h.

+

Definition at line 567 of file hidusagestr.h.

- + +

◆ pstrUsageAlternateAudioIncrement

+
@@ -9039,11 +10042,13 @@ Variables
-

Definition at line 568 of file hidusagestr.h.

+

Definition at line 568 of file hidusagestr.h.

- + +

◆ pstrUsageAlternateAudioDecrement

+
@@ -9053,11 +10058,13 @@ Variables
-

Definition at line 569 of file hidusagestr.h.

+

Definition at line 569 of file hidusagestr.h.

- + +

◆ pstrUsageApplicationLaunchButtons

+
@@ -9067,11 +10074,13 @@ Variables
-

Definition at line 570 of file hidusagestr.h.

+

Definition at line 570 of file hidusagestr.h.

- + +

◆ pstrUsageALLaunchButtonConfigTool

+
@@ -9081,11 +10090,13 @@ Variables
-

Definition at line 571 of file hidusagestr.h.

+

Definition at line 571 of file hidusagestr.h.

- + +

◆ pstrUsageALProgrammableButton

+
@@ -9095,11 +10106,13 @@ Variables
-

Definition at line 572 of file hidusagestr.h.

+

Definition at line 572 of file hidusagestr.h.

- + +

◆ pstrUsageALConsumerControlConfig

+
@@ -9109,11 +10122,13 @@ Variables
-

Definition at line 573 of file hidusagestr.h.

+

Definition at line 573 of file hidusagestr.h.

- + +

◆ pstrUsageALWordProcessor

+
@@ -9123,11 +10138,13 @@ Variables
-

Definition at line 574 of file hidusagestr.h.

+

Definition at line 574 of file hidusagestr.h.

- + +

◆ pstrUsageALTextEditor

+
@@ -9137,11 +10154,13 @@ Variables
-

Definition at line 575 of file hidusagestr.h.

+

Definition at line 575 of file hidusagestr.h.

- + +

◆ pstrUsageALSpreadsheet

+
@@ -9151,11 +10170,13 @@ Variables
-

Definition at line 576 of file hidusagestr.h.

+

Definition at line 576 of file hidusagestr.h.

- + +

◆ pstrUsageALGraphicsEditor

+
@@ -9165,11 +10186,13 @@ Variables
-

Definition at line 577 of file hidusagestr.h.

+

Definition at line 577 of file hidusagestr.h.

- + +

◆ pstrUsageALPresentationApp

+
@@ -9179,11 +10202,13 @@ Variables
-

Definition at line 578 of file hidusagestr.h.

+

Definition at line 578 of file hidusagestr.h.

- + +

◆ pstrUsageALDatabaseApp

+
@@ -9193,11 +10218,13 @@ Variables
-

Definition at line 579 of file hidusagestr.h.

+

Definition at line 579 of file hidusagestr.h.

- + +

◆ pstrUsageALEmailReader

+
@@ -9207,11 +10234,13 @@ Variables
-

Definition at line 580 of file hidusagestr.h.

+

Definition at line 580 of file hidusagestr.h.

- + +

◆ pstrUsageALNewsreader

+
@@ -9221,11 +10250,13 @@ Variables
-

Definition at line 581 of file hidusagestr.h.

+

Definition at line 581 of file hidusagestr.h.

- + +

◆ pstrUsageALVoicemail

+
@@ -9235,11 +10266,13 @@ Variables
-

Definition at line 582 of file hidusagestr.h.

+

Definition at line 582 of file hidusagestr.h.

- + +

◆ pstrUsageALContactsAddressBook

+
@@ -9249,11 +10282,13 @@ Variables
-

Definition at line 583 of file hidusagestr.h.

+

Definition at line 583 of file hidusagestr.h.

- + +

◆ pstrUsageALCalendarSchedule

+
@@ -9263,11 +10298,13 @@ Variables
-

Definition at line 584 of file hidusagestr.h.

+

Definition at line 584 of file hidusagestr.h.

- + +

◆ pstrUsageALTaskProjectManager

+
@@ -9277,11 +10314,13 @@ Variables
-

Definition at line 585 of file hidusagestr.h.

+

Definition at line 585 of file hidusagestr.h.

- + +

◆ pstrUsageALLogJournalTimecard

+
@@ -9291,11 +10330,13 @@ Variables
-

Definition at line 586 of file hidusagestr.h.

+

Definition at line 586 of file hidusagestr.h.

- + +

◆ pstrUsageALCheckbookFinance

+
@@ -9305,11 +10346,13 @@ Variables
-

Definition at line 587 of file hidusagestr.h.

+

Definition at line 587 of file hidusagestr.h.

- + +

◆ pstrUsageALCalculator

+
@@ -9319,11 +10362,13 @@ Variables
-

Definition at line 588 of file hidusagestr.h.

+

Definition at line 588 of file hidusagestr.h.

- + +

◆ pstrUsageALAVCapturePlayback

+
@@ -9333,11 +10378,13 @@ Variables
-

Definition at line 589 of file hidusagestr.h.

+

Definition at line 589 of file hidusagestr.h.

- + +

◆ pstrUsageALLocalMachineBrowser

+
@@ -9347,11 +10394,13 @@ Variables
-

Definition at line 590 of file hidusagestr.h.

+

Definition at line 590 of file hidusagestr.h.

- + +

◆ pstrUsageALLANWANBrow

+
@@ -9361,11 +10410,13 @@ Variables
-

Definition at line 591 of file hidusagestr.h.

+

Definition at line 591 of file hidusagestr.h.

- + +

◆ pstrUsageALInternetBrowser

+
@@ -9375,11 +10426,13 @@ Variables
-

Definition at line 592 of file hidusagestr.h.

+

Definition at line 592 of file hidusagestr.h.

- + +

◆ pstrUsageALRemoteNetISPConnect

+
@@ -9389,11 +10442,13 @@ Variables
-

Definition at line 593 of file hidusagestr.h.

+

Definition at line 593 of file hidusagestr.h.

- + +

◆ pstrUsageALNetworkConference

+
@@ -9403,11 +10458,13 @@ Variables
-

Definition at line 594 of file hidusagestr.h.

+

Definition at line 594 of file hidusagestr.h.

- + +

◆ pstrUsageALNetworkChat

+
@@ -9417,11 +10474,13 @@ Variables
-

Definition at line 595 of file hidusagestr.h.

+

Definition at line 595 of file hidusagestr.h.

- + +

◆ pstrUsageALTelephonyDialer

+
@@ -9431,11 +10490,13 @@ Variables
-

Definition at line 596 of file hidusagestr.h.

+

Definition at line 596 of file hidusagestr.h.

- + +

◆ pstrUsageALLogon

+
@@ -9445,11 +10506,13 @@ Variables
-

Definition at line 597 of file hidusagestr.h.

+

Definition at line 597 of file hidusagestr.h.

- + +

◆ pstrUsageALLogoff

+
@@ -9459,11 +10522,13 @@ Variables
-

Definition at line 598 of file hidusagestr.h.

+

Definition at line 598 of file hidusagestr.h.

- + +

◆ pstrUsageALLogonLogoff

+
@@ -9473,11 +10538,13 @@ Variables
-

Definition at line 599 of file hidusagestr.h.

+

Definition at line 599 of file hidusagestr.h.

- + +

◆ pstrUsageALTermLockScrSav

+
@@ -9487,11 +10554,13 @@ Variables
-

Definition at line 600 of file hidusagestr.h.

+

Definition at line 600 of file hidusagestr.h.

- + +

◆ pstrUsageALControlPannel

+
@@ -9501,11 +10570,13 @@ Variables
-

Definition at line 601 of file hidusagestr.h.

+

Definition at line 601 of file hidusagestr.h.

- + +

◆ pstrUsageALCommandLineProcessorRun

+
@@ -9515,11 +10586,13 @@ Variables
-

Definition at line 602 of file hidusagestr.h.

+

Definition at line 602 of file hidusagestr.h.

- + +

◆ pstrUsageALProcessTaskManager

+
@@ -9529,11 +10602,13 @@ Variables
-

Definition at line 603 of file hidusagestr.h.

+

Definition at line 603 of file hidusagestr.h.

- + +

◆ pstrUsageALSelectTaskApplication

+
@@ -9543,11 +10618,13 @@ Variables
-

Definition at line 604 of file hidusagestr.h.

+

Definition at line 604 of file hidusagestr.h.

- + +

◆ pstrUsageALNextTaskApplication

+
@@ -9557,11 +10634,13 @@ Variables
-

Definition at line 605 of file hidusagestr.h.

+

Definition at line 605 of file hidusagestr.h.

- + +

◆ pstrUsageALPreviousTaskApplication

+
@@ -9571,11 +10650,13 @@ Variables
-

Definition at line 606 of file hidusagestr.h.

+

Definition at line 606 of file hidusagestr.h.

- + +

◆ pstrUsageALPreemptiveHaltTaskApp

+
@@ -9585,11 +10666,13 @@ Variables
-

Definition at line 607 of file hidusagestr.h.

+

Definition at line 607 of file hidusagestr.h.

- + +

◆ pstrUsageALIntegratedHelpCenter

+
@@ -9599,11 +10682,13 @@ Variables
-

Definition at line 608 of file hidusagestr.h.

+

Definition at line 608 of file hidusagestr.h.

- + +

◆ pstrUsageALDocuments

+
@@ -9613,11 +10698,13 @@ Variables
-

Definition at line 609 of file hidusagestr.h.

+

Definition at line 609 of file hidusagestr.h.

- + +

◆ pstrUsageALThesaurus

+
@@ -9627,11 +10714,13 @@ Variables
-

Definition at line 610 of file hidusagestr.h.

+

Definition at line 610 of file hidusagestr.h.

- + +

◆ pstrUsageALDictionary

+
@@ -9641,11 +10730,13 @@ Variables
-

Definition at line 611 of file hidusagestr.h.

+

Definition at line 611 of file hidusagestr.h.

- + +

◆ pstrUsageALDesktop

+
@@ -9655,11 +10746,13 @@ Variables
-

Definition at line 612 of file hidusagestr.h.

+

Definition at line 612 of file hidusagestr.h.

- + +

◆ pstrUsageALSpellCheck

+
@@ -9669,11 +10762,13 @@ Variables
-

Definition at line 613 of file hidusagestr.h.

+

Definition at line 613 of file hidusagestr.h.

- + +

◆ pstrUsageALGrammarCheck

+
@@ -9683,11 +10778,13 @@ Variables
-

Definition at line 614 of file hidusagestr.h.

+

Definition at line 614 of file hidusagestr.h.

- + +

◆ pstrUsageALWirelessStatus

+
@@ -9697,11 +10794,13 @@ Variables
-

Definition at line 615 of file hidusagestr.h.

+

Definition at line 615 of file hidusagestr.h.

- + +

◆ pstrUsageALKeyboardLayout

+
@@ -9711,11 +10810,13 @@ Variables
-

Definition at line 616 of file hidusagestr.h.

+

Definition at line 616 of file hidusagestr.h.

- + +

◆ pstrUsageALVirusProtection

+
@@ -9725,11 +10826,13 @@ Variables
-

Definition at line 617 of file hidusagestr.h.

+

Definition at line 617 of file hidusagestr.h.

- + +

◆ pstrUsageALEncryption

+
@@ -9739,11 +10842,13 @@ Variables
-

Definition at line 618 of file hidusagestr.h.

+

Definition at line 618 of file hidusagestr.h.

- + +

◆ pstrUsageALScreenSaver

+
@@ -9753,11 +10858,13 @@ Variables
-

Definition at line 619 of file hidusagestr.h.

+

Definition at line 619 of file hidusagestr.h.

- + +

◆ pstrUsageALAlarms

+
@@ -9767,11 +10874,13 @@ Variables
-

Definition at line 620 of file hidusagestr.h.

+

Definition at line 620 of file hidusagestr.h.

- + +

◆ pstrUsageALClock

+
@@ -9781,11 +10890,13 @@ Variables
-

Definition at line 621 of file hidusagestr.h.

+

Definition at line 621 of file hidusagestr.h.

- + +

◆ pstrUsageALFileBrowser

+
@@ -9795,11 +10906,13 @@ Variables
-

Definition at line 622 of file hidusagestr.h.

+

Definition at line 622 of file hidusagestr.h.

- + +

◆ pstrUsageALPowerStatus

+
@@ -9809,11 +10922,13 @@ Variables
-

Definition at line 623 of file hidusagestr.h.

+

Definition at line 623 of file hidusagestr.h.

- + +

◆ pstrUsageALImageBrowser

+
@@ -9823,11 +10938,13 @@ Variables
-

Definition at line 624 of file hidusagestr.h.

+

Definition at line 624 of file hidusagestr.h.

- + +

◆ pstrUsageALAudioBrowser

+
@@ -9837,11 +10954,13 @@ Variables
-

Definition at line 625 of file hidusagestr.h.

+

Definition at line 625 of file hidusagestr.h.

- + +

◆ pstrUsageALMovieBrowser

+
@@ -9851,11 +10970,13 @@ Variables
-

Definition at line 626 of file hidusagestr.h.

+

Definition at line 626 of file hidusagestr.h.

- + +

◆ pstrUsageALDigitalRightsManager

+
@@ -9865,11 +10986,13 @@ Variables
-

Definition at line 627 of file hidusagestr.h.

+

Definition at line 627 of file hidusagestr.h.

- + +

◆ pstrUsageALDigitalWallet

+
@@ -9879,11 +11002,13 @@ Variables
-

Definition at line 628 of file hidusagestr.h.

+

Definition at line 628 of file hidusagestr.h.

- + +

◆ pstrUsageALInstantMessaging

+
@@ -9893,11 +11018,13 @@ Variables
-

Definition at line 629 of file hidusagestr.h.

+

Definition at line 629 of file hidusagestr.h.

- + +

◆ pstrUsageALOEMFeaturesBrowser

+
@@ -9907,11 +11034,13 @@ Variables
-

Definition at line 630 of file hidusagestr.h.

+

Definition at line 630 of file hidusagestr.h.

- + +

◆ pstrUsageALOEMHelp

+
@@ -9921,11 +11050,13 @@ Variables
-

Definition at line 631 of file hidusagestr.h.

+

Definition at line 631 of file hidusagestr.h.

- + +

◆ pstrUsageALOnlineCommunity

+
@@ -9935,11 +11066,13 @@ Variables
-

Definition at line 632 of file hidusagestr.h.

+

Definition at line 632 of file hidusagestr.h.

- + +

◆ pstrUsageALEntertainmentContentBrow

+
@@ -9949,11 +11082,13 @@ Variables
-

Definition at line 633 of file hidusagestr.h.

+

Definition at line 633 of file hidusagestr.h.

- + +

◆ pstrUsageALOnlineShoppingBrowser

+
@@ -9963,11 +11098,13 @@ Variables
-

Definition at line 634 of file hidusagestr.h.

+

Definition at line 634 of file hidusagestr.h.

- + +

◆ pstrUsageALSmartCardInfoHelp

+
@@ -9977,11 +11114,13 @@ Variables
-

Definition at line 635 of file hidusagestr.h.

+

Definition at line 635 of file hidusagestr.h.

- + +

◆ pstrUsageALMarketMonitorFinBrowser

+
@@ -9991,11 +11130,13 @@ Variables
-

Definition at line 636 of file hidusagestr.h.

+

Definition at line 636 of file hidusagestr.h.

- + +

◆ pstrUsageALCustomCorpNewsBrowser

+
@@ -10005,11 +11146,13 @@ Variables
-

Definition at line 637 of file hidusagestr.h.

+

Definition at line 637 of file hidusagestr.h.

- + +

◆ pstrUsageALOnlineActivityBrowser

+
@@ -10019,11 +11162,13 @@ Variables
-

Definition at line 638 of file hidusagestr.h.

+

Definition at line 638 of file hidusagestr.h.

- + +

◆ pstrUsageALResearchSearchBrowser

+
@@ -10033,11 +11178,13 @@ Variables
-

Definition at line 639 of file hidusagestr.h.

+

Definition at line 639 of file hidusagestr.h.

- + +

◆ pstrUsageALAudioPlayer

+
@@ -10047,11 +11194,13 @@ Variables
-

Definition at line 640 of file hidusagestr.h.

+

Definition at line 640 of file hidusagestr.h.

- + +

◆ pstrUsageGenericGUIAppControls

+
@@ -10061,11 +11210,13 @@ Variables
-

Definition at line 641 of file hidusagestr.h.

+

Definition at line 641 of file hidusagestr.h.

- + +

◆ pstrUsageACNew

+
@@ -10075,11 +11226,13 @@ Variables
-

Definition at line 642 of file hidusagestr.h.

+

Definition at line 642 of file hidusagestr.h.

- + +

◆ pstrUsageACOpen

+
@@ -10089,11 +11242,13 @@ Variables
-

Definition at line 643 of file hidusagestr.h.

+

Definition at line 643 of file hidusagestr.h.

- + +

◆ pstrUsageACClose

+
@@ -10103,11 +11258,13 @@ Variables
-

Definition at line 644 of file hidusagestr.h.

+

Definition at line 644 of file hidusagestr.h.

- + +

◆ pstrUsageACExit

+
@@ -10117,11 +11274,13 @@ Variables
-

Definition at line 645 of file hidusagestr.h.

+

Definition at line 645 of file hidusagestr.h.

- + +

◆ pstrUsageACMaximize

+
@@ -10131,11 +11290,13 @@ Variables
-

Definition at line 646 of file hidusagestr.h.

+

Definition at line 646 of file hidusagestr.h.

- + +

◆ pstrUsageACMinimize

+
@@ -10145,11 +11306,13 @@ Variables
-

Definition at line 647 of file hidusagestr.h.

+

Definition at line 647 of file hidusagestr.h.

- + +

◆ pstrUsageACSave

+
@@ -10159,11 +11322,13 @@ Variables
-

Definition at line 648 of file hidusagestr.h.

+

Definition at line 648 of file hidusagestr.h.

- + +

◆ pstrUsageACPrint

+
@@ -10173,11 +11338,13 @@ Variables
-

Definition at line 649 of file hidusagestr.h.

+

Definition at line 649 of file hidusagestr.h.

- + +

◆ pstrUsageACProperties

+
@@ -10187,11 +11354,13 @@ Variables
-

Definition at line 650 of file hidusagestr.h.

+

Definition at line 650 of file hidusagestr.h.

- + +

◆ pstrUsageACUndo

+
@@ -10201,11 +11370,13 @@ Variables
-

Definition at line 651 of file hidusagestr.h.

+

Definition at line 651 of file hidusagestr.h.

- + +

◆ pstrUsageACCopy

+
@@ -10215,11 +11386,13 @@ Variables
-

Definition at line 652 of file hidusagestr.h.

+

Definition at line 652 of file hidusagestr.h.

- + +

◆ pstrUsageACCut

+
@@ -10229,11 +11402,13 @@ Variables
-

Definition at line 653 of file hidusagestr.h.

+

Definition at line 653 of file hidusagestr.h.

- + +

◆ pstrUsageACPaste

+
@@ -10243,11 +11418,13 @@ Variables
-

Definition at line 654 of file hidusagestr.h.

+

Definition at line 654 of file hidusagestr.h.

- + +

◆ pstrUsageACSelectAll

+
@@ -10257,11 +11434,13 @@ Variables
-

Definition at line 655 of file hidusagestr.h.

+

Definition at line 655 of file hidusagestr.h.

- + +

◆ pstrUsageACFind

+
@@ -10271,11 +11450,13 @@ Variables
-

Definition at line 656 of file hidusagestr.h.

+

Definition at line 656 of file hidusagestr.h.

- + +

◆ pstrUsageACFindAndReplace

+
@@ -10285,11 +11466,13 @@ Variables
-

Definition at line 657 of file hidusagestr.h.

+

Definition at line 657 of file hidusagestr.h.

- + +

◆ pstrUsageACSearch

+
@@ -10299,11 +11482,13 @@ Variables
-

Definition at line 658 of file hidusagestr.h.

+

Definition at line 658 of file hidusagestr.h.

- + +

◆ pstrUsageACGoto

+
@@ -10313,11 +11498,13 @@ Variables
-

Definition at line 659 of file hidusagestr.h.

+

Definition at line 659 of file hidusagestr.h.

- + +

◆ pstrUsageACHome

+
@@ -10327,11 +11514,13 @@ Variables
-

Definition at line 660 of file hidusagestr.h.

+

Definition at line 660 of file hidusagestr.h.

- + +

◆ pstrUsageACBack

+
@@ -10341,11 +11530,13 @@ Variables
-

Definition at line 661 of file hidusagestr.h.

+

Definition at line 661 of file hidusagestr.h.

- + +

◆ pstrUsageACForward

+
@@ -10355,11 +11546,13 @@ Variables
-

Definition at line 662 of file hidusagestr.h.

+

Definition at line 662 of file hidusagestr.h.

- + +

◆ pstrUsageACStop

+
@@ -10369,11 +11562,13 @@ Variables
-

Definition at line 663 of file hidusagestr.h.

+

Definition at line 663 of file hidusagestr.h.

- + +

◆ pstrUsageACRefresh

+
@@ -10383,11 +11578,13 @@ Variables
-

Definition at line 664 of file hidusagestr.h.

+

Definition at line 664 of file hidusagestr.h.

- + +

◆ pstrUsageACPreviousLink

+
@@ -10397,11 +11594,13 @@ Variables
-

Definition at line 665 of file hidusagestr.h.

+

Definition at line 665 of file hidusagestr.h.

- + +

◆ pstrUsageACNextLink

+
@@ -10411,11 +11610,13 @@ Variables
-

Definition at line 666 of file hidusagestr.h.

+

Definition at line 666 of file hidusagestr.h.

- + +

◆ pstrUsageACBookmarks

+
@@ -10425,11 +11626,13 @@ Variables
-

Definition at line 667 of file hidusagestr.h.

+

Definition at line 667 of file hidusagestr.h.

- + +

◆ pstrUsageACHistory

+
@@ -10439,11 +11642,13 @@ Variables
-

Definition at line 668 of file hidusagestr.h.

+

Definition at line 668 of file hidusagestr.h.

- + +

◆ pstrUsageACSubscriptions

+
@@ -10453,11 +11658,13 @@ Variables
-

Definition at line 669 of file hidusagestr.h.

+

Definition at line 669 of file hidusagestr.h.

- + +

◆ pstrUsageACZoomIn

+
@@ -10467,11 +11674,13 @@ Variables
-

Definition at line 670 of file hidusagestr.h.

+

Definition at line 670 of file hidusagestr.h.

- + +

◆ pstrUsageACZoomOut

+
@@ -10481,11 +11690,13 @@ Variables
-

Definition at line 671 of file hidusagestr.h.

+

Definition at line 671 of file hidusagestr.h.

- + +

◆ pstrUsageACZoom

+
@@ -10495,11 +11706,13 @@ Variables
-

Definition at line 672 of file hidusagestr.h.

+

Definition at line 672 of file hidusagestr.h.

- + +

◆ pstrUsageACFullScreenView

+
@@ -10509,11 +11722,13 @@ Variables
-

Definition at line 673 of file hidusagestr.h.

+

Definition at line 673 of file hidusagestr.h.

- + +

◆ pstrUsageACNormalView

+
@@ -10523,11 +11738,13 @@ Variables
-

Definition at line 674 of file hidusagestr.h.

+

Definition at line 674 of file hidusagestr.h.

- + +

◆ pstrUsageACViewToggle

+
@@ -10537,11 +11754,13 @@ Variables
-

Definition at line 675 of file hidusagestr.h.

+

Definition at line 675 of file hidusagestr.h.

- + +

◆ pstrUsageACScrollUp

+
@@ -10551,11 +11770,13 @@ Variables
-

Definition at line 676 of file hidusagestr.h.

+

Definition at line 676 of file hidusagestr.h.

- + +

◆ pstrUsageACScrollDown

+
@@ -10565,11 +11786,13 @@ Variables
-

Definition at line 677 of file hidusagestr.h.

+

Definition at line 677 of file hidusagestr.h.

- + +

◆ pstrUsageACScroll

+
@@ -10579,11 +11802,13 @@ Variables
-

Definition at line 678 of file hidusagestr.h.

+

Definition at line 678 of file hidusagestr.h.

- + +

◆ pstrUsageACPanLeft

+
@@ -10593,11 +11818,13 @@ Variables
-

Definition at line 679 of file hidusagestr.h.

+

Definition at line 679 of file hidusagestr.h.

- + +

◆ pstrUsageACPanRight

+
@@ -10607,11 +11834,13 @@ Variables
-

Definition at line 680 of file hidusagestr.h.

+

Definition at line 680 of file hidusagestr.h.

- + +

◆ pstrUsageACPan

+
@@ -10621,11 +11850,13 @@ Variables
-

Definition at line 681 of file hidusagestr.h.

+

Definition at line 681 of file hidusagestr.h.

- + +

◆ pstrUsageACNewWindow

+
@@ -10635,11 +11866,13 @@ Variables
-

Definition at line 682 of file hidusagestr.h.

+

Definition at line 682 of file hidusagestr.h.

- + +

◆ pstrUsageACTileHoriz

+
@@ -10649,11 +11882,13 @@ Variables
-

Definition at line 683 of file hidusagestr.h.

+

Definition at line 683 of file hidusagestr.h.

- + +

◆ pstrUsageACTileVert

+
@@ -10663,11 +11898,13 @@ Variables
-

Definition at line 684 of file hidusagestr.h.

+

Definition at line 684 of file hidusagestr.h.

- + +

◆ pstrUsageACFormat

+
@@ -10677,11 +11914,13 @@ Variables
-

Definition at line 685 of file hidusagestr.h.

+

Definition at line 685 of file hidusagestr.h.

- + +

◆ pstrUsageACEdit

+
@@ -10691,11 +11930,13 @@ Variables
-

Definition at line 686 of file hidusagestr.h.

+

Definition at line 686 of file hidusagestr.h.

- + +

◆ pstrUsageACBold

+
@@ -10705,11 +11946,13 @@ Variables
-

Definition at line 687 of file hidusagestr.h.

+

Definition at line 687 of file hidusagestr.h.

- + +

◆ pstrUsageACItalics

+
@@ -10719,11 +11962,13 @@ Variables
-

Definition at line 688 of file hidusagestr.h.

+

Definition at line 688 of file hidusagestr.h.

- + +

◆ pstrUsageACUnderline

+
@@ -10733,11 +11978,13 @@ Variables
-

Definition at line 689 of file hidusagestr.h.

+

Definition at line 689 of file hidusagestr.h.

- + +

◆ pstrUsageACStrikethrough

+
@@ -10747,11 +11994,13 @@ Variables
-

Definition at line 690 of file hidusagestr.h.

+

Definition at line 690 of file hidusagestr.h.

- + +

◆ pstrUsageACSubscript

+
@@ -10761,11 +12010,13 @@ Variables
-

Definition at line 691 of file hidusagestr.h.

+

Definition at line 691 of file hidusagestr.h.

- + +

◆ pstrUsageACSuperscript

+
@@ -10775,11 +12026,13 @@ Variables
-

Definition at line 692 of file hidusagestr.h.

+

Definition at line 692 of file hidusagestr.h.

- + +

◆ pstrUsageACAllCaps

+
@@ -10789,11 +12042,13 @@ Variables
-

Definition at line 693 of file hidusagestr.h.

+

Definition at line 693 of file hidusagestr.h.

- + +

◆ pstrUsageACRotate

+
@@ -10803,11 +12058,13 @@ Variables
-

Definition at line 694 of file hidusagestr.h.

+

Definition at line 694 of file hidusagestr.h.

- + +

◆ pstrUsageACResize

+
@@ -10817,11 +12074,13 @@ Variables
-

Definition at line 695 of file hidusagestr.h.

+

Definition at line 695 of file hidusagestr.h.

- + +

◆ pstrUsageACFlipHorizontal

+
@@ -10831,11 +12090,13 @@ Variables
-

Definition at line 696 of file hidusagestr.h.

+

Definition at line 696 of file hidusagestr.h.

- + +

◆ pstrUsageACFlipVertical

+
@@ -10845,11 +12106,13 @@ Variables
-

Definition at line 697 of file hidusagestr.h.

+

Definition at line 697 of file hidusagestr.h.

- + +

◆ pstrUsageACMirrorHorizontal

+
@@ -10859,11 +12122,13 @@ Variables
-

Definition at line 698 of file hidusagestr.h.

+

Definition at line 698 of file hidusagestr.h.

- + +

◆ pstrUsageACMirrorVertical

+
@@ -10873,11 +12138,13 @@ Variables
-

Definition at line 699 of file hidusagestr.h.

+

Definition at line 699 of file hidusagestr.h.

- + +

◆ pstrUsageACFontSelect

+
@@ -10887,11 +12154,13 @@ Variables
-

Definition at line 700 of file hidusagestr.h.

+

Definition at line 700 of file hidusagestr.h.

- + +

◆ pstrUsageACFontColor

+
@@ -10901,11 +12170,13 @@ Variables
-

Definition at line 701 of file hidusagestr.h.

+

Definition at line 701 of file hidusagestr.h.

- + +

◆ pstrUsageACFontSize

+
@@ -10915,11 +12186,13 @@ Variables
-

Definition at line 702 of file hidusagestr.h.

+

Definition at line 702 of file hidusagestr.h.

- + +

◆ pstrUsageACJustifyLeft

+
@@ -10929,11 +12202,13 @@ Variables
-

Definition at line 703 of file hidusagestr.h.

+

Definition at line 703 of file hidusagestr.h.

- + +

◆ pstrUsageACJustifyCenterH

+
@@ -10943,11 +12218,13 @@ Variables
-

Definition at line 704 of file hidusagestr.h.

+

Definition at line 704 of file hidusagestr.h.

- + +

◆ pstrUsageACJustifyRight

+
@@ -10957,11 +12234,13 @@ Variables
-

Definition at line 705 of file hidusagestr.h.

+

Definition at line 705 of file hidusagestr.h.

- + +

◆ pstrUsageACJustifyBlockH

+
@@ -10971,11 +12250,13 @@ Variables
-

Definition at line 706 of file hidusagestr.h.

+

Definition at line 706 of file hidusagestr.h.

- + +

◆ pstrUsageACJustifyTop

+
@@ -10985,11 +12266,13 @@ Variables
-

Definition at line 707 of file hidusagestr.h.

+

Definition at line 707 of file hidusagestr.h.

- + +

◆ pstrUsageACJustifyCenterV

+
@@ -10999,11 +12282,13 @@ Variables
-

Definition at line 708 of file hidusagestr.h.

+

Definition at line 708 of file hidusagestr.h.

- + +

◆ pstrUsageACJustifyBottom

+
@@ -11013,11 +12298,13 @@ Variables
-

Definition at line 709 of file hidusagestr.h.

+

Definition at line 709 of file hidusagestr.h.

- + +

◆ pstrUsageACJustifyBlockV

+
@@ -11027,11 +12314,13 @@ Variables
-

Definition at line 710 of file hidusagestr.h.

+

Definition at line 710 of file hidusagestr.h.

- + +

◆ pstrUsageACIndentDecrease

+
@@ -11041,11 +12330,13 @@ Variables
-

Definition at line 711 of file hidusagestr.h.

+

Definition at line 711 of file hidusagestr.h.

- + +

◆ pstrUsageACIndentIncrease

+
@@ -11055,11 +12346,13 @@ Variables
-

Definition at line 712 of file hidusagestr.h.

+

Definition at line 712 of file hidusagestr.h.

- + +

◆ pstrUsageACNumberedList

+
@@ -11069,11 +12362,13 @@ Variables
-

Definition at line 713 of file hidusagestr.h.

+

Definition at line 713 of file hidusagestr.h.

- + +

◆ pstrUsageACRestartNumbering

+
@@ -11083,11 +12378,13 @@ Variables
-

Definition at line 714 of file hidusagestr.h.

+

Definition at line 714 of file hidusagestr.h.

- + +

◆ pstrUsageACBulletedList

+
@@ -11097,11 +12394,13 @@ Variables
-

Definition at line 715 of file hidusagestr.h.

+

Definition at line 715 of file hidusagestr.h.

- + +

◆ pstrUsageACPromote

+
@@ -11111,11 +12410,13 @@ Variables
-

Definition at line 716 of file hidusagestr.h.

+

Definition at line 716 of file hidusagestr.h.

- + +

◆ pstrUsageACDemote

+
@@ -11125,11 +12426,13 @@ Variables
-

Definition at line 717 of file hidusagestr.h.

+

Definition at line 717 of file hidusagestr.h.

- + +

◆ pstrUsageACYes

+
@@ -11139,11 +12442,13 @@ Variables
-

Definition at line 718 of file hidusagestr.h.

+

Definition at line 718 of file hidusagestr.h.

- + +

◆ pstrUsageACNo

+
@@ -11153,11 +12458,13 @@ Variables
-

Definition at line 719 of file hidusagestr.h.

+

Definition at line 719 of file hidusagestr.h.

- + +

◆ pstrUsageACCancel

+
@@ -11167,11 +12474,13 @@ Variables
-

Definition at line 720 of file hidusagestr.h.

+

Definition at line 720 of file hidusagestr.h.

- + +

◆ pstrUsageACCatalog

+
@@ -11181,11 +12490,13 @@ Variables
-

Definition at line 721 of file hidusagestr.h.

+

Definition at line 721 of file hidusagestr.h.

- + +

◆ pstrUsageACBuyChkout

+
@@ -11195,11 +12506,13 @@ Variables
-

Definition at line 722 of file hidusagestr.h.

+

Definition at line 722 of file hidusagestr.h.

- + +

◆ pstrUsageACAddToCart

+
@@ -11209,11 +12522,13 @@ Variables
-

Definition at line 723 of file hidusagestr.h.

+

Definition at line 723 of file hidusagestr.h.

- + +

◆ pstrUsageACExpand

+
@@ -11223,11 +12538,13 @@ Variables
-

Definition at line 724 of file hidusagestr.h.

+

Definition at line 724 of file hidusagestr.h.

- + +

◆ pstrUsageACExpandAll

+
@@ -11237,11 +12554,13 @@ Variables
-

Definition at line 725 of file hidusagestr.h.

+

Definition at line 725 of file hidusagestr.h.

- + +

◆ pstrUsageACCollapse

+
@@ -11251,11 +12570,13 @@ Variables
-

Definition at line 726 of file hidusagestr.h.

+

Definition at line 726 of file hidusagestr.h.

- + +

◆ pstrUsageACCollapseAll

+
@@ -11265,11 +12586,13 @@ Variables
-

Definition at line 727 of file hidusagestr.h.

+

Definition at line 727 of file hidusagestr.h.

- + +

◆ pstrUsageACPrintPreview

+
@@ -11279,11 +12602,13 @@ Variables
-

Definition at line 728 of file hidusagestr.h.

+

Definition at line 728 of file hidusagestr.h.

- + +

◆ pstrUsageACPasteSpecial

+
@@ -11293,11 +12618,13 @@ Variables
-

Definition at line 729 of file hidusagestr.h.

+

Definition at line 729 of file hidusagestr.h.

- + +

◆ pstrUsageACInsertMode

+
@@ -11307,11 +12634,13 @@ Variables
-

Definition at line 730 of file hidusagestr.h.

+

Definition at line 730 of file hidusagestr.h.

- + +

◆ pstrUsageACDelete

+
@@ -11321,11 +12650,13 @@ Variables
-

Definition at line 731 of file hidusagestr.h.

+

Definition at line 731 of file hidusagestr.h.

- + +

◆ pstrUsageACLock

+
@@ -11335,11 +12666,13 @@ Variables
-

Definition at line 732 of file hidusagestr.h.

+

Definition at line 732 of file hidusagestr.h.

- + +

◆ pstrUsageACUnlock

+
@@ -11349,11 +12682,13 @@ Variables
-

Definition at line 733 of file hidusagestr.h.

+

Definition at line 733 of file hidusagestr.h.

- + +

◆ pstrUsageACProtect

+
@@ -11363,11 +12698,13 @@ Variables
-

Definition at line 734 of file hidusagestr.h.

+

Definition at line 734 of file hidusagestr.h.

- + +

◆ pstrUsageACUnprotect

+
@@ -11377,11 +12714,13 @@ Variables
-

Definition at line 735 of file hidusagestr.h.

+

Definition at line 735 of file hidusagestr.h.

- + +

◆ pstrUsageACAttachComment

+
@@ -11391,11 +12730,13 @@ Variables
-

Definition at line 736 of file hidusagestr.h.

+

Definition at line 736 of file hidusagestr.h.

- + +

◆ pstrUsageACDeleteComment

+
@@ -11405,11 +12746,13 @@ Variables
-

Definition at line 737 of file hidusagestr.h.

+

Definition at line 737 of file hidusagestr.h.

- + +

◆ pstrUsageACViewComment

+
@@ -11419,11 +12762,13 @@ Variables
-

Definition at line 738 of file hidusagestr.h.

+

Definition at line 738 of file hidusagestr.h.

- + +

◆ pstrUsageACSelectWord

+
@@ -11433,11 +12778,13 @@ Variables
-

Definition at line 739 of file hidusagestr.h.

+

Definition at line 739 of file hidusagestr.h.

- + +

◆ pstrUsageACSelectSentence

+
@@ -11447,11 +12794,13 @@ Variables
-

Definition at line 740 of file hidusagestr.h.

+

Definition at line 740 of file hidusagestr.h.

- + +

◆ pstrUsageACSelectParagraph

+
@@ -11461,11 +12810,13 @@ Variables
-

Definition at line 741 of file hidusagestr.h.

+

Definition at line 741 of file hidusagestr.h.

- + +

◆ pstrUsageACSelectColumn

+
@@ -11475,11 +12826,13 @@ Variables
-

Definition at line 742 of file hidusagestr.h.

+

Definition at line 742 of file hidusagestr.h.

- + +

◆ pstrUsageACSelectRow

+
@@ -11489,11 +12842,13 @@ Variables
-

Definition at line 743 of file hidusagestr.h.

+

Definition at line 743 of file hidusagestr.h.

- + +

◆ pstrUsageACSelectTable

+
@@ -11503,11 +12858,13 @@ Variables
-

Definition at line 744 of file hidusagestr.h.

+

Definition at line 744 of file hidusagestr.h.

- + +

◆ pstrUsageACSelectObject

+
@@ -11517,11 +12874,13 @@ Variables
-

Definition at line 745 of file hidusagestr.h.

+

Definition at line 745 of file hidusagestr.h.

- + +

◆ pstrUsageACRedoRepeat

+
@@ -11531,11 +12890,13 @@ Variables
-

Definition at line 746 of file hidusagestr.h.

+

Definition at line 746 of file hidusagestr.h.

- + +

◆ pstrUsageACSort

+
@@ -11545,11 +12906,13 @@ Variables
-

Definition at line 747 of file hidusagestr.h.

+

Definition at line 747 of file hidusagestr.h.

- + +

◆ pstrUsageACSortAscending

+
@@ -11559,11 +12922,13 @@ Variables
-

Definition at line 748 of file hidusagestr.h.

+

Definition at line 748 of file hidusagestr.h.

- + +

◆ pstrUsageACSortDescending

+
@@ -11573,11 +12938,13 @@ Variables
-

Definition at line 749 of file hidusagestr.h.

+

Definition at line 749 of file hidusagestr.h.

- + +

◆ pstrUsageACFilter

+
@@ -11587,11 +12954,13 @@ Variables
-

Definition at line 750 of file hidusagestr.h.

+

Definition at line 750 of file hidusagestr.h.

- + +

◆ pstrUsageACSetClock

+
@@ -11601,11 +12970,13 @@ Variables
-

Definition at line 751 of file hidusagestr.h.

+

Definition at line 751 of file hidusagestr.h.

- + +

◆ pstrUsageACViewClock

+
@@ -11615,11 +12986,13 @@ Variables
-

Definition at line 752 of file hidusagestr.h.

+

Definition at line 752 of file hidusagestr.h.

- + +

◆ pstrUsageACSelectTimeZone

+
@@ -11629,11 +13002,13 @@ Variables
-

Definition at line 753 of file hidusagestr.h.

+

Definition at line 753 of file hidusagestr.h.

- + +

◆ pstrUsageACEditTimeZone

+
@@ -11643,11 +13018,13 @@ Variables
-

Definition at line 754 of file hidusagestr.h.

+

Definition at line 754 of file hidusagestr.h.

- + +

◆ pstrUsageACSetAlarm

+
@@ -11657,11 +13034,13 @@ Variables
-

Definition at line 755 of file hidusagestr.h.

+

Definition at line 755 of file hidusagestr.h.

- + +

◆ pstrUsageACClearAlarm

+
@@ -11671,11 +13050,13 @@ Variables
-

Definition at line 756 of file hidusagestr.h.

+

Definition at line 756 of file hidusagestr.h.

- + +

◆ pstrUsageACSnoozeAlarm

+
@@ -11685,11 +13066,13 @@ Variables
-

Definition at line 757 of file hidusagestr.h.

+

Definition at line 757 of file hidusagestr.h.

- + +

◆ pstrUsageACResetAlarm

+
@@ -11699,11 +13082,13 @@ Variables
-

Definition at line 758 of file hidusagestr.h.

+

Definition at line 758 of file hidusagestr.h.

- + +

◆ pstrUsageACSyncronize

+
@@ -11713,11 +13098,13 @@ Variables
-

Definition at line 759 of file hidusagestr.h.

+

Definition at line 759 of file hidusagestr.h.

- + +

◆ pstrUsageACSendReceive

+
@@ -11727,11 +13114,13 @@ Variables
-

Definition at line 760 of file hidusagestr.h.

+

Definition at line 760 of file hidusagestr.h.

- + +

◆ pstrUsageACSendTo

+
@@ -11741,11 +13130,13 @@ Variables
-

Definition at line 761 of file hidusagestr.h.

+

Definition at line 761 of file hidusagestr.h.

- + +

◆ pstrUsageACReply

+
@@ -11755,11 +13146,13 @@ Variables
-

Definition at line 762 of file hidusagestr.h.

+

Definition at line 762 of file hidusagestr.h.

- + +

◆ pstrUsageACReplyAll

+
@@ -11769,11 +13162,13 @@ Variables
-

Definition at line 763 of file hidusagestr.h.

+

Definition at line 763 of file hidusagestr.h.

- + +

◆ pstrUsageACForwardMessage

+
@@ -11783,11 +13178,13 @@ Variables
-

Definition at line 764 of file hidusagestr.h.

+

Definition at line 764 of file hidusagestr.h.

- + +

◆ pstrUsageACSend

+
@@ -11797,11 +13194,13 @@ Variables
-

Definition at line 765 of file hidusagestr.h.

+

Definition at line 765 of file hidusagestr.h.

- + +

◆ pstrUsageACAttachFile

+
@@ -11811,11 +13210,13 @@ Variables
-

Definition at line 766 of file hidusagestr.h.

+

Definition at line 766 of file hidusagestr.h.

- + +

◆ pstrUsageACUpload

+
@@ -11825,11 +13226,13 @@ Variables
-

Definition at line 767 of file hidusagestr.h.

+

Definition at line 767 of file hidusagestr.h.

- + +

◆ pstrUsageACDownload

+
@@ -11839,11 +13242,13 @@ Variables
-

Definition at line 768 of file hidusagestr.h.

+

Definition at line 768 of file hidusagestr.h.

- + +

◆ pstrUsageACSetBorders

+
@@ -11853,11 +13258,13 @@ Variables
-

Definition at line 769 of file hidusagestr.h.

+

Definition at line 769 of file hidusagestr.h.

- + +

◆ pstrUsageACInsertRow

+
@@ -11867,11 +13274,13 @@ Variables
-

Definition at line 770 of file hidusagestr.h.

+

Definition at line 770 of file hidusagestr.h.

- + +

◆ pstrUsageACInsertColumn

+
@@ -11881,11 +13290,13 @@ Variables
-

Definition at line 771 of file hidusagestr.h.

+

Definition at line 771 of file hidusagestr.h.

- + +

◆ pstrUsageACInsertFile

+
@@ -11895,11 +13306,13 @@ Variables
-

Definition at line 772 of file hidusagestr.h.

+

Definition at line 772 of file hidusagestr.h.

- + +

◆ pstrUsageACInsertPicture

+
@@ -11909,11 +13322,13 @@ Variables
-

Definition at line 773 of file hidusagestr.h.

+

Definition at line 773 of file hidusagestr.h.

- + +

◆ pstrUsageACInsertObject

+
@@ -11923,11 +13338,13 @@ Variables
-

Definition at line 774 of file hidusagestr.h.

+

Definition at line 774 of file hidusagestr.h.

- + +

◆ pstrUsageACInsertSymbol

+
@@ -11937,11 +13354,13 @@ Variables
-

Definition at line 775 of file hidusagestr.h.

+

Definition at line 775 of file hidusagestr.h.

- + +

◆ pstrUsageACSaveAndClose

+
@@ -11951,11 +13370,13 @@ Variables
-

Definition at line 776 of file hidusagestr.h.

+

Definition at line 776 of file hidusagestr.h.

- + +

◆ pstrUsageACRename

+
@@ -11965,11 +13386,13 @@ Variables
-

Definition at line 777 of file hidusagestr.h.

+

Definition at line 777 of file hidusagestr.h.

- + +

◆ pstrUsageACMerge

+
@@ -11979,11 +13402,13 @@ Variables
-

Definition at line 778 of file hidusagestr.h.

+

Definition at line 778 of file hidusagestr.h.

- + +

◆ pstrUsageACSplit

+
@@ -11993,11 +13418,13 @@ Variables
-

Definition at line 779 of file hidusagestr.h.

+

Definition at line 779 of file hidusagestr.h.

- + +

◆ pstrUsageACDistributeHorizontaly

+
@@ -12007,11 +13434,13 @@ Variables
-

Definition at line 780 of file hidusagestr.h.

+

Definition at line 780 of file hidusagestr.h.

- + +

◆ pstrUsageACDistributeVerticaly

+
@@ -12021,11 +13450,13 @@ Variables
-

Definition at line 781 of file hidusagestr.h.

+

Definition at line 781 of file hidusagestr.h.

- + +

◆ pstrUsageDigitizer

+
@@ -12035,11 +13466,13 @@ Variables
-

Definition at line 784 of file hidusagestr.h.

+

Definition at line 784 of file hidusagestr.h.

- + +

◆ pstrUsagePen

+
@@ -12049,11 +13482,13 @@ Variables
-

Definition at line 785 of file hidusagestr.h.

+

Definition at line 785 of file hidusagestr.h.

- + +

◆ pstrUsageLightPen

+
@@ -12063,11 +13498,13 @@ Variables
-

Definition at line 786 of file hidusagestr.h.

+

Definition at line 786 of file hidusagestr.h.

- + +

◆ pstrUsageTouchScreen

+
@@ -12077,11 +13514,13 @@ Variables
-

Definition at line 787 of file hidusagestr.h.

+

Definition at line 787 of file hidusagestr.h.

- + +

◆ pstrUsageTouchPad

+
@@ -12091,11 +13530,13 @@ Variables
-

Definition at line 788 of file hidusagestr.h.

+

Definition at line 788 of file hidusagestr.h.

- + +

◆ pstrUsageWhiteBoard

+
@@ -12105,11 +13546,13 @@ Variables
-

Definition at line 789 of file hidusagestr.h.

+

Definition at line 789 of file hidusagestr.h.

- + +

◆ pstrUsageCoordinateMeasuringMachine

+
@@ -12119,11 +13562,13 @@ Variables
-

Definition at line 790 of file hidusagestr.h.

+

Definition at line 790 of file hidusagestr.h.

- + +

◆ pstrUsage3DDigitizer

+
@@ -12133,11 +13578,13 @@ Variables
-

Definition at line 791 of file hidusagestr.h.

+

Definition at line 791 of file hidusagestr.h.

- + +

◆ pstrUsageStereoPlotter

+
@@ -12147,11 +13594,13 @@ Variables
-

Definition at line 792 of file hidusagestr.h.

+

Definition at line 792 of file hidusagestr.h.

- + +

◆ pstrUsageArticulatedArm

+
@@ -12161,11 +13610,13 @@ Variables
-

Definition at line 793 of file hidusagestr.h.

+

Definition at line 793 of file hidusagestr.h.

- + +

◆ pstrUsageArmature

+
@@ -12175,11 +13626,13 @@ Variables
-

Definition at line 794 of file hidusagestr.h.

+

Definition at line 794 of file hidusagestr.h.

- + +

◆ pstrUsageMultiplePointDigitizer

+
@@ -12189,11 +13642,13 @@ Variables
-

Definition at line 795 of file hidusagestr.h.

+

Definition at line 795 of file hidusagestr.h.

- + +

◆ pstrUsageFreeSpaceWand

+
@@ -12203,11 +13658,13 @@ Variables
-

Definition at line 796 of file hidusagestr.h.

+

Definition at line 796 of file hidusagestr.h.

- + +

◆ pstrUsageStylus

+
@@ -12217,11 +13674,13 @@ Variables
-

Definition at line 797 of file hidusagestr.h.

+

Definition at line 797 of file hidusagestr.h.

- + +

◆ pstrUsagePuck

+
@@ -12231,11 +13690,13 @@ Variables
-

Definition at line 798 of file hidusagestr.h.

+

Definition at line 798 of file hidusagestr.h.

- + +

◆ pstrUsageFinger

+
@@ -12245,11 +13706,13 @@ Variables
-

Definition at line 799 of file hidusagestr.h.

+

Definition at line 799 of file hidusagestr.h.

- + +

◆ pstrUsageTipPressure

+
@@ -12259,11 +13722,13 @@ Variables
-

Definition at line 800 of file hidusagestr.h.

+

Definition at line 800 of file hidusagestr.h.

- + +

◆ pstrUsageBarrelPressure

+
@@ -12273,11 +13738,13 @@ Variables
-

Definition at line 801 of file hidusagestr.h.

+

Definition at line 801 of file hidusagestr.h.

- + +

◆ pstrUsageInRange

+
@@ -12287,11 +13754,13 @@ Variables
-

Definition at line 802 of file hidusagestr.h.

+

Definition at line 802 of file hidusagestr.h.

- + +

◆ pstrUsageTouch

+
@@ -12301,11 +13770,13 @@ Variables
-

Definition at line 803 of file hidusagestr.h.

+

Definition at line 803 of file hidusagestr.h.

- + +

◆ pstrUsageUntouch

+
@@ -12315,11 +13786,13 @@ Variables
-

Definition at line 804 of file hidusagestr.h.

+

Definition at line 804 of file hidusagestr.h.

- + +

◆ pstrUsageTap

+
@@ -12329,11 +13802,13 @@ Variables
-

Definition at line 805 of file hidusagestr.h.

+

Definition at line 805 of file hidusagestr.h.

- + +

◆ pstrUsageQuality

+
@@ -12343,11 +13818,13 @@ Variables
-

Definition at line 806 of file hidusagestr.h.

+

Definition at line 806 of file hidusagestr.h.

- + +

◆ pstrUsageDataValid

+
@@ -12357,11 +13834,13 @@ Variables
-

Definition at line 807 of file hidusagestr.h.

+

Definition at line 807 of file hidusagestr.h.

- + +

◆ pstrUsageTransducerIndex

+
@@ -12371,11 +13850,13 @@ Variables
-

Definition at line 808 of file hidusagestr.h.

+

Definition at line 808 of file hidusagestr.h.

- + +

◆ pstrUsageTabletFunctionKeys

+
@@ -12385,11 +13866,13 @@ Variables
-

Definition at line 809 of file hidusagestr.h.

+

Definition at line 809 of file hidusagestr.h.

- + +

◆ pstrUsageProgramChangeKeys

+
@@ -12399,11 +13882,13 @@ Variables
-

Definition at line 810 of file hidusagestr.h.

+

Definition at line 810 of file hidusagestr.h.

- + +

◆ pstrUsageInvert

+
@@ -12413,11 +13898,13 @@ Variables
-

Definition at line 812 of file hidusagestr.h.

+

Definition at line 812 of file hidusagestr.h.

- + +

◆ pstrUsageXTilt

+
@@ -12427,11 +13914,13 @@ Variables
-

Definition at line 813 of file hidusagestr.h.

+

Definition at line 813 of file hidusagestr.h.

- + +

◆ pstrUsageYTilt

+
@@ -12441,11 +13930,13 @@ Variables
-

Definition at line 814 of file hidusagestr.h.

+

Definition at line 814 of file hidusagestr.h.

- + +

◆ pstrUsageAzimuth

+
@@ -12455,11 +13946,13 @@ Variables
-

Definition at line 815 of file hidusagestr.h.

+

Definition at line 815 of file hidusagestr.h.

- + +

◆ pstrUsageAltitude

+
@@ -12469,11 +13962,13 @@ Variables
-

Definition at line 816 of file hidusagestr.h.

+

Definition at line 816 of file hidusagestr.h.

- + +

◆ pstrUsageTwist

+
@@ -12483,11 +13978,13 @@ Variables
-

Definition at line 817 of file hidusagestr.h.

+

Definition at line 817 of file hidusagestr.h.

- + +

◆ pstrUsageTipSwitch

+
@@ -12497,11 +13994,13 @@ Variables
-

Definition at line 818 of file hidusagestr.h.

+

Definition at line 818 of file hidusagestr.h.

- + +

◆ pstrUsageSecondaryTipSwitch

+
@@ -12511,11 +14010,13 @@ Variables
-

Definition at line 819 of file hidusagestr.h.

+

Definition at line 819 of file hidusagestr.h.

- + +

◆ pstrUsageBarrelSwitch

+
@@ -12525,11 +14026,13 @@ Variables
-

Definition at line 820 of file hidusagestr.h.

+

Definition at line 820 of file hidusagestr.h.

- + +

◆ pstrUsageEraser

+
@@ -12539,11 +14042,13 @@ Variables
-

Definition at line 821 of file hidusagestr.h.

+

Definition at line 821 of file hidusagestr.h.

- + +

◆ pstrUsageTabletPick

+
@@ -12553,11 +14058,13 @@ Variables
-

Definition at line 822 of file hidusagestr.h.

+

Definition at line 822 of file hidusagestr.h.

- + +

◆ pstrUsageAlphanumericDisplay

+
@@ -12567,11 +14074,13 @@ Variables
-

Definition at line 825 of file hidusagestr.h.

+

Definition at line 825 of file hidusagestr.h.

- + +

◆ pstrUsageBitmappedDisplay

+
@@ -12581,11 +14090,13 @@ Variables
-

Definition at line 826 of file hidusagestr.h.

+

Definition at line 826 of file hidusagestr.h.

- + +

◆ pstrUsageDisplayAttributesReport

+
@@ -12595,11 +14106,13 @@ Variables
-

Definition at line 827 of file hidusagestr.h.

+

Definition at line 827 of file hidusagestr.h.

- + +

◆ pstrUsageASCIICharacterSet

+
@@ -12609,11 +14122,13 @@ Variables
-

Definition at line 828 of file hidusagestr.h.

+

Definition at line 828 of file hidusagestr.h.

- + +

◆ pstrUsageDataReadBack

+
@@ -12623,11 +14138,13 @@ Variables
-

Definition at line 829 of file hidusagestr.h.

+

Definition at line 829 of file hidusagestr.h.

- + +

◆ pstrUsageFontReadBack

+
@@ -12637,11 +14154,13 @@ Variables
-

Definition at line 830 of file hidusagestr.h.

+

Definition at line 830 of file hidusagestr.h.

- + +

◆ pstrUsageDisplayControlReport

+
@@ -12651,11 +14170,13 @@ Variables
-

Definition at line 831 of file hidusagestr.h.

+

Definition at line 831 of file hidusagestr.h.

- + +

◆ pstrUsageClearDisplay

+
@@ -12665,11 +14186,13 @@ Variables
-

Definition at line 832 of file hidusagestr.h.

+

Definition at line 832 of file hidusagestr.h.

- + +

◆ pstrUsageScreenSaverDelay

+
@@ -12679,11 +14202,13 @@ Variables
-

Definition at line 834 of file hidusagestr.h.

+

Definition at line 834 of file hidusagestr.h.

- + +

◆ pstrUsageScreenSaverEnable

+
@@ -12693,11 +14218,13 @@ Variables
-

Definition at line 835 of file hidusagestr.h.

+

Definition at line 835 of file hidusagestr.h.

- + +

◆ pstrUsageVerticalScroll

+
@@ -12707,11 +14234,13 @@ Variables
-

Definition at line 836 of file hidusagestr.h.

+

Definition at line 836 of file hidusagestr.h.

- + +

◆ pstrUsageHorizontalScroll

+
@@ -12721,11 +14250,13 @@ Variables
-

Definition at line 837 of file hidusagestr.h.

+

Definition at line 837 of file hidusagestr.h.

- + +

◆ pstrUsageCharacterReport

+
@@ -12735,11 +14266,13 @@ Variables
-

Definition at line 838 of file hidusagestr.h.

+

Definition at line 838 of file hidusagestr.h.

- + +

◆ pstrUsageDisplayData

+
@@ -12749,11 +14282,13 @@ Variables
-

Definition at line 839 of file hidusagestr.h.

+

Definition at line 839 of file hidusagestr.h.

- + +

◆ pstrUsageDisplayStatus

+
@@ -12763,11 +14298,13 @@ Variables
-

Definition at line 840 of file hidusagestr.h.

+

Definition at line 840 of file hidusagestr.h.

- + +

◆ pstrUsageStatusNotReady

+
@@ -12777,11 +14314,13 @@ Variables
-

Definition at line 841 of file hidusagestr.h.

+

Definition at line 841 of file hidusagestr.h.

- + +

◆ pstrUsageStatusReady

+
@@ -12791,11 +14330,13 @@ Variables
-

Definition at line 842 of file hidusagestr.h.

+

Definition at line 842 of file hidusagestr.h.

- + +

◆ pstrUsageErrorNotALoadableCharacter

+
@@ -12805,11 +14346,13 @@ Variables
-

Definition at line 843 of file hidusagestr.h.

+

Definition at line 843 of file hidusagestr.h.

- + +

◆ pstrUsageErrorFotDataCanNotBeRead

+
@@ -12819,11 +14362,13 @@ Variables
-

Definition at line 844 of file hidusagestr.h.

+

Definition at line 844 of file hidusagestr.h.

- + +

◆ pstrUsageCursorPositionReport

+
@@ -12833,11 +14378,13 @@ Variables
-

Definition at line 845 of file hidusagestr.h.

+

Definition at line 845 of file hidusagestr.h.

- + +

◆ pstrUsageRow

+
@@ -12847,11 +14394,13 @@ Variables
-

Definition at line 846 of file hidusagestr.h.

+

Definition at line 846 of file hidusagestr.h.

- + +

◆ pstrUsageColumn

+
@@ -12861,11 +14410,13 @@ Variables
-

Definition at line 847 of file hidusagestr.h.

+

Definition at line 847 of file hidusagestr.h.

- + +

◆ pstrUsageRows

+
@@ -12875,11 +14426,13 @@ Variables
-

Definition at line 848 of file hidusagestr.h.

+

Definition at line 848 of file hidusagestr.h.

- + +

◆ pstrUsageColumns

+
@@ -12889,11 +14442,13 @@ Variables
-

Definition at line 849 of file hidusagestr.h.

+

Definition at line 849 of file hidusagestr.h.

- + +

◆ pstrUsageCursorPixelPosition

+
@@ -12903,11 +14458,13 @@ Variables
-

Definition at line 850 of file hidusagestr.h.

+

Definition at line 850 of file hidusagestr.h.

- + +

◆ pstrUsageCursorMode

+
@@ -12917,11 +14474,13 @@ Variables
-

Definition at line 851 of file hidusagestr.h.

+

Definition at line 851 of file hidusagestr.h.

- + +

◆ pstrUsageCursorEnable

+
@@ -12931,11 +14490,13 @@ Variables
-

Definition at line 852 of file hidusagestr.h.

+

Definition at line 852 of file hidusagestr.h.

- + +

◆ pstrUsageCursorBlink

+
@@ -12945,11 +14506,13 @@ Variables
-

Definition at line 853 of file hidusagestr.h.

+

Definition at line 853 of file hidusagestr.h.

- + +

◆ pstrUsageFontReport

+
@@ -12959,11 +14522,13 @@ Variables
-

Definition at line 854 of file hidusagestr.h.

+

Definition at line 854 of file hidusagestr.h.

- + +

◆ pstrUsageFontData

+
@@ -12973,11 +14538,13 @@ Variables
-

Definition at line 855 of file hidusagestr.h.

+

Definition at line 855 of file hidusagestr.h.

- + +

◆ pstrUsageCharacterWidth

+
@@ -12987,11 +14554,13 @@ Variables
-

Definition at line 856 of file hidusagestr.h.

+

Definition at line 856 of file hidusagestr.h.

- + +

◆ pstrUsageCharacterHeight

+
@@ -13001,11 +14570,13 @@ Variables
-

Definition at line 857 of file hidusagestr.h.

+

Definition at line 857 of file hidusagestr.h.

- + +

◆ pstrUsageCharacterSpacingHorizontal

+
@@ -13015,11 +14586,13 @@ Variables
-

Definition at line 858 of file hidusagestr.h.

+

Definition at line 858 of file hidusagestr.h.

- + +

◆ pstrUsageCharacterSpacingVertical

+
@@ -13029,11 +14602,13 @@ Variables
-

Definition at line 859 of file hidusagestr.h.

+

Definition at line 859 of file hidusagestr.h.

- + +

◆ pstrUsageUnicodeCharset

+
@@ -13043,11 +14618,13 @@ Variables
-

Definition at line 860 of file hidusagestr.h.

+

Definition at line 860 of file hidusagestr.h.

- + +

◆ pstrUsageFont7Segment

+
@@ -13057,11 +14634,13 @@ Variables
-

Definition at line 861 of file hidusagestr.h.

+

Definition at line 861 of file hidusagestr.h.

- + +

◆ pstrUsage7SegmentDirectMap

+
@@ -13071,11 +14650,13 @@ Variables
-

Definition at line 862 of file hidusagestr.h.

+

Definition at line 862 of file hidusagestr.h.

- + +

◆ pstrUsageFont14Segment

+
@@ -13085,11 +14666,13 @@ Variables
-

Definition at line 863 of file hidusagestr.h.

+

Definition at line 863 of file hidusagestr.h.

- + +

◆ pstrUsage14SegmentDirectMap

+
@@ -13099,11 +14682,13 @@ Variables
-

Definition at line 864 of file hidusagestr.h.

+

Definition at line 864 of file hidusagestr.h.

- + +

◆ pstrUsageDisplayBrightness

+
@@ -13113,11 +14698,13 @@ Variables
-

Definition at line 865 of file hidusagestr.h.

+

Definition at line 865 of file hidusagestr.h.

- + +

◆ pstrUsageDisplayContrast

+
@@ -13127,11 +14714,13 @@ Variables
-

Definition at line 866 of file hidusagestr.h.

+

Definition at line 866 of file hidusagestr.h.

- + +

◆ pstrUsageCharacterAttribute

+
@@ -13141,11 +14730,13 @@ Variables
-

Definition at line 867 of file hidusagestr.h.

+

Definition at line 867 of file hidusagestr.h.

- + +

◆ pstrUsageAttributeReadback

+
@@ -13155,11 +14746,13 @@ Variables
-

Definition at line 868 of file hidusagestr.h.

+

Definition at line 868 of file hidusagestr.h.

- + +

◆ pstrUsageAttributeData

+
@@ -13169,11 +14762,13 @@ Variables
-

Definition at line 869 of file hidusagestr.h.

+

Definition at line 869 of file hidusagestr.h.

- + +

◆ pstrUsageCharAttributeEnhance

+
@@ -13183,11 +14778,13 @@ Variables
-

Definition at line 870 of file hidusagestr.h.

+

Definition at line 870 of file hidusagestr.h.

- + +

◆ pstrUsageCharAttributeUnderline

+
@@ -13197,11 +14794,13 @@ Variables
-

Definition at line 871 of file hidusagestr.h.

+

Definition at line 871 of file hidusagestr.h.

- + +

◆ pstrUsageCharAttributeBlink

+
@@ -13211,11 +14810,13 @@ Variables
-

Definition at line 872 of file hidusagestr.h.

+

Definition at line 872 of file hidusagestr.h.

- + +

◆ pstrUsageBitmapSizeX

+
@@ -13225,11 +14826,13 @@ Variables
-

Definition at line 873 of file hidusagestr.h.

+

Definition at line 873 of file hidusagestr.h.

- + +

◆ pstrUsageBitmapSizeY

+
@@ -13239,11 +14842,13 @@ Variables
-

Definition at line 874 of file hidusagestr.h.

+

Definition at line 874 of file hidusagestr.h.

- + +

◆ pstrUsageBitDepthFormat

+
@@ -13253,11 +14858,13 @@ Variables
-

Definition at line 875 of file hidusagestr.h.

+

Definition at line 875 of file hidusagestr.h.

- + +

◆ pstrUsageDisplayOrientation

+
@@ -13267,11 +14874,13 @@ Variables
-

Definition at line 876 of file hidusagestr.h.

+

Definition at line 876 of file hidusagestr.h.

- + +

◆ pstrUsagePaletteReport

+
@@ -13281,11 +14890,13 @@ Variables
-

Definition at line 877 of file hidusagestr.h.

+

Definition at line 877 of file hidusagestr.h.

- + +

◆ pstrUsagePaletteDataSize

+
@@ -13295,11 +14906,13 @@ Variables
-

Definition at line 878 of file hidusagestr.h.

+

Definition at line 878 of file hidusagestr.h.

- + +

◆ pstrUsagePaletteDataOffset

+
@@ -13309,11 +14922,13 @@ Variables
-

Definition at line 879 of file hidusagestr.h.

+

Definition at line 879 of file hidusagestr.h.

- + +

◆ pstrUsagePaletteData

+
@@ -13323,11 +14938,13 @@ Variables
-

Definition at line 880 of file hidusagestr.h.

+

Definition at line 880 of file hidusagestr.h.

- + +

◆ pstrUsageBlitReport

+
@@ -13337,11 +14954,13 @@ Variables
-

Definition at line 881 of file hidusagestr.h.

+

Definition at line 881 of file hidusagestr.h.

- + +

◆ pstrUsageBlitRectangleX1

+
@@ -13351,11 +14970,13 @@ Variables
-

Definition at line 882 of file hidusagestr.h.

+

Definition at line 882 of file hidusagestr.h.

- + +

◆ pstrUsageBlitRectangleY1

+
@@ -13365,11 +14986,13 @@ Variables
-

Definition at line 883 of file hidusagestr.h.

+

Definition at line 883 of file hidusagestr.h.

- + +

◆ pstrUsageBlitRectangleX2

+
@@ -13379,11 +15002,13 @@ Variables
-

Definition at line 884 of file hidusagestr.h.

+

Definition at line 884 of file hidusagestr.h.

- + +

◆ pstrUsageBlitRectangleY2

+
@@ -13393,11 +15018,13 @@ Variables
-

Definition at line 885 of file hidusagestr.h.

+

Definition at line 885 of file hidusagestr.h.

- + +

◆ pstrUsageBlitData

+
@@ -13407,11 +15034,13 @@ Variables
-

Definition at line 886 of file hidusagestr.h.

+

Definition at line 886 of file hidusagestr.h.

- + +

◆ pstrUsageSoftButton

+
@@ -13421,11 +15050,13 @@ Variables
-

Definition at line 887 of file hidusagestr.h.

+

Definition at line 887 of file hidusagestr.h.

- + +

◆ pstrUsageSoftButtonID

+
@@ -13435,11 +15066,13 @@ Variables
-

Definition at line 888 of file hidusagestr.h.

+

Definition at line 888 of file hidusagestr.h.

- + +

◆ pstrUsageSoftButtonSide

+
@@ -13449,11 +15082,13 @@ Variables
-

Definition at line 889 of file hidusagestr.h.

+

Definition at line 889 of file hidusagestr.h.

- + +

◆ pstrUsageSoftButtonOffset1

+
@@ -13463,11 +15098,13 @@ Variables
-

Definition at line 890 of file hidusagestr.h.

+

Definition at line 890 of file hidusagestr.h.

- + +

◆ pstrUsageSoftButtonOffset2

+
@@ -13477,11 +15114,13 @@ Variables
-

Definition at line 891 of file hidusagestr.h.

+

Definition at line 891 of file hidusagestr.h.

- + +

◆ pstrUsageSoftButtonReport

+
@@ -13491,11 +15130,13 @@ Variables
-

Definition at line 892 of file hidusagestr.h.

+

Definition at line 892 of file hidusagestr.h.

- + +

◆ pstrUsageMedicalUltrasound

+
@@ -13505,11 +15146,13 @@ Variables
-

Definition at line 895 of file hidusagestr.h.

+

Definition at line 895 of file hidusagestr.h.

- + +

◆ pstrUsageVCRAcquisition

+
@@ -13519,11 +15162,13 @@ Variables
-

Definition at line 896 of file hidusagestr.h.

+

Definition at line 896 of file hidusagestr.h.

- + +

◆ pstrUsageFreezeThaw

+
@@ -13533,11 +15178,13 @@ Variables
-

Definition at line 897 of file hidusagestr.h.

+

Definition at line 897 of file hidusagestr.h.

- + +

◆ pstrUsageClipStore

+
@@ -13547,11 +15194,13 @@ Variables
-

Definition at line 898 of file hidusagestr.h.

+

Definition at line 898 of file hidusagestr.h.

- + +

◆ pstrUsageUpdate

+
@@ -13561,11 +15210,13 @@ Variables
-

Definition at line 899 of file hidusagestr.h.

+

Definition at line 899 of file hidusagestr.h.

- + +

◆ pstrUsageNext

+
@@ -13575,11 +15226,13 @@ Variables
-

Definition at line 900 of file hidusagestr.h.

+

Definition at line 900 of file hidusagestr.h.

- + +

◆ pstrUsageSave

+
@@ -13589,11 +15242,13 @@ Variables
-

Definition at line 901 of file hidusagestr.h.

+

Definition at line 901 of file hidusagestr.h.

- + +

◆ pstrUsagePrint

+
@@ -13603,11 +15258,13 @@ Variables
-

Definition at line 902 of file hidusagestr.h.

+

Definition at line 902 of file hidusagestr.h.

- + +

◆ pstrUsageMicrophoneEnable

+
@@ -13617,11 +15274,13 @@ Variables
-

Definition at line 903 of file hidusagestr.h.

+

Definition at line 903 of file hidusagestr.h.

- + +

◆ pstrUsageCine

+
@@ -13631,11 +15290,13 @@ Variables
-

Definition at line 904 of file hidusagestr.h.

+

Definition at line 904 of file hidusagestr.h.

- + +

◆ pstrUsageTransmitPower

+
@@ -13645,11 +15306,13 @@ Variables
-

Definition at line 905 of file hidusagestr.h.

+

Definition at line 905 of file hidusagestr.h.

- + +

◆ pstrUsageFocus

+
@@ -13659,11 +15322,13 @@ Variables
-

Definition at line 907 of file hidusagestr.h.

+

Definition at line 907 of file hidusagestr.h.

- + +

◆ pstrUsageDepth

+
@@ -13673,11 +15338,13 @@ Variables
-

Definition at line 908 of file hidusagestr.h.

+

Definition at line 908 of file hidusagestr.h.

- + +

◆ pstrUsageSoftStepPrimary

+
@@ -13687,11 +15354,13 @@ Variables
-

Definition at line 909 of file hidusagestr.h.

+

Definition at line 909 of file hidusagestr.h.

- + +

◆ pstrUsageSoftStepSecondary

+
@@ -13701,11 +15370,13 @@ Variables
-

Definition at line 910 of file hidusagestr.h.

+

Definition at line 910 of file hidusagestr.h.

- + +

◆ pstrUsageDepthGainCompensation

+
@@ -13715,11 +15386,13 @@ Variables
-

Definition at line 911 of file hidusagestr.h.

+

Definition at line 911 of file hidusagestr.h.

- + +

◆ pstrUsageZoomSelect

+
@@ -13729,11 +15402,13 @@ Variables
-

Definition at line 912 of file hidusagestr.h.

+

Definition at line 912 of file hidusagestr.h.

- + +

◆ pstrUsageZoomAdjust

+
@@ -13743,11 +15418,13 @@ Variables
-

Definition at line 913 of file hidusagestr.h.

+

Definition at line 913 of file hidusagestr.h.

- + +

◆ pstrUsageSpectralDopplerModeSelect

+
@@ -13757,11 +15434,13 @@ Variables
-

Definition at line 914 of file hidusagestr.h.

+

Definition at line 914 of file hidusagestr.h.

- + +

◆ pstrUsageSpectralDopplerModeAdjust

+
@@ -13771,11 +15450,13 @@ Variables
-

Definition at line 915 of file hidusagestr.h.

+

Definition at line 915 of file hidusagestr.h.

- + +

◆ pstrUsageColorDopplerModeSelect

+
@@ -13785,11 +15466,13 @@ Variables
-

Definition at line 916 of file hidusagestr.h.

+

Definition at line 916 of file hidusagestr.h.

- + +

◆ pstrUsageColorDopplerModeAdjust

+
@@ -13799,11 +15482,13 @@ Variables
-

Definition at line 917 of file hidusagestr.h.

+

Definition at line 917 of file hidusagestr.h.

- + +

◆ pstrUsageMotionModeSelect

+
@@ -13813,11 +15498,13 @@ Variables
-

Definition at line 918 of file hidusagestr.h.

+

Definition at line 918 of file hidusagestr.h.

- + +

◆ pstrUsageMotionModeAdjust

+
@@ -13827,11 +15514,13 @@ Variables
-

Definition at line 919 of file hidusagestr.h.

+

Definition at line 919 of file hidusagestr.h.

- + +

◆ pstrUsage2DModeSelect

+
@@ -13841,11 +15530,13 @@ Variables
-

Definition at line 920 of file hidusagestr.h.

+

Definition at line 920 of file hidusagestr.h.

- + +

◆ pstrUsage2DModeAdjust

+
@@ -13855,11 +15546,13 @@ Variables
-

Definition at line 921 of file hidusagestr.h.

+

Definition at line 921 of file hidusagestr.h.

- + +

◆ pstrUsageSoftControlSelect

+
@@ -13869,11 +15562,13 @@ Variables
-

Definition at line 922 of file hidusagestr.h.

+

Definition at line 922 of file hidusagestr.h.

- + +

◆ pstrUsageSoftControlAdjust

+
@@ -13883,7 +15578,7 @@ Variables
-

Definition at line 923 of file hidusagestr.h.

+

Definition at line 923 of file hidusagestr.h.

@@ -13892,7 +15587,7 @@ Variables diff --git a/hidusagestr_8h__dep__incl.map b/hidusagestr_8h__dep__incl.map index 6f4881b6..10a88ddc 100644 --- a/hidusagestr_8h__dep__incl.map +++ b/hidusagestr_8h__dep__incl.map @@ -1,34 +1,34 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hidusagestr_8h__dep__incl.md5 b/hidusagestr_8h__dep__incl.md5 index f03c365e..07029779 100644 --- a/hidusagestr_8h__dep__incl.md5 +++ b/hidusagestr_8h__dep__incl.md5 @@ -1 +1 @@ -458cdc5a16353bd037883f3fc8526b3c \ No newline at end of file +33375ae6c48dbe16014389193cfb26c6 \ No newline at end of file diff --git a/hidusagestr_8h__dep__incl.png b/hidusagestr_8h__dep__incl.png index 76630d6c..1d8a64e9 100644 Binary files a/hidusagestr_8h__dep__incl.png and b/hidusagestr_8h__dep__incl.png differ diff --git a/hidusagestr_8h__incl.map b/hidusagestr_8h__incl.map index 95ce7f8f..8318f958 100644 --- a/hidusagestr_8h__incl.map +++ b/hidusagestr_8h__incl.map @@ -1,3 +1,3 @@ - + diff --git a/hidusagestr_8h__incl.md5 b/hidusagestr_8h__incl.md5 index bc04b8cf..3d407f20 100644 --- a/hidusagestr_8h__incl.md5 +++ b/hidusagestr_8h__incl.md5 @@ -1 +1 @@ -794eccf037bd4feb00fd840fe0fc37b3 \ No newline at end of file +74eae8cd2429afa36b202f9e3b7f9c92 \ No newline at end of file diff --git a/hidusagestr_8h__incl.png b/hidusagestr_8h__incl.png index d4a993ef..02ea41a9 100644 Binary files a/hidusagestr_8h__incl.png and b/hidusagestr_8h__incl.png differ diff --git a/hidusagestr_8h_source.html b/hidusagestr_8h_source.html index e152ebbf..6e82d389 100644 --- a/hidusagestr_8h_source.html +++ b/hidusagestr_8h_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: hidusagestr.h Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + +
- - + +
@@ -107,7 +84,9 @@ Macros  

Macro Definition Documentation

- + +

◆ __HIDUSAGETITLEARRAYS_H__

+
@@ -117,7 +96,7 @@ Macros
-

Definition at line 18 of file hidusagetitlearrays.cpp.

+

Definition at line 18 of file hidusagetitlearrays.cpp.

@@ -126,7 +105,7 @@ Macros diff --git a/hidusagetitlearrays_8cpp__incl.map b/hidusagetitlearrays_8cpp__incl.map index b1cb20e7..f94d0ba0 100644 --- a/hidusagetitlearrays_8cpp__incl.map +++ b/hidusagetitlearrays_8cpp__incl.map @@ -1,4 +1,4 @@ - - + + diff --git a/hidusagetitlearrays_8cpp__incl.md5 b/hidusagetitlearrays_8cpp__incl.md5 index 4e28641f..85cded89 100644 --- a/hidusagetitlearrays_8cpp__incl.md5 +++ b/hidusagetitlearrays_8cpp__incl.md5 @@ -1 +1 @@ -24f4b9fff6ebcb53f983ea5749309c1d \ No newline at end of file +bf6795292f5f5a0d124868b867d6bd79 \ No newline at end of file diff --git a/hidusagetitlearrays_8cpp__incl.png b/hidusagetitlearrays_8cpp__incl.png index 0fd8000a..2bed71c0 100644 Binary files a/hidusagetitlearrays_8cpp__incl.png and b/hidusagetitlearrays_8cpp__incl.png differ diff --git a/hidusagetitlearrays_8cpp_source.html b/hidusagetitlearrays_8cpp_source.html index 350f8b8c..12f989f0 100644 --- a/hidusagetitlearrays_8cpp_source.html +++ b/hidusagetitlearrays_8cpp_source.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: hidusagetitlearrays.cpp Source File @@ -11,9 +12,6 @@ - @@ -32,40 +30,19 @@ - + - - + + + + - + - - + + + + - + - + + + +
-
USB Host Library Rev.2.0
+
USB Host Library Rev. 2.0

The code is released under the GNU General Public License.


-

+

Summary

This is Revision 2.0 of MAX3421E-based USB Host Shield Library for AVR's.

Project main web site is: https://chome.nerpa.tech/arduino_usb_host_shield_projects/.

Some information can also be found at: http://blog.tkjelectronics.dk/.

The shield can be purchased from TKJ Electronics: http://shop.tkjelectronics.dk/product_info.php?products_id=43.

-USB Host Shield +USB Host Shield

For more information about the hardware see the Hardware Manual.

Developed By

@@ -173,7 +156,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

Documentation for the library can be found at the following link: https://felis.github.io/USB_Host_Shield_2.0/.

Enable debugging

By default serial debugging is disabled. To turn it on simply change ENABLE_UHS_DEBUGGING to 1 in settings.h like so:

-
1 {C++}
2 #define ENABLE_UHS_DEBUGGING 1

Boards

+
{C++}
#define ENABLE_UHS_DEBUGGING 1

Boards

Currently the following boards are supported by the library:

-
  • Teensy (Teensy++ 1.0, Teensy 2.0, Teensy++ 2.0, Teensy 3.x, and Teensy LC)
      +
    • Teensy (Teensy++ 1.0, Teensy 2.0, Teensy++ 2.0, Teensy 3.x, Teensy LC and Teensy 4.x)
      • Note if you are using the Teensy 3.x you should download this SPI library as well: https://github.com/xxxajk/spi4teensy3. You should then add #include <spi4teensy3.h> to your .ino file.
    • @@ -313,9 +296,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

      Wii library

      The Wii library support the Wiimote, but also the Nunchuch and Motion Plus extensions via Bluetooth. The Wii U Pro Controller and Wii Balance Board are also supported via Bluetooth.

      First you have to pair with the controller, this is done automatically by the library if you create the instance like so:

      -
      1 {C++}
      2 WII Wii(&Btd, PAIR);

      And then press 1 & 2 at once on the Wiimote or the SYNC buttons if you are using a Wii U Pro Controller or a Wii Balance Board.

      +
      {C++}
      WII Wii(&Btd, PAIR);

      And then press 1 & 2 at once on the Wiimote or the SYNC buttons if you are using a Wii U Pro Controller or a Wii Balance Board.

      After that you can simply create the instance like so:

      -
      1 {C++}
      2 WII Wii(&Btd);

      Then just press any button on the Wiimote and it will then connect to the dongle.

      +
      {C++}
      WII Wii(&Btd);

      Then just press any button on the Wiimote and it will then connect to the dongle.

      Take a look at the example for more information: Wii.ino.

      Also take a look at the blog post:

        @@ -355,8 +338,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

        Note this means that it uses pin 13, 12, 11 on an Arduino Uno, so these pins can not be used for anything else than SPI communication!

        Furthermore it uses one pin as SS and one INT pin. These are by default located on pin 10 and 9 respectively. They can easily be reconfigured in case you need to use them for something else by cutting the jumper on the shield and then solder a wire from the pad to the new pin.

        After that you need modify the following entry in UsbCore.h:

        -
        1 {C++}
        2 typedef MAX3421e<P10, P9> MAX3421E;

        For instance if you have rerouted SS to pin 7 it should read:

        -
        1 {C++}
        2 typedef MAX3421e<P7, P9> MAX3421E;

        See the "Interface modifications" section in the hardware manual for more information.

        +
        {C++}
        typedef MAX3421e<P10, P9> MAX3421E;

        For instance if you have rerouted SS to pin 7 it should read:

        +
        {C++}
        typedef MAX3421e<P7, P9> MAX3421E;

        See the "Interface modifications" section in the hardware manual for more information.

        FAQ

        When I plug my device into the USB connector nothing happens?

        @@ -368,7 +351,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

        When I connecting my PS3 controller I get a output like this:

        -
        1 Dualshock 3 Controller Enabled
        2 
        3 LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
        4 LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
        5 LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
        6 LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
        7 LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
          +
          Dualshock 3 Controller Enabled
          LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
          LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
          LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
          LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
          LeftHatX: 0 LeftHatY: 0 RightHatX: 0 RightHatY: 0
          • This means that your dongle does not support 2.0+EDR, so you will need another dongle. Please see the following list for tested working dongles.
          @@ -382,7 +365,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/inherit_graph_0.map b/inherit_graph_0.map index 6ffd86b2..daf7b9d5 100644 --- a/inherit_graph_0.map +++ b/inherit_graph_0.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_0.md5 b/inherit_graph_0.md5 index 579c5f1b..bd8903f1 100644 --- a/inherit_graph_0.md5 +++ b/inherit_graph_0.md5 @@ -1 +1 @@ -51aec80c6698220ab54f75d7e2a76022 \ No newline at end of file +e87ef1920ae3987d3f53b1c3f1b6da38 \ No newline at end of file diff --git a/inherit_graph_0.png b/inherit_graph_0.png index 9342406d..5dfade4e 100644 Binary files a/inherit_graph_0.png and b/inherit_graph_0.png differ diff --git a/inherit_graph_1.map b/inherit_graph_1.map index c98bdc5d..7e72d74b 100644 --- a/inherit_graph_1.map +++ b/inherit_graph_1.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/inherit_graph_1.md5 b/inherit_graph_1.md5 index 4b69cca0..592e9a2f 100644 --- a/inherit_graph_1.md5 +++ b/inherit_graph_1.md5 @@ -1 +1 @@ -f7077192a6c9c75c0fa28e435f701915 \ No newline at end of file +b017c0b10fef5a6bee6477623e5880f6 \ No newline at end of file diff --git a/inherit_graph_1.png b/inherit_graph_1.png index de1f348b..0597a6e6 100644 Binary files a/inherit_graph_1.png and b/inherit_graph_1.png differ diff --git a/inherit_graph_10.map b/inherit_graph_10.map index d0a7cecd..3a906cb7 100644 --- a/inherit_graph_10.map +++ b/inherit_graph_10.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_10.md5 b/inherit_graph_10.md5 index a5b48127..1742c117 100644 --- a/inherit_graph_10.md5 +++ b/inherit_graph_10.md5 @@ -1 +1 @@ -73bbaef19201f2ba28611d49756a3e81 \ No newline at end of file +2e90305d9cdc8803e4c818090bf3bb7f \ No newline at end of file diff --git a/inherit_graph_10.png b/inherit_graph_10.png index e99ec9e0..f87eec3d 100644 Binary files a/inherit_graph_10.png and b/inherit_graph_10.png differ diff --git a/inherit_graph_11.map b/inherit_graph_11.map index 18022101..7a781615 100644 --- a/inherit_graph_11.map +++ b/inherit_graph_11.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_11.md5 b/inherit_graph_11.md5 index 51fa68e9..86db3871 100644 --- a/inherit_graph_11.md5 +++ b/inherit_graph_11.md5 @@ -1 +1 @@ -601b035ab244851300e16f0a82e686ac \ No newline at end of file +a7a06573aa6e34ac9ca82e472915efc1 \ No newline at end of file diff --git a/inherit_graph_11.png b/inherit_graph_11.png index 1c1af84e..4c911ea6 100644 Binary files a/inherit_graph_11.png and b/inherit_graph_11.png differ diff --git a/inherit_graph_12.map b/inherit_graph_12.map index ddb1cecb..ea4e3d89 100644 --- a/inherit_graph_12.map +++ b/inherit_graph_12.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_12.md5 b/inherit_graph_12.md5 index c3e39686..314ef65c 100644 --- a/inherit_graph_12.md5 +++ b/inherit_graph_12.md5 @@ -1 +1 @@ -3ed57b3e36f0a7a657eed42fddb5202d \ No newline at end of file +ed02cfddadc4837deab27d8a488e0b8a \ No newline at end of file diff --git a/inherit_graph_12.png b/inherit_graph_12.png index ad9652c1..3628c992 100644 Binary files a/inherit_graph_12.png and b/inherit_graph_12.png differ diff --git a/inherit_graph_13.map b/inherit_graph_13.map index f1a5a480..80a4e176 100644 --- a/inherit_graph_13.map +++ b/inherit_graph_13.map @@ -1,4 +1,4 @@ - - + + diff --git a/inherit_graph_13.md5 b/inherit_graph_13.md5 index de950995..61ea85b7 100644 --- a/inherit_graph_13.md5 +++ b/inherit_graph_13.md5 @@ -1 +1 @@ -a582106e55052f1107fabe28f27c7d10 \ No newline at end of file +2d6b3e67436f8489e4525334563aaebd \ No newline at end of file diff --git a/inherit_graph_13.png b/inherit_graph_13.png index 68f24fbd..a2c9b7c1 100644 Binary files a/inherit_graph_13.png and b/inherit_graph_13.png differ diff --git a/inherit_graph_14.map b/inherit_graph_14.map index 61557dd3..7f726b01 100644 --- a/inherit_graph_14.map +++ b/inherit_graph_14.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_14.md5 b/inherit_graph_14.md5 index c4d032d9..8d64f76d 100644 --- a/inherit_graph_14.md5 +++ b/inherit_graph_14.md5 @@ -1 +1 @@ -a94f31d2234932f36ce87864433fbf93 \ No newline at end of file +1c695f0e8910c9bf3254eaf9920c1e34 \ No newline at end of file diff --git a/inherit_graph_14.png b/inherit_graph_14.png index 4fc26864..619423a1 100644 Binary files a/inherit_graph_14.png and b/inherit_graph_14.png differ diff --git a/inherit_graph_15.map b/inherit_graph_15.map index a2a2c0f5..b9503f86 100644 --- a/inherit_graph_15.map +++ b/inherit_graph_15.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_15.md5 b/inherit_graph_15.md5 index 9234f30c..ab303183 100644 --- a/inherit_graph_15.md5 +++ b/inherit_graph_15.md5 @@ -1 +1 @@ -0cd0ba5765c7231e72b2249ecf384180 \ No newline at end of file +28d903fff18b61a92823893cbdd9f35b \ No newline at end of file diff --git a/inherit_graph_15.png b/inherit_graph_15.png index 3dd952fc..485fd631 100644 Binary files a/inherit_graph_15.png and b/inherit_graph_15.png differ diff --git a/inherit_graph_16.map b/inherit_graph_16.map index 8eb0dcd3..3de9c461 100644 --- a/inherit_graph_16.map +++ b/inherit_graph_16.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_16.md5 b/inherit_graph_16.md5 index fffed17c..2bfc37b7 100644 --- a/inherit_graph_16.md5 +++ b/inherit_graph_16.md5 @@ -1 +1 @@ -6dfa0651c3cd070f61a646406016af8a \ No newline at end of file +564cd4776df44fada8a3277544d21210 \ No newline at end of file diff --git a/inherit_graph_16.png b/inherit_graph_16.png index 18e15744..9fa946e5 100644 Binary files a/inherit_graph_16.png and b/inherit_graph_16.png differ diff --git a/inherit_graph_17.map b/inherit_graph_17.map index 09b7d183..6fe6ea14 100644 --- a/inherit_graph_17.map +++ b/inherit_graph_17.map @@ -1,4 +1,4 @@ - - + + diff --git a/inherit_graph_17.md5 b/inherit_graph_17.md5 index 7323cb95..859cfec1 100644 --- a/inherit_graph_17.md5 +++ b/inherit_graph_17.md5 @@ -1 +1 @@ -9934f46f59f600eeafd7fe021507ff07 \ No newline at end of file +4993e04d4be08bcb8286708a2596b242 \ No newline at end of file diff --git a/inherit_graph_17.png b/inherit_graph_17.png index 149c9f7f..cabde70d 100644 Binary files a/inherit_graph_17.png and b/inherit_graph_17.png differ diff --git a/inherit_graph_18.map b/inherit_graph_18.map index 4ad9234c..a41d378b 100644 --- a/inherit_graph_18.map +++ b/inherit_graph_18.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_18.md5 b/inherit_graph_18.md5 index 509a7c53..da409493 100644 --- a/inherit_graph_18.md5 +++ b/inherit_graph_18.md5 @@ -1 +1 @@ -a92c38bccf0475ef95cebbb56709577d \ No newline at end of file +78e1471dd12f57596e4d7059b2b7fe2b \ No newline at end of file diff --git a/inherit_graph_18.png b/inherit_graph_18.png index 1447e42e..a7617101 100644 Binary files a/inherit_graph_18.png and b/inherit_graph_18.png differ diff --git a/inherit_graph_19.map b/inherit_graph_19.map index ef9d16b3..7c3c5bbf 100644 --- a/inherit_graph_19.map +++ b/inherit_graph_19.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_19.md5 b/inherit_graph_19.md5 index 58aac6cf..da7653a0 100644 --- a/inherit_graph_19.md5 +++ b/inherit_graph_19.md5 @@ -1 +1 @@ -8a9d6ad9dcac0e1f24d9388b79f919a2 \ No newline at end of file +ad12c61bc74928fe7806a9212cc53d96 \ No newline at end of file diff --git a/inherit_graph_19.png b/inherit_graph_19.png index 90dee24c..3f4c0ca3 100644 Binary files a/inherit_graph_19.png and b/inherit_graph_19.png differ diff --git a/inherit_graph_2.map b/inherit_graph_2.map index 0850ca72..9d60c928 100644 --- a/inherit_graph_2.map +++ b/inherit_graph_2.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_2.md5 b/inherit_graph_2.md5 index 4f950ffd..c00a6f8f 100644 --- a/inherit_graph_2.md5 +++ b/inherit_graph_2.md5 @@ -1 +1 @@ -24627451c36c62f79e0d4a157018b61f \ No newline at end of file +bcdab5308ead65ebde09b3a589327ac2 \ No newline at end of file diff --git a/inherit_graph_2.png b/inherit_graph_2.png index 9bbbb8a3..a361ec98 100644 Binary files a/inherit_graph_2.png and b/inherit_graph_2.png differ diff --git a/inherit_graph_20.map b/inherit_graph_20.map index 34561d94..756e671f 100644 --- a/inherit_graph_20.map +++ b/inherit_graph_20.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/inherit_graph_20.md5 b/inherit_graph_20.md5 index baccdb90..5e38afe0 100644 --- a/inherit_graph_20.md5 +++ b/inherit_graph_20.md5 @@ -1 +1 @@ -ef590edf2e26fe3da8529463a5c11b67 \ No newline at end of file +780f0b86057a92fa3ed17db998c38ed1 \ No newline at end of file diff --git a/inherit_graph_20.png b/inherit_graph_20.png index 4ff7ff1e..cf55073d 100644 Binary files a/inherit_graph_20.png and b/inherit_graph_20.png differ diff --git a/inherit_graph_21.map b/inherit_graph_21.map index 9ee5efb9..28c66850 100644 --- a/inherit_graph_21.map +++ b/inherit_graph_21.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_21.md5 b/inherit_graph_21.md5 index a632eab3..366d3a37 100644 --- a/inherit_graph_21.md5 +++ b/inherit_graph_21.md5 @@ -1 +1 @@ -9fcef69ec3dac621831c24e0ffbd1fb5 \ No newline at end of file +052d9abf2542a495d1b6b680591d3ac4 \ No newline at end of file diff --git a/inherit_graph_21.png b/inherit_graph_21.png index f42ba746..3ddf9f9b 100644 Binary files a/inherit_graph_21.png and b/inherit_graph_21.png differ diff --git a/inherit_graph_22.map b/inherit_graph_22.map index 4269efb9..1e73abad 100644 --- a/inherit_graph_22.map +++ b/inherit_graph_22.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_22.md5 b/inherit_graph_22.md5 index c20f7c22..86740bfe 100644 --- a/inherit_graph_22.md5 +++ b/inherit_graph_22.md5 @@ -1 +1 @@ -4432d09c85865cbd8036d4bb3bcf1793 \ No newline at end of file +a06694846e55175ba4dc3a2489193ed8 \ No newline at end of file diff --git a/inherit_graph_22.png b/inherit_graph_22.png index 54b0a0b5..f12edcfc 100644 Binary files a/inherit_graph_22.png and b/inherit_graph_22.png differ diff --git a/inherit_graph_23.map b/inherit_graph_23.map index 104352c1..0d97d2cc 100644 --- a/inherit_graph_23.map +++ b/inherit_graph_23.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_23.md5 b/inherit_graph_23.md5 index 166377be..7e8bed28 100644 --- a/inherit_graph_23.md5 +++ b/inherit_graph_23.md5 @@ -1 +1 @@ -877ea67b6c20c690d23e5db6d644de48 \ No newline at end of file +9c0e10f2760da98ecade6008707fa5b8 \ No newline at end of file diff --git a/inherit_graph_23.png b/inherit_graph_23.png index 6888cd40..0b2079ce 100644 Binary files a/inherit_graph_23.png and b/inherit_graph_23.png differ diff --git a/inherit_graph_24.map b/inherit_graph_24.map index 49704a3e..6c18c9be 100644 --- a/inherit_graph_24.map +++ b/inherit_graph_24.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_24.md5 b/inherit_graph_24.md5 index 8d30401d..99d88ee9 100644 --- a/inherit_graph_24.md5 +++ b/inherit_graph_24.md5 @@ -1 +1 @@ -57ff073c312452737b67ddf1c2920573 \ No newline at end of file +dd061fb6416e37491a61f0d696398647 \ No newline at end of file diff --git a/inherit_graph_24.png b/inherit_graph_24.png index 9f46752f..5673ae6a 100644 Binary files a/inherit_graph_24.png and b/inherit_graph_24.png differ diff --git a/inherit_graph_25.map b/inherit_graph_25.map index 212162d4..f8919481 100644 --- a/inherit_graph_25.map +++ b/inherit_graph_25.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_25.md5 b/inherit_graph_25.md5 index bedabd8f..d7ec8270 100644 --- a/inherit_graph_25.md5 +++ b/inherit_graph_25.md5 @@ -1 +1 @@ -eef6363741eec1182f17bcaefc72a3a4 \ No newline at end of file +11f69995d0cad2317810d40826b473db \ No newline at end of file diff --git a/inherit_graph_25.png b/inherit_graph_25.png index 61988f56..6dfcb7a1 100644 Binary files a/inherit_graph_25.png and b/inherit_graph_25.png differ diff --git a/inherit_graph_26.map b/inherit_graph_26.map index 20e6b032..2b5a0c7f 100644 --- a/inherit_graph_26.map +++ b/inherit_graph_26.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_26.md5 b/inherit_graph_26.md5 index 53883b5b..1c5c6b8c 100644 --- a/inherit_graph_26.md5 +++ b/inherit_graph_26.md5 @@ -1 +1 @@ -e08467138944e1fc15704ad9d90d125d \ No newline at end of file +876429b494d9aa2827ca081f519cdeb9 \ No newline at end of file diff --git a/inherit_graph_26.png b/inherit_graph_26.png index 959eef66..eaa6e1da 100644 Binary files a/inherit_graph_26.png and b/inherit_graph_26.png differ diff --git a/inherit_graph_27.map b/inherit_graph_27.map index 4392f2f2..f75496f7 100644 --- a/inherit_graph_27.map +++ b/inherit_graph_27.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_27.md5 b/inherit_graph_27.md5 index 706dd303..1110dd41 100644 --- a/inherit_graph_27.md5 +++ b/inherit_graph_27.md5 @@ -1 +1 @@ -bcd0f59f08ac86a597efcc4e350e7f3c \ No newline at end of file +dc4acb24ba9a1179dee83f6f86946736 \ No newline at end of file diff --git a/inherit_graph_27.png b/inherit_graph_27.png index b7d1f280..4748849b 100644 Binary files a/inherit_graph_27.png and b/inherit_graph_27.png differ diff --git a/inherit_graph_28.map b/inherit_graph_28.map index 15e536de..9bd461fa 100644 --- a/inherit_graph_28.map +++ b/inherit_graph_28.map @@ -1,4 +1,4 @@ - - + + diff --git a/inherit_graph_28.md5 b/inherit_graph_28.md5 index 44305291..d5d79aae 100644 --- a/inherit_graph_28.md5 +++ b/inherit_graph_28.md5 @@ -1 +1 @@ -960896af1b7f0c81de87f46cd275cd33 \ No newline at end of file +c5418760a5e0ce73c2d4856831789ba1 \ No newline at end of file diff --git a/inherit_graph_28.png b/inherit_graph_28.png index 88ce146d..e1093d7f 100644 Binary files a/inherit_graph_28.png and b/inherit_graph_28.png differ diff --git a/inherit_graph_29.map b/inherit_graph_29.map index 564b2d10..475cfbd5 100644 --- a/inherit_graph_29.map +++ b/inherit_graph_29.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_29.md5 b/inherit_graph_29.md5 index d35c033e..7f97261a 100644 --- a/inherit_graph_29.md5 +++ b/inherit_graph_29.md5 @@ -1 +1 @@ -9d1d3dd2508a0988eee00e0bb2b34cf9 \ No newline at end of file +b112af6df1dfb7c508524bffd8dcd294 \ No newline at end of file diff --git a/inherit_graph_29.png b/inherit_graph_29.png index 9d2d3372..4f4804cf 100644 Binary files a/inherit_graph_29.png and b/inherit_graph_29.png differ diff --git a/inherit_graph_3.map b/inherit_graph_3.map index 58bbc248..1adb4990 100644 --- a/inherit_graph_3.map +++ b/inherit_graph_3.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_3.md5 b/inherit_graph_3.md5 index 412a1d56..48d9aedf 100644 --- a/inherit_graph_3.md5 +++ b/inherit_graph_3.md5 @@ -1 +1 @@ -3040d4af94f0cf70f4b2922506297649 \ No newline at end of file +c56f1be7ddbacc7b1a86f8330279a489 \ No newline at end of file diff --git a/inherit_graph_3.png b/inherit_graph_3.png index c6f059ee..2f00ce53 100644 Binary files a/inherit_graph_3.png and b/inherit_graph_3.png differ diff --git a/inherit_graph_30.map b/inherit_graph_30.map index d7b57793..6fc74b6f 100644 --- a/inherit_graph_30.map +++ b/inherit_graph_30.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_30.md5 b/inherit_graph_30.md5 index d7e3da32..f230272c 100644 --- a/inherit_graph_30.md5 +++ b/inherit_graph_30.md5 @@ -1 +1 @@ -cc85de701ca8dc6b75d8fb39155b29e5 \ No newline at end of file +638e562f26b99bb20496fa13a2064017 \ No newline at end of file diff --git a/inherit_graph_30.png b/inherit_graph_30.png index adb885d6..91d04aa4 100644 Binary files a/inherit_graph_30.png and b/inherit_graph_30.png differ diff --git a/inherit_graph_31.map b/inherit_graph_31.map index bad5ccf1..abc090b9 100644 --- a/inherit_graph_31.map +++ b/inherit_graph_31.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_31.md5 b/inherit_graph_31.md5 index 82e24427..3e118ea6 100644 --- a/inherit_graph_31.md5 +++ b/inherit_graph_31.md5 @@ -1 +1 @@ -76143ed123b79c4a7c89b3e3901cbe6c \ No newline at end of file +6837647f38409e0a708da691073c8d57 \ No newline at end of file diff --git a/inherit_graph_31.png b/inherit_graph_31.png index 35c06983..14eeea6b 100644 Binary files a/inherit_graph_31.png and b/inherit_graph_31.png differ diff --git a/inherit_graph_32.map b/inherit_graph_32.map index e27d0c42..c095e645 100644 --- a/inherit_graph_32.map +++ b/inherit_graph_32.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_32.md5 b/inherit_graph_32.md5 index e6597b6a..4684ba88 100644 --- a/inherit_graph_32.md5 +++ b/inherit_graph_32.md5 @@ -1 +1 @@ -54b6d5467876bba7ace9526132001d2c \ No newline at end of file +20b223d7447fd9d1f92c856d06deb34c \ No newline at end of file diff --git a/inherit_graph_32.png b/inherit_graph_32.png index 012c3534..23b37923 100644 Binary files a/inherit_graph_32.png and b/inherit_graph_32.png differ diff --git a/inherit_graph_33.map b/inherit_graph_33.map index 5a94172a..a4f690fa 100644 --- a/inherit_graph_33.map +++ b/inherit_graph_33.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_33.md5 b/inherit_graph_33.md5 index 222a2769..c4a275a0 100644 --- a/inherit_graph_33.md5 +++ b/inherit_graph_33.md5 @@ -1 +1 @@ -6acd344a4b68803c92a718bdc202c2c9 \ No newline at end of file +c1b13f941f198e6a55ec43bb4af37768 \ No newline at end of file diff --git a/inherit_graph_33.png b/inherit_graph_33.png index 540675ad..ef0ef9ea 100644 Binary files a/inherit_graph_33.png and b/inherit_graph_33.png differ diff --git a/inherit_graph_34.map b/inherit_graph_34.map index e7659185..39bd9eeb 100644 --- a/inherit_graph_34.map +++ b/inherit_graph_34.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_34.md5 b/inherit_graph_34.md5 index 490178fc..08f308ae 100644 --- a/inherit_graph_34.md5 +++ b/inherit_graph_34.md5 @@ -1 +1 @@ -09fca1d400dba23831d13e7df5e3653c \ No newline at end of file +fe93b2452f6c8ed8580b1b8349f5b125 \ No newline at end of file diff --git a/inherit_graph_34.png b/inherit_graph_34.png index a448422e..f059705b 100644 Binary files a/inherit_graph_34.png and b/inherit_graph_34.png differ diff --git a/inherit_graph_35.map b/inherit_graph_35.map index cfb3057b..f7fb5267 100644 --- a/inherit_graph_35.map +++ b/inherit_graph_35.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_35.md5 b/inherit_graph_35.md5 index c77a06af..c50a028b 100644 --- a/inherit_graph_35.md5 +++ b/inherit_graph_35.md5 @@ -1 +1 @@ -f7e2a84e74cd774df0f4dd319eb64818 \ No newline at end of file +256b72fbab6b57cf4773aaef76053091 \ No newline at end of file diff --git a/inherit_graph_35.png b/inherit_graph_35.png index 71eb256c..86b33f57 100644 Binary files a/inherit_graph_35.png and b/inherit_graph_35.png differ diff --git a/inherit_graph_36.map b/inherit_graph_36.map index 2ff4bcd4..5cc81f29 100644 --- a/inherit_graph_36.map +++ b/inherit_graph_36.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_36.md5 b/inherit_graph_36.md5 index 7a434844..ab3b7736 100644 --- a/inherit_graph_36.md5 +++ b/inherit_graph_36.md5 @@ -1 +1 @@ -55ec7b6aa2dea95417ad9a8ab44b92af \ No newline at end of file +f76f83094d52aa1d5ede4851276abb5d \ No newline at end of file diff --git a/inherit_graph_36.png b/inherit_graph_36.png index 7d549be3..0cf9a94a 100644 Binary files a/inherit_graph_36.png and b/inherit_graph_36.png differ diff --git a/inherit_graph_37.map b/inherit_graph_37.map index 957b5054..8caf8ba6 100644 --- a/inherit_graph_37.map +++ b/inherit_graph_37.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_37.md5 b/inherit_graph_37.md5 index 566cb77e..246523a7 100644 --- a/inherit_graph_37.md5 +++ b/inherit_graph_37.md5 @@ -1 +1 @@ -088e9352a3199609f7754b72994cdab8 \ No newline at end of file +58814e892aeee959f14205fedb6d4433 \ No newline at end of file diff --git a/inherit_graph_37.png b/inherit_graph_37.png index 88311685..714bb418 100644 Binary files a/inherit_graph_37.png and b/inherit_graph_37.png differ diff --git a/inherit_graph_38.map b/inherit_graph_38.map index 249b9a93..f0a99600 100644 --- a/inherit_graph_38.map +++ b/inherit_graph_38.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_38.md5 b/inherit_graph_38.md5 index b26c4c93..b8150433 100644 --- a/inherit_graph_38.md5 +++ b/inherit_graph_38.md5 @@ -1 +1 @@ -daebd42513f4d8a3f7b812e8f0d04140 \ No newline at end of file +95ea602f20956fa5ed9512caf3205a08 \ No newline at end of file diff --git a/inherit_graph_38.png b/inherit_graph_38.png index 6c98556f..25c1fea2 100644 Binary files a/inherit_graph_38.png and b/inherit_graph_38.png differ diff --git a/inherit_graph_39.md5 b/inherit_graph_39.md5 index 6e6e3f9c..b52b04ad 100644 --- a/inherit_graph_39.md5 +++ b/inherit_graph_39.md5 @@ -1 +1 @@ -25ae5399eb47f5f6dd9f3853ce45bf75 \ No newline at end of file +90e1ae10b96a2d460ec3f9e356a37d58 \ No newline at end of file diff --git a/inherit_graph_39.png b/inherit_graph_39.png index 61f90436..6b5ee3b4 100644 Binary files a/inherit_graph_39.png and b/inherit_graph_39.png differ diff --git a/inherit_graph_4.map b/inherit_graph_4.map index 3009f4dd..2cfcad19 100644 --- a/inherit_graph_4.map +++ b/inherit_graph_4.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_4.md5 b/inherit_graph_4.md5 index 5ae8e04b..dc5cf354 100644 --- a/inherit_graph_4.md5 +++ b/inherit_graph_4.md5 @@ -1 +1 @@ -4193fad5772fedc8d910b8c1ddf17cbb \ No newline at end of file +5f24c4892acdd5ed6cf619217d69f89a \ No newline at end of file diff --git a/inherit_graph_4.png b/inherit_graph_4.png index a2d9f739..83fe1bc4 100644 Binary files a/inherit_graph_4.png and b/inherit_graph_4.png differ diff --git a/inherit_graph_40.map b/inherit_graph_40.map index 570c0bd0..dff5fca7 100644 --- a/inherit_graph_40.map +++ b/inherit_graph_40.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_40.md5 b/inherit_graph_40.md5 index 3d62232c..29effac8 100644 --- a/inherit_graph_40.md5 +++ b/inherit_graph_40.md5 @@ -1 +1 @@ -330c80adbe895db33b729dd4a21d5c07 \ No newline at end of file +a2e205aba737df71362dab0f52e96f66 \ No newline at end of file diff --git a/inherit_graph_40.png b/inherit_graph_40.png index 3593ab74..34d76337 100644 Binary files a/inherit_graph_40.png and b/inherit_graph_40.png differ diff --git a/inherit_graph_41.map b/inherit_graph_41.map index 9f170229..cc8ee2d7 100644 --- a/inherit_graph_41.map +++ b/inherit_graph_41.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_41.md5 b/inherit_graph_41.md5 index 6a1c02f0..f541790e 100644 --- a/inherit_graph_41.md5 +++ b/inherit_graph_41.md5 @@ -1 +1 @@ -b029d8ee61ea5fde878355c78ea5d173 \ No newline at end of file +834e9d2b8735fbbf887c02bda2072df6 \ No newline at end of file diff --git a/inherit_graph_41.png b/inherit_graph_41.png index d336339a..ede55f02 100644 Binary files a/inherit_graph_41.png and b/inherit_graph_41.png differ diff --git a/inherit_graph_42.map b/inherit_graph_42.map index 0829f7be..419ef49e 100644 --- a/inherit_graph_42.map +++ b/inherit_graph_42.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_42.md5 b/inherit_graph_42.md5 index af6ce610..630386e1 100644 --- a/inherit_graph_42.md5 +++ b/inherit_graph_42.md5 @@ -1 +1 @@ -c866ae9a562917389c3a2fc5880921a9 \ No newline at end of file +27d2b5b9c3e6fc45391b12f9e54f9d9f \ No newline at end of file diff --git a/inherit_graph_42.png b/inherit_graph_42.png index 77f020a3..92bf631a 100644 Binary files a/inherit_graph_42.png and b/inherit_graph_42.png differ diff --git a/inherit_graph_43.map b/inherit_graph_43.map index 5afe7bec..12ed9008 100644 --- a/inherit_graph_43.map +++ b/inherit_graph_43.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_43.md5 b/inherit_graph_43.md5 index 32c3ef2d..46795b56 100644 --- a/inherit_graph_43.md5 +++ b/inherit_graph_43.md5 @@ -1 +1 @@ -0532a009c612d61860d242ed5c02f6ee \ No newline at end of file +c9c4b81a3ce11be2428b060a81596cf7 \ No newline at end of file diff --git a/inherit_graph_43.png b/inherit_graph_43.png index c5cc6203..a736bb41 100644 Binary files a/inherit_graph_43.png and b/inherit_graph_43.png differ diff --git a/inherit_graph_44.map b/inherit_graph_44.map index 95ae6d26..92fd90d0 100644 --- a/inherit_graph_44.map +++ b/inherit_graph_44.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_44.md5 b/inherit_graph_44.md5 index 0065e0ef..34651d5e 100644 --- a/inherit_graph_44.md5 +++ b/inherit_graph_44.md5 @@ -1 +1 @@ -d7c36044078187de8be4193fefea9aed \ No newline at end of file +01ed2c37faec8ef8b3b0f0ca6f6797a1 \ No newline at end of file diff --git a/inherit_graph_44.png b/inherit_graph_44.png index d55f4f4c..e06fd7fc 100644 Binary files a/inherit_graph_44.png and b/inherit_graph_44.png differ diff --git a/inherit_graph_45.map b/inherit_graph_45.map index 783bc8ec..fdd37523 100644 --- a/inherit_graph_45.map +++ b/inherit_graph_45.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_45.md5 b/inherit_graph_45.md5 index 188d85ce..5215c8d3 100644 --- a/inherit_graph_45.md5 +++ b/inherit_graph_45.md5 @@ -1 +1 @@ -02fed3113bdea3a5e53c82b05dd542ab \ No newline at end of file +dc45e404b2320fe728bfb776d6c634f8 \ No newline at end of file diff --git a/inherit_graph_45.png b/inherit_graph_45.png index ed7a02cb..c6295986 100644 Binary files a/inherit_graph_45.png and b/inherit_graph_45.png differ diff --git a/inherit_graph_46.map b/inherit_graph_46.map index dc09fe38..1aa2a4ba 100644 --- a/inherit_graph_46.map +++ b/inherit_graph_46.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_46.md5 b/inherit_graph_46.md5 index 5d1ef01f..3b2e751c 100644 --- a/inherit_graph_46.md5 +++ b/inherit_graph_46.md5 @@ -1 +1 @@ -6c5d0ee804b4e8716748d9f7b9d0f387 \ No newline at end of file +082fd0f3d5fc2a5f8089be3dcad35b3e \ No newline at end of file diff --git a/inherit_graph_46.png b/inherit_graph_46.png index 73149860..e46cbae1 100644 Binary files a/inherit_graph_46.png and b/inherit_graph_46.png differ diff --git a/inherit_graph_47.map b/inherit_graph_47.map index a4fd8469..fff0b32e 100644 --- a/inherit_graph_47.map +++ b/inherit_graph_47.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_47.md5 b/inherit_graph_47.md5 index 159342ba..69f912ee 100644 --- a/inherit_graph_47.md5 +++ b/inherit_graph_47.md5 @@ -1 +1 @@ -1c7a9b5b86003e92c3bf0c8685c00950 \ No newline at end of file +e52a4a4bfecea1f0ae8945be83b4b6c0 \ No newline at end of file diff --git a/inherit_graph_47.png b/inherit_graph_47.png index 5c085f50..e1573cf3 100644 Binary files a/inherit_graph_47.png and b/inherit_graph_47.png differ diff --git a/inherit_graph_48.map b/inherit_graph_48.map index f93eb75f..91c85815 100644 --- a/inherit_graph_48.map +++ b/inherit_graph_48.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_48.md5 b/inherit_graph_48.md5 index c674602a..3c2c76d8 100644 --- a/inherit_graph_48.md5 +++ b/inherit_graph_48.md5 @@ -1 +1 @@ -8d5846296d9d341acf795a87b1f5cb3c \ No newline at end of file +a6a971f5b382796e3cf1e1e195372ddf \ No newline at end of file diff --git a/inherit_graph_48.png b/inherit_graph_48.png index 274b244c..313ad8c7 100644 Binary files a/inherit_graph_48.png and b/inherit_graph_48.png differ diff --git a/inherit_graph_49.map b/inherit_graph_49.map index 4bd3ca66..a6aab140 100644 --- a/inherit_graph_49.map +++ b/inherit_graph_49.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_49.md5 b/inherit_graph_49.md5 index 10babc4f..00ea3338 100644 --- a/inherit_graph_49.md5 +++ b/inherit_graph_49.md5 @@ -1 +1 @@ -36b8ffb823d725e2c783a2b7a8202aae \ No newline at end of file +822ee13931924f1680478d3ababf923a \ No newline at end of file diff --git a/inherit_graph_49.png b/inherit_graph_49.png index f75296de..5f949b1f 100644 Binary files a/inherit_graph_49.png and b/inherit_graph_49.png differ diff --git a/inherit_graph_5.map b/inherit_graph_5.map index ae27b27a..fbb8e988 100644 --- a/inherit_graph_5.map +++ b/inherit_graph_5.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_5.md5 b/inherit_graph_5.md5 index 14e66f72..cdc0d644 100644 --- a/inherit_graph_5.md5 +++ b/inherit_graph_5.md5 @@ -1 +1 @@ -11dd839e1a01f217fcb955759338f91a \ No newline at end of file +08d515e8d712741afdcd6eacf9c05feb \ No newline at end of file diff --git a/inherit_graph_5.png b/inherit_graph_5.png index b38f4e56..08e79a56 100644 Binary files a/inherit_graph_5.png and b/inherit_graph_5.png differ diff --git a/inherit_graph_50.map b/inherit_graph_50.map index 2fa63592..268984ec 100644 --- a/inherit_graph_50.map +++ b/inherit_graph_50.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_50.md5 b/inherit_graph_50.md5 index 449e6996..6771b49d 100644 --- a/inherit_graph_50.md5 +++ b/inherit_graph_50.md5 @@ -1 +1 @@ -868b020ace8c41333293b31d6f4ba3db \ No newline at end of file +c95b84852e0a546d8620f51aa9de2e00 \ No newline at end of file diff --git a/inherit_graph_50.png b/inherit_graph_50.png index 62f07546..f1df6c93 100644 Binary files a/inherit_graph_50.png and b/inherit_graph_50.png differ diff --git a/inherit_graph_51.map b/inherit_graph_51.map index 8d245233..9958b823 100644 --- a/inherit_graph_51.map +++ b/inherit_graph_51.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_51.md5 b/inherit_graph_51.md5 index b88e057d..ddd45e73 100644 --- a/inherit_graph_51.md5 +++ b/inherit_graph_51.md5 @@ -1 +1 @@ -5c3434b4140d15887c2ce9b803ff2b94 \ No newline at end of file +036e932dc3e7cb59ed4d9b5e9a1ef1d5 \ No newline at end of file diff --git a/inherit_graph_51.png b/inherit_graph_51.png index 9fb87f9c..f618b089 100644 Binary files a/inherit_graph_51.png and b/inherit_graph_51.png differ diff --git a/inherit_graph_52.map b/inherit_graph_52.map index 21765097..0df5da3c 100644 --- a/inherit_graph_52.map +++ b/inherit_graph_52.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_52.md5 b/inherit_graph_52.md5 index 39b032ef..d209cc2c 100644 --- a/inherit_graph_52.md5 +++ b/inherit_graph_52.md5 @@ -1 +1 @@ -f7bc24c0b02011f24f977e7adc86dd70 \ No newline at end of file +5f5043246b0fce4c7727867e1d5927bd \ No newline at end of file diff --git a/inherit_graph_52.png b/inherit_graph_52.png index da941f30..93ad0979 100644 Binary files a/inherit_graph_52.png and b/inherit_graph_52.png differ diff --git a/inherit_graph_53.map b/inherit_graph_53.map index b06a230c..7eaec54a 100644 --- a/inherit_graph_53.map +++ b/inherit_graph_53.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_53.md5 b/inherit_graph_53.md5 index 54a30c4d..6a368047 100644 --- a/inherit_graph_53.md5 +++ b/inherit_graph_53.md5 @@ -1 +1 @@ -1f37fdf36af1f7a4626fdb6e529e6fce \ No newline at end of file +050191547df11f553f5fd58845463842 \ No newline at end of file diff --git a/inherit_graph_53.png b/inherit_graph_53.png index 928b5a63..c9ceabf7 100644 Binary files a/inherit_graph_53.png and b/inherit_graph_53.png differ diff --git a/inherit_graph_54.map b/inherit_graph_54.map index 4b5d011c..1fb726e4 100644 --- a/inherit_graph_54.map +++ b/inherit_graph_54.map @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/inherit_graph_54.md5 b/inherit_graph_54.md5 index 9e0b9eae..4b5f32b8 100644 --- a/inherit_graph_54.md5 +++ b/inherit_graph_54.md5 @@ -1 +1 @@ -0ffd2b6d2b4510d83bb6613deb8d2a78 \ No newline at end of file +9449d80f4013de19614afb4d26ef87d4 \ No newline at end of file diff --git a/inherit_graph_54.png b/inherit_graph_54.png index 7b548a89..af195ecb 100644 Binary files a/inherit_graph_54.png and b/inherit_graph_54.png differ diff --git a/inherit_graph_55.map b/inherit_graph_55.map index 4353fac8..6224ccb9 100644 --- a/inherit_graph_55.map +++ b/inherit_graph_55.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_55.md5 b/inherit_graph_55.md5 index 121741cf..41125d13 100644 --- a/inherit_graph_55.md5 +++ b/inherit_graph_55.md5 @@ -1 +1 @@ -efa111f58b731ca9bde3087bb6774a17 \ No newline at end of file +983f50da3e330fdba2ac90345225970a \ No newline at end of file diff --git a/inherit_graph_55.png b/inherit_graph_55.png index 006ed767..d6492260 100644 Binary files a/inherit_graph_55.png and b/inherit_graph_55.png differ diff --git a/inherit_graph_56.map b/inherit_graph_56.map index eaaf1b45..3c822c82 100644 --- a/inherit_graph_56.map +++ b/inherit_graph_56.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_56.md5 b/inherit_graph_56.md5 index bff6d575..ce516311 100644 --- a/inherit_graph_56.md5 +++ b/inherit_graph_56.md5 @@ -1 +1 @@ -d69e68e89acf9d3e15e4d1008f50b3b4 \ No newline at end of file +e7d99a5c8310be8f588f2d99227ad050 \ No newline at end of file diff --git a/inherit_graph_56.png b/inherit_graph_56.png index e76f2d09..2f9407e6 100644 Binary files a/inherit_graph_56.png and b/inherit_graph_56.png differ diff --git a/inherit_graph_57.map b/inherit_graph_57.map index 9ddbe36c..e061426e 100644 --- a/inherit_graph_57.map +++ b/inherit_graph_57.map @@ -1,33 +1,33 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inherit_graph_57.md5 b/inherit_graph_57.md5 index 9b2f1e61..5eee9a1d 100644 --- a/inherit_graph_57.md5 +++ b/inherit_graph_57.md5 @@ -1 +1 @@ -976beb672ee3bbb088260ad7319536ce \ No newline at end of file +ec85411eb90657e576fed10164fae81b \ No newline at end of file diff --git a/inherit_graph_57.png b/inherit_graph_57.png index e6a173a1..7eac79b7 100644 Binary files a/inherit_graph_57.png and b/inherit_graph_57.png differ diff --git a/inherit_graph_6.map b/inherit_graph_6.map index 0f67a081..4ca122d7 100644 --- a/inherit_graph_6.map +++ b/inherit_graph_6.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_6.md5 b/inherit_graph_6.md5 index 3ea3bcc6..437cc5a2 100644 --- a/inherit_graph_6.md5 +++ b/inherit_graph_6.md5 @@ -1 +1 @@ -ba911d369aaf00de4a84856161d75d22 \ No newline at end of file +2802458f6f6669f531dc7b22f8ef5bb9 \ No newline at end of file diff --git a/inherit_graph_6.png b/inherit_graph_6.png index 4b6786be..52500c9c 100644 Binary files a/inherit_graph_6.png and b/inherit_graph_6.png differ diff --git a/inherit_graph_7.map b/inherit_graph_7.map index cbaf2a1c..34e08024 100644 --- a/inherit_graph_7.map +++ b/inherit_graph_7.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_7.md5 b/inherit_graph_7.md5 index 00b8d445..91ade6ca 100644 --- a/inherit_graph_7.md5 +++ b/inherit_graph_7.md5 @@ -1 +1 @@ -403af80e2b8a98f436627a75fc38f463 \ No newline at end of file +b3c6fa457ed87fc226066b954d1c13e7 \ No newline at end of file diff --git a/inherit_graph_7.png b/inherit_graph_7.png index a20a1b10..bdb5cb5f 100644 Binary files a/inherit_graph_7.png and b/inherit_graph_7.png differ diff --git a/inherit_graph_8.md5 b/inherit_graph_8.md5 index 965aae12..0ce77b62 100644 --- a/inherit_graph_8.md5 +++ b/inherit_graph_8.md5 @@ -1 +1 @@ -0a701d048ad85913258c715a9e91f594 \ No newline at end of file +05a71bfa37068ca7f9596497dc318829 \ No newline at end of file diff --git a/inherit_graph_8.png b/inherit_graph_8.png index 952641ae..3bfc671f 100644 Binary files a/inherit_graph_8.png and b/inherit_graph_8.png differ diff --git a/inherit_graph_9.map b/inherit_graph_9.map index edf85980..79a0e76e 100644 --- a/inherit_graph_9.map +++ b/inherit_graph_9.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_9.md5 b/inherit_graph_9.md5 index 1f39f68d..77565876 100644 --- a/inherit_graph_9.md5 +++ b/inherit_graph_9.md5 @@ -1 +1 @@ -7bbb2b18ef2cde532600f302be39eef7 \ No newline at end of file +a26962d66b3be37750f536f7c8f15144 \ No newline at end of file diff --git a/inherit_graph_9.png b/inherit_graph_9.png index 266165e4..ad46dcc0 100644 Binary files a/inherit_graph_9.png and b/inherit_graph_9.png differ diff --git a/inherits.html b/inherits.html index 89fb8cf1..e7953380 100644 --- a/inherits.html +++ b/inherits.html @@ -3,7 +3,8 @@ - + + USB Host Shield 2.0: Class Hierarchy @@ -11,9 +12,6 @@ - @@ -32,42 +30,19 @@
  • - + - - + + + +
    - +
    - - - + + +
    - +
    - +
    - +
    - +
    - +
    - +
    @@ -140,158 +115,158 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    - +
    - +
    - +
    - +
    - - + +
    - +
    - +
    - +
    - - + +
    - +
    - +
    - - - - + + + +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - - + +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    @@ -301,126 +276,126 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - - - - - + + + + +
    - +
    - +
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    @@ -429,7 +404,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/jquery.js b/jquery.js index d52a1c77..f5343eda 100644 --- a/jquery.js +++ b/jquery.js @@ -1,4 +1,4 @@ -/* +/*! * jQuery JavaScript Library v1.7.1 * http://jquery.com/ * @@ -14,13 +14,13 @@ * Date: Mon Nov 21 21:11:03 2011 -0500 */ (function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); -/* +/*! * Sizzle CSS Selector Engine * Copyright 2011, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ -(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/* +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/
    ",""],legend:[1,"
    ","
    "],thead:[1,"
    ","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! * jQuery UI 1.8.18 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) @@ -29,7 +29,7 @@ * * http://docs.jquery.com/UI */ -(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/* +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! * jQuery UI Widget 1.8.18 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) @@ -38,7 +38,7 @@ * * http://docs.jquery.com/UI/Widget */ -(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/* +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! * jQuery UI Mouse 1.8.18 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) @@ -50,7 +50,7 @@ * Depends: * jquery.ui.widget.js */ -(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
    ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/* +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! * jQuery hashchange event - v1.3 - 7/21/2010 * http://benalman.com/projects/jquery-hashchange-plugin/ * @@ -58,11 +58,30 @@ * Dual licensed under the MIT and GPL licenses. * http://benalman.com/about/license/ */ -(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('