USBMonitor$UsbControlBlock.smali

.class public final Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;
.super Ljava/lang/Object;
.source "USBMonitor.java"

# interfaces
.implements Ljava/lang/Cloneable;


# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Lcom/serenegiant/usb/USBMonitor;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x19
    name = "UsbControlBlock"
.end annotation


# instance fields
.field private final mBusNum:I

.field protected mConnection:Landroid/hardware/usb/UsbDeviceConnection;

.field private final mDevNum:I

.field protected final mInfo:Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;

.field private final mInterfaces:Landroid/util/SparseArray;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Landroid/util/SparseArray<",
            "Landroid/util/SparseArray<",
            "Landroid/hardware/usb/UsbInterface;",
            ">;>;"
        }
    .end annotation
.end field

.field private final mWeakDevice:Ljava/lang/ref/WeakReference;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/lang/ref/WeakReference<",
            "Landroid/hardware/usb/UsbDevice;",
            ">;"
        }
    .end annotation
.end field

.field private final mWeakMonitor:Ljava/lang/ref/WeakReference;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/lang/ref/WeakReference<",
            "Lcom/serenegiant/usb/USBMonitor;",
            ">;"
        }
    .end annotation
.end field


# direct methods
.method static constructor <clinit>()V
    .registers 1

    return-void
.end method

.method private constructor <init>(Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;)V
    .registers 6
    .param p1, "src"    # Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/IllegalStateException;
        }
    .end annotation

    .line 1088
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 1048
    new-instance v0, Landroid/util/SparseArray;

    invoke-direct {v0}, Landroid/util/SparseArray;-><init>()V

    iput-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mInterfaces:Landroid/util/SparseArray;

    .line 1089
    invoke-virtual {p1}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->getUSBMonitor()Lcom/serenegiant/usb/USBMonitor;

    move-result-object v0

    .line 1090
    .local v0, "monitor":Lcom/serenegiant/usb/USBMonitor;
    invoke-virtual {p1}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->getDevice()Landroid/hardware/usb/UsbDevice;

    move-result-object v1

    .line 1091
    .local v1, "device":Landroid/hardware/usb/UsbDevice;
    if-eqz v1, :cond_4a

    .line 1094
    # getter for: Lcom/serenegiant/usb/USBMonitor;->mUsbManager:Landroid/hardware/usb/UsbManager;
    invoke-static {v0}, Lcom/serenegiant/usb/USBMonitor;->access$1400(Lcom/serenegiant/usb/USBMonitor;)Landroid/hardware/usb/UsbManager;

    move-result-object v2

    invoke-virtual {v2, v1}, Landroid/hardware/usb/UsbManager;->openDevice(Landroid/hardware/usb/UsbDevice;)Landroid/hardware/usb/UsbDeviceConnection;

    move-result-object v2

    iput-object v2, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mConnection:Landroid/hardware/usb/UsbDeviceConnection;

    .line 1095
    if-eqz v2, :cond_42

    .line 1098
    # getter for: Lcom/serenegiant/usb/USBMonitor;->mUsbManager:Landroid/hardware/usb/UsbManager;
    invoke-static {v0}, Lcom/serenegiant/usb/USBMonitor;->access$1400(Lcom/serenegiant/usb/USBMonitor;)Landroid/hardware/usb/UsbManager;

    move-result-object v2

    const/4 v3, 0x0

    invoke-static {v2, v1, v3}, Lcom/serenegiant/usb/USBMonitor;->updateDeviceInfo(Landroid/hardware/usb/UsbManager;Landroid/hardware/usb/UsbDevice;Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;)Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;

    move-result-object v2

    iput-object v2, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mInfo:Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;

    .line 1099
    new-instance v2, Ljava/lang/ref/WeakReference;

    invoke-direct {v2, v0}, Ljava/lang/ref/WeakReference;-><init>(Ljava/lang/Object;)V

    iput-object v2, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakMonitor:Ljava/lang/ref/WeakReference;

    .line 1100
    new-instance v2, Ljava/lang/ref/WeakReference;

    invoke-direct {v2, v1}, Ljava/lang/ref/WeakReference;-><init>(Ljava/lang/Object;)V

    iput-object v2, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakDevice:Ljava/lang/ref/WeakReference;

    .line 1101
    iget v2, p1, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mBusNum:I

    iput v2, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mBusNum:I

    .line 1102
    iget v2, p1, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mDevNum:I

    iput v2, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mDevNum:I

    .line 1104
    return-void

    .line 1096
    :cond_42
    new-instance v2, Ljava/lang/IllegalStateException;

    const-string v3, "device may already be removed or have no permission"

    invoke-direct {v2, v3}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v2

    .line 1092
    :cond_4a
    new-instance v2, Ljava/lang/IllegalStateException;

    const-string v3, "device may already be removed"

    invoke-direct {v2, v3}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v2
