jimu-decompiled/sources/com/afunx/ble/blelitelib/operation/BleWriteCharacteristicNoResponseInterruptOperation.java
2025-05-13 19:24:51 +02:00

193 lines
9.4 KiB
Java

package com.afunx.ble.blelitelib.operation;
import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCharacteristic;
import com.afunx.ble.blelitelib.log.BleLiteLog;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicInteger;
/* loaded from: classes.dex */
public class BleWriteCharacteristicNoResponseInterruptOperation extends BleOperationAbs implements BleInterruptable {
private static final int PACKET_SIZE = 20;
private static final String TAG = "BleWriteCharacteristicNoResponseInterruptOperation";
private final BluetoothGatt mBluetoothGatt;
private final BluetoothGattCharacteristic mCharacteristic;
private final byte[] mMsg;
private static int[] PACKET_INTERVALS = {5, 5, 5, 35};
private static final AtomicInteger mAutoId = new AtomicInteger(0);
private static volatile long lastTimestamp = 0;
private static final Map<UUID, byte[][]> mBufferMap = new HashMap();
private BleWriteCharacteristicNoResponseInterruptOperation(BluetoothGatt bluetoothGatt, BluetoothGattCharacteristic bluetoothGattCharacteristic, byte[] bArr) {
this.mBluetoothGatt = bluetoothGatt;
this.mCharacteristic = bluetoothGattCharacteristic;
this.mMsg = bArr;
}
public static BleWriteCharacteristicNoResponseInterruptOperation createInstance(BluetoothGatt bluetoothGatt, BluetoothGattCharacteristic bluetoothGattCharacteristic, byte[] bArr) {
return new BleWriteCharacteristicNoResponseInterruptOperation(bluetoothGatt, bluetoothGattCharacteristic, bArr);
}
private static byte[][] getBuffer20(UUID uuid, int i) {
byte[][] bArr = mBufferMap.get(uuid);
if (bArr == null) {
bArr = new byte[i][];
int i2 = 0;
while (i2 < bArr.length) {
int i3 = i2 + 1;
bArr[i2] = new byte[i3];
i2 = i3;
}
mBufferMap.put(uuid, bArr);
}
return bArr;
}
private static byte[] getSendMessage(UUID uuid, int i, byte[] bArr, int i2, int i3) {
byte[][] buffer20 = getBuffer20(uuid, i);
int i4 = i3 - 1;
System.arraycopy(bArr, i2, buffer20[i4], 0, i3);
return buffer20[i4];
}
private static boolean sleep() {
synchronized (BleWriteCharacteristicNoResponseInterruptOperation.class) {
int currentTimeMillis = PACKET_INTERVALS[mAutoId.getAndAdd(1) % PACKET_INTERVALS.length] - ((int) (System.currentTimeMillis() - lastTimestamp));
if (currentTimeMillis <= 0) {
return Thread.interrupted();
}
try {
BleWriteCharacteristicNoResponseInterruptOperation.class.wait(currentTimeMillis);
return false;
} catch (InterruptedException unused) {
BleLiteLog.e(TAG, "sleep() is interrupted, return true");
Thread.currentThread().interrupt();
return true;
}
}
}
private static synchronized void updateLastTimestamp() {
synchronized (BleWriteCharacteristicNoResponseInterruptOperation.class) {
lastTimestamp = System.currentTimeMillis();
}
}
@Override // com.afunx.ble.blelitelib.operation.BleOperationAbs
protected void clearConcurrentOperation() {
}
@Override // com.afunx.ble.blelitelib.operation.BleOperation
public int getOperatcionCode() {
return 12;
}
/* JADX WARN: Code restructure failed: missing block: B:34:0x0019, code lost:
com.afunx.ble.blelitelib.operation.BleWriteCharacteristicNoResponseInterruptOperation.mAutoId.wait(50);
*/
@Override // com.afunx.ble.blelitelib.operation.BleOperation, java.lang.Runnable
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct code enable 'Show inconsistent code' option in preferences
*/
public void run() {
/*
r12 = this;
byte[] r0 = r12.mMsg
int r0 = r0.length
java.util.concurrent.atomic.AtomicInteger r1 = com.afunx.ble.blelitelib.operation.BleWriteCharacteristicNoResponseInterruptOperation.mAutoId
monitor-enter(r1)
android.bluetooth.BluetoothGattCharacteristic r2 = r12.mCharacteristic // Catch: java.lang.Throwable -> La4
r3 = 1
r2.setWriteType(r3) // Catch: java.lang.Throwable -> La4
r2 = 0
r4 = 0
r5 = 0
Lf:
if (r4 >= r0) goto La2
boolean r6 = sleep() // Catch: java.lang.Throwable -> La4
r7 = 50
if (r6 == 0) goto L2e
java.util.concurrent.atomic.AtomicInteger r0 = com.afunx.ble.blelitelib.operation.BleWriteCharacteristicNoResponseInterruptOperation.mAutoId // Catch: java.lang.InterruptedException -> L1f java.lang.Throwable -> La4
r0.wait(r7) // Catch: java.lang.InterruptedException -> L1f java.lang.Throwable -> La4
goto L2a
L1f:
r0 = move-exception
r0.printStackTrace() // Catch: java.lang.Throwable -> La4
java.lang.Thread r0 = java.lang.Thread.currentThread() // Catch: java.lang.Throwable -> La4
r0.interrupt() // Catch: java.lang.Throwable -> La4
L2a:
updateLastTimestamp() // Catch: java.lang.Throwable -> La4
goto La2
L2e:
int r6 = r4 + 20
r9 = 20
if (r6 > r0) goto L37
r6 = 20
goto L39
L37:
int r6 = r0 - r4
L39:
android.bluetooth.BluetoothGattCharacteristic r10 = r12.mCharacteristic // Catch: java.lang.Throwable -> La4
java.util.UUID r10 = r10.getUuid() // Catch: java.lang.Throwable -> La4
byte[] r11 = r12.mMsg // Catch: java.lang.Throwable -> La4
byte[] r9 = getSendMessage(r10, r9, r11, r4, r6) // Catch: java.lang.Throwable -> La4
android.bluetooth.BluetoothGattCharacteristic r10 = r12.mCharacteristic // Catch: java.lang.Throwable -> La4
r10.setValue(r9) // Catch: java.lang.Throwable -> La4
android.bluetooth.BluetoothGatt r10 = r12.mBluetoothGatt // Catch: java.lang.Throwable -> La4
android.bluetooth.BluetoothGattCharacteristic r11 = r12.mCharacteristic // Catch: java.lang.Throwable -> La4
boolean r10 = r10.writeCharacteristic(r11) // Catch: java.lang.Throwable -> La4
if (r10 == 0) goto L56
r5 = 0
goto L69
L56:
int r5 = r5 + r3
r11 = 3
if (r5 <= r11) goto L63
java.lang.String r0 = "BleWriteCharacteristicNoResponseInterruptOperation"
java.lang.String r2 = "writeCharacteristic() fail"
com.afunx.ble.blelitelib.log.BleLiteLog.e(r0, r2) // Catch: java.lang.Throwable -> La4
monitor-exit(r1) // Catch: java.lang.Throwable -> La4
return
L63:
int r4 = r4 - r6
java.util.concurrent.atomic.AtomicInteger r11 = com.afunx.ble.blelitelib.operation.BleWriteCharacteristicNoResponseInterruptOperation.mAutoId // Catch: java.lang.InterruptedException -> L91 java.lang.Throwable -> La4
r11.wait(r7) // Catch: java.lang.InterruptedException -> L91 java.lang.Throwable -> La4
L69:
java.lang.String r7 = "BleWriteCharacteristicNoResponseInterruptOperation"
java.lang.StringBuilder r8 = new java.lang.StringBuilder // Catch: java.lang.Throwable -> La4
r8.<init>() // Catch: java.lang.Throwable -> La4
java.lang.String r11 = "writeCharacteristic() "
r8.append(r11) // Catch: java.lang.Throwable -> La4
java.lang.String r9 = com.afunx.ble.blelitelib.utils.HexUtils.bytes2HexStringWithSpace(r9, r2, r6) // Catch: java.lang.Throwable -> La4
r8.append(r9) // Catch: java.lang.Throwable -> La4
java.lang.String r9 = ", isWriteSuc: "
r8.append(r9) // Catch: java.lang.Throwable -> La4
r8.append(r10) // Catch: java.lang.Throwable -> La4
java.lang.String r8 = r8.toString() // Catch: java.lang.Throwable -> La4
com.afunx.ble.blelitelib.log.BleLiteLog.i(r7, r8) // Catch: java.lang.Throwable -> La4
updateLastTimestamp() // Catch: java.lang.Throwable -> La4
int r4 = r4 + r6
goto Lf
L91:
java.lang.String r0 = "BleWriteCharacteristicNoResponseInterruptOperation"
java.lang.String r2 = "sleep() is interrupted, break"
com.afunx.ble.blelitelib.log.BleLiteLog.e(r0, r2) // Catch: java.lang.Throwable -> La4
updateLastTimestamp() // Catch: java.lang.Throwable -> La4
java.lang.Thread r0 = java.lang.Thread.currentThread() // Catch: java.lang.Throwable -> La4
r0.interrupt() // Catch: java.lang.Throwable -> La4
La2:
monitor-exit(r1) // Catch: java.lang.Throwable -> La4
return
La4:
r0 = move-exception
monitor-exit(r1) // Catch: java.lang.Throwable -> La4
throw r0
*/
throw new UnsupportedOperationException("Method not decompiled: com.afunx.ble.blelitelib.operation.BleWriteCharacteristicNoResponseInterruptOperation.run():void");
}
}