1 | declare class USBConnectionEvent extends Event {
|
2 | device: USBDevice;
|
3 | };
|
4 |
|
5 | declare type USBConnectionEventHandler = (event: USBConnectionEvent) => mixed;
|
6 |
|
7 | declare type BufferSource = ArrayBuffer | DataView | $TypedArray;
|
8 |
|
9 | declare class USB extends EventTarget {
|
10 | onconnect: ?USBConnectionEventHandler;
|
11 | ondisconnect: ?USBConnectionEventHandler;
|
12 | getDevices: () => Promise<Array<USBDevice>>;
|
13 | requestDevice: (options?: USBDeviceRequestOptions) => Promise<USBDevice>;
|
14 | };
|
15 |
|
16 | declare type USBDeviceRequestOptions = {
|
17 | filters: Array<USBDeviceFilter>;
|
18 | };
|
19 |
|
20 | declare type USBDeviceFilter = {
|
21 | vendorId?: number;
|
22 | productId?: number;
|
23 | classCode?: number;
|
24 | subclassCode?: number;
|
25 | protocolCode?: number;
|
26 | serialNumber?: string;
|
27 |
|
28 | };
|
29 |
|
30 | declare class USBDevice {
|
31 | usbVersionMajor: number;
|
32 | usbVersionMinor: number;
|
33 | usbVersionSubminor: number;
|
34 | deviceClass: number;
|
35 | deviceSubclass: number;
|
36 | deviceProtocol: number;
|
37 | vendorId: number;
|
38 | productId: number;
|
39 | deviceVersionMajor: number;
|
40 | deviceVersionMinor: number;
|
41 | deviceVersionSubminor: number;
|
42 | manufacturerName: ?string;
|
43 | productName: ?string;
|
44 | serialNumber: ?string;
|
45 | configuration: ?USBConfiguration;
|
46 | configurations: Array<USBConfiguration>;
|
47 | opened: boolean;
|
48 | open: () => Promise<void>;
|
49 | close: () => Promise<void>;
|
50 | selectConfiguration: (configurationValue: number) => Promise<void>;
|
51 | claimInterface: (interfaceNumber: number) => Promise<void>;
|
52 | releaseInterface: (interfaceNumber: number) => Promise<void>;
|
53 | selectAlternateInterface: (interfaceNumber: number, alternateSetting: number) => Promise<void>;
|
54 | controlTransferIn: (setup: USBControlTransferParameters, length: number) => Promise<USBInTransferResult>;
|
55 | controlTransferOut: (setup: USBControlTransferParameters, data?: BufferSource) => Promise<USBOutTransferResult>;
|
56 | clearHalt: (direction: USBDirection, endpointNumber: number) => Promise<void>;
|
57 | transferIn: (endpointNumber: number, length: number) => Promise<USBInTransferResult>;
|
58 | transferOut: (endpointNumber: number, data: BufferSource) => Promise<USBOutTransferResult>;
|
59 | isochronousTransferIn: (endpointNumber: number, packetLengths: Array<number>) => Promise<USBIsochronousInTransferResult>;
|
60 | isochronousTransferOut: (endpointNumber: number, data: BufferSource, packetLengths: Array<number>) => Promise<USBIsochronousOutTransferResult>;
|
61 | reset: () => Promise<void>;
|
62 | };
|
63 |
|
64 | declare type USBDirection = 'in' | 'out';
|
65 |
|
66 | declare class USBConfiguration {
|
67 | configurationValue: number;
|
68 | configurationName: ?string;
|
69 | interfaces: Array<USBInterface>;
|
70 | };
|
71 |
|
72 | declare class USBInterface {
|
73 | interfaceNumber: number;
|
74 | alternate: USBAlternateInterface;
|
75 | alternates: Array<USBAlternateInterface>;
|
76 | claimed: boolean;
|
77 | };
|
78 |
|
79 | declare class USBAlternateInterface {
|
80 | alternateSetting: number;
|
81 | interfaceClass: number;
|
82 | interfaceSubclass: number;
|
83 | interfaceProtocol: number;
|
84 | interfaceName: ?string;
|
85 | endpoints: Array<USBEndpoint>;
|
86 | };
|
87 |
|
88 | declare class USBEndpoint {
|
89 | endpointNumber: number;
|
90 | direction: USBDirection;
|
91 | type: 'bulk' | 'interrupt' | 'isochronous';
|
92 | packetSize: number;
|
93 | };
|
94 |
|
95 | declare type USBRequestType = 'standard' | 'class' | 'vendor';
|
96 | declare type USBRecipient = 'device' | 'interface' | 'endpoint' | 'other';
|
97 |
|
98 | declare type USBControlTransferParameters = {
|
99 | requestType: USBRequestType;
|
100 | recipient: USBRecipient;
|
101 | request: number;
|
102 | value: number;
|
103 | index: number;
|
104 | };
|
105 |
|
106 | declare type USBTransferStatus = 'ok' | 'stall' | 'babble';
|
107 |
|
108 | declare class USBInTransferResult {
|
109 | data: DataView;
|
110 | status: USBTransferStatus;
|
111 | };
|
112 |
|
113 | declare class USBOutTransferResult {
|
114 | bytesWritten: number;
|
115 | status: USBTransferStatus;
|
116 | };
|
117 |
|
118 | declare class USBIsochronousInTransferPacket {
|
119 | data: DataView;
|
120 | status: USBTransferStatus;
|
121 | };
|
122 |
|
123 | declare class USBIsochronousInTransferResult {
|
124 | data: DataView;
|
125 | packets: Array<USBIsochronousInTransferPacket>;
|
126 | };
|
127 |
|
128 | declare class USBIsochronousOutTransferPacket {
|
129 | protocolCode?: number,
|
130 | bytesWritten: number;
|
131 | status: USBTransferStatus;
|
132 | };
|
133 |
|
134 | declare class USBIsochronousOutTransferResult {
|
135 | packets: Array<USBIsochronousOutTransferPacket>;
|
136 | };
|