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" />