{"version":3,"file":"USBManager.js","sourceRoot":"","sources":["../../../TS/USB/USBManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { USBDeviceFound, USBRequestDeviceOptions, ParseUSBDevice, USBConfiguration, USBInterface, USBDirection, USBInTransferResult, USBOutTransferResult, USBTransferStatus, USBControlTransferParameters } from \"./USBTypes.js\";\r\n\r\ntype DotNetReferenceType = {\r\n invokeMethod(methodIdentifier: string, ...args: any[]): T,\r\n invokeMethodAsync(methodIdentifier: string, ...args: any[]): Promise\r\n}\r\n\r\nexport class USBManager {\r\n private usb: any = (navigator).usb; // The WebUSB API root object\r\n private _usbReference: DotNetReferenceType | undefined = undefined;\r\n // All devices found on the last request\r\n // We keep a list of the most recent object because we can't serialize the \"real\" USBDevice to send back to C#\r\n // TODO: Find a better way to maintain it and keep consistent with the C# side...\r\n private _foundDevices: any[] = [];\r\n private _eventsRegistered: boolean = false;\r\n\r\n public GetDevices = async (): Promise => {\r\n let devices = await this.usb.getDevices();\r\n let found: USBDeviceFound[] = [];\r\n if (devices) {\r\n devices.forEach(d => {\r\n found.push(ParseUSBDevice(d));\r\n this._foundDevices.push(d);\r\n });\r\n }\r\n return found;\r\n }\r\n\r\n public RequestDevice = async (options: USBRequestDeviceOptions): Promise => {\r\n function isEmpty(obj) {\r\n for (var prop in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n let filters: any[] = [];\r\n let reqOptions: any = undefined;\r\n\r\n if (options && options != null && options.filters && options.filters != null && options.filters.length > 0) {\r\n options.filters.forEach(f => {\r\n let filter: any = {};\r\n Object.keys(f).forEach(key => {\r\n if (f[key] != null) {\r\n filter[key] = f[key];\r\n }\r\n });\r\n if (!isEmpty(filter)) {\r\n filters.push(filter);\r\n }\r\n });\r\n\r\n if (filters.length > 0) {\r\n reqOptions = { filters: filters };\r\n }\r\n } else {\r\n reqOptions = { filters: [] };\r\n }\r\n\r\n let authorizedDevice = await this.usb.requestDevice(reqOptions);\r\n let usbDevice = ParseUSBDevice(authorizedDevice);\r\n this._foundDevices.push(authorizedDevice);\r\n return usbDevice;\r\n }\r\n\r\n public OpenDevice = (device: USBDeviceFound): Promise => {\r\n let usbDevice = this.GetUSBDevice(device);\r\n return new Promise((resolve, reject) => {\r\n if (!usbDevice) return reject(\"Device not connected\");\r\n usbDevice.open()\r\n .then(() => {\r\n let parsed = ParseUSBDevice(usbDevice);\r\n console.log(parsed);\r\n resolve(parsed);\r\n })\r\n .catch(err => reject(err));\r\n });\r\n }\r\n\r\n public CloseDevice = (device: USBDeviceFound): Promise => {\r\n let usbDevice = this.GetUSBDevice(device);\r\n return new Promise((resolve, reject) => {\r\n if (!usbDevice) return reject(\"Device not connected\");\r\n usbDevice.close()\r\n .then(() => {\r\n resolve(ParseUSBDevice(usbDevice));\r\n })\r\n .catch(err => reject(err));\r\n });\r\n }\r\n\r\n public ResetDevice = (device: USBDeviceFound): Promise => {\r\n let usbDevice = this.GetUSBDevice(device);\r\n return new Promise((resolve, reject) => {\r\n if (!usbDevice) return reject(\"Device not connected\");\r\n usbDevice.reset()\r\n .then(() => {\r\n resolve(ParseUSBDevice(usbDevice));\r\n })\r\n .catch(err => reject(err));\r\n });\r\n }\r\n\r\n public SelectConfiguration = (device: USBDeviceFound, configurationValue: number): Promise => {\r\n let usbDevice = this.GetUSBDevice(device);\r\n return new Promise((resolve, reject) => {\r\n if (!usbDevice) return reject(\"Device not connected\");\r\n console.log(configurationValue);\r\n usbDevice.selectConfiguration(configurationValue)\r\n .then(() => {\r\n resolve(ParseUSBDevice(usbDevice));\r\n })\r\n .catch(err => reject(err));\r\n });\r\n }\r\n\r\n public ClaimInterface = (device: USBDeviceFound, interfaceNumber: number): Promise => {\r\n let usbDevice = this.GetUSBDevice(device);\r\n return new Promise((resolve, reject) => {\r\n if (!usbDevice) return reject(\"Device not connected\");\r\n\r\n usbDevice.claimInterface(interfaceNumber)\r\n .then(() => {\r\n resolve(ParseUSBDevice(usbDevice));\r\n })\r\n .catch(err => reject(err));\r\n });\r\n }\r\n\r\n public ReleaseInterface = (device: USBDeviceFound, interfaceNumber: number): Promise => {\r\n let usbDevice = this.GetUSBDevice(device);\r\n return new Promise((resolve, reject) => {\r\n if (!usbDevice) return reject(\"Device not connected\");\r\n\r\n usbDevice.releaseInterface(interfaceNumber)\r\n .then(() => {\r\n resolve(ParseUSBDevice(usbDevice));\r\n })\r\n .catch(err => reject(err));\r\n });\r\n }\r\n\r\n public SelectAlternateInterface = (device: USBDeviceFound, interfaceNumber: number, alternateSetting: number): Promise => {\r\n let usbDevice = this.GetUSBDevice(device);\r\n return new Promise((resolve, reject) => {\r\n if (!usbDevice) return reject(\"Device not connected\");\r\n\r\n usbDevice.selectAlternateInterface(interfaceNumber, alternateSetting)\r\n .then(() => {\r\n resolve(ParseUSBDevice(usbDevice));\r\n })\r\n .catch(err => reject(err));\r\n });\r\n }\r\n\r\n public ClearHalt = (device: USBDeviceFound, direction: USBDirection, endpointNumber: number): Promise => {\r\n let usbDevice = this.GetUSBDevice(device);\r\n return new Promise((resolve, reject) => {\r\n if (!usbDevice) return reject(\"Device not connected\");\r\n\r\n usbDevice.clearHalt(direction, endpointNumber)\r\n .then(() => {\r\n resolve(ParseUSBDevice(usbDevice));\r\n })\r\n .catch(err => reject(err));\r\n });\r\n }\r\n\r\n public TransferIn = (device: USBDeviceFound, endpointNumber: number, length: number): Promise => {\r\n let usbDevice = this.GetUSBDevice(device);\r\n return new Promise((resolve, reject) => {\r\n if (!usbDevice) return reject(\"Device not connected\");\r\n\r\n usbDevice.transferIn(endpointNumber, length)\r\n .then(out => {\r\n resolve({\r\n data: this.BufferToBase64(Array.prototype.slice.call(new Uint8Array(out.data.buffer))), // Hack to support Uint8Array to byte[] serialization.\r\n status: out.status\r\n });\r\n })\r\n .catch(err => {\r\n console.error(err);\r\n reject(err);\r\n });\r\n });\r\n }\r\n\r\n public TransferOut = (device: USBDeviceFound, endpointNumber: number, data: string): Promise => {\r\n let usbDevice = this.GetUSBDevice(device);\r\n return new Promise((resolve, reject) => {\r\n if (!usbDevice) return reject(\"Device not connected\");\r\n const buffer = this.Base64ToBuffer(data);\r\n\r\n usbDevice.transferOut(endpointNumber, buffer)\r\n .then(out => {\r\n resolve({\r\n bytesWritten: out.bytesWritten,\r\n status: out.status\r\n });\r\n })\r\n .catch(err => {\r\n console.error(err);\r\n reject(err);\r\n });\r\n });\r\n }\r\n\r\n public ControlTransferIn = (device: USBDeviceFound, setup: USBControlTransferParameters, length: number): Promise => {\r\n let usbDevice = this.GetUSBDevice(device);\r\n return new Promise((resolve, reject) => {\r\n if (!usbDevice) return reject(\"Device not connected\");\r\n\r\n usbDevice.ControlTransferIn(setup, length)\r\n .then(out => {\r\n resolve({\r\n data: this.BufferToBase64(Array.prototype.slice.call(new Uint8Array(out.data.buffer))), // Hack to support Uint8Array to byte[] serialization.\r\n status: out.status\r\n });\r\n })\r\n .catch(err => {\r\n console.error(err);\r\n reject(err);\r\n });\r\n });\r\n }\r\n\r\n public ControlTransferOut = (device: USBDeviceFound, setup: USBControlTransferParameters, data: string): Promise => {\r\n let usbDevice = this.GetUSBDevice(device);\r\n return new Promise((resolve, reject) => {\r\n if (!usbDevice) return reject(\"Device not connected\");\r\n const buffer = this.Base64ToBuffer(data);\r\n\r\n usbDevice.controlTransferOut(setup, buffer)\r\n .then(out => {\r\n console.log(out);\r\n resolve({\r\n bytesWritten: out.bytesWritten,\r\n status: out.status\r\n });\r\n })\r\n .catch(err => {\r\n console.error(err);\r\n reject(err);\r\n });\r\n });\r\n }\r\n\r\n private GetUSBDevice = (device: USBDeviceFound): any => {\r\n return this._foundDevices.find(\r\n d => d.vendorId == device.vendorId &&\r\n d.productId == device.productId &&\r\n d.deviceClass == device.deviceClass &&\r\n d.serialNumber == device.serialNumber);\r\n }\r\n\r\n private ConnectionStateChangedCallback = (event: any) => {\r\n if (!this._usbReference) return;\r\n let method: string = \"\";\r\n\r\n let usbDevice = this.GetUSBDevice(event.device);\r\n\r\n if (event.type == \"disconnect\") {\r\n method = \"OnDisconnect\";\r\n this._foundDevices = this._foundDevices.filter((d, index, arr) => {\r\n return d.vendorId != usbDevice.vendorId &&\r\n d.productId != usbDevice.productId &&\r\n d.deviceClass != usbDevice.deviceClass &&\r\n d.serialNumber != usbDevice.serialNumber;\r\n });\r\n }\r\n else if (event.type == \"connect\") {\r\n method = \"OnConnect\";\r\n }\r\n else {\r\n console.warn(event);\r\n return;\r\n }\r\n\r\n this._usbReference.invokeMethodAsync(method, ParseUSBDevice(event.device));\r\n }\r\n\r\n public RegisterUSBEvents = (usb: DotNetReferenceType) => {\r\n this._usbReference = usb;\r\n //TODO: Check why this event is not consistently being fired.\r\n if (!this._eventsRegistered) {\r\n this.usb.addEventListener(\"connect\", this.ConnectionStateChangedCallback);\r\n this.usb.addEventListener(\"disconnect\", this.ConnectionStateChangedCallback);\r\n this._eventsRegistered = true;\r\n }\r\n }\r\n\r\n public RemoveUSBEvents = (usb: DotNetReferenceType) => {\r\n if (this._eventsRegistered) {\r\n this.usb.removeEventListener(\"connect\", this.ConnectionStateChangedCallback);\r\n this.usb.removeEventListener(\"disconnect\", this.ConnectionStateChangedCallback);\r\n }\r\n }\r\n\r\n private BufferToBase64 = (buf) => {\r\n var binstr = Array.prototype.map.call(buf, (ch) => {\r\n return String.fromCharCode(ch);\r\n }).join('');\r\n return btoa(binstr);\r\n }\r\n\r\n private Base64ToBuffer = (base64: string) => {\r\n var binstr = atob(base64);\r\n var buf = new Uint8Array(binstr.length);\r\n Array.prototype.forEach.call(binstr, (ch, i) => {\r\n buf[i] = ch.charCodeAt(0);\r\n });\r\n return buf;\r\n }\r\n}\r\n"]}