jimu-decompiled/sources/com/ubtrobot/jimu/bluetooth/base/DeviceProcessThread.java
2025-05-13 19:24:51 +02:00

112 lines
3.3 KiB
Java

package com.ubtrobot.jimu.bluetooth.base;
import android.os.SystemClock;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
/* loaded from: classes2.dex */
public class DeviceProcessThread extends Thread {
private DeviceProcessThreadCallBack a;
private List<BUFFER_DATA> b;
private boolean c = true;
public interface DeviceProcessThreadCallBack {
void a(byte[] bArr, int i);
}
public DeviceProcessThread(DeviceProcessThreadCallBack deviceProcessThreadCallBack) {
this.a = deviceProcessThreadCallBack;
new ProtocolPacket();
this.b = new CopyOnWriteArrayList();
}
public void a(byte[] bArr, int i) {
synchronized (this) {
BUFFER_DATA buffer_data = new BUFFER_DATA();
buffer_data.a = bArr;
buffer_data.b = i;
buffer_data.c = SystemClock.uptimeMillis();
buffer_data.d = 0;
this.b.add(buffer_data);
if (this.a != null) {
this.a.a(bArr, i);
}
}
}
public void b(byte[] bArr, int i) {
synchronized (this) {
if (this.a != null) {
this.a.a(bArr, i);
}
}
}
@Override // java.lang.Thread, java.lang.Runnable
public void run() {
while (this.c) {
synchronized (this) {
BUFFER_DATA buffer_data = null;
Iterator<BUFFER_DATA> it = this.b.iterator();
while (true) {
if (!it.hasNext()) {
break;
}
BUFFER_DATA next = it.next();
if (SystemClock.uptimeMillis() - next.c >= 10000) {
if (next.d >= 2) {
buffer_data = next;
break;
} else {
b(next.a, next.b);
next.c = SystemClock.uptimeMillis();
next.d++;
}
}
}
if (buffer_data != null) {
this.b.remove(buffer_data);
} else {
try {
Thread.sleep(100L);
} catch (InterruptedException unused) {
this.c = false;
Thread.currentThread().interrupt();
return;
}
}
}
}
}
public void a() {
synchronized (this) {
this.c = false;
this.b.clear();
}
}
public void a(byte b) {
synchronized (this) {
ProtocolPacket protocolPacket = new ProtocolPacket();
BUFFER_DATA buffer_data = null;
Iterator<BUFFER_DATA> it = this.b.iterator();
while (true) {
if (!it.hasNext()) {
break;
}
BUFFER_DATA next = it.next();
protocolPacket.b(next.a);
if (protocolPacket.f() == b) {
buffer_data = next;
break;
}
}
if (buffer_data != null) {
this.b.remove(buffer_data);
}
}
}
}