DfuBaseService.smali

.class public abstract Lno/nordicsemi/android/dfu/DfuBaseService;
.super Landroid/app/IntentService;
.source "DfuBaseService.java"

# interfaces
.implements Lno/nordicsemi/android/dfu/DfuProgressInfo$ProgressListener;


# static fields
.field public static final ACTION_ABORT:I = 0x2

.field public static final ACTION_PAUSE:I = 0x0

.field public static final ACTION_RESUME:I = 0x1

.field public static final BROADCAST_ACTION:Ljava/lang/String; = "no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION"

.field public static final BROADCAST_ERROR:Ljava/lang/String; = "no.nordicsemi.android.dfu.broadcast.BROADCAST_ERROR"

.field public static final BROADCAST_LOG:Ljava/lang/String; = "no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG"

.field public static final BROADCAST_PROGRESS:Ljava/lang/String; = "no.nordicsemi.android.dfu.broadcast.BROADCAST_PROGRESS"

.field static DEBUG:Z = false

.field public static final ERROR_BLUETOOTH_DISABLED:I = 0x100a

.field public static final ERROR_CONNECTION_MASK:I = 0x4000

.field public static final ERROR_CONNECTION_STATE_MASK:I = 0x8000

.field public static final ERROR_CRC_ERROR:I = 0x100d

.field public static final ERROR_DEVICE_DISCONNECTED:I = 0x1000

.field public static final ERROR_DEVICE_NOT_BONDED:I = 0x100e

.field public static final ERROR_FILE_ERROR:I = 0x1002

.field public static final ERROR_FILE_INVALID:I = 0x1003

.field public static final ERROR_FILE_IO_EXCEPTION:I = 0x1004

.field public static final ERROR_FILE_NOT_FOUND:I = 0x1001

.field public static final ERROR_FILE_SIZE_INVALID:I = 0x100c

.field public static final ERROR_FILE_TYPE_UNSUPPORTED:I = 0x1009

.field public static final ERROR_INIT_PACKET_REQUIRED:I = 0x100b

.field public static final ERROR_INVALID_RESPONSE:I = 0x1008

.field public static final ERROR_MASK:I = 0x1000

.field public static final ERROR_REMOTE_MASK:I = 0x2000

.field public static final ERROR_REMOTE_TYPE_LEGACY:I = 0x100

.field public static final ERROR_REMOTE_TYPE_SECURE:I = 0x200

.field public static final ERROR_REMOTE_TYPE_SECURE_BUTTONLESS:I = 0x800

.field public static final ERROR_REMOTE_TYPE_SECURE_EXTENDED:I = 0x400

.field public static final ERROR_SERVICE_DISCOVERY_NOT_STARTED:I = 0x1005

.field public static final ERROR_SERVICE_NOT_FOUND:I = 0x1006

.field public static final ERROR_TYPE_COMMUNICATION:I = 0x2

.field public static final ERROR_TYPE_COMMUNICATION_STATE:I = 0x1

.field public static final ERROR_TYPE_DFU_REMOTE:I = 0x3

.field public static final ERROR_TYPE_OTHER:I = 0x0

.field public static final EXTRA_ACTION:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_ACTION"

.field private static final EXTRA_ATTEMPT:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT"

.field public static final EXTRA_AVG_SPEED_B_PER_MS:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_AVG_SPEED_B_PER_MS"

.field public static final EXTRA_CUSTOM_UUIDS_FOR_BUTTONLESS_DFU_WITHOUT_BOND_SHARING:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_CUSTOM_UUIDS_FOR_BUTTONLESS_DFU_WITHOUT_BOND_SHARING"

.field public static final EXTRA_CUSTOM_UUIDS_FOR_BUTTONLESS_DFU_WITH_BOND_SHARING:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_CUSTOM_UUIDS_FOR_BUTTONLESS_DFU_WITH_BOND_SHARING"

.field public static final EXTRA_CUSTOM_UUIDS_FOR_EXPERIMENTAL_BUTTONLESS_DFU:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_CUSTOM_UUIDS_FOR_EXPERIMENTAL_BUTTONLESS_DFU"

.field public static final EXTRA_CUSTOM_UUIDS_FOR_LEGACY_DFU:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_CUSTOM_UUIDS_FOR_LEGACY_DFU"

.field public static final EXTRA_CUSTOM_UUIDS_FOR_SECURE_DFU:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_CUSTOM_UUIDS_FOR_SECURE_DFU"

.field public static final EXTRA_DATA:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_DATA"

.field public static final EXTRA_DEVICE_ADDRESS:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS"

.field public static final EXTRA_DEVICE_NAME:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME"

.field public static final EXTRA_DISABLE_NOTIFICATION:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_DISABLE_NOTIFICATION"

.field public static final EXTRA_ERROR_TYPE:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE"

.field public static final EXTRA_FILE_MIME_TYPE:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_MIME_TYPE"

.field public static final EXTRA_FILE_PATH:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_FILE_PATH"

.field public static final EXTRA_FILE_RES_ID:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_FILE_RES_ID"

.field public static final EXTRA_FILE_TYPE:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_FILE_TYPE"

.field public static final EXTRA_FILE_URI:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_FILE_URI"

.field public static final EXTRA_FORCE_DFU:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_FORCE_DFU"

.field public static final EXTRA_FOREGROUND_SERVICE:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_FOREGROUND_SERVICE"

.field public static final EXTRA_INIT_FILE_PATH:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_PATH"

.field public static final EXTRA_INIT_FILE_RES_ID:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_RES_ID"

.field public static final EXTRA_INIT_FILE_URI:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_URI"

.field public static final EXTRA_KEEP_BOND:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND"

.field public static final EXTRA_LOG_LEVEL:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL"

.field public static final EXTRA_LOG_MESSAGE:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO"

.field public static final EXTRA_PACKET_RECEIPT_NOTIFICATIONS_ENABLED:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_PRN_ENABLED"

.field public static final EXTRA_PACKET_RECEIPT_NOTIFICATIONS_VALUE:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_PRN_VALUE"

.field public static final EXTRA_PARTS_TOTAL:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_PARTS_TOTAL"

.field public static final EXTRA_PART_CURRENT:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_PART_CURRENT"

.field public static final EXTRA_PROGRESS:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS"

.field public static final EXTRA_RESTORE_BOND:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND"

.field public static final EXTRA_SPEED_B_PER_MS:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_SPEED_B_PER_MS"

.field public static final EXTRA_UNSAFE_EXPERIMENTAL_BUTTONLESS_DFU:Ljava/lang/String; = "no.nordicsemi.android.dfu.extra.EXTRA_UNSAFE_EXPERIMENTAL_BUTTONLESS_DFU"

.field public static final LOG_LEVEL_APPLICATION:I = 0xa

.field public static final LOG_LEVEL_DEBUG:I = 0x0

.field public static final LOG_LEVEL_ERROR:I = 0x14

.field public static final LOG_LEVEL_INFO:I = 0x5

.field public static final LOG_LEVEL_VERBOSE:I = 0x1

.field public static final LOG_LEVEL_WARNING:I = 0xf

.field public static final MIME_TYPE_OCTET_STREAM:Ljava/lang/String; = "application/octet-stream"

.field public static final MIME_TYPE_ZIP:Ljava/lang/String; = "application/zip"

.field public static final NOTIFICATION_CHANNEL_DFU:Ljava/lang/String; = "dfu"

.field public static final NOTIFICATION_ID:I = 0x11b

.field public static final PROGRESS_ABORTED:I = -0x7

.field public static final PROGRESS_COMPLETED:I = -0x6

.field public static final PROGRESS_CONNECTING:I = -0x1

.field public static final PROGRESS_DISCONNECTING:I = -0x5

.field public static final PROGRESS_ENABLING_DFU_MODE:I = -0x3

.field public static final PROGRESS_STARTING:I = -0x2

.field public static final PROGRESS_VALIDATING:I = -0x4

.field protected static final STATE_CLOSED:I = -0x5

.field protected static final STATE_CONNECTED:I = -0x2

.field protected static final STATE_CONNECTED_AND_READY:I = -0x3

.field protected static final STATE_CONNECTING:I = -0x1

.field protected static final STATE_DISCONNECTED:I = 0x0

.field protected static final STATE_DISCONNECTING:I = -0x4

.field private static final TAG:Ljava/lang/String; = "DfuBaseService"

.field public static final TYPE_APPLICATION:I = 0x4

.field public static final TYPE_AUTO:I = 0x0

.field public static final TYPE_BOOTLOADER:I = 0x2

.field public static final TYPE_SOFT_DEVICE:I = 0x1


# instance fields
.field private mAborted:Z

.field private mBluetoothAdapter:Landroid/bluetooth/BluetoothAdapter;

.field private final mBondStateBroadcastReceiver:Landroid/content/BroadcastReceiver;

.field protected mConnectionState:I

.field private final mConnectionStateBroadcastReceiver:Landroid/content/BroadcastReceiver;

.field private mDeviceAddress:Ljava/lang/String;

.field private mDeviceName:Ljava/lang/String;

.field private final mDfuActionReceiver:Landroid/content/BroadcastReceiver;

.field private mDfuServiceImpl:Lno/nordicsemi/android/dfu/DfuCallback;

.field private mDisableNotification:Z

.field private mError:I

.field private mFirmwareInputStream:Ljava/io/InputStream;

.field private final mGattCallback:Landroid/bluetooth/BluetoothGattCallback;

.field private mInitFileInputStream:Ljava/io/InputStream;

.field private mLastNotificationTime:J

.field private mLastProgress:I

.field private final mLock:Ljava/lang/Object;

.field mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;


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

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

    sput-boolean v0, Lno/nordicsemi/android/dfu/DfuBaseService;->DEBUG:Z

    return-void
.end method

.method public constructor <init>()V
    .registers 2

    .prologue
    .line 832
    const-string v0, "DfuBaseService"

    invoke-direct {p0, v0}, Landroid/app/IntentService;-><init>(Ljava/lang/String;)V

    .line 598
    new-instance v0, Ljava/lang/Object;

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

    iput-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mLock:Ljava/lang/Object;

    .line 620
    const/4 v0, -0x1

    iput v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mLastProgress:I

    .line 630
    new-instance v0, Lno/nordicsemi/android/dfu/DfuBaseService$1;

    invoke-direct {v0, p0}, Lno/nordicsemi/android/dfu/DfuBaseService$1;-><init>(Lno/nordicsemi/android/dfu/DfuBaseService;)V

    iput-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDfuActionReceiver:Landroid/content/BroadcastReceiver;

    .line 657
    new-instance v0, Lno/nordicsemi/android/dfu/DfuBaseService$2;

    invoke-direct {v0, p0}, Lno/nordicsemi/android/dfu/DfuBaseService$2;-><init>(Lno/nordicsemi/android/dfu/DfuBaseService;)V

    iput-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mBondStateBroadcastReceiver:Landroid/content/BroadcastReceiver;

    .line 675
    new-instance v0, Lno/nordicsemi/android/dfu/DfuBaseService$3;

    invoke-direct {v0, p0}, Lno/nordicsemi/android/dfu/DfuBaseService$3;-><init>(Lno/nordicsemi/android/dfu/DfuBaseService;)V

    iput-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mConnectionStateBroadcastReceiver:Landroid/content/BroadcastReceiver;

    .line 708
    new-instance v0, Lno/nordicsemi/android/dfu/DfuBaseService$4;

    invoke-direct {v0, p0}, Lno/nordicsemi/android/dfu/DfuBaseService$4;-><init>(Lno/nordicsemi/android/dfu/DfuBaseService;)V

    iput-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mGattCallback:Landroid/bluetooth/BluetoothGattCallback;

    .line 833
    return-void
.end method

.method static synthetic access$000(Lno/nordicsemi/android/dfu/DfuBaseService;Ljava/lang/String;)V
    .registers 2

    .prologue
    .line 93
    invoke-direct {p0, p1}, Lno/nordicsemi/android/dfu/DfuBaseService;->logi(Ljava/lang/String;)V

    return-void
.end method

.method static synthetic access$100(Lno/nordicsemi/android/dfu/DfuBaseService;)Lno/nordicsemi/android/dfu/DfuCallback;
    .registers 2

    .prologue
    .line 93
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDfuServiceImpl:Lno/nordicsemi/android/dfu/DfuCallback;

    return-object v0
.end method

.method static synthetic access$202(Lno/nordicsemi/android/dfu/DfuBaseService;Z)Z
    .registers 2

    .prologue
    .line 93
    iput-boolean p1, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mAborted:Z

    return p1
.end method

.method static synthetic access$300(Lno/nordicsemi/android/dfu/DfuBaseService;)Ljava/lang/String;
    .registers 2

    .prologue
    .line 93
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDeviceAddress:Ljava/lang/String;

    return-object v0
.end method

.method static synthetic access$402(Lno/nordicsemi/android/dfu/DfuBaseService;I)I
    .registers 2

    .prologue
    .line 93
    iput p1, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mError:I

    return p1
.end method

.method static synthetic access$500(Lno/nordicsemi/android/dfu/DfuBaseService;Ljava/lang/String;)V
    .registers 2

    .prologue
    .line 93
    invoke-direct {p0, p1}, Lno/nordicsemi/android/dfu/DfuBaseService;->logw(Ljava/lang/String;)V

    return-void
.end method

.method static synthetic access$600(Lno/nordicsemi/android/dfu/DfuBaseService;Ljava/lang/String;)V
    .registers 2

    .prologue
    .line 93
    invoke-direct {p0, p1}, Lno/nordicsemi/android/dfu/DfuBaseService;->loge(Ljava/lang/String;)V

    return-void
.end method

.method static synthetic access$700(Lno/nordicsemi/android/dfu/DfuBaseService;)Ljava/lang/Object;
    .registers 2

    .prologue
    .line 93
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mLock:Ljava/lang/Object;

    return-object v0
.end method

