diff --git a/app_main/build.gradle b/app_main/build.gradle index b409da6d..2b100af7 100644 --- a/app_main/build.gradle +++ b/app_main/build.gradle @@ -54,7 +54,7 @@ dependencies { // This my project maven from github release! implementation 'com.github.xianglin1998:IORedirector:1.0' - implementation 'com.github.xianglin1998:Crapto1:1.2' + implementation 'com.github.xianglin1998:Crapto1:1.3' implementation project(':utils') implementation project(':libnfc_pn53x') diff --git a/communication/src/main/java/cn/rrg/com/StandardDriver.java b/app_main/src/main/java/cn/rrg/rdv/driver/StandardDriver.java similarity index 97% rename from communication/src/main/java/cn/rrg/com/StandardDriver.java rename to app_main/src/main/java/cn/rrg/rdv/driver/StandardDriver.java index 8a9e75a9..09f5f840 100644 --- a/communication/src/main/java/cn/rrg/com/StandardDriver.java +++ b/app_main/src/main/java/cn/rrg/rdv/driver/StandardDriver.java @@ -1,4 +1,4 @@ -package cn.rrg.com; +package cn.rrg.rdv.driver; import android.content.BroadcastReceiver; import android.content.Context; @@ -10,6 +10,8 @@ import android.util.Log; import java.io.IOException; import cn.dxl.mifare.StdMifareIntent; +import cn.rrg.com.DevCallback; +import cn.rrg.com.DriverInterface; public class StandardDriver implements DriverInterface { diff --git a/app_main/src/main/java/cn/rrg/rdv/models/AbsUsb2UartModel.java b/app_main/src/main/java/cn/rrg/rdv/models/AbsUsb2UartModel.java index 8071a109..25b2ca6e 100644 --- a/app_main/src/main/java/cn/rrg/rdv/models/AbsUsb2UartModel.java +++ b/app_main/src/main/java/cn/rrg/rdv/models/AbsUsb2UartModel.java @@ -6,8 +6,6 @@ import android.hardware.usb.UsbManager; import android.util.Log; import cn.dxl.common.util.AppUtil; -import cn.rrg.com.ContextCallback; -import cn.rrg.com.ContextHandle; import cn.rrg.com.DevCallback; import cn.rrg.com.DriverInterface; import cn.rrg.com.UsbSerialControl; diff --git a/app_main/src/main/java/cn/rrg/rdv/models/DriverSource.java b/app_main/src/main/java/cn/rrg/rdv/models/DriverSource.java index d2f86d65..9dca39b0 100644 --- a/app_main/src/main/java/cn/rrg/rdv/models/DriverSource.java +++ b/app_main/src/main/java/cn/rrg/rdv/models/DriverSource.java @@ -5,7 +5,7 @@ import android.util.SparseArray; import cn.rrg.com.DriverInterface; import cn.rrg.com.SppHasBlock; import cn.rrg.com.SppNonBlock; -import cn.rrg.com.StandardDriver; +import cn.rrg.rdv.driver.StandardDriver; import cn.rrg.com.UniversalBulkTransfer; import cn.rrg.com.UsbAcr122Raw; import cn.rrg.com.UsbSerialControl; diff --git a/app_main/src/main/java/cn/rrg/rdv/models/StandardNFCDeviceModel.java b/app_main/src/main/java/cn/rrg/rdv/models/StandardNFCDeviceModel.java index 9524a9d6..99df60ed 100644 --- a/app_main/src/main/java/cn/rrg/rdv/models/StandardNFCDeviceModel.java +++ b/app_main/src/main/java/cn/rrg/rdv/models/StandardNFCDeviceModel.java @@ -6,7 +6,7 @@ import android.nfc.NfcAdapter; import cn.rrg.com.DevCallback; import cn.rrg.com.DriverInterface; -import cn.rrg.com.StandardDriver; +import cn.rrg.rdv.driver.StandardDriver; import cn.rrg.com.Device; import cn.rrg.devices.EmptyDeivce; import cn.rrg.rdv.javabean.DevBean; diff --git a/app_main/src/main/res/values-en/arrays.xml b/app_main/src/main/res/values-en/arrays.xml index 02cd2052..3f39ab84 100644 --- a/app_main/src/main/res/values-en/arrays.xml +++ b/app_main/src/main/res/values-en/arrays.xml @@ -9,7 +9,7 @@ Slot 5 Slot 6 Slot 7 - Slot 9 + Slot 8 diff --git a/app_main/src/main/res/values/arrays.xml b/app_main/src/main/res/values/arrays.xml index 02cd2052..3f39ab84 100644 --- a/app_main/src/main/res/values/arrays.xml +++ b/app_main/src/main/res/values/arrays.xml @@ -9,7 +9,7 @@ Slot 5 Slot 6 Slot 7 - Slot 9 + Slot 8 diff --git a/chameleon/build.gradle b/chameleon/build.gradle index 7c359efa..add66c9d 100644 --- a/chameleon/build.gradle +++ b/chameleon/build.gradle @@ -21,7 +21,7 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'com.github.xianglin1998:mfkey:1.0' + implementation 'com.github.xianglin1998:mfkey:1.1' implementation project(path: ':utils') implementation 'androidx.appcompat:appcompat:1.1.0' diff --git a/chameleon/src/main/java/cn/rrg/chameleon/javabean/DetectionDatas.java b/chameleon/src/main/java/cn/rrg/chameleon/javabean/DetectionDatas.java index c37e8682..f83cfba9 100644 --- a/chameleon/src/main/java/cn/rrg/chameleon/javabean/DetectionDatas.java +++ b/chameleon/src/main/java/cn/rrg/chameleon/javabean/DetectionDatas.java @@ -1,6 +1,6 @@ package cn.rrg.chameleon.javabean; -import cn.rrg.mfkey.Nonce32; +import com.dxl.mfkey.Nonce32; public class DetectionDatas { //数据对应的UID diff --git a/chameleon/src/main/java/cn/rrg/chameleon/utils/ChameleonDetection.java b/chameleon/src/main/java/cn/rrg/chameleon/utils/ChameleonDetection.java index 168f42f2..f7f9e018 100644 --- a/chameleon/src/main/java/cn/rrg/chameleon/utils/ChameleonDetection.java +++ b/chameleon/src/main/java/cn/rrg/chameleon/utils/ChameleonDetection.java @@ -1,12 +1,13 @@ package cn.rrg.chameleon.utils; +import com.dxl.mfkey.NativeMfKey32; +import com.dxl.mfkey.Nonce32; + import java.util.List; import cn.dxl.mifare.MifareUtils; import cn.rrg.chameleon.javabean.ResultBean; import cn.rrg.chameleon.javabean.DetectionDatas; -import cn.rrg.mfkey.NativeMfKey32; -import cn.rrg.mfkey.Nonce32; import cn.dxl.common.util.HexUtil; /** diff --git a/chameleon/src/main/java/cn/rrg/chameleon/utils/DetectionResult.java b/chameleon/src/main/java/cn/rrg/chameleon/utils/DetectionResult.java index 636aa861..51bfd7e9 100644 --- a/chameleon/src/main/java/cn/rrg/chameleon/utils/DetectionResult.java +++ b/chameleon/src/main/java/cn/rrg/chameleon/utils/DetectionResult.java @@ -1,12 +1,13 @@ package cn.rrg.chameleon.utils; +import com.dxl.mfkey.Nonce32; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; import cn.dxl.mifare.MifareUtils; import cn.rrg.chameleon.javabean.DetectionDatas; -import cn.rrg.mfkey.Nonce32; import cn.dxl.common.util.HexUtil; /** diff --git a/communication/src/main/java/cn/dxl/com/Com.java b/communication/src/main/java/cn/dxl/com/Com.java index 77331faf..a06de610 100644 --- a/communication/src/main/java/cn/dxl/com/Com.java +++ b/communication/src/main/java/cn/dxl/com/Com.java @@ -1,5 +1,7 @@ package cn.dxl.com; +import android.util.Log; + import java.io.IOException; import java.io.Serializable; import java.nio.ByteBuffer; @@ -57,15 +59,26 @@ public final class Com implements Serializable { * @return init communication, true is successful or false is error!sss */ public static boolean initCom(Communication communication, Device dev) { + if (communication == null) throw new RuntimeException("The communication impl is null."); + if (dev == null) throw new RuntimeException("The device impl is null."); //初始化通信实现 mCommunication = communication; //判断端口是否正常初始化 + boolean ret = false; try { - return dev.working(); + ret = dev.working(); } catch (IOException e) { e.printStackTrace(); - return false; } + // open failed, we need + if (!ret) { + try { + dev.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return ret; } /** @@ -75,6 +88,7 @@ public final class Com implements Serializable { * @throws IOException IOException in write error. */ private static int write() throws IOException { + logCommunicationNonnull(); if (mCommunication == null) return -1; //加上偏移值 //try { @@ -93,6 +107,7 @@ public final class Com implements Serializable { * @throws IOException IOException in read error. */ private static int read() throws IOException { + logCommunicationNonnull(); if (mCommunication == null) return -1; //try { return mCommunication.read(recv_buffer.array(), @@ -107,6 +122,7 @@ public final class Com implements Serializable { * flush data, clear buffer! */ private static void flush() throws IOException { + logCommunicationNonnull(); if (mCommunication == null) return; //try { mCommunication.flush(); @@ -127,6 +143,13 @@ public final class Com implements Serializable { //} } + private static void logCommunicationNonnull() { + if (mCommunication == null) { + Log.e("Com", "Error: the communication interface implement cannot null!"); + Log.e("Com", "错误: Communication接口的实现不可以为空,否则数据传输将不起作用!"); + } + } + /* * author DXL * some communication native function diff --git a/communication/src/main/java/cn/rrg/com/ContextCallback.java b/communication/src/main/java/cn/rrg/com/ContextCallback.java deleted file mode 100644 index e2b1c92a..00000000 --- a/communication/src/main/java/cn/rrg/com/ContextCallback.java +++ /dev/null @@ -1,8 +0,0 @@ -package cn.rrg.com; - -import android.content.Context; - -public interface ContextCallback { - //留一个接口进行上下文获取! - Context getContext(); -} diff --git a/communication/src/main/java/cn/rrg/com/ContextHandle.java b/communication/src/main/java/cn/rrg/com/ContextHandle.java deleted file mode 100644 index 98d0f126..00000000 --- a/communication/src/main/java/cn/rrg/com/ContextHandle.java +++ /dev/null @@ -1,16 +0,0 @@ -package cn.rrg.com; - -import android.content.Context; - -public class ContextHandle implements ContextCallback { - private ContextCallback callback; - - public void setContextCallback(ContextCallback callback) { - this.callback = callback; - } - - @Override - public Context getContext() { - return callback.getContext(); - } -} diff --git a/libnfc_pn53x/src/main/cpp/mfcuk/mfcuk.c b/libnfc_pn53x/src/main/cpp/mfcuk/mfcuk.c index 601fd9a4..3b65c742 100644 --- a/libnfc_pn53x/src/main/cpp/mfcuk/mfcuk.c +++ b/libnfc_pn53x/src/main/cpp/mfcuk/mfcuk.c @@ -861,6 +861,7 @@ static bool mfcuk_darkside_select_tag(nfc_device *pnd, int iSleepAtFieldOFF, int return true; } + // check nack static bool valid_prng_check(nfc_device *pnd, nfc_target_info *target) { diff --git a/libnfc_pn53x/src/main/java/cn/rrg/natives/MfcukTools.java b/libnfc_pn53x/src/main/java/cn/rrg/natives/MfcukTools.java index 832fed1e..da636d8e 100644 --- a/libnfc_pn53x/src/main/java/cn/rrg/natives/MfcukTools.java +++ b/libnfc_pn53x/src/main/java/cn/rrg/natives/MfcukTools.java @@ -8,7 +8,7 @@ public class MfcukTools implements ICommandTools { * */ static { System.loadLibrary("mfcuk"); - } + } @Override public native int startExecute(String cmd);