LegacyDfuImpl.smali
.class Lno/nordicsemi/android/dfu/LegacyDfuImpl;
.super Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;
.source "LegacyDfuImpl.java"
# static fields
.field protected static final DEFAULT_DFU_CONTROL_POINT_UUID:Ljava/util/UUID;
.field protected static final DEFAULT_DFU_PACKET_UUID:Ljava/util/UUID;
.field protected static final DEFAULT_DFU_SERVICE_UUID:Ljava/util/UUID;
.field protected static final DEFAULT_DFU_VERSION_UUID:Ljava/util/UUID;
.field protected static DFU_CONTROL_POINT_UUID:Ljava/util/UUID; = null
.field protected static DFU_PACKET_UUID:Ljava/util/UUID; = null
.field protected static DFU_SERVICE_UUID:Ljava/util/UUID; = null
.field private static final DFU_STATUS_SUCCESS:I = 0x1
.field protected static DFU_VERSION_UUID:Ljava/util/UUID; = null
.field private static final OP_CODE_ACTIVATE_AND_RESET:[B
.field private static final OP_CODE_ACTIVATE_AND_RESET_KEY:I = 0x5
.field private static final OP_CODE_INIT_DFU_PARAMS:[B
.field private static final OP_CODE_INIT_DFU_PARAMS_COMPLETE:[B
.field private static final OP_CODE_INIT_DFU_PARAMS_KEY:I = 0x2
.field private static final OP_CODE_INIT_DFU_PARAMS_START:[B
.field private static final OP_CODE_PACKET_RECEIPT_NOTIF_KEY:I = 0x11
.field private static final OP_CODE_PACKET_RECEIPT_NOTIF_REQ:[B
.field private static final OP_CODE_PACKET_RECEIPT_NOTIF_REQ_KEY:I = 0x8
.field private static final OP_CODE_RECEIVE_FIRMWARE_IMAGE:[B
.field private static final OP_CODE_RECEIVE_FIRMWARE_IMAGE_KEY:I = 0x3
.field private static final OP_CODE_RESET:[B
.field private static final OP_CODE_RESET_KEY:I = 0x6
.field private static final OP_CODE_RESPONSE_CODE_KEY:I = 0x10
.field private static final OP_CODE_START_DFU:[B
.field private static final OP_CODE_START_DFU_KEY:I = 0x1
.field private static final OP_CODE_VALIDATE:[B
.field private static final OP_CODE_VALIDATE_KEY:I = 0x4
# instance fields
.field private final mBluetoothCallback:Lno/nordicsemi/android/dfu/LegacyDfuImpl$LegacyBluetoothCallback;
.field private mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
.field private mImageSizeInProgress:Z
.field private mPacketCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
# direct methods
.method static constructor <clinit>()V
.registers 9
.prologue
const/4 v8, 0x3
const-wide v6, 0x1523785feabcd123L # 7.580602127171364E-207
const/4 v1, 0x2
const/4 v5, 0x1
const/4 v4, 0x0
.line 43
new-instance v0, Ljava/util/UUID;
const-wide v2, 0x15301212efdeL
invoke-direct {v0, v2, v3, v6, v7}, Ljava/util/UUID;-><init>(JJ)V
sput-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DEFAULT_DFU_SERVICE_UUID:Ljava/util/UUID;
.line 44
new-instance v0, Ljava/util/UUID;
const-wide v2, 0x15311212efdeL
invoke-direct {v0, v2, v3, v6, v7}, Ljava/util/UUID;-><init>(JJ)V
sput-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DEFAULT_DFU_CONTROL_POINT_UUID:Ljava/util/UUID;
.line 45
new-instance v0, Ljava/util/UUID;
const-wide v2, 0x15321212efdeL
invoke-direct {v0, v2, v3, v6, v7}, Ljava/util/UUID;-><init>(JJ)V
sput-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DEFAULT_DFU_PACKET_UUID:Ljava/util/UUID;
.line 46
new-instance v0, Ljava/util/UUID;
const-wide v2, 0x15341212efdeL
invoke-direct {v0, v2, v3, v6, v7}, Ljava/util/UUID;-><init>(JJ)V
sput-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DEFAULT_DFU_VERSION_UUID:Ljava/util/UUID;
.line 48
sget-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DEFAULT_DFU_SERVICE_UUID:Ljava/util/UUID;
sput-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DFU_SERVICE_UUID:Ljava/util/UUID;
.line 49
sget-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DEFAULT_DFU_CONTROL_POINT_UUID:Ljava/util/UUID;
sput-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DFU_CONTROL_POINT_UUID:Ljava/util/UUID;
.line 50
sget-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DEFAULT_DFU_PACKET_UUID:Ljava/util/UUID;
sput-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DFU_PACKET_UUID:Ljava/util/UUID;
.line 51
sget-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DEFAULT_DFU_VERSION_UUID:Ljava/util/UUID;
sput-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DFU_VERSION_UUID:Ljava/util/UUID;
.line 65
new-array v0, v1, [B
fill-array-data v0, :array_88
sput-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_START_DFU:[B
.line 66
new-array v0, v5, [B
aput-byte v1, v0, v4
sput-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_INIT_DFU_PARAMS:[B
.line 67
new-array v0, v1, [B
fill-array-data v0, :array_8e
sput-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_INIT_DFU_PARAMS_START:[B
.line 68
new-array v0, v1, [B
fill-array-data v0, :array_94
sput-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_INIT_DFU_PARAMS_COMPLETE:[B
.line 69
new-array v0, v5, [B
aput-byte v8, v0, v4
sput-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_RECEIVE_FIRMWARE_IMAGE:[B
.line 70
new-array v0, v5, [B
const/4 v1, 0x4
aput-byte v1, v0, v4
sput-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_VALIDATE:[B
.line 71
new-array v0, v5, [B
const/4 v1, 0x5
aput-byte v1, v0, v4
sput-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_ACTIVATE_AND_RESET:[B
.line 72
new-array v0, v5, [B
const/4 v1, 0x6
aput-byte v1, v0, v4
sput-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_RESET:[B
.line 74
new-array v0, v8, [B
fill-array-data v0, :array_9a
sput-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_PACKET_RECEIPT_NOTIF_REQ:[B
return-void
.line 65
nop
:array_88
.array-data 1
0x1t
0x0t
.end array-data
.line 67
nop
:array_8e
.array-data 1
0x2t
0x0t
.end array-data
.line 68
nop
:array_94
.array-data 1
0x2t
0x1t
.end array-data
.line 74
nop
:array_9a
.array-data 1
0x8t
0x0t
0x0t
.end array-data
.end method
.method constructor <init>(Landroid/content/Intent;Lno/nordicsemi/android/dfu/DfuBaseService;)V
.registers 4
.prologue
.line 126
invoke-direct {p0, p1, p2}, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;-><init>(Landroid/content/Intent;Lno/nordicsemi/android/dfu/DfuBaseService;)V
.line 84
new-instance v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl$LegacyBluetoothCallback;
invoke-direct {v0, p0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl$LegacyBluetoothCallback;-><init>(Lno/nordicsemi/android/dfu/LegacyDfuImpl;)V
iput-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mBluetoothCallback:Lno/nordicsemi/android/dfu/LegacyDfuImpl$LegacyBluetoothCallback;
.line 127
return-void
.end method
.method static synthetic access$000(Lno/nordicsemi/android/dfu/LegacyDfuImpl;)Z
.registers 2
.prologue
.line 41
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mImageSizeInProgress:Z
return v0
.end method
.method static synthetic access$002(Lno/nordicsemi/android/dfu/LegacyDfuImpl;Z)Z
.registers 2
.prologue
.line 41
iput-boolean p1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mImageSizeInProgress:Z
return p1
.end method
.method private getStatusCode([BI)I
.registers 7
.prologue
const/16 v3, 0x10
const/4 v2, 0x2
.line 564
if-eqz p1, :cond_1c
array-length v0, p1
const/4 v1, 0x3
if-ne v0, v1, :cond_1c
const/4 v0, 0x0
aget-byte v0, p1, v0
if-ne v0, v3, :cond_1c
const/4 v0, 0x1
aget-byte v0, p1, v0
if-ne v0, p2, :cond_1c
aget-byte v0, p1, v2
if-lez v0, :cond_1c
aget-byte v0, p1, v2
const/4 v1, 0x6
if-le v0, v1, :cond_24
.line 565
:cond_1c
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/UnknownResponseException;
const-string v1, "Invalid response received"
invoke-direct {v0, v1, p1, v3, p2}, Lno/nordicsemi/android/dfu/internal/exception/UnknownResponseException;-><init>(Ljava/lang/String;[BII)V
throw v0
.line 566
:cond_24
aget-byte v0, p1, v2
return v0
.end method
.method private readVersion(Landroid/bluetooth/BluetoothGattCharacteristic;)I
.registers 4
.prologue
const/4 v0, 0x0
.line 577
if-eqz p1, :cond_d
const/16 v1, 0x12
invoke-virtual {p1, v1, v0}, Landroid/bluetooth/BluetoothGattCharacteristic;->getIntValue(II)Ljava/lang/Integer;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I
move-result v0
:cond_d
return v0
.end method
.method private resetAndRestart(Landroid/bluetooth/BluetoothGatt;Landroid/content/Intent;)V
.registers 8
.prologue
const/4 v1, 0x1
const/4 v2, 0x0
.line 696
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v3, 0xf
const-string v4, "Last upload interrupted. Restarting device..."
invoke-virtual {v0, v3, v4}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 698
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;
const/4 v3, -0x5
invoke-virtual {v0, v3}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->setProgress(I)V
.line 699
const-string v0, "Sending Reset command (Op Code = 6)"
invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 700
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
sget-object v3, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_RESET:[B
invoke-direct {p0, v0, v3}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeOpCode(Landroid/bluetooth/BluetoothGattCharacteristic;[B)V
.line 701
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v3, 0xa
const-string v4, "Reset request sent"
invoke-virtual {v0, v3, v4}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 704
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
invoke-virtual {v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->waitUntilDisconnected()V
.line 705
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/4 v3, 0x5
const-string v4, "Disconnected by the remote device"
invoke-virtual {v0, v3, v4}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 707
sget-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->GENERIC_ATTRIBUTE_SERVICE_UUID:Ljava/util/UUID;
invoke-virtual {p1, v0}, Landroid/bluetooth/BluetoothGatt;->getService(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattService;
move-result-object v0
.line 708
if-eqz v0, :cond_63
sget-object v3, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->SERVICE_CHANGED_UUID:Ljava/util/UUID;
invoke-virtual {v0, v3}, Landroid/bluetooth/BluetoothGattService;->getCharacteristic(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattCharacteristic;
move-result-object v0
if-eqz v0, :cond_63
move v0, v1
.line 709
:goto_44
iget-object v3, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
if-nez v0, :cond_65
:goto_48
invoke-virtual {v3, p1, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->refreshDeviceCache(Landroid/bluetooth/BluetoothGatt;Z)V
.line 712
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
invoke-virtual {v0, p1}, Lno/nordicsemi/android/dfu/DfuBaseService;->close(Landroid/bluetooth/BluetoothGatt;)V
.line 714
const-string v0, "Restarting the service"
invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 715
new-instance v0, Landroid/content/Intent;
invoke-direct {v0}, Landroid/content/Intent;-><init>()V
.line 716
const/16 v1, 0x18
invoke-virtual {v0, p2, v1}, Landroid/content/Intent;->fillIn(Landroid/content/Intent;I)I
.line 717
invoke-virtual {p0, v0, v2}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->restartService(Landroid/content/Intent;Z)V
.line 718
return-void
:cond_63
move v0, v2
.line 708
goto :goto_44
:cond_65
move v1, v2
.line 709
goto :goto_48
.end method
.method private setNumberOfPackets([BI)V
.registers 5
.prologue
.line 551
const/4 v0, 0x1
int-to-byte v1, p2
aput-byte v1, p1, v0
.line 552
const/4 v0, 0x2
shr-int/lit8 v1, p2, 0x8
int-to-byte v1, v1
aput-byte v1, p1, v0
.line 553
return-void
.end method
.method private writeImageSize(Landroid/bluetooth/BluetoothGattCharacteristic;I)V
.registers 8
.prologue
const/4 v4, 0x1
const/4 v3, 0x0
.line 609
const/4 v0, 0x0
iput-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mReceivedData:[B
.line 610
iput v3, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mError:I
.line 611
iput-boolean v4, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mImageSizeInProgress:Z
.line 613
invoke-virtual {p1, v4}, Landroid/bluetooth/BluetoothGattCharacteristic;->setWriteType(I)V
.line 614
const/4 v0, 0x4
new-array v0, v0, [B
invoke-virtual {p1, v0}, Landroid/bluetooth/BluetoothGattCharacteristic;->setValue([B)Z
.line 615
const/16 v0, 0x14
invoke-virtual {p1, p2, v0, v3}, Landroid/bluetooth/BluetoothGattCharacteristic;->setValue(III)Z
.line 616
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Writing to characteristic "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p1}, Landroid/bluetooth/BluetoothGattCharacteristic;->getUuid()Ljava/util/UUID;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v4, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 617
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "gatt.writeCharacteristic("
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p1}, Landroid/bluetooth/BluetoothGattCharacteristic;->getUuid()Ljava/util/UUID;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, ")"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v3, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 618
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mGatt:Landroid/bluetooth/BluetoothGatt;
invoke-virtual {v0, p1}, Landroid/bluetooth/BluetoothGatt;->writeCharacteristic(Landroid/bluetooth/BluetoothGattCharacteristic;)Z
.line 622
:try_start_52
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mLock:Ljava/lang/Object;
monitor-enter v1
:try_end_55
.catch Ljava/lang/InterruptedException; {:try_start_52 .. :try_end_55} :catch_72
.line 623
:goto_55
:try_start_55
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mImageSizeInProgress:Z
if-eqz v0, :cond_65
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mConnected:Z
if-eqz v0, :cond_65
iget v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mError:I
if-nez v0, :cond_65
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mAborted:Z
if-eqz v0, :cond_69
:cond_65
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mPaused:Z
if-eqz v0, :cond_82
.line 624
:cond_69
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mLock:Ljava/lang/Object;
invoke-virtual {v0}, Ljava/lang/Object;->wait()V
goto :goto_55
.line 625
:catchall_6f
move-exception v0
monitor-exit v1
:try_end_71
.catchall {:try_start_55 .. :try_end_71} :catchall_6f
:try_start_71
throw v0
:try_end_72
.catch Ljava/lang/InterruptedException; {:try_start_71 .. :try_end_72} :catch_72
.line 626
:catch_72
move-exception v0
.line 627
const-string v1, "Sleeping interrupted"
invoke-virtual {p0, v1, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->loge(Ljava/lang/String;Ljava/lang/Throwable;)V
.line 629
:goto_78
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mAborted:Z
if-eqz v0, :cond_84
.line 630
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/UploadAbortedException;
invoke-direct {v0}, Lno/nordicsemi/android/dfu/internal/exception/UploadAbortedException;-><init>()V
throw v0
.line 625
:cond_82
:try_start_82
monitor-exit v1
:try_end_83
.catchall {:try_start_82 .. :try_end_83} :catchall_6f
goto :goto_78
.line 631
:cond_84
iget v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mError:I
if-eqz v0, :cond_92
.line 632
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/DfuException;
const-string v1, "Unable to write Image Size"
iget v2, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mError:I
invoke-direct {v0, v1, v2}, Lno/nordicsemi/android/dfu/internal/exception/DfuException;-><init>(Ljava/lang/String;I)V
throw v0
.line 633
:cond_92
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mConnected:Z
if-nez v0, :cond_9e
.line 634
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/DeviceDisconnectedException;
const-string v1, "Unable to write Image Size: device disconnected"
invoke-direct {v0, v1}, Lno/nordicsemi/android/dfu/internal/exception/DeviceDisconnectedException;-><init>(Ljava/lang/String;)V
throw v0
.line 635
:cond_9e
return-void
.end method
.method private writeImageSize(Landroid/bluetooth/BluetoothGattCharacteristic;III)V
.registers 10
.prologue
const/16 v1, 0x14
const/4 v4, 0x1
const/4 v3, 0x0
.line 657
const/4 v0, 0x0
iput-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mReceivedData:[B
.line 658
iput v3, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mError:I
.line 659
iput-boolean v4, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mImageSizeInProgress:Z
.line 661
invoke-virtual {p1, v4}, Landroid/bluetooth/BluetoothGattCharacteristic;->setWriteType(I)V
.line 662
const/16 v0, 0xc
new-array v0, v0, [B
invoke-virtual {p1, v0}, Landroid/bluetooth/BluetoothGattCharacteristic;->setValue([B)Z
.line 663
invoke-virtual {p1, p2, v1, v3}, Landroid/bluetooth/BluetoothGattCharacteristic;->setValue(III)Z
.line 664
const/4 v0, 0x4
invoke-virtual {p1, p3, v1, v0}, Landroid/bluetooth/BluetoothGattCharacteristic;->setValue(III)Z
.line 665
const/16 v0, 0x8
invoke-virtual {p1, p4, v1, v0}, Landroid/bluetooth/BluetoothGattCharacteristic;->setValue(III)Z
.line 666
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Writing to characteristic "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p1}, Landroid/bluetooth/BluetoothGattCharacteristic;->getUuid()Ljava/util/UUID;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v4, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 667
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "gatt.writeCharacteristic("
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p1}, Landroid/bluetooth/BluetoothGattCharacteristic;->getUuid()Ljava/util/UUID;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, ")"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v3, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 668
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mGatt:Landroid/bluetooth/BluetoothGatt;
invoke-virtual {v0, p1}, Landroid/bluetooth/BluetoothGatt;->writeCharacteristic(Landroid/bluetooth/BluetoothGattCharacteristic;)Z
.line 672
:try_start_5c
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mLock:Ljava/lang/Object;
monitor-enter v1
:try_end_5f
.catch Ljava/lang/InterruptedException; {:try_start_5c .. :try_end_5f} :catch_7c
.line 673
:goto_5f
:try_start_5f
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mImageSizeInProgress:Z
if-eqz v0, :cond_6f
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mConnected:Z
if-eqz v0, :cond_6f
iget v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mError:I
if-nez v0, :cond_6f
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mAborted:Z
if-eqz v0, :cond_73
:cond_6f
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mPaused:Z
if-eqz v0, :cond_8c
.line 674
:cond_73
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mLock:Ljava/lang/Object;
invoke-virtual {v0}, Ljava/lang/Object;->wait()V
goto :goto_5f
.line 675
:catchall_79
move-exception v0
monitor-exit v1
:try_end_7b
.catchall {:try_start_5f .. :try_end_7b} :catchall_79
:try_start_7b
throw v0
:try_end_7c
.catch Ljava/lang/InterruptedException; {:try_start_7b .. :try_end_7c} :catch_7c
.line 676
:catch_7c
move-exception v0
.line 677
const-string v1, "Sleeping interrupted"
invoke-virtual {p0, v1, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->loge(Ljava/lang/String;Ljava/lang/Throwable;)V
.line 679
:goto_82
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mAborted:Z
if-eqz v0, :cond_8e
.line 680
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/UploadAbortedException;
invoke-direct {v0}, Lno/nordicsemi/android/dfu/internal/exception/UploadAbortedException;-><init>()V
throw v0
.line 675
:cond_8c
:try_start_8c
monitor-exit v1
:try_end_8d
.catchall {:try_start_8c .. :try_end_8d} :catchall_79
goto :goto_82
.line 681
:cond_8e
iget v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mError:I
if-eqz v0, :cond_9c
.line 682
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/DfuException;
const-string v1, "Unable to write Image Sizes"
iget v2, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mError:I
invoke-direct {v0, v1, v2}, Lno/nordicsemi/android/dfu/internal/exception/DfuException;-><init>(Ljava/lang/String;I)V
throw v0
.line 683
:cond_9c
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mConnected:Z
if-nez v0, :cond_a8
.line 684
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/DeviceDisconnectedException;
const-string v1, "Unable to write Image Sizes: device disconnected"
invoke-direct {v0, v1}, Lno/nordicsemi/android/dfu/internal/exception/DeviceDisconnectedException;-><init>(Ljava/lang/String;)V
throw v0
.line 685
:cond_a8
return-void
.end method
.method private writeOpCode(Landroid/bluetooth/BluetoothGattCharacteristic;[B)V
.registers 6
.prologue
const/4 v0, 0x0
.line 593
aget-byte v1, p2, v0
const/4 v2, 0x6
if-eq v1, v2, :cond_b
aget-byte v1, p2, v0
const/4 v2, 0x5
if-ne v1, v2, :cond_c
:cond_b
const/4 v0, 0x1
.line 594
:cond_c
invoke-virtual {p0, p1, p2, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeOpCode(Landroid/bluetooth/BluetoothGattCharacteristic;[BZ)V
.line 595
return-void
.end method
# virtual methods
.method protected getControlPointCharacteristicUUID()Ljava/util/UUID;
.registers 2
.prologue
.line 146
sget-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DFU_CONTROL_POINT_UUID:Ljava/util/UUID;
return-object v0
.end method
.method protected getDfuServiceUUID()Ljava/util/UUID;
.registers 2
.prologue
.line 156
sget-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DFU_SERVICE_UUID:Ljava/util/UUID;
return-object v0
.end method
.method public getGattCallback()Lno/nordicsemi/android/dfu/BaseCustomDfuImpl$BaseCustomBluetoothCallback;
.registers 2
.prologue
.line 141
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mBluetoothCallback:Lno/nordicsemi/android/dfu/LegacyDfuImpl$LegacyBluetoothCallback;
return-object v0
.end method
.method public bridge synthetic getGattCallback()Lno/nordicsemi/android/dfu/DfuCallback$DfuGattCallback;
.registers 2
.prologue
.line 41
invoke-virtual {p0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->getGattCallback()Lno/nordicsemi/android/dfu/BaseCustomDfuImpl$BaseCustomBluetoothCallback;
move-result-object v0
return-object v0
.end method
.method protected getPacketCharacteristicUUID()Ljava/util/UUID;
.registers 2
.prologue
.line 151
sget-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DFU_PACKET_UUID:Ljava/util/UUID;
return-object v0
.end method
.method public isClientCompatible(Landroid/content/Intent;Landroid/bluetooth/BluetoothGatt;)Z
.registers 6
.prologue
const/4 v0, 0x0
.line 131
sget-object v1, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DFU_SERVICE_UUID:Ljava/util/UUID;
invoke-virtual {p2, v1}, Landroid/bluetooth/BluetoothGatt;->getService(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattService;
move-result-object v1
.line 132
if-nez v1, :cond_a
.line 136
:cond_9
:goto_9
return v0
.line 134
:cond_a
sget-object v2, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DFU_CONTROL_POINT_UUID:Ljava/util/UUID;
invoke-virtual {v1, v2}, Landroid/bluetooth/BluetoothGattService;->getCharacteristic(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattCharacteristic;
move-result-object v2
iput-object v2, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
.line 135
sget-object v2, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DFU_PACKET_UUID:Ljava/util/UUID;
invoke-virtual {v1, v2}, Landroid/bluetooth/BluetoothGattService;->getCharacteristic(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattCharacteristic;
move-result-object v1
iput-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mPacketCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
.line 136
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
if-eqz v1, :cond_9
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mPacketCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
if-eqz v1, :cond_9
const/4 v0, 0x1
goto :goto_9
.end method
.method public performDfu(Landroid/content/Intent;)V
.registers 15
.prologue
.line 161
const-string v0, "Legacy DFU bootloader found"
invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logw(Ljava/lang/String;)V
.line 162
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;
const/4 v1, -0x2
invoke-virtual {v0, v1}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->setProgress(I)V
.line 168
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v1, 0x3e8
invoke-virtual {v0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->waitFor(I)V
.line 171
iget-object v5, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mGatt:Landroid/bluetooth/BluetoothGatt;
.line 177
sget-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DFU_SERVICE_UUID:Ljava/util/UUID;
invoke-virtual {v5, v0}, Landroid/bluetooth/BluetoothGatt;->getService(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattService;
move-result-object v0
sget-object v1, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DFU_VERSION_UUID:Ljava/util/UUID;
invoke-virtual {v0, v1}, Landroid/bluetooth/BluetoothGattService;->getCharacteristic(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattCharacteristic;
move-result-object v0
.line 178
invoke-direct {p0, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->readVersion(Landroid/bluetooth/BluetoothGattCharacteristic;)I
move-result v6
.line 185
const/4 v0, 0x5
if-lt v6, v0, :cond_4e
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mInitPacketStream:Ljava/io/InputStream;
if-nez v0, :cond_4e
.line 186
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "Init packet not set for the DFU Bootloader version "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logw(Ljava/lang/String;)V
.line 187
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v1, 0x14
const-string v2, "The Init packet is required by this version DFU Bootloader"
invoke-virtual {v0, v1, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 188
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v1, 0x100b
invoke-virtual {v0, v5, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->terminateConnection(Landroid/bluetooth/BluetoothGatt;I)V
.line 542
:goto_4d
return-void
.line 194
:cond_4e
:try_start_4e
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
const/4 v1, 0x1
invoke-virtual {p0, v0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->enableCCCD(Landroid/bluetooth/BluetoothGattCharacteristic;I)V
.line 195
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v1, 0xa
const-string v2, "Notifications enabled"
invoke-virtual {v0, v1, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 200
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v1, 0x3e8
invoke-virtual {v0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->waitFor(I)V
.line 237
iget v3, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mFileType:I
.line 238
and-int/lit8 v0, v3, 0x1
if-lez v0, :cond_cd
iget v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mImageSizeInBytes:I
.line 239
:goto_6c
and-int/lit8 v0, v3, 0x2
if-lez v0, :cond_cf
iget v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mImageSizeInBytes:I
.line 240
:goto_72
and-int/lit8 v2, v3, 0x4
if-lez v2, :cond_d1
iget v2, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mImageSizeInBytes:I
.line 242
:goto_78
iget-object v4, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mFirmwareStream:Ljava/io/InputStream;
instance-of v4, v4, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;
if-eqz v4, :cond_6eb
.line 243
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mFirmwareStream:Ljava/io/InputStream;
check-cast v0, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;
.line 244
invoke-virtual {v0}, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;->isSecureDfuRequired()Z
move-result v1
if-eqz v1, :cond_d3
.line 245
const-string v0, "Secure DFU is required to upload selected firmware"
invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->loge(Ljava/lang/String;)V
.line 246
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v1, 0x14
const-string v2, "The device does not support given firmware."
invoke-virtual {v0, v1, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 247
const-string v0, "Sending Reset command (Op Code = 6)"
invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 248
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
sget-object v1, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_RESET:[B
invoke-direct {p0, v0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeOpCode(Landroid/bluetooth/BluetoothGattCharacteristic;[B)V
.line 249
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v1, 0xa
const-string v2, "Reset request sent"
invoke-virtual {v0, v1, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 250
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v1, 0x1003
invoke-virtual {v0, v5, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->terminateConnection(Landroid/bluetooth/BluetoothGatt;I)V
:try_end_b2
.catch Lno/nordicsemi/android/dfu/internal/exception/UploadAbortedException; {:try_start_4e .. :try_end_b2} :catch_b3
.catch Lno/nordicsemi/android/dfu/internal/exception/UnknownResponseException; {:try_start_4e .. :try_end_b2} :catch_1cf
.catch Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException; {:try_start_4e .. :try_end_b2} :catch_299
goto :goto_4d
.line 516
:catch_b3
move-exception v0
.line 517
const-string v1, "Sending Reset command (Op Code = 6)"
invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 518
const/4 v1, 0x0
iput-boolean v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mAborted:Z
.line 519
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
sget-object v2, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_RESET:[B
invoke-direct {p0, v1, v2}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeOpCode(Landroid/bluetooth/BluetoothGattCharacteristic;[B)V
.line 520
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v2, 0xa
const-string v3, "Reset request sent"
invoke-virtual {v1, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 522
throw v0
.line 238
:cond_cd
const/4 v1, 0x0
goto :goto_6c
.line 239
:cond_cf
const/4 v0, 0x0
goto :goto_72
.line 240
:cond_d1
const/4 v2, 0x0
goto :goto_78
.line 253
:cond_d3
:try_start_d3
invoke-virtual {v0}, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;->softDeviceImageSize()I
move-result v2
.line 254
invoke-virtual {v0}, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;->bootloaderImageSize()I
move-result v1
.line 255
invoke-virtual {v0}, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;->applicationImageSize()I
:try_end_de
.catch Lno/nordicsemi/android/dfu/internal/exception/UploadAbortedException; {:try_start_d3 .. :try_end_de} :catch_b3
.catch Lno/nordicsemi/android/dfu/internal/exception/UnknownResponseException; {:try_start_d3 .. :try_end_de} :catch_1cf
.catch Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException; {:try_start_d3 .. :try_end_de} :catch_299
move-result v0
.line 258
:goto_df
const/4 v4, 0x1
.line 260
:try_start_e0
sget-object v7, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_START_DFU:[B
const/4 v8, 0x1
int-to-byte v9, v3
aput-byte v9, v7, v8
.line 263
new-instance v7, Ljava/lang/StringBuilder;
const-string v8, "Sending Start DFU command (Op Code = 1, Upload Mode = "
invoke-direct {v7, v8}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v7, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v7
const-string v8, ")"
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v7
invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v7
invoke-virtual {p0, v7}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 264
iget-object v7, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
sget-object v8, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_START_DFU:[B
invoke-direct {p0, v7, v8}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeOpCode(Landroid/bluetooth/BluetoothGattCharacteristic;[B)V
.line 265
iget-object v7, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v8, 0xa
new-instance v9, Ljava/lang/StringBuilder;
const-string v10, "DFU Start sent (Op Code = 1, Upload Mode = "
invoke-direct {v9, v10}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v9, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v9
const-string v10, ")"
invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v9
invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v9
invoke-virtual {v7, v8, v9}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 268
new-instance v7, Ljava/lang/StringBuilder;
const-string v8, "Sending image size array to DFU Packet ("
invoke-direct {v7, v8}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v7, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v7
const-string v8, "b, "
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v7
invoke-virtual {v7, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v7
const-string v8, "b, "
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v7
invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v7
const-string v8, "b)"
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v7
invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v7
invoke-virtual {p0, v7}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 269
iget-object v7, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mPacketCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
invoke-direct {p0, v7, v2, v1, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeImageSize(Landroid/bluetooth/BluetoothGattCharacteristic;III)V
.line 270
iget-object v7, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v8, 0xa
new-instance v9, Ljava/lang/StringBuilder;
const-string v10, "Firmware image size sent ("
invoke-direct {v9, v10}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v9, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v9
const-string v10, "b, "
invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v9
invoke-virtual {v9, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v9
const-string v10, "b, "
invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v9
invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v9, "b)"
invoke-virtual {v0, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v7, v8, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 273
invoke-virtual {p0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->readNotificationResponse()[B
move-result-object v0
.line 285
const/4 v7, 0x1
invoke-direct {p0, v0, v7}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->getStatusCode([BI)I
move-result v7
.line 286
iget-object v8, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v9, 0xa
new-instance v10, Ljava/lang/StringBuilder;
const-string v11, "Response received (Op Code = "
invoke-direct {v10, v11}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
const/4 v11, 0x1
aget-byte v0, v0, v11
invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v10, " Status = "
invoke-virtual {v0, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v10, ")"
invoke-virtual {v0, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v8, v9, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 291
const/4 v0, 0x2
if-ne v7, v0, :cond_200
.line 292
invoke-direct {p0, v5, p1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->resetAndRestart(Landroid/bluetooth/BluetoothGatt;Landroid/content/Intent;)V
:try_end_1ba
.catch Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException; {:try_start_e0 .. :try_end_1ba} :catch_1bc
.catch Lno/nordicsemi/android/dfu/internal/exception/UploadAbortedException; {:try_start_e0 .. :try_end_1ba} :catch_b3
.catch Lno/nordicsemi/android/dfu/internal/exception/UnknownResponseException; {:try_start_e0 .. :try_end_1ba} :catch_1cf
goto/16 :goto_4d
.line 297
:catch_1bc
move-exception v0
.line 299
:try_start_1bd
invoke-virtual {v0}, Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException;->getErrorNumber()I
move-result v7
const/4 v8, 0x3
if-eq v7, v8, :cond_2f7
.line 300
throw v0
:try_end_1c5
.catch Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException; {:try_start_1bd .. :try_end_1c5} :catch_1c5
.catch Lno/nordicsemi/android/dfu/internal/exception/UploadAbortedException; {:try_start_1bd .. :try_end_1c5} :catch_b3
.catch Lno/nordicsemi/android/dfu/internal/exception/UnknownResponseException; {:try_start_1bd .. :try_end_1c5} :catch_1cf
.line 348
:catch_1c5
move-exception v0
move v1, v3
.line 349
:try_start_1c7
invoke-virtual {v0}, Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException;->getErrorNumber()I
move-result v2
const/4 v3, 0x3
if-eq v2, v3, :cond_401
.line 350
throw v0
:try_end_1cf
.catch Lno/nordicsemi/android/dfu/internal/exception/UploadAbortedException; {:try_start_1c7 .. :try_end_1cf} :catch_b3
.catch Lno/nordicsemi/android/dfu/internal/exception/UnknownResponseException; {:try_start_1c7 .. :try_end_1cf} :catch_1cf
.catch Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException; {:try_start_1c7 .. :try_end_1cf} :catch_299
.line 523
:catch_1cf
move-exception v0
.line 525
invoke-virtual {v0}, Lno/nordicsemi/android/dfu/internal/exception/UnknownResponseException;->getMessage()Ljava/lang/String;
move-result-object v1
invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->loge(Ljava/lang/String;)V
.line 526
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v2, 0x14
invoke-virtual {v0}, Lno/nordicsemi/android/dfu/internal/exception/UnknownResponseException;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-virtual {v1, v2, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 528
const-string v0, "Sending Reset command (Op Code = 6)"
invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 529
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
sget-object v1, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_RESET:[B
invoke-direct {p0, v0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeOpCode(Landroid/bluetooth/BluetoothGattCharacteristic;[B)V
.line 530
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v1, 0xa
const-string v2, "Reset request sent"
invoke-virtual {v0, v1, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 531
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v1, 0x1008
invoke-virtual {v0, v5, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->terminateConnection(Landroid/bluetooth/BluetoothGatt;I)V
goto/16 :goto_4d
.line 295
:cond_200
const/4 v0, 0x1
if-eq v7, v0, :cond_20b
.line 296
:try_start_203
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException;
const-string v8, "Starting DFU failed"
invoke-direct {v0, v8, v7}, Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException;-><init>(Ljava/lang/String;I)V
throw v0
:try_end_20b
.catch Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException; {:try_start_203 .. :try_end_20b} :catch_1bc
.catch Lno/nordicsemi/android/dfu/internal/exception/UploadAbortedException; {:try_start_203 .. :try_end_20b} :catch_b3
.catch Lno/nordicsemi/android/dfu/internal/exception/UnknownResponseException; {:try_start_203 .. :try_end_20b} :catch_1cf
:cond_20b
move v0, v4
.line 413
:cond_20c
:goto_20c
:try_start_20c
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mInitPacketStream:Ljava/io/InputStream;
if-eqz v1, :cond_4e6
.line 414
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v2, 0xa
const-string v3, "Writing Initialize DFU Parameters..."
invoke-virtual {v1, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 416
if-eqz v0, :cond_4b8
.line 417
const-string v1, "Sending the Initialize DFU Parameters START (Op Code = 2, Value = 0)"
invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 418
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
sget-object v2, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_INIT_DFU_PARAMS_START:[B
invoke-direct {p0, v1, v2}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeOpCode(Landroid/bluetooth/BluetoothGattCharacteristic;[B)V
.line 420
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Sending "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget v2, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mInitPacketSizeInBytes:I
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " bytes of init packet"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 421
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mPacketCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
const/4 v2, 0x0
invoke-virtual {p0, v1, v2}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeInitData(Landroid/bluetooth/BluetoothGattCharacteristic;Ljava/util/zip/CRC32;)V
.line 423
const-string v1, "Sending the Initialize DFU Parameters COMPLETE (Op Code = 2, Value = 1)"
invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 424
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
sget-object v2, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_INIT_DFU_PARAMS_COMPLETE:[B
invoke-direct {p0, v1, v2}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeOpCode(Landroid/bluetooth/BluetoothGattCharacteristic;[B)V
.line 425
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v2, 0xa
const-string v3, "Initialize DFU Parameters completed"
invoke-virtual {v1, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 437
:goto_25c
invoke-virtual {p0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->readNotificationResponse()[B
move-result-object v1
.line 438
const/4 v2, 0x2
invoke-direct {p0, v1, v2}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->getStatusCode([BI)I
move-result v2
.line 439
iget-object v3, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v4, 0xa
new-instance v7, Ljava/lang/StringBuilder;
const-string v8, "Response received (Op Code = "
invoke-direct {v7, v8}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
const/4 v8, 0x1
aget-byte v1, v1, v8
invoke-virtual {v7, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
const-string v7, ", Status = "
invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
const-string v7, ")"
invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v3, v4, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 440
const/4 v1, 0x1
if-eq v2, v1, :cond_4e6
.line 441
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException;
const-string v1, "Device returned error after sending init packet"
invoke-direct {v0, v1, v2}, Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException;-><init>(Ljava/lang/String;I)V
throw v0
:try_end_299
.catch Lno/nordicsemi/android/dfu/internal/exception/UploadAbortedException; {:try_start_20c .. :try_end_299} :catch_b3
.catch Lno/nordicsemi/android/dfu/internal/exception/UnknownResponseException; {:try_start_20c .. :try_end_299} :catch_1cf
.catch Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException; {:try_start_20c .. :try_end_299} :catch_299
.line 532
:catch_299
move-exception v0
.line 533
invoke-virtual {v0}, Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException;->getErrorNumber()I
move-result v1
or-int/lit16 v1, v1, 0x100
.line 534
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v0}, Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v2, ": "
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-static {v1}, Lno/nordicsemi/android/a/b;->fm(I)Ljava/lang/String;
move-result-object v2
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->loge(Ljava/lang/String;)V
.line 535
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v2, 0x14
const-string v3, "Remote DFU error: %s"
const/4 v4, 0x1
new-array v4, v4, [Ljava/lang/Object;
const/4 v6, 0x0
invoke-static {v1}, Lno/nordicsemi/android/a/b;->fm(I)Ljava/lang/String;
move-result-object v7
aput-object v7, v4, v6
invoke-static {v3, v4}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object v3
invoke-virtual {v0, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 537
const-string v0, "Sending Reset command (Op Code = 6)"
invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 538
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
sget-object v2, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_RESET:[B
invoke-direct {p0, v0, v2}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeOpCode(Landroid/bluetooth/BluetoothGattCharacteristic;[B)V
.line 539
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v2, 0xa
const-string v3, "Reset request sent"
invoke-virtual {v0, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 540
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
or-int/lit16 v1, v1, 0x2000
invoke-virtual {v0, v5, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->terminateConnection(Landroid/bluetooth/BluetoothGatt;I)V
goto/16 :goto_4d
.line 304
:cond_2f7
and-int/lit8 v7, v3, 0x4
if-lez v7, :cond_400
and-int/lit8 v7, v3, 0x3
if-lez v7, :cond_400
.line 306
const/4 v0, 0x0
:try_start_300
iput-boolean v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mRemoteErrorOccurred:Z
.line 308
const-string v0, "DFU target does not support (SD/BL)+App update"
invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logw(Ljava/lang/String;)V
.line 309
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v7, 0xf
const-string v8, "DFU target does not support (SD/BL)+App update"
invoke-virtual {v0, v7, v8}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 311
and-int/lit8 v3, v3, -0x5
.line 312
iput v3, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mFileType:I
.line 313
sget-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_START_DFU:[B
const/4 v7, 0x1
int-to-byte v8, v3
aput-byte v8, v0, v7
.line 314
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;
const/4 v7, 0x2
invoke-virtual {v0, v7}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->setTotalPart(I)Lno/nordicsemi/android/dfu/DfuProgressInfo;
.line 317
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mFirmwareStream:Ljava/io/InputStream;
check-cast v0, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;
.line 318
invoke-virtual {v0, v3}, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;->setContentType(I)I
.line 322
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/4 v7, 0x1
const-string v8, "Sending only SD/BL"
invoke-virtual {v0, v7, v8}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 323
new-instance v0, Ljava/lang/StringBuilder;
const-string v7, "Resending Start DFU command (Op Code = 1, Upload Mode = "
invoke-direct {v0, v7}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v7, ")"
invoke-virtual {v0, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 324
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
sget-object v7, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_START_DFU:[B
invoke-direct {p0, v0, v7}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeOpCode(Landroid/bluetooth/BluetoothGattCharacteristic;[B)V
.line 325
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v7, 0xa
new-instance v8, Ljava/lang/StringBuilder;
const-string v9, "DFU Start sent (Op Code = 1, Upload Mode = "
invoke-direct {v8, v9}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v8, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v8
const-string v9, ")"
invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v8
invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v8
invoke-virtual {v0, v7, v8}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 328
new-instance v0, Ljava/lang/StringBuilder;
const-string v7, "Sending image size array to DFU Packet: ["
invoke-direct {v0, v7}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v7, "b, "
invoke-virtual {v0, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v7, "b, 0b]"
invoke-virtual {v0, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 329
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mPacketCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
const/4 v7, 0x0
invoke-direct {p0, v0, v2, v1, v7}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeImageSize(Landroid/bluetooth/BluetoothGattCharacteristic;III)V
.line 330
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v7, 0xa
new-instance v8, Ljava/lang/StringBuilder;
const-string v9, "Firmware image size sent ["
invoke-direct {v8, v9}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v8, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v2
const-string v8, "b, "
invoke-virtual {v2, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, "b, 0b]"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v7, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 333
invoke-virtual {p0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->readNotificationResponse()[B
move-result-object v0
.line 334
const/4 v1, 0x1
invoke-direct {p0, v0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->getStatusCode([BI)I
move-result v1
.line 335
iget-object v2, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v7, 0xa
new-instance v8, Ljava/lang/StringBuilder;
const-string v9, "Response received (Op Code = "
invoke-direct {v8, v9}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
const/4 v9, 0x1
aget-byte v0, v0, v9
invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v8, " Status = "
invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v8, ")"
invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v7, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 340
const/4 v0, 0x2
if-ne v1, v0, :cond_3f2
.line 341
invoke-direct {p0, v5, p1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->resetAndRestart(Landroid/bluetooth/BluetoothGatt;Landroid/content/Intent;)V
goto/16 :goto_4d
.line 344
:cond_3f2
const/4 v0, 0x1
if-eq v1, v0, :cond_3fd
.line 345
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException;
const-string v2, "Starting DFU failed"
invoke-direct {v0, v2, v1}, Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException;-><init>(Ljava/lang/String;I)V
throw v0
:cond_3fd
move v0, v4
.line 346
goto/16 :goto_20c
.line 347
:cond_400
throw v0
:try_end_401
.catch Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException; {:try_start_300 .. :try_end_401} :catch_1c5
.catch Lno/nordicsemi/android/dfu/internal/exception/UploadAbortedException; {:try_start_300 .. :try_end_401} :catch_b3
.catch Lno/nordicsemi/android/dfu/internal/exception/UnknownResponseException; {:try_start_300 .. :try_end_401} :catch_1cf
.line 353
:cond_401
const/4 v2, 0x4
if-ne v1, v2, :cond_4b7
.line 355
const/4 v0, 0x0
:try_start_405
iput-boolean v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mRemoteErrorOccurred:Z
.line 356
const/4 v0, 0x0
.line 359
const-string v1, "DFU target does not support DFU v.2"
invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logw(Ljava/lang/String;)V
.line 360
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v2, 0xf
const-string v3, "DFU target does not support DFU v.2"
invoke-virtual {v1, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 363
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/4 v2, 0x1
const-string v3, "Switching to DFU v.1"
invoke-virtual {v1, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 364
const-string v1, "Resending Start DFU command (Op Code = 1)"
invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 365
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
sget-object v2, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_START_DFU:[B
invoke-direct {p0, v1, v2}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeOpCode(Landroid/bluetooth/BluetoothGattCharacteristic;[B)V
.line 366
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v2, 0xa
const-string v3, "DFU Start sent (Op Code = 1)"
invoke-virtual {v1, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 369
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Sending application image size to DFU Packet: "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget v2, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mImageSizeInBytes:I
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " bytes"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 370
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mPacketCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
iget v2, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mImageSizeInBytes:I
invoke-direct {p0, v1, v2}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeImageSize(Landroid/bluetooth/BluetoothGattCharacteristic;I)V
.line 371
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v2, 0xa
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "Firmware image size sent ("
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget v4, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mImageSizeInBytes:I
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v3
const-string v4, " bytes)"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-virtual {v1, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 374
invoke-virtual {p0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->readNotificationResponse()[B
move-result-object v1
.line 375
const/4 v2, 0x1
invoke-direct {p0, v1, v2}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->getStatusCode([BI)I
move-result v2
.line 376
iget-object v3, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v4, 0xa
new-instance v7, Ljava/lang/StringBuilder;
const-string v8, "Response received (Op Code = "
invoke-direct {v7, v8}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
const/4 v8, 0x1
aget-byte v1, v1, v8
invoke-virtual {v7, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
const-string v7, ", Status = "
invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
const-string v7, ")"
invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v3, v4, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 381
const/4 v1, 0x2
if-ne v2, v1, :cond_4ac
.line 382
invoke-direct {p0, v5, p1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->resetAndRestart(Landroid/bluetooth/BluetoothGatt;Landroid/content/Intent;)V
goto/16 :goto_4d
.line 385
:cond_4ac
const/4 v1, 0x1
if-eq v2, v1, :cond_20c
.line 386
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException;
const-string v1, "Starting DFU failed"
invoke-direct {v0, v1, v2}, Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException;-><init>(Ljava/lang/String;I)V
throw v0
.line 388
:cond_4b7
throw v0
.line 429
:cond_4b8
const-string v1, "Sending the Initialize DFU Parameters (Op Code = 2)"
invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 430
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
sget-object v2, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_INIT_DFU_PARAMS:[B
invoke-direct {p0, v1, v2}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeOpCode(Landroid/bluetooth/BluetoothGattCharacteristic;[B)V
.line 432
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Sending "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget v2, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mInitPacketSizeInBytes:I
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " bytes of init packet"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 433
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mPacketCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
const/4 v2, 0x0
invoke-virtual {p0, v1, v2}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeInitData(Landroid/bluetooth/BluetoothGattCharacteristic;Ljava/util/zip/CRC32;)V
goto/16 :goto_25c
.line 448
:cond_4e6
if-nez v0, :cond_4f2
iget v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mPacketsBeforeNotification:I
if-lez v0, :cond_5de
iget v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mPacketsBeforeNotification:I
const/16 v1, 0xa
if-gt v0, v1, :cond_5de
:cond_4f2
iget v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mPacketsBeforeNotification:I
.line 449
:goto_4f4
if-lez v0, :cond_536
.line 450
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Sending the number of packets before notifications (Op Code = 8, Value = "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, ")"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 451
sget-object v1, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_PACKET_RECEIPT_NOTIF_REQ:[B
invoke-direct {p0, v1, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->setNumberOfPackets([BI)V
.line 452
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
sget-object v2, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_PACKET_RECEIPT_NOTIF_REQ:[B
invoke-direct {p0, v1, v2}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeOpCode(Landroid/bluetooth/BluetoothGattCharacteristic;[B)V
.line 453
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v2, 0xa
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "Packet Receipt Notif Req (Op Code = 8) sent (Value = "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v3, ")"
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v1, v2, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 457
:cond_536
const-string v0, "Sending Receive Firmware Image request (Op Code = 3)"
invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 458
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
sget-object v1, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_RECEIVE_FIRMWARE_IMAGE:[B
invoke-direct {p0, v0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeOpCode(Landroid/bluetooth/BluetoothGattCharacteristic;[B)V
.line 459
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v1, 0xa
const-string v2, "Receive Firmware Image request sent"
invoke-virtual {v0, v1, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 462
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v0
.line 463
iget-object v2, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;
const/4 v3, 0x0
invoke-virtual {v2, v3}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->setBytesSent(I)V
:try_end_555
.catch Lno/nordicsemi/android/dfu/internal/exception/UploadAbortedException; {:try_start_405 .. :try_end_555} :catch_b3
.catch Lno/nordicsemi/android/dfu/internal/exception/UnknownResponseException; {:try_start_405 .. :try_end_555} :catch_1cf
.catch Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException; {:try_start_405 .. :try_end_555} :catch_299
.line 465
:try_start_555
const-string v2, "Uploading firmware..."
invoke-virtual {p0, v2}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 466
iget-object v2, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v3, 0xa
const-string v4, "Uploading firmware..."
invoke-virtual {v2, v3, v4}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 467
iget-object v2, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mPacketCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
invoke-virtual {p0, v2}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->uploadFirmwareImage(Landroid/bluetooth/BluetoothGattCharacteristic;)V
:try_end_568
.catch Lno/nordicsemi/android/dfu/internal/exception/DeviceDisconnectedException; {:try_start_555 .. :try_end_568} :catch_5e2
.catch Lno/nordicsemi/android/dfu/internal/exception/UploadAbortedException; {:try_start_555 .. :try_end_568} :catch_b3
.catch Lno/nordicsemi/android/dfu/internal/exception/UnknownResponseException; {:try_start_555 .. :try_end_568} :catch_1cf
.catch Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException; {:try_start_555 .. :try_end_568} :catch_299
.line 473
:try_start_568
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v2
.line 476
invoke-virtual {p0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->readNotificationResponse()[B
move-result-object v4
.line 477
const/4 v7, 0x3
invoke-direct {p0, v4, v7}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->getStatusCode([BI)I
move-result v7
.line 478
new-instance v8, Ljava/lang/StringBuilder;
const-string v9, "Response received (Op Code = "
invoke-direct {v8, v9}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
const/4 v9, 0x0
aget-byte v9, v4, v9
invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v8
const-string v9, ", Req Op Code = "
invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v8
const/4 v9, 0x1
aget-byte v9, v4, v9
invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v8
const-string v9, ", Status = "
invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v8
const/4 v9, 0x2
aget-byte v9, v4, v9
invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v8
const-string v9, ")"
invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v8
invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v8
invoke-virtual {p0, v8}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 479
iget-object v8, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v9, 0xa
new-instance v10, Ljava/lang/StringBuilder;
const-string v11, "Response received (Op Code = "
invoke-direct {v10, v11}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
const/4 v11, 0x1
aget-byte v4, v4, v11
invoke-virtual {v10, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v4
const-string v10, ", Status = "
invoke-virtual {v4, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v4
const-string v10, ")"
invoke-virtual {v4, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
invoke-virtual {v8, v9, v4}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 480
const/4 v4, 0x1
if-eq v7, v4, :cond_5e9
.line 481
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException;
const-string v1, "Device returned error after sending file"
invoke-direct {v0, v1, v7}, Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException;-><init>(Ljava/lang/String;I)V
throw v0
.line 448
:cond_5de
const/16 v0, 0xa
goto/16 :goto_4f4
.line 468
:catch_5e2
move-exception v0
.line 469
const-string v1, "Disconnected while sending data"
invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->loge(Ljava/lang/String;)V
.line 470
throw v0
.line 483
:cond_5e9
new-instance v4, Ljava/lang/StringBuilder;
const-string v7, "Transfer of "
invoke-direct {v4, v7}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v7, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;
invoke-virtual {v7}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->getBytesSent()I
move-result v7
invoke-virtual {v4, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v4
const-string v7, " bytes has taken "
invoke-virtual {v4, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
sub-long v8, v2, v0
invoke-virtual {v4, v8, v9}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
move-result-object v4
const-string v7, " ms"
invoke-virtual {v4, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
invoke-virtual {p0, v4}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 484
iget-object v4, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v7, 0xa
new-instance v8, Ljava/lang/StringBuilder;
const-string v9, "Upload completed in "
invoke-direct {v8, v9}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
sub-long v0, v2, v0
invoke-virtual {v8, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, " ms"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v4, v7, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 487
const-string v0, "Sending Validate request (Op Code = 4)"
invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 488
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
sget-object v1, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_VALIDATE:[B
invoke-direct {p0, v0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeOpCode(Landroid/bluetooth/BluetoothGattCharacteristic;[B)V
.line 489
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v1, 0xa
const-string v2, "Validate request sent"
invoke-virtual {v0, v1, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 492
invoke-virtual {p0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->readNotificationResponse()[B
move-result-object v0
.line 493
const/4 v1, 0x4
invoke-direct {p0, v0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->getStatusCode([BI)I
move-result v1
.line 494
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Response received (Op Code = "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
const/4 v3, 0x0
aget-byte v3, v0, v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v2
const-string v3, ", Req Op Code = "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
const/4 v3, 0x1
aget-byte v3, v0, v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v2
const-string v3, ", Status = "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
const/4 v3, 0x2
aget-byte v3, v0, v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v2
const-string v3, ")"
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-virtual {p0, v2}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 495
iget-object v2, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v3, 0xa
new-instance v4, Ljava/lang/StringBuilder;
const-string v7, "Response received (Op Code = "
invoke-direct {v4, v7}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
const/4 v7, 0x1
aget-byte v0, v0, v7
invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v4, ", Status = "
invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v4, ")"
invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v3, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 496
const/4 v0, 0x1
if-eq v1, v0, :cond_6b8
.line 497
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException;
const-string v2, "Device returned validation error"
invoke-direct {v0, v2, v1}, Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException;-><init>(Ljava/lang/String;I)V
throw v0
.line 500
:cond_6b8
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;
const/4 v1, -0x5
invoke-virtual {v0, v1}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->setProgress(I)V
.line 501
const-string v0, "Sending Activate and Reset request (Op Code = 5)"
invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->logi(Ljava/lang/String;)V
.line 502
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
sget-object v1, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->OP_CODE_ACTIVATE_AND_RESET:[B
invoke-direct {p0, v0, v1}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->writeOpCode(Landroid/bluetooth/BluetoothGattCharacteristic;[B)V
.line 503
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v1, 0xa
const-string v2, "Activate and Reset request sent"
invoke-virtual {v0, v1, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 506
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
invoke-virtual {v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->waitUntilDisconnected()V
.line 507
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/4 v1, 0x5
const-string v2, "Disconnected by the remote device"
invoke-virtual {v0, v1, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 515
const/4 v0, 0x5
if-ne v6, v0, :cond_6e9
const/4 v0, 0x1
:goto_6e4
invoke-virtual {p0, p1, v0}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->finalize(Landroid/content/Intent;Z)V
:try_end_6e7
.catch Lno/nordicsemi/android/dfu/internal/exception/UploadAbortedException; {:try_start_568 .. :try_end_6e7} :catch_b3
.catch Lno/nordicsemi/android/dfu/internal/exception/UnknownResponseException; {:try_start_568 .. :try_end_6e7} :catch_1cf
.catch Lno/nordicsemi/android/dfu/internal/exception/RemoteDfuException; {:try_start_568 .. :try_end_6e7} :catch_299
goto/16 :goto_4d
:cond_6e9
const/4 v0, 0x0
goto :goto_6e4
:cond_6eb
move v12, v0
move v0, v2
move v2, v1
move v1, v12
goto/16 :goto_df
.end method