Mac OS 9
USB.h
Go to the documentation of this file.
1 
19 #ifndef __USB__
20 #define __USB__
21 
22 #ifndef __MACTYPES__
23 #include <MacTypes.h>
24 #endif
25 
26 #ifndef __NAMEREGISTRY__
27 #include <NameRegistry.h>
28 #endif
29 
30 #ifndef __CODEFRAGMENTS__
31 #include <CodeFragments.h>
32 #endif
33 
34 #ifndef __DEVICES__
35 #include <Devices.h>
36 #endif
37 
38 #ifndef __MACERRORS__
39 #include <MacErrors.h>
40 #endif
41 
42 #if PRAGMA_ONCE
43 #pragma once
44 #endif
45 
46 #ifdef __cplusplus
47 extern "C"
48 {
49 #endif
50 
51 #if PRAGMA_IMPORT
52 #pragma import on
53 #endif
54 
55 #if PRAGMA_STRUCT_ALIGN
56 #pragma options align = mac68k
57 #elif PRAGMA_STRUCT_PACKPUSH
58 #pragma pack(push, 2)
59 #elif PRAGMA_STRUCT_PACK
60 #pragma pack(2)
61 #endif
62 
63  /* ************* Constants ************* */
64 
65  enum
66  {
67  /* Flags */
68  kUSBTaskTimeFlag = 1,
69  kUSBHubPower = 2,
70  kUSBPowerReset = 4,
71  kUSBHubReaddress = 8,
72  kUSBAddressRequest = 16,
73  kUSBReturnOnException = 32,
74  kUSBNo5SecTimeout = 64,
75  kUSBTimeout = 128,
76  kUSBNoDataTimeout = 256,
77  kUSBDebugAwareFlag = 512,
78  kUSBResetDescriptorCache = 1024,
79  kUSBHighSpeedFlag = 2048,
80  kUSBDevZeroDetatch = 4096,
81  kUSBLowSpeedFlag = 8192,
82  kUSBTaskTimeSetAddressFlag = 16384
83  };
84 
85  enum
86  {
87  /* Hub messages */
88  kUSBHubPortResetRequest = 1,
89  kUSBHubPortSuspendRequest = 2,
90  kUSBHubPortStatusRequest = 3
91  };
92 
93  enum
94  {
95  kVendorID_AppleComputer = 0x05AC
96  };
97 
98  /* ************* types ************* */
99 
100  typedef SInt32 USBReference;
101  typedef USBReference USBDeviceRef;
102  typedef USBDeviceRef *USBDeviceRefPtr;
103  typedef USBReference USBInterfaceRef;
104  typedef USBReference USBPipeRef;
105  typedef USBReference USBBusRef;
106  typedef UInt32 USBPipeState;
107  typedef UInt32 USBCount;
108  typedef UInt32 USBFlags;
109  typedef UInt8 USBRequest;
110  typedef UInt8 USBDirection;
111  typedef UInt8 USBRqRecipient;
112  typedef UInt8 USBRqType;
113  typedef UInt16 USBRqIndex;
114  typedef UInt16 USBRqValue;
115 
117  {
118  UInt8 BMRequestType;
119  UInt8 BRequest;
120  USBRqValue WValue;
121  USBRqIndex WIndex;
122  UInt16 reserved4;
123  };
124  typedef struct usbControlBits usbControlBits;
126  {
127  OSStatus frStatus;
128  UInt16 frReqCount;
129  UInt16 frActCount;
130  };
131  typedef struct USBIsocFrame USBIsocFrame;
132  enum
133  {
134  kUSBMaxIsocFrameReqCount =
135  1023 /* maximum size (bytes) of any one Isoc frame*/
136  };
137 
138  struct usbIsocBits
139  {
140  USBIsocFrame *FrameList;
141  UInt32 NumFrames;
142  };
143  typedef struct usbIsocBits usbIsocBits;
144  struct usbHubBits
145  {
146  UInt32 Request;
147  UInt32 Spare;
148  };
149  typedef struct usbHubBits usbHubBits;
150  typedef struct USBPB USBPB;
151  typedef CALLBACK_API_C(void, USBCompletion)(USBPB *pb);
153  {
154  usbControlBits cntl;
155  usbIsocBits isoc;
156  usbHubBits hub;
157  };
158  typedef union USBVariantBits USBVariantBits;
159  struct USBPB
160  {
161 
162  void *qlink;
163  UInt16 qType;
164  UInt16 pbLength;
165  UInt16 pbVersion;
166  UInt16 reserved1;
167  UInt32 reserved2;
168 
169  OSStatus usbStatus;
170  USBCompletion usbCompletion;
171  UInt32 usbRefcon;
172 
173  USBReference usbReference;
174 
175  void *usbBuffer;
176  USBCount usbReqCount;
177  USBCount usbActCount;
178 
179  USBFlags usbFlags;
180 
181  USBVariantBits usb;
182 
183  UInt32 usbFrame;
184 
185  UInt8 usbClassType;
186  UInt8 usbSubclass;
187  UInt8 usbProtocol;
188  UInt8 usbOther;
189 
190  UInt32 reserved6;
191  UInt16 reserved7;
192  UInt16 reserved8;
193  };
194 
195  typedef USBPB *USBPBPtr;
196 #if !defined(OLDUSBNAMES)
197 #define OLDUSBNAMES 0
198 #endif
199 
200 #if OLDUSBNAMES
201 #define usbBMRequestType usb.cntl.BMRequestType
202 #define usbBRequest usb.cntl.BRequest
203 #define usbWValue usb.cntl.WValue
204 #define usbWIndex usb.cntl.WIndex
205 #endif
206  struct uslReq
207  {
208  USBDirection usbDirection;
209  USBRqType usbType;
210  USBRqRecipient usbRecipient;
211  USBRequest usbRequest;
212  };
213  typedef struct uslReq uslReq;
214 
215  enum
216  {
217  /* BT 19Aug98, bump up to v1.10 for Isoc*/
218  kUSBCurrentPBVersion = 0x0100, /* v1.00*/
219  kUSBIsocPBVersion = 0x0109, /* v1.10*/
220  kUSBCurrentHubPB = kUSBIsocPBVersion
221  };
222 
223 #define kUSBNoCallBack ((USBCompletion)-1L)
224 
225  typedef UInt8 bcdUSB;
226  enum
227  {
228  kUSBControl = 0,
229  kUSBIsoc = 1,
230  kUSBBulk = 2,
231  kUSBInterrupt = 3,
232  kUSBAnyType = 0xFF
233  };
234 
235  /* endpoint type */
236  enum
237  {
238  kUSBOut = 0,
239  kUSBIn = 1,
240  kUSBNone = 2,
241  kUSBAnyDirn = 3
242  };
243 
244  /*USBDirection*/
245  enum
246  {
247  kUSBStandard = 0,
248  kUSBClass = 1,
249  kUSBVendor = 2
250  };
251 
252  /*USBRqType*/
253  enum
254  {
255  kUSBDevice = 0,
256  kUSBInterface = 1,
257  kUSBEndpoint = 2,
258  kUSBOther = 3
259  };
260 
261  /*USBRqRecipient*/
262  enum
263  {
264  kUSBRqGetStatus = 0,
265  kUSBRqClearFeature = 1,
266  kUSBRqReserved1 = 2,
267  kUSBRqSetFeature = 3,
268  kUSBRqReserved2 = 4,
269  kUSBRqSetAddress = 5,
270  kUSBRqGetDescriptor = 6,
271  kUSBRqSetDescriptor = 7,
272  kUSBRqGetConfig = 8,
273  kUSBRqSetConfig = 9,
274  kUSBRqGetInterface = 10,
275  kUSBRqSetInterface = 11,
276  kUSBRqSyncFrame = 12
277  };
278 
279  /*USBRequest*/
280 
281  enum
282  {
283  kUSBDeviceDesc = 1,
284  kUSBConfDesc = 2,
285  kUSBStringDesc = 3,
286  kUSBInterfaceDesc = 4,
287  kUSBEndpointDesc = 5,
288  kUSBHIDDesc = 0x21,
289  kUSBReportDesc = 0x22,
290  kUSBPhysicalDesc = 0x23,
291  kUSBHUBDesc = 0x29
292  };
293 
294  /* descriptorType */
295 
296  enum
297  {
298  kUSBFeatureDeviceRemoteWakeup = 1,
299  kUSBFeatureEndpointStall = 0
300  };
301 
302  /* Feature selectors */
303  enum
304  {
305  kUSBActive = 0, /* Pipe can accept new transactions*/
306  kUSBIdle = 1, /* Pipe will not accept new transactions*/
307  kUSBStalled = 2, /* An error occured on the pipe*/
308  kUSBSuspended = 4, /* Device is suspended*/
309  kUSBNoBandwidth = 8 /* (Isoc or Int) Pipe could not be initialised due to
310  bandwidth constraint*/
311  };
312 
313  enum
314  {
315  kUSB100mAAvailable = 50,
316  kUSB500mAAvailable = 250,
317  kUSB100mA = 50,
318  kUSBAtrBusPowered = 0x80,
319  kUSBAtrSelfPowered = 0x40,
320  kUSBAtrRemoteWakeup = 0x20
321  };
322 
323  enum
324  {
325  kUSBRel10 = 0x0100,
326  kUSBRel11 = 0x0110,
327  kUSBRel20 = 0x0200
328  };
329 
330 #define USB_CONSTANT16(x) ((((x) >> 8) & 0x0ff) | ((x & 0xff) << 8))
331  enum
332  {
333  kUSBDeviceDescriptorLength = 0x12,
334  kUSBInterfaceDescriptorLength = 0x09,
335  kUSBConfigDescriptorLength = 0x09
336  };
337 
339  {
340  UInt8 length;
341  UInt8 descType;
342  UInt16 usbRel;
343  UInt8 deviceClass;
344  UInt8 deviceSubClass;
345  UInt8 protocol;
346  UInt8 maxPacketSize;
347  UInt16 vendor;
348  UInt16 product;
349  UInt16 devRel;
350  UInt8 manuIdx;
351  UInt8 prodIdx;
352  UInt8 serialIdx;
353  UInt8 numConf;
354  };
358  {
359  UInt8 length;
360  UInt8 descriptorType;
361  };
365  {
366  UInt8 length;
367  UInt8 descriptorType;
368  UInt16 totalLength;
369  UInt8 numInterfaces;
370  UInt8 configValue;
371  UInt8 configStrIndex;
372  UInt8 attributes;
373  UInt8 maxPower;
374  };
378  {
379  UInt8 length;
380  UInt8 descriptorType;
381  UInt8 interfaceNumber;
382  UInt8 alternateSetting;
383  UInt8 numEndpoints;
384  UInt8 interfaceClass;
385  UInt8 interfaceSubClass;
386  UInt8 interfaceProtocol;
387  UInt8 interfaceStrIndex;
388  };
392  {
393  UInt8 length;
394  UInt8 descriptorType;
395  UInt8 endpointAddress;
396  UInt8 attributes;
397  UInt16 maxPacketSize;
398  UInt8 interval;
399  };
403  {
404  UInt8 descLen;
405  UInt8 descType;
406  UInt16 descVersNum;
407  UInt8 hidCountryCode;
408  UInt8 hidNumDescriptors;
409  UInt8 hidDescriptorType;
410  UInt8 hidDescriptorLengthLo; /* can't make this a single 16bit value or the
411  compiler will add a filler byte*/
412  UInt8 hidDescriptorLengthHi;
413  };
414  typedef struct USBHIDDescriptor USBHIDDescriptor;
417  {
418  UInt8 hidDescriptorType;
419  UInt8 hidDescriptorLengthLo; /* can't make this a single 16bit value or the
420  compiler will add a filler byte*/
421  UInt8 hidDescriptorLengthHi;
422  };
423  typedef struct USBHIDReportDesc USBHIDReportDesc;
426  {
427  UInt16 portFlags; /* Port status flags */
428  UInt16 portChangeFlags; /* Port changed flags */
429  };
430  typedef struct USBHubPortStatus USBHubPortStatus;
432 /* ********* ProtoTypes *************** */
433 /* For dealing with endianisms */
434 #if CALL_NOT_IN_CARBON
443  UInt16
444  HostToUSBWord(UInt16 value);
445 
454  UInt16
455  USBToHostWord(UInt16 value);
456 
465  UInt32
466  HostToUSBLong(UInt32 value);
467 
476  UInt32
477  USBToHostLong(UInt32 value);
478 
479  /* Main prototypes */
480  /* Transfer commands */
489  OSStatus
491 
500  OSStatus
502 
511  OSStatus
513 
522  OSStatus
524 
533  OSStatus
535 
544  OSStatus
546 
555  OSStatus
557 
558  /* Pipe state control */
567  OSStatus
569 
578  OSStatus
579  USBAbortPipeByReference(USBReference ref);
580 
589  OSStatus
590  USBResetPipeByReference(USBReference ref);
591 
600  OSStatus
601  USBSetPipeIdleByReference(USBPipeRef ref);
602 
611  OSStatus
613 
622  OSStatus
623  USBClosePipeByReference(USBPipeRef ref);
624 
633  OSStatus
634  USBGetPipeStatusByReference(USBReference ref, USBPipeState *state);
635 
636  /* Configuration services */
645  OSStatus
647 
656  OSStatus
658 
667  OSStatus
669 
678  OSStatus
680 
689  OSStatus
691 
700  OSStatus
702 
711  OSStatus
713 
722  OSStatus
724 
725  /* Dealing with descriptors. */
726  /* Note most of this is temprorary */
735  OSStatus
737 
746  OSStatus
748 
757  OSStatus
759 
768  OSStatus
770 
779  OSStatus
781 
790  OSStatus
792 
793  /* Utility functions */
802  OSStatus
804 
813  OSStatus
815 
824  OSStatus
826 
835  OSStatus
836  USBResumeDeviceByReference(USBReference refIn);
837 
846  OSStatus
847  USBGetBandwidthAvailableByReference(USBReference ref, UInt32 *avail);
848 
857  OSStatus
859 
868  OSStatus
870 
879  OSStatus
880  USBSAbortQueuesByReference(USBReference ref);
881 
890  OSStatus
892 
901  OSStatus
903 
904  /* Expert interface functions */
913  OSStatus
915  USBInterfaceDescriptorPtr interfacePtr,
916  USBReference hubRef, UInt32 busPowerAvailable);
917 
926  OSStatus
928 
937  OSStatus
939  USBReference hubRef, UInt32 port,
940  UInt32 busPowerAvailable);
941 
950  OSStatus
951  USBExpertRemoveDeviceDriver(USBDeviceRef ref);
952 
961  OSStatus
962  USBExpertStatus(USBDeviceRef ref, void *pointer, UInt32 value);
963 
972  OSStatus
973  USBExpertFatalError(USBDeviceRef ref, OSStatus status, void *pointer,
974  UInt32 value);
975 
984  OSStatus
985  USBExpertNotify(void *note);
986 
995  OSStatus
996  USBExpertStatusLevel(UInt32 level, USBDeviceRef ref, StringPtr status,
997  UInt32 value);
998 
1007  UInt32
1009 
1018  void
1020 
1029  OSStatus
1030  USBExpertSetDevicePowerStatus(USBDeviceRef ref, UInt32 reserved1,
1031  UInt32 reserved2, UInt32 powerStatus,
1032  UInt32 busPowerAvailable, UInt32 busPowerNeeded);
1033 
1034 #endif /* CALL_NOT_IN_CARBON */
1035 
1036  enum
1037  {
1038  kUSBDevicePower_PowerOK = 0,
1039  kUSBDevicePower_BusPowerInsufficient = 1,
1040  kUSBDevicePower_BusPowerNotAllFeatures = 2,
1041  kUSBDevicePower_SelfPowerInsufficient = 3,
1042  kUSBDevicePower_SelfPowerNotAllFeatures = 4,
1043  kUSBDevicePower_HubPortOk = 5,
1044  kUSBDevicePower_HubPortOverCurrent = 6,
1045  kUSBDevicePower_BusPoweredHubOnLowPowerPort = 7,
1046  kUSBDevicePower_BusPoweredHubToBusPoweredHub = 8,
1047  kUSBDevicePower_Reserved3 = 9,
1048  kUSBDevicePower_Reserved4 = 10
1049  };
1050 
1051 /* For hubs only */
1052 #if CALL_NOT_IN_CARBON
1061  OSStatus
1063 
1072  OSStatus
1074 
1083  OSStatus
1085 
1094  OSStatus
1096 
1105  UInt8
1106  USBMakeBMRequestType(UInt8 direction, UInt8 reqtype, UInt8 recipient);
1107 
1116  OSStatus
1118 
1119 #endif /* CALL_NOT_IN_CARBON */
1120 
1121  typedef UInt32 USBLocationID;
1122  enum
1123  {
1124  kUSBLocationNibbleFormat =
1125  0 /* Other values are reserved for future types (like when we have more
1126  than 16 ports per hub)*/
1127  };
1128 
1129  enum
1130  {
1131  kNoDeviceRef = -1
1132  };
1133 
1134  /* Status Level constants*/
1143  enum
1144  {
1145  kUSBStatusLevelFatal = 1,
1146  kUSBStatusLevelError = 2,
1147  kUSBStatusLevelClient = 3,
1148  kUSBStatusLevelGeneral = 4,
1149  kUSBStatusLevelVerbose = 5
1150  };
1151 
1152  /* Expert Notification Types*/
1153  typedef UInt8 USBNotificationType;
1154  enum
1155  {
1156  kNotifyAddDevice = 0x00,
1157  kNotifyRemoveDevice = 0x01,
1158  kNotifyAddInterface = 0x02,
1159  kNotifyRemoveInterface = 0x03,
1160  kNotifyGetDeviceDescriptor = 0x04,
1161  kNotifyGetInterfaceDescriptor = 0x05,
1162  kNotifyGetNextDeviceByClass = 0x06,
1163  kNotifyGetDriverConnectionID = 0x07,
1164  kNotifyInstallDeviceNotification = 0x08,
1165  kNotifyRemoveDeviceNotification = 0x09,
1166  kNotifyDeviceRefToBusRef = 0x0A,
1167  kNotifyDriverNotify = 0x0C,
1168  kNotifyParentNotify = 0x0D,
1169  kNotifyAnyEvent = 0xFF,
1170  kNotifyPowerState = 0x17,
1171  kNotifyStatus = 0x18,
1172  kNotifyFatalError = 0x19,
1173  kNotifyStatusLevel = 0x20
1174  };
1175 
1176  typedef USBNotificationType USBDriverMessage;
1181  typedef UInt16 USBManagerWildcard;
1182  enum
1183  {
1184  kUSBAnyClass = 0xFFFF,
1185  kUSBAnySubClass = 0xFFFF,
1186  kUSBAnyProtocol = 0xFFFF,
1187  kUSBAnyVendor = 0xFFFF,
1188  kUSBAnyProduct = 0xFFFF
1189  };
1190 
1192  {
1193  USBNotificationType notification;
1194  UInt8 filler[1]; /* unused due to 2-byte 68k alignment*/
1195  USBDeviceRef *deviceRef;
1196  UInt32 busPowerAvailable;
1197  void *data;
1198  UInt32 info1;
1199  UInt32 info2;
1200  };
1203  /* Definition of function pointer passed in ExpertEntryProc*/
1204  typedef CALLBACK_API_C(OSStatus, ExpertNotificationProcPtr)(
1205  ExpertNotificationDataPtr pNotificationData);
1206  /* Definition of expert's callback installation function*/
1207  typedef CALLBACK_API_C(OSStatus, ExpertEntryProcPtr)(
1208  ExpertNotificationProcPtr pExpertNotify);
1209  /* Device Notification Callback Routine*/
1210  typedef CALLBACK_API_C(void, USBDeviceNotificationCallbackProcPtr)(void *pb);
1211  /* Device Notification Parameter Block*/
1213  {
1214  UInt16 pbLength;
1215  UInt16 pbVersion;
1216  USBNotificationType usbDeviceNotification;
1217  UInt8 reserved1[1]; /* needed because of 2-byte 68k alignment*/
1218  USBDeviceRef usbDeviceRef;
1219  UInt16 usbClass;
1220  UInt16 usbSubClass;
1221  UInt16 usbProtocol;
1222  UInt16 usbVendor;
1223  UInt16 usbProduct;
1224  OSStatus result;
1225  UInt32 token;
1226  USBDeviceNotificationCallbackProcPtr callback;
1227  UInt32 refcon;
1228  };
1233  /* Definition of USBDriverNotificationCallback Routine*/
1234  typedef CALLBACK_API_C(void, USBDriverNotificationCallbackPtr)(OSStatus status,
1235  UInt32 refcon);
1236 /* Public Functions*/
1237 #if CALL_NOT_IN_CARBON
1246  UInt32
1248 
1257  OSStatus
1258  USBGetNextDeviceByClass(USBDeviceRef *deviceRef, CFragConnectionID *connID,
1259  UInt16 theClass, UInt16 theSubClass,
1260  UInt16 theProtocol);
1261 
1270  OSStatus
1271  USBGetDeviceDescriptor(USBDeviceRef *deviceRef,
1272  USBDeviceDescriptor *deviceDescriptor, UInt32 size);
1273 
1282  OSStatus
1283  USBGetInterfaceDescriptor(USBInterfaceRef *interfaceRef,
1284  USBInterfaceDescriptor *interfaceDescriptor,
1285  UInt32 size);
1286 
1295  OSStatus
1296  USBGetDriverConnectionID(USBDeviceRef *deviceRef, CFragConnectionID *connID);
1297 
1306  void
1308 
1317  OSStatus
1319 
1328  OSStatus
1329  USBDeviceRefToBusRef(USBDeviceRef *deviceRef, USBBusRef *busRef);
1330 
1339  OSStatus
1340  USBDriverNotify(USBReference reference, USBDriverMessage mesg, UInt32 refcon,
1341  USBDriverNotificationCallbackPtr callback);
1342 
1351  OSStatus
1352  USBExpertNotifyParent(USBReference reference, void *pointer);
1353 
1362  OSStatus
1363  USBAddDriverForFSSpec(USBReference reference, FSSpec *fileSpec);
1364 
1373  OSStatus
1374  USBAddShimFromDisk(FSSpec *shimFilePtr);
1375 
1384  OSStatus
1385  USBReferenceToRegEntry(RegEntryID *parentEntry, USBDeviceRef parentDeviceRef);
1386 
1395  OSStatus
1396  USBConfigureADBShim(UInt32 inCommandID, void *arg1, void *arg2);
1397 
1398 #endif /* CALL_NOT_IN_CARBON */
1399 
1400  typedef CALLBACK_API_C(void, HIDInterruptProcPtr)(UInt32 refcon, void *theData);
1401  typedef CALLBACK_API_C(void,
1402  HIDNotificationProcPtr)(UInt32 refcon, UInt32 reportSize,
1403  void *theReport,
1404  USBReference theInterfaceRef);
1405  /* HID Install Interrupt prototype*/
1406  typedef CALLBACK_API_C(OSStatus, USBHIDInstallInterruptProcPtr)(
1407  HIDInterruptProcPtr pInterruptProc, UInt32 refcon);
1408  /* HID Poll Device prototype*/
1409  typedef CALLBACK_API_C(OSStatus, USBHIDPollDeviceProcPtr)(void);
1410  /* HID Control Device prototype*/
1411  typedef CALLBACK_API_C(OSStatus,
1412  USBHIDControlDeviceProcPtr)(UInt32 theControlSelector,
1413  void *theControlData);
1414  /* HID Get Device Info prototype*/
1415  typedef CALLBACK_API_C(OSStatus,
1416  USBHIDGetDeviceInfoProcPtr)(UInt32 theInfoSelector,
1417  void *theInfo);
1418  /* HID Enter Polled Mode prototype*/
1419  typedef CALLBACK_API_C(OSStatus, USBHIDEnterPolledModeProcPtr)(void);
1420  /* HID Exit Polled Mode prototype*/
1421  typedef CALLBACK_API_C(OSStatus, USBHIDExitPolledModeProcPtr)(void);
1422  /* HID Install Notification prototype*/
1423  typedef CALLBACK_API_C(OSStatus, USBHIDInstallNotificationProcPtr)(
1424  HIDNotificationProcPtr pNotificationProc, UInt32 refcon);
1425  enum
1426  {
1427  kHIDStandardDispatchVersion = 0,
1428  kHIDReservedDispatchVersion = 1,
1429  kHIDNotificationDispatchVersion = 2,
1430  kHIDCurrentDispatchVersion = 2
1431  };
1432 
1434  {
1435  UInt32 hidDispatchVersion;
1436  USBHIDInstallInterruptProcPtr pUSBHIDInstallInterrupt;
1437  USBHIDPollDeviceProcPtr pUSBHIDPollDevice;
1438  USBHIDControlDeviceProcPtr pUSBHIDControlDevice;
1439  USBHIDGetDeviceInfoProcPtr pUSBHIDGetDeviceInfo;
1440  USBHIDEnterPolledModeProcPtr pUSBHIDEnterPolledMode;
1441  USBHIDExitPolledModeProcPtr pUSBHIDExitPolledMode;
1442  USBHIDInstallNotificationProcPtr pUSBHIDInstallNotification;
1443  };
1447  {
1448  UInt32 hidDispatchVersion;
1449  USBHIDInstallInterruptProcPtr pUSBHIDInstallInterrupt;
1450  USBHIDPollDeviceProcPtr pUSBHIDPollDevice;
1451  USBHIDControlDeviceProcPtr pUSBHIDControlDevice;
1452  USBHIDGetDeviceInfoProcPtr pUSBHIDGetDeviceInfo;
1453  USBHIDEnterPolledModeProcPtr pUSBHIDEnterPolledMode;
1454  USBHIDExitPolledModeProcPtr pUSBHIDExitPolledMode;
1455  };
1458 /* Prototypes Tue, Mar 17, 1998 4:54:30 PM */
1459 #if CALL_NOT_IN_CARBON
1468  OSStatus
1469  USBHIDInstallInterrupt(HIDInterruptProcPtr HIDInterruptFunction, UInt32 refcon);
1470 
1479  OSStatus
1481 
1490  OSStatus
1491  USBHIDControlDevice(UInt32 theControlSelector, void *theControlData);
1492 
1501  OSStatus
1502  USBHIDGetDeviceInfo(UInt32 theInfoSelector, void *theInfo);
1503 
1512  OSStatus
1514 
1523  OSStatus
1525 
1534  OSStatus
1535  USBHIDInstallNotification(HIDNotificationProcPtr HIDNotificationFunction,
1536  UInt32 refcon);
1537 
1546  void
1547  HIDNotification(UInt32 devicetype, UInt8 NewHIDData[], UInt8 OldHIDData[]);
1548 
1549 #endif /* CALL_NOT_IN_CARBON */
1550 
1551  enum
1552  {
1553  kHIDRqGetReport = 1,
1554  kHIDRqGetIdle = 2,
1555  kHIDRqGetProtocol = 3,
1556  kHIDRqSetReport = 9,
1557  kHIDRqSetIdle = 10,
1558  kHIDRqSetProtocol = 11
1559  };
1560 
1561  enum
1562  {
1563  kHIDRtInputReport = 1,
1564  kHIDRtOutputReport = 2,
1565  kHIDRtFeatureReport = 3
1566  };
1567 
1568  enum
1569  {
1570  kHIDBootProtocolValue = 0,
1571  kHIDReportProtocolValue = 1
1572  };
1573 
1574  enum
1575  {
1576  kHIDKeyboardInterfaceProtocol = 1,
1577  kHIDMouseInterfaceProtocol = 2
1578  };
1579 
1580  enum
1581  {
1582  kHIDSetLEDStateByBits = 1,
1583  kHIDSetLEDStateByBitMask = 1,
1584  kHIDSetLEDStateByIDNumber = 2,
1585  kHIDRemoveInterruptHandler = 3,
1586  kHIDEnableDemoMode = 4,
1587  kHIDDisableDemoMode = 5,
1588  kHIDRemoveNotification = 0x1000
1589  };
1590 
1591  enum
1592  {
1593  kHIDGetLEDStateByBits = 1, /* not supported in 1.0 of keyboard module*/
1594  kHIDGetLEDStateByBitMask = 1, /* not supported in 1.0 of keyboard module*/
1595  kHIDGetLEDStateByIDNumber = 2,
1596  kHIDGetDeviceCountryCode = 3, /* not supported in 1.0 HID modules*/
1597  kHIDGetDeviceUnitsPerInch = 4, /* only supported in mouse HID module*/
1598  kHIDGetInterruptHandler = 5,
1599  kHIDGetCurrentKeys = 6, /* only supported in keyboard HID module*/
1600  kHIDGetInterruptRefcon = 7,
1601  kHIDGetVendorID = 8,
1602  kHIDGetProductID = 9
1603  };
1604 
1605  enum
1606  {
1607  kNumLockLED = 0,
1608  kCapsLockLED = 1,
1609  kScrollLockLED = 2,
1610  kComposeLED = 3,
1611  kKanaLED = 4
1612  };
1613 
1614  enum
1615  {
1616  kNumLockLEDMask = 1 << kNumLockLED,
1617  kCapsLockLEDMask = 1 << kCapsLockLED,
1618  kScrollLockLEDMask = 1 << kScrollLockLED,
1619  kComposeLEDMask = 1 << kComposeLED,
1620  kKanaLEDMask = 1 << kKanaLED
1621  };
1622 
1623  enum
1624  {
1625  kUSBCapsLockKey = 0x39,
1626  kUSBNumLockKey = 0x53,
1627  kUSBScrollLockKey = 0x47
1628  };
1629 
1631  {
1632  UInt16 buttons;
1633  SInt16 XDelta;
1634  SInt16 YDelta;
1635  };
1636  typedef struct USBMouseData USBMouseData;
1637  typedef USBMouseData *USBMouseDataPtr;
1639  {
1640  UInt16 keycount;
1641  UInt16 usbkeycode[32];
1642  };
1643  typedef struct USBKeyboardData USBKeyboardData;
1646  {
1647  USBKeyboardData kbd;
1648  USBMouseData mouse;
1649  };
1650  typedef union USBHIDData USBHIDData;
1651  typedef USBHIDData *USBHIDDataPtr;
1652 #if CALL_NOT_IN_CARBON
1661  void
1662  StartCompoundClassDriver(USBDeviceRef device, UInt16 classID, UInt16 subClass);
1663 
1664 #endif /* CALL_NOT_IN_CARBON */
1665 
1666  enum
1667  {
1668  kUSBCompositeClass = 0,
1669  kUSBAudioClass = 1,
1670  kUSBCommClass = 2,
1671  kUSBHIDClass = 3,
1672  kUSBDisplayClass = 4,
1673  kUSBPrintingClass = 7,
1674  kUSBMassStorageClass = 8,
1675  kUSBHubClass = 9,
1676  kUSBDataClass = 10,
1677  kUSBVendorSpecificClass = 0xFF
1678  };
1679 
1680  enum
1681  {
1682  kUSBCompositeSubClass = 0,
1683  kUSBHubSubClass = 1,
1684  kUSBPrinterSubclass = 1,
1685  kUSBVendorSpecificSubClass = 0xFF
1686  };
1687 
1688  enum
1689  {
1690  kUSBHIDInterfaceClass = 0x03
1691  };
1692 
1693  enum
1694  {
1695  kUSBNoInterfaceSubClass = 0x00,
1696  kUSBBootInterfaceSubClass = 0x01
1697  };
1698 
1699  enum
1700  {
1701  kUSBNoInterfaceProtocol = 0x00,
1702  kUSBKeyboardInterfaceProtocol = 0x01,
1703  kUSBMouseInterfaceProtocol = 0x02,
1704  kUSBVendorSpecificProtocol = 0xFF
1705  };
1706 
1707  enum
1708  {
1709  kUSBPrinterUnidirectionalProtocol = 0x01,
1710  kUSBPrinterBidirectionalProtocol = 0x02
1711  };
1712 
1713  enum
1714  {
1715  kServiceCategoryUSB = FOUR_CHAR_CODE('usb ') /* USB*/
1716  };
1717 
1718  enum
1719  {
1720  kUSBDriverFileType = FOUR_CHAR_CODE('ndrv'),
1721  kUSBDriverRsrcType = FOUR_CHAR_CODE('usbd'),
1722  kUSBShimRsrcType = FOUR_CHAR_CODE('usbs')
1723  };
1724 
1725  enum
1726  {
1727  kTheUSBDriverDescriptionSignature = FOUR_CHAR_CODE('usbd')
1728  };
1729 
1730  enum
1731  {
1732  kInitialUSBDriverDescriptor = 0
1733  };
1734 
1735  typedef UInt32 USBDriverDescVersion;
1736  /* Driver Loading Options*/
1737  typedef UInt32 USBDriverLoadingOptions;
1738  enum
1739  {
1740  kUSBDoNotMatchGenericDevice =
1741  0x00000001, /* Driver's VendorID must match Device's VendorID*/
1742  kUSBDoNotMatchInterface =
1743  0x00000002, /* Do not load this driver as an interface driver.*/
1744  kUSBProtocolMustMatch =
1745  0x00000004, /* Do not load this driver if protocol field doesn't match.*/
1746  kUSBInterfaceMatchOnly =
1747  0x00000008 /* Only load this driver as an interface driver.*/
1748  };
1749 
1750  enum
1751  {
1752  kClassDriverPluginVersion = 0x00001100
1753  };
1754 
1756  {
1757  UInt16 usbVendorID; /* USB Vendor ID*/
1758  UInt16 usbProductID; /* USB Product ID.*/
1759  UInt16 usbDeviceReleaseNumber; /* Release Number of Device*/
1760  UInt16 usbDeviceProtocol; /* Protocol Info.*/
1761  };
1762  typedef struct USBDeviceInfo USBDeviceInfo;
1765  {
1766  UInt8 usbConfigValue; /* Configuration Value*/
1767  UInt8 usbInterfaceNum; /* Interface Number*/
1768  UInt8 usbInterfaceClass; /* Interface Class*/
1769  UInt8 usbInterfaceSubClass; /* Interface SubClass*/
1770  UInt8 usbInterfaceProtocol; /* Interface Protocol*/
1771  };
1772  typedef struct USBInterfaceInfo USBInterfaceInfo;
1775  {
1776  Str31 nameInfoStr; /* Driver's name when loading into the Name Registry.*/
1777  UInt8 usbDriverClass; /* USB Class this driver belongs to.*/
1778  UInt8 usbDriverSubClass; /* Module type*/
1779  NumVersion usbDriverVersion; /* Class driver version number.*/
1780  };
1781  typedef struct USBDriverType USBDriverType;
1784  {
1785  OSType usbDriverDescSignature; /* Signature field of this structure.*/
1786  USBDriverDescVersion
1787  usbDriverDescVersion; /* Version of this data structure.*/
1788  USBDeviceInfo usbDeviceInfo; /* Product & Vendor Info*/
1789  USBInterfaceInfo usbInterfaceInfo; /* Interface info*/
1790  USBDriverType usbDriverType; /* Driver Info.*/
1791  USBDriverLoadingOptions
1792  usbDriverLoadingOptions; /* Options for class driver loading.*/
1793  };
1800  typedef CALLBACK_API_C(OSStatus,
1801  USBDValidateHWProcPtr)(USBDeviceRef device,
1807  typedef CALLBACK_API_C(OSStatus, USBDInitializeDeviceProcPtr)(
1808  USBDeviceRef device, USBDeviceDescriptorPtr pDesc,
1809  UInt32 busPowerAvailable);
1810  /* Definition of class driver's interface initialization proc.*/
1811  typedef CALLBACK_API_C(OSStatus, USBDInitializeInterfaceProcPtr)(
1812  UInt32 interfaceNum, USBInterfaceDescriptorPtr pInterface,
1813  USBDeviceDescriptorPtr pDevice, USBInterfaceRef interfaceRef);
1814  /* Definition of class driver's finalization proc.*/
1815  typedef CALLBACK_API_C(OSStatus,
1816  USBDFinalizeProcPtr)(USBDeviceRef device,
1818  typedef UInt32 USBDriverNotification;
1819  enum
1820  {
1821  kNotifySystemSleepRequest = 0x00000001,
1822  kNotifySystemSleepDemand = 0x00000002,
1823  kNotifySystemSleepWakeUp = 0x00000003,
1824  kNotifySystemSleepRevoke = 0x00000004,
1825  kNotifyHubEnumQuery = 0x00000006,
1826  kNotifyChildMessage = 0x00000007,
1827  kNotifyExpertTerminating = 0x00000008,
1828  kNotifyDriverBeingRemoved = 0x0000000B,
1829  kNotifyAllowROMDriverRemoval = 0x0000000E
1830  };
1831 
1836  typedef CALLBACK_API_C(OSStatus, USBDDriverNotifyProcPtr)(
1837  USBDriverNotification notification, void *pointer, UInt32 refcon);
1839  {
1840  UInt32 pluginVersion;
1841  USBDValidateHWProcPtr validateHWProc; /* Proc for driver to verify proper HW*/
1842  USBDInitializeDeviceProcPtr
1843  initializeDeviceProc; /* Proc that initializes the class driver.*/
1844  USBDInitializeInterfaceProcPtr
1845  initializeInterfaceProc; /* Proc that initializes a particular interface
1846  in the class driver.*/
1847  USBDFinalizeProcPtr finalizeProc; /* Proc that finalizes the class driver.*/
1848  USBDDriverNotifyProcPtr
1849  notificationProc; /* Proc to pass notifications to the driver.*/
1850  };
1851  typedef struct USBClassDriverPluginDispatchTable
1854  /* Shim Defines*/
1855  enum
1856  {
1857  kTheUSBShimDescriptionSignature = FOUR_CHAR_CODE('usbs')
1858  };
1859 
1860  typedef UInt32 USBShimDescVersion;
1861  enum
1862  {
1863  kCurrentUSBShimDescVers = 0x0100
1864  };
1865 
1866  /* Shim Loading Options*/
1867  typedef UInt32 USBShimLoadingOptions;
1868  enum
1869  {
1870  kUSBRegisterShimAsSharedLibrary =
1871  0x00000001 /* Driver's VendorID must match Device's VendorID*/
1872  };
1873 
1875  {
1876  OSType usbShimDescSignature; /* Signature field of this structure.*/
1877  USBShimDescVersion usbShimDescVersion; /* Version of this data structure.*/
1878  USBShimLoadingOptions usbDriverLoadingOptions; /* Options for shim loading.*/
1879  Str63 libraryName; /* For optional shared library registration*/
1880  };
1881  typedef struct USBShimDescription USBShimDescription;
1883  /* Hub defines*/
1884 
1885  enum
1886  {
1887  kUSBHubDescriptorType = 0x29
1888  };
1889 
1890  enum
1891  {
1892  /* Hub features */
1893  kUSBHubLocalPowerChangeFeature = 0,
1894  kUSBHubOverCurrentChangeFeature = 1, /* port features */
1895  kUSBHubPortConnectionFeature = 0,
1896  kUSBHubPortEnableFeature = 1,
1897  kUSBHubPortSuspendFeature = 2,
1898  kUSBHubPortOverCurrentFeature = 3,
1899  kUSBHubPortResetFeature = 4,
1900  kUSBHubPortPowerFeature = 8,
1901  kUSBHubPortLowSpeedFeature = 9,
1902  kUSBHubPortConnectionChangeFeature = 16,
1903  kUSBHubPortEnableChangeFeature = 17,
1904  kUSBHubPortSuspendChangeFeature = 18,
1905  kUSBHubPortOverCurrentChangeFeature = 19,
1906  kUSBHubPortResetChangeFeature = 20
1907  };
1908 
1909  enum
1910  {
1911  kHubPortConnection = 1,
1912  kHubPortEnabled = 2,
1913  kHubPortSuspend = 4,
1914  kHubPortOverCurrent = 8,
1915  kHubPortBeingReset = 16,
1916  kHubPortPower = 0x0100,
1917  kHubPortLowSpeed = 0x0200,
1918  kHubPortHighSpeed = 0x0400,
1919  kHubPortTestMode = 0x0800,
1920  kHubPortPortIndicator = 0x1000
1921  };
1922 
1923  enum
1924  {
1925  /* Originally this was a Boolean, (low speed)?*/
1926  kUSBFullSpeed = 0,
1927  kUSBLowSpeed = 1,
1928  kUSBHighSpeed = 2
1929  };
1930 
1931  enum
1932  {
1933  kHubLocalPowerStatus = 1,
1934  kHubOverCurrentIndicator = 2,
1935  kHubLocalPowerStatusChange = 1,
1936  kHubOverCurrentIndicatorChange = 2
1937  };
1938 
1939  enum
1940  {
1941  off = false,
1942  on = true
1943  };
1944 
1946  {
1947  /* See usbDoc pg 250?? */
1948  UInt8 dummy; /* to align charcteristics */
1949 
1950  UInt8 length;
1951  UInt8 hubType;
1952  UInt8 numPorts;
1953 
1954  UInt16 characteristics;
1955  UInt8 powerOnToGood; /* Port settling time, in 2ms */
1956  UInt8 hubCurrent;
1957 
1958  /* These are received packed, will have to be unpacked */
1959  UInt8 removablePortFlags[8];
1960  UInt8 pwrCtlPortFlags[8];
1961  };
1962  typedef struct hubDescriptor hubDescriptor;
1963 
1964 #if PRAGMA_STRUCT_ALIGN
1965 #pragma options align = reset
1966 #elif PRAGMA_STRUCT_PACKPUSH
1967 #pragma pack(pop)
1968 #elif PRAGMA_STRUCT_PACK
1969 #pragma pack()
1970 #endif
1971 
1972 #ifdef PRAGMA_IMPORT_OFF
1973 #pragma import off
1974 #elif PRAGMA_IMPORT
1975 #pragma import reset
1976 #endif
1977 
1978 #ifdef __cplusplus
1979 }
1980 #endif
1981 
1982 #endif /* __USB__ */
Public Code Fragment Manager Interfaces.
Device Manager Interfaces.
OSErr codes.
Basic Macintosh data types.
unsigned char * StringPtr
Definition: MacTypes.h:477
NameRegistry Interfaces.
UInt32 USBToHostLong(UInt32 value)
OSStatus USBControlRequest(USBPB *pb)
OSStatus USBDelay(USBPB *pb)
OSStatus USBHIDInstallInterrupt(HIDInterruptProcPtr HIDInterruptFunction, UInt32 refcon)
OSStatus USBGetFrameNumberImmediate(USBPB *pb)
OSStatus USBExpertStatus(USBDeviceRef ref, void *pointer, UInt32 value)
OSStatus USBIsocWrite(USBPB *pb)
UInt32 HostToUSBLong(UInt32 value)
OSStatus USBHubAddDevice(USBPB *pb)
OSStatus USBHIDInstallNotification(HIDNotificationProcPtr HIDNotificationFunction, UInt32 refcon)
OSStatus USBResumeDeviceByReference(USBReference refIn)
OSStatus USBExpertStatusLevel(UInt32 level, USBDeviceRef ref, StringPtr status, UInt32 value)
OSStatus USBHIDExitPolledMode(void)
UInt32 USBGetVersion(void)
OSStatus USBDeviceRequest(USBPB *pb)
void USBInstallDeviceNotification(USBDeviceNotificationParameterBlock *pb)
OSStatus USBHubDeviceRemoved(USBPB *pb)
OSStatus USBResetDevice(USBPB *pb)
OSStatus USBSAbortQueuesByReference(USBReference ref)
OSStatus USBIntWrite(USBPB *pb)
OSStatus USBHIDGetDeviceInfo(UInt32 theInfoSelector, void *theInfo)
void USBExpertSetStatusLevel(UInt32 level)
OSStatus USBExpertNotifyParent(USBReference reference, void *pointer)
OSStatus USBSetPipeIdleByReference(USBPipeRef ref)
OSStatus USBExpertSetDevicePowerStatus(USBDeviceRef ref, UInt32 reserved1, UInt32 reserved2, UInt32 powerStatus, UInt32 busPowerAvailable, UInt32 busPowerNeeded)
OSStatus USBHubSetAddress(USBPB *pb)
OSStatus USBExpertNotify(void *note)
OSStatus USBIsocRead(USBPB *pb)
OSStatus USBGetFullConfigurationDescriptor(USBPB *pb)
OSStatus USBHIDControlDevice(UInt32 theControlSelector, void *theControlData)
OSStatus USBPortStatus(USBPB *pb)
OSStatus USBFindNextPipe(USBPB *pb)
UInt16 USBManagerWildcard
Definition: USB.h:1181
OSStatus USBAllocMem(USBPB *pb)
UInt16 USBToHostWord(UInt16 value)
UInt8 USBMakeBMRequestType(UInt8 direction, UInt8 reqtype, UInt8 recipient)
OSStatus USBSetPipeActiveByReference(USBPipeRef ref)
OSStatus USBGetDriverConnectionID(USBDeviceRef *deviceRef, CFragConnectionID *connID)
OSStatus USBExpertInstallInterfaceDriver(USBDeviceRef ref, USBDeviceDescriptorPtr desc, USBInterfaceDescriptorPtr interfacePtr, USBReference hubRef, UInt32 busPowerAvailable)
UInt32 USBExpertGetStatusLevel(void)
OSStatus USBGetPipeStatusByReference(USBReference ref, USBPipeState *state)
OSStatus USBConfigureInterface(USBPB *pb)
OSStatus USBGetDeviceDescriptor(USBDeviceRef *deviceRef, USBDeviceDescriptor *deviceDescriptor, UInt32 size)
OSStatus USBReferenceToRegEntry(RegEntryID *parentEntry, USBDeviceRef parentDeviceRef)
OSStatus USBResetPipeByReference(USBReference ref)
OSStatus USBExpertRemoveDeviceDriver(USBDeviceRef ref)
OSStatus USBHIDEnterPolledMode(void)
OSStatus USBFindNextEndpointDescriptorImmediate(USBPB *pb)
OSStatus USBSetPipePolicy(USBPB *pb)
OSStatus USBHubConfigurePipeZero(USBPB *pb)
OSStatus USBGetStringDescriptor(USBPB *pb)
OSStatus USBSetConfiguration(USBPB *pb)
OSStatus USBDisposeInterfaceRef(USBPB *pb)
OSStatus USBAddDriverForFSSpec(USBReference reference, FSSpec *fileSpec)
OSStatus USBDriverNotify(USBReference reference, USBDriverMessage mesg, UInt32 refcon, USBDriverNotificationCallbackPtr callback)
typedef CALLBACK_API_C(OSStatus, USBDValidateHWProcPtr)(USBDeviceRef device
OSStatus USBAbortPipeByReference(USBReference ref)
OSStatus USBGetConfigurationDescriptor(USBPB *pb)
OSStatus USBBulkRead(USBPB *pb)
OSStatus USBRemoveDeviceNotification(UInt32 token)
OSStatus USBExpertRemoveInterfaceDriver(USBDeviceRef ref)
OSStatus USBFindNextAssociatedDescriptor(USBPB *pb)
OSStatus USBGetInterfaceDescriptor(USBInterfaceRef *interfaceRef, USBInterfaceDescriptor *interfaceDescriptor, UInt32 size)
OSStatus USBExpertFatalError(USBDeviceRef ref, OSStatus status, void *pointer, UInt32 value)
OSStatus USBIntRead(USBPB *pb)
OSStatus USBFindNextInterfaceDescriptorImmediate(USBPB *pb)
OSStatus USBFindNextInterface(USBPB *pb)
OSStatus USBSuspendDevice(USBPB *pb)
void HIDNotification(UInt32 devicetype, UInt8 NewHIDData[], UInt8 OldHIDData[])
OSStatus USBClearPipeStallByReference(USBPipeRef ref)
UInt16 HostToUSBWord(UInt16 value)
OSStatus USBConfigureADBShim(UInt32 inCommandID, void *arg1, void *arg2)
OSStatus USBGetBandwidthAvailableByReference(USBReference ref, UInt32 *avail)
OSStatus USBDeallocMem(USBPB *pb)
OSStatus USBBulkWrite(USBPB *pb)
OSStatus USBHIDPollDevice(void)
OSStatus USBClosePipeByReference(USBPipeRef ref)
void StartCompoundClassDriver(USBDeviceRef device, UInt16 classID, UInt16 subClass)
OSStatus USBAddShimFromDisk(FSSpec *shimFilePtr)
OSStatus USBExpertInstallDeviceDriver(USBDeviceRef ref, USBDeviceDescriptorPtr desc, USBReference hubRef, UInt32 port, UInt32 busPowerAvailable)
OSStatus USBGetNextDeviceByClass(USBDeviceRef *deviceRef, CFragConnectionID *connID, UInt16 theClass, UInt16 theSubClass, UInt16 theProtocol)
OSStatus USBNewInterfaceRef(USBPB *pb)
OSStatus USBOpenDevice(USBPB *pb)
OSStatus USBDeviceRefToBusRef(USBDeviceRef *deviceRef, USBBusRef *busRef)
Definition: ATA.h:616
Definition: USB.h:1192
Definition: MacTypes.h:638
Definition: PPCToolbox.h:168
Definition: NameRegistry.h:62
Definition: USB.h:1839
Definition: USB.h:365
Definition: USB.h:358
Definition: USB.h:339
Definition: USB.h:1756
Definition: USB.h:1784
Definition: USB.h:1775
Definition: USB.h:392
Definition: USB.h:403
Definition: USB.h:1447
Definition: USB.h:417
Definition: USB.h:1434
Definition: USB.h:426
Definition: USB.h:378
Definition: USB.h:1765
Definition: USB.h:126
Definition: USB.h:1639
Definition: USB.h:1631
Definition: USB.h:160
Definition: USB.h:1875
Definition: USB.h:1946
Definition: USB.h:117
Definition: USB.h:145
Definition: USB.h:139
Definition: USB.h:207
Definition: USB.h:1646
Definition: USB.h:153