package com.github.mjdev.libaums.usb;

import android.hardware.usb.UsbDeviceConnection;
import android.hardware.usb.UsbEndpoint;
import android.hardware.usb.UsbRequest;
import java.io.IOException;
import java.nio.ByteBuffer;

/* JADX INFO: loaded from: classes.dex */
class UsbRequestCommunication implements UsbCommunication {
    private UsbDeviceConnection deviceConnection;
    private UsbRequest inRequest;
    private UsbRequest outRequest;
    private ByteBuffer workaroundBuffer = ByteBuffer.allocate(131072);

    UsbRequestCommunication(UsbDeviceConnection usbDeviceConnection, UsbEndpoint usbEndpoint, UsbEndpoint usbEndpoint2) {
        this.deviceConnection = usbDeviceConnection;
        UsbRequest usbRequest = new UsbRequest();
        usbRequest.initialize(usbDeviceConnection, usbEndpoint);
        this.outRequest = usbRequest;
        UsbRequest usbRequest2 = new UsbRequest();
        usbRequest2.initialize(usbDeviceConnection, usbEndpoint2);
        this.inRequest = usbRequest2;
    }

    @Override // com.github.mjdev.libaums.usb.UsbCommunication
    public synchronized int bulkOutTransfer(ByteBuffer byteBuffer) throws IOException {
        int iRemaining = byteBuffer.remaining();
        int iPosition = byteBuffer.position();
        this.workaroundBuffer.clear();
        this.workaroundBuffer.put(byteBuffer);
        if (!this.outRequest.queue(this.workaroundBuffer, iRemaining)) {
            throw new IOException("Error queueing request.");
        }
        UsbRequest usbRequestRequestWait = this.deviceConnection.requestWait();
        if (usbRequestRequestWait == this.outRequest) {
            byteBuffer.position(iPosition + this.workaroundBuffer.position());
        } else {
            throw new IOException("requestWait failed! Request: " + usbRequestRequestWait);
        }
        return this.workaroundBuffer.position();
    }

    @Override // com.github.mjdev.libaums.usb.UsbCommunication
    public synchronized int bulkInTransfer(ByteBuffer byteBuffer) throws IOException {
        int iRemaining = byteBuffer.remaining();
        this.workaroundBuffer.clear();
        this.workaroundBuffer.limit(iRemaining);
        if (!this.inRequest.queue(this.workaroundBuffer, iRemaining)) {
            throw new IOException("Error queueing request.");
        }
        UsbRequest usbRequestRequestWait = this.deviceConnection.requestWait();
        if (usbRequestRequestWait == this.inRequest) {
            this.workaroundBuffer.flip();
            byteBuffer.put(this.workaroundBuffer);
        } else {
            throw new IOException("requestWait failed! Request: " + usbRequestRequestWait);
        }
        return this.workaroundBuffer.limit();
    }
}
