jimu-decompiled/sources/com/ubtrobot/jimu/robotapi/UpdateManager.java
2025-05-13 19:24:51 +02:00

990 lines
36 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.ubtrobot.jimu.robotapi;
import android.content.Context;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Message;
import android.text.TextUtils;
import android.util.Log;
import com.ijm.dataencryption.de.DataDecryptTool;
import com.ubtech.utils.FileHelper;
import com.ubtech.utils.XLog;
import com.ubtrobot.jimu.Firmware;
import com.ubtrobot.jimu.bluetooth.Cancellable;
import com.ubtrobot.jimu.bluetooth.ConnectCallback;
import com.ubtrobot.jimu.bluetooth.base.IPacket;
import com.ubtrobot.jimu.bluetooth.base.ProtocolPacket;
import com.ubtrobot.jimu.bluetooth.base.discover.ScanResult;
import com.ubtrobot.jimu.bluetooth.base.discover.ScannedHubEmitter;
import com.ubtrobot.jimu.connection.PacketsReceiveListener;
import com.ubtrobot.jimu.connection.RequestException;
import com.ubtrobot.jimu.connection.RobotConnection;
import java.io.File;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.Timer;
/* loaded from: classes2.dex */
public class UpdateManager implements PacketsReceiveListener, ConnectCallback {
private Timer a;
private volatile int b;
private RobotConnection c;
private DeviceManager d;
private JimuScanner e;
private Cancellable f;
private List<Firmware> g = new ArrayList();
private Queue<Firmware> h = new LinkedList();
private Firmware i;
private Firmware j;
private Firmware k;
private UpdateProgressListener l;
private int m;
private HandlerThread n;
private Handler o;
private volatile boolean p;
private int q;
private BoardInfo r;
public static class UpdateException extends RequestException {
public static final int ERR_CODE_DISCONNECTED = -99;
public static final int ERR_CODE_LOW_POWER = -102;
public static final int ERR_CODE_NO_FIRMWARE = -101;
public static final int ERR_CODE_STOP_UPDATE_BOARD_FAILED = -107;
public static final int ERR_CODE_UPDATE_BOARD_FAILED = -103;
public static final int ERR_CODE_UPDATE_CANCEL = -106;
public static final int ERR_CODE_UPDATE_FAILED = -100;
public static final int ERR_CODE_UPDATE_SENSOR_FAILED = -105;
public static final int ERR_CODE_UPDATE_SERVO_FAILED = -104;
private final IPacket response;
public UpdateException(int i, String str) {
this(i, str, null, null);
}
public IPacket getResponse() {
return this.response;
}
public UpdateException(int i, String str, IPacket iPacket) {
this(i, str, null, iPacket);
}
public UpdateException(int i, String str, Throwable th) {
this(i, str, th, null);
}
public UpdateException(int i, String str, Throwable th, IPacket iPacket) {
super(i, str, th);
this.response = iPacket;
}
}
public interface UpdateProgressListener {
void a(int i);
void a(int i, int i2);
void a(int i, Object obj);
void a(UpdateException updateException);
void g(BoardInfo boardInfo);
}
public UpdateManager(Context context, RobotConnection robotConnection) {
this.c = robotConnection;
this.d = new DeviceManager(robotConnection);
this.e = new JimuScanner(context.getApplicationContext());
}
private byte[] a(long j) {
return new byte[]{(byte) (j & 255), (byte) ((j >> 8) & 255), (byte) ((j >> 16) & 255), (byte) ((j >> 24) & 255)};
}
private byte[] b(int i) {
return new byte[]{(byte) (i & 255), (byte) ((i >> 8) & 255)};
}
@Override // com.ubtrobot.jimu.bluetooth.ConnectCallback
public void onSuccess() {
c(7);
}
private void d() {
XLog.a("UpdateManager", "quit update cancel=" + this.p);
try {
if (this.n != null) {
this.n.quit();
this.n = null;
this.o = null;
}
if (this.f == null || this.f.isCancelled()) {
return;
}
this.f.cancel();
this.f = null;
} catch (Exception e) {
e.printStackTrace();
}
}
private void e(String str, IPacket iPacket) {
byte[] g = iPacket.g();
if (g == null || g.length < 2) {
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_SENSOR_FAILED, "83指令返回异常"));
return;
}
int i = g[1] & 255;
Log.d("UpdateManager", String.format("%s指令返回%s", "83", Integer.toHexString(i)));
if (i == 0) {
a(this.k.c(), 100);
return;
}
if (i == 170) {
this.c.a(true);
a(this.k.c(), (Object) null);
c(3);
} else {
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_SENSOR_FAILED, "83指令返回异常传感器升级失败:" + i, iPacket));
}
}
/* JADX INFO: Access modifiers changed from: private */
public void f() {
String b = this.c.b();
if (TextUtils.isEmpty(b)) {
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_BOARD_FAILED, "新主板升级失败mac地址为null"));
} else {
this.c.a(b, this);
}
}
private int g() throws JimuException {
int a = a(new ProtocolPacket(130, new byte[]{0}));
XLog.a("UpdateManager", "取消传感器升级:" + a);
return a;
}
private int h() throws JimuException {
int a = a(new ProtocolPacket(37, new byte[]{0}));
XLog.a("UpdateManager", "取消舵机升级:" + a);
return a;
}
/* JADX INFO: Access modifiers changed from: private */
public void i() {
this.f = this.e.a(new ScannedHubEmitter() { // from class: com.ubtrobot.jimu.robotapi.UpdateManager.2
@Override // com.ubtrobot.jimu.bluetooth.base.discover.ScannedHubEmitter
public void a() {
}
@Override // com.ubtrobot.jimu.bluetooth.base.discover.ScannedHubEmitter
public void a(int i, String str) {
}
@Override // com.ubtrobot.jimu.bluetooth.base.discover.ScannedHubEmitter
public void a(ScanResult scanResult) {
if (scanResult == null || scanResult.a() == null || TextUtils.isEmpty(scanResult.a().getAddress()) || !scanResult.a().getAddress().equals(UpdateManager.this.c.b())) {
return;
}
XLog.a("UpdateManager", "新主板升级,扫描到设备,准备开始重连...");
UpdateManager.this.c(6);
UpdateManager.this.f.cancel();
}
}, 60000);
}
/* JADX INFO: Access modifiers changed from: private */
/* JADX WARN: Code restructure failed: missing block: B:30:0x007b, code lost:
android.util.Log.d("UpdateManager", "total:" + (java.lang.System.currentTimeMillis() - r13) + " sleep: " + r11);
*/
/* JADX WARN: Code restructure failed: missing block: B:31:0x009d, code lost:
if (r16 == false) goto L34;
*/
/* JADX WARN: Code restructure failed: missing block: B:32:0x009f, code lost:
a(new com.ubtrobot.jimu.robotapi.UpdateManager.UpdateException(com.ubtrobot.jimu.robotapi.UpdateManager.UpdateException.ERR_CODE_UPDATE_BOARD_FAILED, "主板升级失败指令1C失败"));
*/
/* JADX WARN: Code restructure failed: missing block: B:33:0x00a9, code lost:
return;
*/
/* JADX WARN: Code restructure failed: missing block: B:34:0x00aa, code lost:
b(20L);
*/
/* JADX WARN: Code restructure failed: missing block: B:35:0x00af, code lost:
if (r19.p == false) goto L37;
*/
/* JADX WARN: Code restructure failed: missing block: B:36:0x00b1, code lost:
return;
*/
/* JADX WARN: Code restructure failed: missing block: B:38:0x00b6, code lost:
if (a(r4, r7) == 0) goto L41;
*/
/* JADX WARN: Code restructure failed: missing block: B:39:0x00b8, code lost:
a(new com.ubtrobot.jimu.robotapi.UpdateManager.UpdateException(com.ubtrobot.jimu.robotapi.UpdateManager.UpdateException.ERR_CODE_STOP_UPDATE_BOARD_FAILED, "主板升级失败指令1B失败"));
*/
/* JADX WARN: Code restructure failed: missing block: B:40:0x00c4, code lost:
return;
*/
/* JADX WARN: Code restructure failed: missing block: B:42:0x00cd, code lost:
if (r19.i.c() != 113) goto L47;
*/
/* JADX WARN: Code restructure failed: missing block: B:43:0x00cf, code lost:
a(r19.i.c(), 100);
com.ubtech.utils.XLog.a("UpdateManager", "新主板升级文件传输完毕等待60秒重连");
r19.q = 0;
*/
/* JADX WARN: Code restructure failed: missing block: B:44:0x00e1, code lost:
if (r19.o == null) goto L46;
*/
/* JADX WARN: Code restructure failed: missing block: B:45:0x00e3, code lost:
r19.o.sendMessageDelayed(r19.o.obtainMessage(5), 50000);
*/
/* JADX WARN: Code restructure failed: missing block: B:46:?, code lost:
return;
*/
/* JADX WARN: Code restructure failed: missing block: B:47:0x00f3, code lost:
a(new com.ubtrobot.jimu.robotapi.UpdateManager.UpdateException(com.ubtrobot.jimu.robotapi.UpdateManager.UpdateException.ERR_CODE_UPDATE_BOARD_FAILED, "mHandler=null"));
*/
/* JADX WARN: Code restructure failed: missing block: B:48:?, code lost:
return;
*/
/* JADX WARN: Code restructure failed: missing block: B:49:0x00fe, code lost:
r19.c.a(false);
*/
/* JADX WARN: Code restructure failed: missing block: B:50:?, code lost:
return;
*/
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct code enable 'Show inconsistent code' option in preferences
*/
public void j() {
/*
Method dump skipped, instructions count: 272
To view this dump change 'Code comments level' option to 'DEBUG'
*/
throw new UnsupportedOperationException("Method not decompiled: com.ubtrobot.jimu.robotapi.UpdateManager.j():void");
}
/* JADX INFO: Access modifiers changed from: private */
/* JADX WARN: Code restructure failed: missing block: B:47:0x00d6, code lost:
if (r5 == false) goto L48;
*/
/* JADX WARN: Code restructure failed: missing block: B:48:0x00d8, code lost:
a(new com.ubtrobot.jimu.robotapi.UpdateManager.UpdateException(com.ubtrobot.jimu.robotapi.UpdateManager.UpdateException.ERR_CODE_UPDATE_SERVO_FAILED, "舵机升级失败指令24失败"));
*/
/* JADX WARN: Code restructure failed: missing block: B:49:0x00e2, code lost:
return;
*/
/* JADX WARN: Code restructure failed: missing block: B:50:0x00e3, code lost:
b(20L);
*/
/* JADX WARN: Code restructure failed: missing block: B:51:0x00e8, code lost:
if (r11.p == false) goto L51;
*/
/* JADX WARN: Code restructure failed: missing block: B:52:0x00ea, code lost:
return;
*/
/* JADX WARN: Code restructure failed: missing block: B:54:0x00ef, code lost:
if (b(r1, r2) == 0) goto L54;
*/
/* JADX WARN: Code restructure failed: missing block: B:55:0x00f1, code lost:
a(new com.ubtrobot.jimu.robotapi.UpdateManager.UpdateException(com.ubtrobot.jimu.robotapi.UpdateManager.UpdateException.ERR_CODE_UPDATE_SERVO_FAILED, "舵机升级失败指令26失败"));
*/
/* JADX WARN: Code restructure failed: missing block: B:56:0x00fb, code lost:
r11.c.a(false);
*/
/* JADX WARN: Code restructure failed: missing block: B:57:?, code lost:
return;
*/
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct code enable 'Show inconsistent code' option in preferences
*/
public void k() {
/*
Method dump skipped, instructions count: 269
To view this dump change 'Code comments level' option to 'DEBUG'
*/
throw new UnsupportedOperationException("Method not decompiled: com.ubtrobot.jimu.robotapi.UpdateManager.k():void");
}
private void b(String str, IPacket iPacket) {
int i = iPacket.g()[0] & 255;
Log.d("UpdateManager", String.format("%s指令返回%s", "1E", Integer.toHexString(i)));
if (i == 0) {
a(this.i.c(), 100);
return;
}
if (i == 1) {
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_BOARD_FAILED, "老主控开始升级失败"));
return;
}
if (i == 170) {
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_BOARD_FAILED, "老主控开始还原主程序"));
} else if (i != 238) {
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_BOARD_FAILED, "老主控开始升级失败"));
} else {
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_BOARD_FAILED, "老主控开始还原失败"));
}
}
/* JADX INFO: Access modifiers changed from: private */
public void c() {
XLog.a("UpdateManager", "cancel update");
this.c.b(this);
try {
try {
if (this.m == 3) {
g();
} else if (this.m == 2) {
h();
} else if (this.m == 1) {
b();
}
} catch (Exception e) {
e.printStackTrace();
}
} finally {
d();
}
}
public boolean a(BoardInfo boardInfo) {
return boardInfo == null || boardInfo.c() != 0 || boardInfo.b() >= 7.4f;
}
public boolean a(BoardInfo boardInfo, List<Firmware> list, UpdateProgressListener updateProgressListener) {
this.m = 0;
this.l = updateProgressListener;
if (list != null && list.size() != 0) {
if (!a(boardInfo)) {
this.p = true;
a(new UpdateException(UpdateException.ERR_CODE_LOW_POWER, "电量过低(电池电压低于7.4V)"));
return false;
}
this.r = boardInfo;
this.i = null;
this.j = null;
this.h.clear();
this.g.clear();
this.g.addAll(list);
for (Firmware firmware : list) {
if (112 != firmware.c() && 113 != firmware.c()) {
if (128 == firmware.c()) {
this.j = firmware;
} else {
this.h.add(firmware);
}
} else {
this.i = firmware;
}
}
this.c.a(this);
this.p = false;
this.n = new HandlerThread("jimu_firmware_update_thread");
this.n.start();
this.o = new Handler(this.n.getLooper()) { // from class: com.ubtrobot.jimu.robotapi.UpdateManager.1
@Override // android.os.Handler
public void handleMessage(Message message) {
super.handleMessage(message);
try {
switch (message.what) {
case 1:
UpdateManager.this.j();
break;
case 2:
UpdateManager.this.k();
break;
case 3:
UpdateManager.this.a(true);
break;
case 4:
UpdateManager.this.c();
break;
case 5:
UpdateManager.this.m = 5;
UpdateManager.this.i();
break;
case 6:
UpdateManager.this.m = 6;
UpdateManager.this.f();
break;
case 7:
UpdateManager.this.m = 7;
UpdateManager.this.e();
break;
}
} catch (Exception e) {
e.printStackTrace();
UpdateManager.this.a(new UpdateException(-100, "升级失败", e));
}
}
};
c(1);
return true;
}
a(new UpdateException(UpdateException.ERR_CODE_NO_FIRMWARE, "需要升级的固件列表为null"));
return false;
}
private int b(byte[] bArr, int i, int i2) throws JimuException {
return a(new ProtocolPacket(28, a(bArr, i, i2)));
}
private void d(String str, IPacket iPacket) {
int i = iPacket.g()[0] & 255;
Log.d("UpdateManager", String.format("%s指令返回%s", "26", Integer.toHexString(i)));
if (i == 0) {
a(PeripheralType.SERVO, 100);
return;
}
if (i == 2) {
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_SERVO_FAILED, "舵机升级失败: " + iPacket.g(), iPacket));
return;
}
if (i != 170) {
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_SERVO_FAILED, "舵机升级失败", iPacket));
} else {
this.c.a(true);
c(3);
}
}
/* JADX INFO: Access modifiers changed from: private */
public void e() {
try {
this.d.g();
b(20L);
BoardInfo e = this.d.e();
if (e == null) {
b(2000L);
e = this.d.e();
}
if (e != null && !TextUtils.isEmpty(e.d())) {
if (!e.d().equals(this.i.d())) {
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_BOARD_FAILED, "新主板升级,重连后版本信息和要升级的不一致,升级失败"));
return;
}
Log.d("UpdateManager", "新主板升级成功,现在的版本名称为:" + e.d());
a(this.i.c(), e);
c(2);
this.r = e;
return;
}
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_BOARD_FAILED, "新主板升级,重连后读取主板信息失败"));
} catch (Exception e2) {
e2.printStackTrace();
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_BOARD_FAILED, "新主板升级,重连后读取主板信息失败"));
}
}
public int b() throws JimuException {
int a = a(new ProtocolPacket(29, new byte[]{0}));
XLog.a("UpdateManager", "取消主板升级:" + a);
return a;
}
private void c(String str, IPacket iPacket) {
int i = iPacket.g()[0] & 255;
Log.d("UpdateManager", String.format("%s指令返回%s", "1F", Integer.toHexString(i)));
if (i == 0) {
this.c.a(true);
c(2);
} else {
if (i == 1) {
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_BOARD_FAILED, "主控结束升级失败"));
return;
}
if (i == 170) {
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_BOARD_FAILED, "结束还原主程序成功"));
} else if (i != 238) {
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_BOARD_FAILED, "主控结束升级失败"));
} else {
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_BOARD_FAILED, "结束还原失败"));
}
}
}
private int b(byte[] bArr, int i) throws JimuException {
return a(new ProtocolPacket(38, a(bArr, i, i)));
}
private byte[] b(Firmware firmware) throws JimuException {
byte[] a;
if (firmware != null && (a = a(firmware.b(), firmware.a())) != null && a.length != 0) {
String a2 = FileHelper.a(firmware.b());
if (TextUtils.isEmpty(a2)) {
return null;
}
byte[] bytes = a2.replace(".bin", "").getBytes();
byte[] bArr = new byte[bytes.length + 5];
bArr[0] = (byte) (firmware.c() & 255);
bArr[1] = 0;
byte[] b = b(b(a));
bArr[2] = b[0];
bArr[3] = b[1];
bArr[4] = (byte) (bytes.length & 255);
System.arraycopy(bytes, 0, bArr, 5, bytes.length);
byte[] b2 = b(new ProtocolPacket(PeripheralType.SERVO, bArr));
if (b2 != null && b2.length >= 2 && firmware.c() == (b2[0] & 255) && (b2[1] & 255) == 0) {
return a;
}
}
return null;
}
private byte[] c(Firmware firmware) throws JimuException {
byte[] a;
if (firmware != null && (a = a(firmware.b(), firmware.a())) != null && a.length != 0) {
int length = a.length % 64;
if (length != 0) {
byte[] bArr = new byte[a.length + (64 - length)];
System.arraycopy(a, 0, bArr, 0, a.length);
a = bArr;
}
byte[] bArr2 = new byte[7];
bArr2[0] = 0;
System.arraycopy(b(b(a)), 0, bArr2, 1, 2);
System.arraycopy(a(a(a)), 0, bArr2, 3, 4);
if (a(new ProtocolPacket(35, bArr2)) == 0) {
return a;
}
}
return null;
}
public synchronized void a() {
if (!this.p && this.n != null) {
c(4);
a(this.m);
this.p = true;
}
}
private int c(byte[] bArr, int i, int i2) throws JimuException {
return a(new ProtocolPacket(36, a(bArr, i, i2)));
}
private byte[] b(int i, byte[] bArr, int i2, int i3) throws JimuException {
return b(new ProtocolPacket(129, a(i, bArr, i2, i3)));
}
/* JADX INFO: Access modifiers changed from: private */
public void c(int i) {
Handler handler = this.o;
if (handler == null) {
XLog.b("UpdateManager", "未知错误: mHandler==null");
d();
} else {
handler.sendEmptyMessage(i);
}
}
@Override // com.ubtrobot.jimu.connection.PacketsReceiveListener
public void a(String str, IPacket iPacket) {
if (iPacket == null) {
return;
}
try {
int f = iPacket.f() & 255;
if (f == 30) {
b(str, iPacket);
} else if (f == 31) {
c(str, iPacket);
} else if (f == 38) {
d(str, iPacket);
} else if (f == 131) {
e(str, iPacket);
}
} catch (Exception e) {
a(new UpdateException(-100, "升级失败", e));
}
}
private void b(BoardInfo boardInfo) {
this.c.b(this);
if (boardInfo != null) {
this.l.g(boardInfo);
return;
}
try {
try {
b(3000L);
this.d.g();
b(20L);
BoardInfo e = this.d.e();
if (e == null) {
b(2000L);
e = this.d.e();
}
if (e == null) {
a(new UpdateException(-100, "升级完成,但是读取主板信息失败"));
} else {
this.r = e;
this.l.g(e);
}
} catch (Exception e2) {
e2.printStackTrace();
}
d();
Timer timer = this.a;
if (timer != null) {
timer.cancel();
this.a = null;
}
} catch (Throwable th) {
d();
throw th;
}
}
@Override // com.ubtrobot.jimu.bluetooth.ConnectCallback
public void a(int i, String str) {
this.q++;
if (this.q > 3) {
a(new UpdateException(-99, "新主控升级失败重连3次失败"));
return;
}
Handler handler = this.o;
if (handler != null) {
handler.sendMessageDelayed(handler.obtainMessage(6), 3000L);
} else {
a(new UpdateException(-99, "新主控升级失败,重连失败"));
}
}
/* JADX INFO: Access modifiers changed from: private */
public void a(boolean z) {
boolean z2;
if (this.m == 2) {
if (z) {
try {
b(3000L);
this.d.g();
b(20L);
BoardInfo e = this.d.e();
if (e == null) {
b(2000L);
e = this.d.e();
}
if (e != null && !TextUtils.isEmpty(e.j()) && e.j().equals(this.j.d())) {
this.r = e;
a(PeripheralType.SERVO, e);
}
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_SERVO_FAILED, "舵机升级完成,但是读取主板信息失败"));
return;
} catch (Exception e2) {
e2.printStackTrace();
}
}
if (this.h == null || this.h.size() == 0) {
b(this.r);
return;
}
}
Firmware poll = this.h.poll();
if (poll == null) {
b((BoardInfo) null);
return;
}
Log.d("UpdateManager", "升级传感器:" + poll.c());
this.m = 3;
this.k = poll;
try {
b(20L);
if (this.p) {
return;
}
byte[] b = b(poll);
if (b != null && b.length != 0) {
int b2 = b(b);
int i = 0;
int i2 = 0;
while (i < b2 - 1) {
b(20L);
if (!this.p) {
int i3 = i + 1;
byte[] b3 = b(poll.c(), b, b2, i3);
if (poll.c() == (b3[0] & 255) && (b3[1] & 255) == 0) {
int i4 = (i * 100) / b2;
if (i2 != i4) {
a(poll.c(), i4);
i2 = i4;
}
i = i3;
}
z2 = true;
break;
}
return;
}
z2 = false;
if (z2) {
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_SENSOR_FAILED, "传感器升级失败81指令调用失败"));
return;
}
b(20L);
if (this.p) {
return;
}
if ((a(poll.c(), b, b2)[1] & 255) != 0) {
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_SENSOR_FAILED, "传感器升级失败83指令调用失败"));
}
this.c.a(false);
return;
}
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_SENSOR_FAILED, "传感器升级失败80指令调用失败"));
} catch (Exception e3) {
e3.printStackTrace();
a(new UpdateException(UpdateException.ERR_CODE_UPDATE_SENSOR_FAILED, "传感器升级失败", e3));
}
}
private byte[] b(ProtocolPacket protocolPacket) throws JimuException {
try {
byte[] g = this.c.a(protocolPacket).g();
if (g != null && g.length != 0) {
return g;
}
throw new JimuException(-21, "指令操作失败:" + Integer.toHexString(protocolPacket.f()));
} catch (RequestException e) {
e.printStackTrace();
throw new JimuException(e.getCode(), e.getMessage());
}
}
private void b(long j) {
try {
Thread.sleep(j);
} catch (Exception e) {
e.printStackTrace();
}
}
private int b(byte[] bArr) {
int length = bArr.length;
int i = length / 100;
return length % 100 > 0 ? i + 1 : i;
}
private byte[] a(Firmware firmware) throws JimuException {
byte[] a = a(firmware.b(), firmware.a());
if (a == null) {
return null;
}
String a2 = FileHelper.a(firmware.b());
if (TextUtils.isEmpty(a2)) {
return null;
}
byte[] bytes = a2.getBytes();
byte[] bArr = new byte[bytes.length + 1 + 2];
bArr[0] = (byte) (bytes.length & 255);
System.arraycopy(bytes, 0, bArr, 1, bytes.length);
System.arraycopy(b(b(a)), 0, bArr, bytes.length + 1, 2);
int a3 = a(new ProtocolPacket(26, bArr));
if (a3 == 0) {
return a;
}
XLog.b("UpdateManager", "cmd 1A failed:" + a3);
return null;
}
private int a(byte[] bArr, int i) throws JimuException {
return a(new ProtocolPacket(27, a(bArr, i, i)));
}
private byte[] a(int i, byte[] bArr, int i2) throws JimuException {
return b(new ProtocolPacket(131, a(i, bArr, i2, i2)));
}
/* JADX WARN: Removed duplicated region for block: B:14:0x0020 A[Catch: all -> 0x0068, TryCatch #0 {, blocks: (B:4:0x0003, B:12:0x001b, B:14:0x0020, B:15:0x0028, B:18:0x003a, B:19:0x0066, B:25:0x0063), top: B:3:0x0003, inners: #1 }] */
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct code enable 'Show inconsistent code' option in preferences
*/
private void a(final int r9, int r10) {
/*
r8 = this;
monitor-enter(r8)
int r10 = r10 * 9
int r10 = r10 / 10
r8.b = r10 // Catch: java.lang.Throwable -> L68
int r10 = r8.b // Catch: java.lang.Throwable -> L68
r0 = 90
if (r10 != r0) goto L3a
r10 = 113(0x71, float:1.58E-43)
if (r10 == r9) goto L19
r10 = 112(0x70, float:1.57E-43)
if (r10 != r9) goto L16
goto L19
L16:
r0 = 1000(0x3e8, double:4.94E-321)
goto L1b
L19:
r0 = 7000(0x1b58, double:3.4585E-320)
L1b:
r6 = r0
java.util.Timer r10 = r8.a // Catch: java.lang.Throwable -> L68
if (r10 == 0) goto L28
java.util.Timer r10 = r8.a // Catch: java.lang.Throwable -> L68
r10.cancel() // Catch: java.lang.Throwable -> L68
r10 = 0
r8.a = r10 // Catch: java.lang.Throwable -> L68
L28:
java.util.Timer r10 = new java.util.Timer // Catch: java.lang.Throwable -> L68
r10.<init>() // Catch: java.lang.Throwable -> L68
r8.a = r10 // Catch: java.lang.Throwable -> L68
java.util.Timer r2 = r8.a // Catch: java.lang.Throwable -> L68
com.ubtrobot.jimu.robotapi.UpdateManager$3 r3 = new com.ubtrobot.jimu.robotapi.UpdateManager$3 // Catch: java.lang.Throwable -> L68
r3.<init>() // Catch: java.lang.Throwable -> L68
r4 = r6
r2.scheduleAtFixedRate(r3, r4, r6) // Catch: java.lang.Throwable -> L68
L3a:
com.ubtrobot.jimu.robotapi.UpdateManager$UpdateProgressListener r10 = r8.l // Catch: java.lang.Exception -> L62 java.lang.Throwable -> L68
int r0 = r8.b // Catch: java.lang.Exception -> L62 java.lang.Throwable -> L68
r10.a(r9, r0) // Catch: java.lang.Exception -> L62 java.lang.Throwable -> L68
java.lang.String r10 = "UpdateManager"
java.lang.StringBuilder r0 = new java.lang.StringBuilder // Catch: java.lang.Exception -> L62 java.lang.Throwable -> L68
r0.<init>() // Catch: java.lang.Exception -> L62 java.lang.Throwable -> L68
java.lang.String r1 = "updateProgress type:"
r0.append(r1) // Catch: java.lang.Exception -> L62 java.lang.Throwable -> L68
r0.append(r9) // Catch: java.lang.Exception -> L62 java.lang.Throwable -> L68
java.lang.String r9 = " progress:"
r0.append(r9) // Catch: java.lang.Exception -> L62 java.lang.Throwable -> L68
int r9 = r8.b // Catch: java.lang.Exception -> L62 java.lang.Throwable -> L68
r0.append(r9) // Catch: java.lang.Exception -> L62 java.lang.Throwable -> L68
java.lang.String r9 = r0.toString() // Catch: java.lang.Exception -> L62 java.lang.Throwable -> L68
android.util.Log.d(r10, r9) // Catch: java.lang.Exception -> L62 java.lang.Throwable -> L68
goto L66
L62:
r9 = move-exception
r9.printStackTrace() // Catch: java.lang.Throwable -> L68
L66:
monitor-exit(r8) // Catch: java.lang.Throwable -> L68
return
L68:
r9 = move-exception
monitor-exit(r8) // Catch: java.lang.Throwable -> L68
throw r9
*/
throw new UnsupportedOperationException("Method not decompiled: com.ubtrobot.jimu.robotapi.UpdateManager.a(int, int):void");
}
private void a(int i, Object obj) {
try {
this.l.a(i, obj);
} catch (Exception e) {
e.printStackTrace();
}
}
/* JADX INFO: Access modifiers changed from: private */
public void a(UpdateException updateException) {
try {
this.l.a(updateException);
this.c.b(this);
} catch (Exception e) {
e.printStackTrace();
}
try {
Log.e("UpdateManager", "updateFailed:" + updateException.getMessage());
c(4);
} catch (Exception e2) {
e2.printStackTrace();
d();
}
Timer timer = this.a;
if (timer != null) {
timer.cancel();
this.a = null;
}
}
private void a(int i) {
try {
this.l.a(i);
} catch (Exception e) {
e.printStackTrace();
}
}
private int a(ProtocolPacket protocolPacket) throws JimuException {
return b(protocolPacket)[0] & 255;
}
private byte[] a(byte[] bArr, int i, int i2) {
int i3 = (i2 - 1) * 100;
int length = (i2 == i ? bArr.length : i2 * 100) - i3;
byte[] bArr2 = new byte[length + 2];
System.arraycopy(b(i2), 0, bArr2, 0, 2);
System.arraycopy(bArr, i3, bArr2, 2, length);
return bArr2;
}
private byte[] a(int i, byte[] bArr, int i2, int i3) {
int i4 = (i3 - 1) * 100;
int length = (i3 == i2 ? bArr.length : i3 * 100) - i4;
byte[] bArr2 = new byte[length + 3];
bArr2[0] = (byte) (i & 255);
System.arraycopy(b(i3), 0, bArr2, 1, 2);
System.arraycopy(bArr, i4, bArr2, 3, length);
return bArr2;
}
private byte[] a(String str, String str2) {
File file = new File(str);
if (file.exists() && FileHelper.a(str2, str)) {
return FileHelper.b(file);
}
return null;
}
private long a(byte[] bArr) {
long[] jArr = new long[DataDecryptTool.DECRYPT_ALL_FILE];
for (long j = 0; j < 256; j++) {
long j2 = j;
for (long j3 = 0; j3 < 8; j3++) {
j2 = (j2 & 1) == 1 ? (j2 >> 1) ^ 3988292384L : j2 >> 1;
}
jArr[(int) j] = j2;
}
long j4 = 4294967295L;
for (byte b : bArr) {
j4 = (j4 >> 8) ^ jArr[(int) ((b ^ j4) & 255)];
}
return j4;
}
}