LegacyButtonlessDfuImpl.smali
.class Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;
.super Lno/nordicsemi/android/dfu/BaseButtonlessDfuImpl;
.source "LegacyButtonlessDfuImpl.java"
# static fields
.field protected static DFU_CONTROL_POINT_UUID:Ljava/util/UUID;
.field protected static DFU_SERVICE_UUID:Ljava/util/UUID;
.field protected static DFU_VERSION_UUID:Ljava/util/UUID;
.field private static final OP_CODE_ENTER_BOOTLOADER:[B
# instance fields
.field private mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
.field private mVersion:I
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 21
sget-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DEFAULT_DFU_SERVICE_UUID:Ljava/util/UUID;
sput-object v0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->DFU_SERVICE_UUID:Ljava/util/UUID;
.line 22
sget-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DEFAULT_DFU_CONTROL_POINT_UUID:Ljava/util/UUID;
sput-object v0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->DFU_CONTROL_POINT_UUID:Ljava/util/UUID;
.line 23
sget-object v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;->DEFAULT_DFU_VERSION_UUID:Ljava/util/UUID;
sput-object v0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->DFU_VERSION_UUID:Ljava/util/UUID;
.line 25
const/4 v0, 0x2
new-array v0, v0, [B
fill-array-data v0, :array_16
sput-object v0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->OP_CODE_ENTER_BOOTLOADER:[B
return-void
nop
:array_16
.array-data 1
0x1t
0x4t
.end array-data
.end method
.method constructor <init>(Landroid/content/Intent;Lno/nordicsemi/android/dfu/DfuBaseService;)V
.registers 3
.prologue
.line 31
invoke-direct {p0, p1, p2}, Lno/nordicsemi/android/dfu/BaseButtonlessDfuImpl;-><init>(Landroid/content/Intent;Lno/nordicsemi/android/dfu/DfuBaseService;)V
.line 32
return-void
.end method
.method private getVersionFeatures(I)Ljava/lang/String;
.registers 3
.prologue
.line 221
packed-switch p1, :pswitch_data_18
.line 235
:pswitch_3
const-string v0, "Unknown version"
:goto_5
return-object v0
.line 223
:pswitch_6
const-string v0, "Bootloader from SDK 6.1 or older"
goto :goto_5
.line 225
:pswitch_9
const-string v0, "Application with Legacy buttonless update from SDK 7.0 or newer"
goto :goto_5
.line 227
:pswitch_c
const-string v0, "Bootloader from SDK 7.0 or newer. No bond sharing"
goto :goto_5
.line 229
:pswitch_f
const-string v0, "Bootloader from SDK 8.0 or newer. Bond sharing supported"
goto :goto_5
.line 231
:pswitch_12
const-string v0, "Bootloader from SDK 8.0 or newer. SHA-256 used instead of CRC-16 in the Init Packet"
goto :goto_5
.line 233
:pswitch_15
const-string v0, "Bootloader from SDK 9.0 or newer. Signature supported"
goto :goto_5
.line 221
:pswitch_data_18
.packed-switch 0x0
:pswitch_6
:pswitch_9
:pswitch_3
:pswitch_3
:pswitch_3
:pswitch_c
:pswitch_f
:pswitch_12
:pswitch_15
.end packed-switch
.end method
.method private readVersion(Landroid/bluetooth/BluetoothGatt;Landroid/bluetooth/BluetoothGattCharacteristic;)I
.registers 8
.prologue
const/4 v4, 0x0
const/4 v0, 0x0
.line 182
iget-boolean v1, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mConnected:Z
if-nez v1, :cond_e
.line 183
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/DeviceDisconnectedException;
const-string v1, "Unable to read version number: device disconnected"
invoke-direct {v0, v1}, Lno/nordicsemi/android/dfu/internal/exception/DeviceDisconnectedException;-><init>(Ljava/lang/String;)V
throw v0
.line 184
:cond_e
iget-boolean v1, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mAborted:Z
if-eqz v1, :cond_18
.line 185
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 187
:cond_18
if-nez p2, :cond_1b
.line 217
:goto_1a
return v0
.line 190
:cond_1b
iput-object v4, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mReceivedData:[B
.line 191
iput v0, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mError:I
.line 193
const-string v1, "Reading DFU version number..."
invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->logi(Ljava/lang/String;)V
.line 194
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/4 v2, 0x1
const-string v3, "Reading DFU version number..."
invoke-virtual {v1, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 196
invoke-virtual {p2, v4}, Landroid/bluetooth/BluetoothGattCharacteristic;->setValue([B)Z
.line 197
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "gatt.readCharacteristic("
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p2}, Landroid/bluetooth/BluetoothGattCharacteristic;->getUuid()Ljava/util/UUID;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)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 {v1, v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 198
invoke-virtual {p1, p2}, Landroid/bluetooth/BluetoothGatt;->readCharacteristic(Landroid/bluetooth/BluetoothGattCharacteristic;)Z
.line 202
:try_start_50
iget-object v2, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mLock:Ljava/lang/Object;
monitor-enter v2
:try_end_53
.catch Ljava/lang/InterruptedException; {:try_start_50 .. :try_end_53} :catch_79
.line 203
:goto_53
:try_start_53
iget-boolean v1, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mRequestCompleted:Z
if-eqz v1, :cond_5d
invoke-virtual {p2}, Landroid/bluetooth/BluetoothGattCharacteristic;->getValue()[B
move-result-object v1
if-nez v1, :cond_69
:cond_5d
iget-boolean v1, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mConnected:Z
if-eqz v1, :cond_69
iget v1, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mError:I
if-nez v1, :cond_69
iget-boolean v1, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mAborted:Z
if-eqz v1, :cond_6d
:cond_69
iget-boolean v1, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mPaused:Z
if-eqz v1, :cond_8d
.line 204
:cond_6d
const/4 v1, 0x0
iput-boolean v1, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mRequestCompleted:Z
.line 205
iget-object v1, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mLock:Ljava/lang/Object;
invoke-virtual {v1}, Ljava/lang/Object;->wait()V
goto :goto_53
.line 207
:catchall_76
move-exception v1
monitor-exit v2
:try_end_78
.catchall {:try_start_53 .. :try_end_78} :catchall_76
:try_start_78
throw v1
:try_end_79
.catch Ljava/lang/InterruptedException; {:try_start_78 .. :try_end_79} :catch_79
.line 208
:catch_79
move-exception v1
.line 209
const-string v2, "Sleeping interrupted"
invoke-virtual {p0, v2, v1}, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->loge(Ljava/lang/String;Ljava/lang/Throwable;)V
.line 211
:goto_7f
iget v1, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mError:I
if-eqz v1, :cond_8f
.line 212
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/DfuException;
const-string v1, "Unable to read version number"
iget v2, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mError:I
invoke-direct {v0, v1, v2}, Lno/nordicsemi/android/dfu/internal/exception/DfuException;-><init>(Ljava/lang/String;I)V
throw v0
.line 207
:cond_8d
:try_start_8d
monitor-exit v2
:try_end_8e
.catchall {:try_start_8d .. :try_end_8e} :catchall_76
goto :goto_7f
.line 213
:cond_8f
iget-boolean v1, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mConnected:Z
if-nez v1, :cond_9b
.line 214
new-instance v0, Lno/nordicsemi/android/dfu/internal/exception/DeviceDisconnectedException;
const-string v1, "Unable to read version number: device disconnected"
invoke-direct {v0, v1}, Lno/nordicsemi/android/dfu/internal/exception/DeviceDisconnectedException;-><init>(Ljava/lang/String;)V
throw v0
.line 217
:cond_9b
const/16 v1, 0x12
invoke-virtual {p2, 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
goto/16 :goto_1a
.end method
# virtual methods
.method public isClientCompatible(Landroid/content/Intent;Landroid/bluetooth/BluetoothGatt;)Z
.registers 12
.prologue
const/16 v8, 0xa
const/4 v3, 0x1
const/4 v1, 0x0
.line 36
sget-object v0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->DFU_SERVICE_UUID:Ljava/util/UUID;
invoke-virtual {p2, v0}, Landroid/bluetooth/BluetoothGatt;->getService(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattService;
move-result-object v0
.line 37
if-nez v0, :cond_d
.line 112
:cond_c
:goto_c
return v1
.line 39
:cond_d
sget-object v2, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->DFU_CONTROL_POINT_UUID:Ljava/util/UUID;
invoke-virtual {v0, v2}, Landroid/bluetooth/BluetoothGattService;->getCharacteristic(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattCharacteristic;
move-result-object v2
iput-object v2, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
.line 40
iget-object v2, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
if-eqz v2, :cond_c
.line 43
iget-object v2, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;
const/4 v4, -0x2
invoke-virtual {v2, v4}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->setProgress(I)V
.line 49
iget-object v2, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v4, 0x3e8
invoke-virtual {v2, v4}, Lno/nordicsemi/android/dfu/DfuBaseService;->waitFor(I)V
.line 81
sget-object v2, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->DFU_VERSION_UUID:Ljava/util/UUID;
invoke-virtual {v0, v2}, Landroid/bluetooth/BluetoothGattService;->getCharacteristic(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattCharacteristic;
move-result-object v0
.line 82
if-eqz v0, :cond_ba
.line 83
invoke-direct {p0, p2, v0}, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->readVersion(Landroid/bluetooth/BluetoothGatt;Landroid/bluetooth/BluetoothGattCharacteristic;)I
move-result v0
iput v0, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mVersion:I
.line 84
and-int/lit8 v2, v0, 0xf
.line 85
shr-int/lit8 v4, v0, 0x8
.line 86
new-instance v5, Ljava/lang/StringBuilder;
const-string v6, "Version number read: "
invoke-direct {v5, v6}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v5
const-string v6, "."
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v5
invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v5
const-string v6, " -> "
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v5
invoke-direct {p0, v0}, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->getVersionFeatures(I)Ljava/lang/String;
move-result-object v6
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v5
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v5
invoke-virtual {p0, v5}, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->logi(Ljava/lang/String;)V
.line 87
iget-object v5, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
new-instance v6, Ljava/lang/StringBuilder;
const-string v7, "Version number read: "
invoke-direct {v6, v7}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v4
const-string v6, "."
invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-virtual {v5, v8, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 104
:goto_80
iget-object v2, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
invoke-static {v2}, Landroid/preference/PreferenceManager;->getDefaultSharedPreferences(Landroid/content/Context;)Landroid/content/SharedPreferences;
move-result-object v2
.line 105
const-string v4, "settings_assume_dfu_mode"
invoke-interface {v2, v4, v1}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z
move-result v2
.line 106
const-string v4, "no.nordicsemi.android.dfu.extra.EXTRA_FORCE_DFU"
invoke-virtual {p1, v4}, Landroid/content/Intent;->hasExtra(Ljava/lang/String;)Z
move-result v4
if-eqz v4, :cond_9a
.line 107
const-string v2, "no.nordicsemi.android.dfu.extra.EXTRA_FORCE_DFU"
invoke-virtual {p1, v2, v1}, Landroid/content/Intent;->getBooleanExtra(Ljava/lang/String;Z)Z
move-result v2
.line 109
:cond_9a
invoke-virtual {p2}, Landroid/bluetooth/BluetoothGatt;->getServices()Ljava/util/List;
move-result-object v4
invoke-interface {v4}, Ljava/util/List;->size()I
move-result v4
const/4 v5, 0x3
if-le v4, v5, :cond_d9
move v4, v3
.line 110
:goto_a6
if-nez v0, :cond_af
if-eqz v4, :cond_af
.line 111
const-string v5, "Additional services found -> Bootloader from SDK 6.1. Updating SD and BL supported, extended init packet not supported"
invoke-virtual {p0, v5}, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->logi(Ljava/lang/String;)V
.line 112
:cond_af
if-eq v0, v3, :cond_b7
if-nez v2, :cond_c
if-nez v0, :cond_c
if-eqz v4, :cond_c
:cond_b7
move v1, v3
goto/16 :goto_c
.line 89
:cond_ba
new-instance v0, Ljava/lang/StringBuilder;
const-string v2, "No DFU Version characteristic found -> "
invoke-direct {v0, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-direct {p0, v1}, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->getVersionFeatures(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/LegacyButtonlessDfuImpl;->logi(Ljava/lang/String;)V
.line 90
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const-string v2, "DFU Version characteristic not found"
invoke-virtual {v0, v8, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
move v0, v1
goto :goto_80
:cond_d9
move v4, v1
.line 109
goto :goto_a6
.end method
.method public performDfu(Landroid/content/Intent;)V
.registers 8
.prologue
const/16 v5, 0xa
const/4 v2, 0x0
const/4 v1, 0x1
.line 117
const-string v0, "Application with legacy buttonless update found"
invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->logw(Ljava/lang/String;)V
.line 120
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v3, 0xf
const-string v4, "Application with buttonless update found"
invoke-virtual {v0, v3, v4}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 122
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const-string v3, "Jumping to the DFU Bootloader..."
invoke-virtual {v0, v1, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 125
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
invoke-virtual {p0, v0, v1}, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->enableCCCD(Landroid/bluetooth/BluetoothGattCharacteristic;I)V
.line 126
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const-string v3, "Notifications enabled"
invoke-virtual {v0, v5, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 131
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const/16 v3, 0x3e8
invoke-virtual {v0, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->waitFor(I)V
.line 135
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;
const/4 v3, -0x3
invoke-virtual {v0, v3}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->setProgress(I)V
.line 136
const-string v0, "Sending Start DFU command (Op Code = 1, Upload Mode = 4)"
invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->logi(Ljava/lang/String;)V
.line 137
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mControlPointCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic;
sget-object v3, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->OP_CODE_ENTER_BOOTLOADER:[B
invoke-virtual {p0, v0, v3, v1}, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->writeOpCode(Landroid/bluetooth/BluetoothGattCharacteristic;[BZ)V
.line 138
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
const-string v3, "Jump to bootloader sent (Op Code = 1, Upload Mode = 4)"
invoke-virtual {v0, v5, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
.line 141
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
invoke-virtual {v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->waitUntilDisconnected()V
.line 142
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->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 157
iget-object v3, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mGatt:Landroid/bluetooth/BluetoothGatt;
.line 158
sget-object v0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->GENERIC_ATTRIBUTE_SERVICE_UUID:Ljava/util/UUID;
invoke-virtual {v3, v0}, Landroid/bluetooth/BluetoothGatt;->getService(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattService;
move-result-object v0
.line 159
if-eqz v0, :cond_89
sget-object v4, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->SERVICE_CHANGED_UUID:Ljava/util/UUID;
invoke-virtual {v0, v4}, Landroid/bluetooth/BluetoothGattService;->getCharacteristic(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattCharacteristic;
move-result-object v0
if-eqz v0, :cond_89
move v0, v1
.line 160
:goto_65
iget-object v4, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
if-nez v0, :cond_8b
move v0, v1
:goto_6a
invoke-virtual {v4, v3, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->refreshDeviceCache(Landroid/bluetooth/BluetoothGatt;Z)V
.line 163
iget-object v0, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mService:Lno/nordicsemi/android/dfu/DfuBaseService;
invoke-virtual {v0, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->close(Landroid/bluetooth/BluetoothGatt;)V
.line 165
const-string v0, "Starting service that will connect to the DFU bootloader"
invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->logi(Ljava/lang/String;)V
.line 166
new-instance v0, Landroid/content/Intent;
invoke-direct {v0}, Landroid/content/Intent;-><init>()V
.line 167
const/16 v3, 0x18
invoke-virtual {v0, p1, v3}, Landroid/content/Intent;->fillIn(Landroid/content/Intent;I)I
.line 168
iget v3, p0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->mVersion:I
if-nez v3, :cond_8d
:goto_85
invoke-virtual {p0, v0, v1}, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;->restartService(Landroid/content/Intent;Z)V
.line 169
return-void
:cond_89
move v0, v2
.line 159
goto :goto_65
:cond_8b
move v0, v2
.line 160
goto :goto_6a
:cond_8d
move v1, v2
.line 168
goto :goto_85
.end method