From cc5da1283afc24186b7caa5e03d4ea5041ff6342 Mon Sep 17 00:00:00 2001
From: dxl <64101226@qq.com>
Date: Fri, 13 Mar 2020 10:54:25 +0800
Subject: [PATCH] flasher implement(90%)
---
README.md | 2 +-
.../main/PM3FlasherMainActivity.java | 51 +++++----------
.../src/main/res/layout/act_pm3_flasher.xml | 25 +-------
app_main/src/main/res/values-en/strings.xml | 1 +
app_main/src/main/res/values-zh/strings.xml | 1 +
app_main/src/main/res/values/strings.xml | 1 +
.../pm3flasher/Proxmark3Flasher.java | 63 +++++++++++++++----
.../java/com/proxgrind/pm3flasher/Target.java | 5 ++
.../src/main/cpp/client/scripts/tnp3clone.lua | 2 +-
.../src/main/cpp/client/scripts/tnp3clone.lua | 2 +-
.../main/cpp/client/luascripts/tnp3clone.lua | 2 +-
11 files changed, 84 insertions(+), 71 deletions(-)
create mode 100644 pm3flasher/src/main/java/com/proxgrind/pm3flasher/Target.java
diff --git a/README.md b/README.md
index c40279fb..37740d42 100644
--- a/README.md
+++ b/README.md
@@ -65,7 +65,7 @@ Download and flash [Compiled FW 12 August](https://www.dropbox.com/s/416lsrqpr2l
## App core implementation
-If you want to join our project, you must comply with the following development specifications to some extent, including macro architecture and micro implementation. Let us have fun time coding.
+If you want to join our project, you must comply with the following development specifications to some extent, including macro architecture and micro implementation. Let us have target time coding.
- Communication implementation: using JNI mapping C & Java communication, encapsulating posix-compliant UART library, using Google API in the upper layer (Java) and posix-compliant UART in the lower layer (C/C+++).
diff --git a/app_main/src/main/java/cn/rrg/rdv/activities/main/PM3FlasherMainActivity.java b/app_main/src/main/java/cn/rrg/rdv/activities/main/PM3FlasherMainActivity.java
index bb74784b..6375f41a 100644
--- a/app_main/src/main/java/cn/rrg/rdv/activities/main/PM3FlasherMainActivity.java
+++ b/app_main/src/main/java/cn/rrg/rdv/activities/main/PM3FlasherMainActivity.java
@@ -13,6 +13,7 @@ import androidx.annotation.Nullable;
import com.bumptech.glide.Glide;
import com.proxgrind.pm3flasher.Proxmark3Flasher;
+import com.proxgrind.pm3flasher.Target;
import cn.dxl.com.Com;
import cn.dxl.common.util.LogUtils;
@@ -35,7 +36,6 @@ public class PM3FlasherMainActivity extends BaseActivity implements DevCallback<
//在程序执行读卡,写卡操作时的程序后台交互性提醒对话框
private AlertDialog mDialogWorkingState = null;
- private TextView txtShowLog;
private Button btnFlash;
private MODE mode = MODE.BOOT;
@@ -61,18 +61,12 @@ public class PM3FlasherMainActivity extends BaseActivity implements DevCallback<
mDialogWorkingState.setCancelable(false);
btnFlash = findViewById(R.id.btnFlash);
- txtShowLog = findViewById(R.id.txtShowLog);
}
private void initActions() {
btnFlash.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- if (!flasher.isPM3Opened()) {
- if (!flasher.openProxmark3()) {
- return;
- }
- }
mode = MODE.BOOT;
if (control.connect(null)) {
flashDefaultFW();
@@ -83,32 +77,23 @@ public class PM3FlasherMainActivity extends BaseActivity implements DevCallback<
});
}
- private void appendLog(String log) {
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- txtShowLog.append("\n");
- txtShowLog.append(log);
- }
- });
- }
-
private void flashDefaultFW() {
new Thread(new Runnable() {
@Override
public void run() {
+ if (!flasher.isStart(Target.CLIENT)) {
+ if (!flasher.start(Target.CLIENT)) {
+ return;
+ }
+ }
// 如果没有在Bootloader模式下,我们需要先重启设备使其进入Bootloader模式下!
- appendLog("开始判断当前是否是BOOTROM模式");
- if (flasher.isBootloaderMode()) {
- appendLog("当前是BOOTROM模式");
+ if (flasher.isStart(Target.BOOT)) {
switch (mode) {
case BOOT:
if (flasher.flashBootRom(Paths.PM3_IMAGE_BOOT_FILE)) {
- // ToastUtil.show(context, getString(R.string.tips_boot_flash_success), false);
- appendLog(getString(R.string.tips_boot_flash_success));
+ ToastUtil.show(context, getString(R.string.tips_boot_flash_success), false);
} else {
- // ToastUtil.show(context, getString(R.string.tips_boot_flash_failed), false);
- appendLog(getString(R.string.tips_boot_flash_failed));
+ ToastUtil.show(context, getString(R.string.tips_boot_flash_failed), false);
}
finishFlash();
// 开启下一轮!
@@ -117,11 +102,9 @@ public class PM3FlasherMainActivity extends BaseActivity implements DevCallback<
case OS:
if (flasher.flashFullImg(Paths.PM3_IMAGE_OS_FILE)) {
- // ToastUtil.show(context, getString(R.string.tips_os_flash_success), false);
- appendLog(getString(R.string.tips_os_flash_success));
+ ToastUtil.show(context, getString(R.string.tips_os_flash_success), false);
} else {
- // ToastUtil.show(context, getString(R.string.tips_os_flash_failed), false);
- appendLog(getString(R.string.tips_os_flash_failed));
+ ToastUtil.show(context, getString(R.string.tips_os_flash_failed), false);
}
finishFlash();
ToastUtil.show(context, getString(R.string.finish), false);
@@ -129,9 +112,8 @@ public class PM3FlasherMainActivity extends BaseActivity implements DevCallback<
break;
}
} else {
- appendLog("当前不是BOOTROM模式,将会重启设备进入BOOTROM模式");
- if (!flasher.enterBootloader()) {
- appendLog("PM3进入刷写模式失败!");
+ if (!flasher.start(Target.BOOT)) {
+ ToastUtil.show(context, getString(R.string.tips_pm3_enter_failed), false);
}
}
}
@@ -139,14 +121,15 @@ public class PM3FlasherMainActivity extends BaseActivity implements DevCallback<
}
private void finishFlash() {
- flasher.flashModeClose();
+ flasher.close(Target.BOOT);
+ flasher.close(Target.CLIENT);
}
@Override
protected void onDestroy() {
super.onDestroy();
control.unregister(this);
- flasher.closeProxmark3();
+ flasher.close(Target.CLIENT);
}
@Override
@@ -158,7 +141,7 @@ public class PM3FlasherMainActivity extends BaseActivity implements DevCallback<
@Override
public void onDetach(String dev) {
-
+ flasher.close(Target.CLIENT);
}
@Override
diff --git a/app_main/src/main/res/layout/act_pm3_flasher.xml b/app_main/src/main/res/layout/act_pm3_flasher.xml
index 5ae0f009..5b48021c 100644
--- a/app_main/src/main/res/layout/act_pm3_flasher.xml
+++ b/app_main/src/main/res/layout/act_pm3_flasher.xml
@@ -5,30 +5,11 @@
android:background="@color/colorBackground"
android:orientation="vertical">
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_centerInParent="true"
+ android:src="@drawable/rdv4_2" />