BaseCustomDfuImpl.smali
.class abstract Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;
.super Lno/nordicsemi/android/dfu/BaseDfuImpl;
.source "BaseCustomDfuImpl.java"
# instance fields
.field protected mFirmwareUploadInProgress:Z
.field private mInitPacketInProgress:Z
.field protected mPacketsBeforeNotification:I
.field protected mPacketsSentSinceNotification:I
.field protected mRemoteErrorOccurred:Z
# direct methods
.method constructor <init>(Landroid/content/Intent;Lno/nordicsemi/android/dfu/DfuBaseService;)V
.registers 11
.prologue
const v7, 0xffff
const/16 v6, 0x17
const/4 v0, 0x1
const/16 v2, 0xc
const/4 v1, 0x0
.line 227
invoke-direct {p0, p1, p2}, Lno/nordicsemi/android/dfu/BaseDfuImpl;-><init>(Landroid/content/Intent;Lno/nordicsemi/android/dfu/DfuBaseService;)V
.line 229
const-string v3, "no.nordicsemi.android.dfu.extra.EXTRA_PRN_ENABLED"
invoke-virtual {p1, v3}, Landroid/content/Intent;->hasExtra(Ljava/lang/String;)Z
move-result v3
if-eqz v3, :cond_30
.line 231
const-string v3, "no.nordicsemi.android.dfu.extra.EXTRA_PRN_ENABLED"
sget v4, Landroid/os/Build$VERSION;->SDK_INT:I
if-ge v4, v6, :cond_2e
:goto_1a
invoke-virtual {p1, v3, v0}, Landroid/content/Intent;->getBooleanExtra(Ljava/lang/String;Z)Z
move-result v3
.line 232
const-string v0, "no.nordicsemi.android.dfu.extra.EXTRA_PRN_VALUE"
invoke-virtual {p1, v0, v2}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I
move-result v0
.line 233
if-ltz v0, :cond_28
if-le v0, v7, :cond_29
:cond_28
move v0, v2
.line 235
:cond_29
if-nez v3, :cond_5b
.line 237
:goto_2b
iput v1, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mPacketsBeforeNotification:I
.line 255
:goto_2d
return-void
:cond_2e
move v0, v1
.line 231
goto :goto_1a
.line 240
:cond_30
invoke-static {p2}, Landroid/preference/PreferenceManager;->getDefaultSharedPreferences(Landroid/content/Context;)Landroid/content/SharedPreferences;
move-result-object v3
.line 241
const-string v4, "settings_packet_receipt_notification_enabled"
sget v5, Landroid/os/Build$VERSION;->SDK_INT:I
if-ge v5, v6, :cond_54
:goto_3a
invoke-interface {v3, v4, v0}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z
move-result v4
.line 242
const-string v0, "settings_number_of_packets"
const-string v5, "12"
invoke-interface {v3, v0, v5}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 245
:try_start_46
invoke-static {v0}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
:try_end_49
.catch Ljava/lang/NumberFormatException; {:try_start_46 .. :try_end_49} :catch_56
move-result v0
.line 246
if-ltz v0, :cond_4e
if-le v0, v7, :cond_4f
:cond_4e
move v0, v2
.line 251
:cond_4f
:goto_4f
if-nez v4, :cond_59
.line 253
:goto_51
iput v1, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mPacketsBeforeNotification:I
goto :goto_2d
:cond_54
move v0, v1
.line 241
goto :goto_3a
.line 249
:catch_56
move-exception v0
move v0, v2
goto :goto_4f
:cond_59
move v1, v0
goto :goto_51
:cond_5b
move v1, v0
goto :goto_2b
.end method
.method static synthetic access$000(Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;)Z
.registers 2
.prologue
.line 42
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mInitPacketInProgress:Z
return v0
.end method
.method static synthetic access$002(Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;Z)Z
.registers 2
.prologue
.line 42
iput-boolean p1, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mInitPacketInProgress:Z
return p1
.end method
.method static synthetic access$100(Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;Landroid/bluetooth/BluetoothGatt;Landroid/bluetooth/BluetoothGattCharacteristic;[BI)V
.registers 5
.prologue
.line 42
invoke-direct {p0, p1, p2, p3, p4}, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->writePacket(Landroid/bluetooth/BluetoothGatt;Landroid/bluetooth/BluetoothGattCharacteristic;[BI)V
return-void
.end method
.method private writeInitPacket(Landroid/bluetooth/BluetoothGattCharacteristic;[BI)V
.registers 9
.prologue
const/4 v4, 0x1
const/4 v3, 0x0
.line 298
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mAborted:Z
if-eqz v0, :cond_c
.line 299
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 301
:cond_c
array-length v0, p2
if-eq v0, p3, :cond_15
.line 302
new-array v0, p3, [B
.line 303
invoke-static {p2, v3, v0, v3, p3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
move-object p2, v0
.line 305
:cond_15
const/4 v0, 0x0
iput-object v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mReceivedData:[B
.line 306
iput v3, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mError:I
.line 307
iput-boolean v4, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mInitPacketInProgress:Z
.line 309
invoke-virtual {p1, v4}, Landroid/bluetooth/BluetoothGattCharacteristic;->setWriteType(I)V
.line 310
invoke-virtual {p1, p2}, Landroid/bluetooth/BluetoothGattCharacteristic;->setValue([B)Z
.line 311
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "Sending init packet (Value = "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p0, p2}, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->parse([B)Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, ")"
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 {p0, v0}, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->logi(Ljava/lang/String;)V
.line 312
iget-object v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->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 313
iget-object v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->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 314
iget-object v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mGatt:Landroid/bluetooth/BluetoothGatt;
invoke-virtual {v0, p1}, Landroid/bluetooth/BluetoothGatt;->writeCharacteristic(Landroid/bluetooth/BluetoothGattCharacteristic;)Z
.line 318
:try_start_79
iget-object v1, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mLock:Ljava/lang/Object;
monitor-enter v1
:try_end_7c
.catch Ljava/lang/InterruptedException; {:try_start_79 .. :try_end_7c} :catch_95
.line 319
:goto_7c
:try_start_7c
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mInitPacketInProgress:Z
if-eqz v0, :cond_88
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mConnected:Z
if-eqz v0, :cond_88
iget v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mError:I
if-eqz v0, :cond_8c
:cond_88
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mPaused:Z
if-eqz v0, :cond_a9
.line 320
:cond_8c
iget-object v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mLock:Ljava/lang/Object;
invoke-virtual {v0}, Ljava/lang/Object;->wait()V
goto :goto_7c
.line 321
:catchall_92
move-exception v0
monitor-exit v1
:try_end_94
.catchall {:try_start_7c .. :try_end_94} :catchall_92
:try_start_94
throw v0
:try_end_95
.catch Ljava/lang/InterruptedException; {:try_start_94 .. :try_end_95} :catch_95
.line 322
:catch_95
move-exception v0
.line 323
const-string v1, "Sleeping interrupted"
invoke-virtual {p0, v1, v0}, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->loge(Ljava/lang/String;Ljava/lang/Throwable;)V
.line 325
:goto_9b
iget v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mError:I
if-eqz v0, :cond_ab
.line 326
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/DfuException;
const-string v1, "Unable to write Init DFU Parameters"
iget v2, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mError:I
invoke-direct {v0, v1, v2}, Lno/nordicsemi/android/dfu/internal/exception/DfuException;-><init>(Ljava/lang/String;I)V
throw v0
.line 321
:cond_a9
:try_start_a9
monitor-exit v1
:try_end_aa
.catchall {:try_start_a9 .. :try_end_aa} :catchall_92
goto :goto_9b
.line 327
:cond_ab
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mConnected:Z
if-nez v0, :cond_b7
.line 328
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/DeviceDisconnectedException;
const-string v1, "Unable to write Init DFU Parameters: device disconnected"
invoke-direct {v0, v1}, Lno/nordicsemi/android/dfu/internal/exception/DeviceDisconnectedException;-><init>(Ljava/lang/String;)V
throw v0
.line 329
:cond_b7
return-void
.end method
.method private writePacket(Landroid/bluetooth/BluetoothGatt;Landroid/bluetooth/BluetoothGattCharacteristic;[BI)V
.registers 7
.prologue
const/4 v1, 0x0
.line 383
.line 384
if-gtz p4, :cond_4
.line 399
:goto_3
return-void
.line 386
:cond_4
array-length v0, p3
if-eq v0, p4, :cond_d
.line 387
new-array v0, p4, [B
.line 388
invoke-static {p3, v1, v0, v1, p4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
move-object p3, v0
.line 390
:cond_d
const/4 v0, 0x1
invoke-virtual {p2, v0}, Landroid/bluetooth/BluetoothGattCharacteristic;->setWriteType(I)V
.line 391
invoke-virtual {p2, p3}, Landroid/bluetooth/BluetoothGattCharacteristic;->setValue([B)Z
.line 392
invoke-virtual {p1, p2}, Landroid/bluetooth/BluetoothGatt;->writeCharacteristic(Landroid/bluetooth/BluetoothGattCharacteristic;)Z
goto :goto_3
.end method
# virtual methods
.method protected finalize(Landroid/content/Intent;Z)V
.registers 9
.prologue
const/4 v2, 0x1
const/4 v1, 0x0
.line 413
const-string v0, "no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND"
invoke-virtual {p1, v0, v1}, Landroid/content/Intent;->getBooleanExtra(Ljava/lang/String;Z)Z
move-result v3
.line 414
iget-object v4, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
iget-object v5, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mGatt:Landroid/bluetooth/BluetoothGatt;
if-nez p2, :cond_10
if-nez v3, :cond_61
:cond_10
move v0, v2
:goto_11
invoke-virtual {v4, v5, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->refreshDeviceCache(Landroid/bluetooth/BluetoothGatt;Z)V
.line 417
iget-object v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
iget-object v4, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mGatt:Landroid/bluetooth/BluetoothGatt;
invoke-virtual {v0, v4}, Lno/nordicsemi/android/dfu/DfuBaseService;->close(Landroid/bluetooth/BluetoothGatt;)V
.line 425
iget-object v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mGatt:Landroid/bluetooth/BluetoothGatt;
invoke-virtual {v0}, Landroid/bluetooth/BluetoothGatt;->getDevice()Landroid/bluetooth/BluetoothDevice;
move-result-object v0
invoke-virtual {v0}, Landroid/bluetooth/BluetoothDevice;->getBondState()I
move-result v0
const/16 v4, 0xc
if-ne v0, v4, :cond_49
.line 426
const-string v0, "no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND"
invoke-virtual {p1, v0, v1}, Landroid/content/Intent;->getBooleanExtra(Ljava/lang/String;Z)Z
move-result v4
.line 427
if-nez v4, :cond_33
if-nez v3, :cond_9d
.line 429
:cond_33
invoke-virtual {p0}, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->removeBond()Z
.line 432
iget-object v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v3, 0x7d0
invoke-virtual {v0, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->waitFor(I)V
move v0, v2
.line 436
:goto_3e
if-eqz v4, :cond_9b
iget v3, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mFileType:I
and-int/lit8 v3, v3, 0x4
if-lez v3, :cond_9b
.line 438
invoke-virtual {p0}, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->createBond()Z
.line 448
:cond_49
:goto_49
iget-object v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;
invoke-virtual {v0}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->isLastPart()Z
move-result v0
if-eqz v0, :cond_63
.line 450
if-nez v1, :cond_5a
.line 451
iget-object v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v1, 0x578
invoke-virtual {v0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->waitFor(I)V
.line 452
:cond_5a
iget-object v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;
const/4 v1, -0x6
invoke-virtual {v0, v1}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->setProgress(I)V
.line 481
:goto_60
return-void
:cond_61
move v0, v1
.line 414
goto :goto_11
.line 472
:cond_63
const-string v0, "Starting service that will upload application"
invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->logi(Ljava/lang/String;)V
.line 473
new-instance v0, Landroid/content/Intent;
invoke-direct {v0}, Landroid/content/Intent;-><init>()V
.line 474
const/16 v1, 0x18
invoke-virtual {v0, p1, v1}, Landroid/content/Intent;->fillIn(Landroid/content/Intent;I)I
.line 475
const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_MIME_TYPE"
const-string v3, "application/zip"
invoke-virtual {v0, v1, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
.line 476
const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_FILE_TYPE"
const/4 v3, 0x4
invoke-virtual {v0, v1, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
.line 477
const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_PART_CURRENT"
iget-object v3, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;
invoke-virtual {v3}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->getCurrentPart()I
move-result v3
add-int/lit8 v3, v3, 0x1
invoke-virtual {v0, v1, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
.line 478
const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_PARTS_TOTAL"
iget-object v3, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;
invoke-virtual {v3}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->getTotalParts()I
move-result v3
invoke-virtual {v0, v1, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
.line 479
invoke-virtual {p0, v0, v2}, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->restartService(Landroid/content/Intent;Z)V
goto :goto_60
:cond_9b
move v1, v0
goto :goto_49
:cond_9d
move v0, v1
goto :goto_3e
.end method
.method protected abstract getControlPointCharacteristicUUID()Ljava/util/UUID;
.end method
.method protected abstract getDfuServiceUUID()Ljava/util/UUID;
.end method
.method protected abstract getPacketCharacteristicUUID()Ljava/util/UUID;
.end method
.method protected uploadFirmwareImage(Landroid/bluetooth/BluetoothGattCharacteristic;)V
.registers 8
.prologue
const/4 v2, 0x1
const/4 v1, 0x0
.line 342
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mAborted:Z
if-eqz v0, :cond_c
.line 343
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 344
:cond_c
const/4 v0, 0x0
iput-object v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mReceivedData:[B
.line 345
iput v1, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mError:I
.line 346
iput-boolean v2, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mFirmwareUploadInProgress:Z
.line 347
iput v1, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mPacketsSentSinceNotification:I
.line 349
iget-object v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mBuffer:[B
.line 351
:try_start_17
iget-object v1, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mFirmwareStream:Ljava/io/InputStream;
invoke-virtual {v1, v0}, Ljava/io/InputStream;->read([B)I
move-result v1
.line 352
iget-object v2, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/4 v3, 0x1
new-instance v4, Ljava/lang/StringBuilder;
const-string v5, "Sending firmware to characteristic "
invoke-direct {v4, v5}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p1}, Landroid/bluetooth/BluetoothGattCharacteristic;->getUuid()Ljava/util/UUID;
move-result-object v5
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v4
const-string v5, "..."
invoke-virtual {v4, v5}, 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 {v2, v3, v4}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 353
iget-object v2, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mGatt:Landroid/bluetooth/BluetoothGatt;
invoke-direct {p0, v2, p1, v0, v1}, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->writePacket(Landroid/bluetooth/BluetoothGatt;Landroid/bluetooth/BluetoothGattCharacteristic;[BI)V
:try_end_41
.catch Lno/nordicsemi/android/dfu/internal/exception/HexFileValidationException; {:try_start_17 .. :try_end_41} :catch_75
.catch Ljava/io/IOException; {:try_start_17 .. :try_end_41} :catch_80
.line 361
:try_start_41
iget-object v1, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mLock:Ljava/lang/Object;
monitor-enter v1
:try_end_44
.catch Ljava/lang/InterruptedException; {:try_start_41 .. :try_end_44} :catch_61
.line 362
:goto_44
:try_start_44
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mFirmwareUploadInProgress:Z
if-eqz v0, :cond_54
iget-object v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mReceivedData:[B
if-nez v0, :cond_54
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mConnected:Z
if-eqz v0, :cond_54
iget v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mError:I
if-eqz v0, :cond_58
:cond_54
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mPaused:Z
if-eqz v0, :cond_8b
.line 363
:cond_58
iget-object v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mLock:Ljava/lang/Object;
invoke-virtual {v0}, Ljava/lang/Object;->wait()V
goto :goto_44
.line 364
:catchall_5e
move-exception v0
monitor-exit v1
:try_end_60
.catchall {:try_start_44 .. :try_end_60} :catchall_5e
:try_start_60
throw v0
:try_end_61
.catch Ljava/lang/InterruptedException; {:try_start_60 .. :try_end_61} :catch_61
.line 365
:catch_61
move-exception v0
.line 366
const-string v1, "Sleeping interrupted"
invoke-virtual {p0, v1, v0}, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->loge(Ljava/lang/String;Ljava/lang/Throwable;)V
.line 369
:goto_67
iget v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mError:I
if-eqz v0, :cond_8d
.line 370
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/DfuException;
const-string v1, "Uploading Firmware Image failed"
iget v2, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mError:I
invoke-direct {v0, v1, v2}, Lno/nordicsemi/android/dfu/internal/exception/DfuException;-><init>(Ljava/lang/String;I)V
throw v0
.line 355
:catch_75
move-exception v0
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/DfuException;
const-string v1, "HEX file not valid"
const/16 v2, 0x1003
invoke-direct {v0, v1, v2}, Lno/nordicsemi/android/dfu/internal/exception/DfuException;-><init>(Ljava/lang/String;I)V
throw v0
.line 357
:catch_80
move-exception v0
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/DfuException;
const-string v1, "Error while reading file"
const/16 v2, 0x1004
invoke-direct {v0, v1, v2}, Lno/nordicsemi/android/dfu/internal/exception/DfuException;-><init>(Ljava/lang/String;I)V
throw v0
.line 364
:cond_8b
:try_start_8b
monitor-exit v1
:try_end_8c
.catchall {:try_start_8b .. :try_end_8c} :catchall_5e
goto :goto_67
.line 371
:cond_8d
iget-boolean v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mConnected:Z
if-nez v0, :cond_99
.line 372
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/DeviceDisconnectedException;
const-string v1, "Uploading Firmware Image failed: device disconnected"
invoke-direct {v0, v1}, Lno/nordicsemi/android/dfu/internal/exception/DeviceDisconnectedException;-><init>(Ljava/lang/String;)V
throw v0
.line 373
:cond_99
return-void
.end method
.method protected writeInitData(Landroid/bluetooth/BluetoothGattCharacteristic;Ljava/util/zip/CRC32;)V
.registers 7
.prologue
.line 272
:try_start_0
iget-object v0, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mBuffer:[B
.line 274
:cond_2
:goto_2
iget-object v1, p0, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->mInitPacketStream:Ljava/io/InputStream;
const/4 v2, 0x0
array-length v3, v0
invoke-virtual {v1, v0, v2, v3}, Ljava/io/InputStream;->read([BII)I
move-result v1
const/4 v2, -0x1
if-eq v1, v2, :cond_27
.line 275
invoke-direct {p0, p1, v0, v1}, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->writeInitPacket(Landroid/bluetooth/BluetoothGattCharacteristic;[BI)V
.line 276
if-eqz p2, :cond_2
.line 277
const/4 v2, 0x0
invoke-virtual {p2, v0, v2, v1}, Ljava/util/zip/CRC32;->update([BII)V
:try_end_16
.catch Ljava/io/IOException; {:try_start_0 .. :try_end_16} :catch_17
goto :goto_2
.line 279
:catch_17
move-exception v0
.line 280
const-string v1, "Error while reading Init packet file"
invoke-virtual {p0, v1, v0}, Lno/nordicsemi/android/dfu/BaseCustomDfuImpl;->loge(Ljava/lang/String;Ljava/lang/Throwable;)V
.line 281
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/DfuException;
const-string v1, "Error while reading Init packet file"
const/16 v2, 0x1002
invoke-direct {v0, v1, v2}, Lno/nordicsemi/android/dfu/internal/exception/DfuException;-><init>(Ljava/lang/String;I)V
throw v0
.line 282
:cond_27
return-void
.end method