.method private initialize()Z
    .registers 3

    .prologue
    const/4 v1, 0x0

    .line 1714
    const-string v0, "bluetooth"

    invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/bluetooth/BluetoothManager;

    .line 1715
    if-nez v0, :cond_12

    .line 1716
    const-string v0, "Unable to initialize BluetoothManager."

    invoke-direct {p0, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->loge(Ljava/lang/String;)V

    move v0, v1

    .line 1726
    :goto_11
    return v0

    .line 1720
    :cond_12
    invoke-virtual {v0}, Landroid/bluetooth/BluetoothManager;->getAdapter()Landroid/bluetooth/BluetoothAdapter;

    move-result-object v0

    iput-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mBluetoothAdapter:Landroid/bluetooth/BluetoothAdapter;

    .line 1721
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mBluetoothAdapter:Landroid/bluetooth/BluetoothAdapter;

    if-nez v0, :cond_23

    .line 1722
    const-string v0, "Unable to obtain a BluetoothAdapter."

    invoke-direct {p0, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->loge(Ljava/lang/String;)V

    move v0, v1

    .line 1723
    goto :goto_11

    .line 1726
    :cond_23
    const/4 v0, 0x1

    goto :goto_11
.end method

.method private loge(Ljava/lang/String;)V
    .registers 2

    .prologue
    .line 1731
    return-void
.end method

.method private loge(Ljava/lang/String;Ljava/lang/Throwable;)V
    .registers 3

    .prologue
    .line 1735
    return-void
.end method

.method private logi(Ljava/lang/String;)V
    .registers 2

    .prologue
    .line 1745
    return-void
.end method

.method private logw(Ljava/lang/String;)V
    .registers 2

    .prologue
    .line 1740
    return-void
.end method

.method private static makeDfuActionIntentFilter()Landroid/content/IntentFilter;
    .registers 2

    .prologue
    .line 836
    new-instance v0, Landroid/content/IntentFilter;

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

    .line 837
    const-string v1, "no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION"

    invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V

    .line 838
    return-object v0
.end method

.method private openInputStream(ILjava/lang/String;II)Ljava/io/InputStream;
    .registers 8

    .prologue
    .line 1269
    invoke-virtual {p0}, Lno/nordicsemi/android/dfu/DfuBaseService;->getResources()Landroid/content/res/Resources;

    move-result-object v0

    invoke-virtual {v0, p1}, Landroid/content/res/Resources;->openRawResource(I)Ljava/io/InputStream;

    move-result-object v1

    .line 1270
    const-string v0, "application/zip"

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

    move-result v0

    if-eqz v0, :cond_16

    .line 1271
    new-instance v0, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;

    invoke-direct {v0, v1, p3, p4}, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;-><init>(Ljava/io/InputStream;II)V

    .line 1277
    :goto_15
    return-object v0

    .line 1272
    :cond_16
    const/4 v0, 0x2

    invoke-virtual {v1, v0}, Ljava/io/InputStream;->mark(I)V

    .line 1273
    invoke-virtual {v1}, Ljava/io/InputStream;->read()I

    move-result v0

    .line 1274
    invoke-virtual {v1}, Ljava/io/InputStream;->reset()V

    .line 1275
    const/16 v2, 0x3a

    if-ne v0, v2, :cond_2b

    .line 1276
    new-instance v0, Lno/nordicsemi/android/dfu/internal/HexInputStream;

    invoke-direct {v0, v1, p3}, Lno/nordicsemi/android/dfu/internal/HexInputStream;-><init>(Ljava/io/InputStream;I)V

    goto :goto_15

    :cond_2b
    move-object v0, v1

    .line 1277
    goto :goto_15
.end method

.method private openInputStream(Landroid/net/Uri;Ljava/lang/String;II)Ljava/io/InputStream;
    .registers 12

    .prologue
    const/4 v1, 0x0

    const/4 v3, 0x0

    .line 1240
    invoke-virtual {p0}, Lno/nordicsemi/android/dfu/DfuBaseService;->getContentResolver()Landroid/content/ContentResolver;

    move-result-object v0

    invoke-virtual {v0, p1}, Landroid/content/ContentResolver;->openInputStream(Landroid/net/Uri;)Ljava/io/InputStream;

    move-result-object v6

    .line 1241
    const-string v0, "application/zip"

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

    move-result v0

    if-eqz v0, :cond_18

    .line 1242
    new-instance v0, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;

    invoke-direct {v0, v6, p3, p4}, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;-><init>(Ljava/io/InputStream;II)V

    .line 1256
    :goto_17
    return-object v0

    .line 1244
    :cond_18
    const/4 v0, 0x1

    new-array v2, v0, [Ljava/lang/String;

    const-string v0, "_display_name"

    aput-object v0, v2, v1

    .line 1245
    invoke-virtual {p0}, Lno/nordicsemi/android/dfu/DfuBaseService;->getContentResolver()Landroid/content/ContentResolver;

    move-result-object v0

    move-object v1, p1

    move-object v4, v3

    move-object v5, v3

    invoke-virtual/range {v0 .. v5}, Landroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;

    move-result-object v1

    .line 1247
    :try_start_2a
    invoke-interface {v1}, Landroid/database/Cursor;->moveToNext()Z

    move-result v0

    if-eqz v0, :cond_4c

    .line 1248
    const/4 v0, 0x0

    invoke-interface {v1, v0}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;

    move-result-object v0

    .line 1250
    sget-object v2, Ljava/util/Locale;->US:Ljava/util/Locale;

    invoke-virtual {v0, v2}, Ljava/lang/String;->toLowerCase(Ljava/util/Locale;)Ljava/lang/String;

    move-result-object v0

    const-string v2, "hex"

    invoke-virtual {v0, v2}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_4c

    .line 1251
    new-instance v0, Lno/nordicsemi/android/dfu/internal/HexInputStream;

    invoke-direct {v0, v6, p3}, Lno/nordicsemi/android/dfu/internal/HexInputStream;-><init>(Ljava/io/InputStream;I)V
    :try_end_48
    .catchall {:try_start_2a .. :try_end_48} :catchall_51

    .line 1254
    invoke-interface {v1}, Landroid/database/Cursor;->close()V

    goto :goto_17

    :cond_4c
    invoke-interface {v1}, Landroid/database/Cursor;->close()V

    move-object v0, v6

    .line 1256
    goto :goto_17

    .line 1254
    :catchall_51
    move-exception v0

    invoke-interface {v1}, Landroid/database/Cursor;->close()V

    throw v0
.end method

.method private openInputStream(Ljava/lang/String;Ljava/lang/String;II)Ljava/io/InputStream;
    .registers 8

    .prologue
    .line 1222
    new-instance v1, Ljava/io/FileInputStream;

    invoke-direct {v1, p1}, Ljava/io/FileInputStream;-><init>(Ljava/lang/String;)V

    .line 1223
    const-string v0, "application/zip"

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

    move-result v0

    if-eqz v0, :cond_13

    .line 1224
    new-instance v0, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;

    invoke-direct {v0, v1, p3, p4}, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;-><init>(Ljava/io/InputStream;II)V

    .line 1227
    :goto_12
    return-object v0

    .line 1225
    :cond_13
    sget-object v0, Ljava/util/Locale;->US:Ljava/util/Locale;

    invoke-virtual {p1, v0}, Ljava/lang/String;->toLowerCase(Ljava/util/Locale;)Ljava/lang/String;

    move-result-object v0

    const-string v2, "hex"

    invoke-virtual {v0, v2}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_27

    .line 1226
    new-instance v0, Lno/nordicsemi/android/dfu/internal/HexInputStream;

    invoke-direct {v0, v1, p3}, Lno/nordicsemi/android/dfu/internal/HexInputStream;-><init>(Ljava/io/InputStream;I)V

    goto :goto_12

    :cond_27
    move-object v0, v1

    .line 1227
    goto :goto_12
.end method

.method private report(I)V
    .registers 8

    .prologue
    const/4 v5, 0x0

    .line 1534
    invoke-direct {p0, p1}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendErrorBroadcast(I)V

    .line 1536
    iget-boolean v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDisableNotification:Z

    if-eqz v0, :cond_9

    .line 1567
    :goto_8
    return-void

    .line 1540
    :cond_9
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDeviceAddress:Ljava/lang/String;

    .line 1541
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDeviceName:Ljava/lang/String;

    if-eqz v0, :cond_84

    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDeviceName:Ljava/lang/String;

    .line 1543
    :goto_11
    new-instance v2, Landroid/support/v4/app/aw;

    const-string v3, "dfu"

    invoke-direct {v2, p0, v3}, Landroid/support/v4/app/aw;-><init>(Landroid/content/Context;Ljava/lang/String;)V

    const v3, 0x1080088

    .line 1544
    invoke-virtual {v2, v3}, Landroid/support/v4/app/aw;->r(I)Landroid/support/v4/app/aw;

    move-result-object v2

    .line 1545
    invoke-virtual {v2}, Landroid/support/v4/app/aw;->aP()Landroid/support/v4/app/aw;

    move-result-object v2

    .line 11353
    const/high16 v3, -0x10000

    iput v3, v2, Landroid/support/v4/app/aw;->mColor:I

    .line 12044
    const/4 v3, 0x2

    invoke-virtual {v2, v3, v5}, Landroid/support/v4/app/aw;->c(IZ)V

    .line 1547
    sget v3, Lno/nordicsemi/android/dfu/R$string;->dfu_status_error:I

    .line 1548
    invoke-virtual {p0, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v3

    invoke-virtual {v2, v3}, Landroid/support/v4/app/aw;->b(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v2

    const v3, 0x1080089

    .line 1549
    invoke-virtual {v2, v3}, Landroid/support/v4/app/aw;->r(I)Landroid/support/v4/app/aw;

    move-result-object v2

    sget v3, Lno/nordicsemi/android/dfu/R$string;->dfu_status_error_msg:I

    .line 1550
    invoke-virtual {p0, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v3

    invoke-virtual {v2, v3}, Landroid/support/v4/app/aw;->c(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v2

    .line 1551
    invoke-virtual {v2}, Landroid/support/v4/app/aw;->aQ()Landroid/support/v4/app/aw;

    move-result-object v2

    .line 1554
    new-instance v3, Landroid/content/Intent;

    invoke-virtual {p0}, Lno/nordicsemi/android/dfu/DfuBaseService;->getNotificationTarget()Ljava/lang/Class;

    move-result-object v4

    invoke-direct {v3, p0, v4}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V

    .line 1555
    const/high16 v4, 0x10000000

    invoke-virtual {v3, v4}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;

    .line 1556
    const-string v4, "no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS"

    invoke-virtual {v3, v4, v1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

    .line 1557
    const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME"

    invoke-virtual {v3, v1, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

    .line 1558
    const-string v0, "no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS"

    invoke-virtual {v3, v0, p1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;

    .line 1559
    const/high16 v0, 0x8000000

    invoke-static {p0, v5, v3, v0}, Landroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;

    move-result-object v0

    .line 12888
    iput-object v0, v2, Landroid/support/v4/app/aw;->nD:Landroid/app/PendingIntent;

    .line 1563
    invoke-virtual {p0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->updateErrorNotification(Landroid/support/v4/app/aw;)V

    .line 1565
    const-string v0, "notification"

    invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/app/NotificationManager;

    .line 1566
    const/16 v1, 0x11b

    invoke-virtual {v2}, Landroid/support/v4/app/aw;->build()Landroid/app/Notification;

    move-result-object v2

    invoke-virtual {v0, v1, v2}, Landroid/app/NotificationManager;->notify(ILandroid/app/Notification;)V

    goto :goto_8

    .line 1541
    :cond_84
    sget v0, Lno/nordicsemi/android/dfu/R$string;->dfu_unknown_name:I

    invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v0

    goto :goto_11
.end method

.method private sendErrorBroadcast(I)V
    .registers 5

    .prologue
    .line 1679
    new-instance v0, Landroid/content/Intent;

    const-string v1, "no.nordicsemi.android.dfu.broadcast.BROADCAST_ERROR"

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

    .line 1680
    and-int/lit16 v1, p1, 0x4000

    if-lez v1, :cond_27

    .line 1681
    const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_DATA"

    and-int/lit16 v2, p1, -0x4001

    invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;

    .line 1682
    const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE"

    const/4 v2, 0x2

    invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;

    .line 1693
    :goto_18
    const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS"

    iget-object v2, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDeviceAddress:Ljava/lang/String;

    invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

    .line 1694
    invoke-static {p0}, Landroid/support/v4/content/i;->i(Landroid/content/Context;)Landroid/support/v4/content/i;

    move-result-object v1

    invoke-virtual {v1, v0}, Landroid/support/v4/content/i;->a(Landroid/content/Intent;)Z

    .line 1695
    return-void

    .line 1683
    :cond_27
    const v1, 0x8000

    and-int/2addr v1, p1

    if-lez v1, :cond_3d

    .line 1684
    const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_DATA"

    const v2, -0x8001

    and-int/2addr v2, p1

    invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;

    .line 1685
    const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE"

    const/4 v2, 0x1

    invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;

    goto :goto_18

    .line 1686
    :cond_3d
    and-int/lit16 v1, p1, 0x2000

    if-lez v1, :cond_4f

    .line 1687
    const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_DATA"

    and-int/lit16 v2, p1, -0x2001

    invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;

    .line 1688
    const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE"

    const/4 v2, 0x3

    invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;

    goto :goto_18

    .line 1690
    :cond_4f
    const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_DATA"

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

    .line 1691
    const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE"

    const/4 v2, 0x0

    invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;

    goto :goto_18
.end method

.method private sendProgressBroadcast(Lno/nordicsemi/android/dfu/DfuProgressInfo;)V
    .registers 5

    .prologue
    .line 1668
    new-instance v0, Landroid/content/Intent;

    const-string v1, "no.nordicsemi.android.dfu.broadcast.BROADCAST_PROGRESS"

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

    .line 1669
    const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_DATA"

    invoke-virtual {p1}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->getProgress()I

    move-result v2

    invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;

    .line 1670
    const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS"

    iget-object v2, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDeviceAddress:Ljava/lang/String;

    invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

    .line 1671
    const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_PART_CURRENT"

    invoke-virtual {p1}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->getCurrentPart()I

    move-result v2

    invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;

    .line 1672
    const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_PARTS_TOTAL"

    invoke-virtual {p1}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->getTotalParts()I

    move-result v2

    invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;

    .line 1673
    const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_SPEED_B_PER_MS"

    invoke-virtual {p1}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->getSpeed()F

    move-result v2

    invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;F)Landroid/content/Intent;

    .line 1674
    const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_AVG_SPEED_B_PER_MS"

    invoke-virtual {p1}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->getAverageSpeed()F

    move-result v2

    invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;F)Landroid/content/Intent;

    .line 1675
    invoke-static {p0}, Landroid/support/v4/content/i;->i(Landroid/content/Context;)Landroid/support/v4/content/i;

    move-result-object v1

    invoke-virtual {v1, v0}, Landroid/support/v4/content/i;->a(Landroid/content/Intent;)Z

    .line 1676
    return-void
.end method

.method private startForeground()V
    .registers 5

    .prologue
    .line 1578
    new-instance v0, Landroid/support/v4/app/aw;

    const-string v1, "dfu"

    invoke-direct {v0, p0, v1}, Landroid/support/v4/app/aw;-><init>(Landroid/content/Context;Ljava/lang/String;)V

    const v1, 0x1080088

    .line 1579
    invoke-virtual {v0, v1}, Landroid/support/v4/app/aw;->r(I)Landroid/support/v4/app/aw;

    move-result-object v0

    sget v1, Lno/nordicsemi/android/dfu/R$string;->dfu_status_foreground_title:I

    .line 1580
    invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Landroid/support/v4/app/aw;->b(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v0

    sget v1, Lno/nordicsemi/android/dfu/R$string;->dfu_status_foreground_content:I

    invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Landroid/support/v4/app/aw;->c(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v0

    .line 13353
    const v1, -0x777778

    iput v1, v0, Landroid/support/v4/app/aw;->mColor:I

    .line 14159
    const/4 v1, -0x1

    iput v1, v0, Landroid/support/v4/app/aw;->mPriority:I

    .line 15044
    const/4 v1, 0x2

    const/4 v2, 0x1

    invoke-virtual {v0, v1, v2}, Landroid/support/v4/app/aw;->c(IZ)V

    .line 1586
    invoke-virtual {p0}, Lno/nordicsemi/android/dfu/DfuBaseService;->getNotificationTarget()Ljava/lang/Class;

    move-result-object v1

    .line 1587
    if-eqz v1, :cond_63

    .line 1588
    new-instance v2, Landroid/content/Intent;

    invoke-direct {v2, p0, v1}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V

    .line 1589
    const/high16 v1, 0x10000000

    invoke-virtual {v2, v1}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;

    .line 1590
    const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS"

    iget-object v3, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDeviceAddress:Ljava/lang/String;

    invoke-virtual {v2, v1, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

    .line 1591
    const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME"

    iget-object v3, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDeviceName:Ljava/lang/String;

    invoke-virtual {v2, v1, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

    .line 1592
    const/4 v1, 0x0

    const/high16 v3, 0x8000000

    invoke-static {p0, v1, v2, v3}, Landroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;

    move-result-object v1

    .line 15888
    iput-object v1, v0, Landroid/support/v4/app/aw;->nD:Landroid/app/PendingIntent;

    .line 1600
    :goto_56
    invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->updateForegroundNotification(Landroid/support/v4/app/aw;)V

    .line 1602
    const/16 v1, 0x11b

    invoke-virtual {v0}, Landroid/support/v4/app/aw;->build()Landroid/app/Notification;

    move-result-object v0

    invoke-virtual {p0, v1, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->startForeground(ILandroid/app/Notification;)V

    .line 1603
    return-void

    .line 1595
    :cond_63
    const-string v1, "getNotificationTarget() should not return null if the service is to be started as a foreground service"

    invoke-direct {p0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->logw(Ljava/lang/String;)V

    goto :goto_56
.end method


# virtual methods
.method protected close(Landroid/bluetooth/BluetoothGatt;)V
    .registers 4

    .prologue
    .line 1389
    const-string v0, "Cleaning up..."

    invoke-direct {p0, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->logi(Ljava/lang/String;)V

    .line 1390
    const/4 v0, 0x0

    const-string v1, "gatt.close()"

    invoke-virtual {p0, v0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1391
    invoke-virtual {p1}, Landroid/bluetooth/BluetoothGatt;->close()V

    .line 1392
    const/4 v0, -0x5

    iput v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mConnectionState:I

    .line 1393
    return-void
.end method

.method protected connect(Ljava/lang/String;)Landroid/bluetooth/BluetoothGatt;
    .registers 7

    .prologue
    const/4 v2, 0x0

    const/4 v4, -0x1

    .line 1288
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mBluetoothAdapter:Landroid/bluetooth/BluetoothAdapter;

    invoke-virtual {v0}, Landroid/bluetooth/BluetoothAdapter;->isEnabled()Z

    move-result v0

    if-nez v0, :cond_c

    .line 1289
    const/4 v0, 0x0

    .line 1308
    :goto_b
    return-object v0

    .line 1291
    :cond_c
    iput v4, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mConnectionState:I

    .line 1293
    const-string v0, "Connecting to the device..."

    invoke-direct {p0, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->logi(Ljava/lang/String;)V

    .line 1294
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mBluetoothAdapter:Landroid/bluetooth/BluetoothAdapter;

    invoke-virtual {v0, p1}, Landroid/bluetooth/BluetoothAdapter;->getRemoteDevice(Ljava/lang/String;)Landroid/bluetooth/BluetoothDevice;

    move-result-object v0

    .line 1295
    const-string v1, "gatt = device.connectGatt(autoConnect = false)"

    invoke-virtual {p0, v2, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1296
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mGattCallback:Landroid/bluetooth/BluetoothGattCallback;

    invoke-virtual {v0, p0, v2, v1}, Landroid/bluetooth/BluetoothDevice;->connectGatt(Landroid/content/Context;ZLandroid/bluetooth/BluetoothGattCallback;)Landroid/bluetooth/BluetoothGatt;

    move-result-object v0

    .line 1301
    :try_start_24
    iget-object v2, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mLock:Ljava/lang/Object;

    monitor-enter v2
    :try_end_27
    .catch Ljava/lang/InterruptedException; {:try_start_24 .. :try_end_27} :catch_3d

    .line 1302
    :goto_27
    :try_start_27
    iget v1, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mConnectionState:I

    if-eq v1, v4, :cond_30

    iget v1, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mConnectionState:I

    const/4 v3, -0x2

    if-ne v1, v3, :cond_44

    :cond_30
    iget v1, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mError:I

    if-nez v1, :cond_44

    .line 1303
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mLock:Ljava/lang/Object;

    invoke-virtual {v1}, Ljava/lang/Object;->wait()V

    goto :goto_27

    .line 1304
    :catchall_3a
    move-exception v1

    monitor-exit v2
    :try_end_3c
    .catchall {:try_start_27 .. :try_end_3c} :catchall_3a

    :try_start_3c
    throw v1
    :try_end_3d
    .catch Ljava/lang/InterruptedException; {:try_start_3c .. :try_end_3d} :catch_3d

    .line 1305
    :catch_3d
    move-exception v1

    .line 1306
    const-string v2, "Sleeping interrupted"

    invoke-direct {p0, v2, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->loge(Ljava/lang/String;Ljava/lang/Throwable;)V

    goto :goto_b

    .line 1304
    :cond_44
    :try_start_44
    monitor-exit v2
    :try_end_45
    .catchall {:try_start_44 .. :try_end_45} :catchall_3a

    goto :goto_b
.end method

.method protected disconnect(Landroid/bluetooth/BluetoothGatt;)V
    .registers 4

    .prologue
    .line 1338
    iget v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mConnectionState:I

    if-nez v0, :cond_5

    .line 1352
    :goto_4
    return-void

    .line 1341
    :cond_5
    const/4 v0, 0x1

    const-string v1, "Disconnecting..."

    invoke-virtual {p0, v0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1342
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;

    const/4 v1, -0x5

    invoke-virtual {v0, v1}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->setProgress(I)V

    .line 1343
    const/4 v0, -0x4

    iput v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mConnectionState:I

    .line 1345
    const-string v0, "Disconnecting from the device..."

    invoke-direct {p0, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->logi(Ljava/lang/String;)V

    .line 1346
    const/4 v0, 0x0

    const-string v1, "gatt.disconnect()"

    invoke-virtual {p0, v0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1347
    invoke-virtual {p1}, Landroid/bluetooth/BluetoothGatt;->disconnect()V

    .line 1350
    invoke-virtual {p0}, Lno/nordicsemi/android/dfu/DfuBaseService;->waitUntilDisconnected()V

    .line 1351
    const/4 v0, 0x5

    const-string v1, "Disconnected"

    invoke-virtual {p0, v0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    goto :goto_4
.end method

.method public abstract getNotificationTarget()Ljava/lang/Class;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/lang/Class",
            "<+",
            "Landroid/app/Activity;",
            ">;"
        }
    .end annotation
.end method

.method public isDebug()Z
    .registers 2

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

    return v0
.end method

.method public onCreate()V
    .registers 4

    .prologue
    .line 843
    invoke-super {p0}, Landroid/app/IntentService;->onCreate()V

    .line 845
    invoke-virtual {p0}, Lno/nordicsemi/android/dfu/DfuBaseService;->isDebug()Z

    move-result v0

    sput-boolean v0, Lno/nordicsemi/android/dfu/DfuBaseService;->DEBUG:Z

    .line 846
    const-string v0, "DFU service created. Version: 1.6.1"

    invoke-direct {p0, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->logi(Ljava/lang/String;)V

    .line 847
    invoke-direct {p0}, Lno/nordicsemi/android/dfu/DfuBaseService;->initialize()Z

    .line 849
    invoke-static {p0}, Landroid/support/v4/content/i;->i(Landroid/content/Context;)Landroid/support/v4/content/i;

    move-result-object v0

    .line 850
    invoke-static {}, Lno/nordicsemi/android/dfu/DfuBaseService;->makeDfuActionIntentFilter()Landroid/content/IntentFilter;

    move-result-object v1

    .line 851
    iget-object v2, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDfuActionReceiver:Landroid/content/BroadcastReceiver;

    invoke-virtual {v0, v2, v1}, Landroid/support/v4/content/i;->a(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)V

    .line 852
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDfuActionReceiver:Landroid/content/BroadcastReceiver;

    invoke-virtual {p0, v0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;

    .line 854
    new-instance v0, Landroid/content/IntentFilter;

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

    .line 856
    const-string v1, "android.bluetooth.device.action.ACL_CONNECTED"

    invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V

    .line 857
    const-string v1, "android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED"

    invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V

    .line 858
    const-string v1, "android.bluetooth.device.action.ACL_DISCONNECTED"

    invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V

    .line 859
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mConnectionStateBroadcastReceiver:Landroid/content/BroadcastReceiver;

    invoke-virtual {p0, v1, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;

    .line 861
    new-instance v0, Landroid/content/IntentFilter;

    const-string v1, "android.bluetooth.device.action.BOND_STATE_CHANGED"

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

    .line 862
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mBondStateBroadcastReceiver:Landroid/content/BroadcastReceiver;

    invoke-virtual {p0, v1, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;

    .line 863
    return-void
.end method

.method public onDestroy()V
    .registers 4

    .prologue
    const/4 v2, 0x0

    .line 878
    invoke-super {p0}, Landroid/app/IntentService;->onDestroy()V

    .line 880
    invoke-static {p0}, Landroid/support/v4/content/i;->i(Landroid/content/Context;)Landroid/support/v4/content/i;

    move-result-object v0

    .line 881
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDfuActionReceiver:Landroid/content/BroadcastReceiver;

    invoke-virtual {v0, v1}, Landroid/support/v4/content/i;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V

    .line 883
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDfuActionReceiver:Landroid/content/BroadcastReceiver;

    invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V

    .line 884
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mConnectionStateBroadcastReceiver:Landroid/content/BroadcastReceiver;

    invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V

    .line 885
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mBondStateBroadcastReceiver:Landroid/content/BroadcastReceiver;

    invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V

    .line 889
    :try_start_1c
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mFirmwareInputStream:Ljava/io/InputStream;

    if-eqz v0, :cond_25

    .line 890
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mFirmwareInputStream:Ljava/io/InputStream;

    invoke-virtual {v0}, Ljava/io/InputStream;->close()V

    .line 891
    :cond_25
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mInitFileInputStream:Ljava/io/InputStream;

    if-eqz v0, :cond_2e

    .line 892
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mInitFileInputStream:Ljava/io/InputStream;

    invoke-virtual {v0}, Ljava/io/InputStream;->close()V
    :try_end_2e
    .catch Ljava/io/IOException; {:try_start_1c .. :try_end_2e} :catch_38
    .catchall {:try_start_1c .. :try_end_2e} :catchall_3e

    .line 896
    :cond_2e
    iput-object v2, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mFirmwareInputStream:Ljava/io/InputStream;

    .line 897
    iput-object v2, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mInitFileInputStream:Ljava/io/InputStream;

    .line 899
    :goto_32
    const-string v0, "DFU service destroyed"

    invoke-direct {p0, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->logi(Ljava/lang/String;)V

    .line 900
    return-void

    .line 896
    :catch_38
    move-exception v0

    iput-object v2, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mFirmwareInputStream:Ljava/io/InputStream;

    .line 897
    iput-object v2, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mInitFileInputStream:Ljava/io/InputStream;

    goto :goto_32

    .line 896
    :catchall_3e
    move-exception v0

    iput-object v2, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mFirmwareInputStream:Ljava/io/InputStream;

    .line 897
    iput-object v2, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mInitFileInputStream:Ljava/io/InputStream;

    throw v0
.end method

.method protected onHandleIntent(Landroid/content/Intent;)V
    .registers 22

    .prologue
    .line 905
    const-string v2, "no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS"

    move-object/from16 v0, p1

    invoke-virtual {v0, v2}, Landroid/content/Intent;->getStringExtra(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v11

    .line 906
    const-string v2, "no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME"

    move-object/from16 v0, p1

    invoke-virtual {v0, v2}, Landroid/content/Intent;->getStringExtra(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v6

    .line 907
    const-string v2, "no.nordicsemi.android.dfu.extra.EXTRA_DISABLE_NOTIFICATION"

    const/4 v3, 0x0

    move-object/from16 v0, p1

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

    move-result v12

    .line 908
    const-string v2, "no.nordicsemi.android.dfu.extra.EXTRA_FOREGROUND_SERVICE"

    const/4 v3, 0x1

    move-object/from16 v0, p1

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

    move-result v13

    .line 909
    const-string v2, "no.nordicsemi.android.dfu.extra.EXTRA_FILE_PATH"

    move-object/from16 v0, p1

    invoke-virtual {v0, v2}, Landroid/content/Intent;->getStringExtra(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v14

    .line 910
    const-string v2, "no.nordicsemi.android.dfu.extra.EXTRA_FILE_URI"

    move-object/from16 v0, p1

    invoke-virtual {v0, v2}, Landroid/content/Intent;->getParcelableExtra(Ljava/lang/String;)Landroid/os/Parcelable;

    move-result-object v2

    check-cast v2, Landroid/net/Uri;

    .line 911
    const-string v3, "no.nordicsemi.android.dfu.extra.EXTRA_FILE_RES_ID"

    const/4 v4, 0x0

    move-object/from16 v0, p1

    invoke-virtual {v0, v3, v4}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I

    move-result v15

    .line 912
    const-string v3, "no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_PATH"

    move-object/from16 v0, p1

    invoke-virtual {v0, v3}, Landroid/content/Intent;->getStringExtra(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v16

    .line 913
    const-string v3, "no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_URI"

    move-object/from16 v0, p1

    invoke-virtual {v0, v3}, Landroid/content/Intent;->getParcelableExtra(Ljava/lang/String;)Landroid/os/Parcelable;

    move-result-object v3

    check-cast v3, Landroid/net/Uri;

    .line 914
    const-string v4, "no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_RES_ID"

    const/4 v5, 0x0

    move-object/from16 v0, p1

    invoke-virtual {v0, v4, v5}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I

    move-result v17

    .line 915
    const-string v4, "no.nordicsemi.android.dfu.extra.EXTRA_FILE_TYPE"

    const/4 v5, 0x0

    move-object/from16 v0, p1

    invoke-virtual {v0, v4, v5}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I

    move-result v4

    .line 916
    if-eqz v14, :cond_74

    if-nez v4, :cond_74

    .line 917
    sget-object v4, Ljava/util/Locale;->US:Ljava/util/Locale;

    invoke-virtual {v14, v4}, Ljava/lang/String;->toLowerCase(Ljava/util/Locale;)Ljava/lang/String;

    move-result-object v4

    const-string v5, "zip"

    invoke-virtual {v4, v5}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z

    move-result v4

    if-eqz v4, :cond_ab

    const/4 v4, 0x0

    .line 918
    :cond_74
    :goto_74
    const-string v5, "no.nordicsemi.android.dfu.extra.EXTRA_MIME_TYPE"

    move-object/from16 v0, p1

    invoke-virtual {v0, v5}, Landroid/content/Intent;->getStringExtra(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v5

    .line 919
    if-eqz v5, :cond_ad

    move-object v10, v5

    .line 922
    :goto_7f
    and-int/lit8 v5, v4, -0x8

    if-gtz v5, :cond_93

    const-string v5, "application/zip"

    invoke-virtual {v5, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v5

    if-nez v5, :cond_b7

    const-string v5, "application/octet-stream"

    invoke-virtual {v5, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v5

    if-nez v5, :cond_b7

    .line 923
    :cond_93
    const-string v2, "File type or file mime-type not supported"

    move-object/from16 v0, p0

    invoke-direct {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->logw(Ljava/lang/String;)V

    .line 924
    const/16 v2, 0xf

    const-string v3, "File type or file mime-type not supported"

    move-object/from16 v0, p0

    invoke-virtual {v0, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 925
    const/16 v2, 0x1009

    move-object/from16 v0, p0

    invoke-direct {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->report(I)V

    .line 1210
    :cond_aa
    :goto_aa
    return-void

    .line 917
    :cond_ab
    const/4 v4, 0x4

    goto :goto_74

    .line 919
    :cond_ad
    if-nez v4, :cond_b3

    const-string v5, "application/zip"

    move-object v10, v5

    goto :goto_7f

    :cond_b3
    const-string v5, "application/octet-stream"

    move-object v10, v5

    goto :goto_7f

    .line 928
    :cond_b7
    const-string v5, "application/octet-stream"

    invoke-virtual {v5, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v5

    if-eqz v5, :cond_e0

    const/4 v5, 0x1

    if-eq v4, v5, :cond_e0

    const/4 v5, 0x2

    if-eq v4, v5, :cond_e0

    const/4 v5, 0x4

    if-eq v4, v5, :cond_e0

    .line 929
    const-string v2, "Unable to determine file type"

    move-object/from16 v0, p0

    invoke-direct {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->logw(Ljava/lang/String;)V

    .line 930
    const/16 v2, 0xf

    const-string v3, "Unable to determine file type"

    move-object/from16 v0, p0

    invoke-virtual {v0, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 931
    const/16 v2, 0x1009

    move-object/from16 v0, p0

    invoke-direct {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->report(I)V

    goto :goto_aa

    .line 934
    :cond_e0
    if-nez v12, :cond_f0

    invoke-virtual/range {p0 .. p0}, Lno/nordicsemi/android/dfu/DfuBaseService;->getNotificationTarget()Ljava/lang/Class;

    move-result-object v5

    if-nez v5, :cond_f0

    .line 936
    new-instance v2, Ljava/lang/NullPointerException;

    const-string v3, "getNotificationTarget() must not return null if notifications are enabled"

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

    throw v2

    .line 938
    :cond_f0
    if-nez v13, :cond_ff

    sget v5, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v7, 0x1a

    if-lt v5, v7, :cond_ff

    .line 939
    const-string v5, "Foreground service disabled. Android Oreo or newer may kill a background service few moments after user closes the application.\nConsider enabling foreground service using DfuServiceInitiator#setForeground(boolean)"

    move-object/from16 v0, p0

    invoke-direct {v0, v5}, Lno/nordicsemi/android/dfu/DfuBaseService;->logw(Ljava/lang/String;)V

    .line 942
    :cond_ff
    invoke-static/range {p1 .. p1}, Lno/nordicsemi/android/dfu/UuidHelper;->assignCustomUuids(Landroid/content/Intent;)V

    .line 944
    move-object/from16 v0, p0

    iput-object v11, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDeviceAddress:Ljava/lang/String;

    .line 945
    move-object/from16 v0, p0

    iput-object v6, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDeviceName:Ljava/lang/String;

    .line 946
    move-object/from16 v0, p0

    iput-boolean v12, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDisableNotification:Z

    .line 947
    const/4 v5, 0x0

    move-object/from16 v0, p0

    iput v5, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mConnectionState:I

    .line 948
    const/4 v5, 0x0

    move-object/from16 v0, p0

    iput v5, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mError:I

    .line 952
    invoke-static/range {p0 .. p0}, Landroid/preference/PreferenceManager;->getDefaultSharedPreferences(Landroid/content/Context;)Landroid/content/SharedPreferences;

    move-result-object v5

    .line 953
    const-string v6, "settings_mbr_size"

    const-string v7, "4096"

    invoke-interface {v5, v6, v7}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

    move-result-object v5

    .line 956
    :try_start_124
    invoke-static {v5}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
    :try_end_127
    .catch Ljava/lang/NumberFormatException; {:try_start_124 .. :try_end_127} :catch_198

    move-result v5

    .line 957
    if-gez v5, :cond_12b

    .line 958
    const/4 v5, 0x0

    :cond_12b
    move v9, v5

    .line 963
    :goto_12c
    if-eqz v13, :cond_131

    .line 964
    invoke-direct/range {p0 .. p0}, Lno/nordicsemi/android/dfu/DfuBaseService;->startForeground()V

    .line 966
    :cond_131
    const/4 v5, 0x1

    const-string v6, "DFU service started"

    move-object/from16 v0, p0

    invoke-virtual {v0, v5, v6}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 971
    move-object/from16 v0, p0

    iget-object v6, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mFirmwareInputStream:Ljava/io/InputStream;

    .line 972
    move-object/from16 v0, p0

    iget-object v7, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mInitFileInputStream:Ljava/io/InputStream;

    .line 974
    :try_start_141
    move-object/from16 v0, p0

    iget-object v5, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mFirmwareInputStream:Ljava/io/InputStream;
    :try_end_145
    .catchall {:try_start_141 .. :try_end_145} :catchall_337

    if-nez v5, :cond_19d

    const/4 v5, 0x1

    move v8, v5

    .line 978
    :goto_149
    if-eqz v8, :cond_1eb

    .line 985
    const/4 v5, 0x1

    :try_start_14c
    const-string v18, "Opening file..."

    move-object/from16 v0, p0

    move-object/from16 v1, v18

    invoke-virtual {v0, v5, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 986
    if-eqz v2, :cond_1a0

    .line 987
    move-object/from16 v0, p0

    invoke-direct {v0, v2, v10, v9, v4}, Lno/nordicsemi/android/dfu/DfuBaseService;->openInputStream(Landroid/net/Uri;Ljava/lang/String;II)Ljava/io/InputStream;

    move-result-object v6

    .line 998
    :cond_15d
    :goto_15d
    if-eqz v3, :cond_1b2

    .line 1000
    invoke-virtual/range {p0 .. p0}, Lno/nordicsemi/android/dfu/DfuBaseService;->getContentResolver()Landroid/content/ContentResolver;

    move-result-object v2

    invoke-virtual {v2, v3}, Landroid/content/ContentResolver;->openInputStream(Landroid/net/Uri;)Ljava/io/InputStream;

    move-result-object v7

    .line 1009
    :cond_167
    :goto_167
    invoke-virtual {v6}, Ljava/io/InputStream;->available()I

    move-result v2

    .line 1010
    rem-int/lit8 v2, v2, 0x4

    if-eqz v2, :cond_1eb

    .line 1011
    new-instance v2, Lno/nordicsemi/android/dfu/internal/exception/SizeValidationException;

    const-string v3, "The new firmware is not word-aligned."

    invoke-direct {v2, v3}, Lno/nordicsemi/android/dfu/internal/exception/SizeValidationException;-><init>(Ljava/lang/String;)V

    throw v2
    :try_end_177
    .catch Ljava/lang/SecurityException; {:try_start_14c .. :try_end_177} :catch_177
    .catch Ljava/io/FileNotFoundException; {:try_start_14c .. :try_end_177} :catch_1bc
    .catch Lno/nordicsemi/android/dfu/internal/exception/SizeValidationException; {:try_start_14c .. :try_end_177} :catch_211
    .catch Ljava/io/IOException; {:try_start_14c .. :try_end_177} :catch_24b
    .catch Ljava/lang/Exception; {:try_start_14c .. :try_end_177} :catch_291
    .catchall {:try_start_14c .. :try_end_177} :catchall_337

    .line 1042
    :catch_177
    move-exception v2

    .line 1043
    :try_start_178
    const-string v3, "A security exception occurred while opening file"

    move-object/from16 v0, p0

    invoke-direct {v0, v3, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->loge(Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 1044
    const/16 v2, 0x14

    const-string v3, "Opening file failed: Permission required"

    move-object/from16 v0, p0

    invoke-virtual {v0, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1045
    const/16 v2, 0x1001

    move-object/from16 v0, p0

    invoke-direct {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->report(I)V
    :try_end_18f
    .catchall {:try_start_178 .. :try_end_18f} :catchall_337

    .line 1204
    if-eqz v13, :cond_aa

    .line 1207
    move-object/from16 v0, p0

    invoke-virtual {v0, v12}, Lno/nordicsemi/android/dfu/DfuBaseService;->stopForeground(Z)V

    goto/16 :goto_aa

    .line 960
    :catch_198
    move-exception v5

    const/16 v5, 0x1000

    move v9, v5

    goto :goto_12c

    .line 974
    :cond_19d
    const/4 v5, 0x0

    move v8, v5

    goto :goto_149

    .line 988
    :cond_1a0
    if-eqz v14, :cond_1a9

    .line 989
    :try_start_1a2
    move-object/from16 v0, p0

    invoke-direct {v0, v14, v10, v9, v4}, Lno/nordicsemi/android/dfu/DfuBaseService;->openInputStream(Ljava/lang/String;Ljava/lang/String;II)Ljava/io/InputStream;

    move-result-object v6

    goto :goto_15d

    .line 990
    :cond_1a9
    if-lez v15, :cond_15d

    .line 991
    move-object/from16 v0, p0

    invoke-direct {v0, v15, v10, v9, v4}, Lno/nordicsemi/android/dfu/DfuBaseService;->openInputStream(ILjava/lang/String;II)Ljava/io/InputStream;

    move-result-object v6

    goto :goto_15d

    .line 1001
    :cond_1b2
    if-eqz v16, :cond_1dd

    .line 1003
    new-instance v7, Ljava/io/FileInputStream;

    move-object/from16 v0, v16

    invoke-direct {v7, v0}, Ljava/io/FileInputStream;-><init>(Ljava/lang/String;)V
    :try_end_1bb
    .catch Ljava/lang/SecurityException; {:try_start_1a2 .. :try_end_1bb} :catch_177
    .catch Ljava/io/FileNotFoundException; {:try_start_1a2 .. :try_end_1bb} :catch_1bc
    .catch Lno/nordicsemi/android/dfu/internal/exception/SizeValidationException; {:try_start_1a2 .. :try_end_1bb} :catch_211
    .catch Ljava/io/IOException; {:try_start_1a2 .. :try_end_1bb} :catch_24b
    .catch Ljava/lang/Exception; {:try_start_1a2 .. :try_end_1bb} :catch_291
    .catchall {:try_start_1a2 .. :try_end_1bb} :catchall_337

    goto :goto_167

    .line 1047
    :catch_1bc
    move-exception v2

    .line 1048
    :try_start_1bd
    const-string v3, "An exception occurred while opening file"

    move-object/from16 v0, p0

    invoke-direct {v0, v3, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->loge(Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 1049
    const/16 v2, 0x14

    const-string v3, "Opening file failed: File not found"

    move-object/from16 v0, p0

    invoke-virtual {v0, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1050
    const/16 v2, 0x1001

    move-object/from16 v0, p0

    invoke-direct {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->report(I)V
    :try_end_1d4
    .catchall {:try_start_1bd .. :try_end_1d4} :catchall_337

    .line 1204
    if-eqz v13, :cond_aa

    .line 1207
    move-object/from16 v0, p0

    invoke-virtual {v0, v12}, Lno/nordicsemi/android/dfu/DfuBaseService;->stopForeground(Z)V

    goto/16 :goto_aa

    .line 1004
    :cond_1dd
    if-lez v17, :cond_167

    .line 1006
    :try_start_1df
    invoke-virtual/range {p0 .. p0}, Lno/nordicsemi/android/dfu/DfuBaseService;->getResources()Landroid/content/res/Resources;

    move-result-object v2

    move/from16 v0, v17

    invoke-virtual {v2, v0}, Landroid/content/res/Resources;->openRawResource(I)Ljava/io/InputStream;

    move-result-object v7

    goto/16 :goto_167

    .line 1015
    :cond_1eb
    const-string v2, "application/zip"

    invoke-virtual {v2, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v2

    if-eqz v2, :cond_620

    .line 1016
    move-object v0, v6

    check-cast v0, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;

    move-object v2, v0

    .line 1017
    if-nez v4, :cond_232

    .line 1018
    invoke-virtual {v2}, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;->getContentType()I

    move-result v5

    .line 1024
    :goto_1fd
    and-int/lit8 v3, v5, 0x4

    if-lez v3, :cond_237

    invoke-virtual {v2}, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;->applicationImageSize()I

    move-result v3

    rem-int/lit8 v3, v3, 0x4

    if-eqz v3, :cond_237

    .line 1025
    new-instance v2, Lno/nordicsemi/android/dfu/internal/exception/SizeValidationException;

    const-string v3, "Application firmware is not word-aligned."

    invoke-direct {v2, v3}, Lno/nordicsemi/android/dfu/internal/exception/SizeValidationException;-><init>(Ljava/lang/String;)V

    throw v2
    :try_end_211
    .catch Ljava/lang/SecurityException; {:try_start_1df .. :try_end_211} :catch_177
    .catch Ljava/io/FileNotFoundException; {:try_start_1df .. :try_end_211} :catch_1bc
    .catch Lno/nordicsemi/android/dfu/internal/exception/SizeValidationException; {:try_start_1df .. :try_end_211} :catch_211
    .catch Ljava/io/IOException; {:try_start_1df .. :try_end_211} :catch_24b
    .catch Ljava/lang/Exception; {:try_start_1df .. :try_end_211} :catch_291
    .catchall {:try_start_1df .. :try_end_211} :catchall_337

    .line 1052
    :catch_211
    move-exception v2

    .line 1053
    :try_start_212
    const-string v3, "Firmware not word-aligned"

    move-object/from16 v0, p0

    invoke-direct {v0, v3, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->loge(Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 1054
    const/16 v2, 0x14

    const-string v3, "Opening file failed: Firmware size must be word-aligned"

    move-object/from16 v0, p0

    invoke-virtual {v0, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1055
    const/16 v2, 0x100c

    move-object/from16 v0, p0

    invoke-direct {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->report(I)V
    :try_end_229
    .catchall {:try_start_212 .. :try_end_229} :catchall_337

    .line 1204
    if-eqz v13, :cond_aa

    .line 1207
    move-object/from16 v0, p0

    invoke-virtual {v0, v12}, Lno/nordicsemi/android/dfu/DfuBaseService;->stopForeground(Z)V

    goto/16 :goto_aa

    .line 1020
    :cond_232
    :try_start_232
    invoke-virtual {v2, v4}, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;->setContentType(I)I

    move-result v5

    goto :goto_1fd

    .line 1026
    :cond_237
    and-int/lit8 v3, v5, 0x2

    if-lez v3, :cond_27d

    invoke-virtual {v2}, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;->bootloaderImageSize()I

    move-result v3

    rem-int/lit8 v3, v3, 0x4

    if-eqz v3, :cond_27d

    .line 1027
    new-instance v2, Lno/nordicsemi/android/dfu/internal/exception/SizeValidationException;

    const-string v3, "Bootloader firmware is not word-aligned."

    invoke-direct {v2, v3}, Lno/nordicsemi/android/dfu/internal/exception/SizeValidationException;-><init>(Ljava/lang/String;)V

    throw v2
    :try_end_24b
    .catch Ljava/lang/SecurityException; {:try_start_232 .. :try_end_24b} :catch_177
    .catch Ljava/io/FileNotFoundException; {:try_start_232 .. :try_end_24b} :catch_1bc
    .catch Lno/nordicsemi/android/dfu/internal/exception/SizeValidationException; {:try_start_232 .. :try_end_24b} :catch_211
    .catch Ljava/io/IOException; {:try_start_232 .. :try_end_24b} :catch_24b
    .catch Ljava/lang/Exception; {:try_start_232 .. :try_end_24b} :catch_291
    .catchall {:try_start_232 .. :try_end_24b} :catchall_337

    .line 1057
    :catch_24b
    move-exception v2

    .line 1058
    :try_start_24c
    const-string v3, "An exception occurred while calculating file size"

    move-object/from16 v0, p0

    invoke-direct {v0, v3, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->loge(Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 1059
    const/16 v3, 0x14

    new-instance v4, Ljava/lang/StringBuilder;

    const-string v5, "Opening file failed: "

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

    invoke-virtual {v2}, Ljava/io/IOException;->getLocalizedMessage()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v4, v2}, 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

    move-object/from16 v0, p0

    invoke-virtual {v0, v3, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1060
    const/16 v2, 0x1002

    move-object/from16 v0, p0

    invoke-direct {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->report(I)V
    :try_end_274
    .catchall {:try_start_24c .. :try_end_274} :catchall_337

    .line 1204
    if-eqz v13, :cond_aa

    .line 1207
    move-object/from16 v0, p0

    invoke-virtual {v0, v12}, Lno/nordicsemi/android/dfu/DfuBaseService;->stopForeground(Z)V

    goto/16 :goto_aa

    .line 1028
    :cond_27d
    and-int/lit8 v3, v5, 0x1

    if-lez v3, :cond_2c3

    :try_start_281
    invoke-virtual {v2}, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;->softDeviceImageSize()I

    move-result v3

    rem-int/lit8 v3, v3, 0x4

    if-eqz v3, :cond_2c3

    .line 1029
    new-instance v2, Lno/nordicsemi/android/dfu/internal/exception/SizeValidationException;

    const-string v3, "Soft Device firmware is not word-aligned."

    invoke-direct {v2, v3}, Lno/nordicsemi/android/dfu/internal/exception/SizeValidationException;-><init>(Ljava/lang/String;)V

    throw v2
    :try_end_291
    .catch Ljava/lang/SecurityException; {:try_start_281 .. :try_end_291} :catch_177
    .catch Ljava/io/FileNotFoundException; {:try_start_281 .. :try_end_291} :catch_1bc
    .catch Lno/nordicsemi/android/dfu/internal/exception/SizeValidationException; {:try_start_281 .. :try_end_291} :catch_211
    .catch Ljava/io/IOException; {:try_start_281 .. :try_end_291} :catch_24b
    .catch Ljava/lang/Exception; {:try_start_281 .. :try_end_291} :catch_291
    .catchall {:try_start_281 .. :try_end_291} :catchall_337

    .line 1062
    :catch_291
    move-exception v2

    .line 1063
    :try_start_292
    const-string v3, "An exception occurred while opening files. Did you set the firmware file?"

    move-object/from16 v0, p0

    invoke-direct {v0, v3, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->loge(Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 1064
    const/16 v3, 0x14

    new-instance v4, Ljava/lang/StringBuilder;

    const-string v5, "Opening file failed: "

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

    invoke-virtual {v2}, Ljava/lang/Exception;->getLocalizedMessage()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v4, v2}, 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

    move-object/from16 v0, p0

    invoke-virtual {v0, v3, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1065
    const/16 v2, 0x1002

    move-object/from16 v0, p0

    invoke-direct {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->report(I)V
    :try_end_2ba
    .catchall {:try_start_292 .. :try_end_2ba} :catchall_337

    .line 1204
    if-eqz v13, :cond_aa

    .line 1207
    move-object/from16 v0, p0

    invoke-virtual {v0, v12}, Lno/nordicsemi/android/dfu/DfuBaseService;->stopForeground(Z)V

    goto/16 :goto_aa

    .line 1031
    :cond_2c3
    const/4 v3, 0x4

    if-ne v5, v3, :cond_327

    .line 1032
    :try_start_2c6
    invoke-virtual {v2}, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;->getApplicationInit()[B

    move-result-object v3

    if-eqz v3, :cond_2d5

    .line 1033
    new-instance v7, Ljava/io/ByteArrayInputStream;

    invoke-virtual {v2}, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;->getApplicationInit()[B

    move-result-object v2

    invoke-direct {v7, v2}, Ljava/io/ByteArrayInputStream;-><init>([B)V

    .line 1039
    :cond_2d5
    :goto_2d5
    move-object/from16 v0, p0

    iput-object v6, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mFirmwareInputStream:Ljava/io/InputStream;

    .line 1040
    move-object/from16 v0, p0

    iput-object v7, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mInitFileInputStream:Ljava/io/InputStream;

    .line 1041
    const/4 v2, 0x5

    const-string v3, "Firmware file opened successfully"

    move-object/from16 v0, p0

    invoke-virtual {v0, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
    :try_end_2e5
    .catch Ljava/lang/SecurityException; {:try_start_2c6 .. :try_end_2e5} :catch_177
    .catch Ljava/io/FileNotFoundException; {:try_start_2c6 .. :try_end_2e5} :catch_1bc
    .catch Lno/nordicsemi/android/dfu/internal/exception/SizeValidationException; {:try_start_2c6 .. :try_end_2e5} :catch_211
    .catch Ljava/io/IOException; {:try_start_2c6 .. :try_end_2e5} :catch_24b
    .catch Ljava/lang/Exception; {:try_start_2c6 .. :try_end_2e5} :catch_291
    .catchall {:try_start_2c6 .. :try_end_2e5} :catchall_337

    .line 1069
    if-nez v8, :cond_2f5

    .line 1071
    const/16 v2, 0x3e8

    :try_start_2e9
    move-object/from16 v0, p0

    invoke-virtual {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->waitFor(I)V

    .line 1073
    const/16 v2, 0x3e8

    move-object/from16 v0, p0

    invoke-virtual {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->waitFor(I)V

    .line 1076
    :cond_2f5
    new-instance v2, Lno/nordicsemi/android/dfu/DfuProgressInfo;

    move-object/from16 v0, p0

    invoke-direct {v2, v0}, Lno/nordicsemi/android/dfu/DfuProgressInfo;-><init>(Lno/nordicsemi/android/dfu/DfuProgressInfo$ProgressListener;)V

    move-object/from16 v0, p0

    iput-object v2, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;

    .line 1078
    move-object/from16 v0, p0

    iget-boolean v2, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mAborted:Z

    if-eqz v2, :cond_340

    .line 1079
    const-string v2, "Upload aborted"

    move-object/from16 v0, p0

    invoke-direct {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->logw(Ljava/lang/String;)V

    .line 1080
    const/16 v2, 0xf

    const-string v3, "Upload aborted"

    move-object/from16 v0, p0

    invoke-virtual {v0, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1081
    move-object/from16 v0, p0

    iget-object v2, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;

    const/4 v3, -0x7

    invoke-virtual {v2, v3}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->setProgress(I)V
    :try_end_31e
    .catchall {:try_start_2e9 .. :try_end_31e} :catchall_337

    .line 1204
    if-eqz v13, :cond_aa

    .line 1207
    move-object/from16 v0, p0

    invoke-virtual {v0, v12}, Lno/nordicsemi/android/dfu/DfuBaseService;->stopForeground(Z)V

    goto/16 :goto_aa

    .line 1035
    :cond_327
    :try_start_327
    invoke-virtual {v2}, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;->getSystemInit()[B

    move-result-object v3

    if-eqz v3, :cond_2d5

    .line 1036
    new-instance v7, Ljava/io/ByteArrayInputStream;

    invoke-virtual {v2}, Lno/nordicsemi/android/dfu/internal/ArchiveInputStream;->getSystemInit()[B

    move-result-object v2

    invoke-direct {v7, v2}, Ljava/io/ByteArrayInputStream;-><init>([B)V
    :try_end_336
    .catch Ljava/lang/SecurityException; {:try_start_327 .. :try_end_336} :catch_177
    .catch Ljava/io/FileNotFoundException; {:try_start_327 .. :try_end_336} :catch_1bc
    .catch Lno/nordicsemi/android/dfu/internal/exception/SizeValidationException; {:try_start_327 .. :try_end_336} :catch_211
    .catch Ljava/io/IOException; {:try_start_327 .. :try_end_336} :catch_24b
    .catch Ljava/lang/Exception; {:try_start_327 .. :try_end_336} :catch_291
    .catchall {:try_start_327 .. :try_end_336} :catchall_337

    goto :goto_2d5

    .line 1204
    :catchall_337
    move-exception v2

    if-eqz v13, :cond_33f

    .line 1207
    move-object/from16 v0, p0

    invoke-virtual {v0, v12}, Lno/nordicsemi/android/dfu/DfuBaseService;->stopForeground(Z)V

    :cond_33f
    throw v2

    .line 1089
    :cond_340
    const/4 v2, 0x1

    :try_start_341
    const-string v3, "Connecting to DFU target..."

    move-object/from16 v0, p0

    invoke-virtual {v0, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1090
    move-object/from16 v0, p0

    iget-object v2, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;

    const/4 v3, -0x1

    invoke-virtual {v2, v3}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->setProgress(I)V

    .line 1092
    move-object/from16 v0, p0

    invoke-virtual {v0, v11}, Lno/nordicsemi/android/dfu/DfuBaseService;->connect(Ljava/lang/String;)Landroid/bluetooth/BluetoothGatt;

    move-result-object v4

    .line 1094
    if-nez v4, :cond_378

    .line 1095
    const-string v2, "Bluetooth adapter disabled"

    move-object/from16 v0, p0

    invoke-direct {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->loge(Ljava/lang/String;)V

    .line 1096
    const/16 v2, 0x14

    const-string v3, "Bluetooth adapter disabled"

    move-object/from16 v0, p0

    invoke-virtual {v0, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1097
    const/16 v2, 0x100a

    move-object/from16 v0, p0

    invoke-direct {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->report(I)V
    :try_end_36f
    .catchall {:try_start_341 .. :try_end_36f} :catchall_337

    .line 1204
    if-eqz v13, :cond_aa

    .line 1207
    move-object/from16 v0, p0

    invoke-virtual {v0, v12}, Lno/nordicsemi/android/dfu/DfuBaseService;->stopForeground(Z)V

    goto/16 :goto_aa

    .line 1100
    :cond_378
    :try_start_378
    move-object/from16 v0, p0

    iget v2, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mConnectionState:I

    if-nez v2, :cond_3cb

    .line 1101
    move-object/from16 v0, p0

    iget v2, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mError:I

    const v3, 0x8085

    if-ne v2, v3, :cond_3ba

    .line 1102
    new-instance v2, Ljava/lang/StringBuilder;

    const-string v3, "Device not reachable. Check if the device with address "

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

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

    move-result-object v2

    const-string v3, " is in range, is advertising and is connectable"

    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

    move-object/from16 v0, p0

    invoke-direct {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->loge(Ljava/lang/String;)V

    .line 1103
    const/16 v2, 0x14

    const-string v3, "Error 133: Connection timeout"

    move-object/from16 v0, p0

    invoke-virtual {v0, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1108
    :goto_3aa
    const/16 v2, 0x1000

    move-object/from16 v0, p0

    invoke-virtual {v0, v4, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->terminateConnection(Landroid/bluetooth/BluetoothGatt;I)V
    :try_end_3b1
    .catchall {:try_start_378 .. :try_end_3b1} :catchall_337

    .line 1204
    if-eqz v13, :cond_aa

    .line 1207
    move-object/from16 v0, p0

    invoke-virtual {v0, v12}, Lno/nordicsemi/android/dfu/DfuBaseService;->stopForeground(Z)V

    goto/16 :goto_aa

    .line 1105
    :cond_3ba
    :try_start_3ba
    const-string v2, "Device got disconnected before service discovery finished"

    move-object/from16 v0, p0

    invoke-direct {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->loge(Ljava/lang/String;)V

    .line 1106
    const/16 v2, 0x14

    const-string v3, "Disconnected"

    move-object/from16 v0, p0

    invoke-virtual {v0, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    goto :goto_3aa

    .line 1111
    :cond_3cb
    move-object/from16 v0, p0

    iget v2, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mError:I

    if-lez v2, :cond_4b2

    .line 1112
    move-object/from16 v0, p0

    iget v2, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mError:I

    const v3, 0x8000

    and-int/2addr v2, v3

    if-lez v2, :cond_466

    .line 1113
    move-object/from16 v0, p0

    iget v2, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mError:I

    const v3, -0x8001

    and-int/2addr v2, v3

    .line 1114
    new-instance v3, Ljava/lang/StringBuilder;

    const-string v5, "An error occurred while connecting to the device:"

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

    invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v3

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

    move-result-object v3

    move-object/from16 v0, p0

    invoke-direct {v0, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->loge(Ljava/lang/String;)V

    .line 1115
    const/16 v3, 0x14

    const-string v5, "Connection failed (0x%02X): %s"

    const/4 v6, 0x2

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

    const/4 v7, 0x0

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

    move-result-object v8

    aput-object v8, v6, v7

    const/4 v7, 0x1

    invoke-static {v2}, Lno/nordicsemi/android/a/a;->fl(I)Ljava/lang/String;

    move-result-object v2

    aput-object v2, v6, v7

    invoke-static {v5, v6}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v2

    move-object/from16 v0, p0

    invoke-virtual {v0, v3, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1123
    :goto_415
    const-string v2, "no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT"

    const/4 v3, 0x0

    move-object/from16 v0, p1

    invoke-virtual {v0, v2, v3}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I

    move-result v2

    if-nez v2, :cond_4a0

    .line 1124
    const/16 v2, 0xf

    const-string v3, "Retrying..."

    move-object/from16 v0, p0

    invoke-virtual {v0, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1126
    move-object/from16 v0, p0

    iget v2, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mConnectionState:I

    if-eqz v2, :cond_434

    .line 1128
    move-object/from16 v0, p0

    invoke-virtual {v0, v4}, Lno/nordicsemi/android/dfu/DfuBaseService;->disconnect(Landroid/bluetooth/BluetoothGatt;)V

    .line 1131
    :cond_434
    const/4 v2, 0x1

    move-object/from16 v0, p0

    invoke-virtual {v0, v4, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->refreshDeviceCache(Landroid/bluetooth/BluetoothGatt;Z)V

    .line 1132
    move-object/from16 v0, p0

    invoke-virtual {v0, v4}, Lno/nordicsemi/android/dfu/DfuBaseService;->close(Landroid/bluetooth/BluetoothGatt;)V

    .line 1134
    const-string v2, "Restarting the service"

    move-object/from16 v0, p0

    invoke-direct {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->logi(Ljava/lang/String;)V

    .line 1135
    new-instance v2, Landroid/content/Intent;

    invoke-direct {v2}, Landroid/content/Intent;-><init>()V

    .line 1136
    const/16 v3, 0x18

    move-object/from16 v0, p1

    invoke-virtual {v2, v0, v3}, Landroid/content/Intent;->fillIn(Landroid/content/Intent;I)I

    .line 1137
    const-string v3, "no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT"

    const/4 v4, 0x1

    invoke-virtual {v2, v3, v4}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;

    .line 1138
    move-object/from16 v0, p0

    invoke-virtual {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->startService(Landroid/content/Intent;)Landroid/content/ComponentName;
    :try_end_45d
    .catchall {:try_start_3ba .. :try_end_45d} :catchall_337

    .line 1204
    if-eqz v13, :cond_aa

    .line 1207
    move-object/from16 v0, p0

    invoke-virtual {v0, v12}, Lno/nordicsemi/android/dfu/DfuBaseService;->stopForeground(Z)V

    goto/16 :goto_aa

    .line 1117
    :cond_466
    :try_start_466
    move-object/from16 v0, p0

    iget v2, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mError:I

    and-int/lit16 v2, v2, -0x4001

    .line 1118
    new-instance v3, Ljava/lang/StringBuilder;

    const-string v5, "An error occurred during discovering services:"

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

    invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v3

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

    move-result-object v3

    move-object/from16 v0, p0

    invoke-direct {v0, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->loge(Ljava/lang/String;)V

    .line 1119
    const/16 v3, 0x14

    const-string v5, "Connection failed (0x%02X): %s"

    const/4 v6, 0x2

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

    const/4 v7, 0x0

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

    move-result-object v8

    aput-object v8, v6, v7

    const/4 v7, 0x1

    invoke-static {v2}, Lno/nordicsemi/android/a/a;->fm(I)Ljava/lang/String;

    move-result-object v2

    aput-object v2, v6, v7

    invoke-static {v5, v6}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v2

    move-object/from16 v0, p0

    invoke-virtual {v0, v3, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    goto/16 :goto_415

    .line 1141
    :cond_4a0
    move-object/from16 v0, p0

    iget v2, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mError:I

    move-object/from16 v0, p0

    invoke-virtual {v0, v4, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->terminateConnection(Landroid/bluetooth/BluetoothGatt;I)V
    :try_end_4a9
    .catchall {:try_start_466 .. :try_end_4a9} :catchall_337

    .line 1204
    if-eqz v13, :cond_aa

    .line 1207
    move-object/from16 v0, p0

    invoke-virtual {v0, v12}, Lno/nordicsemi/android/dfu/DfuBaseService;->stopForeground(Z)V

    goto/16 :goto_aa

    .line 1144
    :cond_4b2
    :try_start_4b2
    move-object/from16 v0, p0

    iget-boolean v2, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mAborted:Z

    if-eqz v2, :cond_4df

    .line 1145
    const-string v2, "Upload aborted"

    move-object/from16 v0, p0

    invoke-direct {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->logw(Ljava/lang/String;)V

    .line 1146
    const/16 v2, 0xf

    const-string v3, "Upload aborted"

    move-object/from16 v0, p0

    invoke-virtual {v0, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1147
    const/4 v2, 0x0

    move-object/from16 v0, p0

    invoke-virtual {v0, v4, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->terminateConnection(Landroid/bluetooth/BluetoothGatt;I)V

    .line 1148
    move-object/from16 v0, p0

    iget-object v2, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;

    const/4 v3, -0x7

    invoke-virtual {v2, v3}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->setProgress(I)V
    :try_end_4d6
    .catchall {:try_start_4b2 .. :try_end_4d6} :catchall_337

    .line 1204
    if-eqz v13, :cond_aa

    .line 1207
    move-object/from16 v0, p0

    invoke-virtual {v0, v12}, Lno/nordicsemi/android/dfu/DfuBaseService;->stopForeground(Z)V

    goto/16 :goto_aa

    .line 1151
    :cond_4df
    const/4 v2, 0x5

    :try_start_4e0
    const-string v3, "Services discovered"

    move-object/from16 v0, p0

    invoke-virtual {v0, v2, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1154
    const-string v2, "no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT"

    const/4 v3, 0x0

    move-object/from16 v0, p1

    invoke-virtual {v0, v2, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
    :try_end_4ef
    .catchall {:try_start_4e0 .. :try_end_4ef} :catchall_337

    .line 1156
    const/4 v2, 0x0

    .line 1161
    :try_start_4f0
    new-instance v3, Lno/nordicsemi/android/dfu/DfuServiceProvider;

    invoke-direct {v3}, Lno/nordicsemi/android/dfu/DfuServiceProvider;-><init>()V

    .line 1162
    move-object/from16 v0, p0

    iput-object v3, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDfuServiceImpl:Lno/nordicsemi/android/dfu/DfuCallback;

    .line 1163
    move-object/from16 v0, p1

    move-object/from16 v1, p0

    invoke-virtual {v3, v0, v1, v4}, Lno/nordicsemi/android/dfu/DfuServiceProvider;->getServiceImpl(Landroid/content/Intent;Lno/nordicsemi/android/dfu/DfuBaseService;Landroid/bluetooth/BluetoothGatt;)Lno/nordicsemi/android/dfu/DfuService;
    :try_end_500
    .catch Lno/nordicsemi/android/dfu/internal/exception/UploadAbortedException; {:try_start_4f0 .. :try_end_500} :catch_540
    .catch Lno/nordicsemi/android/dfu/internal/exception/DeviceDisconnectedException; {:try_start_4f0 .. :try_end_500} :catch_565
    .catch Lno/nordicsemi/android/dfu/internal/exception/DfuException; {:try_start_4f0 .. :try_end_500} :catch_58f
    .catchall {:try_start_4f0 .. :try_end_500} :catchall_602

    move-result-object v2

    :try_start_501
    move-object/from16 v0, p0

    iput-object v2, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDfuServiceImpl:Lno/nordicsemi/android/dfu/DfuCallback;

    .line 1164
    if-nez v2, :cond_525

    .line 1166
    const/16 v3, 0xf

    const-string v5, "DFU Service not found"

    move-object/from16 v0, p0

    invoke-virtual {v0, v3, v5}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1167
    const/16 v3, 0x1006

    move-object/from16 v0, p0

    invoke-virtual {v0, v4, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->terminateConnection(Landroid/bluetooth/BluetoothGatt;I)V
    :try_end_517
    .catch Lno/nordicsemi/android/dfu/internal/exception/UploadAbortedException; {:try_start_501 .. :try_end_517} :catch_540
    .catch Lno/nordicsemi/android/dfu/internal/exception/DeviceDisconnectedException; {:try_start_501 .. :try_end_517} :catch_618
    .catch Lno/nordicsemi/android/dfu/internal/exception/DfuException; {:try_start_501 .. :try_end_517} :catch_610
    .catchall {:try_start_501 .. :try_end_517} :catchall_609

    .line 1199
    if-eqz v2, :cond_51c

    .line 1200
    :try_start_519
    invoke-interface {v2}, Lno/nordicsemi/android/dfu/DfuService;->release()V
    :try_end_51c
    .catchall {:try_start_519 .. :try_end_51c} :catchall_337

    .line 1204
    :cond_51c
    if-eqz v13, :cond_aa

    .line 1207
    move-object/from16 v0, p0

    invoke-virtual {v0, v12}, Lno/nordicsemi/android/dfu/DfuBaseService;->stopForeground(Z)V

    goto/16 :goto_aa

    :cond_525
    move-object/from16 v3, p1

    .line 1172
    :try_start_527
    invoke-interface/range {v2 .. v7}, Lno/nordicsemi/android/dfu/DfuService;->initialize(Landroid/content/Intent;Landroid/bluetooth/BluetoothGatt;ILjava/io/InputStream;Ljava/io/InputStream;)Z

    move-result v3

    if-eqz v3, :cond_532

    .line 1173
    move-object/from16 v0, p1

    invoke-interface {v2, v0}, Lno/nordicsemi/android/dfu/DfuService;->performDfu(Landroid/content/Intent;)V
    :try_end_532
    .catch Lno/nordicsemi/android/dfu/internal/exception/UploadAbortedException; {:try_start_527 .. :try_end_532} :catch_540
    .catch Lno/nordicsemi/android/dfu/internal/exception/DeviceDisconnectedException; {:try_start_527 .. :try_end_532} :catch_618
    .catch Lno/nordicsemi/android/dfu/internal/exception/DfuException; {:try_start_527 .. :try_end_532} :catch_610
    .catchall {:try_start_527 .. :try_end_532} :catchall_609

    .line 1199
    :cond_532
    if-eqz v2, :cond_537

    .line 1200
    :try_start_534
    invoke-interface {v2}, Lno/nordicsemi/android/dfu/DfuService;->release()V
    :try_end_537
    .catchall {:try_start_534 .. :try_end_537} :catchall_337

    .line 1204
    :cond_537
    :goto_537
    if-eqz v13, :cond_aa

    .line 1207
    move-object/from16 v0, p0

    invoke-virtual {v0, v12}, Lno/nordicsemi/android/dfu/DfuBaseService;->stopForeground(Z)V

    goto/16 :goto_aa

    .line 1176
    :catch_540
    move-exception v3

    :try_start_541
    const-string v3, "Upload aborted"

    move-object/from16 v0, p0

    invoke-direct {v0, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->logw(Ljava/lang/String;)V

    .line 1177
    const/16 v3, 0xf

    const-string v5, "Upload aborted"

    move-object/from16 v0, p0

    invoke-virtual {v0, v3, v5}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1178
    const/4 v3, 0x0

    move-object/from16 v0, p0

    invoke-virtual {v0, v4, v3}, Lno/nordicsemi/android/dfu/DfuBaseService;->terminateConnection(Landroid/bluetooth/BluetoothGatt;I)V

    .line 1179
    move-object/from16 v0, p0

    iget-object v3, v0, Lno/nordicsemi/android/dfu/DfuBaseService;->mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;

    const/4 v4, -0x7

    invoke-virtual {v3, v4}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->setProgress(I)V
    :try_end_55f
    .catchall {:try_start_541 .. :try_end_55f} :catchall_609

    .line 1199
    if-eqz v2, :cond_537

    .line 1200
    :try_start_561
    invoke-interface {v2}, Lno/nordicsemi/android/dfu/DfuService;->release()V
    :try_end_564
    .catchall {:try_start_561 .. :try_end_564} :catchall_337

    goto :goto_537

    .line 1180
    :catch_565
    move-exception v3

    move-object/from16 v19, v3

    move-object v3, v2

    move-object/from16 v2, v19

    .line 1181
    :goto_56b
    const/16 v5, 0x14

    :try_start_56d
    const-string v6, "Device has disconnected"

    move-object/from16 v0, p0

    invoke-virtual {v0, v5, v6}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1183
    invoke-virtual {v2}, Lno/nordicsemi/android/dfu/internal/exception/DeviceDisconnectedException;->getMessage()Ljava/lang/String;

    move-result-object v2

    move-object/from16 v0, p0

    invoke-direct {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->loge(Ljava/lang/String;)V

    .line 1184
    move-object/from16 v0, p0

    invoke-virtual {v0, v4}, Lno/nordicsemi/android/dfu/DfuBaseService;->close(Landroid/bluetooth/BluetoothGatt;)V

    .line 1185
    const/16 v2, 0x1000

    move-object/from16 v0, p0

    invoke-direct {v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->report(I)V
    :try_end_589
    .catchall {:try_start_56d .. :try_end_589} :catchall_5fb

    .line 1199
    if-eqz v3, :cond_537

    .line 1200
    :try_start_58b
    invoke-interface {v3}, Lno/nordicsemi/android/dfu/DfuService;->release()V
    :try_end_58e
    .catchall {:try_start_58b .. :try_end_58e} :catchall_337

    goto :goto_537

    .line 1186
    :catch_58f
    move-exception v3

    move-object/from16 v19, v3

    move-object v3, v2

    move-object/from16 v2, v19

    .line 1187
    :goto_595
    :try_start_595
    invoke-virtual {v2}, Lno/nordicsemi/android/dfu/internal/exception/DfuException;->getErrorNumber()I

    move-result v5

    .line 1189
    const v6, 0x8000

    and-int/2addr v6, v5

    if-lez v6, :cond_5da

    .line 1190
    const v6, -0x8001

    and-int/2addr v5, v6

    .line 1191
    const/16 v6, 0x14

    const-string v7, "Error (0x%02X): %s"

    const/4 v8, 0x2

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

    const/4 v9, 0x0

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

    move-result-object v10

    aput-object v10, v8, v9

    const/4 v9, 0x1

    invoke-static {v5}, Lno/nordicsemi/android/a/a;->fl(I)Ljava/lang/String;

    move-result-object v5

    aput-object v5, v8, v9

    invoke-static {v7, v8}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v5

    move-object/from16 v0, p0

    invoke-virtual {v0, v6, v5}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1196
    :goto_5c1
    invoke-virtual {v2}, Lno/nordicsemi/android/dfu/internal/exception/DfuException;->getMessage()Ljava/lang/String;

    move-result-object v5

    move-object/from16 v0, p0

    invoke-direct {v0, v5}, Lno/nordicsemi/android/dfu/DfuBaseService;->loge(Ljava/lang/String;)V

    .line 1197
    invoke-virtual {v2}, Lno/nordicsemi/android/dfu/internal/exception/DfuException;->getErrorNumber()I

    move-result v2

    move-object/from16 v0, p0

    invoke-virtual {v0, v4, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->terminateConnection(Landroid/bluetooth/BluetoothGatt;I)V
    :try_end_5d3
    .catchall {:try_start_595 .. :try_end_5d3} :catchall_5fb

    .line 1199
    if-eqz v3, :cond_537

    .line 1200
    :try_start_5d5
    invoke-interface {v3}, Lno/nordicsemi/android/dfu/DfuService;->release()V
    :try_end_5d8
    .catchall {:try_start_5d5 .. :try_end_5d8} :catchall_337

    goto/16 :goto_537

    .line 1193
    :cond_5da
    and-int/lit16 v5, v5, -0x4001

    .line 1194
    const/16 v6, 0x14

    :try_start_5de
    const-string v7, "Error (0x%02X): %s"

    const/4 v8, 0x2

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

    const/4 v9, 0x0

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

    move-result-object v10

    aput-object v10, v8, v9

    const/4 v9, 0x1

    invoke-static {v5}, Lno/nordicsemi/android/a/a;->fm(I)Ljava/lang/String;

    move-result-object v5

    aput-object v5, v8, v9

    invoke-static {v7, v8}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v5

    move-object/from16 v0, p0

    invoke-virtual {v0, v6, v5}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V
    :try_end_5fa
    .catchall {:try_start_5de .. :try_end_5fa} :catchall_5fb

    goto :goto_5c1

    .line 1199
    :catchall_5fb
    move-exception v2

    :goto_5fc
    if-eqz v3, :cond_601

    .line 1200
    :try_start_5fe
    invoke-interface {v3}, Lno/nordicsemi/android/dfu/DfuService;->release()V

    :cond_601
    throw v2
    :try_end_602
    .catchall {:try_start_5fe .. :try_end_602} :catchall_337

    .line 1199
    :catchall_602
    move-exception v3

    move-object/from16 v19, v3

    move-object v3, v2

    move-object/from16 v2, v19

    goto :goto_5fc

    :catchall_609
    move-exception v3

    move-object/from16 v19, v3

    move-object v3, v2

    move-object/from16 v2, v19

    goto :goto_5fc

    .line 1186
    :catch_610
    move-exception v3

    move-object/from16 v19, v3

    move-object v3, v2

    move-object/from16 v2, v19

    goto/16 :goto_595

    .line 1180
    :catch_618
    move-exception v3

    move-object/from16 v19, v3

    move-object v3, v2

    move-object/from16 v2, v19

    goto/16 :goto_56b

    :cond_620
    move v5, v4

    goto/16 :goto_2d5
.end method

.method public onTaskRemoved(Landroid/content/Intent;)V
    .registers 4

    .prologue
    .line 867
    invoke-super {p0, p1}, Landroid/app/IntentService;->onTaskRemoved(Landroid/content/Intent;)V

    .line 871
    const-string v0, "notification"

    invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/app/NotificationManager;

    .line 872
    const/16 v1, 0x11b

    invoke-virtual {v0, v1}, Landroid/app/NotificationManager;->cancel(I)V

    .line 873
    invoke-virtual {p0}, Lno/nordicsemi/android/dfu/DfuBaseService;->stopSelf()V

    .line 874
    return-void
.end method

.method protected refreshDeviceCache(Landroid/bluetooth/BluetoothGatt;Z)V
    .registers 6

    .prologue
    const/4 v2, 0x0

    .line 1408
    if-nez p2, :cond_f

    invoke-virtual {p1}, Landroid/bluetooth/BluetoothGatt;->getDevice()Landroid/bluetooth/BluetoothDevice;

    move-result-object v0

    invoke-virtual {v0}, Landroid/bluetooth/BluetoothDevice;->getBondState()I

    move-result v0

    const/16 v1, 0xa

    if-ne v0, v1, :cond_42

    .line 1409
    :cond_f
    const-string v0, "gatt.refresh() (hidden)"

    invoke-virtual {p0, v2, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1414
    :try_start_14
    invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;

    move-result-object v0

    const-string v1, "refresh"

    const/4 v2, 0x0

    new-array v2, v2, [Ljava/lang/Class;

    invoke-virtual {v0, v1, v2}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;

    move-result-object v0

    .line 1415
    if-eqz v0, :cond_42

    .line 1416
    const/4 v1, 0x0

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

    invoke-virtual {v0, p1, v1}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/Boolean;

    invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z

    move-result v0

    .line 1417
    new-instance v1, Ljava/lang/StringBuilder;

    const-string v2, "Refreshing result: "

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

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

    move-result-object v0

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

    move-result-object v0

    invoke-direct {p0, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->logi(Ljava/lang/String;)V
    :try_end_42
    .catch Ljava/lang/Exception; {:try_start_14 .. :try_end_42} :catch_43

    .line 1424
    :cond_42
    :goto_42
    return-void

    .line 1419
    :catch_43
    move-exception v0

    .line 1420
    const-string v1, "An exception occurred while refreshing device"

    invoke-direct {p0, v1, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->loge(Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 1421
    const/16 v0, 0xf

    const-string v1, "Refreshing failed"

    invoke-virtual {p0, v0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    goto :goto_42
.end method

.method sendLogBroadcast(ILjava/lang/String;)V
    .registers 6

    .prologue
    .line 1698
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "[DFU] "

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

    invoke-virtual {v0, p2}, 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

    .line 1699
    new-instance v1, Landroid/content/Intent;

    const-string v2, "no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG"

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

    .line 1700
    const-string v2, "no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO"

    invoke-virtual {v1, v2, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

    .line 1701
    const-string v0, "no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL"

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

    .line 1702
    const-string v0, "no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS"

    iget-object v2, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDeviceAddress:Ljava/lang/String;

    invoke-virtual {v1, v0, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

    .line 1703
    invoke-static {p0}, Landroid/support/v4/content/i;->i(Landroid/content/Context;)Landroid/support/v4/content/i;

    move-result-object v0

    invoke-virtual {v0, v1}, Landroid/support/v4/content/i;->a(Landroid/content/Intent;)Z

    .line 1704
    return-void
.end method

.method protected terminateConnection(Landroid/bluetooth/BluetoothGatt;I)V
    .registers 4

    .prologue
    .line 1318
    iget v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mConnectionState:I

    if-eqz v0, :cond_7

    .line 1320
    invoke-virtual {p0, p1}, Lno/nordicsemi/android/dfu/DfuBaseService;->disconnect(Landroid/bluetooth/BluetoothGatt;)V

    .line 1324
    :cond_7
    const/4 v0, 0x0

    invoke-virtual {p0, p1, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->refreshDeviceCache(Landroid/bluetooth/BluetoothGatt;Z)V

    .line 1325
    invoke-virtual {p0, p1}, Lno/nordicsemi/android/dfu/DfuBaseService;->close(Landroid/bluetooth/BluetoothGatt;)V

    .line 1326
    const/16 v0, 0x258

    invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->waitFor(I)V

    .line 1327
    if-eqz p2, :cond_18

    .line 1328
    invoke-direct {p0, p2}, Lno/nordicsemi/android/dfu/DfuBaseService;->report(I)V

    .line 1329
    :cond_18
    return-void
.end method

.method protected updateErrorNotification(Landroid/support/v4/app/aw;)V
    .registers 2

    .prologue
    .line 1575
    return-void
.end method

.method protected updateForegroundNotification(Landroid/support/v4/app/aw;)V
    .registers 2

    .prologue
    .line 1611
    return-void
.end method

.method public updateProgressNotification()V
    .registers 15

    .prologue
    const v13, 0x1080089

    const/4 v12, 0x2

    const/4 v11, 0x0

    const/4 v10, 0x1

    .line 1431
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mProgressInfo:Lno/nordicsemi/android/dfu/DfuProgressInfo;

    .line 1432
    invoke-virtual {v1}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->getProgress()I

    move-result v2

    .line 1433
    iget v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mLastProgress:I

    if-ne v0, v2, :cond_11

    .line 1512
    :cond_10
    :goto_10
    return-void

    .line 1436
    :cond_11
    iput v2, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mLastProgress:I

    .line 1439
    invoke-direct {p0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendProgressBroadcast(Lno/nordicsemi/android/dfu/DfuProgressInfo;)V

    .line 1441
    iget-boolean v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDisableNotification:Z

    if-nez v0, :cond_10

    .line 1446
    invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J

    move-result-wide v4

    .line 1447
    iget-wide v6, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mLastNotificationTime:J

    sub-long v6, v4, v6

    const-wide/16 v8, 0xfa

    cmp-long v0, v6, v8

    if-gez v0, :cond_2e

    const/4 v0, -0x6

    if-eq v0, v2, :cond_2e

    const/4 v0, -0x7

    if-ne v0, v2, :cond_10

    .line 1449
    :cond_2e
    iput-wide v4, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mLastNotificationTime:J

    .line 1452
    iget-object v3, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDeviceAddress:Ljava/lang/String;

    .line 1453
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDeviceName:Ljava/lang/String;

    if-eqz v0, :cond_b1

    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mDeviceName:Ljava/lang/String;

    .line 1455
    :goto_38
    new-instance v4, Landroid/support/v4/app/aw;

    const-string v5, "dfu"

    invoke-direct {v4, p0, v5}, Landroid/support/v4/app/aw;-><init>(Landroid/content/Context;Ljava/lang/String;)V

    const v5, 0x1080088

    .line 1456
    invoke-virtual {v4, v5}, Landroid/support/v4/app/aw;->r(I)Landroid/support/v4/app/aw;

    move-result-object v4

    invoke-virtual {v4}, Landroid/support/v4/app/aw;->aP()Landroid/support/v4/app/aw;

    move-result-object v4

    .line 2353
    const v5, -0x777778

    iput v5, v4, Landroid/support/v4/app/aw;->mColor:I

    .line 1460
    packed-switch v2, :pswitch_data_1ae

    .line 1491
    invoke-virtual {v1}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->getTotalParts()I

    move-result v5

    if-ne v5, v10, :cond_190

    sget v1, Lno/nordicsemi/android/dfu/R$string;->dfu_status_uploading:I

    invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v1

    .line 1492
    :goto_5e
    sget v5, Lno/nordicsemi/android/dfu/R$string;->dfu_status_uploading_msg:I

    new-array v6, v10, [Ljava/lang/Object;

    aput-object v0, v6, v11

    invoke-virtual {p0, v5, v6}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v5

    .line 10044
    invoke-virtual {v4, v12, v10}, Landroid/support/v4/app/aw;->c(IZ)V

    .line 1493
    invoke-virtual {v4, v1}, Landroid/support/v4/app/aw;->b(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v1

    invoke-virtual {v1, v5}, Landroid/support/v4/app/aw;->c(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v1

    .line 1494
    invoke-virtual {v1, v2, v11}, Landroid/support/v4/app/aw;->b(IZ)Landroid/support/v4/app/aw;

    .line 1499
    :goto_76
    new-instance v1, Landroid/content/Intent;

    invoke-virtual {p0}, Lno/nordicsemi/android/dfu/DfuBaseService;->getNotificationTarget()Ljava/lang/Class;

    move-result-object v5

    invoke-direct {v1, p0, v5}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V

    .line 1500
    const/high16 v5, 0x10000000

    invoke-virtual {v1, v5}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;

    .line 1501
    const-string v5, "no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS"

    invoke-virtual {v1, v5, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

    .line 1502
    const-string v3, "no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME"

    invoke-virtual {v1, v3, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

    .line 1503
    const-string v0, "no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS"

    invoke-virtual {v1, v0, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;

    .line 1504
    const/high16 v0, 0x8000000

    invoke-static {p0, v11, v1, v0}, Landroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;

    move-result-object v0

    .line 10888
    iput-object v0, v4, Landroid/support/v4/app/aw;->nD:Landroid/app/PendingIntent;

    .line 1508
    invoke-virtual {p0, v4, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->updateProgressNotification(Landroid/support/v4/app/aw;I)V

    .line 1510
    const-string v0, "notification"

    invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/app/NotificationManager;

    .line 1511
    const/16 v1, 0x11b

    invoke-virtual {v4}, Landroid/support/v4/app/aw;->build()Landroid/app/Notification;

    move-result-object v2

    invoke-virtual {v0, v1, v2}, Landroid/app/NotificationManager;->notify(ILandroid/app/Notification;)V

    goto/16 :goto_10

    .line 1453
    :cond_b1
    sget v0, Lno/nordicsemi/android/dfu/R$string;->dfu_unknown_name:I

    invoke-virtual {p0, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v0

    goto :goto_38

    .line 3044
    :pswitch_b8
    invoke-virtual {v4, v12, v10}, Landroid/support/v4/app/aw;->c(IZ)V

    .line 1462
    sget v1, Lno/nordicsemi/android/dfu/R$string;->dfu_status_connecting:I

    invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v4, v1}, Landroid/support/v4/app/aw;->b(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v1

    sget v5, Lno/nordicsemi/android/dfu/R$string;->dfu_status_connecting_msg:I

    new-array v6, v10, [Ljava/lang/Object;

    aput-object v0, v6, v11

    invoke-virtual {p0, v5, v6}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v5

    invoke-virtual {v1, v5}, Landroid/support/v4/app/aw;->c(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v1

    .line 1463
    invoke-virtual {v1, v11, v10}, Landroid/support/v4/app/aw;->b(IZ)Landroid/support/v4/app/aw;

    goto :goto_76

    .line 4044
    :pswitch_d7
    invoke-virtual {v4, v12, v10}, Landroid/support/v4/app/aw;->c(IZ)V

    .line 1466
    sget v1, Lno/nordicsemi/android/dfu/R$string;->dfu_status_starting:I

    invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v4, v1}, Landroid/support/v4/app/aw;->b(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v1

    sget v5, Lno/nordicsemi/android/dfu/R$string;->dfu_status_starting_msg:I

    invoke-virtual {p0, v5}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v5

    invoke-virtual {v1, v5}, Landroid/support/v4/app/aw;->c(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v1

    .line 1467
    invoke-virtual {v1, v11, v10}, Landroid/support/v4/app/aw;->b(IZ)Landroid/support/v4/app/aw;

    goto :goto_76

    .line 5044
    :pswitch_f2
    invoke-virtual {v4, v12, v10}, Landroid/support/v4/app/aw;->c(IZ)V

    .line 1470
    sget v1, Lno/nordicsemi/android/dfu/R$string;->dfu_status_switching_to_dfu:I

    invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v4, v1}, Landroid/support/v4/app/aw;->b(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v1

    sget v5, Lno/nordicsemi/android/dfu/R$string;->dfu_status_switching_to_dfu_msg:I

    invoke-virtual {p0, v5}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v5

    invoke-virtual {v1, v5}, Landroid/support/v4/app/aw;->c(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v1

    .line 1471
    invoke-virtual {v1, v11, v10}, Landroid/support/v4/app/aw;->b(IZ)Landroid/support/v4/app/aw;

    goto/16 :goto_76

    .line 6044
    :pswitch_10e
    invoke-virtual {v4, v12, v10}, Landroid/support/v4/app/aw;->c(IZ)V

    .line 1474
    sget v1, Lno/nordicsemi/android/dfu/R$string;->dfu_status_validating:I

    invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v4, v1}, Landroid/support/v4/app/aw;->b(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v1

    sget v5, Lno/nordicsemi/android/dfu/R$string;->dfu_status_validating_msg:I

    invoke-virtual {p0, v5}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v5

    invoke-virtual {v1, v5}, Landroid/support/v4/app/aw;->c(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v1

    .line 1475
    invoke-virtual {v1, v11, v10}, Landroid/support/v4/app/aw;->b(IZ)Landroid/support/v4/app/aw;

    goto/16 :goto_76

    .line 7044
    :pswitch_12a
    invoke-virtual {v4, v12, v10}, Landroid/support/v4/app/aw;->c(IZ)V

    .line 1478
    sget v1, Lno/nordicsemi/android/dfu/R$string;->dfu_status_disconnecting:I

    invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v4, v1}, Landroid/support/v4/app/aw;->b(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v1

    sget v5, Lno/nordicsemi/android/dfu/R$string;->dfu_status_disconnecting_msg:I

    new-array v6, v10, [Ljava/lang/Object;

    aput-object v0, v6, v11

    invoke-virtual {p0, v5, v6}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v5

    invoke-virtual {v1, v5}, Landroid/support/v4/app/aw;->c(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v1

    .line 1479
    invoke-virtual {v1, v11, v10}, Landroid/support/v4/app/aw;->b(IZ)Landroid/support/v4/app/aw;

    goto/16 :goto_76

    .line 8044
    :pswitch_14a
    invoke-virtual {v4, v12, v11}, Landroid/support/v4/app/aw;->c(IZ)V

    .line 1482
    sget v1, Lno/nordicsemi/android/dfu/R$string;->dfu_status_completed:I

    invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v4, v1}, Landroid/support/v4/app/aw;->b(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v1

    invoke-virtual {v1, v13}, Landroid/support/v4/app/aw;->r(I)Landroid/support/v4/app/aw;

    move-result-object v1

    sget v5, Lno/nordicsemi/android/dfu/R$string;->dfu_status_completed_msg:I

    .line 1483
    invoke-virtual {p0, v5}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v5

    invoke-virtual {v1, v5}, Landroid/support/v4/app/aw;->c(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v1

    invoke-virtual {v1}, Landroid/support/v4/app/aw;->aQ()Landroid/support/v4/app/aw;

    move-result-object v1

    .line 8353
    const v5, -0xff47e6

    iput v5, v1, Landroid/support/v4/app/aw;->mColor:I

    goto/16 :goto_76

    .line 9044
    :pswitch_170
    invoke-virtual {v4, v12, v11}, Landroid/support/v4/app/aw;->c(IZ)V

    .line 1486
    sget v1, Lno/nordicsemi/android/dfu/R$string;->dfu_status_aborted:I

    invoke-virtual {p0, v1}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v4, v1}, Landroid/support/v4/app/aw;->b(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v1

    invoke-virtual {v1, v13}, Landroid/support/v4/app/aw;->r(I)Landroid/support/v4/app/aw;

    move-result-object v1

    sget v5, Lno/nordicsemi/android/dfu/R$string;->dfu_status_aborted_msg:I

    .line 1487
    invoke-virtual {p0, v5}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v5

    invoke-virtual {v1, v5}, Landroid/support/v4/app/aw;->c(Ljava/lang/CharSequence;)Landroid/support/v4/app/aw;

    move-result-object v1

    invoke-virtual {v1}, Landroid/support/v4/app/aw;->aQ()Landroid/support/v4/app/aw;

    goto/16 :goto_76

    .line 1491
    :cond_190
    sget v5, Lno/nordicsemi/android/dfu/R$string;->dfu_status_uploading_part:I

    new-array v6, v12, [Ljava/lang/Object;

    invoke-virtual {v1}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->getCurrentPart()I

    move-result v7

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

    move-result-object v7

    aput-object v7, v6, v11

    invoke-virtual {v1}, Lno/nordicsemi/android/dfu/DfuProgressInfo;->getTotalParts()I

    move-result v1

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

    move-result-object v1

    aput-object v1, v6, v10

    invoke-virtual {p0, v5, v6}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v1

    goto/16 :goto_5e

    .line 1460
    :pswitch_data_1ae
    .packed-switch -0x7
        :pswitch_170
        :pswitch_14a
        :pswitch_12a
        :pswitch_10e
        :pswitch_f2
        :pswitch_d7
        :pswitch_b8
    .end packed-switch
.end method

.method protected updateProgressNotification(Landroid/support/v4/app/aw;I)V
    .registers 8

    .prologue
    .line 1520
    const/4 v0, -0x7

    if-eq p2, v0, :cond_2c

    const/4 v0, -0x6

    if-eq p2, v0, :cond_2c

    .line 1521
    new-instance v0, Landroid/content/Intent;

    const-string v1, "no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION"

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

    .line 1522
    const-string v1, "no.nordicsemi.android.dfu.extra.EXTRA_ACTION"

    const/4 v2, 0x2

    invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;

    .line 1523
    const/4 v1, 0x1

    const/high16 v2, 0x8000000

    invoke-static {p0, v1, v0, v2}, Landroid/app/PendingIntent;->getBroadcast(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;

    move-result-object v0

    .line 1524
    sget v1, Lno/nordicsemi/android/dfu/R$drawable;->ic_action_notify_cancel:I

    sget v2, Lno/nordicsemi/android/dfu/R$string;->dfu_action_abort:I

    invoke-virtual {p0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->getString(I)Ljava/lang/String;

    move-result-object v2

    .line 11304
    iget-object v3, p1, Landroid/support/v4/app/aw;->nA:Ljava/util/ArrayList;

    new-instance v4, Landroid/support/v4/app/au;

    invoke-direct {v4, v1, v2, v0}, Landroid/support/v4/app/au;-><init>(ILjava/lang/CharSequence;Landroid/app/PendingIntent;)V

    invoke-virtual {v3, v4}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    .line 1526
    :cond_2c
    return-void
.end method

.method protected waitFor(I)V
    .registers 6

    .prologue
    .line 1373
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mLock:Ljava/lang/Object;

    monitor-enter v1

    .line 1375
    const/4 v0, 0x0

    :try_start_4
    new-instance v2, Ljava/lang/StringBuilder;

    const-string v3, "wait("

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

    invoke-virtual {v2, p1}, 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, v0, v2}, Lno/nordicsemi/android/dfu/DfuBaseService;->sendLogBroadcast(ILjava/lang/String;)V

    .line 1376
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mLock:Ljava/lang/Object;

    int-to-long v2, p1

    invoke-virtual {v0, v2, v3}, Ljava/lang/Object;->wait(J)V
    :try_end_22
    .catch Ljava/lang/InterruptedException; {:try_start_4 .. :try_end_22} :catch_24
    .catchall {:try_start_4 .. :try_end_22} :catchall_2b

    .line 1380
    :goto_22
    :try_start_22
    monitor-exit v1

    return-void

    .line 1377
    :catch_24
    move-exception v0

    .line 1378
    const-string v2, "Sleeping interrupted"

    invoke-direct {p0, v2, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->loge(Ljava/lang/String;Ljava/lang/Throwable;)V

    goto :goto_22

    .line 1380
    :catchall_2b
    move-exception v0

    monitor-exit v1
    :try_end_2d
    .catchall {:try_start_22 .. :try_end_2d} :catchall_2b

    throw v0
.end method

.method protected waitUntilDisconnected()V
    .registers 3

    .prologue
    .line 1359
    :try_start_0
    iget-object v1, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mLock:Ljava/lang/Object;

    monitor-enter v1
    :try_end_3
    .catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_3} :catch_14

    .line 1360
    :goto_3
    :try_start_3
    iget v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mConnectionState:I

    if-eqz v0, :cond_1b

    iget v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mError:I

    if-nez v0, :cond_1b

    .line 1361
    iget-object v0, p0, Lno/nordicsemi/android/dfu/DfuBaseService;->mLock:Ljava/lang/Object;

    invoke-virtual {v0}, Ljava/lang/Object;->wait()V

    goto :goto_3

    .line 1362
    :catchall_11
    move-exception v0

    monitor-exit v1
    :try_end_13
    .catchall {:try_start_3 .. :try_end_13} :catchall_11

    :try_start_13
    throw v0
    :try_end_14
    .catch Ljava/lang/InterruptedException; {:try_start_13 .. :try_end_14} :catch_14

    .line 1363
    :catch_14
    move-exception v0

    .line 1364
    const-string v1, "Sleeping interrupted"

    invoke-direct {p0, v1, v0}, Lno/nordicsemi/android/dfu/DfuBaseService;->loge(Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 1366
    :goto_1a
    return-void

    .line 1362
    :cond_1b
    :try_start_1b
    monitor-exit v1
    :try_end_1c
    .catchall {:try_start_1b .. :try_end_1c} :catchall_11

    goto :goto_1a
.end method