DfuServiceProvider.smali

.class Lno/nordicsemi/android/dfu/DfuServiceProvider;
.super Ljava/lang/Object;
.source "DfuServiceProvider.java"

# interfaces
.implements Lno/nordicsemi/android/dfu/DfuCallback;


# instance fields
.field private mAborted:Z

.field private mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

.field private mPaused:Z


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

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

    return-void
.end method


# virtual methods
.method public abort()V
    .registers 2

    .prologue
    .line 102
    const/4 v0, 0x1

    iput-boolean v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mAborted:Z

    .line 103
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    if-eqz v0, :cond_c

    .line 104
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v0}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->abort()V

    .line 105
    :cond_c
    return-void
.end method

.method public getGattCallback()Lno/nordicsemi/android/dfu/DfuCallback$DfuGattCallback;
    .registers 2

    .prologue
    .line 81
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    if-eqz v0, :cond_b

    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v0}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->getGattCallback()Lno/nordicsemi/android/dfu/DfuCallback$DfuGattCallback;

    move-result-object v0

    :goto_a
    return-object v0

    :cond_b
    const/4 v0, 0x0

    goto :goto_a
.end method

.method getServiceImpl(Landroid/content/Intent;Lno/nordicsemi/android/dfu/DfuBaseService;Landroid/bluetooth/BluetoothGatt;)Lno/nordicsemi/android/dfu/DfuService;
    .registers 6

    .prologue
    .line 39
    :try_start_0
    new-instance v0, Lno/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl;

    invoke-direct {v0, p1, p2}, Lno/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl;-><init>(Landroid/content/Intent;Lno/nordicsemi/android/dfu/DfuBaseService;)V

    iput-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    .line 40
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v0, p1, p3}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->isClientCompatible(Landroid/content/Intent;Landroid/bluetooth/BluetoothGatt;)Z

    move-result v0

    if-eqz v0, :cond_28

    .line 41
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;
    :try_end_11
    .catchall {:try_start_0 .. :try_end_11} :catchall_114

    .line 70
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    if-eqz v1, :cond_27

    .line 71
    iget-boolean v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mPaused:Z

    if-eqz v1, :cond_1e

    .line 72
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v1}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->pause()V

    .line 73
    :cond_1e
    iget-boolean v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mAborted:Z

    if-eqz v1, :cond_27

    .line 74
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v1}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->abort()V

    .line 67
    :cond_27
    :goto_27
    return-object v0

    .line 43
    :cond_28
    :try_start_28
    new-instance v0, Lno/nordicsemi/android/dfu/ButtonlessDfuWithoutBondSharingImpl;

    invoke-direct {v0, p1, p2}, Lno/nordicsemi/android/dfu/ButtonlessDfuWithoutBondSharingImpl;-><init>(Landroid/content/Intent;Lno/nordicsemi/android/dfu/DfuBaseService;)V

    iput-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    .line 44
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v0, p1, p3}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->isClientCompatible(Landroid/content/Intent;Landroid/bluetooth/BluetoothGatt;)Z

    move-result v0

    if-eqz v0, :cond_50

    .line 45
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;
    :try_end_39
    .catchall {:try_start_28 .. :try_end_39} :catchall_114

    .line 70
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    if-eqz v1, :cond_27

    .line 71
    iget-boolean v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mPaused:Z

    if-eqz v1, :cond_46

    .line 72
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v1}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->pause()V

    .line 73
    :cond_46
    iget-boolean v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mAborted:Z

    if-eqz v1, :cond_27

    .line 74
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v1}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->abort()V

    goto :goto_27

    .line 47
    :cond_50
    :try_start_50
    new-instance v0, Lno/nordicsemi/android/dfu/SecureDfuImpl;

    invoke-direct {v0, p1, p2}, Lno/nordicsemi/android/dfu/SecureDfuImpl;-><init>(Landroid/content/Intent;Lno/nordicsemi/android/dfu/DfuBaseService;)V

    iput-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    .line 48
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v0, p1, p3}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->isClientCompatible(Landroid/content/Intent;Landroid/bluetooth/BluetoothGatt;)Z

    move-result v0

    if-eqz v0, :cond_78

    .line 49
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;
    :try_end_61
    .catchall {:try_start_50 .. :try_end_61} :catchall_114

    .line 70
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    if-eqz v1, :cond_27

    .line 71
    iget-boolean v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mPaused:Z

    if-eqz v1, :cond_6e

    .line 72
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v1}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->pause()V

    .line 73
    :cond_6e
    iget-boolean v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mAborted:Z

    if-eqz v1, :cond_27

    .line 74
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v1}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->abort()V

    goto :goto_27

    .line 51
    :cond_78
    :try_start_78
    new-instance v0, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;

    invoke-direct {v0, p1, p2}, Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;-><init>(Landroid/content/Intent;Lno/nordicsemi/android/dfu/DfuBaseService;)V

    iput-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    .line 52
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v0, p1, p3}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->isClientCompatible(Landroid/content/Intent;Landroid/bluetooth/BluetoothGatt;)Z

    move-result v0

    if-eqz v0, :cond_a0

    .line 53
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;
    :try_end_89
    .catchall {:try_start_78 .. :try_end_89} :catchall_114

    .line 70
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    if-eqz v1, :cond_27

    .line 71
    iget-boolean v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mPaused:Z

    if-eqz v1, :cond_96

    .line 72
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v1}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->pause()V

    .line 73
    :cond_96
    iget-boolean v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mAborted:Z

    if-eqz v1, :cond_27

    .line 74
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v1}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->abort()V

    goto :goto_27

    .line 55
    :cond_a0
    :try_start_a0
    new-instance v0, Lno/nordicsemi/android/dfu/LegacyDfuImpl;

    invoke-direct {v0, p1, p2}, Lno/nordicsemi/android/dfu/LegacyDfuImpl;-><init>(Landroid/content/Intent;Lno/nordicsemi/android/dfu/DfuBaseService;)V

    iput-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    .line 56
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v0, p1, p3}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->isClientCompatible(Landroid/content/Intent;Landroid/bluetooth/BluetoothGatt;)Z

    move-result v0

    if-eqz v0, :cond_c9

    .line 57
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;
    :try_end_b1
    .catchall {:try_start_a0 .. :try_end_b1} :catchall_114

    .line 70
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    if-eqz v1, :cond_27

    .line 71
    iget-boolean v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mPaused:Z

    if-eqz v1, :cond_be

    .line 72
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v1}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->pause()V

    .line 73
    :cond_be
    iget-boolean v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mAborted:Z

    if-eqz v1, :cond_27

    .line 74
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v1}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->abort()V

    goto/16 :goto_27

    .line 60
    :cond_c9
    :try_start_c9
    const-string v0, "no.nordicsemi.android.dfu.extra.EXTRA_UNSAFE_EXPERIMENTAL_BUTTONLESS_DFU"

    const/4 v1, 0x0

    invoke-virtual {p1, v0, v1}, Landroid/content/Intent;->getBooleanExtra(Ljava/lang/String;Z)Z

    move-result v0

    .line 61
    if-eqz v0, :cond_fb

    .line 62
    new-instance v0, Lno/nordicsemi/android/dfu/ExperimentalButtonlessDfuImpl;

    invoke-direct {v0, p1, p2}, Lno/nordicsemi/android/dfu/ExperimentalButtonlessDfuImpl;-><init>(Landroid/content/Intent;Lno/nordicsemi/android/dfu/DfuBaseService;)V

    iput-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    .line 63
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v0, p1, p3}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->isClientCompatible(Landroid/content/Intent;Landroid/bluetooth/BluetoothGatt;)Z

    move-result v0

    if-eqz v0, :cond_fb

    .line 64
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;
    :try_end_e3
    .catchall {:try_start_c9 .. :try_end_e3} :catchall_114

    .line 70
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    if-eqz v1, :cond_27

    .line 71
    iget-boolean v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mPaused:Z

    if-eqz v1, :cond_f0

    .line 72
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v1}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->pause()V

    .line 73
    :cond_f0
    iget-boolean v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mAborted:Z

    if-eqz v1, :cond_27

    .line 74
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v1}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->abort()V

    goto/16 :goto_27

    .line 70
    :cond_fb
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    if-eqz v0, :cond_111

    .line 71
    iget-boolean v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mPaused:Z

    if-eqz v0, :cond_108

    .line 72
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v0}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->pause()V

    .line 73
    :cond_108
    iget-boolean v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mAborted:Z

    if-eqz v0, :cond_111

    .line 74
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v0}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->abort()V

    .line 67
    :cond_111
    const/4 v0, 0x0

    goto/16 :goto_27

    .line 70
    :catchall_114
    move-exception v0

    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    if-eqz v1, :cond_12b

    .line 71
    iget-boolean v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mPaused:Z

    if-eqz v1, :cond_122

    .line 72
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v1}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->pause()V

    .line 73
    :cond_122
    iget-boolean v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mAborted:Z

    if-eqz v1, :cond_12b

    .line 74
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v1}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->abort()V

    :cond_12b
    throw v0
.end method

.method public onBondStateChanged(I)V
    .registers 3

    .prologue
    .line 86
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    if-eqz v0, :cond_9

    .line 87
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mImpl:Lno/nordicsemi/android/dfu/BaseDfuImpl;

    invoke-virtual {v0, p1}, Lno/nordicsemi/android/dfu/BaseDfuImpl;->onBondStateChanged(I)V

    .line 88
    :cond_9
    return-void
.end method

.method public pause()V
    .registers 2

    .prologue
    .line 92
    const/4 v0, 0x1

    iput-boolean v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mPaused:Z

    .line 93
    return-void
.end method

.method public resume()V
    .registers 2

    .prologue
    .line 97
    const/4 v0, 0x0

    iput-boolean v0, p0, Lno/nordicsemi/android/dfu/DfuServiceProvider;->mPaused:Z

    .line 98
    return-void
.end method