.end method

.method private constructor <init>(Lcom/serenegiant/usb/USBMonitor;Landroid/hardware/usb/UsbDevice;)V
    .registers 16
    .param p1, "monitor"    # Lcom/serenegiant/usb/USBMonitor;
    .param p2, "device"    # Landroid/hardware/usb/UsbDevice;

    .line 1055
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 1048
    new-instance v0, Landroid/util/SparseArray;

    invoke-direct {v0}, Landroid/util/SparseArray;-><init>()V

    iput-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mInterfaces:Landroid/util/SparseArray;

    .line 1057
    new-instance v0, Ljava/lang/ref/WeakReference;

    invoke-direct {v0, p1}, Ljava/lang/ref/WeakReference;-><init>(Ljava/lang/Object;)V

    iput-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakMonitor:Ljava/lang/ref/WeakReference;

    .line 1058
    new-instance v0, Ljava/lang/ref/WeakReference;

    invoke-direct {v0, p2}, Ljava/lang/ref/WeakReference;-><init>(Ljava/lang/Object;)V

    iput-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakDevice:Ljava/lang/ref/WeakReference;

    .line 1059
    # getter for: Lcom/serenegiant/usb/USBMonitor;->mUsbManager:Landroid/hardware/usb/UsbManager;
    invoke-static {p1}, Lcom/serenegiant/usb/USBMonitor;->access$1400(Lcom/serenegiant/usb/USBMonitor;)Landroid/hardware/usb/UsbManager;

    move-result-object v0

    invoke-virtual {v0, p2}, Landroid/hardware/usb/UsbManager;->openDevice(Landroid/hardware/usb/UsbDevice;)Landroid/hardware/usb/UsbDeviceConnection;

    move-result-object v0

    iput-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mConnection:Landroid/hardware/usb/UsbDeviceConnection;

    .line 1060
    const-string v0, "USBMonitor"

    const-string v1, "openDevice"

    invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I

    .line 1061
    # getter for: Lcom/serenegiant/usb/USBMonitor;->mUsbManager:Landroid/hardware/usb/UsbManager;
    invoke-static {p1}, Lcom/serenegiant/usb/USBMonitor;->access$1400(Lcom/serenegiant/usb/USBMonitor;)Landroid/hardware/usb/UsbManager;

    move-result-object v1

    iget-object v2, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mConnection:Landroid/hardware/usb/UsbDeviceConnection;

    const/4 v3, 0x0

    invoke-static {v1, p2, v3, v2}, Lcom/serenegiant/usb/USBMonitor;->updateDeviceInfo(Landroid/hardware/usb/UsbManager;Landroid/hardware/usb/UsbDevice;Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;Landroid/hardware/usb/UsbDeviceConnection;)Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;

    move-result-object v1

    iput-object v1, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mInfo:Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;

    .line 1062
    invoke-virtual {p2}, Landroid/hardware/usb/UsbDevice;->getDeviceName()Ljava/lang/String;

    move-result-object v1

    .line 1063
    .local v1, "name":Ljava/lang/String;
    invoke-static {v1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v2

    if-nez v2, :cond_46

    const-string v2, "/"

    invoke-virtual {v1, v2}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;

    move-result-object v3

    :cond_46
    move-object v2, v3

    .line 1064
    .local v2, "v":[Ljava/lang/String;
    const/4 v3, 0x0

    .line 1065
    .local v3, "busnum":I
    const/4 v4, 0x0

    .line 1066
    .local v4, "devnum":I
    const/4 v5, 0x1

    const/4 v6, 0x2

    if-eqz v2, :cond_5d

    .line 1067
    array-length v7, v2

    sub-int/2addr v7, v6

    aget-object v7, v2, v7

    invoke-static {v7}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I

    move-result v3

    .line 1068
    array-length v7, v2

    sub-int/2addr v7, v5

    aget-object v7, v2, v7

    invoke-static {v7}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I

    move-result v4

    .line 1070
    :cond_5d
    iput v3, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mBusNum:I

    .line 1071
    iput v4, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mDevNum:I

    .line 1073
    iget-object v7, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mConnection:Landroid/hardware/usb/UsbDeviceConnection;

    if-eqz v7, :cond_a3

    .line 1074
    invoke-virtual {v7}, Landroid/hardware/usb/UsbDeviceConnection;->getFileDescriptor()I

    move-result v7

    .line 1075
    .local v7, "desc":I
    iget-object v8, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mConnection:Landroid/hardware/usb/UsbDeviceConnection;

    invoke-virtual {v8}, Landroid/hardware/usb/UsbDeviceConnection;->getRawDescriptors()[B

    move-result-object v8

    .line 1076
    .local v8, "rawDesc":[B
    new-instance v9, Ljava/lang/StringBuilder;

    invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V

    sget-object v10, Ljava/util/Locale;->US:Ljava/util/Locale;

    const/4 v11, 0x4

    new-array v11, v11, [Ljava/lang/Object;

    const/4 v12, 0x0

    aput-object v1, v11, v12

    invoke-static {v7}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v12

    aput-object v12, v11, v5

    invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v5

    aput-object v5, v11, v6

    const/4 v5, 0x3

    invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v6

    aput-object v6, v11, v5

    const-string v5, "name=%s,desc=%d,busnum=%d,devnum=%d,rawDesc="

    invoke-static {v10, v5, v11}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v5

    invoke-virtual {v9, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v9, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v5

    invoke-static {v0, v5}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I

    .line 1077
    .end local v7    # "desc":I
    .end local v8    # "rawDesc":[B
    goto :goto_b7

    .line 1078
    :cond_a3
    new-instance v5, Ljava/lang/StringBuilder;

    invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V

    const-string v6, "could not connect to device "

    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v5

    invoke-static {v0, v5}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I

    .line 1081
    :goto_b7
    return-void
.end method

.method synthetic constructor <init>(Lcom/serenegiant/usb/USBMonitor;Landroid/hardware/usb/UsbDevice;Lcom/serenegiant/usb/USBMonitor$1;)V
    .registers 4
    .param p1, "x0"    # Lcom/serenegiant/usb/USBMonitor;
    .param p2, "x1"    # Landroid/hardware/usb/UsbDevice;
    .param p3, "x2"    # Lcom/serenegiant/usb/USBMonitor$1;

    .line 1041
    invoke-direct {p0, p1, p2}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;-><init>(Lcom/serenegiant/usb/USBMonitor;Landroid/hardware/usb/UsbDevice;)V

    return-void
.end method

.method private declared-synchronized checkConnection()V
    .registers 3
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/IllegalStateException;
        }
    .end annotation

    monitor-enter p0

    .line 1427
    :try_start_1
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mConnection:Landroid/hardware/usb/UsbDeviceConnection;
    :try_end_3
    .catchall {:try_start_1 .. :try_end_3} :catchall_f

    if-eqz v0, :cond_7

    .line 1430
    monitor-exit p0

    return-void

    .line 1428
    :cond_7
    :try_start_7
    new-instance v0, Ljava/lang/IllegalStateException;

    const-string v1, "already closed"

    invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v0
    :try_end_f
    .catchall {:try_start_7 .. :try_end_f} :catchall_f

    .line 1426
    .end local p0    # "this":Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;
    :catchall_f
    move-exception v0

    monitor-exit p0

    throw v0
.end method


# virtual methods
.method public declared-synchronized claimInterface(Landroid/hardware/usb/UsbInterface;)V
    .registers 3
    .param p1, "intf"    # Landroid/hardware/usb/UsbInterface;

    monitor-enter p0

    .line 1348
    const/4 v0, 0x1

    :try_start_2
    invoke-virtual {p0, p1, v0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->claimInterface(Landroid/hardware/usb/UsbInterface;Z)V
    :try_end_5
    .catchall {:try_start_2 .. :try_end_5} :catchall_7

    .line 1349
    monitor-exit p0

    return-void

    .line 1347
    .end local p0    # "this":Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;
    .end local p1    # "intf":Landroid/hardware/usb/UsbInterface;
    :catchall_7
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized claimInterface(Landroid/hardware/usb/UsbInterface;Z)V
    .registers 4
    .param p1, "intf"    # Landroid/hardware/usb/UsbInterface;
    .param p2, "force"    # Z

    monitor-enter p0

    .line 1352
    :try_start_1
    invoke-direct {p0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->checkConnection()V

    .line 1353
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mConnection:Landroid/hardware/usb/UsbDeviceConnection;

    invoke-virtual {v0, p1, p2}, Landroid/hardware/usb/UsbDeviceConnection;->claimInterface(Landroid/hardware/usb/UsbInterface;Z)Z
    :try_end_9
    .catchall {:try_start_1 .. :try_end_9} :catchall_b

    .line 1354
    monitor-exit p0

    return-void

    .line 1351
    .end local p0    # "this":Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;
    .end local p1    # "intf":Landroid/hardware/usb/UsbInterface;
    .end local p2    # "force":Z
    :catchall_b
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public clone()Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;
    .registers 4
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/CloneNotSupportedException;
        }
    .end annotation

    .line 1117
    :try_start_0
    new-instance v0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    invoke-direct {v0, p0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;-><init>(Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;)V
    :try_end_5
    .catch Ljava/lang/IllegalStateException; {:try_start_0 .. :try_end_5} :catch_7

    .line 1120
    .local v0, "ctrlblock":Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;
    nop

    .line 1121
    return-object v0

    .line 1118
    .end local v0    # "ctrlblock":Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;
    :catch_7
    move-exception v0

    .line 1119
    .local v0, "e":Ljava/lang/IllegalStateException;
    new-instance v1, Ljava/lang/CloneNotSupportedException;

    invoke-virtual {v0}, Ljava/lang/IllegalStateException;->getMessage()Ljava/lang/String;

    move-result-object v2

    invoke-direct {v1, v2}, Ljava/lang/CloneNotSupportedException;-><init>(Ljava/lang/String;)V

    throw v1
.end method

.method public bridge synthetic clone()Ljava/lang/Object;
    .registers 2
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/CloneNotSupportedException;
        }
    .end annotation

    .line 1041
    invoke-virtual {p0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->clone()Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    move-result-object v0

    return-object v0
.end method

.method public declared-synchronized close()V
    .registers 8

    monitor-enter p0

    .line 1381
    :try_start_1
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mConnection:Landroid/hardware/usb/UsbDeviceConnection;

    if-eqz v0, :cond_6b

    .line 1382
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mInterfaces:Landroid/util/SparseArray;

    invoke-virtual {v0}, Landroid/util/SparseArray;->size()I

    move-result v0

    .line 1383
    .local v0, "n":I
    const/4 v1, 0x0

    .local v1, "i":I
    :goto_c
    if-ge v1, v0, :cond_34

    .line 1384
    iget-object v2, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mInterfaces:Landroid/util/SparseArray;

    invoke-virtual {v2, v1}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Landroid/util/SparseArray;

    .line 1385
    .local v2, "intfs":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Landroid/hardware/usb/UsbInterface;>;"
    if-eqz v2, :cond_31

    .line 1386
    invoke-virtual {v2}, Landroid/util/SparseArray;->size()I

    move-result v3

    .line 1387
    .local v3, "m":I
    const/4 v4, 0x0

    .local v4, "j":I
    :goto_1d
    if-ge v4, v3, :cond_2e

    .line 1388
    invoke-virtual {v2, v4}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;

    move-result-object v5

    check-cast v5, Landroid/hardware/usb/UsbInterface;

    .line 1389
    .local v5, "intf":Landroid/hardware/usb/UsbInterface;
    iget-object v6, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mConnection:Landroid/hardware/usb/UsbDeviceConnection;

    invoke-virtual {v6, v5}, Landroid/hardware/usb/UsbDeviceConnection;->releaseInterface(Landroid/hardware/usb/UsbInterface;)Z

    .line 1387
    nop

    .end local v5    # "intf":Landroid/hardware/usb/UsbInterface;
    add-int/lit8 v4, v4, 0x1

    goto :goto_1d

    .line 1391
    .end local v4    # "j":I
    .end local p0    # "this":Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;
    :cond_2e
    invoke-virtual {v2}, Landroid/util/SparseArray;->clear()V

    .line 1383
    .end local v2    # "intfs":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Landroid/hardware/usb/UsbInterface;>;"
    .end local v3    # "m":I
    :cond_31
    add-int/lit8 v1, v1, 0x1

    goto :goto_c

    .line 1394
    .end local v1    # "i":I
    :cond_34
    iget-object v1, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mInterfaces:Landroid/util/SparseArray;

    invoke-virtual {v1}, Landroid/util/SparseArray;->clear()V

    .line 1395
    iget-object v1, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mConnection:Landroid/hardware/usb/UsbDeviceConnection;

    invoke-virtual {v1}, Landroid/hardware/usb/UsbDeviceConnection;->close()V

    .line 1396
    const/4 v1, 0x0

    iput-object v1, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mConnection:Landroid/hardware/usb/UsbDeviceConnection;

    .line 1397
    iget-object v1, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakMonitor:Ljava/lang/ref/WeakReference;

    invoke-virtual {v1}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/serenegiant/usb/USBMonitor;

    .line 1398
    .local v1, "monitor":Lcom/serenegiant/usb/USBMonitor;
    if-eqz v1, :cond_6b

    .line 1399
    # getter for: Lcom/serenegiant/usb/USBMonitor;->mOnDeviceConnectListener:Lcom/serenegiant/usb/USBMonitor$OnDeviceConnectListener;
    invoke-static {v1}, Lcom/serenegiant/usb/USBMonitor;->access$1100(Lcom/serenegiant/usb/USBMonitor;)Lcom/serenegiant/usb/USBMonitor$OnDeviceConnectListener;

    move-result-object v2

    if-eqz v2, :cond_60

    .line 1400
    # getter for: Lcom/serenegiant/usb/USBMonitor;->mOnDeviceConnectListener:Lcom/serenegiant/usb/USBMonitor$OnDeviceConnectListener;
    invoke-static {v1}, Lcom/serenegiant/usb/USBMonitor;->access$1100(Lcom/serenegiant/usb/USBMonitor;)Lcom/serenegiant/usb/USBMonitor$OnDeviceConnectListener;

    move-result-object v2

    iget-object v3, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakDevice:Ljava/lang/ref/WeakReference;

    invoke-virtual {v3}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Landroid/hardware/usb/UsbDevice;

    invoke-interface {v2, v3, p0}, Lcom/serenegiant/usb/USBMonitor$OnDeviceConnectListener;->onDisconnect(Landroid/hardware/usb/UsbDevice;Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;)V

    .line 1402
    :cond_60
    # getter for: Lcom/serenegiant/usb/USBMonitor;->mCtrlBlocks:Ljava/util/concurrent/ConcurrentHashMap;
    invoke-static {v1}, Lcom/serenegiant/usb/USBMonitor;->access$700(Lcom/serenegiant/usb/USBMonitor;)Ljava/util/concurrent/ConcurrentHashMap;

    move-result-object v2

    invoke-virtual {p0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->getDevice()Landroid/hardware/usb/UsbDevice;

    move-result-object v3

    invoke-virtual {v2, v3}, Ljava/util/concurrent/ConcurrentHashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
    :try_end_6b
    .catchall {:try_start_1 .. :try_end_6b} :catchall_6d

    .line 1405
    .end local v0    # "n":I
    .end local v1    # "monitor":Lcom/serenegiant/usb/USBMonitor;
    :cond_6b
    monitor-exit p0

    return-void

    .line 1380
    :catchall_6d
    move-exception v0

    monitor-exit p0

    goto :goto_71

    :goto_70
    throw v0

    :goto_71
    goto :goto_70
.end method

.method public equals(Ljava/lang/Object;)Z
    .registers 5
    .param p1, "o"    # Ljava/lang/Object;

    .line 1409
    const/4 v0, 0x0

    if-nez p1, :cond_4

    return v0

    .line 1410
    :cond_4
    instance-of v1, p1, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    if-eqz v1, :cond_26

    .line 1411
    move-object v1, p1

    check-cast v1, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;

    invoke-virtual {v1}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->getDevice()Landroid/hardware/usb/UsbDevice;

    move-result-object v1

    .line 1412
    .local v1, "device":Landroid/hardware/usb/UsbDevice;
    if-nez v1, :cond_1b

    iget-object v2, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakDevice:Ljava/lang/ref/WeakReference;

    invoke-virtual {v2}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v2

    if-nez v2, :cond_25

    const/4 v0, 0x1

    goto :goto_25

    :cond_1b
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakDevice:Ljava/lang/ref/WeakReference;

    .line 1413
    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    invoke-virtual {v1, v0}, Landroid/hardware/usb/UsbDevice;->equals(Ljava/lang/Object;)Z

    move-result v0

    .line 1412
    :cond_25
    :goto_25
    return v0

    .line 1414
    .end local v1    # "device":Landroid/hardware/usb/UsbDevice;
    :cond_26
    instance-of v0, p1, Landroid/hardware/usb/UsbDevice;

    if-eqz v0, :cond_35

    .line 1415
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakDevice:Ljava/lang/ref/WeakReference;

    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    invoke-virtual {p1, v0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z

    move-result v0

    return v0

    .line 1417
    :cond_35
    invoke-super {p0, p1}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z

    move-result v0

    return v0
.end method

.method public getBusNum()I
    .registers 2

    .line 1295
    iget v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mBusNum:I

    return v0
.end method

.method public declared-synchronized getConnection()Landroid/hardware/usb/UsbDeviceConnection;
    .registers 2

    monitor-enter p0

    .line 1213
    :try_start_1
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mConnection:Landroid/hardware/usb/UsbDeviceConnection;
    :try_end_3
    .catchall {:try_start_1 .. :try_end_3} :catchall_5

    monitor-exit p0

    return-object v0

    .end local p0    # "this":Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;
    :catchall_5
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public getDevNum()I
    .registers 2

    .line 1299
    iget v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mDevNum:I

    return v0
.end method

.method public final getDevice()Landroid/hardware/usb/UsbDevice;
    .registers 2

    .line 1129
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakDevice:Ljava/lang/ref/WeakReference;

    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/hardware/usb/UsbDevice;

    return-object v0
.end method

.method public getDeviceId()I
    .registers 3

    .line 1146
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakDevice:Ljava/lang/ref/WeakReference;

    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/hardware/usb/UsbDevice;

    .line 1147
    .local v0, "device":Landroid/hardware/usb/UsbDevice;
    if-eqz v0, :cond_f

    invoke-virtual {v0}, Landroid/hardware/usb/UsbDevice;->getDeviceId()I

    move-result v1

    goto :goto_10

    :cond_f
    const/4 v1, 0x0

    :goto_10
    return v1
.end method

.method public getDeviceKey()I
    .registers 2
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/IllegalStateException;
        }
    .end annotation

    .line 1175
    invoke-direct {p0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->checkConnection()V

    .line 1176
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakDevice:Ljava/lang/ref/WeakReference;

    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/hardware/usb/UsbDevice;

    invoke-static {v0}, Lcom/serenegiant/usb/USBMonitor;->getDeviceKey(Landroid/hardware/usb/UsbDevice;)I

    move-result v0

    return v0
.end method

.method public getDeviceKey(Z)I
    .registers 4
    .param p1, "useNewAPI"    # Z
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/IllegalStateException;
        }
    .end annotation

    .line 1186
    if-eqz p1, :cond_5

    invoke-direct {p0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->checkConnection()V

    .line 1187
    :cond_5
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakDevice:Ljava/lang/ref/WeakReference;

    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/hardware/usb/UsbDevice;

    iget-object v1, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mInfo:Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;

    iget-object v1, v1, Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;->serial:Ljava/lang/String;

    invoke-static {v0, v1, p1}, Lcom/serenegiant/usb/USBMonitor;->getDeviceKey(Landroid/hardware/usb/UsbDevice;Ljava/lang/String;Z)I

    move-result v0

    return v0
.end method

.method public getDeviceKeyName()Ljava/lang/String;
    .registers 2

    .line 1155
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakDevice:Ljava/lang/ref/WeakReference;

    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/hardware/usb/UsbDevice;

    invoke-static {v0}, Lcom/serenegiant/usb/USBMonitor;->getDeviceKeyName(Landroid/hardware/usb/UsbDevice;)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public getDeviceKeyName(Z)Ljava/lang/String;
    .registers 4
    .param p1, "useNewAPI"    # Z
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/IllegalStateException;
        }
    .end annotation

    .line 1165
    if-eqz p1, :cond_5

    invoke-direct {p0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->checkConnection()V

    .line 1166
    :cond_5
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakDevice:Ljava/lang/ref/WeakReference;

    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/hardware/usb/UsbDevice;

    iget-object v1, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mInfo:Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;

    iget-object v1, v1, Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;->serial:Ljava/lang/String;

    invoke-static {v0, v1, p1}, Lcom/serenegiant/usb/USBMonitor;->getDeviceKeyName(Landroid/hardware/usb/UsbDevice;Ljava/lang/String;Z)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public getDeviceKeyNameWithSerial()Ljava/lang/String;
    .registers 4

    .line 1196
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakDevice:Ljava/lang/ref/WeakReference;

    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/hardware/usb/UsbDevice;

    iget-object v1, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mInfo:Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;

    iget-object v1, v1, Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;->serial:Ljava/lang/String;

    const/4 v2, 0x0

    invoke-static {v0, v1, v2}, Lcom/serenegiant/usb/USBMonitor;->getDeviceKeyName(Landroid/hardware/usb/UsbDevice;Ljava/lang/String;Z)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public getDeviceKeyWithSerial()I
    .registers 2

    .line 1205
    invoke-virtual {p0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->getDeviceKeyNameWithSerial()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/String;->hashCode()I

    move-result v0

    return v0
.end method

.method public getDeviceName()Ljava/lang/String;
    .registers 3

    .line 1137
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakDevice:Ljava/lang/ref/WeakReference;

    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/hardware/usb/UsbDevice;

    .line 1138
    .local v0, "device":Landroid/hardware/usb/UsbDevice;
    if-eqz v0, :cond_f

    invoke-virtual {v0}, Landroid/hardware/usb/UsbDevice;->getDeviceName()Ljava/lang/String;

    move-result-object v1

    goto :goto_11

    :cond_f
    const-string v1, ""

    :goto_11
    return-object v1
.end method

.method public declared-synchronized getFileDescriptor()I
    .registers 2
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/IllegalStateException;
        }
    .end annotation

    monitor-enter p0

    .line 1222
    :try_start_1
    invoke-direct {p0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->checkConnection()V

    .line 1223
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mConnection:Landroid/hardware/usb/UsbDeviceConnection;

    invoke-virtual {v0}, Landroid/hardware/usb/UsbDeviceConnection;->getFileDescriptor()I

    move-result v0
    :try_end_a
    .catchall {:try_start_1 .. :try_end_a} :catchall_c

    monitor-exit p0

    return v0

    .line 1221
    .end local p0    # "this":Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;
    :catchall_c
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized getInterface(I)Landroid/hardware/usb/UsbInterface;
    .registers 3
    .param p1, "interface_id"    # I
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/IllegalStateException;
        }
    .end annotation

    monitor-enter p0

    .line 1308
    const/4 v0, 0x0

    :try_start_2
    invoke-virtual {p0, p1, v0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->getInterface(II)Landroid/hardware/usb/UsbInterface;

    move-result-object v0
    :try_end_6
    .catchall {:try_start_2 .. :try_end_6} :catchall_8

    monitor-exit p0

    return-object v0

    .end local p0    # "this":Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;
    .end local p1    # "interface_id":I
    :catchall_8
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized getInterface(II)Landroid/hardware/usb/UsbInterface;
    .registers 10
    .param p1, "interface_id"    # I
    .param p2, "altsetting"    # I
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/IllegalStateException;
        }
    .end annotation

    monitor-enter p0

    .line 1319
    :try_start_1
    invoke-direct {p0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->checkConnection()V

    .line 1320
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mInterfaces:Landroid/util/SparseArray;

    invoke-virtual {v0, p1}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/util/SparseArray;

    .line 1321
    .local v0, "intfs":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Landroid/hardware/usb/UsbInterface;>;"
    if-nez v0, :cond_19

    .line 1322
    new-instance v1, Landroid/util/SparseArray;

    invoke-direct {v1}, Landroid/util/SparseArray;-><init>()V

    move-object v0, v1

    .line 1323
    iget-object v1, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mInterfaces:Landroid/util/SparseArray;

    invoke-virtual {v1, p1, v0}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V

    .line 1325
    .end local p0    # "this":Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;
    :cond_19
    invoke-virtual {v0, p2}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Landroid/hardware/usb/UsbInterface;

    .line 1326
    .local v1, "intf":Landroid/hardware/usb/UsbInterface;
    if-nez v1, :cond_4a

    .line 1327
    iget-object v2, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakDevice:Ljava/lang/ref/WeakReference;

    invoke-virtual {v2}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Landroid/hardware/usb/UsbDevice;

    .line 1328
    .local v2, "device":Landroid/hardware/usb/UsbDevice;
    invoke-virtual {v2}, Landroid/hardware/usb/UsbDevice;->getInterfaceCount()I

    move-result v3

    .line 1329
    .local v3, "n":I
    const/4 v4, 0x0

    .local v4, "i":I
    :goto_2e
    if-ge v4, v3, :cond_45

    .line 1330
    invoke-virtual {v2, v4}, Landroid/hardware/usb/UsbDevice;->getInterface(I)Landroid/hardware/usb/UsbInterface;

    move-result-object v5

    .line 1331
    .local v5, "temp":Landroid/hardware/usb/UsbInterface;
    invoke-virtual {v5}, Landroid/hardware/usb/UsbInterface;->getId()I

    move-result v6

    if-ne v6, p1, :cond_42

    invoke-virtual {v5}, Landroid/hardware/usb/UsbInterface;->getAlternateSetting()I

    move-result v6

    if-ne v6, p2, :cond_42

    .line 1332
    move-object v1, v5

    .line 1333
    goto :goto_45

    .line 1329
    .end local v5    # "temp":Landroid/hardware/usb/UsbInterface;
    :cond_42
    add-int/lit8 v4, v4, 0x1

    goto :goto_2e

    .line 1336
    .end local v4    # "i":I
    :cond_45
    :goto_45
    if-eqz v1, :cond_4a

    .line 1337
    invoke-virtual {v0, p2, v1}, Landroid/util/SparseArray;->append(ILjava/lang/Object;)V
    :try_end_4a
    .catchall {:try_start_1 .. :try_end_4a} :catchall_4c

    .line 1340
    .end local v2    # "device":Landroid/hardware/usb/UsbDevice;
    .end local v3    # "n":I
    :cond_4a
    monitor-exit p0

    return-object v1

    .line 1318
    .end local v0    # "intfs":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Landroid/hardware/usb/UsbInterface;>;"
    .end local v1    # "intf":Landroid/hardware/usb/UsbInterface;
    .end local p1    # "interface_id":I
    .end local p2    # "altsetting":I
    :catchall_4c
    move-exception p1

    monitor-exit p0

    goto :goto_50

    :goto_4f
    throw p1

    :goto_50
    goto :goto_4f
.end method

.method public getManufacture()Ljava/lang/String;
    .registers 2

    .line 1267
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mInfo:Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;

    iget-object v0, v0, Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;->manufacturer:Ljava/lang/String;

    return-object v0
.end method

.method public getProductId()I
    .registers 3

    .line 1250
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakDevice:Ljava/lang/ref/WeakReference;

    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/hardware/usb/UsbDevice;

    .line 1251
    .local v0, "device":Landroid/hardware/usb/UsbDevice;
    if-eqz v0, :cond_f

    invoke-virtual {v0}, Landroid/hardware/usb/UsbDevice;->getProductId()I

    move-result v1

    goto :goto_10

    :cond_f
    const/4 v1, 0x0

    :goto_10
    return v1
.end method

.method public getProductName()Ljava/lang/String;
    .registers 2

    .line 1275
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mInfo:Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;

    iget-object v0, v0, Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;->product:Ljava/lang/String;

    return-object v0
.end method

.method public declared-synchronized getRawDescriptors()[B
    .registers 2
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/IllegalStateException;
        }
    .end annotation

    monitor-enter p0

    .line 1232
    :try_start_1
    invoke-direct {p0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->checkConnection()V

    .line 1233
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mConnection:Landroid/hardware/usb/UsbDeviceConnection;

    invoke-virtual {v0}, Landroid/hardware/usb/UsbDeviceConnection;->getRawDescriptors()[B

    move-result-object v0
    :try_end_a
    .catchall {:try_start_1 .. :try_end_a} :catchall_c

    monitor-exit p0

    return-object v0

    .line 1231
    .end local p0    # "this":Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;
    :catchall_c
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public getSerial()Ljava/lang/String;
    .registers 2

    .line 1291
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mInfo:Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;

    iget-object v0, v0, Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;->serial:Ljava/lang/String;

    return-object v0
.end method

.method public getUSBMonitor()Lcom/serenegiant/usb/USBMonitor;
    .registers 2

    .line 1125
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakMonitor:Ljava/lang/ref/WeakReference;

    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/serenegiant/usb/USBMonitor;

    return-object v0
.end method

.method public getUsbVersion()Ljava/lang/String;
    .registers 2

    .line 1259
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mInfo:Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;

    iget-object v0, v0, Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;->usb_version:Ljava/lang/String;

    return-object v0
.end method

.method public getVenderId()I
    .registers 3

    .line 1241
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mWeakDevice:Ljava/lang/ref/WeakReference;

    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/hardware/usb/UsbDevice;

    .line 1242
    .local v0, "device":Landroid/hardware/usb/UsbDevice;
    if-eqz v0, :cond_f

    invoke-virtual {v0}, Landroid/hardware/usb/UsbDevice;->getVendorId()I

    move-result v1

    goto :goto_10

    :cond_f
    const/4 v1, 0x0

    :goto_10
    return v1
.end method

.method public getVersion()Ljava/lang/String;
    .registers 2

    .line 1283
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mInfo:Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;

    iget-object v0, v0, Lcom/serenegiant/usb/USBMonitor$UsbDeviceInfo;->version:Ljava/lang/String;

    return-object v0
.end method

.method public declared-synchronized releaseInterface(Landroid/hardware/usb/UsbInterface;)V
    .registers 6
    .param p1, "intf"    # Landroid/hardware/usb/UsbInterface;
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/IllegalStateException;
        }
    .end annotation

    monitor-enter p0

    .line 1362
    :try_start_1
    invoke-direct {p0}, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->checkConnection()V

    .line 1363
    iget-object v0, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mInterfaces:Landroid/util/SparseArray;

    invoke-virtual {p1}, Landroid/hardware/usb/UsbInterface;->getId()I

    move-result v1

    invoke-virtual {v0, v1}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/util/SparseArray;

    .line 1364
    .local v0, "intfs":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Landroid/hardware/usb/UsbInterface;>;"
    if-eqz v0, :cond_28

    .line 1365
    invoke-virtual {v0, p1}, Landroid/util/SparseArray;->indexOfValue(Ljava/lang/Object;)I

    move-result v1

    .line 1366
    .local v1, "index":I
    invoke-virtual {v0, v1}, Landroid/util/SparseArray;->removeAt(I)V

    .line 1367
    invoke-virtual {v0}, Landroid/util/SparseArray;->size()I

    move-result v2

    if-nez v2, :cond_28

    .line 1368
    iget-object v2, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mInterfaces:Landroid/util/SparseArray;

    invoke-virtual {p1}, Landroid/hardware/usb/UsbInterface;->getId()I

    move-result v3

    invoke-virtual {v2, v3}, Landroid/util/SparseArray;->remove(I)V

    .line 1371
    .end local v1    # "index":I
    .end local p0    # "this":Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;
    :cond_28
    iget-object v1, p0, Lcom/serenegiant/usb/USBMonitor$UsbControlBlock;->mConnection:Landroid/hardware/usb/UsbDeviceConnection;

    invoke-virtual {v1, p1}, Landroid/hardware/usb/UsbDeviceConnection;->releaseInterface(Landroid/hardware/usb/UsbInterface;)Z
    :try_end_2d
    .catchall {:try_start_1 .. :try_end_2d} :catchall_2f

    .line 1372
    monitor-exit p0

    return-void

    .line 1361
    .end local v0    # "intfs":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Landroid/hardware/usb/UsbInterface;>;"
    .end local p1    # "intf":Landroid/hardware/usb/UsbInterface;
    :catchall_2f
    move-exception p1

    monitor-exit p0

    throw p1
.end method