diff --git a/app/build.gradle b/app/build.gradle index e77a022..233a4aa 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,18 +1,24 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 33 + namespace 'com.csl.cs108ademoapp' + buildFeatures { + buildConfig true + } + + compileSdk 34 defaultConfig { applicationId "com.csl.cs108ademoapp" - minSdkVersion 19 - targetSdkVersion 33 - versionCode 38 - versionName "2.8.22" + minSdk 21 + targetSdk 34 + versionCode 41 + versionName "2.14.0" } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') + implementation 'com.google.android.material:material:1.11.0' implementation project(':cs108library4a') - implementation 'com.google.android.material:material:1.9.0' + implementation project(':cslibrary4a') } diff --git a/app/libs/cs108ademo-20220811-v2.7.0-cs108library4a-debug.zip b/app/libs/cs108ademo-20220811-v2.7.0-cs108library4a-debug.zip deleted file mode 100644 index b9da4fe..0000000 Binary files a/app/libs/cs108ademo-20220811-v2.7.0-cs108library4a-debug.zip and /dev/null differ diff --git a/app/libs/cs108ademo-20230718-v2.9.0-cs108library4a-debug.zip b/app/libs/cs108ademo-20230718-v2.9.0-cs108library4a-debug.zip new file mode 100644 index 0000000..a70dd19 Binary files /dev/null and b/app/libs/cs108ademo-20230718-v2.9.0-cs108library4a-debug.zip differ diff --git a/app/release/cs108ademo-20220811-v2.7.0-app-debug.zip b/app/release/cs108ademo-20220811-v2.7.0-app-debug.zip deleted file mode 100644 index 7e66e58..0000000 Binary files a/app/release/cs108ademo-20220811-v2.7.0-app-debug.zip and /dev/null differ diff --git a/app/release/cs108ademo-20220811-v2.7.0-app-release.zip b/app/release/cs108ademo-20220811-v2.7.0-app-release.zip deleted file mode 100644 index 7d31659..0000000 Binary files a/app/release/cs108ademo-20220811-v2.7.0-app-release.zip and /dev/null differ diff --git a/app/release/cs108ademo-20230711-v2.8.22-5-app-release.zip b/app/release/cs108ademo-20230711-v2.8.22-5-app-release.zip deleted file mode 100644 index b5bc86d..0000000 Binary files a/app/release/cs108ademo-20230711-v2.8.22-5-app-release.zip and /dev/null differ diff --git a/app/release/cs108ademo-20240416-v2.14.0-app-release.zip b/app/release/cs108ademo-20240416-v2.14.0-app-release.zip new file mode 100644 index 0000000..0da2510 Binary files /dev/null and b/app/release/cs108ademo-20240416-v2.14.0-app-release.zip differ diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index 7017b39..96b9961 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -11,8 +11,8 @@ "type": "SINGLE", "filters": [], "attributes": [], - "versionCode": 38, - "versionName": "2.8.22", + "versionCode": 39, + "versionName": "2.10.5", "outputFile": "app-release.apk" } ], diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 48ae3c8..7b55caf 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + @@ -18,7 +17,7 @@ android:requestLegacyExternalStorage="true" android:theme="@style/AppTheme"> - @@ -29,7 +28,7 @@ diff --git a/app/src/main/java/com/csl/cs108ademoapp/AccessTask.java b/app/src/main/java/com/csl/cs108ademoapp/AccessTask.java index 8acad24..3a105bb 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/AccessTask.java +++ b/app/src/main/java/com/csl/cs108ademoapp/AccessTask.java @@ -6,7 +6,7 @@ import android.widget.TextView; import android.widget.Toast; -import com.csl.cs108library4a.Cs108Library4A; +import com.csl.cslibrary4a.RfidReaderChipData; import java.util.ArrayList; @@ -18,6 +18,7 @@ public enum TaskCancelRReason { } public TaskCancelRReason taskCancelReason; public String accessResult; + public String accessTagEpc; Handler mHandler = new Handler(); Runnable updateRunnable = null; @@ -27,7 +28,7 @@ public enum TaskCancelRReason { boolean invalidRequest; String selectMask; int selectBank, selectOffset; String strPassword; int powerLevel; - Cs108Library4A.HostCommands hostCommand; + RfidReaderChipData.HostCommands hostCommand; CustomMediaPlayer playerO, playerN; @@ -46,10 +47,11 @@ public enum TaskCancelRReason { boolean gotInventory; int batteryCountInventory_old; + boolean bSkipClearFilter = false; public AccessTask(Button button, boolean invalidRequest, String selectMask, int selectBank, int selectOffset, - String strPassword, int powerLevel, Cs108Library4A.HostCommands hostCommand, + String strPassword, int powerLevel, RfidReaderChipData.HostCommands hostCommand, boolean bEnableErrorPopWindow, Runnable updateRunnable) { this.button = button; this.registerTagGot = registerTagGot; @@ -72,10 +74,9 @@ public AccessTask(Button button, boolean invalidRequest, } public AccessTask(Button button, TextView textViewWriteCount, boolean invalidRequest, String selectMask, int selectBank, int selectOffset, - String strPassword, int powerLevel, Cs108Library4A.HostCommands hostCommand, - int qValue, int repeat, boolean resetCount, - TextView registerRunTime, TextView registerTagGot, TextView registerVoltageLevel, - TextView registerYieldView, TextView registerTotalView) { + String strPassword, int powerLevel, RfidReaderChipData.HostCommands hostCommand, + int qValue, int repeat, boolean resetCount, boolean bSkipClearFilter, + TextView registerRunTime, TextView registerTagGot, TextView registerVoltageLevel, TextView registerYieldView, TextView registerTotalView) { this.button = button; this.registerTotal = textViewWriteCount; this.registerRunTime = registerRunTime; @@ -94,6 +95,7 @@ public AccessTask(Button button, TextView textViewWriteCount, boolean invalidReq this.qValue = qValue; if (repeat > 255) repeat = 255; this.repeat = repeat; + this.bSkipClearFilter = bSkipClearFilter; if (resetCount) { total = 0; tagList.clear(); @@ -105,7 +107,7 @@ public void setRunnable(Runnable updateRunnable) { } void preExecute() { - accessResult = null; + accessResult = null; MainActivity.csLibrary4A.appendToLog("accessResult is set null"); playerO = MainActivity.sharedObjects.playerO; playerN = MainActivity.sharedObjects.playerN; //playerN.start(); @@ -135,7 +137,7 @@ void preExecute() { if (invalidRequest == false) { if (strPassword.length() != 8) { invalidRequest = true; MainActivity.csLibrary4A.appendToLog("strPassword.length = " + strPassword.length() + " (not 8)."); } - else if (hostCommand == Cs108Library4A.HostCommands.CMD_18K6CKILL) { + else if (hostCommand == RfidReaderChipData.HostCommands.CMD_18K6CKILL) { if (MainActivity.csLibrary4A.setRx000KillPassword(strPassword) == false) { invalidRequest = true; MainActivity.csLibrary4A.appendToLog("setRx000KillPassword is failed"); } @@ -149,14 +151,21 @@ else if (hostCommand == Cs108Library4A.HostCommands.CMD_18K6CKILL) { invalidRequest = true; MainActivity.csLibrary4A.appendToLog("setAccessRetry is failed"); } } + MainActivity.csLibrary4A.appendToLog("setSelectCriteria: invalidRequest = " + invalidRequest + ", repeat = " + repeat + ", bSkipClearFilter = " + bSkipClearFilter + ", powerLevel = " + powerLevel + ", skipSelect = " + skipSelect); if (invalidRequest == false) { if (DEBUG) MainActivity.csLibrary4A.appendToLog("AccessTask(): powerLevel = " + powerLevel); int matchRep = 1; if (repeat > 1) matchRep = repeat; + if (bSkipClearFilter == false) { + MainActivity.csLibrary4A.appendToLog("Going to setSelectCriteria disable"); + MainActivity.csLibrary4A.setSelectCriteriaDisable(-1); + } if (powerLevel < 0 || powerLevel > 330) invalidRequest = true; - else if (skipSelect) { } - else if (MainActivity.csLibrary4A.setSelectedTag(selectMask, selectBank, selectOffset, powerLevel, qValue, matchRep) == false) { - invalidRequest = true; MainActivity.csLibrary4A.appendToLog("setSelectedTag is failed with selectMask = " + selectMask + ", selectBank = " + selectBank + ", selectOffset = " + selectOffset + ", powerLevel = " + powerLevel); + else if (skipSelect == false) { + MainActivity.csLibrary4A.appendToLog("setSelectCriteria: Going to setSelectTag"); + if (MainActivity.csLibrary4A.setSelectedTag(selectMask, selectBank, selectOffset, powerLevel, qValue, matchRep) == false) { + invalidRequest = true; MainActivity.csLibrary4A.appendToLog("setSelectedTag is failed with selectMask = " + selectMask + ", selectBank = " + selectBank + ", selectOffset = " + selectOffset + ", powerLevel = " + powerLevel); + } } } gotInventory = false; @@ -173,10 +182,13 @@ else if (MainActivity.csLibrary4A.setSelectedTag(selectMask, selectBank, selectO } } + boolean accessCompleteReceived = false; + @Override protected String doInBackground(Void... a) { boolean ending = false; int iTimeOut = 5000; + accessCompleteReceived = false; while (MainActivity.csLibrary4A.isBleConnected() && isCancelled() == false && ending == false) { int batteryCount = MainActivity.csLibrary4A.getBatteryCount(); @@ -189,12 +201,13 @@ protected String doInBackground(Void... a) { publishProgress("WW"); } byte[] notificationData = MainActivity.csLibrary4A.onNotificationEvent(); - Cs108Library4A.Rx000pkgData rx000pkgData = MainActivity.csLibrary4A.onRFIDEvent(); + RfidReaderChipData.Rx000pkgData rx000pkgData = MainActivity.csLibrary4A.onRFIDEvent(); if (MainActivity.csLibrary4A.mrfidToWriteSize() != 0) timeMillis = System.currentTimeMillis(); else if (rx000pkgData != null) { if (rx000pkgData.responseType == null) { publishProgress("null response"); - } else if (rx000pkgData.responseType == Cs108Library4A.HostCmdResponseTypes.TYPE_18K6C_TAG_ACCESS) { + } else if (rx000pkgData.responseType == RfidReaderChipData.HostCmdResponseTypes.TYPE_18K6C_TAG_ACCESS) { + accessCompleteReceived = true; MainActivity.csLibrary4A.appendToLog("rx000pkgData.dataValues = " + MainActivity.csLibrary4A.byteArrayToString(rx000pkgData.dataValues)); if (rx000pkgData.decodedError == null) { if (done == false) { @@ -207,7 +220,8 @@ else if (rx000pkgData != null) { done = true; } else publishProgress(rx000pkgData.decodedError); iTimeOut = 1000; - } else if (rx000pkgData.responseType == Cs108Library4A.HostCmdResponseTypes.TYPE_COMMAND_END) { + } else if (rx000pkgData.responseType == RfidReaderChipData.HostCmdResponseTypes.TYPE_COMMAND_END) { + if (hostCommand == RfidReaderChipData.HostCommands.CMD_18K6CKILL && accessCompleteReceived == false) accessResult = ""; MainActivity.csLibrary4A.appendToLog("BtData: repeat = " + repeat + ", decodedError = " + rx000pkgData.decodedError + ", resultError = " + resultError); if (rx000pkgData.decodedError != null) { endingMessaage = rx000pkgData.decodedError; ending = true; } else if (repeat > 0 && resultError.length() == 0) { @@ -218,7 +232,8 @@ else if (repeat > 0 && resultError.length() == 0) { endingMessaage = ""; ending = true; } - } else if (rx000pkgData.responseType == Cs108Library4A.HostCmdResponseTypes.TYPE_18K6C_INVENTORY) { + } else if (rx000pkgData.responseType == RfidReaderChipData.HostCmdResponseTypes.TYPE_18K6C_INVENTORY) { + accessTagEpc = MainActivity.csLibrary4A.byteArrayToString(rx000pkgData.decodedEpc); done = false; publishProgress("TT", MainActivity.csLibrary4A.byteArrayToString(rx000pkgData.decodedEpc)); } else { diff --git a/app/src/main/java/com/csl/cs108ademoapp/AccessTask1.java b/app/src/main/java/com/csl/cs108ademoapp/AccessTask1.java index 801a83a..3d35c7a 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/AccessTask1.java +++ b/app/src/main/java/com/csl/cs108ademoapp/AccessTask1.java @@ -4,7 +4,7 @@ import android.widget.Button; import android.widget.Toast; -import com.csl.cs108library4a.Cs108Library4A; +import com.csl.cslibrary4a.RfidReaderChipData; public class AccessTask1 { Button button; @@ -14,24 +14,24 @@ public class AccessTask1 { int selectBank, selectOffset; String strPassword; int powerLevel; - Cs108Library4A.HostCommands hostCommand; + RfidReaderChipData.HostCommands hostCommand; Runnable updateRunnable = null; AccessTask accessTask; public AccessTask1(Button button, boolean invalidRequest, int accBank, int accOffset, int accSize, int accBlockCount, String accWriteData, String selectMask, int selectBank, int selectOffset, - String strPassword, int powerLevel, Cs108Library4A.HostCommands hostCommand, Runnable updateRunnable) { + String strPassword, int powerLevel, RfidReaderChipData.HostCommands hostCommand, Runnable updateRunnable) { this.button = button; this.invalidRequest = invalidRequest; MainActivity.csLibrary4A.appendToLog("HelloK: invalidRequest=" + invalidRequest); this.accBank = accBank; this.accOffset = accOffset; - if (hostCommand == Cs108Library4A.HostCommands.CMD_18K6CWRITE) { if (accBlockCount > 16) accBlockCount = 16; } + if (hostCommand == RfidReaderChipData.HostCommands.CMD_18K6CWRITE) { if (accBlockCount > 16) accBlockCount = 16; } else if (accBlockCount > 255) accBlockCount = 255; this.accBlockCount = accBlockCount; if (accWriteData == null) accWriteData = ""; - if (hostCommand == Cs108Library4A.HostCommands.CMD_18K6CWRITE) { + if (hostCommand == RfidReaderChipData.HostCommands.CMD_18K6CWRITE) { MainActivity.csLibrary4A.appendToLog("strOut: accWriteData=" + accWriteData); accWriteData = deformatWriteAccessData(accWriteData); if (accWriteData.length() < accSize * 4) { @@ -96,7 +96,7 @@ else if (accessTask.getStatus() != AsyncTask.Status.FINISHED) { } else if (button.getText().toString().indexOf("ING") > 0) { } else if (isResultReady == false) { String strAccessResult = ""; - if (hostCommand != Cs108Library4A.HostCommands.CMD_18K6CREAD || accBank != 3) strAccessResult = accessTask.accessResult; + if (hostCommand != RfidReaderChipData.HostCommands.CMD_18K6CREAD || accBank != 3) strAccessResult = accessTask.accessResult; else { int word4line = 7; for (int i = 0; i < accSizeNow; i=i+word4line) { @@ -144,10 +144,19 @@ else if (isResultReady == false) { } public String accessResult; public String getResult() { - MainActivity.csLibrary4A.appendToLog("HelloA: accessResult=" + accessResult); - if (accessTask == null) return null; - if (accessTask.getStatus() != AsyncTask.Status.FINISHED) return null; - if (button.getText().toString().indexOf("ING") > 0) return null; + MainActivity.csLibrary4A.appendToLog("HelloA: accessResult = " + accessResult); + if (accessTask == null) { + MainActivity.csLibrary4A.appendToLog("accessTask is null"); + return null; + } + if (accessTask.getStatus() != AsyncTask.Status.FINISHED) { + MainActivity.csLibrary4A.appendToLog("accessTask.getStatus is not finished"); + return null; + } + if (button.getText().toString().indexOf("ING") > 0) { + MainActivity.csLibrary4A.appendToLog("button is still ing"); + return null; + } return accessResult; } @@ -178,7 +187,7 @@ void setup() { } } } - if (invalidRequest == false && hostCommand == Cs108Library4A.HostCommands.CMD_18K6CWRITE) { + if (invalidRequest == false && hostCommand == RfidReaderChipData.HostCommands.CMD_18K6CWRITE) { if (accWriteData.length() > accSizeNow * 4) accWriteDataNow = accWriteData.substring(0, accSizeNow*4); else accWriteDataNow = accWriteData; if (MainActivity.csLibrary4A.setAccessWriteData(accWriteDataNow) == false) { diff --git a/app/src/main/java/com/csl/cs108ademoapp/CustomIME.java b/app/src/main/java/com/csl/cs108ademoapp/CustomIME.java index bc28723..bbef1de 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/CustomIME.java +++ b/app/src/main/java/com/csl/cs108ademoapp/CustomIME.java @@ -10,7 +10,7 @@ import android.view.View; import android.view.inputmethod.InputConnection; -import com.csl.cs108library4a.Cs108Library4A; +import com.csl.cslibrary4a.RfidReaderChipData; import java.util.ArrayList; @@ -29,9 +29,9 @@ public View onCreateInputView() { super.onCreateInputView();; mHandler.post(serviceRunnable); KeyboardView keyboardView = null; - if (false) { + if (true) { keyboardView = (KeyboardView) getLayoutInflater().inflate(R.layout.keyboard_view, null); - Keyboard keyboard = new Keyboard(this, R.xml.number_pad); + Keyboard keyboard = new Keyboard(this, R.xml.number_pad1); keyboardView.setKeyboard(keyboard); //keyboardView.setOnKeyboardActionListener(this); } @@ -51,8 +51,9 @@ public void onDestroy() { @Override public void run() { String strCurrentIME = Settings.Secure.getString(getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD); - appendToLog("CustomIME Debug 0 with " + strCurrentIME); - if (strCurrentIME.contains("com.csl.cs108ademoapp") == false) return; + String strCompare = getPackageName(); + appendToLog("CustomIME Debug 0 with strCurrentIME = " + strCurrentIME + ", strCompare = " + strCompare); + if (strCurrentIME.contains(strCompare) == false) return; mHandler.postDelayed(serviceRunnable, 1000); if (MainActivity.sharedObjects == null) return; @@ -86,8 +87,8 @@ public void run() { if (matched == false && strEpc != null) { epcArrayList.add(strEpc); InputConnection ic = getCurrentInputConnection(); - strEpc = (MainActivity.wedgePrefix != null ? MainActivity.wedgePrefix : "") + strEpc - + (MainActivity.wedgeSuffix != null ? MainActivity.wedgeSuffix : ""); + if (MainActivity.wedgePrefix != null) strEpc = MainActivity.wedgePrefix + strEpc; + if (MainActivity.wedgeSuffix != null) strEpc += MainActivity.wedgeSuffix; switch (MainActivity.wedgeDelimiter) { default: strEpc += "\n"; @@ -124,7 +125,7 @@ void startStopHandler() { if ((started && MainActivity.csLibrary4A.getTriggerButtonStatus()) || (started == false && MainActivity.csLibrary4A.getTriggerButtonStatus() == false)) return; if (started == false) { appendToLog("CustomIME Debug 11"); - MainActivity.csLibrary4A.startOperation(Cs108Library4A.OperationTypes.TAG_INVENTORY); + MainActivity.csLibrary4A.startOperation(RfidReaderChipData.OperationTypes.TAG_INVENTORY); inventoryRfidTask = new InventoryRfidTask(); inventoryRfidTask.execute(); } diff --git a/app/src/main/java/com/csl/cs108ademoapp/CustomPopupWindow.java b/app/src/main/java/com/csl/cs108ademoapp/CustomPopupWindow.java index d181c59..6944a0b 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/CustomPopupWindow.java +++ b/app/src/main/java/com/csl/cs108ademoapp/CustomPopupWindow.java @@ -25,8 +25,8 @@ public void popupStart(String message, boolean wait) { popupWindow = new PopupWindow(popupView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); popupWindow.showAtLocation(popupView, Gravity.CENTER, 0, 0); TextView textViewDismiss = (TextView)popupView.findViewById(R.id.dismissMessage); - int iLenghtMax = 300; - if (message.length() > iLenghtMax) message = message.substring(0, iLenghtMax) + " ....."; + //int iLenghtMax = 300; + //if (message.length() > iLenghtMax) message = message.substring(0, iLenghtMax) + " ....."; csLibrary4A.appendToLog("SaveList2ExternalTask: popupStart message = " + message); textViewDismiss.setText(message); Button btnDismiss = (Button)popupView.findViewById(R.id.dismiss); diff --git a/app/src/main/java/com/csl/cs108ademoapp/DrawerListContent.java b/app/src/main/java/com/csl/cs108ademoapp/DrawerListContent.java index 849fa8e..8dbc07f 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/DrawerListContent.java +++ b/app/src/main/java/com/csl/cs108ademoapp/DrawerListContent.java @@ -22,12 +22,15 @@ public enum DrawerPositions { SETTING, FILTER, READWRITE, SECURITY, IMPINVENTORY, IMP775, IMPAUTOTUNE, + ALIEN, UCODE8, UCODEDNA, BAPCARD, COLDCHAIN, AURASENSE, + KILOWAY, + LONGJING, AXZON, RFMICRON, FDMICRO, CTESIUS, - ASYGNTAG, LEDTAG, + ASYGNTAG, REGISTER, READWRITEUSER, WEDGE, DIRECTWEDGE, SIMINVENTORY, BLANK; @@ -46,22 +49,24 @@ public static DrawerPositions toDrawerPosition(int x) { case 9: return SECURITY; case 10: return IMPINVENTORY; - case 11: return UCODE8; - case 12: return UCODEDNA; - case 13: return BAPCARD; - case 14: return COLDCHAIN; - case 15: return AURASENSE; - case 16: return AXZON; - //case 15: return RFMICRON; - case 17: return FDMICRO; - case 18: return CTESIUS; - case 19: return ASYGNTAG; - case 20: return LEDTAG; - - case 21: return REGISTER; - case 22: return READWRITEUSER; - case 23: return WEDGE; - case 24: return DIRECTWEDGE; + case 11: return ALIEN; + case 12: return UCODE8; + case 13: return UCODEDNA; + case 14: return BAPCARD; + case 15: return COLDCHAIN; + case 16: return AURASENSE; + //case 17: return KILOWAY; + case 17: return LONGJING; + case 18: return AXZON; + //case 18: return RFMICRON; + case 19: return FDMICRO; + case 20: return CTESIUS; + case 21: return ASYGNTAG; + + case 22: return REGISTER; + case 23: return READWRITEUSER; + case 24: return WEDGE; + case 25: return DIRECTWEDGE; } return null; } @@ -80,25 +85,24 @@ public static DrawerPositions toDrawerPosition(int x) { addItem(new DrawerItem("8", "Read/Write", R.drawable.dl_access)); addItem(new DrawerItem("9", "Security", R.drawable.dl_access)); - addItem(new DrawerItem("10", "Impinj", R.drawable.dl_loc)); - //addItem(new DrawerItem("10", "Impinj M775", R.drawable.dl_loc)); - //addItem(new DrawerItem("11", "Impinj Autotune", R.drawable.dl_loc)); - addItem(new DrawerItem("11", "NXP UCODE 8", R.drawable.dl_loc)); - addItem(new DrawerItem("12", "NXP UCODE DNA", R.drawable.dl_loc)); - addItem(new DrawerItem("13", "uEm CS9010 BAP ID Card", R.drawable.dl_loc)); - addItem(new DrawerItem("14", "uEm Cold Chain CS8300", R.drawable.dl_loc)); - addItem(new DrawerItem("15", "uEm Aura-sense", R.drawable.dl_loc)); - addItem(new DrawerItem("16", "Axzon", R.drawable.dl_loc)); - //addItem(new DrawerItem("17", "Axzon Magnus", R.drawable.dl_loc)); - addItem(new DrawerItem("17", "FM13DT160", R.drawable.dl_loc)); - addItem(new DrawerItem("18", "Johar CTESIUS", R.drawable.dl_loc)); - addItem(new DrawerItem("19", "Asygn AS321x", R.drawable.dl_loc)); - addItem(new DrawerItem("20", "Led Tag", R.drawable.dl_rr)); - - addItem(new DrawerItem("21", "Register Tag", R.drawable.dl_rr)); - addItem(new DrawerItem("22", "Large sized memory read/write", R.drawable.dl_rr)); - addItem(new DrawerItem("23", "Wedge", R.drawable.dl_rr)); - addItem(new DrawerItem("24", "Direct Wedge", R.drawable.dl_rr)); + addItem(new DrawerItem("10", "Impinj Special Features", R.drawable.dl_loc)); + addItem(new DrawerItem("11", "Alien", R.drawable.dl_loc)); + addItem(new DrawerItem("12", "NXP UCODE 8", R.drawable.dl_loc)); + addItem(new DrawerItem("13", "NXP UCODE DNA", R.drawable.dl_loc)); + addItem(new DrawerItem("14", "uEm CS9010 BAP ID Card", R.drawable.dl_loc)); + addItem(new DrawerItem("15", "uEm Cold Chain CS8300", R.drawable.dl_loc)); + addItem(new DrawerItem("16", "uEm Aura-sense", R.drawable.dl_loc)); + //addItem(new DrawerItem("17", "Kiloway KX2005X-BL", R.drawable.dl_rr)); + addItem(new DrawerItem("17", "EL-N2ESL CS6861", R.drawable.dl_rr)); + addItem(new DrawerItem("18", "Axzon", R.drawable.dl_loc)); + addItem(new DrawerItem("19", "FM13DT160", R.drawable.dl_loc)); + addItem(new DrawerItem("20", "Landa CTESIUS", R.drawable.dl_loc)); + addItem(new DrawerItem("21", "Asygn AS321x", R.drawable.dl_loc)); + + addItem(new DrawerItem("22", "Register Tag", R.drawable.dl_rr)); + addItem(new DrawerItem("23", "Large sized memory read/write", R.drawable.dl_rr)); + addItem(new DrawerItem("24", "Wedge", R.drawable.dl_rr)); + addItem(new DrawerItem("25", "Direct Wedge", R.drawable.dl_rr)); } private static void addItem(DrawerItem item) { diff --git a/app/src/main/java/com/csl/cs108ademoapp/InventoryBarcodeTask.java b/app/src/main/java/com/csl/cs108ademoapp/InventoryBarcodeTask.java index 2bba656..a5efc1e 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/InventoryBarcodeTask.java +++ b/app/src/main/java/com/csl/cs108ademoapp/InventoryBarcodeTask.java @@ -8,7 +8,7 @@ import android.widget.Toast; import com.csl.cs108ademoapp.adapters.ReaderListAdapter; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.ReaderDevice; import java.util.ArrayList; diff --git a/app/src/main/java/com/csl/cs108ademoapp/InventoryRfidTask.java b/app/src/main/java/com/csl/cs108ademoapp/InventoryRfidTask.java index d94367d..62e446b 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/InventoryRfidTask.java +++ b/app/src/main/java/com/csl/cs108ademoapp/InventoryRfidTask.java @@ -8,8 +8,8 @@ import android.widget.Toast; import com.csl.cs108ademoapp.adapters.ReaderListAdapter; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.ReaderDevice; +import com.csl.cslibrary4a.RfidReaderChipData; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -19,13 +19,14 @@ public class InventoryRfidTask extends AsyncTask { final boolean DEBUG = false; final boolean ALLOW_WEDGE = true; boolean ALLOW_RTSAVE = false; public enum TaskCancelRReason { - NULL, INVALD_REQUEST, DESTORY, STOP, BUTTON_RELEASE, TIMEOUT, RFID_RESET + NULL, INVALD_REQUEST, DESTORY, STOP, BUTTON_RELEASE, TIMEOUT, RFID_RESET, ERROR } final private boolean bAdd2End = false; final boolean endingRequest = true; Context context; public TaskCancelRReason taskCancelReason; + public boolean bSgtinOnly = false, bProtectOnly; private boolean invalidRequest; boolean beepEnable; @@ -54,7 +55,7 @@ public enum TaskCancelRReason { boolean requestSound = false; boolean requestNewSound = false; boolean requestNewVibrate = false; long timeMillisNewVibrate; String strEpcOld = ""; - private ArrayList rx000pkgDataArrary = new ArrayList(); + private ArrayList rx000pkgDataArrary = new ArrayList(); private String endingMessaage; SaveList2ExternalTask saveExternalTask; @@ -71,9 +72,7 @@ void inventoryHandler_setup() { } MainActivity.csLibrary4A.appendToLog("yield = " + yield + ", allTotal = " + allTotal); } - MainActivity.csLibrary4A.invalidata = 0; - MainActivity.csLibrary4A.invalidUpdata = 0; - MainActivity.csLibrary4A.validata = 0; + MainActivity.csLibrary4A.clearInvalidata(); timeMillis = System.currentTimeMillis(); startTimeMillis = System.currentTimeMillis(); runTimeMillis = startTimeMillis; firstTime = 0; @@ -93,9 +92,9 @@ void inventoryHandler_setup() { MainActivity.mSensorConnector.mLocationDevice.turnOn(true); MainActivity.mSensorConnector.mSensorDevice.turnOn(true); if (ALLOW_RTSAVE) { - saveExternalTask = new SaveList2ExternalTask(); + saveExternalTask = new SaveList2ExternalTask(false); try { - saveExternalTask.openServer(); + saveExternalTask.openServer(false); serverConnectValid = true; MainActivity.csLibrary4A.appendToLog("openServer is done"); } catch (Exception ex) { @@ -119,10 +118,11 @@ protected void onPreExecute() { inventoryHandler_setup(); } + byte[] notificationData; @Override protected String doInBackground(Void... a) { boolean ending = false, triggerReleased = false; long triggerReleaseTime = 0; - Cs108Library4A.Rx000pkgData rx000pkgData = null; + RfidReaderChipData.Rx000pkgData rx000pkgData = null; while (MainActivity.csLibrary4A.onRFIDEvent() != null) { } //clear up possible message before operation while (MainActivity.csLibrary4A.isBleConnected() && isCancelled() == false && ending == false && MainActivity.csLibrary4A.isRfidFailure() == false) { int batteryCount = MainActivity.csLibrary4A.getBatteryCount(); @@ -134,11 +134,13 @@ protected String doInBackground(Void... a) { runTimeMillis = System.currentTimeMillis(); publishProgress("WW"); } + + notificationData = MainActivity.csLibrary4A.onNotificationEvent(); rx000pkgData = MainActivity.csLibrary4A.onRFIDEvent(); if (rx000pkgData != null && MainActivity.csLibrary4A.mrfidToWriteSize() == 0) { if (rx000pkgData.responseType == null) { publishProgress("null response"); - } else if (rx000pkgData.responseType == Cs108Library4A.HostCmdResponseTypes.TYPE_18K6C_INVENTORY) { + } else if (rx000pkgData.responseType == RfidReaderChipData.HostCmdResponseTypes.TYPE_18K6C_INVENTORY) { { if (rx000pkgData.decodedError != null) publishProgress(rx000pkgData.decodedError); else { @@ -147,7 +149,7 @@ protected String doInBackground(Void... a) { rx000pkgDataArrary.add(rx000pkgData); publishProgress(null, "", ""); } } - } else if (rx000pkgData.responseType == Cs108Library4A.HostCmdResponseTypes.TYPE_18K6C_INVENTORY_COMPACT) { + } else if (rx000pkgData.responseType == RfidReaderChipData.HostCmdResponseTypes.TYPE_18K6C_INVENTORY_COMPACT) { { if (rx000pkgData.decodedError != null) publishProgress(rx000pkgData.decodedError); else { @@ -155,18 +157,22 @@ protected String doInBackground(Void... a) { rx000pkgDataArrary.add(rx000pkgData); publishProgress(null, "", ""); } } - } else if (rx000pkgData.responseType == Cs108Library4A.HostCmdResponseTypes.TYPE_ANTENNA_CYCLE_END) { + } else if (rx000pkgData.responseType == RfidReaderChipData.HostCmdResponseTypes.TYPE_ANTENNA_CYCLE_END) { timeMillis = System.currentTimeMillis(); - } else if (rx000pkgData.responseType == Cs108Library4A.HostCmdResponseTypes.TYPE_COMMAND_ABORT_RETURN) { + } else if (rx000pkgData.responseType == RfidReaderChipData.HostCmdResponseTypes.TYPE_COMMAND_ABORT_RETURN) { MainActivity.csLibrary4A.appendToLog("AAA: Abort return is received !!!"); ending = true; - } else if (rx000pkgData.responseType == Cs108Library4A.HostCmdResponseTypes.TYPE_COMMAND_END) { + } else if (rx000pkgData.responseType == RfidReaderChipData.HostCmdResponseTypes.TYPE_COMMAND_END) { if (rx000pkgData.decodedError != null) endingMessaage = rx000pkgData.decodedError; if (continousRequest) { MainActivity.csLibrary4A.batteryLevelRequest(); - MainActivity.csLibrary4A.startOperation(Cs108Library4A.OperationTypes.TAG_INVENTORY_COMPACT); + MainActivity.csLibrary4A.startOperation(RfidReaderChipData.OperationTypes.TAG_INVENTORY_COMPACT); } else ending = true; } + } else if (false && notificationData != null) { + MainActivity.csLibrary4A.appendToLog("matched Error: resultError=" + MainActivity.csLibrary4A.byteArrayToString(notificationData)); + publishProgress("P"); + taskCancelReason = TaskCancelRReason.ERROR; } if (false) { if (MainActivity.csLibrary4A.mrfidToWriteSize() != 0) timeMillis = System.currentTimeMillis(); @@ -229,7 +235,7 @@ else if (output[0].length() == 2) { else if (output[0].contains("VV")) inventoryHandler_voltage(); } else if (DEBUG) MainActivity.csLibrary4A.appendToLog("InventoryRfidTask.InventoryRfidTask.onProgressUpdate(): " + output[0]); - } else inventoryHandler_tag(); + } else tagHandler(); } void inventoryHandler_endReason() { @@ -244,6 +250,9 @@ void inventoryHandler_endReason() { case TIMEOUT: message = "Time Out"; break; + case ERROR: + message = "Inventory Notification Error code A101: " + MainActivity.csLibrary4A.byteArrayToString(notificationData); + break; default: message = taskCancelReason.name(); break; @@ -263,13 +272,13 @@ void inventoryHandler_voltage() { } boolean bGotTagRate = false; - void inventoryHandler_tag() { + void tagHandler() { boolean DEBUG = false; { long currentTime = 0; { while (rx000pkgDataArrary.size() != 0) { - Cs108Library4A.Rx000pkgData rx000pkgData = rx000pkgDataArrary.get(0); + RfidReaderChipData.Rx000pkgData rx000pkgData = rx000pkgDataArrary.get(0); rx000pkgDataArrary.remove(0); if (rx000pkgData == null) { if (DEBUG) MainActivity.csLibrary4A.appendToLog("InventoryRfidTask: null rx000pkgData !!!"); @@ -304,6 +313,7 @@ void inventoryHandler_tag() { String strExtra1 = null; if (rx000pkgData.decodedData1 != null) { strExtra1 = MainActivity.csLibrary4A.byteArrayToString(rx000pkgData.decodedData1); if (strMdid != null && strExtra1 != null && strExtra2 != null) { + MainActivity.csLibrary4A.appendToLog("strExtra1 = " + strExtra1 + ", strExtra2 = " + strExtra2); decodeMicronData(strExtra1, strExtra2); } } @@ -339,6 +349,7 @@ void inventoryHandler_tag() { int iPc = Integer.parseInt(strPc, 16); String strXpc = null; int iSensorData = ReaderDevice.INVALID_SENSORDATA; if ((iPc & 0x0200) != 0 && strEpc != null && strEpc.length() >= 8) { + MainActivity.csLibrary4A.appendToLog("strPc = " + strPc + ", strEpc = " + strEpc); int iXpcw1 = Integer.parseInt(strEpc.substring(0, 4), 16); if ((iXpcw1 & 0x8000) != 0) { strXpc = strEpc.substring(0, 8); @@ -427,7 +438,7 @@ void inventoryHandler_tag() { } } - if (DEBUG || true) MainActivity.csLibrary4A.appendToLog("strTidCompared = " + strMdid + ", MainActivity.mDid = " + MainActivity.mDid + ", strExtra1 = " + strExtra1 + ", strExtra2 = " + strExtra2); + if (DEBUG || true) MainActivity.csLibrary4A.appendToLog("strMdid = " + strMdid + ", strTidCompared = " + strMdid + ", MainActivity.mDid = " + MainActivity.mDid + ", strExtra1 = " + strExtra1 + ", strExtra2 = " + strExtra2); if (strMdid != null) { String strTidCompared = strMdid; if (strTidCompared.indexOf("E28011") == 0) { @@ -437,10 +448,12 @@ void inventoryHandler_tag() { else if ((iValue & 0x80) != 0) strTidCompared = "E280117"; else strTidCompared = "E28011"; } + MainActivity.csLibrary4A.appendToLog("strTidCompared = " + strTidCompared); if (strTidCompared.matches("E282402")) { } else if (strTidCompared.matches("E282403")) { } else if (strTidCompared.matches("E282405")) { } else if (strTidCompared.matches("E2806894") && MainActivity.mDid.matches("E2806894C")) { } + else if (strTidCompared.matches("E28011")) { } else { //if (strMdid.matches("E280B0")) boolean bMatched = false; if (strExtra1 != null && strExtra1.indexOf(strTidCompared) == 0) { @@ -448,6 +461,7 @@ else if (strTidCompared.matches("E2806894") && MainActivity.mDid.matches("E28068 } else if (strExtra2 != null && strExtra2.indexOf(strTidCompared) == 0) { bMatched = true; if (DEBUG) MainActivity.csLibrary4A.appendToLog("strEXTRA2 contains strTidCompared"); } + MainActivity.csLibrary4A.appendToLog("bMatched = " + bMatched); if (bMatched == false) return; } } @@ -474,19 +488,32 @@ else if (strTidCompared.matches("E2806894") && MainActivity.mDid.matches("E28068 } else if (readerListAdapter.getSelectDupElim()) { ReaderDevice readerDevice = null; int iMatchItem = -1; - if (true) { + if (false) { int index = Collections.binarySearch(MainActivity.sharedObjects.tagsIndexList, new SharedObjects.TagsIndex(strAddresss, 0)); if (index >= 0) { iMatchItem = MainActivity.sharedObjects.tagsIndexList.size() - 1 - MainActivity.sharedObjects.tagsIndexList.get(index).getPosition(); } } else { + String strCompare = null; + if (extra1Bank == 2) { + strCompare = strExtra1; //MainActivity.csLibrary4A.appendToLog("1strExtra = " + strExtra1 + ", " + readerDevice.getTid() + ", " + readerDevice.getTid().matches(strCompare)); + } else if (extra2Bank == 2) { + strCompare = strExtra2; //MainActivity.csLibrary4A.appendToLog("2strExtra = " + strExtra2 + ", " + readerDevice.getTid() + ", " + readerDevice.getTid().matches(strCompare)); + } for (int i = 0; i < tagsList.size(); i++) { - if (strEpc.matches(tagsList.get(i).getAddress())) { - iMatchItem = i; - break; + //MainActivity.csLibrary4A.appendToLog("strEpc = " + strEpc + ", tagsList.get(" + i + ").getAdddress = " + tagsList.get(i).getAddress()); + if (strEpc == null || tagsList.get(i).getAddress() == null) { } + else if (strEpc.matches(tagsList.get(i).getAddress())) { + boolean bTidMatched = true; + if (strCompare != null && tagsList.get(i).getTid() != null) bTidMatched = tagsList.get(i).getTid().matches(strCompare); + if (bTidMatched) { + iMatchItem = i; + break; + } } } } + MainActivity.csLibrary4A.appendToLog("Doing duplicate elimination with iMatchItem = " + iMatchItem); if (iMatchItem >= 0) { readerDevice = tagsList.get(iMatchItem); int count = readerDevice.getCount(); @@ -520,7 +547,23 @@ else if (readerDevice.getstrExtra2() != null) { } } if (ALLOW_WEDGE) MainActivity.sharedObjects.serviceArrayList.add(strEpc); - if (match == false) { + + boolean bAddDevice = true; String strValue = null; + if (bSgtinOnly) { + strValue = MainActivity.csLibrary4A.getUpcSerial(strEpc); + MainActivity.csLibrary4A.appendToLog("bSgtinOnly = " + bSgtinOnly + ", strValue = " + (strValue == null ? "null" : strValue)); + if (strValue == null) bAddDevice = false; + } else if (bProtectOnly) { + if (strExtra1 != null) { + bAddDevice = false; + strValue = strExtra1.substring(strExtra1.length() - 1); + int iValue = Integer.parseInt(strValue, 16); + MainActivity.csLibrary4A.appendToLog("bProtectOnly = " + bProtectOnly + ", strExtra1 = " + (strExtra1 == null ? "null" : strExtra1) + ", iValue = " + iValue); + if ((iValue & 0x02) != 0) bAddDevice = true; + } else MainActivity.csLibrary4A.appendToLog("NULL strExtra1"); + } + if (bAddDevice == false) { } + else if (match == false) { if (tagsList == null) { strEpcOld = strEpc; updated = true; @@ -533,6 +576,7 @@ else if (readerDevice.getstrExtra2() != null) { new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS").format(new Date()), new SimpleDateFormat("z").format(new Date()).replaceAll("GMT", ""), MainActivity.mSensorConnector.mLocationDevice.getLocation(), MainActivity.mSensorConnector.mSensorDevice.getEcompass(), 1, rssi, phase, chidx, port, portstatus, backport1, backport2, codeSensor, codeRssi, codeTempC, brand, iSensorData); + if (bSgtinOnly && strValue != null) readerDevice.setUpcSerial(strValue); if (strMdid != null) { if (strMdid.indexOf("E282402") == 0) readerDevice.setCodeSensorMax(0x1F); else readerDevice.setCodeSensorMax(0x1FF); @@ -559,7 +603,7 @@ else if (readerDevice.getstrExtra2() != null) { requestNewSound = true; requestNewVibrate = true; requestSound = true; } - if (updated) { + if (updated && bAddDevice) { total++; allTotal++; } @@ -572,15 +616,15 @@ else if (readerDevice.getstrExtra2() != null) { if (requestSound && requestNewSound) requestSoundCount = 0; if (readerListAdapter != null) readerListAdapter.notifyDataSetChanged(); if (invalidDisplay) { - if (rfidYieldView != null) rfidYieldView.setText(String.valueOf(total) + "," + String.valueOf(MainActivity.csLibrary4A.validata)); - if (rfidRateView != null) rfidRateView.setText(String.valueOf(MainActivity.csLibrary4A.invalidata) + "," + String.valueOf(MainActivity.csLibrary4A.invalidUpdata)); + if (rfidYieldView != null) rfidYieldView.setText(String.valueOf(total) + "," + String.valueOf(MainActivity.csLibrary4A.getValidata())); + if (rfidRateView != null) rfidRateView.setText(String.valueOf(MainActivity.csLibrary4A.getInvalidata()) + "," + String.valueOf(MainActivity.csLibrary4A.getInvalidUpdata())); } else { String stringTemp = "Unique:" + String.valueOf(yield); if (true) { - float fErrorRate = (float) MainActivity.csLibrary4A.invalidata / ((float) MainActivity.csLibrary4A.validata + (float) MainActivity.csLibrary4A.invalidata) * 100; - stringTemp += "\nE" + String.valueOf(MainActivity.csLibrary4A.invalidata) + "/" + String.valueOf(MainActivity.csLibrary4A.validata) + "/" + String.valueOf((int) fErrorRate); + float fErrorRate = (float) MainActivity.csLibrary4A.getInvalidata() / ((float) MainActivity.csLibrary4A.getValidata() + (float) MainActivity.csLibrary4A.getInvalidata()) * 100; + stringTemp += "\nE" + String.valueOf(MainActivity.csLibrary4A.getInvalidata()) + "/" + String.valueOf(MainActivity.csLibrary4A.getValidata()) + "/" + String.valueOf((int) fErrorRate); } else if (true) { - stringTemp += "\nE" + String.valueOf(MainActivity.csLibrary4A.invalidata) + "," + String.valueOf(MainActivity.csLibrary4A.invalidUpdata) + "/" + String.valueOf(MainActivity.csLibrary4A.validata); + stringTemp += "\nE" + String.valueOf(MainActivity.csLibrary4A.getInvalidata()) + "," + String.valueOf(MainActivity.csLibrary4A.getInvalidUpdata()) + "/" + String.valueOf(MainActivity.csLibrary4A.getValidata()); } if (rfidYieldView != null) rfidYieldView.setText(stringTemp); if (total != 0 && currentTime - firstTimeOld > 500) { diff --git a/app/src/main/java/com/csl/cs108ademoapp/MainActivity.java b/app/src/main/java/com/csl/cs108ademoapp/MainActivity.java index 5b5afcd..de7d2eb 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/MainActivity.java +++ b/app/src/main/java/com/csl/cs108ademoapp/MainActivity.java @@ -24,12 +24,11 @@ import com.csl.cs108ademoapp.adapters.DrawerListAdapter; import com.csl.cs108ademoapp.fragments.*; import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.ReaderDevice; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; @@ -155,6 +154,7 @@ public void run() { private void selectItem(DrawerPositions position) { if (DEBUG) Log.i(TAG, "MainActivity.selectItem: position = " + position); if (position != DrawerPositions.MAIN + && position != DrawerPositions.SPECIAL && position != DrawerPositions.ABOUT && position != DrawerPositions.CONNECT && position != DrawerPositions.DIRECTWEDGE && csLibrary4A.isBleConnected() == false) { @@ -180,7 +180,7 @@ private void selectItem(DrawerPositions position) { fragment = new InventoryFragment(); break; case SEARCH: - fragment = new InventoryRfidSearchFragment(); + fragment = new InventoryRfidSearchFragment(false); break; case MULTIBANK: fragment = InventoryRfidiMultiFragment.newInstance(true, null); @@ -207,8 +207,8 @@ private void selectItem(DrawerPositions position) { case IMP775: fragment = new ImpinjM775Fragment(); break; - case IMPAUTOTUNE: - fragment = new ImpinjAutoTuneFragment(); + case ALIEN: + fragment = InventoryRfidiMultiFragment.newInstance(true, "E2003"); break; case UCODE8: fragment = new Ucode8Fragment(); @@ -225,6 +225,12 @@ private void selectItem(DrawerPositions position) { case AURASENSE: fragment = new AuraSenseFragment(); break; + case KILOWAY: + fragment = new KilowayFragment(); + break; + case LONGJING: + fragment = new LongjingFragment(); + break; case AXZON: fragment = AxzonSelectorFragment.newInstance(true); break; @@ -240,9 +246,6 @@ private void selectItem(DrawerPositions position) { case ASYGNTAG: fragment = InventoryRfidiMultiFragment.newInstance(true, "E283A"); break; - case LEDTAG: - fragment = new LedTagFragment(); - break; case REGISTER: fragment = new AccessRegisterFragment(); @@ -251,8 +254,6 @@ private void selectItem(DrawerPositions position) { fragment = new AccessReadWriteUserFragment(); break; case WEDGE: - fragment = new HomeSpecialFragment(); - break; case DIRECTWEDGE: fragment = new DirectWedgeFragment(); break; @@ -333,9 +334,7 @@ public void privacyClicked(View view) { public void locateClicked(View view) { selectItem(DrawerPositions.SEARCH); } - public void multiBankClicked(View view) { - selectItem(DrawerPositions.MULTIBANK); - } + public void multiBankClicked(View view) { selectItem(DrawerPositions.MULTIBANK); } public void settClicked(View view) { selectItem(DrawerPositions.SETTING); } @@ -353,30 +352,29 @@ public void accessClicked(View view) { public void impInventoryClicked(View view) { selectItem(DrawerPositions.IMPINVENTORY); } public void m775Clicked(View view) { selectItem(DrawerPositions.IMP775); } - public void autoTuneClicked(View view) { selectItem(DrawerPositions.IMPAUTOTUNE); } + public void alienClicked(View view) { selectItem(DrawerPositions.ALIEN); } public void uCode8Clicked(View view) { selectItem(DrawerPositions.UCODE8); } public void uCodeClicked(View view) { selectItem(DrawerPositions.UCODEDNA); } public void bapCardClicked(View view) { selectItem(DrawerPositions.BAPCARD); } public void coldChainClicked(View view) { selectItem(DrawerPositions.COLDCHAIN); } public void aurasenseClicked(View view) { selectItem(DrawerPositions.AURASENSE); } + public void kilowayClicked(View view) { selectItem(DrawerPositions.KILOWAY); } + public void longjingClicked(View view) { selectItem(DrawerPositions.LONGJING); } public void axzonClicked(View view) { selectItem(DrawerPositions.AXZON); } public void rfMicronClicked(View view) { selectItem(DrawerPositions.RFMICRON); } public void fdmicroClicked(View view) { selectItem(DrawerPositions.FDMICRO); } public void ctesiusClicked(View view) { selectItem(DrawerPositions.CTESIUS); } public void asygnClicked(View view) { selectItem(DrawerPositions.ASYGNTAG); } - public void ledInventoryClicked(View view) { selectItem(DrawerPositions.LEDTAG); } - public void regClicked(View view) { - selectItem(DrawerPositions.REGISTER); - } + public void regClicked(View view) { selectItem(DrawerPositions.REGISTER); } public static boolean wedged = false; public void wedgeClicked(View view) { - if (true) { + if (false) { wedged = true; Intent i = new Intent(Intent.ACTION_MAIN); i.addCategory(Intent.CATEGORY_HOME); startActivity(i); - } + } else selectItem(DrawerPositions.WEDGE); } public void directWedgeClicked(View view) { selectItem(DrawerPositions.DIRECTWEDGE); diff --git a/app/src/main/java/com/csl/cs108ademoapp/SaveList2ExternalTask.java b/app/src/main/java/com/csl/cs108ademoapp/SaveList2ExternalTask.java index 3531b1b..dcd9e34 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/SaveList2ExternalTask.java +++ b/app/src/main/java/com/csl/cs108ademoapp/SaveList2ExternalTask.java @@ -10,10 +10,11 @@ import android.os.Build; import android.os.Environment; import android.provider.Settings; +import android.util.Log; import android.widget.Toast; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.ReaderDevice; +import com.csl.cslibrary4a.RfidReaderChipData; import org.json.JSONArray; import org.json.JSONObject; @@ -52,14 +53,15 @@ import static com.csl.cs108ademoapp.MainActivity.csLibrary4A; public class SaveList2ExternalTask extends AsyncTask { - String messageStr; - String resultDisplay = "", errorDisplay; + public String messageStr; + String resultDisplay = ""; + public String errorDisplay; ArrayList tagsList; ReaderDevice tagDevice1; CustomPopupWindow customPopupWindow; boolean savedFile = false; int fileFormat = 0; - String url = null; + public String url = null, strBearer = null; HttpURLConnection con; String stringBluetoothMAC, stringWifiMac; @@ -107,15 +109,21 @@ else if (stringBluetoothMAC.contains("020000000000")) { } } } - public SaveList2ExternalTask() { } + boolean bImpinjServer = false; + public SaveList2ExternalTask(boolean bImpinjServer) { + csLibrary4A.appendToLog("bImpinjServer = " + bImpinjServer); + this.bImpinjServer = bImpinjServer; + } @Override protected void onPreExecute() { - if (tagsList == null) cancel(true); - - if (MainActivity.csLibrary4A.getSavingFormatSetting() == 0) messageStr = createJSON(tagsList, null).toString(); - else messageStr = createCSV(tagsList, null); - resultDisplay = save2File(messageStr, true); + if (!bImpinjServer) { + if (tagsList == null) cancel(true); + if (MainActivity.csLibrary4A.getSavingFormatSetting() == 0) + messageStr = createJSON(tagsList, null).toString(); + else messageStr = createCSV(tagsList, null); + resultDisplay = save2File(messageStr, true); + } customPopupWindow = new CustomPopupWindow(mContext); csLibrary4A.appendToLog("SaveList2ExternalTask: resultDisplay = " + resultDisplay); if (resultDisplay == null) resultDisplay = ""; @@ -128,18 +136,20 @@ protected void onPreExecute() { } protected String doInBackground(Void... params) { + Log.i("Hello", "bImpinjServer: doInBackground starts"); if (MainActivity.csLibrary4A.isBleConnected() == false) { resultDisplay += "Error in sending data to server as the reader is not connected"; return null; - } else if (MainActivity.csLibrary4A.getSaveCloudEnable() == false) { + } else if (MainActivity.csLibrary4A.getSaveCloudEnable() == false && bImpinjServer == false) { resultDisplay += "No saving to cloud as it is disabled"; return null; } try { if (true) { - openServer(); - write2Server(messageStr); - closeServer(); + csLibrary4A.appendToLog("bImpinjServer: doInBackground starts doing"); + openServer(bImpinjServer); csLibrary4A.appendToLog("bImpinjServer: doInBackground after openServer"); + write2Server(messageStr); csLibrary4A.appendToLog("bImpinjServer: doInBackground after write2Server"); + closeServer(); csLibrary4A.appendToLog("bImpinjServer: doInBackground after closeServer"); } else if (true) { String serverAddress = "192.168.25.119:21"; String addressPort[]; @@ -176,7 +186,11 @@ protected void onProgressUpdate(Void... output) { } protected void onCancelled() { } protected void onPostExecute(String output) { if (savedFile == false) resultDisplay += "\n" + save2File(messageStr, false); - customPopupWindow.popupWindow.dismiss(); customPopupWindow.popupStart(resultDisplay, false); + customPopupWindow.popupWindow.dismiss(); + csLibrary4A.appendToLog("bImpinjServer = " + bImpinjServer + ", responseCode = " + responseCode + ", resultDisplay = " + resultDisplay); + if (resultDisplay != null && resultDisplay.length() != 0) { + if (!bImpinjServer || responseCode != 200) customPopupWindow.popupStart(resultDisplay, false); + } } public String createStrEpcList() { @@ -256,15 +270,7 @@ public JSONObject createJSON(ArrayList tagsList0, ReaderDevice tag object.put("rfidReaderInternalSerialNumber", MainActivity.csLibrary4A.getRadioSerial()); object.put("smartPhoneName", Build.MODEL); - String strPhoneSerial = null; - /*if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { - try { - strPhoneSerial = Build.getSerial(); - } catch (Exception ex) { - mCs108Library4a.appendToLog("Exception = " + ex.getCause()); - } - } else*/ - strPhoneSerial = Build.SERIAL; + String strPhoneSerial = Build.SERIAL; object.put("smartPhoneSerialNumber", strPhoneSerial); object.put("smartPhoneBluetoothMACAddress", stringBluetoothMAC); object.put("smartPhoneWiFiMACAddress", stringWifiMac); @@ -291,16 +297,16 @@ public String createCSV(ArrayList tagsList0, ReaderDevice tagDevic String objectTag; objectTag = "PC,"; objectTag += "EPC,"; - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.RESERVE_BANK.ordinal())) != 0) objectTag += "Reserve Bank,"; - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.EPC_BANK.ordinal())) != 0) objectTag += "EPC Bank,"; - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.TID_BANK.ordinal())) != 0) objectTag += "TID Bank,"; - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.USER_BANK.ordinal())) != 0) objectTag += "User Bank,"; - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.PHASE.ordinal())) != 0) objectTag += "Phase,"; - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.CHANNEL.ordinal())) != 0) objectTag += "Channel,"; - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.TIME.ordinal())) != 0) objectTag += "Time Of Read,"; - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.TIMEZONE.ordinal())) != 0) objectTag += "Time Zone,"; - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.LOCATION.ordinal())) != 0) objectTag += "location Of Read Latitude, Location of Read Longitude, "; - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.DIRECTION.ordinal())) != 0) objectTag += "eCompass"; + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.RESERVE_BANK.ordinal())) != 0) objectTag += "Reserve Bank,"; + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.EPC_BANK.ordinal())) != 0) objectTag += "EPC Bank,"; + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.TID_BANK.ordinal())) != 0) objectTag += "TID Bank,"; + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.USER_BANK.ordinal())) != 0) objectTag += "User Bank,"; + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.PHASE.ordinal())) != 0) objectTag += "Phase,"; + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.CHANNEL.ordinal())) != 0) objectTag += "Channel,"; + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.TIME.ordinal())) != 0) objectTag += "Time Of Read,"; + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.TIMEZONE.ordinal())) != 0) objectTag += "Time Zone,"; + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.LOCATION.ordinal())) != 0) objectTag += "location Of Read Latitude, Location of Read Longitude, "; + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.DIRECTION.ordinal())) != 0) objectTag += "eCompass"; objectTag += "\n"; object += objectTag; } @@ -340,21 +346,21 @@ public String createCSV(ArrayList tagsList0, ReaderDevice tagDevic objectTag = String.format("=\"%s\",", pcData); objectTag += String.format("=\"%s\",", epcData); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.RESERVE_BANK.ordinal())) != 0) objectTag += String.format("=\"%s\",", resBankData); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.EPC_BANK.ordinal())) != 0) objectTag += String.format("=\"%s\",", epcBankData); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.TID_BANK.ordinal())) != 0) objectTag += String.format("=\"%s\",", tidBankData); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.USER_BANK.ordinal())) != 0) objectTag += String.format("=\"%s\",", userBankData); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.PHASE.ordinal())) != 0) objectTag += String.format("%d,", phase); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.CHANNEL.ordinal())) != 0) objectTag += String.format("%d,", channel); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.TIME.ordinal())) != 0) objectTag += String.format("=\"%s\",", timeOfRead); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.TIMEZONE.ordinal())) != 0) objectTag += String.format("%s,", timeZone); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.LOCATION.ordinal())) != 0) objectTag += String.format("%s,", location); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.DIRECTION.ordinal())) != 0)objectTag += String.format("%s", compass); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.RESERVE_BANK.ordinal())) != 0) objectTag += String.format("=\"%s\",", resBankData); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.EPC_BANK.ordinal())) != 0) objectTag += String.format("=\"%s\",", epcBankData); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.TID_BANK.ordinal())) != 0) objectTag += String.format("=\"%s\",", tidBankData); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.USER_BANK.ordinal())) != 0) objectTag += String.format("=\"%s\",", userBankData); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.PHASE.ordinal())) != 0) objectTag += String.format("%d,", phase); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.CHANNEL.ordinal())) != 0) objectTag += String.format("%d,", channel); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.TIME.ordinal())) != 0) objectTag += String.format("=\"%s\",", timeOfRead); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.TIMEZONE.ordinal())) != 0) objectTag += String.format("%s,", timeZone); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.LOCATION.ordinal())) != 0) objectTag += String.format("%s,", location); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.DIRECTION.ordinal())) != 0)objectTag += String.format("%s", compass); objectTag += "\n"; object += objectTag; } - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.OTHERS.ordinal())) != 0) { + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.OTHERS.ordinal())) != 0) { object += "\nUser Description,this is example tag data\n"; object += String.format("RFID Reader Name,=\"%s\"\n", MainActivity.csLibrary4A.getBluetoothICFirmwareName()); @@ -393,12 +399,13 @@ public String save2File(String messageStr, boolean requestPermission) { errorDisplay = "denied WRITE_EXTERNAL_STORAGE Permission !!!"; } else if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) == false) errorDisplay = "Error in mouting external storage !!!"; else { - File path = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + Environment.DIRECTORY_DOWNLOADS + "/cs108Java"); + String strDir = "cs108Java"; + File path = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + Environment.DIRECTORY_DOWNLOADS + "/" + strDir); if (path.exists() == false) path.mkdirs(); if (path.exists() == false) errorDisplay = "Error in making directory !!!"; else { String dateTime = new SimpleDateFormat("yyMMdd_HHmmss").format(new Date()); - String fileName = "cs108Java_" + dateTime + (csLibrary4A.getSavingFormatSetting() == 0 ? ".txt" : ".csv"); + String fileName = strDir + "_" + dateTime + (csLibrary4A.getSavingFormatSetting() == 0 ? ".txt" : ".csv"); File file = new File(path, fileName); if (file == null) errorDisplay = "Error in making directory !!!"; else { @@ -409,7 +416,7 @@ public String save2File(String messageStr, boolean requestPermission) { outputStream.write(messageStr.getBytes()); errorDisplay = "Error in close()"; outputStream.close(); MediaScannerConnection.scanFile(mContext, new String[]{file.getAbsolutePath()}, null, null); - resultDisplay = "Success in saving data to Download/cs108Java/" + fileName; + resultDisplay = "Success in saving data to Download/" + strDir + "/" + fileName; errorDisplay = null; } catch (Exception ex) { errorDisplay += ex.getMessage(); @@ -421,12 +428,13 @@ public String save2File(String messageStr, boolean requestPermission) { return resultDisplay; } - public void openServer() throws Exception { + public void openServer(boolean bImpinjServer) throws Exception { if (false) { url = "https://"; url += "192.168.25.21:"; url += "29090/WebServiceRESTs/1.0/req/"; } else if (false) url = "http://ptsv2.com/t/10i1t-1519143332/post"; + else if (bImpinjServer) { } //url = "https://h9tqczg9-7275.asse.devtunnels.ms/api/Auth/login"; //"https://142.251.220.110"; // else url = csLibrary4A.getServerLocation(); errorDisplay = "Error in SSLContext.getInstance()"; SSLContext sc = SSLContext.getInstance("TLS"); @@ -458,7 +466,7 @@ public boolean verify(String hostname, javax.net.ssl.SSLSession sslSession) { } HttpsURLConnection.setFollowRedirects(false); - errorDisplay = "Error in URL()"; URL obj = new URL(url); + errorDisplay = "Error in URL()"; URL obj = new URL(url); MainActivity.csLibrary4A.appendToLog("obj is " + (obj != null ? "valid" : "NULL") + " with url = " + url); errorDisplay = "Error in openConnection()"; boolean isHttps = false; if (url.length() >= 6) { @@ -470,13 +478,24 @@ public boolean verify(String hostname, javax.net.ssl.SSLSession sslSession) { } errorDisplay = "Error in setConnectTimeout()"; con.setConnectTimeout(MainActivity.csLibrary4A.getServerTimeout() * 1000); errorDisplay = "Error in setRequestMethod()"; con.setRequestMethod("POST"); - errorDisplay = "Error in setRequestProperty(User-Agent)"; con.setRequestProperty("User-Agent", "Mozilla/5.0"); - errorDisplay = "Error in setRequestProperty(Accept-Languag)"; con.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); + //errorDisplay = "Error in setRequestProperty(User-Agent)"; con.setRequestProperty("User-Agent", "Mozilla/5.0"); + //errorDisplay = "Error in setRequestProperty(text/plain)"; con.setRequestProperty("text/plain", "text/plain"); + //errorDisplay = "Error in setRequestProperty(Accept-Language)"; con.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); + MainActivity.csLibrary4A.appendToLog("authenticate in url position : " + url.indexOf("authenticate")); + if (url.indexOf("authenticate") >= 0) { + String string = strBearer; + MainActivity.csLibrary4A.appendToLog("Authorization value = " + string); + errorDisplay = "Error in setRequestProperty(Authorization)"; con.setRequestProperty("Authorization", string); + } + errorDisplay = "Error in setRequestProperty(Content)"; con.setRequestProperty("Content-Type", "application/json); //; charset=utf8"); errorDisplay = "Error in setDoOutput()"; con.setDoOutput(true); + errorDisplay = "Error in setDoInput()"; con.setDoInput(true); } boolean serverWritten = false; public void write2Server(String messageStr0) { + csLibrary4A.appendToLog("messageStr0 = " + messageStr0); try { + //InputStream is = con.getInputStream(); DataInputStream ir = new DataInputStream(is); errorDisplay = "Error in getOutputStream()"; OutputStream os = con.getOutputStream(); errorDisplay = "Error in DataOutputStream()"; DataOutputStream wr = new DataOutputStream(os); @@ -486,29 +505,32 @@ public void write2Server(String messageStr0) { errorDisplay = "Error in close(wr)"; wr.close(); errorDisplay = "Error in close(os)"; os.close(); serverWritten = true; + //csLibrary4A.appendToLog("inputStream = " + ir.readUTF()); } catch (Exception ex) { MainActivity.csLibrary4A.appendToLog("errorDisplay = " + errorDisplay + ", execpetion = " + ex.getMessage()); } } + public int responseCode; public String response = null; public void closeServer() throws Exception { if (serverWritten) { errorDisplay = "Error in getResponseCode()"; - int responseCode = con.getResponseCode(); - MainActivity.csLibrary4A.appendToLog("errorDisplay = " + errorDisplay); + responseCode = con.getResponseCode(); + //MainActivity.csLibrary4A.appendToLog("errorDisplay = " + errorDisplay); MainActivity.csLibrary4A.appendToLog("responseCode = " + responseCode); if (responseCode != 200) errorDisplay = "Error in response code = " + responseCode; else { BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); - MainActivity.csLibrary4A.appendToLog("errorDisplay = " + errorDisplay); + //MainActivity.csLibrary4A.appendToLog("errorDisplay = " + errorDisplay); String inputLine; - String response = ""; + response = ""; while ((inputLine = in.readLine()) != null) { response += inputLine; } in.close(); - MainActivity.csLibrary4A.appendToLog("errorDisplay = " + errorDisplay); + //MainActivity.csLibrary4A.appendToLog("errorDisplay = " + errorDisplay); resultDisplay += "Success in sending data to server with response = " + response; + MainActivity.csLibrary4A.appendToLog("response = " + response); errorDisplay = null; } } diff --git a/app/src/main/java/com/csl/cs108ademoapp/SelectTag.java b/app/src/main/java/com/csl/cs108ademoapp/SelectTag.java index 9585cb2..e8efb15 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/SelectTag.java +++ b/app/src/main/java/com/csl/cs108ademoapp/SelectTag.java @@ -15,15 +15,25 @@ public class SelectTag { public Spinner spinnerSelectBank; public TableRow tableRowSelectMemoryBank, tableRowSelectPassword; - public SelectTag(Activity activity) { - tableRowSelectMemoryBank = (TableRow) activity.findViewById(R.id.selectMemoryBankRow); - tableRowSelectPassword = (TableRow) activity.findViewById(R.id.selectPasswordRow); + public SelectTag(Activity activity, int index) { + if (index == 2) tableRowSelectMemoryBank = (TableRow) activity.findViewById(R.id.selectMemoryBankRow2); + else if (index == 1) tableRowSelectMemoryBank = (TableRow) activity.findViewById(R.id.selectMemoryBankRow1); + else tableRowSelectMemoryBank = (TableRow) activity.findViewById(R.id.selectMemoryBankRow); + if (index == 2) tableRowSelectPassword = (TableRow) activity.findViewById(R.id.selectPasswordRow2); + else if (index == 1) tableRowSelectPassword = (TableRow) activity.findViewById(R.id.selectPasswordRow1); + else tableRowSelectPassword = (TableRow) activity.findViewById(R.id.selectPasswordRow); - editTextTagID = (EditText) activity.findViewById(R.id.selectTagID); - editTextSelectOffset = (EditText) activity.findViewById(R.id.selectMemoryOffset); + if (index == 2) editTextTagID = (EditText) activity.findViewById(R.id.selectTagID2); + else if (index == 1) editTextTagID = (EditText) activity.findViewById(R.id.selectTagID1); + else editTextTagID = (EditText) activity.findViewById(R.id.selectTagID); + if (index == 2) editTextSelectOffset = (EditText) activity.findViewById(R.id.selectMemoryOffset2); + else if (index == 1) editTextSelectOffset = (EditText) activity.findViewById(R.id.selectMemoryOffset1); + else editTextSelectOffset = (EditText) activity.findViewById(R.id.selectMemoryOffset); //editTextRWSelectOffset.setVisibility(View.VISIBLE); - spinnerSelectBank = (Spinner) activity.findViewById(R.id.selectMemoryBank); + if (index == 2) spinnerSelectBank = (Spinner) activity.findViewById(R.id.selectMemoryBank2); + else if (index == 1) spinnerSelectBank = (Spinner) activity.findViewById(R.id.selectMemoryBank1); + else spinnerSelectBank = (Spinner) activity.findViewById(R.id.selectMemoryBank); ArrayAdapter targetAdapter = ArrayAdapter.createFromResource(activity, R.array.read_memoryBank_options, R.layout.custom_spinner_layout); targetAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinnerSelectBank.setAdapter(targetAdapter); @@ -39,11 +49,15 @@ public void onNothingSelected(AdapterView parent) { } }); - editTextAccessPassword = (EditText) activity.findViewById(R.id.selectPasswordValue); + if (index == 2) editTextAccessPassword = (EditText) activity.findViewById(R.id.selectPasswordValue2); + else if (index == 1) editTextAccessPassword = (EditText) activity.findViewById(R.id.selectPasswordValue1); + else editTextAccessPassword = (EditText) activity.findViewById(R.id.selectPasswordValue); editTextAccessPassword.addTextChangedListener(new GenericTextWatcher(editTextAccessPassword, 8)); editTextAccessPassword.setText("00000000"); - editTextAccessAntennaPower = (EditText) activity.findViewById(R.id.selectAntennaPower); + if (index == 2) editTextAccessAntennaPower = (EditText) activity.findViewById(R.id.selectAntennaPower2); + else if (index == 1) editTextAccessAntennaPower = (EditText) activity.findViewById(R.id.selectAntennaPower1); + else editTextAccessAntennaPower = (EditText) activity.findViewById(R.id.selectAntennaPower); editTextAccessAntennaPower.setText(String.valueOf(300)); } diff --git a/app/src/main/java/com/csl/cs108ademoapp/SensorConnector.java b/app/src/main/java/com/csl/cs108ademoapp/SensorConnector.java index 48829df..490850d 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/SensorConnector.java +++ b/app/src/main/java/com/csl/cs108ademoapp/SensorConnector.java @@ -14,8 +14,6 @@ import androidx.core.app.ActivityCompat; import android.widget.Toast; -import com.csl.cs108library4a.Cs108Library4A; - import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @@ -36,10 +34,8 @@ public String getTimeStamp() { private Sensor mAccelerometer; private Sensor mMagnetometer; - private Cs108Library4A mCsLibrary4A = MainActivity.csLibrary4A; SensorConnector(Context context) { - mCsLibrary4A = MainActivity.csLibrary4A; mLocationDevice = new LocationDevice(context); mSensorDevice = new SensorDevice(context); } @@ -65,27 +61,27 @@ public String getLocation() { PackageManager mPackageManager; mPackageManager = (PackageManager) context.getPackageManager(); if (!(mPackageManager.hasSystemFeature(PackageManager.FEATURE_LOCATION))) { - if (DEBUG) mCsLibrary4A.appendToLog("there is NO Feature_Location"); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("there is NO Feature_Location"); Toast.makeText(context.getApplicationContext(), "there is NO LOCATION_FEATURE in this phone !!! Please use another phone.", Toast.LENGTH_LONG).show(); } else locationManager = (LocationManager) context.getSystemService(LOCATION_SERVICE); } public void turnOn(boolean onStatus) { if (locationManager != null) { - if (true) mCsLibrary4A.appendToLog("permission.ACCESS_FINE_LOCATION = " + ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION)); - if (true) mCsLibrary4A.appendToLog("permission.ACCESS_COARSE_LOCATION = " + ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION)); + if (true) MainActivity.csLibrary4A.appendToLog("permission.ACCESS_FINE_LOCATION = " + ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION)); + if (true) MainActivity.csLibrary4A.appendToLog("permission.ACCESS_COARSE_LOCATION = " + ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION)); if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { Toast.makeText(mContext.getApplicationContext(), "LOCATION_FEATURE permission is NOT GRANTED in this phone !!! Please go to Phone Setup and enable Location Services and Relaunch.", Toast.LENGTH_SHORT).show(); } else if (onStatus && this.onStatus == false) { this.onStatus = onStatus; - if (true) mCsLibrary4A.appendToLog("LocationDevice.setRfidOn(): ON with LocationManager: ON"); - if (true) mCsLibrary4A.appendToLog("LocationManager.PASSIVE_PROVIDER = " + LocationManager.PASSIVE_PROVIDER); + if (true) MainActivity.csLibrary4A.appendToLog("LocationDevice.setRfidOn(): ON with LocationManager: ON"); + if (true) MainActivity.csLibrary4A.appendToLog("LocationManager.PASSIVE_PROVIDER = " + LocationManager.PASSIVE_PROVIDER); location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); // locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, locationListener); - locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, locationListener); + if (true) locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, locationListener); //not working in iData2S phone } else if (onStatus == false && this.onStatus) { this.onStatus = onStatus; - if (DEBUG) mCsLibrary4A.appendToLog("LocationDevice.setRfidOn(): OFF"); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("LocationDevice.setRfidOn(): OFF"); locationManager.removeUpdates(locationListener); } } @@ -94,7 +90,7 @@ public void turnOn(boolean onStatus) { private LocationListener locationListener = new LocationListener() { @Override public void onLocationChanged(Location location) { - if (true) mCsLibrary4A.appendToLog("onLocationChanged(): " + location.getProvider()); + if (true) MainActivity.csLibrary4A.appendToLog("onLocationChanged(): " + location.getProvider()); location = location; } @@ -135,9 +131,9 @@ public String getEcompass() { mSensorManager = (SensorManager) mContext.getSystemService(SENSOR_SERVICE); List deviceSensors = mSensorManager.getSensorList(Sensor.TYPE_ALL); - if (DEBUG) mCsLibrary4A.appendToLog("SensorDevice(): List of sensors"); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("SensorDevice(): List of sensors"); for (int i = 0; i < deviceSensors.size(); i++) { - if (DEBUG) mCsLibrary4A.appendToLog(deviceSensors.get(i).getType() + "," + deviceSensors.get(i).getName()); + if (DEBUG) MainActivity.csLibrary4A.appendToLog(deviceSensors.get(i).getType() + "," + deviceSensors.get(i).getName()); } } @@ -157,11 +153,11 @@ public void turnOn(boolean onStatus) { mSensorManager.unregisterListener(sensorEventListener); } else { this.onStatus = onStatus; - if (DEBUG) mCsLibrary4A.appendToLog("SensorDevice.setRfidOn(): ON"); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("SensorDevice.setRfidOn(): ON"); } } else if (this.onStatus && onStatus == false) { this.onStatus = onStatus; - if (DEBUG) mCsLibrary4A.appendToLog("SensorDevice.setRfidOn(): OFF"); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("SensorDevice.setRfidOn(): OFF"); mSensorManager.unregisterListener(sensorEventListener); } } @@ -182,7 +178,7 @@ public void onSensorChanged(SensorEvent event) { mLastAccelerometerSet = true; // appendToLog("onSensorChanged(): updated mAccelerometer"); } else { - if (DEBUG) mCsLibrary4A.appendToLog("onSensorChanged(): mAccelerometer: " + event.values.length); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("onSensorChanged(): mAccelerometer: " + event.values.length); } } else if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) { if (event.values.length == mLastMagnetometer.length) { @@ -190,10 +186,10 @@ public void onSensorChanged(SensorEvent event) { mLastMagnetometerSet = true; // appendToLog("onSensorChanged(): updated mMagnetometer"); } else { - if (DEBUG) mCsLibrary4A.appendToLog("onSensorChanged(): mMagnetometer: " + event.values.length); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("onSensorChanged(): mMagnetometer: " + event.values.length); } } else { - if (DEBUG) mCsLibrary4A.appendToLog("onSensorChanged(): " + event.sensor.getType() + "," + event.sensor.getName()); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("onSensorChanged(): " + event.sensor.getType() + "," + event.sensor.getName()); } if (mLastAccelerometerSet && mLastMagnetometerSet) { @@ -203,7 +199,7 @@ public void onSensorChanged(SensorEvent event) { } mLastAccelerometerSet = false; mLastMagnetometerSet = false; - if (DEBUG) mCsLibrary4A.appendToLog("onSensorChanged(): updated mOrientation with mOrientation=" + mOrientation[0]); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("onSensorChanged(): updated mOrientation with mOrientation=" + mOrientation[0]); } } diff --git a/app/src/main/java/com/csl/cs108ademoapp/SharedObjects.java b/app/src/main/java/com/csl/cs108ademoapp/SharedObjects.java index cb485c4..201a823 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/SharedObjects.java +++ b/app/src/main/java/com/csl/cs108ademoapp/SharedObjects.java @@ -5,7 +5,7 @@ import androidx.annotation.Keep; import androidx.annotation.NonNull; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.ReaderDevice; import java.util.ArrayList; diff --git a/app/src/main/java/com/csl/cs108ademoapp/adapters/ColdChainAdapter.java b/app/src/main/java/com/csl/cs108ademoapp/adapters/ColdChainAdapter.java index 3af2b7c..461272a 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/adapters/ColdChainAdapter.java +++ b/app/src/main/java/com/csl/cs108ademoapp/adapters/ColdChainAdapter.java @@ -17,11 +17,11 @@ public class ColdChainAdapter extends FragmentStatePagerAdapter { public Fragment getItem(int index) { Fragment fragment = null; switch (index) { - case 1: + case 2: fragment = new AccessEm4325PassiveFragment(); fragment1 = fragment; break; - case 2: + case 1: fragment = new AccessColdChainFragment(); fragment2 = fragment; break; diff --git a/app/src/main/java/com/csl/cs108ademoapp/adapters/ImpinjAdapter.java b/app/src/main/java/com/csl/cs108ademoapp/adapters/ImpinjAdapter.java index 3d3a67a..928bfe3 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/adapters/ImpinjAdapter.java +++ b/app/src/main/java/com/csl/cs108ademoapp/adapters/ImpinjAdapter.java @@ -6,10 +6,11 @@ import androidx.viewpager.widget.PagerAdapter; import com.csl.cs108ademoapp.fragments.AccessImpinjFragment; +import com.csl.cs108ademoapp.fragments.AccessUcodeFragment; import com.csl.cs108ademoapp.fragments.InventoryRfidiMultiFragment; public class ImpinjAdapter extends FragmentStatePagerAdapter { - private final int NO_OF_TABS = 2; + private final int NO_OF_TABS = 3; public Fragment fragment0, fragment1; @Override @@ -24,6 +25,10 @@ public Fragment getItem(int index) { fragment = InventoryRfidiMultiFragment.newInstance(true,""); fragment1 = fragment; break; + case 2: + fragment = new AccessUcodeFragment(); + fragment0 = fragment; + break; default: fragment = null; break; diff --git a/app/src/main/java/com/csl/cs108ademoapp/adapters/LedTagAdapter.java b/app/src/main/java/com/csl/cs108ademoapp/adapters/KilowayAdapter.java similarity index 80% rename from app/src/main/java/com/csl/cs108ademoapp/adapters/LedTagAdapter.java rename to app/src/main/java/com/csl/cs108ademoapp/adapters/KilowayAdapter.java index a074dd8..3af2f90 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/adapters/LedTagAdapter.java +++ b/app/src/main/java/com/csl/cs108ademoapp/adapters/KilowayAdapter.java @@ -5,10 +5,10 @@ import androidx.fragment.app.FragmentStatePagerAdapter; import androidx.viewpager.widget.PagerAdapter; -import com.csl.cs108ademoapp.fragments.AccessLedTagFragment; +import com.csl.cs108ademoapp.fragments.AccessKilowayFragment; import com.csl.cs108ademoapp.fragments.InventoryRfidiMultiFragment; -public class LedTagAdapter extends FragmentStatePagerAdapter { +public class KilowayAdapter extends FragmentStatePagerAdapter { private final int NO_OF_TABS = 2; public Fragment fragment0, fragment1; @@ -17,12 +17,12 @@ public Fragment getItem(int index) { Fragment fragment = null; switch (index) { case 0: - fragment = new AccessLedTagFragment(); - fragment0 = fragment; + fragment = InventoryRfidiMultiFragment.newInstance(true,"E281D"); + fragment1 = fragment; break; case 1: - fragment = InventoryRfidiMultiFragment.newInstance(true,""); - fragment1 = fragment; + fragment = new AccessKilowayFragment(false); + fragment0 = fragment; break; default: fragment = null; @@ -41,7 +41,7 @@ public int getItemPosition(Object object) { return PagerAdapter.POSITION_NONE; } - public LedTagAdapter(FragmentManager fm) { + public KilowayAdapter(FragmentManager fm) { super(fm); } } diff --git a/app/src/main/java/com/csl/cs108ademoapp/adapters/LongjingAdapter.java b/app/src/main/java/com/csl/cs108ademoapp/adapters/LongjingAdapter.java new file mode 100644 index 0000000..3a4d1c0 --- /dev/null +++ b/app/src/main/java/com/csl/cs108ademoapp/adapters/LongjingAdapter.java @@ -0,0 +1,52 @@ +package com.csl.cs108ademoapp.adapters; + +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentStatePagerAdapter; +import androidx.viewpager.widget.PagerAdapter; + +import com.csl.cs108ademoapp.fragments.AccessKilowayFragment; +import com.csl.cs108ademoapp.fragments.InventoryRfidSearchFragment; +import com.csl.cs108ademoapp.fragments.InventoryRfidiMultiFragment; + +public class LongjingAdapter extends FragmentStatePagerAdapter { + private final int NO_OF_TABS = 2; + public Fragment fragment0, fragment1; + + @Override + public Fragment getItem(int index) { + Fragment fragment = null; + switch (index) { + case 0: + fragment = InventoryRfidiMultiFragment.newInstance(true,"E201E"); + fragment1 = fragment; + break; + case 2: + fragment = new AccessKilowayFragment(true); + fragment0 = fragment; + break; + case 1: + fragment = new InventoryRfidSearchFragment(true); + fragment0 = fragment; + break; + default: + fragment = null; + break; + } + return fragment; + } + + @Override + public int getCount() { + return NO_OF_TABS; + } + + @Override + public int getItemPosition(Object object) { + return PagerAdapter.POSITION_NONE; + } + + public LongjingAdapter(FragmentManager fm) { + super(fm); + } +} diff --git a/app/src/main/java/com/csl/cs108ademoapp/adapters/ReaderListAdapter.java b/app/src/main/java/com/csl/cs108ademoapp/adapters/ReaderListAdapter.java index 56c842b..c7523ca 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/adapters/ReaderListAdapter.java +++ b/app/src/main/java/com/csl/cs108ademoapp/adapters/ReaderListAdapter.java @@ -11,7 +11,7 @@ import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.ReaderDevice; import java.util.ArrayList; @@ -67,6 +67,12 @@ public View getView(int position, View convertView, ViewGroup parent) { text1 += reader.getAddress(); } } + if (reader.getUpcSerial() != null) { + if (reader.getUpcSerial().length() != 0) { + if (text1.length() != 0) text1 += "\n"; + text1 += reader.getUpcSerial(); + } + } if (MainActivity.csLibrary4A.isBleScanning()) { if (reader.getServiceUUID2p1() == 0) text1 += "\nCS108 Reader"; else if (reader.getServiceUUID2p1() == 2) text1 += "\nCS710S Reader"; diff --git a/app/src/main/java/com/csl/cs108ademoapp/adapters/Ucode8Adapter.java b/app/src/main/java/com/csl/cs108ademoapp/adapters/Ucode8Adapter.java index 3ad764e..63b0afe 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/adapters/Ucode8Adapter.java +++ b/app/src/main/java/com/csl/cs108ademoapp/adapters/Ucode8Adapter.java @@ -5,30 +5,37 @@ import androidx.fragment.app.FragmentStatePagerAdapter; import androidx.viewpager.widget.PagerAdapter; +import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.fragments.AccessUcode8Fragment; +import com.csl.cs108ademoapp.fragments.AccessUcodeFragment; import com.csl.cs108ademoapp.fragments.InventoryRfidiMultiFragment; import com.csl.cs108ademoapp.fragments.UtraceFragment; public class Ucode8Adapter extends FragmentStatePagerAdapter { - private final int NO_OF_TABS = 2; - public Fragment fragment0, fragment1, fragment2; + private final int NO_OF_TABS = 4; + public Fragment fragment0, fragment1, fragment2, fragment3; @Override public Fragment getItem(int index) { Fragment fragment = null; + MainActivity.csLibrary4A.appendToLog("Ucode8Adapter getItem index = " + index); switch (index) { case 0: fragment = new AccessUcode8Fragment(); fragment0 = fragment; break; case 1: - fragment = InventoryRfidiMultiFragment.newInstance(true,"E2806894"); + fragment = InventoryRfidiMultiFragment.newInstance(true,""); fragment1 = fragment; break; case 2: - fragment = new UtraceFragment(); + fragment = new AccessUcodeFragment(); fragment2 = fragment; break; + case 3: + fragment = new UtraceFragment(); + fragment3 = fragment; + break; default: fragment = null; break; diff --git a/app/src/main/java/com/csl/cs108ademoapp/adapters/UcodeAdapter.java b/app/src/main/java/com/csl/cs108ademoapp/adapters/UcodeAdapter.java index c62ce78..a55068b 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/adapters/UcodeAdapter.java +++ b/app/src/main/java/com/csl/cs108ademoapp/adapters/UcodeAdapter.java @@ -17,13 +17,13 @@ public Fragment getItem(int index) { Fragment fragment = null; switch (index) { case 0: - fragment = new AccessUcodeFragment(); - fragment0 = fragment; - break; - case 1: fragment = InventoryRfidiMultiFragment.newInstance(true,"E2C06"); fragment1 = fragment; break; + case 1: + fragment = new AccessUcodeFragment(); + fragment0 = fragment; + break; default: fragment = null; break; diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/AboutFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/AboutFragment.java index 9cced6b..68bd143 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AboutFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AboutFragment.java @@ -66,7 +66,10 @@ public void run() { TextView moduleBarOnStatus = (TextView) getActivity().findViewById(R.id.moduleBar_onStatus); TextView triggerOnStatus = (TextView) getActivity().findViewById(R.id.trigger_onStatus); TextView moduleBattery = (TextView) getActivity().findViewById(R.id.module_battery); - TextView moduleVersion = (TextView) getActivity().findViewById(R.id.module_versoin); + TextView moduleVersionLabel = (TextView) getActivity().findViewById(R.id.module_versionLabel); + if (MainActivity.csLibrary4A.get98XX() == 2) moduleVersionLabel.setText("Atmel firmware version"); + else if (MainActivity.csLibrary4A.get98XX() == 0) moduleVersionLabel.setText("SiliconLab firmware version"); + TextView moduleVersion = (TextView) getActivity().findViewById(R.id.module_version); TextView radioSerial = (TextView) getActivity().findViewById(R.id.radio_serialnumber); TextView radioBoardVersion = (TextView) getActivity().findViewById(R.id.radio_boardVersion); TextView productSerial = (TextView) getActivity().findViewById(R.id.module_productserialnumber); diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessAuraSenseFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessAuraSenseFragment.java index b04aee1..4284618 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessAuraSenseFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessAuraSenseFragment.java @@ -1,5 +1,7 @@ package com.csl.cs108ademoapp.fragments; +import static com.csl.cs108ademoapp.MainActivity.tagSelected; + import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; @@ -7,10 +9,15 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; +import android.widget.LinearLayout; import android.widget.RadioButton; +import android.widget.Spinner; +import android.widget.TableRow; import android.widget.TextView; import android.widget.Toast; @@ -18,25 +25,41 @@ import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; import com.csl.cs108ademoapp.SelectTag; -import com.csl.cs108library4a.Cs108Library4A; +import com.csl.cslibrary4a.RfidReaderChipData; public class AccessAuraSenseFragment extends CommonFragment { final boolean DEBUG = true; - RadioButton radioButtonAuraSensAtBoot, radioButtonAuraSensAtSelect; - Button buttonRead, buttonWrite; - + Spinner spinnerTagSelect; SelectTag selectTag; + RadioButton radioButtonAuraSensAtBoot, radioButtonAuraSensAtSelect; + TextView textViewAuraSensorDataOK, textViewAuraSystemConfigurationOK, textViewAuraSensorCalibrationOK, textViewAuraSensorControlOK, textViewAuraSensorDataStoredOK; + CheckBox checkBoxAuraSensorDataRCommandW, checkBoxAuraSystemConfiguration, checkBoxAuraCalibration, checkBoxAuraControl, checkBoxAuraDataStored; + EditText editTextAuraSensorData, editTextAuraSystemConfiguration, editTextAuraSensorCalibration, editTextAuraSensorDataStored; + CheckBox checkBoxAuraSensAtBootCheck, checkBoxAuraSensAtSelectCheck, checkBoxAuraSensWriteCheck; + TextView textViewConfigOk, textViewTemperatureOk, textViewEnableOk; + CheckBox checkBoxConfig, checkBoxTemperature, checkBoxEnable; + TextView textViewTemperature, textViewUnderAlarm, textViewOverAlarm, textViewBatteryAlarm; + EditText editTextTempThresUnder, editTextTempThresOver, editTextTempCountUnder, editTextTempCountOver, editTextMonitorDelay, editTextSamplingInterval; + Spinner spinnerDelayUnit, spinnerIntervalUnit, spinnerEnable; + Spinner spinnerCustomTagType; + TextView textViewCustomTagFound; + Button buttonCs8304StartLogging, buttonCs8304StopLogging, buttonCs8304CheckAlarm, buttonCs8304GetLogging; + TextView textViewCs8304StartLoggingStatus, textViewCs8304StopLoggingStatus, textViewCs8304CheckAlaramStatus, textViewCs8304GetLoggingStatus; - TextView textViewUserCode1OK, textViewUserCode2OK, textViewUserCode3OK, textViewUserCode4OK, textViewUserCode5OK; - CheckBox checkBoxUserCode1, checkBoxUserCode2, checkBoxUserCode3, checkBoxUserCode4, checkBoxUserCode5; - EditText editTextUserCode1, editTextUserCode2, editTextUserCode3, editTextUserCode5; - CheckBox checkBoxUserCode4a, checkBoxUserCode4b, checkBoxUserCode4c; + Button buttonRead, buttonWrite; enum ReadWriteTypes { - NULL, USERCODE1, USERCODE2, USERCODE3, USERCODE4, USERCODE5 + NULL, AURA_SENSORDATARCOMMANDW, AURA_SYSTEMCONFIGURATION, AURA_CALIBRATION, AURA_CONTROL, AURA_DATASTORED, + COLDCHAIN_CONFIGURATION, COLDCHAIN_TEMPERATURE, COLDCHAIN_ENABLE, + STARTLOGGING, STOPLOGGING, CHECKLOGGING, GETLOGGING + } + + enum eMicroTag { + emAuraSense, emColdChain, emBap, others } ReadWriteTypes readWriteTypes; boolean operationRead = false; + boolean bRequestCheck; private AccessTask accessTask; @@ -50,42 +73,193 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); + spinnerTagSelect = (Spinner) getActivity().findViewById(R.id.accessEmicroTagSelect); + ArrayAdapter targetAdapter1 = ArrayAdapter.createFromResource(getActivity(), R.array.emicro_options, R.layout.custom_spinner_layout); + targetAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + spinnerTagSelect.setAdapter(targetAdapter1); spinnerTagSelect.setSelection(0); + spinnerTagSelect.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parentView, View selectedItemView, int position, long id) { + LinearLayout layout0 = (LinearLayout) getActivity().findViewById(R.id.accessEmicroSelectLayout); + LinearLayout layout1 = (LinearLayout) getActivity().findViewById(R.id.accessEmMicroAuroSenseLayout); + LinearLayout layout2 = (LinearLayout) getActivity().findViewById(R.id.accessEmMicroColdChainLayout); + TableRow tableRow = (TableRow) getActivity().findViewById(R.id.accessEmicroCCTemperature); + if (MainActivity.csLibrary4A.get98XX() == 2) tableRow.setVisibility(View.GONE); + LinearLayout layout4 = (LinearLayout) getActivity().findViewById(R.id.accessCustomReadWrite); + if (position == eMicroTag.emAuraSense.ordinal()) { + MainActivity.mDid = "E280B12"; + layout0.setVisibility(View.VISIBLE); + layout1.setVisibility(View.VISIBLE); + layout2.setVisibility(View.GONE); + layout4.setVisibility(View.VISIBLE); + } else if (position == eMicroTag.emColdChain.ordinal()) { + MainActivity.mDid = "E280B0"; + layout0.setVisibility(View.VISIBLE); + layout1.setVisibility(View.GONE); + layout2.setVisibility(View.VISIBLE); + layout4.setVisibility(View.VISIBLE); + } else if (position == eMicroTag.emBap.ordinal()) { + MainActivity.mDid = "E200B0"; + layout0.setVisibility(View.GONE); + layout1.setVisibility(View.GONE); + layout2.setVisibility(View.GONE); + layout4.setVisibility(View.GONE); + } else { + MainActivity.mDid = "E280B"; + layout0.setVisibility(View.GONE); + layout1.setVisibility(View.GONE); + layout2.setVisibility(View.GONE); + layout4.setVisibility(View.GONE); + } + } + + @Override + public void onNothingSelected(AdapterView parentView) { + // your code here + } + + }); + + selectTag = new SelectTag((Activity)getActivity(), 0); + selectTag.tableRowSelectMemoryBank.setVisibility(View.GONE); + radioButtonAuraSensAtBoot = (RadioButton) getActivity().findViewById(R.id.accessAuraSensAtBoot); radioButtonAuraSensAtSelect = (RadioButton) getActivity().findViewById(R.id.accessAuraSensAtSelect); - selectTag = new SelectTag((Activity)getActivity ()); - selectTag.tableRowSelectMemoryBank.setVisibility(View.GONE); + textViewAuraSystemConfigurationOK = (TextView) getActivity().findViewById(R.id.accessAuraSystemConfigurationOK); + textViewAuraSensorCalibrationOK = (TextView) getActivity().findViewById(R.id.accessAuraSensorCalibrationOK); + textViewAuraSensorControlOK = (TextView) getActivity().findViewById(R.id.accessAuraSensorControlOK); + textViewAuraSensorDataStoredOK = (TextView) getActivity().findViewById(R.id.accessAuraSensorDataStoredOK); + + checkBoxAuraSystemConfiguration = (CheckBox) getActivity().findViewById(R.id.accessAuraSystemConfigurationCheck); + checkBoxAuraCalibration = (CheckBox) getActivity().findViewById(R.id.accessAuraSensorCalibrationCheck); + checkBoxAuraControl = (CheckBox) getActivity().findViewById(R.id.accessAuraSensorControlCheck); + checkBoxAuraDataStored = (CheckBox) getActivity().findViewById(R.id.accessAuraSensorDataStoredCheck); + + editTextAuraSensorData = (EditText) getActivity().findViewById(R.id.accessAuraSensorData); editTextAuraSensorData.setEnabled(false); + editTextAuraSystemConfiguration = (EditText) getActivity().findViewById(R.id.accessAuraSystemConfiguration); editTextAuraSystemConfiguration.setEnabled(false); + editTextAuraSensorCalibration = (EditText) getActivity().findViewById(R.id.accessAuraSensorCalibration); editTextAuraSensorCalibration.setInputType(InputType.TYPE_CLASS_NUMBER); + editTextAuraSensorDataStored = (EditText) getActivity().findViewById(R.id.accessAuraSensorDataStored); editTextAuraSensorDataStored.setEnabled(false); + checkBoxAuraSensAtBootCheck = (CheckBox) getActivity().findViewById(R.id.accessAuraSensAtBootCheck); + checkBoxAuraSensAtSelectCheck = (CheckBox) getActivity().findViewById(R.id.accessAuraSensAtSelectCheck); + checkBoxAuraSensWriteCheck = (CheckBox) getActivity().findViewById(R.id.accessAuraSensAtWriteCheck); + + textViewConfigOk = (TextView) getActivity().findViewById(R.id.accessCCConfigOK); + textViewTemperatureOk = (TextView) getActivity().findViewById(R.id.accessCCTemperatureOK); + textViewEnableOk = (TextView) getActivity().findViewById(R.id.accessCCEnableOK); + + checkBoxConfig = (CheckBox) getActivity().findViewById(R.id.accessCCConfigTitle); + checkBoxTemperature = (CheckBox) getActivity().findViewById(R.id.accessCCTemperatureTitle); + checkBoxEnable = (CheckBox) getActivity().findViewById(R.id.accessCCEnableTitle); + + textViewTemperature = (TextView) getActivity().findViewById(R.id.accessCCTemperature); + textViewUnderAlarm = (TextView) getActivity().findViewById(R.id.accessCCUnderTempAlarm); + textViewOverAlarm = (TextView) getActivity().findViewById(R.id.accessCCOverTempAlarm); + textViewBatteryAlarm = (TextView) getActivity().findViewById(R.id.accessCCBatteryAlarm); + + editTextTempThresUnder = (EditText) getActivity().findViewById(R.id.accessCCTempThresUnder); + editTextTempThresOver = (EditText) getActivity().findViewById(R.id.accessCCTempThresOver); + editTextTempCountUnder = (EditText) getActivity().findViewById(R.id.accessCCTempCountUnder); + editTextTempCountOver = (EditText) getActivity().findViewById(R.id.accessCCTempCountOver); + editTextMonitorDelay = (EditText) getActivity().findViewById(R.id.accessCCMonitorDelay); + editTextSamplingInterval = (EditText) getActivity().findViewById(R.id.accessCCSamplingInverval); + + ArrayAdapter arrayAdapterUnit = ArrayAdapter.createFromResource(getActivity(), R.array.coldChain_unit_options, R.layout.custom_spinner_layout); + arrayAdapterUnit.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + spinnerDelayUnit = (Spinner) getActivity().findViewById(R.id.accessCCMonitorUnit); + spinnerDelayUnit.setAdapter(arrayAdapterUnit); + + ArrayAdapter arrayAdapterUnit1 = ArrayAdapter.createFromResource(getActivity(), R.array.coldChain_IntervalUnit_options, R.layout.custom_spinner_layout); + arrayAdapterUnit1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + spinnerIntervalUnit = (Spinner) getActivity().findViewById(R.id.accessCCSamplingIntervalUnit); + spinnerIntervalUnit.setAdapter(arrayAdapterUnit1); + + ArrayAdapter arrayAdapterEnable = ArrayAdapter.createFromResource(getActivity(), R.array.coldChain_enable_options, R.layout.custom_spinner_layout); + arrayAdapterEnable.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + spinnerEnable = (Spinner) getActivity().findViewById(R.id.accessCCEnable); + spinnerEnable.setAdapter(arrayAdapterEnable); + + textViewCustomTagFound = (TextView) getActivity().findViewById(R.id.accessCustomTagFound); +/* + ArrayAdapter arrayAdapterTagType = ArrayAdapter.createFromResource(getActivity(), R.array.coldChain_tagtype_options, R.layout.custom_spinner_layout); + arrayAdapterTagType.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + spinnerCustomTagType = (Spinner) getActivity().findViewById(R.id.selectCustomTagType); + spinnerCustomTagType.setAdapter(arrayAdapterTagType); + spinnerCustomTagType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parentView, View selectedItemView, int position, long id) { + switch(position) { + case 0: + LinearLayout linearLayout = (LinearLayout) getActivity().findViewById(R.id.accessCC8304Layout); + linearLayout.setVisibility(View.VISIBLE); + linearLayout = (LinearLayout) getActivity().findViewById(R.id.accessCCmaxduraLayout); + linearLayout.setVisibility(View.GONE); + break; + case 1: + linearLayout = (LinearLayout) getActivity().findViewById(R.id.accessCC8304Layout); + linearLayout.setVisibility(View.GONE); + linearLayout = (LinearLayout) getActivity().findViewById(R.id.accessCCmaxduraLayout); + linearLayout.setVisibility(View.VISIBLE); + break; + } + } + + @Override + public void onNothingSelected(AdapterView parentView) { + // your code here + } + }); +*/ + buttonCs8304StartLogging = (Button) getActivity().findViewById(R.id.accessCs8304StartLogging); + buttonCs8304StartLogging.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (isOperationRunning()) return; + readWriteTypes = ReadWriteTypes.STARTLOGGING; + operationRead = true; startAccessTask(); + } + }); + buttonCs8304StopLogging = (Button) getActivity().findViewById(R.id.accessCs8304StopLogging); + buttonCs8304StopLogging.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (isOperationRunning()) return; + readWriteTypes = ReadWriteTypes.STOPLOGGING; + operationRead = true; startAccessTask(); + } + }); + buttonCs8304CheckAlarm = (Button) getActivity().findViewById(R.id.accessCs8304CheckAlarm); + buttonCs8304CheckAlarm.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (isOperationRunning()) return; + readWriteTypes = ReadWriteTypes.CHECKLOGGING; + operationRead = true; startAccessTask(); + } + }); + buttonCs8304GetLogging = (Button) getActivity().findViewById(R.id.accessCs8304GetLogging); + buttonCs8304GetLogging.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (isOperationRunning()) return; + readWriteTypes = ReadWriteTypes.GETLOGGING; + operationRead = true; startAccessTask(); + } + }); + + textViewCs8304StartLoggingStatus = (TextView) getActivity().findViewById(R.id.accessCs8304StartLoggingStatus); + textViewCs8304StopLoggingStatus = (TextView) getActivity().findViewById(R.id.accessCs8304StopLoggingStatus); + textViewCs8304CheckAlaramStatus = (TextView) getActivity().findViewById(R.id.accessCs8304CheckAlarmStatus); + textViewCs8304GetLoggingStatus = (TextView) getActivity().findViewById(R.id.accessCs8304GetLoggingStatus); - textViewUserCode2OK = (TextView) getActivity().findViewById(R.id.accessAuraSystemConfigurationOK); - textViewUserCode3OK = (TextView) getActivity().findViewById(R.id.accessAuraSensorCalibrationOK); - textViewUserCode4OK = (TextView) getActivity().findViewById(R.id.accessAuraSensorControlOK); - textViewUserCode5OK = (TextView) getActivity().findViewById(R.id.accessAuraSensorDataStoredOK); - - checkBoxUserCode2 = (CheckBox) getActivity().findViewById(R.id.accessAuraSystemConfigurationCheck); - checkBoxUserCode3 = (CheckBox) getActivity().findViewById(R.id.accessAuraSensorCalibrationCheck); - checkBoxUserCode4 = (CheckBox) getActivity().findViewById(R.id.accessAuraSensorControlCheck); - checkBoxUserCode5 = (CheckBox) getActivity().findViewById(R.id.accessAuraSensorDataStoredCheck); - - editTextUserCode1 = (EditText) getActivity().findViewById(R.id.accessAuraSensorData); editTextUserCode1.setEnabled(false); - editTextUserCode2 = (EditText) getActivity().findViewById(R.id.accessAuraSystemConfiguration); editTextUserCode2.setEnabled(false); - editTextUserCode3 = (EditText) getActivity().findViewById(R.id.accessAuraSensorCalibration); editTextUserCode3.setInputType(InputType.TYPE_CLASS_NUMBER); - checkBoxUserCode4a = (CheckBox) getActivity().findViewById(R.id.accessAuraSensAtBootCheck); - checkBoxUserCode4b = (CheckBox) getActivity().findViewById(R.id.accessAuraSensAtSelectCheck); - checkBoxUserCode4c = (CheckBox) getActivity().findViewById(R.id.accessAuraSensAtWriteCheck); - editTextUserCode5 = (EditText) getActivity().findViewById(R.id.accessAuraSensorDataStored); editTextUserCode5.setEnabled(false); buttonRead = (Button) getActivity().findViewById(R.id.accessRWReadButton); buttonRead.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - if (MainActivity.csLibrary4A.isBleConnected() == false) { - Toast.makeText(MainActivity.mContext, R.string.toast_ble_not_connected, Toast.LENGTH_SHORT).show(); - return; - } else if (MainActivity.csLibrary4A.isRfidFailure()) { - Toast.makeText(MainActivity.mContext, "Rfid is disabled", Toast.LENGTH_SHORT).show(); - return; - } - textViewUserCode1OK = (TextView) getActivity().findViewById(R.id.accessAuraSensorDataOK); - checkBoxUserCode1 = (CheckBox) getActivity().findViewById(R.id.accessAuraSensorDataCheck); + if (isOperationRunning()) return; + textViewAuraSensorDataOK = (TextView) getActivity().findViewById(R.id.accessAuraSensorDataOK); + checkBoxAuraSensorDataRCommandW = (CheckBox) getActivity().findViewById(R.id.accessAuraSensorDataCheck); + readWriteTypes = ReadWriteTypes.NULL; operationRead = true; startAccessTask(); } }); @@ -94,15 +268,10 @@ public void onClick(View v) { buttonWrite.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - if (MainActivity.csLibrary4A.isBleConnected() == false) { - Toast.makeText(MainActivity.mContext, R.string.toast_ble_not_connected, Toast.LENGTH_SHORT).show(); - return; - } else if (MainActivity.csLibrary4A.isRfidFailure()) { - Toast.makeText(MainActivity.mContext, "Rfid is disabled", Toast.LENGTH_SHORT).show(); - return; - } - textViewUserCode1OK = (TextView) getActivity().findViewById(R.id.accessAuraWriteSensorDataOK); - checkBoxUserCode1 = (CheckBox) getActivity().findViewById(R.id.accessAuraWriteSensorDataCheck); + if (isOperationRunning()) return; + textViewAuraSensorDataOK = (TextView) getActivity().findViewById(R.id.accessAuraWriteSensorDataOK); + checkBoxAuraSensorDataRCommandW = (CheckBox) getActivity().findViewById(R.id.accessAuraWriteSensorDataCheck); + readWriteTypes = ReadWriteTypes.NULL; operationRead = false; startAccessTask(); } }); @@ -123,11 +292,25 @@ public void setUserVisibleHint(boolean isVisibleToUser) { if(getUserVisibleHint()) { if (selectTag != null) selectTag.updateBankSelected(); userVisibleHint = true; + if (textViewCustomTagFound != null) { + if (tagSelected != null) { + MainActivity.csLibrary4A.appendToLog("tagSelected = " + tagSelected.getUser()); + if (tagSelected.getUser() != null && tagSelected.getUser().indexOf("830") == 0) { + textViewCustomTagFound.setText("CS" + tagSelected.getUser().substring(0, 4) + "-" + tagSelected.getUser().substring(4, 5)); + } else textViewCustomTagFound.setText(""); + } + LinearLayout layout = (LinearLayout) getActivity().findViewById(R.id.accessEmicroCS8304Layout); + if (textViewCustomTagFound.getText().toString().contains("8304")) { + layout.setVisibility(View.VISIBLE); + } else layout.setVisibility(View.GONE); + } } else { - if (radioButtonAuraSensAtBoot != null && radioButtonAuraSensAtSelect != null) { - if (radioButtonAuraSensAtBoot.isChecked()) MainActivity.mDid = "E280B12A"; - if (radioButtonAuraSensAtSelect.isChecked()) MainActivity.mDid = "E280B12B"; + if (spinnerTagSelect != null && spinnerTagSelect.getSelectedItemPosition() == eMicroTag.emAuraSense.ordinal()) { + if (radioButtonAuraSensAtBoot != null && radioButtonAuraSensAtSelect != null) { + if (radioButtonAuraSensAtBoot.isChecked()) MainActivity.mDid = "E280B12A"; + if (radioButtonAuraSensAtSelect.isChecked()) MainActivity.mDid = "E280B12B"; + } } userVisibleHint = false; } @@ -137,6 +320,21 @@ public AccessAuraSenseFragment() { super("AccessAuraSenseFragment"); } + boolean isOperationRunning() { + if (MainActivity.csLibrary4A.isBleConnected() == false) { + Toast.makeText(MainActivity.mContext, R.string.toast_ble_not_connected, Toast.LENGTH_SHORT).show(); + return true; + } else if (MainActivity.csLibrary4A.isRfidFailure()) { + Toast.makeText(MainActivity.mContext, "Rfid is disabled", Toast.LENGTH_SHORT).show(); + return true; + } else if (accessTask != null) { + if (accessTask.getStatus() == AsyncTask.Status.RUNNING) { + Toast.makeText(MainActivity.mContext, "Running acccess task. Please wait", Toast.LENGTH_SHORT).show(); + return true; + } + } + return false; + } void startAccessTask() { if (DEBUG) MainActivity.csLibrary4A.appendToLog("startAccessTask()"); if (updating == false) { @@ -166,19 +364,31 @@ public void run() { else if (taskRequest) { boolean invalid = processTickItems(); MainActivity.csLibrary4A.appendToLog("processTickItems, invalid = " + invalid); - if (bankProcessing++ != 0 && invalid == true) rerunRequest = false; + if (bankProcessing++ != 0 && invalid) rerunRequest = false; else { String selectMask = selectTag.editTextTagID.getText().toString(); int selectBank = selectTag.spinnerSelectBank.getSelectedItemPosition()+1; int selectOffset = Integer.valueOf(selectTag.editTextSelectOffset.getText().toString()); + RfidReaderChipData.HostCommands hostCommand; + Button buttonAccess; + if (readWriteTypes == ReadWriteTypes.COLDCHAIN_TEMPERATURE && operationRead) { + hostCommand = RfidReaderChipData.HostCommands.CMD_GETSENSORDATA; + buttonAccess = buttonRead; + } else if (operationRead) { + hostCommand = RfidReaderChipData.HostCommands.CMD_18K6CREAD; + buttonAccess = buttonRead; + } else { + hostCommand = RfidReaderChipData.HostCommands.CMD_18K6CWRITE; + buttonAccess = buttonWrite; + } + MainActivity.csLibrary4A.appendToLog("hostCommand 1 = " + hostCommand.toString()); accessTask = new AccessTask( - (operationRead ? buttonRead : buttonWrite), null, - invalid, + buttonAccess, null, invalid, selectMask, selectBank, selectOffset, selectTag.editTextAccessPassword.getText().toString(), Integer.valueOf(selectTag.editTextAccessAntennaPower.getText().toString()), - (operationRead ? Cs108Library4A.HostCommands.CMD_18K6CREAD: Cs108Library4A.HostCommands.CMD_18K6CWRITE), - 0, 0, true, + hostCommand, + 0, 0, true, false, null, null, null, null, null); accessTask.execute(); rerunRequest = true; @@ -199,58 +409,127 @@ boolean processResult() { else if (accessTask.getStatus() != AsyncTask.Status.FINISHED) return false; else { accessResult = accessTask.accessResult; - if (accessResult == null) { - if (readWriteTypes == ReadWriteTypes.USERCODE1) { - textViewUserCode1OK.setText("E"); + if (DEBUG || true) MainActivity.csLibrary4A.appendToLog("accessResult = " + accessResult); + if (readWriteTypes == ReadWriteTypes.STARTLOGGING) textViewCs8304StartLoggingStatus.setText(accessResult); + else if (readWriteTypes == ReadWriteTypes.STOPLOGGING) textViewCs8304StopLoggingStatus.setText(accessResult); + else if (readWriteTypes == ReadWriteTypes.CHECKLOGGING) textViewCs8304CheckAlaramStatus.setText(accessResult); + else if (readWriteTypes == ReadWriteTypes.GETLOGGING) textViewCs8304GetLoggingStatus.setText(accessResult); + else if (accessResult == null) { + if (readWriteTypes == ReadWriteTypes.AURA_SENSORDATARCOMMANDW) { + textViewAuraSensorDataOK.setText("E"); //checkBoxUserCode1.setChecked(false); - } else if (readWriteTypes == ReadWriteTypes.USERCODE2) { - textViewUserCode2OK.setText("E"); + } else if (readWriteTypes == ReadWriteTypes.AURA_SYSTEMCONFIGURATION) { + textViewAuraSystemConfigurationOK.setText("E"); //checkBoxUserCode2.setChecked(false); - } else if (readWriteTypes == ReadWriteTypes.USERCODE3) { - textViewUserCode3OK.setText("E"); + } else if (readWriteTypes == ReadWriteTypes.AURA_CALIBRATION) { + textViewAuraSensorCalibrationOK.setText("E"); //checkBoxUserCode3.setChecked(false); - } else if (readWriteTypes == ReadWriteTypes.USERCODE4) { - textViewUserCode4OK.setText("E"); + } else if (readWriteTypes == ReadWriteTypes.AURA_CONTROL) { + textViewAuraSensorControlOK.setText("E"); //checkBoxUserCode4.setChecked(false); - } else if (readWriteTypes == ReadWriteTypes.USERCODE5) { - textViewUserCode5OK.setText("E"); + } else if (readWriteTypes == ReadWriteTypes.AURA_DATASTORED) { + textViewAuraSensorDataStoredOK.setText("E"); //checkBoxUserCode5.setChecked(false); + } else if (readWriteTypes == ReadWriteTypes.COLDCHAIN_CONFIGURATION) { + textViewConfigOk.setText("E"); checkBoxConfig.setChecked(false); + } else if (readWriteTypes == ReadWriteTypes.COLDCHAIN_TEMPERATURE && operationRead) { + textViewTemperatureOk.setText("E"); checkBoxTemperature.setChecked(false); + } else if (readWriteTypes == ReadWriteTypes.COLDCHAIN_ENABLE) { + textViewEnableOk.setText("E"); + checkBoxEnable.setChecked(false); } } else { - if (DEBUG) MainActivity.csLibrary4A.appendToLog("accessResult = " + accessResult); - if (readWriteTypes == ReadWriteTypes.USERCODE1) { - textViewUserCode1OK.setText("O"); + if (readWriteTypes == ReadWriteTypes.AURA_SENSORDATARCOMMANDW) { + textViewAuraSensorDataOK.setText("O"); //checkBoxUserCode1.setChecked(false); readWriteTypes = ReadWriteTypes.NULL; - if (operationRead) editTextUserCode1.setText(showSensorData(accessResult)); - } else if (readWriteTypes == ReadWriteTypes.USERCODE2) { - textViewUserCode2OK.setText("O"); + if (operationRead) editTextAuraSensorData.setText(showSensorData(accessResult)); + } else if (readWriteTypes == ReadWriteTypes.AURA_SYSTEMCONFIGURATION) { + textViewAuraSystemConfigurationOK.setText("O"); //checkBoxUserCode2.setChecked(false); readWriteTypes = ReadWriteTypes.NULL; - if (operationRead) editTextUserCode2.setText(accessResult); - } else if (readWriteTypes == ReadWriteTypes.USERCODE3) { - textViewUserCode3OK.setText("O"); + if (operationRead) editTextAuraSystemConfiguration.setText(accessResult); + } else if (readWriteTypes == ReadWriteTypes.AURA_CALIBRATION) { + textViewAuraSensorCalibrationOK.setText("O"); //checkBoxUserCode3.setChecked(false); readWriteTypes = ReadWriteTypes.NULL; if (operationRead) { int iValue = Integer.parseInt(accessResult, 16); - editTextUserCode3.setText(String.valueOf(iValue & 0xFF)); + editTextAuraSensorCalibration.setText(String.valueOf(iValue & 0xFF)); } - } else if (readWriteTypes == ReadWriteTypes.USERCODE4) { - textViewUserCode4OK.setText("O"); + } else if (readWriteTypes == ReadWriteTypes.AURA_CONTROL) { + textViewAuraSensorControlOK.setText("O"); //checkBoxUserCode4.setChecked(false); readWriteTypes = ReadWriteTypes.NULL; if (operationRead) { int iValue = Integer.parseInt(accessResult, 16); - if ((iValue & 0x2000) != 0) checkBoxUserCode4a.setChecked(true); - if ((iValue & 0x4000) != 0) checkBoxUserCode4b.setChecked(true); - if ((iValue & 0x8000) != 0) checkBoxUserCode4c.setChecked(true); + if ((iValue & 0x2000) != 0) checkBoxAuraSensAtBootCheck.setChecked(true); + if ((iValue & 0x4000) != 0) checkBoxAuraSensAtSelectCheck.setChecked(true); + if ((iValue & 0x8000) != 0) checkBoxAuraSensWriteCheck.setChecked(true); } - } else if (readWriteTypes == ReadWriteTypes.USERCODE5) { - textViewUserCode5OK.setText("O"); + } else if (readWriteTypes == ReadWriteTypes.AURA_DATASTORED) { + textViewAuraSensorDataStoredOK.setText("O"); //checkBoxUserCode5.setChecked(false); readWriteTypes = ReadWriteTypes.NULL; - if (operationRead) editTextUserCode5.setText(showSensorData(accessResult)); + if (operationRead) editTextAuraSensorDataStored.setText(showSensorData(accessResult)); + } else if (readWriteTypes == ReadWriteTypes.COLDCHAIN_TEMPERATURE && operationRead == false) { + } else if (readWriteTypes == ReadWriteTypes.COLDCHAIN_CONFIGURATION) { + textViewConfigOk.setText("O"); checkBoxConfig.setChecked(false); readWriteTypes = ReadWriteTypes.NULL; + if (accessResult.length() == 12 && operationRead) { // 43 60 42 FC 04 06 + byte bValue = Byte.parseByte(accessResult.substring(0, 1), 16); + if ((bValue & 8) == 0) { + bValue = Byte.parseByte(accessResult.substring(0, 2), 16); + bValue &= 0x3F; + editTextTempCountUnder.setText(String.valueOf(bValue >> 1)); + editTextTempThresUnder.setText(getTemperatue(accessResult.substring(1, 4))); + + bValue = Byte.parseByte(accessResult.substring(4, 6), 16); + bValue &= 0x3F; + editTextTempCountOver.setText(String.valueOf(bValue >> 1)); + editTextTempThresOver.setText(getTemperatue(accessResult.substring(5, 8))); + + byte bValue2 = Byte.parseByte(accessResult.substring(8, 10), 16); + spinnerDelayUnit.setSelection(((bValue2 & 0xFF) >> 6) + 1); + editTextMonitorDelay.setText(String.valueOf(bValue2 & 0x3F)); + + bValue2 = Byte.parseByte(accessResult.substring(10, 12), 16); + spinnerIntervalUnit.setSelection(((bValue2 & 0xFF) >> 6) + 1); + editTextSamplingInterval.setText(String.valueOf(bValue2 & 0x3F)); + } + } + } else if (readWriteTypes == ReadWriteTypes.COLDCHAIN_TEMPERATURE && operationRead) { + textViewTemperatureOk.setText("O"); checkBoxTemperature.setChecked(false); readWriteTypes = ReadWriteTypes.NULL; + MainActivity.csLibrary4A.appendToLog("accessResult of Temperature = " + accessResult); + + if (accessResult.length() >= 16) { + int indexBegin = accessResult.length() - 16; + String stringValue = accessResult.substring(indexBegin, indexBegin + 4); + MainActivity.csLibrary4A.appendToLog("temperature part of Temperature accessResult = " + stringValue); + accessResult = stringValue; + } + if (accessResult.length() == 4) { + byte bValue = Byte.parseByte(accessResult.substring(0, 1), 16); + if ((bValue & 0x8) != 0) textViewBatteryAlarm.setVisibility(View.VISIBLE); + else if ((bValue & 0x2) != 0) textViewOverAlarm.setVisibility(View.VISIBLE); + else if ((bValue & 01) != 0) textViewUnderAlarm.setVisibility(View.VISIBLE); + + bValue = Byte.parseByte(accessResult.substring(1, 2), 16); + Integer iValue2 = Integer.parseInt(accessResult.substring(2, 4), 16); + iValue2 &= 0x1FF; + if ((bValue & 0x01) != 0 && iValue2 == 0) textViewTemperature.setText("Invalid"); + else { + String stringValue = getTemperatue(accessResult.substring(1, 4)); + stringValue += (char) 0x00B0 + "C"; + textViewTemperature.setText(stringValue); + } + } + } else if (readWriteTypes == ReadWriteTypes.COLDCHAIN_ENABLE) { + textViewEnableOk.setText("O"); checkBoxEnable.setChecked(false); readWriteTypes = ReadWriteTypes.NULL; + if (accessResult.length() == 4 && operationRead) { + byte bValue = Byte.parseByte(accessResult.substring(3, 4), 16); + if ((bValue & 0x01) != 0) spinnerEnable.setSelection(2); + else spinnerEnable.setSelection(1); + } } } accessTask = null; @@ -278,54 +557,280 @@ boolean processTickItems() { String writeData = ""; if (selectTag.editTextTagID.getText().toString().length() == 0) invalidRequest1 = true; - else if (checkBoxUserCode1.isChecked() == true && checkProcessing < 1) { - accBank = 1; accSize = 1; accOffset = 0x22; readWriteTypes = ReadWriteTypes.USERCODE1; checkProcessing = 1; - if (operationRead) { - textViewUserCode1OK.setText(""); - editTextUserCode1.setText(""); - } else { - int iValue = 0; - RadioButton radioButtonAuraSens2Null = (RadioButton) getActivity().findViewById(R.id.accessAuraSens2Null); - RadioButton radioButtonAuraSens2Store = (RadioButton) getActivity().findViewById(R.id.accessAuraSens2Store); - RadioButton radioButtonAuraSens2Calibration = (RadioButton) getActivity().findViewById(R.id.accessAuraSens2Calibration); - - if (radioButtonAuraSens2Null.isChecked()) iValue = 0x8001; - else if (radioButtonAuraSens2Store.isChecked()) iValue = 0x1000; - else if (radioButtonAuraSens2Calibration.isChecked()) iValue = 0x2000; - writeData = String.format("%04X", iValue); - MainActivity.csLibrary4A.appendToLog("WriteData = " + writeData); - } - } else if (checkBoxUserCode2.isChecked() == true && checkProcessing < 2 && operationRead) { - accBank = 3; accSize = 1; accOffset = 0x120; readWriteTypes = ReadWriteTypes.USERCODE2; checkProcessing = 2; - if (operationRead) { - textViewUserCode2OK.setText(""); - editTextUserCode2.setText(""); - } - } else if (checkBoxUserCode3.isChecked() == true && checkProcessing < 3) { - accBank = 3; accSize = 1; accOffset = 0x122; readWriteTypes = ReadWriteTypes.USERCODE3; checkProcessing = 3; - if (operationRead) { - textViewUserCode3OK.setText(""); - editTextUserCode3.setText(""); + else if (spinnerTagSelect.getSelectedItemPosition() == eMicroTag.emAuraSense.ordinal()) { + if (checkBoxAuraSensorDataRCommandW != null && checkBoxAuraSensorDataRCommandW.isChecked() == true && checkProcessing < 1) { + accBank = 1; accSize = 1; accOffset = 0x22; readWriteTypes = ReadWriteTypes.AURA_SENSORDATARCOMMANDW; checkProcessing = 1; + if (operationRead) { + textViewAuraSensorDataOK.setText(""); + editTextAuraSensorData.setText(""); + } else { + int iValue = 0; + RadioButton radioButtonAuraSens2Null = (RadioButton) getActivity().findViewById(R.id.accessAuraSens2Null); + RadioButton radioButtonAuraSens2Store = (RadioButton) getActivity().findViewById(R.id.accessAuraSens2Store); + RadioButton radioButtonAuraSens2Calibration = (RadioButton) getActivity().findViewById(R.id.accessAuraSens2Calibration); + + if (radioButtonAuraSens2Null.isChecked()) iValue = 0x8001; + else if (radioButtonAuraSens2Store.isChecked()) iValue = 0x1000; + else if (radioButtonAuraSens2Calibration.isChecked()) iValue = 0x2000; + writeData = String.format("%04X", iValue); + MainActivity.csLibrary4A.appendToLog("WriteData = " + writeData); + } + } else if (checkBoxAuraSystemConfiguration != null && checkBoxAuraSystemConfiguration.isChecked() == true && checkProcessing < 2 && operationRead) { + accBank = 3; accSize = 1; accOffset = 0x120; readWriteTypes = ReadWriteTypes.AURA_SYSTEMCONFIGURATION; checkProcessing = 2; + if (operationRead) { + textViewAuraSystemConfigurationOK.setText(""); + editTextAuraSystemConfiguration.setText(""); + } + } else if (checkBoxAuraCalibration != null && checkBoxAuraCalibration.isChecked() == true && checkProcessing < 3) { + accBank = 3; accSize = 1; accOffset = 0x122; readWriteTypes = ReadWriteTypes.AURA_CALIBRATION; checkProcessing = 3; + if (operationRead) { + textViewAuraSensorCalibrationOK.setText(""); + editTextAuraSensorCalibration.setText(""); + } else { + String strValue = editTextAuraSensorCalibration.getText().toString(); + Integer iValue = Integer.valueOf(strValue); + iValue &= 0xFF; + writeData = String.format("%04X", iValue); + } + } else if (checkBoxAuraControl != null && checkBoxAuraControl.isChecked() == true && checkProcessing < 4) { + accBank = 3; accSize = 1; accOffset = 0x123; readWriteTypes = ReadWriteTypes.AURA_CONTROL; checkProcessing = 4; + if (operationRead) { + textViewAuraSensorControlOK.setText(""); + checkBoxAuraSensAtBootCheck.setChecked(false); checkBoxAuraSensAtSelectCheck.setChecked(false); checkBoxAuraSensWriteCheck.setChecked(false); + } else { + int iValue = (checkBoxAuraSensAtBootCheck.isChecked() ? 0x2000 : 0) | (checkBoxAuraSensAtSelectCheck.isChecked() ? 0x4000 : 0) | (checkBoxAuraSensWriteCheck.isChecked() ? 0x8000 : 0); + writeData = String.format("%04X", iValue); + } + } else if (checkBoxAuraDataStored != null && checkBoxAuraDataStored.isChecked() == true && checkProcessing < 5 && operationRead) { + accBank = 3; + accSize = 1; + accOffset = 0x124; + readWriteTypes = ReadWriteTypes.AURA_DATASTORED; + checkProcessing = 5; + if (operationRead) { + textViewAuraSensorDataStoredOK.setText(""); + editTextAuraSensorDataStored.setText(""); + } } else { - String strValue = editTextUserCode3.getText().toString(); - Integer iValue = Integer.valueOf(strValue); - iValue &= 0xFF; - writeData = String.format("%04X", iValue); + invalidRequest1 = true; } - } else if (checkBoxUserCode4.isChecked() == true && checkProcessing < 4) { - accBank = 3; accSize = 1; accOffset = 0x123; readWriteTypes = ReadWriteTypes.USERCODE4; checkProcessing = 4; - if (operationRead) { - textViewUserCode4OK.setText(""); - checkBoxUserCode4a.setChecked(false); checkBoxUserCode4b.setChecked(false); checkBoxUserCode4c.setChecked(false); + } else if (spinnerTagSelect.getSelectedItemPosition() == eMicroTag.emColdChain.ordinal()) { + accBank = 3; + if (bRequestCheck) { + readWriteTypes = ReadWriteTypes.COLDCHAIN_TEMPERATURE; + if (bankProcessing == 0) { + if (operationRead) { + textViewTemperature.setText(""); + accOffset = 0x10D; + accSize = 1; + writeData = "0000"; + } else invalidRequest1 = true; + } else { + operationRead = true; + MainActivity.csLibrary4A.macWrite(0x11F, 3); + return false; + } + } else if (checkBoxConfig.isChecked() == true) { + accOffset = 0xEC; accSize = 3; readWriteTypes = ReadWriteTypes.COLDCHAIN_CONFIGURATION; textViewConfigOk.setText(""); + if (operationRead) { + editTextTempThresUnder.setText(""); + editTextTempThresOver.setText(""); + editTextTempCountUnder.setText(""); + editTextTempCountOver.setText(""); + editTextMonitorDelay.setText(""); + editTextSamplingInterval.setText(""); + spinnerDelayUnit.setSelection(0); + spinnerIntervalUnit.setSelection(0); + } else { + try { + int underTempCount, underTempThreshold, overTempCount, overTempThreshold; + byte tempBytes[] = new byte[6]; + + tempBytes[0] = 0x40; + tempBytes[0] |= (Byte.parseByte(editTextTempCountUnder.getText().toString()) << 1); + float fValue = Float.parseFloat(editTextTempThresUnder.getText().toString()); + short sValue = setTemperature(fValue); + if ((sValue & (short)0x100) != 0) tempBytes[0] |= 1; + tempBytes[1] = (byte)sValue; + + tempBytes[2] = 0; + tempBytes[2] |= (Byte.parseByte(editTextTempCountOver.getText().toString()) << 1); + fValue = Float.parseFloat(editTextTempThresOver.getText().toString()); + sValue = setTemperature(fValue); + if ((sValue & (short)0x100) != 0) tempBytes[2] |= 1; + tempBytes[3] = (byte)sValue; + + int iTemp = spinnerDelayUnit.getSelectedItemPosition(); + if (iTemp < 1) iTemp = 1; + else if (iTemp > 4) iTemp = 4; + iTemp--; + tempBytes[4] = (byte)iTemp; tempBytes[4] <<= 6; + byte bValue = Byte.parseByte(editTextMonitorDelay.getText().toString()); + tempBytes[4] |= (bValue & 0x3F); + + iTemp = spinnerIntervalUnit.getSelectedItemPosition(); + if (iTemp < 1) iTemp = 1; + else if (iTemp > 4) iTemp = 4; + iTemp--; + tempBytes[5] = (byte)iTemp; tempBytes[5] <<= 6; + bValue = Byte.parseByte(editTextSamplingInterval.getText().toString()); + tempBytes[5] |= (bValue & 0x3F); + + writeData = MainActivity.csLibrary4A.byteArrayToString(tempBytes); + MainActivity.csLibrary4A.appendToLog("editTextTempCountUnder = " + MainActivity.csLibrary4A.byteArrayToString(tempBytes)); + } catch (Exception ex) { + MainActivity.csLibrary4A.appendToLog("Invalid String.parse !!!"); + invalidRequest1 = true; + } + } + } else if (checkBoxTemperature.isChecked() == true) { + readWriteTypes = ReadWriteTypes.COLDCHAIN_TEMPERATURE; + if (bankProcessing == 0) { + if (operationRead) { + textViewTemperature = (TextView) getActivity().findViewById(R.id.accessCCTemperature); + textViewTemperature.setText(""); + textViewUnderAlarm = (TextView) getActivity().findViewById(R.id.accessCCUnderTempAlarm); + textViewUnderAlarm.setVisibility(View.INVISIBLE); + textViewOverAlarm = (TextView) getActivity().findViewById(R.id.accessCCOverTempAlarm); + textViewOverAlarm.setVisibility(View.INVISIBLE); + textViewBatteryAlarm = (TextView) getActivity().findViewById(R.id.accessCCBatteryAlarm); + textViewBatteryAlarm.setVisibility(View.INVISIBLE); + textViewTemperatureOk.setText(""); + if (true) { + MainActivity.csLibrary4A.macWrite(0x11F, 3); + return false; + } + accOffset = 0x100; + accSize = 1; + operationRead = false; + } else invalidRequest1 = true; + } else { + accOffset = 0x100; + accSize = 1; + operationRead = true; + } + } else if (checkBoxEnable.isChecked() == true) { + accOffset = 0x10D; + accSize = 1; + readWriteTypes = ReadWriteTypes.COLDCHAIN_ENABLE; + textViewEnableOk.setText(""); + if (operationRead) spinnerEnable.setSelection(0); + else { + int iSelect = spinnerEnable.getSelectedItemPosition(); + if (iSelect == 0) invalidRequest1 = true; + else if (iSelect == 1) writeData = "0000"; + else writeData = "0001"; + String stringValue = "0000"; + } + } else if (readWriteTypes == ReadWriteTypes.STARTLOGGING || readWriteTypes == ReadWriteTypes.STOPLOGGING || readWriteTypes == ReadWriteTypes.CHECKLOGGING || readWriteTypes == ReadWriteTypes.GETLOGGING) { + MainActivity.csLibrary4A.appendToLog("accessResult 1 bankProcewssing = " + bankProcessing ); + accOffset = 0xF0; accSize = 1; operationRead = true; + if (readWriteTypes == ReadWriteTypes.STARTLOGGING) { + switch(bankProcessing) { + case 0: + textViewCs8304StartLoggingStatus.setText(""); + break; + case 1: + long seconds = System.currentTimeMillis() / (long)1000; + int interval = 10; + float temperatureOffset = 10; //range 20 to 0 represents -20 to 0 degreeC + accOffset = 0; accSize = 4; writeData = ""; + + writeData += String.format("%08X", seconds); + writeData += String.format("%04X", interval); + float fTemp = temperatureOffset / (float) 0.25; + short sTemp = (short) fTemp; + writeData += String.format("%04X", sTemp); + operationRead = false; + MainActivity.csLibrary4A.appendToLog("accessResult: UTC seconds = " + seconds + ", writedata = " + writeData); + break; + case 2: + float overTemperature = 20; + float underTemperature = -10; + accOffset = 0x106; accSize = 3; writeData = ""; + + fTemp = overTemperature / (float) 0.25; + sTemp = (short) fTemp; + writeData += String.format("%04X", sTemp); + fTemp = underTemperature / (float) 0.25; + sTemp = (short) fTemp; + writeData += String.format("%04X", sTemp); + writeData += "0000"; //clear Alarm status + operationRead = false; + MainActivity.csLibrary4A.appendToLog("accessResult: temperature alarm: writeData = " + writeData); + break; + case 3: + accOffset = 0x104; accSize = 1; writeData = "0001"; + operationRead = false; + MainActivity.csLibrary4A.appendToLog("accessResult: status: writeData = " + writeData); + break; + case 4: + accOffset = 0xF0; accSize = 1; writeData = "A000"; + operationRead = false; + MainActivity.csLibrary4A.appendToLog("accessResult: control: writeData = " + writeData); + break; + default: + invalidRequest1 = true; readWriteTypes = ReadWriteTypes.NULL; + break; + } + } else if (readWriteTypes == ReadWriteTypes.STOPLOGGING) { + switch(bankProcessing) { + case 0: + textViewCs8304StartLoggingStatus.setText(""); + break; + case 1: + accOffset = 0x104; accSize = 1; writeData = "0002"; + operationRead = false; + MainActivity.csLibrary4A.appendToLog("accessResult: status: writeData = " + writeData); + break; + case 2: + case 3: + accOffset = 0xF0; accSize = 1; writeData = "A600"; + operationRead = false; + MainActivity.csLibrary4A.appendToLog("accessResult: control: writeData = " + writeData); + break; + default: + invalidRequest1 = true; readWriteTypes = ReadWriteTypes.NULL; + break; + } + } else if (readWriteTypes == ReadWriteTypes.CHECKLOGGING) { + switch(bankProcessing) { + case 0: + textViewCs8304StartLoggingStatus.setText(""); + break; + case 1: + accOffset = 0x108; accSize = 1; writeData = ""; + operationRead = true; + break; + case 2: + int iValue = 0; + try { + iValue = Integer.parseInt(textViewCs8304CheckAlaramStatus.getText().toString(), 16); + } catch (Exception ex) { } + if ((iValue & 2) != 0) { + accOffset = 0x108; accSize = 1; writeData = ""; + iValue &= 0x3; iValue |= 1; + writeData = String.format("%04X", iValue); + operationRead = false; + MainActivity.csLibrary4A.appendToLog("accessResult: writeData = " + writeData); + break; + } + default: + invalidRequest1 = true; readWriteTypes = ReadWriteTypes.NULL; + break; + } + } else if (readWriteTypes == ReadWriteTypes.GETLOGGING) { + switch(bankProcessing) { + case 0: + textViewCs8304GetLoggingStatus.setText(""); + break; + default: + invalidRequest1 = true; readWriteTypes = ReadWriteTypes.NULL; + break; + } + } } else { - int iValue = (checkBoxUserCode4a.isChecked() ? 0x2000 : 0) | (checkBoxUserCode4b.isChecked() ? 0x4000 : 0) | (checkBoxUserCode4c.isChecked() ? 0x8000 : 0); - writeData = String.format("%04X", iValue); - } - } else if (checkBoxUserCode5.isChecked() == true && checkProcessing < 5 && operationRead) { - accBank = 3; accSize = 1; accOffset = 0x124; readWriteTypes = ReadWriteTypes.USERCODE5; checkProcessing = 5; - if (operationRead) { - textViewUserCode5OK.setText(""); - editTextUserCode5.setText(""); + invalidRequest1 = true; } } else { invalidRequest1 = true; @@ -355,6 +860,38 @@ else if (checkBoxUserCode1.isChecked() == true && checkProcessing < 1) { } } } + MainActivity.csLibrary4A.appendToLog("found invalidRequest1 = " + invalidRequest1); return invalidRequest1; } + + short setTemperature(float fTemperature) { + if (fTemperature > 63.75) fTemperature = (float) 63.75; + else if (fTemperature < -64) fTemperature = -64; + boolean bNegative = false; + if (fTemperature < 0) { bNegative = true; fTemperature = 0 - fTemperature; } + fTemperature += 0.125; fTemperature /= 0.25; + short retValue = (short)fTemperature; + if (bNegative) { retValue--; retValue &= 0xFF; retValue ^= 0xFF; retValue |= 0x100; } + return retValue; + } + String getTemperatue(String stringInput) { + byte bValue = Byte.parseByte(stringInput.substring(0,1), 16); + byte bValue2 = Byte.parseByte(stringInput.substring(1, 2), 16); bValue2 <<= 4; + byte bValue3 = Byte.parseByte(stringInput.substring(2, 3), 16); bValue2 |= bValue3; + String stringValue = ""; short sValue = (short)(bValue2 & 0xFF); + if ((bValue & 0x01) != 0) { stringValue = "-"; bValue2 ^= 0xFF; sValue = (short)(bValue2 & 0xFF); sValue++; } + stringValue += String.valueOf((sValue & 0x1FF) >> 2); + switch (sValue & 0x03) { + case 1: + stringValue += ".25"; + break; + case 2: + stringValue += ".50"; + break; + case 3: + stringValue += ".75"; + break; + } + return stringValue; + } } diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessColdChainFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessColdChainFragment.java index 1fd1777..97b3e17 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessColdChainFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessColdChainFragment.java @@ -19,8 +19,8 @@ import com.csl.cs108ademoapp.GenericTextWatcher; import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.ReaderDevice; +import com.csl.cslibrary4a.RfidReaderChipData; public class AccessColdChainFragment extends CommonFragment { final boolean DEBUG = true; @@ -290,10 +290,10 @@ else if (taskRequest) { MainActivity.csLibrary4A.appendToLog("processTickItems, invalid = " + invalid); if (bankProcessing++ != 0 && invalid) rerunRequest = false; else { - Cs108Library4A.HostCommands hostCommand; - if (readWriteTypes == ReadWriteTypes.TEMPERATURE) hostCommand = Cs108Library4A.HostCommands.CMD_GETSENSORDATA; - else if (operationRead) hostCommand = Cs108Library4A.HostCommands.CMD_18K6CREAD; - else hostCommand = Cs108Library4A.HostCommands.CMD_18K6CWRITE; + RfidReaderChipData.HostCommands hostCommand; + if (readWriteTypes == ReadWriteTypes.TEMPERATURE) hostCommand = RfidReaderChipData.HostCommands.CMD_GETSENSORDATA; + else if (operationRead) hostCommand = RfidReaderChipData.HostCommands.CMD_18K6CREAD; + else hostCommand = RfidReaderChipData.HostCommands.CMD_18K6CWRITE; accessTask = new AccessTask( (operationRead ? buttonRead : buttonWrite), null, invalid, @@ -301,7 +301,7 @@ else if (taskRequest) { editTextAccessRWAccPassword.getText().toString(), Integer.valueOf(editTextaccessRWAntennaPower.getText().toString()), hostCommand, - 0, 0, true, + 0, 0, true, false, null, null, null, null, null); accessTask.execute(); rerunRequest = true; diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessEm4325PassiveFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessEm4325PassiveFragment.java index 0783d2c..d7957d5 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessEm4325PassiveFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessEm4325PassiveFragment.java @@ -14,8 +14,8 @@ import com.csl.cs108ademoapp.GenericTextWatcher; import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.ReaderDevice; +import com.csl.cslibrary4a.RfidReaderChipData; public class AccessEm4325PassiveFragment extends CommonFragment { final boolean DEBUG = true; @@ -149,10 +149,11 @@ else if (taskRequest) { MainActivity.csLibrary4A.appendToLog("updateRunnable: processTickItems Result = " + invalid + ", bankprocessing = " + bankProcessing); if (bankProcessing++ != 0 && invalid) rerunRequest = false; else { - Cs108Library4A.HostCommands hostCommand; - if (readWriteTypes == ReadWriteTypes.TEMPERATURE && operationRead) hostCommand = Cs108Library4A.HostCommands.CMD_GETSENSORDATA; - else if (operationRead) hostCommand = Cs108Library4A.HostCommands.CMD_18K6CREAD; - else hostCommand = Cs108Library4A.HostCommands.CMD_18K6CWRITE; + RfidReaderChipData.HostCommands hostCommand; + if (readWriteTypes == ReadWriteTypes.TEMPERATURE && operationRead) hostCommand = RfidReaderChipData.HostCommands.CMD_GETSENSORDATA; + else if (operationRead) hostCommand = RfidReaderChipData.HostCommands.CMD_18K6CREAD; + else hostCommand = RfidReaderChipData.HostCommands.CMD_18K6CWRITE; + MainActivity.csLibrary4A.appendToLog("hostCommand = " + hostCommand.toString()); accessTask = new AccessTask( buttonRead, null, invalid, @@ -160,7 +161,7 @@ else if (taskRequest) { editTextAccessRWAccPassword.getText().toString(), Integer.valueOf(editTextaccessRWAntennaPower.getText().toString()), hostCommand, - 0, 0, true, + 0, 0, true, false, null, null, null, null, null); accessTask.execute(); rerunRequest = true; diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessFdmicroFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessFdmicroFragment.java index 3937d0b..054532e 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessFdmicroFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessFdmicroFragment.java @@ -23,7 +23,7 @@ import com.csl.cs108ademoapp.R; import com.csl.cs108ademoapp.SaveList2ExternalTask; import com.csl.cs108ademoapp.SelectTag; -import com.csl.cs108library4a.Cs108Library4A; +import com.csl.cslibrary4a.RfidReaderChipData; import java.text.SimpleDateFormat; import java.util.Date; @@ -55,7 +55,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - selectTag = new SelectTag((Activity) getActivity()); + selectTag = new SelectTag((Activity)getActivity(), 0); tableRowOffsetLength = (TableRow) getActivity().findViewById(R.id.accessFDOffsetLengthRow); tableRowValue = (TableRow) getActivity().findViewById(R.id.accessFDValueRow); @@ -192,7 +192,7 @@ public void onClick(View v) { } }); - buttonRead = (Button) getActivity().findViewById(R.id.accessCCReadButton); + buttonRead = (Button) getActivity().findViewById(R.id.accessRWReadButton); buttonRead.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -202,7 +202,7 @@ public void onClick(View v) { } }); - buttonWrite = (Button) getActivity().findViewById(R.id.accessCCWriteButton); + buttonWrite = (Button) getActivity().findViewById(R.id.accessRWWriteButton); buttonWrite.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -368,7 +368,7 @@ boolean isOperationRunning() { return false; } void readWriteOperation() { - Cs108Library4A.HostCommands hostCommand = null; + RfidReaderChipData.HostCommands hostCommand = null; if (isOperationRunning()) return; iOtherFlowCount = 0; bLogging = false; iTimeNumber = 0; iTimeTotal = 0; if (operationReadTemperature || operationReadBattery || operationSetLogging || operationCheckLogging || operationGetLogging) { @@ -378,7 +378,7 @@ void readWriteOperation() { buttonWrite.setVisibility(View.GONE); MainActivity.csLibrary4A.set_fdCmdCfg(0x0000); - hostCommand = Cs108Library4A.HostCommands.CMD_FDM_OPMODE_CHECK; + hostCommand = RfidReaderChipData.HostCommands.CMD_FDM_OPMODE_CHECK; } else { MainActivity.csLibrary4A.appendToLog("Item Selected is " + spinnerSelectCommand.getSelectedItemPosition()); int position = spinnerSelectCommand.getSelectedItemPosition(); @@ -427,7 +427,7 @@ void readWriteOperation() { MainActivity.csLibrary4A.set_fdWriteMem(iMemoryOffset, iMemoryLength, iValue); } - hostCommand = (operationRead ? Cs108Library4A.HostCommands.CMD_FDM_RDMEM : Cs108Library4A.HostCommands.CMD_FDM_WRMEM); + hostCommand = (operationRead ? RfidReaderChipData.HostCommands.CMD_FDM_RDMEM : RfidReaderChipData.HostCommands.CMD_FDM_WRMEM); break; case 1: int iConfig = spinnerSelectAuth.getSelectedItemPosition(); @@ -447,7 +447,7 @@ void readWriteOperation() { int iValue = getEditTextHexValue(editTextAuthPassword, 8); MainActivity.csLibrary4A.set_fdPwd(iValue); - hostCommand = Cs108Library4A.HostCommands.CMD_FDM_AUTH; + hostCommand = RfidReaderChipData.HostCommands.CMD_FDM_AUTH; break; case 2: iConfig = 0; @@ -480,19 +480,19 @@ void readWriteOperation() { int iStoreOffset = getEditTextHexValue(editTextStoreOffset, 2); MainActivity.csLibrary4A.set_fdBlockAddr4GetTemperature(iStoreOffset); - hostCommand = Cs108Library4A.HostCommands.CMD_FDM_GET_TEMPERATURE; + hostCommand = RfidReaderChipData.HostCommands.CMD_FDM_GET_TEMPERATURE; break; case 3: MainActivity.csLibrary4A.set_fdCmdCfg(operationRead ? 0 : 80); if (operationRead) - hostCommand = Cs108Library4A.HostCommands.CMD_FDM_START_LOGGING; + hostCommand = RfidReaderChipData.HostCommands.CMD_FDM_START_LOGGING; else { EditText editText = (EditText) getActivity().findViewById(R.id.selectFDLoggingPassword); int iPassword = getEditTextHexValue(editText, 8); MainActivity.csLibrary4A.set_fdPwd(iPassword); - hostCommand = Cs108Library4A.HostCommands.CMD_FDM_STOP_LOGGING; + hostCommand = RfidReaderChipData.HostCommands.CMD_FDM_STOP_LOGGING; } break; case 4: @@ -505,11 +505,11 @@ void readWriteOperation() { if (operationRead) { editText1.setText(""); MainActivity.csLibrary4A.set_fdRegAddr(iValue); - hostCommand = Cs108Library4A.HostCommands.CMD_FDM_RDREG; + hostCommand = RfidReaderChipData.HostCommands.CMD_FDM_RDREG; } else { int iValue1 = getEditTextHexValue(editText1, 4); MainActivity.csLibrary4A.set_fdWrite(iValue, iValue1); - hostCommand = Cs108Library4A.HostCommands.CMD_FDM_WRREG; + hostCommand = RfidReaderChipData.HostCommands.CMD_FDM_WRREG; } break; case 5: @@ -523,13 +523,13 @@ void readWriteOperation() { else if (position != 7) iValue = 1; } MainActivity.csLibrary4A.set_fdCmdCfg(iValue); - if (position == 5) hostCommand = Cs108Library4A.HostCommands.CMD_FDM_DEEP_SLEEP; + if (position == 5) hostCommand = RfidReaderChipData.HostCommands.CMD_FDM_DEEP_SLEEP; else if (position == 6) - hostCommand = Cs108Library4A.HostCommands.CMD_FDM_OPMODE_CHECK; + hostCommand = RfidReaderChipData.HostCommands.CMD_FDM_OPMODE_CHECK; else if (position == 7) - hostCommand = Cs108Library4A.HostCommands.CMD_FDM_INIT_REGFILE; + hostCommand = RfidReaderChipData.HostCommands.CMD_FDM_INIT_REGFILE; else if (position == 8) - hostCommand = Cs108Library4A.HostCommands.CMD_FDM_LED_CTRL; + hostCommand = RfidReaderChipData.HostCommands.CMD_FDM_LED_CTRL; break; default: break; @@ -538,7 +538,7 @@ else if (position == 8) doAccessTask(hostCommand); } - void doAccessTask(Cs108Library4A.HostCommands hostCommand) { + void doAccessTask(RfidReaderChipData.HostCommands hostCommand) { String selectMask = selectTag.editTextTagID.getText().toString(); int selectBank = selectTag.spinnerSelectBank.getSelectedItemPosition() + 1; int selectOffset = Integer.valueOf(selectTag.editTextSelectOffset.getText().toString()); @@ -550,7 +550,7 @@ void doAccessTask(Cs108Library4A.HostCommands hostCommand) { selectTag.editTextAccessPassword.getText().toString(), Integer.valueOf(selectTag.editTextAccessAntennaPower.getText().toString()), hostCommand, - 0, 0, true, + 0, 0, true, false, null, null, null, null, null); accessTask.setRunnable(updateRunnable); accessTask.execute(); @@ -593,7 +593,7 @@ public void run() { switch (iOtherFlowCount) { case 0: MainActivity.csLibrary4A.set_fdReadMem(0, 12); - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_RDMEM); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_RDMEM); break; case 1: if (DEBUG) MainActivity.csLibrary4A.appendToLog("case 1: bLogging = " + bLogging + ", accessTask.accessResult = " + accessTask.accessResult); @@ -632,10 +632,10 @@ public void run() { } if (bLogging) { MainActivity.csLibrary4A.set_fdRegAddr(0xc094); - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_RDREG); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_RDREG); } else { MainActivity.csLibrary4A.set_fdReadMem(0xb188, 4); - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_RDMEM); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_RDMEM); } break; case 2: @@ -696,7 +696,7 @@ public void run() { int iValue = 0x1000 + (iOtherFlowCount - 2) * 4; MainActivity.csLibrary4A.set_fdReadMem(iValue, 4); if (DEBUG) MainActivity.csLibrary4A.appendToLog(String.format("set_fdReadMem address = 0x%04x", iValue)); - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_RDMEM); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_RDMEM); } break; } @@ -707,10 +707,10 @@ public void run() { if (DEBUG) MainActivity.csLibrary4A.appendToLog(accessTask.accessResult + ": blogging B is " + bLogging); if (bLogging) { MainActivity.csLibrary4A.set_fdRegAddr(0xc096); - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_RDREG); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_RDREG); } else { MainActivity.csLibrary4A.set_fdReadMem(0xb188, 4); - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_RDMEM); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_RDMEM); } break; default: @@ -736,7 +736,7 @@ public void run() { if (DEBUG) MainActivity.csLibrary4A.appendToLog("AAA: " + "lValue1 = " + String.format("%08x", lValue)); } MainActivity.csLibrary4A.set_fdWriteMem(0xb040, 4, lValue); //~user_cfg1,user_cfg1,~user_cfg0,user_cfg0: default as 0xd629b34c - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_WRMEM); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_WRMEM); logData = new LogData(); break; case 1: @@ -755,11 +755,11 @@ public void run() { if (DEBUG) MainActivity.csLibrary4A.appendToLog("AAA: " + String.format("accessResult: iValue = %X, iValue1 = %X", iValue0, iValue)); MainActivity.csLibrary4A.set_fdWriteMem(0xb094, 4, iValue); //rtc_cnt_limit: default as 0x00000003 - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_WRMEM); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_WRMEM); break; case 2: MainActivity.csLibrary4A.set_fdWriteMem(0xb0a4, 4, 0x0A000100); //vdet_alarm_step_cfg, vdet_step_cfg: default as 0 - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_WRMEM); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_WRMEM); break; case 3: iValue = 1; @@ -771,7 +771,7 @@ public void run() { if (DEBUG) MainActivity.csLibrary4A.appendToLog("AAA: " + String.format("accessResult: iValue = %X", iValue)); MainActivity.csLibrary4A.set_fdWrite(0xc084, iValue); //vdet_delay_cfg: default as 0xffff in minute - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_WRREG); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_WRREG); logData.minLogStartDelay = iValue; break; case 4: @@ -783,20 +783,20 @@ public void run() { if (DEBUG) MainActivity.csLibrary4A.appendToLog("AAA: " + String.format("accessResult: iValue = %X", iValue)); MainActivity.csLibrary4A.set_fdWrite(0xc085, iValue); //vdet_step_cfg: default as 0xffff in seconds - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_WRREG); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_WRREG); logData.secLogSampleInterval = iValue; break; case 5: MainActivity.csLibrary4A.set_fdWrite(0xc099, 0); //summary_min_temperature: default 0 - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_WRREG); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_WRREG); break; case 6: MainActivity.csLibrary4A.set_fdWrite(0xc098, 0x100); //summary_max_temperature: default 0 - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_WRREG); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_WRREG); break; case 7: MainActivity.csLibrary4A.set_fdRegAddr(0xc084); //vdet_delay_cfg: default as 0xffff in minute - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_RDREG); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_RDREG); break; case 8: iValue = -1; @@ -810,7 +810,7 @@ public void run() { break; } MainActivity.csLibrary4A.set_fdCmdCfg(0); - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_START_LOGGING); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_START_LOGGING); break; case 9: Date date = new Date(); @@ -822,7 +822,7 @@ public void run() { longValue |= ((longTemp & 0xFF0000) >> 8); longValue |= ((longTemp & 0xFF000000) >> 24) ; MainActivity.csLibrary4A.set_fdWriteMem(0, 4, longValue); //rtc_cnt_limit: default as 0x00000003 - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_WRMEM); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_WRMEM); break; case 10: longValue = (((long)logData.minLogStartDelay & 0xFF) << 24); @@ -831,7 +831,7 @@ public void run() { longValue |= ((logData.secLogSampleInterval & 0xFF00) >> 8) ; if (DEBUG) MainActivity.csLibrary4A.appendToLog("AAA: " + String.format("longValue = %08x, minLogStartDelay = %04x, secLogSampleInterval = %04x", longValue, logData.minLogStartDelay, logData.secLogSampleInterval)); MainActivity.csLibrary4A.set_fdWriteMem(8, 4, longValue); //rtc_cnt_limit: default as 0x00000003 - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_WRMEM); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_WRMEM); break; default: operationSetLogging = false; @@ -851,15 +851,15 @@ else if (operationReadBattery) { switch(iOtherFlowCount) { case 0: MainActivity.csLibrary4A.set_fdWrite(0xc012, 0x0008); - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_WRREG); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_WRREG); break; case 1: MainActivity.csLibrary4A.set_fdCmdCfg(0x12); - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_GET_TEMPERATURE); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_GET_TEMPERATURE); break; case 2: MainActivity.csLibrary4A.set_fdCmdCfg(0x92); - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_GET_TEMPERATURE); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_GET_TEMPERATURE); break; default: operationReadBattery = false; @@ -881,20 +881,16 @@ else if (operationReadBattery) { else if (operationReadTemperature) { switch(iOtherFlowCount) { case 0: - /*MainActivity.mCs108Library4a.set_fdWriteMem(0xb040, 4, 0x4db209f6); //~user_cfg1,user_cfg1,~user_cfg0,user_cfg0: default as 0xd629b34c - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_WRMEM); - MainActivity.mCs108Library4a.set_fdWriteMem(0xb061, 1, 0x40); - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_WRMEM);*/ MainActivity.csLibrary4A.set_fdWrite(0xc012, 0x0000); - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_WRREG); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_WRREG); break; case 1: MainActivity.csLibrary4A.set_fdCmdCfg(0x06); - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_GET_TEMPERATURE); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_GET_TEMPERATURE); break; case 2: MainActivity.csLibrary4A.set_fdCmdCfg(0x86); - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_GET_TEMPERATURE); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_GET_TEMPERATURE); break; default: operationReadTemperature = false; @@ -1024,7 +1020,7 @@ else if (strMessage.matches("FFF0")) if (position == 8 && iOtherFlowCount == 0) { iOtherFlowCount++; MainActivity.csLibrary4A.set_fdWriteMem(0xb040, 4, 0x4db229d6); //~user_cfg1,user_cfg1,~user_cfg0,user_cfg0: default as 0xd629b34c - doAccessTask(Cs108Library4A.HostCommands.CMD_FDM_WRMEM); + doAccessTask(RfidReaderChipData.HostCommands.CMD_FDM_WRMEM); } break; case 6: diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessImpinjFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessImpinjFragment.java index 5076570..ae7d8e7 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessImpinjFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessImpinjFragment.java @@ -3,30 +3,49 @@ import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; +import android.os.SystemClock; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckBox; +import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; import com.csl.cs108ademoapp.AccessTask; import com.csl.cs108ademoapp.AccessTask1; +import com.csl.cs108ademoapp.CustomPopupWindow; import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; import com.csl.cs108ademoapp.SelectTag; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.ReaderDevice; +import com.csl.cslibrary4a.RfidReaderChipData; +import com.google.android.material.tabs.TabLayout; public class AccessImpinjFragment extends CommonFragment { - CheckBox checkBoxTagFocus, checkBoxFastId, checkBoxTagSecurity, checkBoxTagAutotune, checkBoxShortRange, checkBoxAutoTuneDisable; + CheckBox checkBoxTagFocus, checkBoxFastId, checkBoxProtectSelect, checkBoxAutoTuneDisable, checkBoxProtect, checkBoxShortRange, checkBoxMemorySelect, checkBoxUnkillable; + Spinner spinnerTagSelect; + + TextView textViewUserValue; + Button buttonReadUserBank, buttonWriteUserBank; + TextView textViewRunTime; + enum impinjTag { + m775, m780, m830, m770, m730, monza_R6A, monza_R6P, monza_x8k, others + } + SelectTag selectTag; - TextView textViewAuthenticatedResult, textViewAutotuneValue, textViewAutotuneConfiguration; - Button button, buttonValueRead, buttonRead, buttonWrite; + TextView textViewAuthenticatedResult, textViewAutotuneValue, textViewProtectValue, textViewProtectNormalValue, textViewEpc128Value, textViewConfiguration; + Button button, buttonAutoTuneValueRead, buttonProtectValueRead, buttonProtectResumeRead, buttonEpc128ValueRead, buttonRead, buttonWrite; + boolean operationRead = false; AccessTask accessTask; AccessTask1 accessTask1; int iRunType = -1; String stringNewAutoTuneConfig = null; + int unprotecting = 0; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -39,13 +58,97 @@ public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); checkBoxTagFocus = (CheckBox) getActivity().findViewById(R.id.accessImpinjTagFocus); - if (MainActivity.csLibrary4A.get98XX() != 0) checkBoxTagFocus.setText(checkBoxTagFocus.getText().toString() + " (When enabled, tag select is disabled.)"); - checkBoxFastId = (CheckBox) getActivity().findViewById(R.id.accessImpinjFastId); - checkBoxTagSecurity = (CheckBox) getActivity().findViewById(R.id.accessImpinjTagSecurity); - checkBoxTagAutotune = (CheckBox) getActivity().findViewById(R.id.accessImpinjTagAutotune); - checkBoxShortRange = (CheckBox) getActivity().findViewById(R.id.accessImpinjAutoTuneShortRange); - checkBoxAutoTuneDisable = (CheckBox) getActivity().findViewById(R.id.accessImpinjAutoTuneDisable); + if (MainActivity.csLibrary4A.get98XX() == 2) checkBoxTagFocus.setText(checkBoxTagFocus.getText().toString() + " (When enabled, tag select is disabled.)"); MainActivity.csLibrary4A.appendToLog("CheckBoxTagFocus is set"); + checkBoxFastId = (CheckBox) getActivity().findViewById(R.id.accessImpinjFastId); + + checkBoxAutoTuneDisable = (CheckBox) getActivity().findViewById(R.id.accessImpinjAutoTune); + checkBoxProtect = (CheckBox) getActivity().findViewById(R.id.accessImpinjProtect); + checkBoxShortRange = (CheckBox) getActivity().findViewById(R.id.accessImpinjShortRange); + checkBoxMemorySelect = (CheckBox) getActivity().findViewById(R.id.accessImpinjMemorySelect); + checkBoxUnkillable = (CheckBox) getActivity().findViewById(R.id.accessImpinjUnkillable); + + spinnerTagSelect = (Spinner) getActivity().findViewById(R.id.accessImpinjTagSelect); + ArrayAdapter targetAdapter1 = ArrayAdapter.createFromResource(getActivity(), R.array.impinj_options, R.layout.custom_spinner_layout); + targetAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + spinnerTagSelect.setAdapter(targetAdapter1); spinnerTagSelect.setSelection(0); + spinnerTagSelect.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parentView, View selectedItemView, int position, long id) { + TabLayout tabLayout = (TabLayout) getActivity().findViewById(R.id.OperationsTabLayout); + TabLayout.TabView tabView = tabLayout.getTabAt(2).view; + //LinearLayout layout = (LinearLayout) getActivity().findViewById(R.id.accessImpinjAuthenticateLayout); + if (position == impinjTag.m775.ordinal()) { + //layout.setVisibility(View.VISIBLE); + textViewAuthenticatedResult.setText(""); + tabView.setVisibility(View.VISIBLE); + } else { + //layout.setVisibility(View.GONE); + tabView.setVisibility(View.GONE); + } + + LinearLayout layoutA = (LinearLayout) getActivity().findViewById(R.id.accessImpinjProtectLayout); + LinearLayout layoutA1 = (LinearLayout) getActivity().findViewById(R.id.accessImpinjProtectLayout1); + if (position == impinjTag.m775.ordinal() || + position == impinjTag.m780.ordinal() || + position == impinjTag.m830.ordinal() || + position == impinjTag.m770.ordinal() || + position == impinjTag.m730.ordinal()) { + layoutA.setVisibility(View.VISIBLE); + layoutA1.setVisibility(View.VISIBLE); + textViewProtectValue.setText(""); + } else { + layoutA.setVisibility(View.GONE); + layoutA1.setVisibility(View.GONE); + } + + LinearLayout layout0 = (LinearLayout) getActivity().findViewById(R.id.accessImpinjMemorySelectLayout); + if (position == impinjTag.m830.ordinal() || position == impinjTag.monza_R6P.ordinal()) { + layout0.setVisibility(View.VISIBLE); + textViewEpc128Value.setText(""); + } else layout0.setVisibility(View.GONE); + + LinearLayout layout1 = (LinearLayout) getActivity().findViewById(R.id.accessImpinjSelectLayout); + if (position == impinjTag.others.ordinal()) layout1.setVisibility(View.GONE); + else layout1.setVisibility(View.VISIBLE); + + LinearLayout layout2 = (LinearLayout) getActivity().findViewById(R.id.accessImpinjAutotuneLayout); + LinearLayout layout3 = (LinearLayout) getActivity().findViewById(R.id.accessImpinjConfigLayout); + if (position == impinjTag.monza_x8k.ordinal() || position == impinjTag.others.ordinal()) { + layout2.setVisibility(View.GONE); + layout3.setVisibility(View.GONE); + } else { + layout2.setVisibility(View.VISIBLE); + layout3.setVisibility(View.VISIBLE); + + textViewAutotuneValue.setText(""); + + if (position == impinjTag.monza_R6A.ordinal() || position == impinjTag.monza_R6P.ordinal() || position == impinjTag.others.ordinal()) checkBoxProtect.setVisibility(View.GONE); + else checkBoxProtect.setVisibility(View.VISIBLE); + if (position == impinjTag.m830.ordinal() || position == impinjTag.monza_R6P.ordinal()) checkBoxMemorySelect.setVisibility(View.VISIBLE); + else checkBoxMemorySelect.setVisibility(View.GONE); + if (position == impinjTag.m775.ordinal() || position == impinjTag.m780.ordinal() || position == impinjTag.m770.ordinal()) checkBoxUnkillable.setVisibility(View.VISIBLE); + else checkBoxUnkillable.setVisibility(View.GONE); + + checkBoxAutoTuneDisable.setChecked(false); checkBoxAutoTuneDisable.setEnabled(false); + checkBoxProtect.setChecked(false); checkBoxProtect.setEnabled(false); + checkBoxShortRange.setChecked(false); checkBoxShortRange.setEnabled(false); + checkBoxMemorySelect.setChecked(false); checkBoxMemorySelect.setEnabled(false); + checkBoxUnkillable.setChecked(false); checkBoxUnkillable.setEnabled(false); + textViewConfiguration.setText(""); + } + + LinearLayout layout4 = (LinearLayout) getActivity().findViewById(R.id.accessImpinjReadUserLayout); + if (position == impinjTag.monza_x8k.ordinal()) layout4.setVisibility(View.VISIBLE); + else layout4.setVisibility(View.GONE); + } + + @Override + public void onNothingSelected(AdapterView parentView) { + // your code here + } + + }); MainActivity.csLibrary4A.setSameCheck(false); data2Restore.iQuerySession = MainActivity.csLibrary4A.getQuerySession(); @@ -54,7 +157,7 @@ public void onActivityCreated(Bundle savedInstanceState) { data2Restore.dwellTime = MainActivity.csLibrary4A.getAntennaDwell(); data2Restore.tagFocus = MainActivity.csLibrary4A.getTagFocus(); - selectTag = new SelectTag((Activity)getActivity ()); + selectTag = new SelectTag((Activity)getActivity(), 0); if (true) { textViewAuthenticatedResult = (TextView) getActivity().findViewById(R.id.accessImpinjAuthenticatedResult); @@ -63,13 +166,14 @@ public void onActivityCreated(Bundle savedInstanceState) { @Override public void onClick(View v) { if (isRfidConnectionValid() == false) return; - textViewAuthenticatedResult.setText(""); + if (isRunningAccessTask()) return; + textViewAuthenticatedResult.setText(""); boolean invalidRequest = MainActivity.csLibrary4A.setAuthenticateConfiguration(); accessTask = new AccessTask(button, null, false, selectTag.editTextTagID.getText().toString(), 1, 32, - selectTag.editTextAccessPassword.getText().toString(), Integer.valueOf(selectTag.editTextAccessAntennaPower.getText().toString()), Cs108Library4A.HostCommands.CMD_18K6CAUTHENTICATE, - -1, -1, false, + selectTag.editTextAccessPassword.getText().toString(), Integer.valueOf(selectTag.editTextAccessAntennaPower.getText().toString()), RfidReaderChipData.HostCommands.CMD_18K6CAUTHENTICATE, + -1, -1, false, false, null, null, null, null, null); accessTask.execute(); @@ -81,19 +185,29 @@ public void onClick(View v) { if (true) { textViewAutotuneValue = (TextView) getActivity().findViewById(R.id.accessImpinjAutoTuneValue); - buttonValueRead = (Button) getActivity().findViewById(R.id.accessImpinjAutotuneValueButton); - buttonValueRead.setOnClickListener(new View.OnClickListener() { + buttonAutoTuneValueRead = (Button) getActivity().findViewById(R.id.accessImpinjAutotuneValueButton); + buttonAutoTuneValueRead.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (isRfidConnectionValid() == false) return; - textViewAutotuneValue.setText(""); + if (isRunningAccessTask()) return; + textViewAutotuneValue.setText(""); boolean invalidRequest = false; - if (set_before_access(0, (checkBoxTagSecurity.isChecked() ? 0x1c : 0x14), 1) == false) invalidRequest = true; - accessTask = new AccessTask(buttonValueRead, null, invalidRequest, + int iAccOffset = 0x1c; int itagSelect = spinnerTagSelect.getSelectedItemPosition(); + if (itagSelect == impinjTag.m775.ordinal()) iAccOffset = 0x1c; + else if (itagSelect == impinjTag.m780.ordinal()) iAccOffset = 0x34; + else if (itagSelect == impinjTag.m830.ordinal()) iAccOffset = 0x14; + else if (itagSelect == impinjTag.m770.ordinal()) iAccOffset = 0x1c; + else if (itagSelect == impinjTag.m730.ordinal()) iAccOffset = 0x14; + else if (itagSelect == impinjTag.monza_R6A.ordinal()) iAccOffset = 0x14; + else if (itagSelect == impinjTag.monza_R6P.ordinal()) iAccOffset = 0x14; + MainActivity.csLibrary4A.appendToLog(String.format("AutoTune offset is 0x%X", iAccOffset)); + if (set_before_access(0, itagSelect, 1) == false) invalidRequest = true; + accessTask = new AccessTask(buttonAutoTuneValueRead, null, invalidRequest, selectTag.editTextTagID.getText().toString(), 1, 32, - selectTag.editTextAccessPassword.getText().toString(), Integer.valueOf(selectTag.editTextAccessAntennaPower.getText().toString()), Cs108Library4A.HostCommands.CMD_18K6CREAD, - -1, -1, false, + selectTag.editTextAccessPassword.getText().toString(), Integer.valueOf(selectTag.editTextAccessAntennaPower.getText().toString()), RfidReaderChipData.HostCommands.CMD_18K6CREAD, + -1, -1, false, checkProtectedBoxBeforeAccess(), null, null, null, null, null); accessTask.execute(); mHandler.removeCallbacks(updateRunnable); @@ -101,70 +215,292 @@ public void onClick(View v) { } }); - textViewAutotuneConfiguration = (TextView) getActivity().findViewById(R.id.accessImpinjAutoTuneConfiguration); - buttonRead = (Button) getActivity().findViewById(R.id.accessImpinjReadButton); - buttonRead.setOnClickListener(new View.OnClickListener() { + textViewProtectValue = (TextView) getActivity().findViewById(R.id.accessImpinjProtectValue); + checkBoxProtectSelect = (CheckBox) getActivity().findViewById(R.id.accessImpinjProtectSelect); + textViewProtectNormalValue = (TextView) getActivity().findViewById(R.id.accessImpinjProtectNormalValue); + buttonProtectValueRead = (Button) getActivity().findViewById(R.id.accessImpinjProtectValueButton); + buttonProtectValueRead.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (isRfidConnectionValid() == false) return; - textViewAutotuneConfiguration.setText(""); + if (isRunningAccessTask()) return; + textViewProtectValue.setText(""); boolean invalidRequest = false; - if (set_before_access(0, 4, 1) == false) invalidRequest = true; - accessTask = new AccessTask(buttonRead, null, invalidRequest, + if (set_before_access(1, 2, 6) == false) invalidRequest = true; + accessTask = new AccessTask(buttonProtectValueRead, null, invalidRequest, selectTag.editTextTagID.getText().toString(), 1, 32, - selectTag.editTextAccessPassword.getText().toString(), Integer.valueOf(selectTag.editTextAccessAntennaPower.getText().toString()), Cs108Library4A.HostCommands.CMD_18K6CREAD, - -1, -1, false, + selectTag.editTextAccessPassword.getText().toString(), Integer.valueOf(selectTag.editTextAccessAntennaPower.getText().toString()), RfidReaderChipData.HostCommands.CMD_18K6CREAD, + -1, -1, false, checkProtectedBoxBeforeAccess(), null, null, null, null, null); + MainActivity.csLibrary4A.appendToLog("setSelectCriteria: before execute"); accessTask.execute(); + MainActivity.csLibrary4A.appendToLog("setSelectCriteria: after execute"); mHandler.removeCallbacks(updateRunnable); iRunType = 3; mHandler.post(updateRunnable); } }); - buttonWrite = (Button) getActivity().findViewById(R.id.accessImpinjWriteButton); - buttonWrite.setOnClickListener(new View.OnClickListener() { + + buttonProtectResumeRead = (Button) getActivity().findViewById(R.id.accessImpinjProtectResumeButton); + buttonProtectResumeRead.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + if (isZeroPassword()) return; if (isRfidConnectionValid() == false) return; - else if (textViewAutotuneConfiguration.getText().toString().length() < 4) { - Toast.makeText(MainActivity.mContext, "Please read configuration first", Toast.LENGTH_SHORT).show(); - return; + if (isRunningAccessTask()) { + if (accessTask != null) accessTask.taskCancelReason = AccessTask.TaskCancelRReason.DESTORY; } - boolean invalidRequest = false; - if (set_before_access(0, 4, 1) == false) invalidRequest = true; - if (invalidRequest == false) { - String string = textViewAutotuneConfiguration.getText().toString(); - int iValue = Integer.valueOf(string, 16); - MainActivity.csLibrary4A.appendToLog(String.format("iValue = 0x%02X", iValue)); - int iValueModified = 0x02; if (checkBoxTagSecurity.isChecked()) iValueModified = 0x04; - if (checkBoxShortRange.isChecked()) iValue |= iValueModified; - else iValue &= ~iValueModified; - if (checkBoxAutoTuneDisable.isChecked()) iValue |= 0x01; - else iValue &= ~0x01; - MainActivity.csLibrary4A.appendToLog(String.format("revised iValue = 0x%02X", iValue)); - string = String.format("%04X", iValue); - MainActivity.csLibrary4A.appendToLog("string = " + string); - MainActivity.csLibrary4A.appendToLog("new AutotuneConfiguration = " + string); - stringNewAutoTuneConfig = string; - if (MainActivity.csLibrary4A.setAccessWriteData(string) == false) { - invalidRequest = true; - } + if (unprotecting > 0) stopProtectResuming(); + else { + unprotecting = 1; + if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m775.ordinal()) selectTag.editTextTagID.setText("E2C011A2"); + else if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m780.ordinal()) selectTag.editTextTagID.setText("E28011C"); + else if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m770.ordinal()) selectTag.editTextTagID.setText("E28011A0"); + else if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m830.ordinal()) selectTag.editTextTagID.setText("E28011B0"); + else if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m730.ordinal()) selectTag.editTextTagID.setText("E280119"); + selectTag.spinnerSelectBank.setSelection(1); + checkBoxProtectSelect.setChecked(true); + buttonProtectResumeRead.setText("Stop resuming to normal"); + + startConfigRead(); } + } + }); - accessTask = new AccessTask(buttonWrite, null, invalidRequest, + textViewEpc128Value = (TextView) getActivity().findViewById(R.id.accessImpinjEpc128Value); + buttonEpc128ValueRead = (Button) getActivity().findViewById(R.id.accessImpinjEpc128ValueButton); + buttonEpc128ValueRead.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (isRfidConnectionValid() == false) return; + if (isRunningAccessTask()) return; + + textViewEpc128Value.setText(""); + boolean invalidRequest = false; + if (set_before_access(1, 2, 8) == false) invalidRequest = true; + accessTask = new AccessTask(buttonEpc128ValueRead, null, invalidRequest, selectTag.editTextTagID.getText().toString(), 1, 32, - selectTag.editTextAccessPassword.getText().toString(), Integer.valueOf(selectTag.editTextAccessAntennaPower.getText().toString()), Cs108Library4A.HostCommands.CMD_18K6CWRITE, - -1, -1, false, + selectTag.editTextAccessPassword.getText().toString(), Integer.valueOf(selectTag.editTextAccessAntennaPower.getText().toString()), RfidReaderChipData.HostCommands.CMD_18K6CREAD, + -1, -1, false, checkProtectedBoxBeforeAccess(), null, null, null, null, null); accessTask.execute(); mHandler.removeCallbacks(updateRunnable); iRunType = 4; mHandler.post(updateRunnable); } }); + + textViewRunTime = (TextView) getActivity().findViewById(R.id.accessImpinjRunTime); + buttonReadUserBank = (Button) getActivity().findViewById(R.id.accessRWReadButton); + buttonReadUserBank.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (MainActivity.csLibrary4A.isBleConnected() == false) { + Toast.makeText(MainActivity.mContext, R.string.toast_ble_not_connected, Toast.LENGTH_SHORT).show(); + return; + } else if (MainActivity.csLibrary4A.isRfidFailure()) { + Toast.makeText(MainActivity.mContext, "Rfid is disabled", Toast.LENGTH_SHORT).show(); + return; + } + operationRead = true; startAccessUserTask(); + } + }); + + buttonWriteUserBank = (Button) getActivity().findViewById(R.id.accessRWWriteButton); + buttonWriteUserBank.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (MainActivity.csLibrary4A.isBleConnected() == false) { + Toast.makeText(MainActivity.mContext, R.string.toast_ble_not_connected, Toast.LENGTH_SHORT).show(); + return; + } else if (MainActivity.csLibrary4A.isRfidFailure()) { + Toast.makeText(MainActivity.mContext, "Rfid is disabled", Toast.LENGTH_SHORT).show(); + return; + } + operationRead = false; startAccessUserTask(); + } + }); + + textViewConfiguration = (TextView) getActivity().findViewById(R.id.accessImpinjConfiguration); + buttonRead = (Button) getActivity().findViewById(R.id.accessImpinjReadButton); + buttonRead.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (isRfidConnectionValid() == false) return; + if (isRunningAccessTask()) return; + + startConfigRead(); + } + }); + + buttonWrite = (Button) getActivity().findViewById(R.id.accessImpinjWriteButton); + buttonWrite.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (isZeroPassword()) return; + if (isRfidConnectionValid() == false) return; + if (isRunningAccessTask()) return; + + if (textViewConfiguration.getText().toString().length() < 4) { + Toast.makeText(MainActivity.mContext, "Please read configuration first", Toast.LENGTH_SHORT).show(); + return; + } + startConfigWrite(); + } + }); } } + boolean isZeroPassword() { + boolean bValue = false; + int iValue = 0; + try { + iValue = Integer.parseInt(selectTag.editTextAccessPassword.getText().toString(), 16); + } catch (Exception ex) { + iValue = -1; + } + MainActivity.csLibrary4A.appendToLog("Password = " + iValue); + if (iValue == 0) { + CustomPopupWindow customPopupWindow = new CustomPopupWindow(MainActivity.mContext); + customPopupWindow.popupStart("Before operation, please enter non-zero access password !!!", false); + bValue = true; + } + return bValue; + } + void stopProtectResuming() { + unprotecting = 0; + checkBoxProtectSelect.setChecked(false); + buttonProtectResumeRead.setText("Resume invisible tag to normal"); + } + + boolean updating = false; long msStartTime; int bankProcessing = 0; int restartAccessBank = -1; + void startAccessUserTask() { + msStartTime = SystemClock.elapsedRealtime(); + textViewRunTime.setText(""); + + int iSelectBank = selectTag.spinnerSelectBank.getSelectedItemPosition() + 1; + int iSelectOffset = 32; + if (iSelectBank != 1) iSelectOffset = 0; + + EditText editTextBlockCount = (EditText) getActivity().findViewById(R.id.accessImpinjBlockCount); + EditText editTextUserOffset = (EditText) getActivity().findViewById(R.id.accessImpinjUserOffset); + EditText editTextUserLength = (EditText) getActivity().findViewById(R.id.accessImpinjUserLength); + int accBlockCount = 32, accOffset = 1, accSize = 1; + try { + accBlockCount = Integer.parseInt(editTextBlockCount.getText().toString()); + } catch (Exception ex) { } + try { + accOffset = Integer.valueOf(editTextUserOffset.getText().toString(), 10); + } catch (Exception ex) { } + try { + accSize = Integer.valueOf(editTextUserLength.getText().toString(), 10); + } catch (Exception ex) { } + + textViewUserValue = (TextView) getActivity().findViewById(R.id.accessImpinjUserValue); + if (operationRead) textViewUserValue.setText(""); + boolean invalidRequest = false; + + MainActivity.csLibrary4A.appendToLog("Start accessTask1 with accBlockCount + " + accBlockCount + "F" + editTextBlockCount.getText().toString() + ", accOffset = " + accOffset + "F" + editTextUserOffset.getText().toString() + ", accSize = " + accSize + "F" + editTextUserLength.getText().toString()); + accessTask1 = new AccessTask1( + (operationRead ? buttonReadUserBank : buttonWriteUserBank), invalidRequest, + 3, accOffset, accSize, accBlockCount, null, + selectTag.editTextTagID.getText().toString(), iSelectBank, iSelectOffset, + selectTag.editTextAccessPassword.getText().toString(), + Integer.valueOf(selectTag.editTextAccessAntennaPower.getText().toString()), + (operationRead ? RfidReaderChipData.HostCommands.CMD_18K6CREAD: RfidReaderChipData.HostCommands.CMD_18K6CWRITE), updateRunnable); + accessTask1.execute(); + iRunType = 7; + } + void startConfigRead() { + textViewConfiguration.setText(""); + boolean invalidRequest = false; + if (set_before_access(0, 4, 1) == false) invalidRequest = true; + int iSelectBank = selectTag.spinnerSelectBank.getSelectedItemPosition() + 1; + int iSelectOffset = 32; + if (iSelectBank != 1) iSelectOffset = 0; + accessTask = new AccessTask(buttonRead, null, invalidRequest, + selectTag.editTextTagID.getText().toString(), iSelectBank, iSelectOffset, + selectTag.editTextAccessPassword.getText().toString(), Integer.valueOf(selectTag.editTextAccessAntennaPower.getText().toString()), RfidReaderChipData.HostCommands.CMD_18K6CREAD, + -1, -1, false, checkProtectedBoxBeforeAccess(), + null, null, null, null, null); + accessTask.execute(); + mHandler.removeCallbacks(updateRunnable); + iRunType = 5; mHandler.post(updateRunnable); + } + void startConfigWrite() { + boolean invalidRequest = false; + if (set_before_access(0, 4, 1) == false) invalidRequest = true; + int iSelectBank = selectTag.spinnerSelectBank.getSelectedItemPosition() + 1; + int iSelectOffset = 32; + if (iSelectBank != 1) iSelectOffset = 0; + if (invalidRequest == false) { + String string = textViewConfiguration.getText().toString(); + int iValue = Integer.valueOf(string, 16); + MainActivity.csLibrary4A.appendToLog(String.format("iValue = 0x%02X", iValue)); + + if (checkBoxAutoTuneDisable.isChecked()) iValue |= 0x01; + else iValue &= ~0x01; + if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m775.ordinal() || + spinnerTagSelect.getSelectedItemPosition() == impinjTag.m780.ordinal() || + spinnerTagSelect.getSelectedItemPosition() == impinjTag.m830.ordinal() || + spinnerTagSelect.getSelectedItemPosition() == impinjTag.m770.ordinal() || + spinnerTagSelect.getSelectedItemPosition() == impinjTag.m730.ordinal()) { + if (checkBoxProtect.isChecked()) iValue |= 0x02; + else iValue &= ~0x02; + } + + int iValueModified = 0x02; + if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m775.ordinal()) iValueModified = 0x04; + else if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m780.ordinal()) iValueModified = 0x04; + else if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m770.ordinal()) iValueModified = 0x04; + else if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m830.ordinal()) iValueModified = 0x10; + else if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m730.ordinal()) iValueModified = 0x10; + if (checkBoxShortRange.isChecked()) iValue |= iValueModified; + else iValue &= ~iValueModified; + + iValueModified = 0; + if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m830.ordinal()) iValueModified = 0x08; + else if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.monza_R6P.ordinal()) iValueModified = 0x04; + if (iValueModified != 0) { + if (checkBoxMemorySelect.isChecked()) iValue |= iValueModified; + else iValue &= ~iValueModified; + } + + if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m775.ordinal() || + spinnerTagSelect.getSelectedItemPosition() == impinjTag.m780.ordinal() || + spinnerTagSelect.getSelectedItemPosition() == impinjTag.m770.ordinal()) { + if (checkBoxUnkillable.isChecked()) iValue |= 0x08; + else iValue &= ~0x08; + } + + MainActivity.csLibrary4A.appendToLog(String.format("revised iValue = 0x%02X", iValue)); + string = String.format("%04X", iValue); + MainActivity.csLibrary4A.appendToLog("string = " + string); + MainActivity.csLibrary4A.appendToLog("new AutotuneConfiguration = " + string); + stringNewAutoTuneConfig = string; + if (MainActivity.csLibrary4A.setAccessWriteData(string) == false) { + invalidRequest = true; + } + } + + accessTask = new AccessTask(buttonWrite, null, invalidRequest, + selectTag.editTextTagID.getText().toString(), 1, 32, + selectTag.editTextAccessPassword.getText().toString(), Integer.valueOf(selectTag.editTextAccessAntennaPower.getText().toString()), RfidReaderChipData.HostCommands.CMD_18K6CWRITE, + -1, -1, false, checkProtectedBoxBeforeAccess(), + null, null, null, null, null); + accessTask.execute(); + mHandler.removeCallbacks(updateRunnable); + iRunType = 6; mHandler.post(updateRunnable); + } + boolean checkProtectedBoxBeforeAccess() { + if (checkBoxProtectSelect.isChecked()) { + MainActivity.csLibrary4A.appendToLog("Going to setSelectCriteria disable"); + MainActivity.csLibrary4A.setSelectCriteriaDisable(-1); + MainActivity.csLibrary4A.appendToLog("Going to setSelectCriteria"); + MainActivity.csLibrary4A.setSelectCriteria(-1, true, 4, 0, 3, 0, selectTag.editTextAccessPassword.getText().toString(), false); + } + return checkBoxProtectSelect.isChecked(); + } boolean isRfidConnectionValid() { boolean bValue = false; if (MainActivity.csLibrary4A.isBleConnected() == false) { @@ -197,38 +533,106 @@ boolean set_before_access(int accBank, int accOffset, int accSize) { return true; } + boolean isRunningAccessTask() { + boolean retValue = false; + if (accessTask != null) { + if (accessTask.getStatus() != AsyncTask.Status.FINISHED) retValue = true; + } + return retValue; + } private final Runnable updateRunnable = new Runnable() { @Override public void run() { if (accessTask == null && accessTask1 == null) { MainActivity.csLibrary4A.appendToLog("updateRunnable(): null AccessTask"); - } else if (accessTask.getStatus() == AsyncTask.Status.FINISHED && accessTask != null && accessTask.accessResult != null) { - if (iRunType == 1) textViewAuthenticatedResult.setText(accessTask.accessResult); + } else if (accessTask != null && accessTask.getStatus() == AsyncTask.Status.FINISHED) { + MainActivity.csLibrary4A.appendToLog("accessResult = " + accessTask.accessResult + " with iRunType = " + iRunType); + if (accessTask.accessResult == null) { + MainActivity.csLibrary4A.appendToLog("updateRunnable(): accessTask is finished without result but with error = " + accessTask.resultError); + if (unprotecting > 0) stopProtectResuming(); + } else if (iRunType == 1) textViewAuthenticatedResult.setText(accessTask.accessResult); else if (iRunType == 2) textViewAutotuneValue.setText(accessTask.accessResult); - else if (iRunType == 3) { - textViewAutotuneConfiguration.setText(accessTask.accessResult); - textViewAutotuneValue = (TextView) getActivity().findViewById(R.id.accessImpinjAutoTuneValue); - int iValue = Integer.valueOf(accessTask.accessResult.substring(accessTask.accessResult.length()-1, accessTask.accessResult.length()), 16); - MainActivity.csLibrary4A.appendToLog(String.format("accessResult = %s, iValue = 0x%02X", accessTask.accessResult, iValue)); + else if (iRunType == 3) textViewProtectValue.setText(accessTask.accessResult); + else if (iRunType == 4) textViewEpc128Value.setText(accessTask.accessResult); + else if (iRunType == 5) { + textViewConfiguration.setText(accessTask.accessResult); + int iValue = Integer.valueOf(accessTask.accessResult.substring(accessTask.accessResult.length()-2, accessTask.accessResult.length()), 16); + MainActivity.csLibrary4A.appendToLog("updateRunnable(): " + String.format("accessResult = %s, iValue = 0x%02X", accessTask.accessResult, iValue)); + + if ((iValue & 0x01) != 0) checkBoxAutoTuneDisable.setChecked(true); else checkBoxAutoTuneDisable.setChecked(false); + checkBoxAutoTuneDisable.setEnabled(true); + + if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m775.ordinal() || + spinnerTagSelect.getSelectedItemPosition() == impinjTag.m780.ordinal() || + spinnerTagSelect.getSelectedItemPosition() == impinjTag.m830.ordinal() || + spinnerTagSelect.getSelectedItemPosition() == impinjTag.m770.ordinal() || + spinnerTagSelect.getSelectedItemPosition() == impinjTag.m730.ordinal()) { + if ((iValue & 0x02) != 0) checkBoxProtect.setChecked(true); else checkBoxProtect.setChecked(false); + checkBoxProtect.setEnabled(true); + } + int iBitCompared = 0x02; - if (checkBoxTagSecurity.isChecked()) iBitCompared = 0x04; + if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m775.ordinal()) iBitCompared = 0x04; + else if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m780.ordinal()) iBitCompared = 0x04; + else if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m770.ordinal()) iBitCompared = 0x04; + else if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m830.ordinal()) iBitCompared = 0x10; + else if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m730.ordinal()) iBitCompared = 0x10; if ((iValue & iBitCompared) != 0) checkBoxShortRange.setChecked(true); else checkBoxShortRange.setChecked(false); checkBoxShortRange.setEnabled(true); - if ((iValue & 0x01) != 0) checkBoxAutoTuneDisable.setChecked(true); else checkBoxAutoTuneDisable.setChecked(false); - checkBoxAutoTuneDisable.setEnabled(true); + + iBitCompared = 0; + if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m830.ordinal()) iBitCompared = 0x08; + else if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.monza_R6P.ordinal()) iBitCompared = 0x04; + if (iBitCompared != 0) { + if ((iValue & iBitCompared) != 0) checkBoxMemorySelect.setChecked(true); else checkBoxMemorySelect.setChecked(false); + checkBoxMemorySelect.setEnabled(true); + } + + if (spinnerTagSelect.getSelectedItemPosition() == impinjTag.m775.ordinal() || + spinnerTagSelect.getSelectedItemPosition() == impinjTag.m780.ordinal() || + spinnerTagSelect.getSelectedItemPosition() == impinjTag.m770.ordinal()) { + if ((iValue & 0x08) != 0) checkBoxUnkillable.setChecked(true); + else checkBoxUnkillable.setChecked(false); + checkBoxUnkillable.setEnabled(true); + } + + if (unprotecting > 0) { + textViewProtectValue.setText(accessTask.accessTagEpc); + textViewProtectNormalValue.setText("" + unprotecting); + unprotecting++; + if (checkBoxProtect.isChecked()) { + selectTag.editTextTagID.setText(accessTask.accessTagEpc); + selectTag.spinnerSelectBank.setSelection(0); + checkBoxProtect.setChecked(false); + MainActivity.csLibrary4A.appendToLog("updateRunnable(): startConfigWrite"); + startConfigWrite(); + } else { + MainActivity.csLibrary4A.appendToLog("updateRunnable(): startConfigRead"); + startConfigRead(); + } + } } - else if (iRunType == 4) { - MainActivity.csLibrary4A.appendToLog("accessResult = " + accessTask.accessResult + ", accessError = " + accessTask.resultError); + else if (iRunType == 6) { + MainActivity.csLibrary4A.appendToLog("updateRunnable(): accessResult = " + accessTask.accessResult + ", accessError = " + accessTask.resultError); if (accessTask.resultError.trim().length() != 0) Toast.makeText(MainActivity.mContext, accessTask.resultError, Toast.LENGTH_SHORT).show(); - else if (accessTask.accessResult.length() == 0) textViewAutotuneConfiguration.setText(stringNewAutoTuneConfig); + else if (accessTask.accessResult.length() == 0) textViewConfiguration.setText(stringNewAutoTuneConfig); + + if (unprotecting > 0) stopProtectResuming(); } - } else { - MainActivity.csLibrary4A.appendToLog("updateRunnable(): rerun after 100ms"); + else if (iRunType == 7) textViewUserValue.setText(accessTask.accessResult); + else MainActivity.csLibrary4A.appendToLog("updateRunnable(): No procedure for iRunType == " + iRunType); + } else if (accessTask1 != null && accessTask1.isResultReady()) { + long duration = SystemClock.elapsedRealtime() - msStartTime; + textViewRunTime.setText(String.format("Run time: %.2f sec", ((float) duration / 1000))); MainActivity.csLibrary4A.appendToLog("StreamOut: End of running time"); + MainActivity.csLibrary4A.appendToLog("access1Result = " + accessTask1.getResult() + " with iRunType = " + iRunType); + if (iRunType == 7) textViewUserValue.setText(accessTask1.getResult()); + else MainActivity.csLibrary4A.appendToLog("updateRunnable(): No procedure for iRunType == " + iRunType); + }else { +// MainActivity.csLibrary4A.appendToLog("updateRunnable(): rerun after 100ms with accessTask.getStatus() = " + accessTask.getStatus().toString()); mHandler.postDelayed(updateRunnable, 100); } } }; - class Data2Restore { int iQuerySession; int iQueryTarget; @@ -265,15 +669,12 @@ public void setUserVisibleHint(boolean isVisibleToUser) { MainActivity.csLibrary4A.setTagGroup(MainActivity.csLibrary4A.getQuerySelect(), 1, 0); MainActivity.csLibrary4A.setTagDelay((byte)0); MainActivity.csLibrary4A.setAntennaDwell(2000); - iValue |= 0x10; } else MainActivity.csLibrary4A.setTagGroup(MainActivity.csLibrary4A.getQuerySelect(), 0, 2); if (checkBoxFastId.isChecked()) iValue |= 0x20; - if (checkBoxTagSecurity.isChecked()) iValue |= 0x40; - MainActivity.csLibrary4A.appendToLog("autoTune is " + (checkBoxTagAutotune.isChecked() ? "checked" : "open")); - if (checkBoxTagAutotune.isChecked()) iValue |= 0x80; - MainActivity.csLibrary4A.appendToLog(String.format("HelloK: iValue = 0x%02X", iValue)); + if (spinnerTagSelect.getSelectedItemPosition() != impinjTag.others.ordinal()) iValue |= (spinnerTagSelect.getSelectedItemPosition() + 1); MainActivity.mDid = "E28011" + String.format("%02X", iValue); + MainActivity.csLibrary4A.appendToLog(String.format("HelloK: iValue = 0x%02X, mDid = %s", iValue, MainActivity.mDid)); MainActivity.csLibrary4A.setImpinJExtension(checkBoxTagFocus.isChecked(), checkBoxFastId.isChecked()); } userVisibleHint = false; @@ -291,7 +692,10 @@ void setupTagID() { if (tagSelected != null) { if (tagSelected.getSelected() == true) { bSelected = true; - if (selectTag != null) selectTag.editTextTagID.setText(tagSelected.getAddress()); + if (selectTag != null) { + selectTag.editTextTagID.setText(tagSelected.getAddress()); + selectTag.spinnerSelectBank.setSelection(0); + } String stringDetail = tagSelected.getDetails(); int indexUser = stringDetail.indexOf("USER="); diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessLedTagFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessKilowayFragment.java similarity index 89% rename from app/src/main/java/com/csl/cs108ademoapp/fragments/AccessLedTagFragment.java rename to app/src/main/java/com/csl/cs108ademoapp/fragments/AccessKilowayFragment.java index 787a488..d20e028 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessLedTagFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessKilowayFragment.java @@ -15,15 +15,15 @@ import com.csl.cs108ademoapp.AccessTask; import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.ReaderDevice; +import com.csl.cslibrary4a.RfidReaderChipData; -public class AccessLedTagFragment extends CommonFragment { +public class AccessKilowayFragment extends CommonFragment { final boolean DEBUG = true; EditText editTextRWTagID, editTextaccessRWAntennaPower; TextView textViewOk; - CheckBox checkBox; + CheckBox checkBoxRepeat, checkBox; TextView textView; private Button buttonRead; @@ -37,21 +37,22 @@ enum ReadWriteTypes { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState, false); - return inflater.inflate(R.layout.fragment_access_ledtag, container, false); + return inflater.inflate(R.layout.fragment_access_kiloway, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - editTextRWTagID = (EditText) getActivity().findViewById(R.id.accessLEDTagID); + editTextRWTagID = (EditText) getActivity().findViewById(R.id.accessKilowayID); editTextaccessRWAntennaPower = (EditText) getActivity().findViewById(R.id.accessLEDAntennaPower); - textViewOk = (TextView) getActivity().findViewById(R.id.accessLedTagResultOK); - checkBox = (CheckBox) getActivity().findViewById(R.id.accessLedTagResultTitle); - textView = (TextView) getActivity().findViewById(R.id.accessLedTagResult); + checkBoxRepeat = (CheckBox) getActivity().findViewById(R.id.accessKilowayRepeat); + textViewOk = (TextView) getActivity().findViewById(R.id.accessKilowayResultOK); + checkBox = (CheckBox) getActivity().findViewById(R.id.accessKilowayResultTitle); + textView = (TextView) getActivity().findViewById(R.id.accessKilowayResult); - buttonRead = (Button) getActivity().findViewById(R.id.accessMNReadButton); + buttonRead = (Button) getActivity().findViewById(R.id.accessKilowayStartButton); buttonRead.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -88,11 +89,13 @@ public void setUserVisibleHint(boolean isVisibleToUser) { if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED) == false) return; if(getUserVisibleHint()) { setupTagID(); - } + } else checkBoxRepeat.setChecked(false); } - public AccessLedTagFragment() { + boolean isLongjing = false; + public AccessKilowayFragment(boolean isLongjing) { super("AccessLedTagFragment"); + this.isLongjing = isLongjing; } void setupTagID() { @@ -136,16 +139,15 @@ public void run() { boolean invalid = processTickItems(); MainActivity.csLibrary4A.appendToLog("AccessLedTagFragment(): processTickItems with invalid = " + invalid + ", bankProcessing = " + bankProcessing + ", checkProcessing = " + checkProcessing); /// if (bankProcessing++ != 0 && invalid == true) { - CheckBox checkBox = (CheckBox) getActivity().findViewById(R.id.accessLedTagRepeat); rerunRequest = true; - if (checkBox.isChecked()) { bankProcessing = 0; checkProcessing = 0; } + if (checkBoxRepeat != null && checkBoxRepeat.isChecked()) { bankProcessing = 0; checkProcessing = 0; } else rerunRequest = false; } else { accessTask = new AccessTask( buttonRead, invalid, editTextRWTagID.getText().toString(), 1, 32, - "00000000", Integer.valueOf(editTextaccessRWAntennaPower.getText().toString()), Cs108Library4A.HostCommands.CMD_18K6CREAD, - true, null); + "00000000", Integer.valueOf(editTextaccessRWAntennaPower.getText().toString()), RfidReaderChipData.HostCommands.CMD_18K6CREAD, + false, null); accessTask.execute(); rerunRequest = true; MainActivity.csLibrary4A.appendToLog("AccessLedTagFragment(): accessTask is created"); /// @@ -192,7 +194,11 @@ boolean processTickItems() { MainActivity.csLibrary4A.appendToLog("1: invalidRequest1 = " + invalidRequest1); if (checkBox.isChecked() == true && checkProcessing < 1) { - accBank = 2; accSize = 2; accOffset = 0; + accBank = 0; accSize = 1; accOffset = 4; + if (isLongjing) { + accBank = 3; accOffset = 112; + } + readWriteTypes = ReadWriteTypes.READVALUE; checkProcessing = 1; textViewOk.setText(""); textView.setText(""); } else { diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessMicronFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessMicronFragment.java index 9c66036..b341bcc 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessMicronFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessMicronFragment.java @@ -21,8 +21,8 @@ import com.csl.cs108ademoapp.GenericTextWatcher; import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.ReaderDevice; +import com.csl.cslibrary4a.RfidReaderChipData; public class AccessMicronFragment extends CommonFragment { final boolean DEBUG = true; @@ -399,8 +399,8 @@ else if (taskRequest) { selectMask, selectBank, selectOffset, editTextAccessRWAccPassword.getText().toString(), Integer.valueOf(editTextaccessRWAntennaPower.getText().toString()), - (operationRead ? Cs108Library4A.HostCommands.CMD_18K6CREAD: Cs108Library4A.HostCommands.CMD_18K6CWRITE), - 0, 0, true, + (operationRead ? RfidReaderChipData.HostCommands.CMD_18K6CREAD: RfidReaderChipData.HostCommands.CMD_18K6CWRITE), + 0, 0, true, bSkipClearPrefilter, null, null, null, null, null); accessTask.execute(); rerunRequest = true; @@ -545,8 +545,7 @@ boolean processResult() { else { if (changedSelectIndex) { changedSelectIndex = false; MainActivity.selectFor = 0; - MainActivity.csLibrary4A.setSelectCriteriaDisable(2); - MainActivity.csLibrary4A.setSelectCriteriaDisable(1); + MainActivity.csLibrary4A.setSelectCriteriaDisable(-1); } accessResult = accessTask.accessResult; if (accessResult == null) { @@ -604,11 +603,13 @@ boolean processResult() { } } + boolean bSkipClearPrefilter = false; boolean processTickItems() { boolean invalidRequest1 = false; int accBank = 0, accSize = 0, accOffset = 0; String writeData = ""; + bSkipClearPrefilter = false; if (editTextRWTagID.getText().toString().length() == 0) invalidRequest1 = true; else if (checkBoxConfig.isChecked() == true && checkProcessing < 1 && operationRead) { accBank = 2; accOffset = 0; accSize = 2; readWriteTypes = ReadWriteTypes.MODELCODE; checkProcessing = 1; @@ -626,14 +627,18 @@ else if (checkBoxConfig.isChecked() == true && checkProcessing < 1 && operationR int offset = 0xA0; if (modelCode == 3) offset = 0xD0; else if (modelCode == 5) offset = 0x3D0; - MainActivity.csLibrary4A.setSelectCriteria(1, true, 4, 5, selectHold,3, offset, "3F"); + bSkipClearPrefilter = true; + MainActivity.csLibrary4A.setSelectCriteriaDisable(-1); + MainActivity.csLibrary4A.setSelectCriteria(-1, true, 4, 5, selectHold,3, offset, "1F"); changedSelectIndex = true; accBank = 0; accOffset = 13; if (modelCode == 1) { accBank = 3; accOffset = 9; } accSize = 1; readWriteTypes = ReadWriteTypes.RSSICODE; checkProcessing = 4; textViewRssiCodeOk.setText(""); textViewRssiCode.setText(""); } else if (checkBoxTemperatureCode.isChecked() == true && (modelCode == 3 || modelCode == 5) && checkProcessing < 5 && operationRead) { - if (modelCode == 3) MainActivity.csLibrary4A.setSelectCriteria(1, true, 4, 2, 0,3, 0xE0, ""); - else MainActivity.csLibrary4A.setSelectCriteria(1, true, 4, 5, selectHold,3, 0x3B0, "00"); + bSkipClearPrefilter = true; + MainActivity.csLibrary4A.setSelectCriteriaDisable(-1); + if (modelCode == 3) MainActivity.csLibrary4A.setSelectCriteria(-1, true, 4, 2, 0,3, 0xE0, ""); + else MainActivity.csLibrary4A.setSelectCriteria(-1, true, 4, 5, selectHold,3, 0x3B0, "00"); changedSelectIndex = true; accBank = 0; accOffset = 14; accSize = 1; readWriteTypes = ReadWriteTypes.TEMPERATURECODE; checkProcessing = 5; textViewTemperatureCodeOk.setText(""); textViewTemperatureCode.setText(""); diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessReadWriteFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessReadWriteFragment.java index df250b6..244ed75 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessReadWriteFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessReadWriteFragment.java @@ -24,8 +24,8 @@ import com.csl.cs108ademoapp.SelectTag; import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.ReaderDevice; +import com.csl.cslibrary4a.RfidReaderChipData; import static com.csl.cs108ademoapp.MainActivity.mContext; import static com.csl.cs108ademoapp.MainActivity.tagSelected; @@ -65,7 +65,7 @@ public void onActivityCreated(Bundle savedInstanceState) { actionBar.setIcon(R.drawable.dl_access); actionBar.setTitle(R.string.title_activity_readwrite); - selectTag = new SelectTag((Activity)getActivity ()); + selectTag = new SelectTag((Activity)getActivity(), 0); spinnerSelectBank = (Spinner) getActivity().findViewById(R.id.selectMemoryBank); ArrayAdapter targetAdapter = ArrayAdapter.createFromResource(getActivity(), R.array.read_memoryBank_options, R.layout.custom_spinner_layout); @@ -227,7 +227,7 @@ void updatePCEpc(String strPCValue, String strEpcValue) { String strTemp = editTextAccessRWEpc.getText().toString(); if (selectTag.editTextTagID.getText().toString().matches(strTemp) == false) { // needPopup = true; - tagSelected.setAddress(strEpcValue); if (spinnerSelectBank.getSelectedItemPosition() == 0) selectTag.editTextTagID.setText(strTemp); + tagSelected.setAddress(strTemp); if (spinnerSelectBank.getSelectedItemPosition() == 0) selectTag.editTextTagID.setText(strTemp); } } } @@ -287,7 +287,7 @@ else if (accessTask == null || accessTask.isResultReady()) { selectTag.editTextTagID.getText().toString(), spinnerSelectBank.getSelectedItemPosition() + 1, selectOffset, editTextAccessRWAccPassword.getText().toString(), Integer.valueOf(editTextaccessRWAntennaPower.getText().toString()), - (operationRead ? Cs108Library4A.HostCommands.CMD_18K6CREAD: Cs108Library4A.HostCommands.CMD_18K6CWRITE), updateRunnable); + (operationRead ? RfidReaderChipData.HostCommands.CMD_18K6CREAD: RfidReaderChipData.HostCommands.CMD_18K6CWRITE), updateRunnable); accessTask.execute(); rerunRequest = true; } diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessReadWriteUserFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessReadWriteUserFragment.java index 5cf9fb9..2170453 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessReadWriteUserFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessReadWriteUserFragment.java @@ -25,8 +25,8 @@ import com.csl.cs108ademoapp.SelectTag; import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.ReaderDevice; +import com.csl.cslibrary4a.RfidReaderChipData; import static com.csl.cs108ademoapp.MainActivity.mContext; import static com.csl.cs108ademoapp.MainActivity.tagSelected; @@ -66,7 +66,7 @@ public void onActivityCreated(Bundle savedInstanceState) { actionBar.setIcon(R.drawable.dl_access); actionBar.setTitle(R.string.title_activity_readWriteUser); - selectTag = new SelectTag((Activity)getActivity ()); + selectTag = new SelectTag((Activity)getActivity(), 0); spinnerSelectBank = (Spinner) getActivity().findViewById(R.id.selectMemoryBank); ArrayAdapter targetAdapter = ArrayAdapter.createFromResource(getActivity(), R.array.read_memoryBank_options, R.layout.custom_spinner_layout); targetAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); @@ -269,7 +269,6 @@ void startAccessTask() { msStartTime = SystemClock.elapsedRealtime(); textViewRunTime.setText(""); MainActivity.csLibrary4A.appendToLog("StreamOut: Start of running time"); updating = true; bankProcessing = 0; restartAccessBank = -1; -// MainActivity.mCs108Library4a. mHandler.removeCallbacks(updateRunnable); mHandler.post(updateRunnable); } @@ -305,7 +304,7 @@ else if (accessTask == null || accessTask.isResultReady()) { selectTag.editTextTagID.getText().toString(), spinnerSelectBank.getSelectedItemPosition() + 1, selectOffset, editTextAccessRWAccPassword.getText().toString(), Integer.valueOf(editTextaccessRWAntennaPower.getText().toString()), - (operationRead ? Cs108Library4A.HostCommands.CMD_18K6CREAD: Cs108Library4A.HostCommands.CMD_18K6CWRITE), updateRunnable); + (operationRead ? RfidReaderChipData.HostCommands.CMD_18K6CREAD: RfidReaderChipData.HostCommands.CMD_18K6CWRITE), updateRunnable); accessTask.execute(); rerunRequest = true; } diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessRegisterFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessRegisterFragment.java index c606b2c..fa73a7b 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessRegisterFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessRegisterFragment.java @@ -29,8 +29,10 @@ import com.csl.cs108ademoapp.InventoryRfidTask; import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.NotificationConnector; +import com.csl.cslibrary4a.ReaderDevice; +import com.csl.cslibrary4a.RfidReaderChipData; +import com.csl.cslibrary4a.Utility; import java.util.ArrayList; @@ -38,7 +40,7 @@ public class AccessRegisterFragment extends CommonFragment { CustomPopupWindow customPopupWindow; TableRow tableRowSelectMask, tableRowSelectBank; - Spinner spinnerSelectBank, spinnerAccessBank, spinnerWriteDataType; + Spinner spinnerSelectBank, spinnerAccessBank, spinnerWriteEpcClass, spinnerWriteDataType; EditText editTextSelectMask, editTextSelectPopulation, editTextPassword, editTextAntennaPower, editTextWriteData, editTextWriteLength; CheckBox checkBoxWriteLengthEnable; TextView textViewSelectedTags, textViewWriteCount, textViewRunTime, textViewTagGot, textViewVoltageLevel; @@ -106,6 +108,12 @@ public void onNothingSelected(AdapterView parent) { targetAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinnerAccessBank.setAdapter(targetAdapter); + spinnerWriteEpcClass = (Spinner) getActivity().findViewById(R.id.registerWriteEpcClass); + targetAdapter = ArrayAdapter.createFromResource(getActivity(), R.array.write_Epc_options, R.layout.custom_spinner_layout); + targetAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + spinnerWriteEpcClass.setAdapter(targetAdapter); + spinnerWriteEpcClass.setEnabled(false); + spinnerWriteDataType = (Spinner) getActivity().findViewById(R.id.registerWriteDataType); targetAdapter = ArrayAdapter.createFromResource(getActivity(), R.array.write_data_options, R.layout.custom_spinner_layout); targetAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); @@ -215,7 +223,7 @@ public void onClick(View view) { long pwrlevel = Integer.parseInt(editTextAntennaPower.getText().toString()); MainActivity.csLibrary4A.setTagRead(0); MainActivity.csLibrary4A.setSelectedTag(strTagId, selectBank, pwrlevel); - MainActivity.csLibrary4A.startOperation(Cs108Library4A.OperationTypes.TAG_INVENTORY); + MainActivity.csLibrary4A.startOperation(RfidReaderChipData.OperationTypes.TAG_INVENTORY); inventoryRfidTask = new InventoryRfidTask(); inventoryRfidTask.execute(); MainActivity.sharedObjects.serviceArrayList.clear(); epcArrayList.clear(); @@ -224,6 +232,25 @@ public void onClick(View view) { } }); + Button buttonConvert = (Button) getActivity().findViewById(R.id.registerWriteConvert); + buttonConvert.setOnClickListener(new View.OnClickListener() { + EditText editTextWriteEpcFilter = (EditText) getActivity().findViewById(R.id.registerWriteEpcFilter); + EditText editTextWriteEpcCompanyPrefix = (EditText) getActivity().findViewById(R.id.registerWriteEpcCompanyPrefix); + EditText editTextWriteEpcItemReference = (EditText) getActivity().findViewById(R.id.registerWriteEpcItemReference); + EditText editTextWriteEpcSerial = (EditText) getActivity().findViewById(R.id.registerWriteEpcSerial); + @Override + public void onClick(View view) { + String strValue = MainActivity.csLibrary4A.getEpc4upcSerial( + Utility.EpcClass.values()[spinnerWriteEpcClass.getSelectedItemPosition()], + editTextWriteEpcFilter.getText().toString(), + editTextWriteEpcCompanyPrefix.getText().toString(), + editTextWriteEpcItemReference.getText().toString(), + editTextWriteEpcSerial.getText().toString() + ); + if (strValue != null) editTextWriteData.setText(strValue); + } + }); + buttonReadBar = (Button) getActivity().findViewById(R.id.registerReadBarButton); buttonReadBar.setOnClickListener(new View.OnClickListener() { @Override @@ -320,7 +347,7 @@ public AccessRegisterFragment() { } void setNotificationListener() { - MainActivity.csLibrary4A.setNotificationListener(new Cs108Library4A.NotificationListener() { + MainActivity.csLibrary4A.setNotificationListener(new NotificationConnector.NotificationListener() { @Override public void onChange() { MainActivity.csLibrary4A.appendToLog("TRIGGER key is pressed."); @@ -636,9 +663,9 @@ else if (MainActivity.csLibrary4A.setAccessCount(writeLength) == false) { + ", password = " + password + ", power = " + antennaPower + ", repeatCount = " + repeatCount + ", resetCount = " + resetCount); accessTask = new AccessTask(buttonWrite, textViewWriteCount, invalidRequest1, selectMask, selectBank1, selectOffset1, - password, antennaPower, Cs108Library4A.HostCommands.CMD_18K6CWRITE, selectQValue, repeatCount, resetCount, - textViewRunTime, textViewTagGot, textViewVoltageLevel, - textViewYield, textViewTotal); + password, antennaPower, RfidReaderChipData.HostCommands.CMD_18K6CWRITE, + selectQValue, repeatCount, resetCount, false, + textViewRunTime, textViewTagGot, textViewVoltageLevel, textViewYield, textViewTotal); accessTask.execute(); resetCount = false; return invalidRequest1; diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessSecurityKillFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessSecurityKillFragment.java index 7e5762e..587db27 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessSecurityKillFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessSecurityKillFragment.java @@ -13,8 +13,9 @@ import com.csl.cs108ademoapp.GenericTextWatcher; import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.NotificationConnector; +import com.csl.cslibrary4a.ReaderDevice; +import com.csl.cslibrary4a.RfidReaderChipData; public class AccessSecurityKillFragment extends CommonFragment { private EditText editTextTagID, editTextPassword, editTextAntennaPower; @@ -106,7 +107,7 @@ public AccessSecurityKillFragment() { } void setNotificationListener() { - MainActivity.csLibrary4A.setNotificationListener(new Cs108Library4A.NotificationListener() { + MainActivity.csLibrary4A.setNotificationListener(new NotificationConnector.NotificationListener() { @Override public void onChange() { MainActivity.csLibrary4A.appendToLog("TRIGGER key is pressed."); @@ -121,7 +122,11 @@ void startAccessTask() { String strTagID = editTextTagID.getText().toString(); String strPassword = editTextPassword.getText().toString(); int powerLevel = Integer.valueOf(editTextAntennaPower.getText().toString()); - accessTask = new AccessTask(button, null, invalidRequest, strTagID, 1, 32, strPassword, powerLevel, Cs108Library4A.HostCommands.CMD_18K6CKILL, 0, 0, true, null, null, null, null, null); + accessTask = new AccessTask(button, null, invalidRequest, + strTagID, 1, 32, + strPassword, powerLevel, RfidReaderChipData.HostCommands.CMD_18K6CKILL, + 0, 0, true, false, + null, null, null, null, null); accessTask.execute(); } } diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessSecurityLockFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessSecurityLockFragment.java index 5968a81..d25260b 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessSecurityLockFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessSecurityLockFragment.java @@ -16,8 +16,9 @@ import com.csl.cs108ademoapp.GenericTextWatcher; import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.NotificationConnector; +import com.csl.cslibrary4a.ReaderDevice; +import com.csl.cslibrary4a.RfidReaderChipData; public class AccessSecurityLockFragment extends CommonFragment { private EditText editTextTagID, editTextPassword, editTextAntennaPower; @@ -131,7 +132,7 @@ public AccessSecurityLockFragment() { } void setNotificationListener() { - MainActivity.csLibrary4A.setNotificationListener(new Cs108Library4A.NotificationListener() { + MainActivity.csLibrary4A.setNotificationListener(new NotificationConnector.NotificationListener() { @Override public void onChange() { MainActivity.csLibrary4A.appendToLog("TRIGGER key is pressed."); @@ -186,7 +187,11 @@ void startAccessTask() { invalidRequest = true; } } - accessTask = new AccessTask(button, null, invalidRequest, strTagID, 1, 32, strPassword, powerLevel, Cs108Library4A.HostCommands.CMD_18K6CLOCK, 0, 0, true, null, null, null, null, null); + accessTask = new AccessTask(button, null, invalidRequest, + strTagID, 1, 32, + strPassword, powerLevel, RfidReaderChipData.HostCommands.CMD_18K6CLOCK, + 0, 0, true, false, + null, null, null, null, null); accessTask.execute(); } } diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessUcode8Fragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessUcode8Fragment.java index b4870d3..4e5db17 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessUcode8Fragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessUcode8Fragment.java @@ -4,14 +4,23 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.LinearLayout; import android.widget.RadioButton; +import android.widget.Spinner; import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; +import com.google.android.material.tabs.TabLayout; public class AccessUcode8Fragment extends CommonFragment { final boolean DEBUG = true; + Spinner spinnerTagSelect; RadioButton radioButtonSelectEpc, radioButtonSelectEpcTid, radioButtonSelectEpcBrand, radioButtonSelectEpcBrandTidCheck; + enum nxpTag { + ucode8, ucodeDNA, others + } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -23,10 +32,45 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); + spinnerTagSelect = (Spinner) getActivity().findViewById(R.id.accessNxpTagSelect); + ArrayAdapter targetAdapter1 = ArrayAdapter.createFromResource(getActivity(), R.array.nxp_options, R.layout.custom_spinner_layout); + targetAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + spinnerTagSelect.setAdapter(targetAdapter1); spinnerTagSelect.setSelection(0); + spinnerTagSelect.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parentView, View selectedItemView, int position, long id) { + TabLayout tabLayout = (TabLayout) getActivity().findViewById(R.id.OperationsTabLayout); + TabLayout.TabView tabView = tabLayout.getTabAt(2).view; tabView.setVisibility(View.GONE); + TabLayout.TabView tabViewUntrace = tabLayout.getTabAt(3).view; tabViewUntrace.setVisibility(View.GONE); + LinearLayout layout = (LinearLayout) getActivity().findViewById(R.id.accessNxpUcode8Select); layout.setVisibility(View.GONE); + if (position == nxpTag.ucode8.ordinal()) { + MainActivity.mDid = "E2806894"; + if (MainActivity.csLibrary4A.get98XX() == 0) tabViewUntrace.setVisibility(View.VISIBLE); + layout.setVisibility(View.VISIBLE); + } else if (position == nxpTag.ucodeDNA.ordinal()) { + MainActivity.mDid = "E2C06"; + tabView.setVisibility(View.VISIBLE); + if (MainActivity.csLibrary4A.get98XX() == 0) tabViewUntrace.setVisibility(View.VISIBLE); + } else MainActivity.mDid = "E2806"; + MainActivity.csLibrary4A.appendToLog("new mDid = " + MainActivity.mDid); + } + + @Override + public void onNothingSelected(AdapterView parentView) { + // your code here + } + + }); + radioButtonSelectEpc = (RadioButton) getActivity().findViewById(R.id.accessUC8SelectEpc); radioButtonSelectEpcTid = (RadioButton) getActivity().findViewById(R.id.accessUC8SelectEpcTid); - radioButtonSelectEpcBrand = (RadioButton) getActivity().findViewById(R.id.accessUC8SelectEpcBrand); radioButtonSelectEpcBrand.setChecked(true); + radioButtonSelectEpcBrand = (RadioButton) getActivity().findViewById(R.id.accessUC8SelectEpcBrand); radioButtonSelectEpcBrandTidCheck = (RadioButton) getActivity().findViewById(R.id.accessUC8SelectEpcBrandTidCheck); + if (MainActivity.csLibrary4A.get98XX() == 2) { + radioButtonSelectEpc.setChecked(true); + radioButtonSelectEpcBrand.setVisibility(View.GONE); + radioButtonSelectEpcBrandTidCheck.setVisibility(View.GONE); + } else radioButtonSelectEpcBrand.setChecked(true); MainActivity.csLibrary4A.setSameCheck(false); } @@ -45,22 +89,25 @@ public void setUserVisibleHint(boolean isVisibleToUser) { MainActivity.csLibrary4A.appendToLog("AccessUcode8Fragment is now VISIBLE"); // setNotificationListener(); } else { - if (radioButtonSelectEpc != null && radioButtonSelectEpcTid != null && radioButtonSelectEpcBrand != null && radioButtonSelectEpcBrandTidCheck != null) { - if (radioButtonSelectEpc.isChecked()) { - MainActivity.csLibrary4A.appendToLog("Selected EPC"); - MainActivity.mDid = "E2806894A"; - } - if (radioButtonSelectEpcTid.isChecked()) { - MainActivity.csLibrary4A.appendToLog("Selected EPC+TID"); - MainActivity.mDid = "E2806894B"; - } - if (radioButtonSelectEpcBrand.isChecked()) { - MainActivity.csLibrary4A.appendToLog("Selected EPC+BRAND"); - MainActivity.mDid = "E2806894C"; - } - if (radioButtonSelectEpcBrandTidCheck.isChecked()) { - MainActivity.csLibrary4A.appendToLog("Selected EPC+BRAND"); - MainActivity.mDid = "E2806894d"; + if (spinnerTagSelect != null && spinnerTagSelect.getSelectedItemPosition() == nxpTag.ucode8.ordinal()) { + if (radioButtonSelectEpc != null && radioButtonSelectEpcTid != null && radioButtonSelectEpcBrand != null && radioButtonSelectEpcBrandTidCheck != null) { + if (radioButtonSelectEpc.isChecked()) { + MainActivity.csLibrary4A.appendToLog("Selected EPC"); + MainActivity.mDid = "E2806894A"; + } + if (radioButtonSelectEpcTid.isChecked()) { + MainActivity.csLibrary4A.appendToLog("Selected EPC+TID"); + MainActivity.mDid = "E2806894B"; + } + if (radioButtonSelectEpcBrand.isChecked()) { + MainActivity.csLibrary4A.appendToLog("Selected EPC+BRAND"); + MainActivity.mDid = "E2806894C"; + } + if (radioButtonSelectEpcBrandTidCheck.isChecked()) { + MainActivity.csLibrary4A.appendToLog("Selected EPC+BRAND"); + MainActivity.mDid = "E2806894d"; + } + MainActivity.csLibrary4A.appendToLog("newDid 1 = " + MainActivity.mDid); } } userVisibleHint = false; diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessUcodeFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessUcodeFragment.java index 8a0787f..832d4af 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessUcodeFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessUcodeFragment.java @@ -1,5 +1,9 @@ + package com.csl.cs108ademoapp.fragments; +import static com.csl.cs108ademoapp.MainActivity.csLibrary4A; + +import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.view.LayoutInflater; @@ -9,6 +13,7 @@ import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; +import android.widget.LinearLayout; import android.widget.Spinner; import android.widget.TableRow; import android.widget.TextView; @@ -18,8 +23,14 @@ import com.csl.cs108ademoapp.GenericTextWatcher; import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cs108ademoapp.SaveList2ExternalTask; +import com.csl.cs108ademoapp.SelectTag; +import com.csl.cslibrary4a.ReaderDevice; +import com.csl.cslibrary4a.RfidReaderChipData; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; import javax.crypto.Cipher; import javax.crypto.Mac; @@ -28,15 +39,16 @@ public class AccessUcodeFragment extends CommonFragment { final boolean DEBUG = true; int iTagType = -1; - EditText editTextRWTagID, editTextAccessRWAccPassword, editTextaccessRWAntennaPower; + SelectTag selectTag; TextView textViewAesKey0ActivateOk, textViewAesKey1ActivateOk, textViewAesKey0Ok, textViewAesKey1Ok; Spinner spinnerHideTid; CheckBox checkBoxAuthEncryptMode, checkBoxAuthValidMode; CheckBox checkBoxHideEpc, checkBoxHideTid, checkBoxHideUser, checkBoxHideRange; CheckBox checkBoxAesKey0Activate, checkBoxAesKey1Activate, checkBoxAesKey0, checkBoxAesKey1; - EditText editTextAuthKeyId, editTextAuthMsg, editTextAuthProfile, editTextAuthOffset, editTextAuthBlockId, editTextAuthProtMode, editTextEpcSize, editTextAesKey0, editTextAesKey1; - TextView editTextAuthResponse, textViewAuthResponseDecoded, textViewAuthResponseDecodedCustom, editTextAuthResponseEncodedMac; + EditText editTextAuthKeyId, editTextAuthMsg, editTextAuthProfile, editTextAuthOffset, editTextAuthBlockId, editTextAuthProtMode, editTextEpcSize, editTextAesKey0, editTextAesKey1, editTextAuthResponse; + TextView textViewAuthResponseDecoded, textViewAuthResponseDecodedCustom, editTextAuthResponseEncodedMac, textViewImpinjResponse; + EditText editTextAccessUCTid, editTextAccessUCserverImpinj, editTextAccessUCemail, editTextAccessUCpassword; private Button buttonRead, buttonWrite; private Button buttonReadBuffer, buttonTam1, buttonTam2, buttonUntrace, buttonShowEpc; String strShowEpcButtonBackup; @@ -49,6 +61,7 @@ enum ReadWriteTypes { boolean untraceChecked = false; boolean showEpcChecked = false; ReadWriteTypes readWriteTypes; + boolean bImpinJTag = false; private AccessTask accessTask; @@ -63,10 +76,8 @@ public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (MainActivity.mDid != null) if (MainActivity.mDid.contains("E28240")) iTagType = 5; - editTextRWTagID = (EditText) getActivity().findViewById(R.id.accessUCTagID); - editTextAccessRWAccPassword = (EditText) getActivity().findViewById(R.id.accessUCAccPasswordValue); - editTextAccessRWAccPassword.addTextChangedListener(new GenericTextWatcher(editTextAccessRWAccPassword, 8)); - editTextAccessRWAccPassword.setText("00000000"); + selectTag = new SelectTag((Activity)getActivity(), 1); + if (MainActivity.mDid != null && MainActivity.mDid.indexOf("E2801") == 0) bImpinJTag = true; spinnerHideTid = (Spinner) getActivity().findViewById(R.id.accessUCHideTid); ArrayAdapter targetAdapter = ArrayAdapter.createFromResource(getActivity(), R.array.hideTid_options, R.layout.custom_spinner_layout); @@ -92,7 +103,7 @@ public void onActivityCreated(Bundle savedInstanceState) { editTextAuthKeyId = (EditText) getActivity().findViewById(R.id.accessUCAuthKeyId); editTextAuthKeyId.setText(String.valueOf(0)); editTextAuthMsg = (EditText) getActivity().findViewById(R.id.accessUCAuthMsg); - editTextAuthMsg.addTextChangedListener(new GenericTextWatcher(editTextAuthMsg, 20)); + editTextAuthMsg.addTextChangedListener(new GenericTextWatcher(editTextAuthMsg, bImpinJTag ? 12 : 20)); editTextAuthProfile = (EditText) getActivity().findViewById(R.id.accessUCAuthProfile); editTextAuthProfile.setText(String.valueOf(0)); editTextAuthOffset = (EditText) getActivity().findViewById(R.id.accessUCAuthOffset); @@ -113,19 +124,17 @@ public void onActivityCreated(Bundle savedInstanceState) { editTextAuthProtMode.setText(String.valueOf(1)); } - editTextAuthResponse = (TextView) getActivity().findViewById(R.id.accessUCAuthResponse); + editTextAuthResponse = (EditText) getActivity().findViewById(R.id.accessUCAuthResponse); textViewAuthResponseDecoded = (TextView) getActivity().findViewById(R.id.accessUCAuthResponseDecoded); textViewAuthResponseDecodedCustom = (TextView) getActivity().findViewById(R.id.accessUCAuthResponseDecodedCustom); editTextAuthResponseEncodedMac = (TextView) getActivity().findViewById(R.id.accessUCAuthResponseEecodedMac); + textViewImpinjResponse = (TextView) getActivity().findViewById(R.id.accessUCImpinjResponse); editTextEpcSize = (EditText) getActivity().findViewById(R.id.accessUCEpcSize); editTextAesKey0 = (EditText) getActivity().findViewById(R.id.accessUCAesKey0); editTextAesKey0.addTextChangedListener(new GenericTextWatcher(editTextAesKey0, 32)); editTextAesKey1 = (EditText) getActivity().findViewById(R.id.accessUCAesKey1); editTextAesKey1.addTextChangedListener(new GenericTextWatcher(editTextAesKey1, 32)); - editTextaccessRWAntennaPower = (EditText) getActivity().findViewById(R.id.accessUCAntennaPower); - editTextaccessRWAntennaPower.setText(String.valueOf(300)); - buttonRead = (Button) getActivity().findViewById(R.id.accessUCReadButton); if (iTagType == 5) buttonRead.setVisibility(View.GONE); buttonRead.setOnClickListener(new View.OnClickListener() { @@ -183,6 +192,7 @@ public void onClick(View v) { Toast.makeText(MainActivity.mContext, "Rfid is disabled", Toast.LENGTH_SHORT).show(); return; } + MainActivity.csLibrary4A.appendToLog("buttonTam1 is pressed"); authenTam1 = true; authenChecked = true; keyId = Integer.parseInt(editTextAuthKeyId.getText().toString()); strChallenge = editTextAuthMsg.getText().toString(); startAccessTask(); } @@ -199,6 +209,7 @@ public void onClick(View v) { Toast.makeText(MainActivity.mContext, "Rfid is disabled", Toast.LENGTH_SHORT).show(); return; } + MainActivity.csLibrary4A.appendToLog("buttonTam2 is pressed"); authenTam1 = false; authenChecked = true; keyId = Integer.parseInt(editTextAuthKeyId.getText().toString()); strChallenge = editTextAuthMsg.getText().toString(); profile = Integer.parseInt(editTextAuthProfile.getText().toString()); offset = Integer.parseInt(editTextAuthOffset.getText().toString()); @@ -245,11 +256,139 @@ public void onClick(View v) { } }); + TextView textViewWarning = (TextView) getActivity().findViewById(R.id.accessUCWarning); + if (iTagType == 5) textViewWarning.setText("Notice: Xerxes assumes Key0 for Tam1 and Tam 2"); + else textViewWarning.setText("Notice: Ucode assumes Key1 for Tam2"); + MainActivity.csLibrary4A.getAuthenticateReplyLength(); MainActivity.csLibrary4A.getUntraceableEpcLength(); MainActivity.csLibrary4A.setSameCheck(false); + + MainActivity.csLibrary4A.appendToLog("mDid in AccessUcodeFragment = " + MainActivity.mDid); + TextView textView = (TextView) getActivity().findViewById(R.id.accessUCAuthKeyIdLabel); textView.setVisibility(View.GONE); + EditText editText = (EditText) getActivity().findViewById(R.id.accessUCAuthKeyId); editText.setVisibility(View.GONE); + editTextAuthMsg.setText("049CA53E55EA"); + TableRow tableRow1 = (TableRow) getActivity().findViewById(R.id.accessUCAuthProfileRow); tableRow1.setVisibility(View.GONE); + LinearLayout layout1 = (LinearLayout) getActivity().findViewById(R.id.accessUCKeyLayout); layout1.setVisibility(View.GONE); + LinearLayout layout = (LinearLayout) getActivity().findViewById(R.id.accessUCButtons); layout.setVisibility(View.GONE); + + Button buttonImpinjCheck = (Button) getActivity().findViewById(R.id.accessUCImpinjCheck); + buttonImpinjCheck.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (!bRunning) { + textViewImpinjResponse.setText(""); + mHandler.post(runnable); + } + } + }); + + editTextAccessUCserverImpinj = (EditText) getActivity().findViewById(R.id.accessUCserverImpinj); + editTextAccessUCemail = (EditText) getActivity().findViewById(R.id.accessUCemail); + editTextAccessUCpassword = (EditText) getActivity().findViewById(R.id.accessUCpassword); + if (true) { + editTextAccessUCserverImpinj.setText(csLibrary4A.getServerImpinjLocation()); + editTextAccessUCemail.setText(csLibrary4A.getServerImpinjName()); + editTextAccessUCpassword.setText(csLibrary4A.getServerImpinjPassword()); + } else if (false) { + editTextAccessUCserverImpinj.setText("https://h9tqczg9-7275.asse.devtunnels.ms"); + editTextAccessUCemail.setText("wallace.sit@cne.com.hk"); + editTextAccessUCpassword.setText("Cne12345678?"); + } else { + editTextAccessUCserverImpinj.setText("https://democloud.convergence.com.hk/ias"); + editTextAccessUCemail.setText("wallace.sit@cne.com.hk"); + editTextAccessUCpassword.setText("Cne12345678?"); + } } + SaveList2ExternalTask saveExternalTask; boolean bRunning = false; int bStep = 0; String strBearer = null; + Runnable runnable = new Runnable() { + @Override + public void run() { + csLibrary4A.appendToLog("0 bRunning = " + bRunning + ", bStep = " + bStep); + if (saveExternalTask != null && saveExternalTask.getStatus() == AsyncTask.Status.FINISHED) { + bStep++; + if (saveExternalTask.responseCode != 200) bStep++; + else { + if (bStep == 1) strBearer = saveExternalTask.response; + else { + String strTid = null, strResult = null; + JSONObject obj = null; + try { + obj = new JSONObject(saveExternalTask.response); + JSONArray jsonArray = obj.getJSONArray("tagValidity"); + MainActivity.csLibrary4A.appendToLog("Json tagValidity is " + (jsonArray == null ? "null" : "valid")); + strTid = jsonArray.getJSONObject(0).getString("tid"); + strResult = jsonArray.getJSONObject(0).getString("tagValid"); + } catch (JSONException e) { + csLibrary4A.appendToLog("Json exception = " + e.toString()); + } + if (strTid != null && strResult != null) { + //textViewImpinjResponse.setText(strResult + " " + strTid); + textViewImpinjResponse.setText((strResult.matches("true") ? "Valid" : "Invalid")); + } + } + } + MainActivity.csLibrary4A.appendToLog("responseCode = " + saveExternalTask.responseCode + ", response = " + saveExternalTask.response); + saveExternalTask = null; + } + csLibrary4A.appendToLog("bRunning = " + bRunning + ", bStep = " + bStep); + if (bStep < 2) { + if (saveExternalTask == null || saveExternalTask.getStatus() != AsyncTask.Status.RUNNING) { + csLibrary4A.appendToLog("1 bRunning = " + bRunning + ", bStep = " + bStep); + bRunning = true; + if (bStep == 0) { + bStep = 0; + saveExternalTask = new SaveList2ExternalTask(true); + + JSONObject object = new JSONObject(); + try { + //object.put("Username", "CslAuth2047#$"); + //object.put("Password", "Sheungwan123#$"); + object.put("email", editTextAccessUCemail.getText().toString()); //"wallace.sit@cne.com.hk"); + object.put("password", editTextAccessUCpassword.getText().toString()); //"Cne12345678?"); + } catch (Exception ex) { + MainActivity.csLibrary4A.appendToLog("Error in creating Json"); + } + saveExternalTask.messageStr = object.toString(); + //saveExternalTask.url = "https://ias.authenticate.impinj.io/external/jwt/authenticate"; + saveExternalTask.url = editTextAccessUCserverImpinj.getText().toString() + "/api/Auth/login"; // "https://h9tqczg9-7275.asse.devtunnels.ms/api/Auth/login"; + MainActivity.csLibrary4A.appendToLog("Adddress: " + saveExternalTask.url + ", json message:" + saveExternalTask.messageStr); + saveExternalTask.execute(); + MainActivity.csLibrary4A.appendToLog("responseCode = " + saveExternalTask.responseCode + ", response = " + saveExternalTask.response); + } else { + saveExternalTask = new SaveList2ExternalTask(true); + + JSONObject object = new JSONObject(); + try { + JSONArray jsonArray = new JSONArray(); + JSONObject object1 = new JSONObject(); + object1.put("tid", editTextAccessUCTid.getText().toString()); //tagSelected.getTid()); //"E2C011A21234123412341234"); // + object1.put("challenge", editTextAuthMsg.getText().toString()); + object1.put("tagResponse", editTextAuthResponse.getText().toString()); + jsonArray.put(object1); + object.put("tagVerify", jsonArray); + object.put("sendSignature", true); + object.put("sendSalt", true); + object.put("sendTime", true); + } catch (Exception ex) { + MainActivity.csLibrary4A.appendToLog("Error in creating Json"); + } + saveExternalTask.messageStr = object.toString(); + saveExternalTask.url = editTextAccessUCserverImpinj.getText().toString() + "/api/ImpinjAuthentication/authenticate"; //"https://h9tqczg9-7275.asse.devtunnels.ms/api/ImpinjAuthentication/authenticate"; + saveExternalTask.strBearer = "Bearer " + strBearer; + MainActivity.csLibrary4A.appendToLog("Adddress: " + saveExternalTask.url + ", json message:" + saveExternalTask.messageStr); + saveExternalTask.execute(); + MainActivity.csLibrary4A.appendToLog("responseCode = " + saveExternalTask.responseCode + ", response = " + saveExternalTask.response); + } + } + mHandler.postDelayed(runnable, 100); + } else { + bRunning = false; bStep = 0; + } + } + }; + @Override public void onResume() { super.onResume(); @@ -285,16 +424,18 @@ public AccessUcodeFragment() { } void setupTagID() { + if (selectTag == null) return; ReaderDevice tagSelected = MainActivity.tagSelected; MainActivity.csLibrary4A.appendToLog("Start with tagSelected = " + (tagSelected == null ? "NULL" : (tagSelected.getSelected() + ", " + tagSelected.getAddress()))); boolean bSelected = false; if (tagSelected != null) { if (tagSelected.getSelected() == true) { bSelected = true; - //MainActivity.mCs108Library4a.appendToLog("editTextRWTagID = " + (editTextRWTagID == null ? "NULL" : "VALID")); - if (editTextRWTagID != null) { - //MainActivity.mCs108Library4a.appendToLog("editTextRWTagID.setTTEXT " + tagSelected.getAddress()); - editTextRWTagID.setText(tagSelected.getAddress()); + MainActivity.csLibrary4A.appendToLog("selectTag is " + (selectTag == null ? "NULL" : "valid")); + if (selectTag != null) MainActivity.csLibrary4A.appendToLog("selectTag.editTextTag is " + (selectTag.editTextTagID == null ? "NULL" : "valid")); + if (selectTag.editTextTagID != null) { + MainActivity.csLibrary4A.appendToLog("editTextRWTagID.setTTEXT " + tagSelected.getAddress()); + selectTag.editTextTagID.setText(tagSelected.getAddress()); } String stringDetail = tagSelected.getDetails(); @@ -309,6 +450,9 @@ void setupTagID() { // CheckBox checkBoxBAP = (CheckBox) getActivity().findViewById(R.id.coldChainEnableBAP); // checkBoxBAP.setChecked(bEnableBAPMode); } + + editTextAccessUCTid = (EditText) getActivity().findViewById(R.id.accessUCTid); + editTextAccessUCTid.setText(tagSelected.getTid()); } } } @@ -526,21 +670,18 @@ else if (taskRequest) { else if (operationRead) button = buttonRead; else button = buttonWrite; - Cs108Library4A.HostCommands hostCommand; - if (readBufferChecked) hostCommand = Cs108Library4A.HostCommands.CMD_READBUFFER; - else if (authenChecked) hostCommand = Cs108Library4A.HostCommands.CMD_18K6CAUTHENTICATE; - else if (untraceChecked || showEpcChecked) hostCommand = Cs108Library4A.HostCommands.CMD_UNTRACEABLE; - else if (operationRead) hostCommand = Cs108Library4A.HostCommands.CMD_18K6CREAD; - else hostCommand = Cs108Library4A.HostCommands.CMD_18K6CWRITE; + RfidReaderChipData.HostCommands hostCommand; + if (readBufferChecked) hostCommand = RfidReaderChipData.HostCommands.CMD_READBUFFER; + else if (authenChecked) hostCommand = RfidReaderChipData.HostCommands.CMD_18K6CAUTHENTICATE; + else if (untraceChecked || showEpcChecked) hostCommand = RfidReaderChipData.HostCommands.CMD_UNTRACEABLE; + else if (operationRead) hostCommand = RfidReaderChipData.HostCommands.CMD_18K6CREAD; + else hostCommand = RfidReaderChipData.HostCommands.CMD_18K6CWRITE; accessTask = new AccessTask( - button, null, - invalid, - editTextRWTagID.getText().toString(), 1, 32, - editTextAccessRWAccPassword.getText().toString(), - Integer.valueOf(editTextaccessRWAntennaPower.getText().toString()), - hostCommand, - 0, 0, true, + button, null, invalid, + selectTag.editTextTagID.getText().toString(), 1, 32, + selectTag.editTextAccessPassword.getText().toString(), Integer.valueOf(selectTag.editTextAccessAntennaPower.getText().toString()), hostCommand, + 0, 0, true, false, null, null, null, null, null); accessTask.execute(); rerunRequest = true; @@ -603,7 +744,11 @@ else if (authenChecked) { strValue += accessResult.substring(i, i_end); } editTextAuthResponse.setText(strValue); - processAESdata(accessResult); + if (bImpinJTag) { + LinearLayout layout = (LinearLayout) getActivity().findViewById(R.id.accessUCImpinjLayout); + if (authenTam1) layout.setVisibility(View.VISIBLE); + else layout.setVisibility(View.GONE); + } else processAESdata(accessResult); } } else if (untraceChecked) untraceChecked = false; @@ -645,7 +790,13 @@ boolean processTickItems() { accOffset = 0; accSize = 1; } else if (authenChecked) { if (authenTam1) { - if (MainActivity.csLibrary4A.setTam1Configuration(keyId, strChallenge) == false) + if (bImpinJTag) { + if (MainActivity.csLibrary4A.setTamConfiguration(false, strChallenge) == false) + invalidRequest1 = true; + } else if (MainActivity.csLibrary4A.setTam1Configuration(keyId, strChallenge) == false) + invalidRequest1 = true; + } else if (bImpinJTag) { + if (MainActivity.csLibrary4A.setTamConfiguration(true, strChallenge) == false) invalidRequest1 = true; } else if (MainActivity.csLibrary4A.setTam2Configuration(keyId, strChallenge, profile, offset, blockId, protMode) == false) invalidRequest1 = true; diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessXerxesLoggerFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessXerxesLoggerFragment.java index 474d894..161bcea 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessXerxesLoggerFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessXerxesLoggerFragment.java @@ -20,8 +20,8 @@ import com.csl.cs108ademoapp.GenericTextWatcher; import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.ReaderDevice; +import com.csl.cslibrary4a.RfidReaderChipData; public class AccessXerxesLoggerFragment extends CommonFragment { final boolean DEBUG = true; @@ -123,7 +123,7 @@ public void onNothingSelected(AdapterView adapterView) { editTextaccessRWAntennaPower = (EditText) getActivity().findViewById(R.id.accessXXAntennaPower); editTextaccessRWAntennaPower.setText(String.valueOf(300)); - buttonRead = (Button) getActivity().findViewById(R.id.accessXXReadButton); + buttonRead = (Button) getActivity().findViewById(R.id.accessRWReadButton); buttonRead.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -138,7 +138,7 @@ public void onClick(View v) { } }); - buttonWrite = (Button) getActivity().findViewById(R.id.accessXXWriteButton); + buttonWrite = (Button) getActivity().findViewById(R.id.accessRWWriteButton); buttonWrite.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -263,13 +263,10 @@ else if (taskRequest) { int selectOffset = 32; String selectMask = editTextRWTagID.getText().toString(); accessTask = new AccessTask( - (operationRead ? buttonRead : buttonWrite), null, - invalid, + (operationRead ? buttonRead : buttonWrite), null, invalid, selectMask, selectBank, selectOffset, - editTextAccessRWAccPassword.getText().toString(), - Integer.valueOf(editTextaccessRWAntennaPower.getText().toString()), - (operationRead ? Cs108Library4A.HostCommands.CMD_18K6CREAD: Cs108Library4A.HostCommands.CMD_18K6CWRITE), - 0, 0, true, + editTextAccessRWAccPassword.getText().toString(), Integer.valueOf(editTextaccessRWAntennaPower.getText().toString()), (operationRead ? RfidReaderChipData.HostCommands.CMD_18K6CREAD: RfidReaderChipData.HostCommands.CMD_18K6CWRITE), + 0, 0, true, false, null, null, null, null, null); accessTask.execute(); rerunRequest = true; @@ -308,8 +305,7 @@ boolean processResult() { else { if (changedSelectIndex) { changedSelectIndex = false; MainActivity.selectFor = 0; - MainActivity.csLibrary4A.setSelectCriteriaDisable(2); - MainActivity.csLibrary4A.setSelectCriteriaDisable(1); + MainActivity.csLibrary4A.setSelectCriteriaDisable(-1); } accessResult = accessTask.accessResult; if (accessResult == null) { diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/AuraSenseFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/AuraSenseFragment.java index 83d78d6..d1ab38c 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AuraSenseFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AuraSenseFragment.java @@ -33,22 +33,22 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa @Override public boolean onOptionsItemSelected(MenuItem item) { InventoryRfidiMultiFragment fragment1 = (InventoryRfidiMultiFragment) mAdapter.fragment1; - switch (item.getItemId()) { - case R.id.menuAction_clear: - fragment1.clearTagsList(); - return true; - case R.id.menuAction_sortRssi: - fragment1.sortTagsListByRssi(); - return true; - case R.id.menuAction_sort: - fragment1.sortTagsList(); - return true; - case R.id.menuAction_save: - fragment1.saveTagsList(); - return true; - default: - return super.onOptionsItemSelected(item); - } + if (item.getItemId() == R.id.menuAction_clear) { + fragment1.clearTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_sortRssi) { + fragment1.sortTagsListByRssi(); + return true; + } else if (item.getItemId() == R.id.menuAction_sort) { + fragment1.sortTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_save) { + fragment1.saveTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_share) { + fragment1.shareTagsList(); + return true; + } else return super.onOptionsItemSelected(item); } @Override @@ -111,7 +111,7 @@ public void onDestroyView() { public void onDestroy() { mAdapter.fragment0.onDestroy(); mAdapter.fragment1.onDestroy(); - MainActivity.csLibrary4A.setSelectCriteriaDisable(1); + MainActivity.csLibrary4A.setSelectCriteriaDisable(-1); MainActivity.csLibrary4A.setSameCheck(true); MainActivity.csLibrary4A.restoreAfterTagSelect(); super.onDestroy(); diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/AxzonFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/AxzonFragment.java index 691a9ea..2852af0 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AxzonFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AxzonFragment.java @@ -32,22 +32,22 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa @Override public boolean onOptionsItemSelected(MenuItem item) { InventoryRfidiMultiFragment fragment = (InventoryRfidiMultiFragment) mAdapter.fragment0; - switch (item.getItemId()) { - case R.id.menuAction_clear: - fragment.clearTagsList(); - return true; - case R.id.menuAction_sortRssi: - fragment.sortTagsListByRssi(); - return true; - case R.id.menuAction_sort: - fragment.sortTagsList(); - return true; - case R.id.menuAction_save: - fragment.saveTagsList(); - return true; - default: - return super.onOptionsItemSelected(item); - } + if (item.getItemId() == R.id.menuAction_clear) { + fragment.clearTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_sortRssi) { + fragment.sortTagsListByRssi(); + return true; + } else if (item.getItemId() == R.id.menuAction_sort) { + fragment.sortTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_save) { + fragment.saveTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_share) { + fragment.shareTagsList(); + return true; + } else return super.onOptionsItemSelected(item); } @Override @@ -56,7 +56,15 @@ public void onActivityCreated(Bundle savedInstanceState) { actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); actionBar.setIcon(R.drawable.dl_inv); - actionBar.setTitle(R.string.title_activity_axzon); + MainActivity.csLibrary4A.appendToLog("MainActivity.mDid = " + MainActivity.mDid); + if (false) actionBar.setTitle(R.string.title_activity_axzon); + else { + String stringTitle = getResources().getString(R.string.title_activity_axzon); + if (MainActivity.mDid.matches("E282402")) stringTitle = "S2"; + else if (MainActivity.mDid.matches("E282403")) stringTitle = "S3"; + if (MainActivity.mDid.matches("E282405")) stringTitle = "Xerxes"; + actionBar.setTitle(stringTitle); + } boolean bXervesTag = false; if (MainActivity.mDid != null) if (MainActivity.mDid.matches("E282405")) bXervesTag = true; @@ -91,6 +99,8 @@ public void onTabUnselected(TabLayout.Tab tab) { public void onTabReselected(TabLayout.Tab tab) { } }); + + MainActivity.csLibrary4A.setBasicCurrentLinkProfile(); } @Override @@ -127,8 +137,7 @@ public void onDestroy() { if (mAdapter.fragment2 != null) if (mAdapter.fragment2.getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) mAdapter.fragment2.onDestroy(); if (mAdapter.fragment3 != null) if (mAdapter.fragment3.getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) mAdapter.fragment3.onDestroy(); if (MainActivity.selectFor != -1) { - MainActivity.csLibrary4A.setSelectCriteriaDisable(1); - MainActivity.csLibrary4A.setSelectCriteriaDisable(2); + MainActivity.csLibrary4A.setSelectCriteriaDisable(-1); MainActivity.selectFor = -1; } MainActivity.csLibrary4A.restoreAfterTagSelect(); diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/AxzonSelectorFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/AxzonSelectorFragment.java index 55e6b30..4fc6999 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AxzonSelectorFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AxzonSelectorFragment.java @@ -87,7 +87,7 @@ void gotoAxzonFragment(int tagType) { MainActivity.mDid = "E282405"; break; default: - MainActivity.mDid = "E28240"; + MainActivity.mDid = "E2824"; break; } MainActivity.csLibrary4A.appendToLog("HelloABC: gotoAxzonFragment with tagType = " + tagType + ", MainActivity.mDid = " + MainActivity.mDid); diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/ColdChainFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/ColdChainFragment.java index 2315266..0034f00 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/ColdChainFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/ColdChainFragment.java @@ -1,6 +1,8 @@ package com.csl.cs108ademoapp.fragments; import android.os.Bundle; + +import com.csl.cs108ademoapp.MainActivity; import com.google.android.material.tabs.TabLayout; import androidx.viewpager.widget.ViewPager; import androidx.appcompat.app.ActionBar; @@ -18,7 +20,7 @@ public class ColdChainFragment extends CommonFragment { private ViewPager viewPager; ColdChainAdapter mAdapter; - private String[] tabs = {"Select Tag", "One-shot", "Logging"}; + private String[] tabs = {"Select Tag", "Logging", "One-shot"}; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -29,22 +31,22 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa @Override public boolean onOptionsItemSelected(MenuItem item) { InventoryRfidiMultiFragment fragment1 = (InventoryRfidiMultiFragment) mAdapter.fragment0; - switch (item.getItemId()) { - case R.id.menuAction_clear: - fragment1.clearTagsList(); - return true; - case R.id.menuAction_sortRssi: - fragment1.sortTagsListByRssi(); - return true; - case R.id.menuAction_sort: - fragment1.sortTagsList(); - return true; - case R.id.menuAction_save: - fragment1.saveTagsList(); - return true; - default: - return super.onOptionsItemSelected(item); - } + if (item.getItemId() == R.id.menuAction_clear) { + fragment1.clearTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_sortRssi) { + fragment1.sortTagsListByRssi(); + return true; + } else if (item.getItemId() == R.id.menuAction_sort) { + fragment1.sortTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_save) { + fragment1.saveTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_share) { + fragment1.shareTagsList(); + return true; + } else return super.onOptionsItemSelected(item); } @Override @@ -62,7 +64,9 @@ public void onActivityCreated(Bundle savedInstanceState) { viewPager.setAdapter(mAdapter); viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); - for (String tab_name : tabs) { + for (int i = 0; i < tabs.length; i++) { + if (MainActivity.csLibrary4A.get98XX() == 2 && i == tabs.length -1) break;; + String tab_name = tabs[i]; tabLayout.addTab(tabLayout.newTab().setText(tab_name)); } diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/CommonFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/CommonFragment.java index e3ee910..ad5b867 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/CommonFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/CommonFragment.java @@ -24,7 +24,7 @@ import com.csl.cs108ademoapp.CustomPopupWindow; import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; -import com.csl.cs108library4a.CustomAlertDialog; +import com.csl.cslibrary4a.CustomAlertDialog; public abstract class CommonFragment extends Fragment { final boolean DEBUG = false; final String TAG = "Hello"; @@ -38,7 +38,7 @@ public void onAttach(Context context) { if (DEBUG) { if (fragmentName == null) Log.i(TAG, "CommonFragment.onAttach: NULL fragmentName"); else Log.i(TAG, "CommonFragment.onAttach: fragmentName = " + fragmentName); - if (MainActivity.csLibrary4A == null) Log.i(TAG, "CommonFragment.onAttach: NULL MainActivity.mCs108Library4a"); + if (MainActivity.csLibrary4A == null) Log.i(TAG, "CommonFragment.onAttach: NULL MainActivity.csLibrary4a"); if (fragmentName == null) MainActivity.csLibrary4A.appendToLog("NULL fragmentName"); MainActivity.csLibrary4A.appendToLog(fragmentName); } @@ -74,6 +74,12 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa @Override public void run() { short reportCount = 5; + byte[] notificationData = MainActivity.csLibrary4A.onNotificationEvent(); + if (false && notificationData != null) { + MainActivity.csLibrary4A.appendToLog("2 matched Error: " + MainActivity.csLibrary4A.byteArrayToString(notificationData)); + CustomPopupWindow customPopupWindow = new CustomPopupWindow(MainActivity.mContext); + customPopupWindow.popupStart("Common Notification Error Code A101: " + MainActivity.csLibrary4A.byteArrayToString(notificationData), false); + } if (MainActivity.csLibrary4A.isBleConnected()) reportCount = MainActivity.csLibrary4A.getTriggerReportingCount(); mHandler.postDelayed(updateTriggerRunnable, reportCount * 1100); if (menuTriggerItem == null) return; @@ -130,23 +136,27 @@ public void run() { if (MainActivity.csLibrary4A.isRfidFailure()) { if (rfidFailure == false) { rfidFailure = true; - CustomAlertDialog appdialog = new CustomAlertDialog(); - appdialog.Confirm((Activity) MainActivity.mContext, "Rfid Transmission failure", - "Do you want to disconnect the Bluetooth ?", - "No thanks", "Disconnect", - new Runnable() { - @Override - public void run() { - if (DEBUG) MainActivity.csLibrary4A.appendToLog("Confirm is pressed"); - MainActivity.csLibrary4A.forceBTdisconnect(); - } - }, - new Runnable() { - @Override - public void run() { - if (DEBUG) MainActivity.csLibrary4A.appendToLog("Cancel is pressed."); - } - }); + if (false) { + CustomAlertDialog appdialog = new CustomAlertDialog(); + appdialog.Confirm((Activity) MainActivity.mContext, "Rfid Transmission failure", + "Do you want to disconnect the Bluetooth ?", + "No thanks", "Disconnect", + new Runnable() { + @Override + public void run() { + if (DEBUG) + MainActivity.csLibrary4A.appendToLog("Confirm is pressed"); + MainActivity.csLibrary4A.forceBTdisconnect(); + } + }, + new Runnable() { + @Override + public void run() { + if (DEBUG) + MainActivity.csLibrary4A.appendToLog("Cancel is pressed."); + } + }); + } } } else rfidFailure = false; @@ -159,7 +169,7 @@ else if (++MainActivity.sharedObjects.batteryWarningShown == 1) { if (batteryWarningPopupWindow != null) batteryWarningPopupWindow.popupWindow.dismiss(); batteryWarningPopupWindow = new CustomPopupWindow(MainActivity.mContext); - batteryWarningPopupWindow.popupStart(strBatteryLow + "% Battery Life Left, Please Recharge CS108 or Replace with Freshly Charged CS108B", false); + batteryWarningPopupWindow.popupStart(strBatteryLow + "% Battery Life Left, Please Recharge CSL Reader or Replace with Freshly Charged CSL Reader battery", false); } else if (false && MainActivity.sharedObjects.batteryWarningShown > 10) MainActivity.sharedObjects.batteryWarningShown = 0; if (batteryCount_old == batteryCount && strText.length() != 0) { diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/ConnectionFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/ConnectionFragment.java index e388b67..2e5ead5 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/ConnectionFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/ConnectionFragment.java @@ -25,8 +25,8 @@ import com.csl.cs108ademoapp.CustomProgressDialog; import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.BluetoothGatt; +import com.csl.cslibrary4a.ReaderDevice; import com.csl.cs108ademoapp.adapters.ReaderListAdapter; import java.util.ArrayList; @@ -37,9 +37,8 @@ public class ConnectionFragment extends CommonFragment { private BluetoothAdapter.LeScanCallback mLeScanCallback; private ScanCallback mScanCallback; private ArrayList readersList = MainActivity.sharedObjects.readersList; - private Cs108Library4A mCsLibrary4A = MainActivity.csLibrary4A; - private ArrayList mScanResultList = new ArrayList<>(); + private ArrayList mScanResultList = new ArrayList<>(); private Handler mHandler = new Handler(); private DeviceConnectTask deviceConnectTask; @@ -61,7 +60,7 @@ public void onActivityCreated(Bundle savedInstanceState) { MainActivity.csLibrary4A.appendToLog("getActivity().getPackageName() = " + getActivity().getPackageName()); if (getActivity().getPackageName().contains("com.csl.cs710ademoapp")) textview.setVisibility(View.VISIBLE); - if (mCsLibrary4A.isBleConnected() == false) readersList.clear(); + if (MainActivity.csLibrary4A.isBleConnected() == false) readersList.clear(); final ListView readerListView = (ListView) getActivity().findViewById(R.id.readersList); TextView readerEmptyView = (TextView) getActivity().findViewById(R.id.empty); readerListView.setEmptyView(readerEmptyView); @@ -75,13 +74,13 @@ public void onItemClick(AdapterView parent, View view, int position, long id) if (bConnecting) return; ReaderDevice readerDevice = readerListAdapter.getItem(position); - if (DEBUG) mCsLibrary4A.appendToLog("ConnectionFragment.OnItemClickListener: bConnecting = " + bConnecting + ", postion = " + position); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("ConnectionFragment.OnItemClickListener: bConnecting = " + bConnecting + ", postion = " + position); boolean bSelectOld = readerDevice.getSelected(); - if (mCsLibrary4A.isBleConnected() && readerDevice.isConnected() && (readerDevice.getSelected() || false)) { - mCsLibrary4A.disconnect(false); bleDisConnecting = true; + if (MainActivity.csLibrary4A.isBleConnected() && readerDevice.isConnected() && (readerDevice.getSelected() || false)) { + MainActivity.csLibrary4A.disconnect(false); bleDisConnecting = true; readersList.clear(); - } else if (mCsLibrary4A.isBleConnected() == false && readerDevice.getSelected() == false) { + } else if (MainActivity.csLibrary4A.isBleConnected() == false && readerDevice.getSelected() == false) { boolean validStart = false; if (deviceConnectTask == null) { validStart = true; @@ -119,7 +118,7 @@ public void onItemClick(AdapterView parent, View view, int position, long id) readerListAdapter.notifyDataSetChanged(); } }); - if (mCsLibrary4A.isBleConnected() == false) { + if (MainActivity.csLibrary4A.isBleConnected() == false) { for (int i = 0; i < readersList.size(); i++) { ReaderDevice readerDevice1 = readersList.get(i); if (readerDevice1.isConnected()) { @@ -157,7 +156,7 @@ public ConnectionFragment() { @Override public void run() { boolean operating = false; - if (mCsLibrary4A.isBleConnected()) operating = true; + if (MainActivity.csLibrary4A.isBleConnected()) operating = true; if (operating == false && deviceScanTask != null) { if (deviceScanTask.isCancelled() == false) operating = true; } @@ -181,7 +180,7 @@ private class DeviceScanTask extends AsyncTask { protected String doInBackground(Void... a) { while (isCancelled() == false) { if (wait4process == false) { - Cs108Library4A.Cs108ScanData cs108ScanData = mCsLibrary4A.getNewDeviceScanned(); + BluetoothGatt.Cs108ScanData cs108ScanData = MainActivity.csLibrary4A.getNewDeviceScanned(); if (cs108ScanData != null) mScanResultList.add(cs108ScanData); if (scanning == false || mScanResultList.size() != 0 || System.currentTimeMillis() - timeMillisUpdate > 10000) { wait4process = true; publishProgress(""); @@ -195,18 +194,18 @@ protected String doInBackground(Void... a) { protected void onProgressUpdate(String... output) { if (scanning == false) { scanning = true; - if (mCsLibrary4A.scanLeDevice(true) == false) cancel(true); + if (MainActivity.csLibrary4A.scanLeDevice(true) == false) cancel(true); else getActivity().invalidateOptionsMenu(); } boolean listUpdated = false; while (mScanResultList.size() != 0) { - Cs108Library4A.Cs108ScanData scanResultA = mScanResultList.get(0); + BluetoothGatt.Cs108ScanData scanResultA = mScanResultList.get(0); mScanResultList.remove(0); if (getActivity() == null) continue; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { if (ActivityCompat.checkSelfPermission(getActivity().getApplicationContext(), Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) continue; } else if (ActivityCompat.checkSelfPermission(getActivity().getApplicationContext(), Manifest.permission.BLUETOOTH) != PackageManager.PERMISSION_GRANTED) continue; - if (DEBUG) mCsLibrary4A.appendToLog("scanResultA.device.getType() = " + scanResultA.device.getType() + ". scanResultA.rssi = " + scanResultA.rssi); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("scanResultA.device.getType() = " + scanResultA.device.getType() + ". scanResultA.rssi = " + scanResultA.rssi); if (scanResultA.device.getType() == BluetoothDevice.DEVICE_TYPE_LE && (true || scanResultA.rssi < 0)) { boolean match = false; for (int i = 0; i < readersList.size(); i++) { @@ -227,11 +226,11 @@ protected void onProgressUpdate(String... output) { if (scanResultA.device.getBondState() == 12) { strInfo += "BOND_BONDED\n"; } - readerDevice.setDetails(strInfo + "scanRecord=" + mCsLibrary4A.byteArrayToString(scanResultA.scanRecord)); + readerDevice.setDetails(strInfo + "scanRecord=" + MainActivity.csLibrary4A.byteArrayToString(scanResultA.scanRecord)); readersList.add(readerDevice); listUpdated = true; } } else { - if (DEBUG) mCsLibrary4A.appendToLog("deviceScanTask: rssi=" + scanResultA.rssi + ", error type=" + scanResultA.device.getType()); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("deviceScanTask: rssi=" + scanResultA.rssi + ", error type=" + scanResultA.device.getType()); } } if (System.currentTimeMillis() - timeMillisUpdate > 10000) { @@ -255,8 +254,8 @@ protected void onProgressUpdate(String... output) { readersListOld.add(readerDevice1); } } - if (DEBUG) mCsLibrary4A.appendToLog("Matched. Updated readerListOld with size = " + readersListOld.size()); - mCsLibrary4A.scanLeDevice(false); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("Matched. Updated readerListOld with size = " + readersListOld.size()); + MainActivity.csLibrary4A.scanLeDevice(false); getActivity().invalidateOptionsMenu(); scanning = false; } @@ -267,18 +266,18 @@ protected void onProgressUpdate(String... output) { @Override protected void onCancelled() { super.onCancelled(); - if (DEBUG) mCsLibrary4A.appendToLog("Stop Scanning 1A"); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("Stop Scanning 1A"); deviceScanEnding(); } @Override protected void onPostExecute(String result) { - if (DEBUG) mCsLibrary4A.appendToLog("Stop Scanning 1B"); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("Stop Scanning 1B"); deviceScanEnding(); } void deviceScanEnding() { - mCsLibrary4A.scanLeDevice(false); + MainActivity.csLibrary4A.scanLeDevice(false); } } @@ -302,8 +301,8 @@ private class DeviceConnectTask extends AsyncTask { protected void onPreExecute() { super.onPreExecute(); - if (DEBUG) MainActivity.csLibrary4A.appendToLog("start of Connection with mrfidToWriteSize = " + mCsLibrary4A.mrfidToWriteSize()); - mCsLibrary4A.connect(connectingDevice); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("start of Connection with mrfidToWriteSize = " + MainActivity.csLibrary4A.mrfidToWriteSize()); + MainActivity.csLibrary4A.connect(connectingDevice); waitTime = 30; setting = -1; progressDialog = new CustomProgressDialog(getActivity(), prgressMsg); @@ -319,7 +318,7 @@ protected Integer doInBackground(Void... a) { e.printStackTrace(); } publishProgress("kkk "); - if (mCsLibrary4A.isBleConnected()) { + if (MainActivity.csLibrary4A.isBleConnected()) { setting = 0; break; } } while (--waitTime > 0); @@ -338,21 +337,21 @@ protected void onProgressUpdate(String... output) { @Override protected void onCancelled(Integer result) { - if (DEBUG) mCsLibrary4A.appendToLog("onCancelled(): setting = " + setting + ", waitTime = " + waitTime); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("onCancelled(): setting = " + setting + ", waitTime = " + waitTime); if (setting >= 0) { Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.toast_ble_setup_problem), Toast.LENGTH_SHORT).show(); } else { - mCsLibrary4A.isBleConnected(); + MainActivity.csLibrary4A.isBleConnected(); Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.error_bluetooth_connection_failed), Toast.LENGTH_SHORT).show(); } super.onCancelled(); - mCsLibrary4A.disconnect(false); bleDisConnecting = true; + MainActivity.csLibrary4A.disconnect(false); bleDisConnecting = true; bConnecting = false; } protected void onPostExecute(Integer result) { - if (DEBUG) mCsLibrary4A.appendToLog("onPostExecute(): setting = " + setting + ", waitTime = " + waitTime); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("onPostExecute(): setting = " + setting + ", waitTime = " + waitTime); ReaderDevice readerDevice = readersList.get(position); readerDevice.setConnected(true); readersList.set(position, readerDevice); @@ -373,7 +372,7 @@ protected void onPostExecute(Integer result) { if (DEBUG) MainActivity.csLibrary4A.appendToLog("ConnectionFragment: onPostExecute: getActivity().onBackPressed"); getActivity().onBackPressed(); bConnecting = false; - if (DEBUG) MainActivity.csLibrary4A.appendToLog("end of Connection with mrfidToWriteSize = " + mCsLibrary4A.mrfidToWriteSize()); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("end of Connection with mrfidToWriteSize = " + MainActivity.csLibrary4A.mrfidToWriteSize()); } } } diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/DirectWedgeFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/DirectWedgeFragment.java index 6c8c588..af59121 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/DirectWedgeFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/DirectWedgeFragment.java @@ -1,7 +1,6 @@ package com.csl.cs108ademoapp.fragments; import android.Manifest; -import android.app.Dialog; import android.bluetooth.BluetoothDevice; import android.content.Intent; import android.content.pm.PackageManager; @@ -21,21 +20,23 @@ import android.widget.AdapterView; import android.widget.Button; import android.widget.ListView; +import android.widget.TableRow; import android.widget.TextView; import android.widget.Toast; +import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; +import com.csl.cs108ademoapp.BuildConfig; import com.csl.cs108ademoapp.CustomPopupWindow; import com.csl.cs108ademoapp.DrawerListContent; import com.csl.cs108ademoapp.adapters.ReaderListAdapter; -import com.csl.cs108ademoapp.BuildConfig; import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.CustomAlertDialog; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.BluetoothGatt; +import com.csl.cslibrary4a.ReaderDevice; +import com.csl.cslibrary4a.CustomAlertDialog; import java.util.ArrayList; import java.util.List; @@ -45,7 +46,6 @@ public class DirectWedgeFragment extends CommonFragment { private ArrayList readersList = MainActivity.sharedObjects.readersList; Handler handler = new Handler(); private ReaderListAdapter readerListAdapter; - private Cs108Library4A mCsLibrary4A = MainActivity.csLibrary4A; boolean bConnecting = false; boolean bCurrentIMEmatched = false; String stringImeExpected, stringLabelExpected; @@ -60,13 +60,29 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - if (true) { + TableRow tableRow1 = getActivity().findViewById(R.id.directWedgeRow1); + TableRow tableRow2 = getActivity().findViewById(R.id.directWedgeRow2); + TableRow tableRow3 = getActivity().findViewById(R.id.directWedgeRow3); + TableRow tableRow4 = getActivity().findViewById(R.id.directWedgeRow4); + TableRow tableRowStart = getActivity().findViewById(R.id.directWedgeRowStart); + if (getActivity().getPackageName().contains("cs710awedgeapp")) { androidx.appcompat.app.ActionBar actionBar; actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); actionBar.setIcon(R.drawable.dl_access); - ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#FF0000")); + ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#0000FF")); actionBar.setBackgroundDrawable(colorDrawable); actionBar.setTitle("CSL Java Simple Wedge v" + BuildConfig.VERSION_NAME); + + } else { //if (getActivity().getPackageName().contains("cs710ademoapp")) { + ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); + actionBar.setIcon(R.drawable.dl_inv); + actionBar.setTitle("Wedge"); + + tableRow1.setVisibility(View.GONE); + tableRow2.setVisibility(View.GONE); + tableRow3.setVisibility(View.GONE); + tableRow4.setVisibility(View.GONE); + tableRowStart.setVisibility(View.VISIBLE); } if (false) { @@ -86,7 +102,7 @@ public void onActivityCreated(Bundle savedInstanceState) { boolean DEBUG = true; @Override public void onItemClick(AdapterView parent, View view, int position, long id) { - if (DEBUG) mCsLibrary4A.appendToLog("OnItemClickListener: bConnecting = " + bConnecting + ", position = " + position); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("OnItemClickListener: bConnecting = " + bConnecting + ", position = " + position); if (bConnecting) return; ReaderDevice readerDevice = readerListAdapter.getItem(position); @@ -106,12 +122,12 @@ public void onItemClick(AdapterView parent, View view, int position, long id) } readerListAdapter.notifyDataSetChanged(); - if (DEBUG) mCsLibrary4A.appendToLog("OnItemClickListener: readerDevice.getSelected = " + readerDevice.getSelected()); - if (mCsLibrary4A.isBleConnected() && readerDevice.getSelected() == false && readerDevice.isConnected()) { - if (DEBUG) mCsLibrary4A.appendToLog("OnItemClickListener: going to disconnect"); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("OnItemClickListener: readerDevice.getSelected = " + readerDevice.getSelected()); + if (MainActivity.csLibrary4A.isBleConnected() && readerDevice.getSelected() == false && readerDevice.isConnected()) { + if (DEBUG) MainActivity.csLibrary4A.appendToLog("OnItemClickListener: going to disconnect"); disconnectWedge(); - } else if (mCsLibrary4A.isBleConnected() == false && readerDevice.getSelected()) { - if (DEBUG) mCsLibrary4A.appendToLog("OnItemClickListener: going to CONNECT"); + } else if (MainActivity.csLibrary4A.isBleConnected() == false && readerDevice.getSelected()) { + if (DEBUG) MainActivity.csLibrary4A.appendToLog("OnItemClickListener: going to CONNECT"); if (true) connectWedge(readerDevice); } } @@ -121,7 +137,7 @@ public void onItemClick(AdapterView parent, View view, int position, long id) buttonSetup.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - if (mCsLibrary4A.isBleConnected() || true) new SettingWedgeFragment().show(getChildFragmentManager(), "TAG"); + if (MainActivity.csLibrary4A.isBleConnected() || true) new SettingWedgeFragment().show(getChildFragmentManager(), "TAG"); else if (MainActivity.csLibrary4A.mrfidToWriteSize() != 0) Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.toast_not_ready), Toast.LENGTH_SHORT).show(); else Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.toast_ble_not_connected), Toast.LENGTH_SHORT).show(); } @@ -132,7 +148,7 @@ public void onClick(View v) { @Override public void onClick(View v) { if (bConnecting) return; - if (mCsLibrary4A.isBleConnected()) { + if (MainActivity.csLibrary4A.isBleConnected()) { disconnectWedge(); readerListAdapter.notifyDataSetChanged(); } else { @@ -154,8 +170,8 @@ public void onClick(View v) { buttonStart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - if (mCsLibrary4A.isBleConnected()) { - if (mCsLibrary4A.mrfidToWriteSize() == 0) { + if (MainActivity.csLibrary4A.isBleConnected()) { + if (MainActivity.csLibrary4A.mrfidToWriteSize() == 0) { MainActivity.wedged = true; Intent i = new Intent(Intent.ACTION_MAIN); i.addCategory(Intent.CATEGORY_HOME); @@ -170,7 +186,18 @@ public void onClick(View v) { @Override public void onClick(View v) { CustomPopupWindow customPopupWindow = new CustomPopupWindow(MainActivity.mContext); - String stringInfo = "Hello. Here is the instruction...."; + String stringInfo = + "1. After installation, when first time entering the application, the application may request user to do something, such as turning on location permission, selecting location accuracy, allowing connection and enabling . Please follow the requests and give positive answers.\n\n" + + "2. Use the Reader List box with title: \"Tick box to select reader\" and select the reader you want to connect to. The list shows the reader name and type and Bluetooth MAC address. Tick the box on the right hand side to select the reader to be connected. Once ticked, the reader will be connected automatically. The Connect button below would change to Disconnect.\n\n" + + "3. Once connected, you can now swap this application to background. Just press the Android \"square\" button at the bottom of the screen and the application will be swapped to background\n\n" + + "4. Open the final application that you want the wedge to serve. Call this \"Final Application\" for easy reference.\n\n" + + "5. If the \"Final Application\" allows user to select another input devices, user should see a keyboard icon at the lower right corner of the screen. Select the keyboard as the input.\n\n" + + "6. At this point, the Wedge is ready for the \"Final Application\". Just press and hold the blue gun trigger button of the reader to read the tags in front of the CS710S (or CS108) reader. The tag EPCs will then be shown in the \"Final Application\".\n\n" + + "7. At the end of tag reading, release the trigger button, close the \"Final Application\" and swap back the CSL Simple Wedge application from the background.\n\n" + + "8. Now you can press the Disconnect button to disconnect from the CS710S (or CS108) reader.\n\n" + + "9. Configuration button: Press the button to modify some parameters, such as power, prefix, suffix and delimiter.\n\n" + + "10. Connect / Disconnect button: Press the button to connect / disconnect the reader."; + MainActivity.csLibrary4A.appendToLog(stringInfo); customPopupWindow.popupStart(stringInfo, false); } }); @@ -181,7 +208,6 @@ public void onClick(View v) { @Override public void onResume() { super.onResume(); - updateCurrentIMEMatched(); } @@ -197,14 +223,14 @@ public DirectWedgeFragment() { } void disconnectWedge() { - mCsLibrary4A.disconnect(false); bleDisConnecting = true; bConnecting = false; + MainActivity.csLibrary4A.disconnect(false); bleDisConnecting = true; bConnecting = false; readersList.clear(); buttonConnect.setText("Connect"); handler.removeCallbacks(runnableStart); handler.postDelayed(runnableStart, 2000); } void connectWedge(ReaderDevice readerDevice) { MainActivity.csLibrary4A.scanLeDevice(false); - mCsLibrary4A.connect(readerDevice); bConnecting = true; + MainActivity.csLibrary4A.connect(readerDevice); bConnecting = true; buttonConnect.setText("Connecting"); } @@ -216,7 +242,7 @@ public void run() { if (MainActivity.csLibrary4A.isBleConnected()) { if (MainActivity.csLibrary4A.mrfidToWriteSize() == 0) { MainActivity.csLibrary4A.setPowerLevel(MainActivity.wedgePower); - MainActivity.csLibrary4A.appendToLog("isBleConnected is true with mrfidToWriteSize = " + mCsLibrary4A.mrfidToWriteSize()); + MainActivity.csLibrary4A.appendToLog("isBleConnected is true with mrfidToWriteSize = " + MainActivity.csLibrary4A.mrfidToWriteSize()); bConnecting = false; for (int i = 0; i < readersList.size(); i++) { ReaderDevice readerDevice = readersList.get(i); @@ -239,14 +265,14 @@ public void run() { readersList.clear(); listUpdated = true; } while (true) { - Cs108Library4A.Cs108ScanData cs108ScanData = MainActivity.csLibrary4A.getNewDeviceScanned(); + BluetoothGatt.Cs108ScanData cs108ScanData = MainActivity.csLibrary4A.getNewDeviceScanned(); if (cs108ScanData != null) { - Cs108Library4A.Cs108ScanData scanResultA = cs108ScanData; + BluetoothGatt.Cs108ScanData scanResultA = cs108ScanData; if (getActivity() == null) continue; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { if (ActivityCompat.checkSelfPermission(getActivity().getApplicationContext(), Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) continue; } else if (ActivityCompat.checkSelfPermission(getActivity().getApplicationContext(), Manifest.permission.BLUETOOTH) != PackageManager.PERMISSION_GRANTED) continue; - if (DEBUG) mCsLibrary4A.appendToLog("scanResultA.device.getType() = " + scanResultA.device.getType() + ". scanResultA.rssi = " + scanResultA.rssi); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("scanResultA.device.getType() = " + scanResultA.device.getType() + ". scanResultA.rssi = " + scanResultA.rssi); if (scanResultA.device.getType() == BluetoothDevice.DEVICE_TYPE_LE && (true || scanResultA.rssi < 0)) { boolean match = false; for (int i = 0; i < readersList.size(); i++) { @@ -267,11 +293,11 @@ public void run() { if (scanResultA.device.getBondState() == 12) { strInfo += "BOND_BONDED\n"; } - readerDevice.setDetails(strInfo + "scanRecord=" + mCsLibrary4A.byteArrayToString(scanResultA.scanRecord)); + readerDevice.setDetails(strInfo + "scanRecord=" + MainActivity.csLibrary4A.byteArrayToString(scanResultA.scanRecord)); readersList.add(readerDevice); listUpdated = true; } } else { - if (DEBUG) mCsLibrary4A.appendToLog("deviceScanTask: rssi=" + scanResultA.rssi + ", error type=" + scanResultA.device.getType()); + if (DEBUG) MainActivity.csLibrary4A.appendToLog("deviceScanTask: rssi=" + scanResultA.rssi + ", error type=" + scanResultA.device.getType()); } } else break; } @@ -285,8 +311,14 @@ public void run() { handler.postDelayed(runnableStart, 1000); } }; + CustomAlertDialog appdialog; void popupAlert() { - CustomAlertDialog appdialog = new CustomAlertDialog(); + MainActivity.csLibrary4A.appendToLog("DirectWedgeFragment: entering popupAlert"); + if (appdialog != null && appdialog.isShowing()) { + MainActivity.csLibrary4A.appendToLog("DirectWedgeFragment: skip popupAlert"); + return; + } + appdialog = new CustomAlertDialog(); appdialog.Confirm(getActivity(), "Enable <" + stringLabelExpected + ">", "<" + stringLabelExpected + "> is not enabled. Click OK to open Languages & Input Settings. You will need to select <" + stringLabelExpected + "> in your current keyboard to use it", "No thanks", "OK", @@ -307,14 +339,16 @@ public void run() { //System.exit(0); } }); + MainActivity.csLibrary4A.appendToLog("DirectWedgeFragment: EXIT popupAlert"); } void updateCurrentIMEMatched() { if (true) { boolean bFound = false; List list = null; - stringImeExpected = "com.csl.cs108ademoapp.CustomIME"; - if (MainActivity.drawerPositionsDefault != DrawerListContent.DrawerPositions.MAIN) stringLabelExpected = getResources().getString(R.string.app_ime1); + stringImeExpected = getActivity().getPackageName() + ".CustomIME"; + if (MainActivity.drawerPositionsDefault != DrawerListContent.DrawerPositions.MAIN) stringLabelExpected = getResources().getString(R.string.app_newime1); + else if (getActivity().getPackageName().contains("cs710ademoapp")) stringLabelExpected = getResources().getString(R.string.app_newime); else stringLabelExpected = getResources().getString(R.string.app_ime); InputMethodManager inputMethodManager = inputMethodManager = (InputMethodManager) getActivity().getSystemService(getActivity().INPUT_METHOD_SERVICE); @@ -333,7 +367,7 @@ void updateCurrentIMEMatched() { } if (bFound == false) { - MainActivity.csLibrary4A.appendToLog("No " + stringImeExpected + " is found"); + MainActivity.csLibrary4A.appendToLog("DirectWedgeFragment: No " + stringImeExpected + " is found"); if (false) inputMethodManager.showInputMethodPicker(); else popupAlert(); } else if (true) { diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/FdmicroFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/FdmicroFragment.java index a58c812..9c58a82 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/FdmicroFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/FdmicroFragment.java @@ -30,22 +30,22 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa @Override public boolean onOptionsItemSelected(MenuItem item) { InventoryRfidiMultiFragment fragment = (InventoryRfidiMultiFragment) mAdapter.fragment0; - switch (item.getItemId()) { - case R.id.menuAction_clear: - fragment.clearTagsList(); - return true; - case R.id.menuAction_sortRssi: - fragment.sortTagsListByRssi(); - return true; - case R.id.menuAction_sort: - fragment.sortTagsList(); - return true; - case R.id.menuAction_save: - fragment.saveTagsList(); - return true; - default: - return super.onOptionsItemSelected(item); - } + if (item.getItemId() == R.id.menuAction_clear) { + fragment.clearTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_sortRssi) { + fragment.sortTagsListByRssi(); + return true; + } else if (item.getItemId() == R.id.menuAction_sort) { + fragment.sortTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_save) { + fragment.saveTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_share) { + fragment.shareTagsList(); + return true; + } else return super.onOptionsItemSelected(item); } @Override diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/HomeFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/HomeFragment.java index fcf0381..bc0e412 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/HomeFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/HomeFragment.java @@ -29,7 +29,8 @@ public void onStart() { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState, true); - return inflater.inflate(R.layout.home_layout, container, false); + if (getActivity().getPackageName().contains("com.csl.cs710ademoapp")) return inflater.inflate(R.layout.home_layout710, container, false); + else return inflater.inflate(R.layout.home_layout, container, false); } @Override @@ -39,7 +40,9 @@ public void onActivityCreated(Bundle savedInstanceState) { if (true && ((AppCompatActivity) getActivity()).getSupportActionBar() != null) { ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); actionBar.setIcon(android.R.drawable.ic_menu_save); - actionBar.setTitle(R.string.title_activity_home); + if (getActivity().getPackageName().contains("cs710awedgeapp")) actionBar.setTitle(R.string.title_activity_newhome1); + else if (getActivity().getPackageName().contains("cs710ademoapp")) actionBar.setTitle(R.string.title_activity_newhome); + else actionBar.setTitle(R.string.title_activity_home); } MainActivity.mDid = null; if (true || MainActivity.sharedObjects.versioinWarningShown == false) diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/HomeSpecialFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/HomeSpecialFragment.java index 6495fe5..6a2a066 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/HomeSpecialFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/HomeSpecialFragment.java @@ -6,7 +6,9 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; +import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; public class HomeSpecialFragment extends CommonFragment { @@ -25,6 +27,14 @@ public void onActivityCreated(Bundle savedInstanceState) { ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); actionBar.setTitle(R.string.title_activity_special); } + + Button buttonFdmicro = (Button) getActivity().findViewById(R.id.SpecialButtonFdmicro); + Button buttonLanda = (Button) getActivity().findViewById(R.id.SpecialButtonLanda); + if (MainActivity.csLibrary4A.get98XX() == 2) { + buttonFdmicro.setVisibility(View.GONE); buttonLanda.setVisibility(View.GONE); + } + MainActivity.mDid = null; + MainActivity.csLibrary4A.restoreAfterTagSelect(); } public HomeSpecialFragment() { diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/HomeWFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/HomeWFragment.java index f14b83f..5d15898 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/HomeWFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/HomeWFragment.java @@ -35,22 +35,22 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa @Override public boolean onOptionsItemSelected(MenuItem item) { InventoryRfidiMultiFragment fragment1 = (InventoryRfidiMultiFragment) adapter.fragment1; - switch (item.getItemId()) { - case R.id.menuAction_clear: - fragment1.clearTagsList(); - return true; - case R.id.menuAction_sortRssi: - fragment1.sortTagsListByRssi(); - return true; - case R.id.menuAction_sort: - fragment1.sortTagsList(); - return true; - case R.id.menuAction_save: - fragment1.saveTagsList(); - return true; - default: - return super.onOptionsItemSelected(item); - } + if (item.getItemId() == R.id.menuAction_clear) { + fragment1.clearTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_sortRssi) { + fragment1.sortTagsListByRssi(); + return true; + } else if (item.getItemId() == R.id.menuAction_sort) { + fragment1.sortTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_save) { + fragment1.saveTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_share) { + fragment1.shareTagsList(); + return true; + } else return super.onOptionsItemSelected(item); } @Override diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/ImpinjAutoTuneFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/ImpinjAutoTuneFragment.java deleted file mode 100644 index 9937298..0000000 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/ImpinjAutoTuneFragment.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.csl.cs108ademoapp.fragments; - -import android.os.Bundle; - -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentManager; -import androidx.fragment.app.FragmentStatePagerAdapter; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; -import androidx.appcompat.app.ActionBar; - -import android.view.LayoutInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; - -import com.csl.cs108ademoapp.R; - -class ImpinjAutoTuneAdapter extends FragmentStatePagerAdapter { - private final int NO_OF_TABS = 2; - public Fragment fragment0, fragment1; - - @Override - public Fragment getItem(int index) { - Fragment fragment = null; - switch (index) { - default: - fragment = null; - break; - } - return fragment; - } - - @Override - public int getCount() { - return NO_OF_TABS; - } - - @Override - public int getItemPosition(Object object) { - return PagerAdapter.POSITION_NONE; - } - - public ImpinjAutoTuneAdapter(FragmentManager fm) { - super(fm, FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); - } -} - -public class ImpinjAutoTuneFragment extends CommonFragment { - private ActionBar actionBar; - private ViewPager viewPager; - ImpinjAutoTuneAdapter mAdapter; - - private String[] tabs = {"Configuration", "Scan"}; - int iTargetOld, iSessionOld; - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - super.onCreateView(inflater, container, savedInstanceState, true); - return inflater.inflate(R.layout.custom_tabbed_layout, container, false); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - InventoryRfidiMultiFragment fragment1 = (InventoryRfidiMultiFragment) mAdapter.fragment1; - return fragment1.onOptionsItemSelected(item); - } - - @Override - public void onDetach() { - mAdapter.fragment0.onDetach(); - mAdapter.fragment1.onDetach(); - super.onDetach(); - } - - public ImpinjAutoTuneFragment() { - super("ImpinjAutoTuneFragment"); - } -} diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/ImpinjFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/ImpinjFragment.java index eda5306..36b79e9 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/ImpinjFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/ImpinjFragment.java @@ -20,7 +20,7 @@ public class ImpinjFragment extends CommonFragment { private ViewPager viewPager; ImpinjAdapter mAdapter; - private String[] tabs = {"Configuration", "Scan"}; + private String[] tabs = {"Configure", "Scan", "Authenticate"}; int iTargetOld, iSessionOld; @Override @@ -32,22 +32,22 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa @Override public boolean onOptionsItemSelected(MenuItem item) { InventoryRfidiMultiFragment fragment1 = (InventoryRfidiMultiFragment) mAdapter.fragment1; - switch (item.getItemId()) { - case R.id.menuAction_clear: - fragment1.clearTagsList(); - return true; - case R.id.menuAction_sortRssi: - fragment1.sortTagsListByRssi(); - return true; - case R.id.menuAction_sort: - fragment1.sortTagsList(); - return true; - case R.id.menuAction_save: - fragment1.saveTagsList(); - return true; - default: - return super.onOptionsItemSelected(item); - } + if (item.getItemId() == R.id.menuAction_clear) { + fragment1.clearTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_sortRssi) { + fragment1.sortTagsListByRssi(); + return true; + } else if (item.getItemId() == R.id.menuAction_sort) { + fragment1.sortTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_save) { + fragment1.saveTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_share) { + fragment1.shareTagsList(); + return true; + } else return super.onOptionsItemSelected(item); } @Override diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/InventoryBarcodeFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/InventoryBarcodeFragment.java index 9c798a6..6567760 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/InventoryBarcodeFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/InventoryBarcodeFragment.java @@ -19,8 +19,8 @@ import com.csl.cs108ademoapp.R; import com.csl.cs108ademoapp.SaveList2ExternalTask; import com.csl.cs108ademoapp.adapters.ReaderListAdapter; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.NotificationConnector; +import com.csl.cslibrary4a.ReaderDevice; import java.util.Collections; @@ -69,25 +69,22 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menuAction_clear: - clearTagsList(); - return true; - case R.id.menuAction_sortRssi: - //sortTagsListByRssi(); - return true; - case R.id.menuAction_sort: - sortTagsList(); - return true; - case R.id.menuAction_save: - saveTagsList(); - return true; - case R.id.menuAction_share: - shareTagsList(); - return true; - default: - return super.onOptionsItemSelected(item); - } + if (item.getItemId() == R.id.menuAction_clear) { + clearTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_sortRssi) { + //sortTagsListByRssi(); + return true; + } else if (item.getItemId() == R.id.menuAction_sort) { + sortTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_save) { + saveTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_share) { + shareTagsList(); + return true; + } else return super.onOptionsItemSelected(item); } @Override @@ -187,7 +184,7 @@ public InventoryBarcodeFragment() { } void setNotificationListener() { - MainActivity.csLibrary4A.setNotificationListener(new Cs108Library4A.NotificationListener() { + MainActivity.csLibrary4A.setNotificationListener(new NotificationConnector.NotificationListener() { @Override public void onChange() { startStopHandler(true); diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/InventoryRfidSearchFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/InventoryRfidSearchFragment.java index 6368efa..6d15e0c 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/InventoryRfidSearchFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/InventoryRfidSearchFragment.java @@ -1,5 +1,7 @@ package com.csl.cs108ademoapp.fragments; +import static com.csl.cs108ademoapp.MainActivity.tagSelected; + import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; @@ -26,8 +28,9 @@ import com.csl.cs108ademoapp.SelectTag; import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.NotificationConnector; +import com.csl.cslibrary4a.ReaderDevice; +import com.csl.cslibrary4a.RfidReaderChipData; public class InventoryRfidSearchFragment extends CommonFragment { double dBuV_dBm_constant = MainActivity.csLibrary4A.dBuV_dBm_constant; @@ -63,12 +66,14 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - androidx.appcompat.app.ActionBar actionBar; - actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); - actionBar.setIcon(R.drawable.dl_loc); - actionBar.setTitle(R.string.title_activity_geiger); + if (!isTabbed) { + androidx.appcompat.app.ActionBar actionBar; + actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); + actionBar.setIcon(R.drawable.dl_loc); + actionBar.setTitle(R.string.title_activity_geiger); + } - selectTag = new SelectTag((Activity)getActivity ()); + selectTag = new SelectTag((Activity)getActivity(), 0); TableRow tableRowProgressLabel; TextView textViewProgressLabelMin = (TextView) getActivity().findViewById(R.id.geigerProgressLabelMin); TextView textViewProgressLabelMid = (TextView) getActivity().findViewById(R.id.geigerProgressLabelMid); @@ -80,13 +85,6 @@ public void onActivityCreated(Bundle savedInstanceState) { geigerProgress = (ProgressBar) getActivity().findViewById(R.id.geigerProgress); checkBoxGeigerTone = (CheckBox) getActivity().findViewById(R.id.geigerToneCheck); - final ReaderDevice tagSelected = MainActivity.tagSelected; - if (tagSelected != null) { - if (tagSelected.getSelected() == true) { - selectTag.editTextTagID.setText(tagSelected.getAddress()); - } - } - seekGeiger = (SeekBar) getActivity().findViewById(R.id.geigerSeek); seekGeiger.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override @@ -188,12 +186,13 @@ public void onClick(View v) { }); playerN = MainActivity.sharedObjects.playerL; + setupTagID(); } @Override public void onResume() { super.onResume(); - setNotificationListener(); + if (userVisibleHint) setNotificationListener(); } @Override @@ -212,8 +211,36 @@ public void onDestroy() { super.onDestroy(); } - public InventoryRfidSearchFragment() { + boolean userVisibleHint = true; + @Override + public void setUserVisibleHint(boolean isVisibleToUser) { + super.setUserVisibleHint(isVisibleToUser); + if(getUserVisibleHint()) { + userVisibleHint = true; + MainActivity.csLibrary4A.appendToLog("InventoryRfidSearchFragment is now VISIBLE"); + setupTagID(); + MainActivity.csLibrary4A.appendToLog("setNotificationListener in search inventory"); + setNotificationListener(); + } else { + userVisibleHint = false; + MainActivity.csLibrary4A.appendToLog("InventoryRfidSearchFragment is now INVISIBLE"); + MainActivity.csLibrary4A.appendToLog("setNotificationListener NULL in search inventory"); + MainActivity.csLibrary4A.setNotificationListener(null); + } + } + + boolean isTabbed = false; + public InventoryRfidSearchFragment(boolean isTabbed) { super("InventoryRfidSearchFragment"); + this.isTabbed = isTabbed; + } + void setupTagID() { + final ReaderDevice tagSelected = MainActivity.tagSelected; + if (tagSelected != null) { + if (tagSelected.getSelected() == true) { + selectTag.editTextTagID.setText(tagSelected.getAddress()); + } + } } double alertRssi; boolean alerting = false; long alertRssiUpdateTime; @@ -250,9 +277,11 @@ public void run() { }; void setNotificationListener() { - MainActivity.csLibrary4A.setNotificationListener(new Cs108Library4A.NotificationListener() { + MainActivity.csLibrary4A.appendToLog("setNotificationListener A in search inventory"); + MainActivity.csLibrary4A.setNotificationListener(new NotificationConnector.NotificationListener() { @Override public void onChange() { + MainActivity.csLibrary4A.appendToLog("setNotificationListener TRIGGER key is pressed in search inventory."); startStopHandler(true); } }); @@ -288,14 +317,28 @@ void startStopHandler(boolean buttonTrigger) { void startInventoryTask() { started = true; boolean invalidRequest = false; + if (tagSelected != null) { + if (tagSelected.getTid() != null) { + if (tagSelected.getTid().indexOf("E201E") == 0) { + MainActivity.csLibrary4A.setTagRead(1); + MainActivity.csLibrary4A.setAccessBank(3); + MainActivity.csLibrary4A.setAccessOffset(112); + MainActivity.csLibrary4A.setAccessCount(1); + } + } + } int memorybank = memoryBankSpinner.getSelectedItemPosition(); int powerLevel = Integer.valueOf(editTextGeigerAntennaPower.getText().toString()); - if (powerLevel < 0 || powerLevel > 330) invalidRequest = true; - else if (MainActivity.csLibrary4A.setSelectedTag(selectTag.editTextTagID.getText().toString(), memorybank+1, powerLevel) == false) { + if (powerLevel < 0 || powerLevel > 330) { + MainActivity.csLibrary4A.appendToLog("invalidRequest = " + invalidRequest + ", with powerLevel = " + powerLevel); + invalidRequest = true; + } else if (MainActivity.csLibrary4A.setSelectedTag(selectTag.editTextTagID.getText().toString(), memorybank+1, powerLevel) == false) { invalidRequest = true; + MainActivity.csLibrary4A.appendToLog("invalidRequest = " + invalidRequest + ", with setSelectedTag as false, string = " + selectTag.editTextTagID.getText().toString() + ", bank = " + memorybank+1 + ", power = " + powerLevel); } else { - MainActivity.csLibrary4A.startOperation(Cs108Library4A.OperationTypes.TAG_SEARCHING); + MainActivity.csLibrary4A.startOperation(RfidReaderChipData.OperationTypes.TAG_SEARCHING); } + MainActivity.csLibrary4A.appendToLog("invalidRequest = " + invalidRequest); geigerSearchTask = new InventoryRfidTask(getContext(), -1,-1, 0, 0, 0, 0, invalidRequest, true, null, null, geigerTagRssiView, null, geigerRunTime, geigerTagGotView, geigerVoltageLevelView, null, button, rfidRateView); diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/InventoryRfidSimpleFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/InventoryRfidSimpleFragment.java index 977ad9c..4236116 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/InventoryRfidSimpleFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/InventoryRfidSimpleFragment.java @@ -22,8 +22,9 @@ import com.csl.cs108ademoapp.SaveList2ExternalTask; import com.csl.cs108ademoapp.SharedObjects; import com.csl.cs108ademoapp.adapters.ReaderListAdapter; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.NotificationConnector; +import com.csl.cslibrary4a.ReaderDevice; +import com.csl.cslibrary4a.RfidReaderChipData; import java.util.ArrayList; import java.util.Collections; @@ -31,8 +32,6 @@ public class InventoryRfidSimpleFragment extends CommonFragment { final private boolean bAdd2End = false; - private boolean bMultiBank = false, bMultiBankInventory = false, bBapInventory = false, bctesiusInventory = false; - private String mDid = null; int vibrateTimeBackup = 0; private ListView rfidListView; @@ -49,7 +48,7 @@ void clearTagsList() { rfidYieldView.setText(""); rfidRateView.setText(""); MainActivity.tagSelected = null; - MainActivity.sharedObjects.tagsList.clear(); + MainActivity.sharedObjects.tagsList.clear(); MainActivity.sharedObjects.tagsIndexList.clear(); readerListAdapter.notifyDataSetChanged(); MainActivity.mLogView.setText(""); } @@ -88,43 +87,22 @@ void shareTagsList() { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menuAction_clear: - clearTagsList(); - return true; - case R.id.menuAction_sortRssi: - sortTagsListByRssi(); - return true; - case R.id.menuAction_sort: - sortTagsList(); - return true; - case R.id.menuAction_save: - saveTagsList(); - return true; - case R.id.menuAction_share: - shareTagsList(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (getArguments() != null) { - bMultiBank = getArguments().getBoolean("bMultiBank"); - mDid = getArguments().getString("mDid"); - if (bMultiBank && mDid == null) { - bMultiBankInventory = true; - } else if (bMultiBank && mDid != null) { - if (mDid.matches("E200B0")) { - bBapInventory = true; - } else if (mDid.matches("E203510")) { - bctesiusInventory = true; - } - } - } + if (item.getItemId() == R.id.menuAction_clear) { + clearTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_sortRssi) { + sortTagsListByRssi(); + return true; + } else if (item.getItemId() == R.id.menuAction_sort) { + sortTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_save) { + saveTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_share) { + shareTagsList(); + return true; + } else return super.onOptionsItemSelected(item); } @Override @@ -152,7 +130,7 @@ public void onActivityCreated(Bundle savedInstanceState) { boolean needDupElim = true; boolean need4Extra1 = MainActivity.csLibrary4A.getPortNumber() > 1 ? true : false; - boolean need4Extra2 = (mDid != null ? true : false); + boolean need4Extra2 = false; readerListAdapter = new ReaderListAdapter(getActivity(), R.layout.readers_list_item, MainActivity.sharedObjects.tagsList, bSelect4detail, true, needDupElim, need4Extra1, need4Extra2); rfidListView.setAdapter(readerListAdapter); @@ -249,7 +227,7 @@ public InventoryRfidSimpleFragment() { } void setNotificationListener() { - MainActivity.csLibrary4A.setNotificationListener(new Cs108Library4A.NotificationListener() { + MainActivity.csLibrary4A.setNotificationListener(new NotificationConnector.NotificationListener() { @Override public void onChange() { MainActivity.csLibrary4A.appendToLog("TRIGGER key is pressed."); @@ -257,20 +235,6 @@ public void onChange() { } }); } - - boolean needResetData = false; - void resetSelectData() { - MainActivity.csLibrary4A.restoreAfterTagSelect(); - if (needResetData) { - MainActivity.csLibrary4A.setTagRead(0); - MainActivity.csLibrary4A.setAccessBank(1); - MainActivity.csLibrary4A.setAccessOffset(0); - MainActivity.csLibrary4A.setAccessCount(0); - needResetData = false; - } - if (mDid != null && mDid.matches("E203510")) MainActivity.csLibrary4A.setSelectCriteriaDisable(1); - } - void startStopHandler(boolean buttonTrigger) { if (buttonTrigger) MainActivity.csLibrary4A.appendToLog("getTriggerButtonStatus = " + MainActivity.csLibrary4A.getTriggerButtonStatus()); else MainActivity.csLibrary4A.appendToLog("TriggerButton is pressed"); @@ -304,13 +268,13 @@ void startStopHandler(boolean buttonTrigger) { iTagTarget = Integer.valueOf(editText.getText().toString()); iTagGot = 0; - uplinkPacketList.clear(); MainActivity.sharedObjects.tagsIndexList.clear(); + uplinkPacketList.clear(); timeMillis = System.currentTimeMillis(); startTimeMillis = timeMillis; runTimeMillis = timeMillis; total = 0; } - MainActivity.sharedObjects.tagsList.clear(); + MainActivity.sharedObjects.tagsList.clear(); MainActivity.sharedObjects.tagsIndexList.clear(); rfidYieldView.setText(""); rfidRateView.setText(""); button.setText("Stop"); @@ -336,11 +300,11 @@ void startStopHandler(boolean buttonTrigger) { long timeMillis, startTimeMillis, runTimeMillis, rateTimeMillis; int iTagTarget, iTagGot; Handler myHandler = new Handler(Looper.getMainLooper()); - ArrayList uplinkPacketList = new ArrayList<>(); + ArrayList uplinkPacketList = new ArrayList<>(); Runnable runnableSimpleInentory = new Runnable() { @Override public void run() { - Cs108Library4A.Rx000pkgData uplinkPacket; + RfidReaderChipData.Rx000pkgData uplinkPacket; if (MainActivity.csLibrary4A.isBleConnected() && bRunningInventory) { while (MainActivity.csLibrary4A.mrfidToWriteSize() == 0 && (iTagTarget == 0 || iTagGot < iTagTarget)) { if (System.currentTimeMillis() > runTimeMillis + 1000) { @@ -396,9 +360,9 @@ void inventoryHandler_tag() { int total = 0; while (uplinkPacketList.size() != 0) { - Cs108Library4A.Rx000pkgData uplinkPacket = uplinkPacketList.get(0); + RfidReaderChipData.Rx000pkgData uplinkPacket = uplinkPacketList.get(0); uplinkPacketList.remove(0); - Cs108Library4A.Rx000pkgData tagData = uplinkPacket; + RfidReaderChipData.Rx000pkgData tagData = uplinkPacket; boolean match = false; total++; @@ -428,8 +392,7 @@ void inventoryHandler_tag() { match = true; } if (match == false) { - deviceTag = new ReaderDevice(MainActivity.csLibrary4A.byteArrayToString(uplinkPacket.decodedEpc), - null, false, null, + deviceTag = new ReaderDevice("", MainActivity.csLibrary4A.byteArrayToString(uplinkPacket.decodedEpc), false, null, MainActivity.csLibrary4A.byteArrayToString(uplinkPacket.decodedPc), null, (uplinkPacket.decodedCrc != null ? MainActivity.csLibrary4A.byteArrayToString(uplinkPacket.decodedCrc) : null), @@ -459,170 +422,8 @@ public void run() { void startInventoryTask() { MainActivity.csLibrary4A.appendToLog("startInventoryTask"); - int extra1Bank = -1, extra2Bank = -1; - int extra1Count = 0, extra2Count = 0; - int extra1Offset = 0, extra2Offset = 0; - String mDid = this.mDid; - - MainActivity.csLibrary4A.appendToLog("Rin: mDid = " + mDid + ", MainActivity.mDid = " + MainActivity.mDid); - if (mDid != null) { - if (MainActivity.mDid != null && mDid.length() == 0) mDid = MainActivity.mDid; - extra2Bank = 2; - extra2Offset = 0; - extra2Count = 2; - if (mDid.matches("E200B0")) { - extra1Bank = 2; - extra1Offset = 0; - extra1Count = 2; - extra2Bank = 3; - extra2Offset = 0x2d; - extra2Count = 1; - } else if (mDid.matches("E203510")) { - extra1Bank = 2; - extra1Offset = 0; - extra1Count = 2; - extra2Bank = 3; - extra2Offset = 8; - extra2Count = 2; - } else if (mDid.indexOf("E280B12") == 0) { - extra1Bank = 2; - extra1Offset = 0; - extra1Count = 2; - extra2Bank = 3; - extra2Offset = 0x120; - extra2Count = 1; - } else if (mDid.indexOf("E280B0") == 0) { - extra1Bank = 3; - extra1Offset = 188; - extra1Count = 2; - //extra2Bank = 3; - //extra2Offset = 0x10d; - //extra2Count = 1; - } else if (mDid.matches("E282402")) { - extra1Bank = 0; - extra1Offset = 11; - extra1Count = 1; - extra2Bank = 0; - extra2Offset = 13; - extra2Count = 1; - } else if (mDid.matches("E282403")) { - extra1Bank = 0; - extra1Offset = 12; - extra1Count = 3; - extra2Bank = 3; - extra2Offset = 8; - extra2Count = 4; - } else if (mDid.matches("E282405")) { - extra1Bank = 0; - extra1Offset = 10; - extra1Count = 5; - extra2Bank = 3; - extra2Offset = 0x12; - extra2Count = 4; - } - if (mDid.indexOf("E280B12") == 0) { - if (MainActivity.mDid.matches("E280B12B")) { - MainActivity.csLibrary4A.setSelectCriteria(1, true, 4, 0, 5, 1, 0x220, "8321"); - MainActivity.csLibrary4A.appendToLog("Hello123: Set Sense at Select !!!"); - } else { //if (MainActivity.mDid.matches("E280B12A")) { - MainActivity.csLibrary4A.setSelectCriteriaDisable(1); - MainActivity.csLibrary4A.appendToLog("Hello123: Set Sense at BOOT !!!"); - } - } else if (mDid.matches("E203510")) { - MainActivity.csLibrary4A.setSelectCriteria(1, true, 7, 4, 0, 2, 0, mDid); - } else if (mDid.matches("E28240")) { - if (MainActivity.selectFor != 0) { - MainActivity.csLibrary4A.setSelectCriteriaDisable(1); - MainActivity.csLibrary4A.setSelectCriteriaDisable(2); - MainActivity.selectFor = 0; - } - } else if (mDid.matches("E282402")) { - if (MainActivity.selectFor != 2) { - MainActivity.csLibrary4A.setSelectCriteria(1, true, 4, 2, 0, 3, 0xA0, "20"); - MainActivity.csLibrary4A.setSelectCriteriaDisable(2); - MainActivity.selectFor = 2; - } - } else if (mDid.matches("E282403")) { - if (MainActivity.selectFor != 3) { - MainActivity.csLibrary4A.setSelectCriteria(1, true, 4, 2, 0, 3, 0xD0, "1F"); - MainActivity.csLibrary4A.setSelectCriteria(2, true, 4, 2, 5, 3, 0xE0, ""); - MainActivity.selectFor = 3; - } - } else if (mDid.matches("E282405")) { - if (MainActivity.selectFor != 5) { - MainActivity.csLibrary4A.setSelectCriteria(1, true, 4, 5, MainActivity.selectHold, 3, 0x3B0, "00"); - MainActivity.csLibrary4A.setSelectCriteriaDisable(2); - if (MainActivity.csLibrary4A.getRetryCount() < 2) MainActivity.csLibrary4A.setRetryCount(2); - MainActivity.selectFor = 5; - } - } else { - if (MainActivity.selectFor != -1) { - MainActivity.csLibrary4A.setSelectCriteriaDisable(1); - MainActivity.csLibrary4A.setSelectCriteriaDisable(2); - MainActivity.selectFor = -1; - } - } - boolean bNeedSelectedTagByTID = true; - if (mDid.matches("E2806894")) { - if (MainActivity.mDid.matches("E2806894A")) { - MainActivity.csLibrary4A.setInvBrandId(false); - MainActivity.csLibrary4A.setSelectCriteriaDisable(1); - } else if (MainActivity.mDid.matches("E2806894B")) { - MainActivity.csLibrary4A.setInvBrandId(false); - MainActivity.csLibrary4A.setSelectCriteria(0, true, 4, 0, 1, 0x203, "1", true); - MainActivity.csLibrary4A.setSelectCriteria(1, true, 4, 2, 2, 0, "E2806894", false); - if (true) bNeedSelectedTagByTID = false; - } else if (MainActivity.mDid.matches("E2806894C") || MainActivity.mDid.matches("E2806894d")) { - MainActivity.csLibrary4A.setInvBrandId(true); - MainActivity.csLibrary4A.setSelectCriteria(0, true, 4, 0, 1, 0x204, "1", true); - MainActivity.csLibrary4A.setSelectCriteria(1, true, 4, 2, 2, 0, "E2806894", false); - if (true) bNeedSelectedTagByTID = false; - } - } else if (mDid.indexOf("E28011") == 0) bNeedSelectedTagByTID = false; - if (bNeedSelectedTagByTID) { - MainActivity.csLibrary4A.setSelectCriteriaDisable(0); - MainActivity.csLibrary4A.setInvAlgo(MainActivity.csLibrary4A.getInvAlgo()); - } - } - - if (bMultiBank == false) { - MainActivity.csLibrary4A.restoreAfterTagSelect(); - MainActivity.csLibrary4A.startOperation(Cs108Library4A.OperationTypes.TAG_INVENTORY_COMPACT); - } else { - boolean inventoryUcode8_bc = mDid != null && mDid.matches("E2806894") && MainActivity.mDid != null && (MainActivity.mDid.matches("E2806894B") || MainActivity.mDid.matches("E2806894C")); - if ((extra1Bank != -1 && extra1Count != 0) || (extra2Bank != -1 && extra2Count != 0)) { - if (extra1Bank == -1 || extra1Count == 0) { - extra1Bank = extra2Bank; - extra2Bank = 0; - extra1Count = extra2Count; - extra2Count = 0; - extra1Offset = extra2Offset; - extra2Offset = 0; - } - if (extra1Bank == 1) extra1Offset += 2; - if (extra2Bank == 1) extra2Offset += 2; - MainActivity.csLibrary4A.appendToLog("HelloK: mDid = " + mDid + ", MainActivity.mDid = " + MainActivity.mDid); - if (inventoryUcode8_bc == false) { - MainActivity.csLibrary4A.appendToLog("BleStreamOut: Set Multibank"); - MainActivity.csLibrary4A.setTagRead(extra2Count != 0 && extra2Count != 0 ? 2 : 1); - MainActivity.csLibrary4A.setAccessBank(extra1Bank, extra2Bank); - MainActivity.csLibrary4A.setAccessOffset(extra1Offset, extra2Offset); - MainActivity.csLibrary4A.setAccessCount(extra1Count, extra2Count); - needResetData = true; - } else if (needResetData) { - MainActivity.csLibrary4A.setTagRead(0); - MainActivity.csLibrary4A.setAccessBank(1); - MainActivity.csLibrary4A.setAccessOffset(0); - MainActivity.csLibrary4A.setAccessCount(0); - needResetData = false; - } - } else resetSelectData(); - MainActivity.csLibrary4A.appendToLog("startInventoryTask: going to startOperation"); - if (inventoryUcode8_bc) - MainActivity.csLibrary4A.startOperation(Cs108Library4A.OperationTypes.TAG_INVENTORY_COMPACT); - else - MainActivity.csLibrary4A.startOperation(Cs108Library4A.OperationTypes.TAG_INVENTORY); - } + MainActivity.csLibrary4A.restoreAfterTagSelect(); + MainActivity.csLibrary4A.startOperation(RfidReaderChipData.OperationTypes.TAG_INVENTORY_COMPACT); } private final Runnable runnableCheckReady = new Runnable() { diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/InventoryRfidiMultiFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/InventoryRfidiMultiFragment.java index 3e7340b..46ecd92 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/InventoryRfidiMultiFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/InventoryRfidiMultiFragment.java @@ -21,24 +21,28 @@ import android.widget.TextView; import android.widget.Toast; +import com.csl.cs108ademoapp.CustomPopupWindow; +import com.csl.cs108ademoapp.GenericTextWatcher; import com.csl.cs108ademoapp.InventoryRfidTask; import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; import com.csl.cs108ademoapp.SaveList2ExternalTask; import com.csl.cs108ademoapp.adapters.ReaderListAdapter; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cslibrary4a.NotificationConnector; +import com.csl.cslibrary4a.ReaderDevice; +import com.csl.cslibrary4a.RfidReaderChipData; import java.util.Collections; import java.util.Comparator; public class InventoryRfidiMultiFragment extends CommonFragment { final private boolean bAdd2End = false; - private boolean bMultiBank = false, bMultiBankInventory = false, bBapInventory = false, bctesiusInventory = false; + private boolean bMultiBank = false, bMultiBankInventory = false, bctesiusInventory = false; private String mDid = null; int vibrateTimeBackup = 0; - private CheckBox checkBoxDupElim, checkBoxFilterByTid; + private CheckBox checkBoxDupElim, checkBoxFilterByTid, checkBoxFilterByEpc, checkBoxFilterByProtect; + private EditText editTextProtectPassword; private Spinner spinnerBank1, spinnerBank2; private ListView rfidListView; private TextView rfidEmptyView; @@ -97,32 +101,29 @@ void shareTagsList() { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - super.onCreateView(inflater, container, savedInstanceState, bMultiBankInventory | bBapInventory | bctesiusInventory); + super.onCreateView(inflater, container, savedInstanceState, bMultiBankInventory | bctesiusInventory); return inflater.inflate(R.layout.fragment_inventory_rfid_multi, container, false); } @Override public boolean onOptionsItemSelected(MenuItem item) { MainActivity.csLibrary4A.appendToLog("InventoryRfidMultiFragment: onOptionsItemSelected"); - switch (item.getItemId()) { - case R.id.menuAction_clear: - clearTagsList(); - return true; - case R.id.menuAction_sortRssi: - sortTagsListByRssi(); - return true; - case R.id.menuAction_sort: - sortTagsList(); - return true; - case R.id.menuAction_save: - saveTagsList(); - return true; - case R.id.menuAction_share: - shareTagsList(); - return true; - default: - return super.onOptionsItemSelected(item); - } + if (item.getItemId() == R.id.menuAction_clear) { + clearTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_sortRssi) { + sortTagsListByRssi(); + return true; + } else if (item.getItemId() == R.id.menuAction_sort) { + sortTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_save) { + saveTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_share) { + shareTagsList(); + return true; + } else return super.onOptionsItemSelected(item); } @Override @@ -134,9 +135,10 @@ public void onCreate(Bundle savedInstanceState) { if (bMultiBank && mDid == null) { bMultiBankInventory = true; } else if (bMultiBank && mDid != null) { - if (mDid.matches("E200B0")) { - bBapInventory = true; - } else if (mDid.matches("E203510") || mDid.matches("E283A")) { + if (mDid.matches("E2003") + || mDid.matches("E200B0") + || mDid.matches("E203510") + || mDid.matches("E283A")) { bctesiusInventory = true; } } @@ -148,21 +150,23 @@ public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); MainActivity.selectFor = -1; - if (bMultiBankInventory | bBapInventory | bctesiusInventory) { + if (bMultiBankInventory | bctesiusInventory) { androidx.appcompat.app.ActionBar actionBar; actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); actionBar.setIcon(R.drawable.dl_inv); if (bMultiBankInventory) actionBar.setTitle(R.string.title_activity_inventoryRfidMulti); - else if (bBapInventory) actionBar.setTitle(R.string.title_activity_bap); else if (bctesiusInventory) { - if (mDid.matches("E283A")) actionBar.setTitle("AS321x"); - else actionBar.setTitle(R.string.title_activity_ctesisu); + if (mDid.matches("E2003")) actionBar.setTitle("Alien"); + else if (mDid.matches("E200B0")) actionBar.setTitle(R.string.title_activity_bap); + else if (mDid.matches("E203510")) actionBar.setTitle(R.string.title_activity_ctesisu); + else if (mDid.matches("E283A")) actionBar.setTitle("AS321x"); } } if (bMultiBankInventory) { LinearLayout linearLayout = (LinearLayout) getActivity().findViewById(R.id.inventoryMultibankSetting); linearLayout.setVisibility(View.VISIBLE); checkBoxDupElim = (CheckBox) getActivity().findViewById(R.id.accessInventoryDupElim); + checkBoxDupElim.setVisibility(View.VISIBLE); checkBoxDupElim.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -173,13 +177,22 @@ public void onClick(View view) { } checkBoxFilterByTid = (CheckBox) getActivity().findViewById(R.id.accessInventoryFilterByTid); + MainActivity.csLibrary4A.appendToLog("mDid = " + mDid + ", MainActivity.mDid = " + MainActivity.mDid); if (mDid != null) { if (mDid.indexOf("E2827001") == 0) { checkBoxFilterByTid.setVisibility(View.VISIBLE); - checkBoxFilterByTid.setText("filter FM13DT160 only"); + //checkBoxFilterByTid.setText("filter FM13DT160 only"); } + } else if (bMultiBankInventory == false) { + checkBoxFilterByEpc = (CheckBox) getActivity().findViewById(R.id.accessInventoryFilterByEpc); + checkBoxFilterByEpc.setVisibility(View.VISIBLE); } + checkBoxFilterByProtect = (CheckBox) getActivity().findViewById(R.id.accessInventoryFilterByProtect); + editTextProtectPassword = (EditText) getActivity().findViewById(R.id.accessInventoryProtectPassword); + editTextProtectPassword.addTextChangedListener(new GenericTextWatcher(editTextProtectPassword, 8)); + editTextProtectPassword.setText("00000000"); + ArrayAdapter lockAdapter = ArrayAdapter.createFromResource(getActivity(), R.array.memoryBank_options, R.layout.custom_spinner_layout); lockAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); @@ -210,10 +223,17 @@ public void onItemClick(AdapterView parent, View view, int position, long id) readerDevice.setSelected(false); } else { readerDevice.setSelected(true); + String strPopup = readerDevice.getUpcSerial(); + MainActivity.csLibrary4A.appendToLog("strPopup = " + (strPopup == null ? "null" : strPopup)); + if (strPopup != null && strPopup.trim().length() != 0) { + strPopup = MainActivity.csLibrary4A.getUpcSerialDetail(strPopup); + CustomPopupWindow epcSerialPopupWindow = new CustomPopupWindow(MainActivity.mContext); + epcSerialPopupWindow.popupStart(strPopup, false); + } } MainActivity.sharedObjects.tagsList.set(position, readerDevice); - if (readerDevice.getSelected()) MainActivity.tagSelected = readerDevice; - else MainActivity.tagSelected = null; + if (readerDevice.getSelected()) MainActivity.tagSelected = readerDevice; + else MainActivity.tagSelected = null; for (int i = 0; i < MainActivity.sharedObjects.tagsList.size(); i++) { if (i != position) { ReaderDevice readerDevice1 = MainActivity.sharedObjects.tagsList.get(i); @@ -265,9 +285,7 @@ public void onClick(View v) { public void onResume() { super.onResume(); if (DEBUG) MainActivity.csLibrary4A.appendToLog("InventoryRfidiMultiFragment().onResume(): userVisibleHint = " + userVisibleHint); - if (userVisibleHint) { - setNotificationListener(); - } + if (userVisibleHint) setNotificationListener(); } @Override @@ -300,10 +318,25 @@ public void setUserVisibleHint(boolean isVisibleToUser) { if(getUserVisibleHint()) { userVisibleHint = true; MainActivity.csLibrary4A.appendToLog("InventoryRfidiMultiFragment is now VISIBLE"); + MainActivity.csLibrary4A.appendToLog("11 mDid = " + mDid + ", MainActivity.mDid = " + MainActivity.mDid); + if (MainActivity.mDid != null && MainActivity.mDid.indexOf("E28011") == 0) { + int iValue = Integer.valueOf(MainActivity.mDid.substring(6, 8), 16); + iValue &= 0x0F; + MainActivity.csLibrary4A.appendToLog(String.format("iValue = 0x%X", iValue)); + if (iValue > 0 && iValue < 6) { + checkBoxFilterByProtect.setVisibility(View.VISIBLE); + editTextProtectPassword.setVisibility(View.VISIBLE); + } else { + checkBoxFilterByProtect.setVisibility(View.GONE); checkBoxFilterByProtect.setChecked(false); + editTextProtectPassword.setVisibility(View.GONE); + } + } + MainActivity.csLibrary4A.appendToLog("setNotificationListener in multibank inventory"); setNotificationListener(); } else { userVisibleHint = false; MainActivity.csLibrary4A.appendToLog("InventoryRfidiMultiFragment is now INVISIBLE"); + MainActivity.csLibrary4A.appendToLog("setNotificationListener null in multibank inventory"); MainActivity.csLibrary4A.setNotificationListener(null); if (inventoryRfidTask != null) { inventoryRfidTask.taskCancelReason = InventoryRfidTask.TaskCancelRReason.STOP; @@ -326,10 +359,11 @@ public InventoryRfidiMultiFragment() { } void setNotificationListener() { - MainActivity.csLibrary4A.setNotificationListener(new Cs108Library4A.NotificationListener() { + MainActivity.csLibrary4A.appendToLog("setNotificationListener A in multibank inventory"); + MainActivity.csLibrary4A.setNotificationListener(new NotificationConnector.NotificationListener() { @Override public void onChange() { - MainActivity.csLibrary4A.appendToLog("TRIGGER key is pressed."); + MainActivity.csLibrary4A.appendToLog("setNotificationListener TRIGGER key is pressed in multibank inventory."); startStopHandler(true); } }); @@ -337,7 +371,9 @@ public void onChange() { boolean needResetData = false; void resetSelectData() { - MainActivity.csLibrary4A.restoreAfterTagSelect(); + MainActivity.csLibrary4A.appendToLog("mDid = " + mDid + ", MainActivity.mDid = " + MainActivity.mDid); + if (MainActivity.mDid != null && MainActivity.mDid.indexOf("E282405") == 0) { } + else MainActivity.csLibrary4A.restoreAfterTagSelect(); if (needResetData) { MainActivity.csLibrary4A.setTagRead(0); MainActivity.csLibrary4A.setAccessBank(1); @@ -348,6 +384,7 @@ void resetSelectData() { if (mDid != null && mDid.matches("E203510")) MainActivity.csLibrary4A.setSelectCriteriaDisable(1); } void startStopHandler(boolean buttonTrigger) { + MainActivity.csLibrary4A.appendToLog("0 buttonTrigger is " + buttonTrigger); if (buttonTrigger) MainActivity.csLibrary4A.appendToLog("BARTRIGGER: getTriggerButtonStatus = " + MainActivity.csLibrary4A.getTriggerButtonStatus()); if (MainActivity.sharedObjects.runningInventoryBarcodeTask) { Toast.makeText(MainActivity.mContext, "Running barcode inventory", Toast.LENGTH_SHORT).show(); @@ -389,13 +426,26 @@ void startInventoryTask() { int extra1Offset = 0, extra2Offset = 0; String mDid = this.mDid; - MainActivity.csLibrary4A.appendToLog("Rin: mDid = " + mDid + ", MainActivity.mDid = " + MainActivity.mDid); + MainActivity.csLibrary4A.appendToLog("Rin: mDid = " + (mDid == null ? "null" : mDid) + ", MainActivity.mDid = " + MainActivity.mDid + ", bMultiBankInventory = " + bMultiBankInventory); + if (mDid != null && MainActivity.mDid != null) { + if (MainActivity.mDid.indexOf("E280B12") != 0) mDid = MainActivity.mDid; + } if (mDid != null) { + MainActivity.csLibrary4A.appendToLog("mDid is valid as " + mDid); + //if (MainActivity.csLibrary4A.getSelectEnable()) + MainActivity.csLibrary4A.setSelectCriteriaDisable(-1); if (MainActivity.mDid != null && mDid.length() == 0) mDid = MainActivity.mDid; + MainActivity.csLibrary4A.appendToLog("new mDid is " + mDid); extra2Bank = 2; extra2Offset = 0; extra2Count = 2; - if (mDid.matches("E200B0")) { + MainActivity.csLibrary4A.appendToLog("mDid = " + mDid); + if (mDid.matches("E2801101") || mDid.matches("E2801102") || mDid.matches("E2801103") || mDid.matches("E2801104") || mDid.matches("E2801105")) { + extra1Bank = 0; + extra1Offset = 4; + extra1Count = 1; + if (mDid.matches("E2801101")) extra2Count = 6; + } else if (mDid.matches("E200B0")) { extra1Bank = 2; extra1Offset = 0; extra1Count = 2; @@ -430,6 +480,14 @@ void startInventoryTask() { //extra2Bank = 3; //extra2Offset = 0x10d; //extra2Count = 1; + } else if (mDid.indexOf("E281D") == 0) { + //extra1Bank = 0; + //extra1Offset = 4; + //extra1Count = 1; + } else if (mDid.indexOf("E201E") == 0) { + extra1Bank = 3; + extra1Offset = 112; + extra1Count = 1; } else if (mDid.matches("E282402")) { extra1Bank = 0; extra1Offset = 11; @@ -452,53 +510,54 @@ void startInventoryTask() { extra2Offset = 0x12; extra2Count = 4; } + MainActivity.csLibrary4A.appendToLog("mDid = " + mDid); if (mDid.indexOf("E280B12") == 0) { if (MainActivity.mDid.matches("E280B12B")) { - MainActivity.csLibrary4A.setSelectCriteria(1, true, 4, 0, 5, 1, 0x220, "8321"); + MainActivity.csLibrary4A.setSelectCriteria(0, true, 4, 0, 5, 1, 0x220, "8321"); MainActivity.csLibrary4A.appendToLog("Hello123: Set Sense at Select !!!"); } else { //if (MainActivity.mDid.matches("E280B12A")) { - MainActivity.csLibrary4A.setSelectCriteriaDisable(1); + MainActivity.csLibrary4A.setSelectCriteriaDisable(-1); MainActivity.csLibrary4A.appendToLog("Hello123: Set Sense at BOOT !!!"); } } else if (mDid.matches("E203510")) { - MainActivity.csLibrary4A.setSelectCriteria(1, true, 7, 4, 0, 2, 0, mDid); + MainActivity.csLibrary4A.setSelectCriteria(0, true, 7, 4, 0, 2, 0, mDid); if (MainActivity.csLibrary4A.get98XX() == 2) MainActivity.csLibrary4A.setCurrentLinkProfile(1); } else if (mDid.matches("E283A")) { if (MainActivity.csLibrary4A.get98XX() == 2) MainActivity.csLibrary4A.setCurrentLinkProfile(9); } else if (mDid.matches("E28240")) { if (MainActivity.selectFor != 0) { - MainActivity.csLibrary4A.setSelectCriteriaDisable(1); - MainActivity.csLibrary4A.setSelectCriteriaDisable(2); + MainActivity.csLibrary4A.setSelectCriteriaDisable(-1); MainActivity.selectFor = 0; } } else if (mDid.matches("E282402")) { + MainActivity.csLibrary4A.appendToLog("selectFor = " + MainActivity.selectFor); if (MainActivity.selectFor != 2) { - MainActivity.csLibrary4A.setSelectCriteria(1, true, 4, 2, 0, 3, 0xA0, "20"); - MainActivity.csLibrary4A.setSelectCriteriaDisable(2); + MainActivity.csLibrary4A.setSelectCriteria(0, true, 4, 2, 0, 3, 0xA0, "20"); MainActivity.selectFor = 2; } } else if (mDid.matches("E282403")) { if (MainActivity.selectFor != 3) { - MainActivity.csLibrary4A.setSelectCriteria(1, true, 4, 2, 0, 3, 0xD0, "1F"); - MainActivity.csLibrary4A.setSelectCriteria(2, true, 4, 2, 5, 3, 0xE0, ""); + MainActivity.csLibrary4A.setSelectCriteria(0, true, 4, 2, 0, 3, 0xD0, "1F"); + MainActivity.csLibrary4A.setSelectCriteria(1, true, 4, 2, 5, 3, 0xE0, ""); MainActivity.selectFor = 3; } } else if (mDid.matches("E282405")) { if (MainActivity.selectFor != 5) { - MainActivity.csLibrary4A.setSelectCriteria(1, true, 4, 5, MainActivity.selectHold, 3, 0x3B0, "00"); + MainActivity.csLibrary4A.setSelectCriteria(0, true, 4, 5, MainActivity.selectHold, 3, 0x3B0, "00"); MainActivity.csLibrary4A.setSelectCriteriaDisable(2); if (MainActivity.csLibrary4A.getRetryCount() < 2) MainActivity.csLibrary4A.setRetryCount(2); MainActivity.selectFor = 5; } } else { + MainActivity.csLibrary4A.appendToLog("MainActivity.selectFor = " + MainActivity.selectFor); if (MainActivity.selectFor != -1) { - MainActivity.csLibrary4A.setSelectCriteriaDisable(1); - MainActivity.csLibrary4A.setSelectCriteriaDisable(2); + MainActivity.csLibrary4A.setSelectCriteriaDisable(-1); MainActivity.selectFor = -1; } } boolean bNeedSelectedTagByTID = true; - if (mDid.matches("E2806894")) { + if (mDid.indexOf("E2806894") == 0) { + mDid = "E2806894"; Log.i(TAG, "HelloK: Find E2806894 with MainActivity.mDid = " + MainActivity.mDid); if (MainActivity.mDid.matches("E2806894A")) { Log.i(TAG, "HelloK: Find E2806894A"); @@ -522,16 +581,28 @@ void startInventoryTask() { if (bNeedSelectedTagByTID) { String strMdid = mDid; if (strMdid.indexOf("E28011") == 0) { - int iValue = Integer.valueOf(strMdid.substring(6, 8), 16); + int iValue = Integer.valueOf(strMdid.substring(6, 8), 16); iValue &= 0x0F; MainActivity.csLibrary4A.appendToLog(String.format("iValue = 0x%X", iValue)); - if ((iValue & 0x40) != 0) strMdid = "E2C011"; - else if ((iValue & 0x80) != 0) strMdid = "E280117"; - else strMdid = strMdid.substring(0, 6); + if (iValue == 1) strMdid = "E2C011A2"; + else if (iValue == 2) strMdid = "E28011C"; + else if (iValue == 3) strMdid = "E28011B"; + else if (iValue == 4) strMdid = "E28011A"; + else if (iValue == 5) strMdid = "E280119"; + else if (iValue == 6) strMdid = "E2801171"; + else if (iValue == 7) strMdid = "E2801170"; + else if (iValue == 8) strMdid = "E2801150"; + else strMdid = "E2001"; //strMdid.substring(0, 5); even E2801 or E2C01 will return } - MainActivity.csLibrary4A.appendToLog("revised mDid = " + strMdid); - if (checkBoxFilterByTid.isChecked()) MainActivity.csLibrary4A.setSelectedTagByTID(strMdid, -1); - else { - MainActivity.csLibrary4A.setSelectCriteriaDisable(0); + MainActivity.csLibrary4A.appendToLog("revised mDid = " + strMdid + " with checkBoxFilterByTid.isChecked() = " + checkBoxFilterByTid.isChecked()); + if (checkBoxFilterByTid.isChecked()) { + MainActivity.csLibrary4A.appendToLog("setSelectCriteria: Going to setSelectedByTID"); + if (checkBoxFilterByProtect.isChecked()) { + if (editTextProtectPassword.getText().toString().trim().length() == 0) editTextProtectPassword.setText("00000000"); + MainActivity.csLibrary4A.setSelectCriteria(-1, true, 4, 0, 3, 0, editTextProtectPassword.getText().toString(), false); + } + MainActivity.csLibrary4A.setSelectedTagByTID(strMdid, -1); + } else { + //MainActivity.csLibrary4A.setSelectCriteriaDisable(-1); MainActivity.csLibrary4A.setInvAlgo(MainActivity.csLibrary4A.getInvAlgo()); } } @@ -554,14 +625,16 @@ void startInventoryTask() { } } - MainActivity.csLibrary4A.appendToLog("bMultiBank = " + bMultiBank); + MainActivity.csLibrary4A.appendToLog("bMultiBank = " + bMultiBank + " with extra1Bank = " + extra1Bank + "," + extra1Offset + "," + extra1Count + ", extra2Bank = " + extra2Bank + "," + extra2Offset + "," + extra2Count); if (bMultiBank == false) { MainActivity.csLibrary4A.restoreAfterTagSelect(); - MainActivity.csLibrary4A.startOperation(Cs108Library4A.OperationTypes.TAG_INVENTORY_COMPACT); + MainActivity.csLibrary4A.startOperation(RfidReaderChipData.OperationTypes.TAG_INVENTORY_COMPACT); inventoryRfidTask = new InventoryRfidTask(getContext(), -1, -1, 0, 0, 0, 0, false, MainActivity.csLibrary4A.getInventoryBeep(), MainActivity.sharedObjects.tagsList, readerListAdapter, null, null, rfidRunTime, null, rfidVoltageLevel, rfidYieldView, button, rfidRateView); + inventoryRfidTask.bSgtinOnly = checkBoxFilterByEpc.isChecked(); + if (checkBoxFilterByEpc.isChecked()) clearTagsList(); } else { boolean inventoryUcode8_bc = mDid != null && mDid.matches("E2806894") && MainActivity.mDid != null && (MainActivity.mDid.matches("E2806894B") || MainActivity.mDid.matches("E2806894C")); if ((extra1Bank != -1 && extra1Count != 0) || (extra2Bank != -1 && extra2Count != 0)) { @@ -575,7 +648,7 @@ void startInventoryTask() { } if (extra1Bank == 1) extra1Offset += 2; if (extra2Bank == 1) extra2Offset += 2; - MainActivity.csLibrary4A.appendToLog("HelloK: mDid = " + mDid + ", MainActivity.mDid = " + MainActivity.mDid); + MainActivity.csLibrary4A.appendToLog("HelloK: mDid = " + mDid + ", MainActivity.mDid = " + MainActivity.mDid + " with extra1Bank = " + extra1Bank + "," + extra1Offset + "," + extra1Count + ", extra2Bank = " + extra2Bank + "," + extra2Offset + "," + extra2Count); if (inventoryUcode8_bc == false) { MainActivity.csLibrary4A.appendToLog("BleStreamOut: Set Multibank"); MainActivity.csLibrary4A.setTagRead(extra2Count != 0 && extra2Count != 0 ? 2 : 1); @@ -591,15 +664,16 @@ void startInventoryTask() { needResetData = false; } } else resetSelectData(); - MainActivity.csLibrary4A.appendToLog("startInventoryTask: going to startOperation"); + MainActivity.csLibrary4A.appendToLog("startInventoryTask: going to startOperation with extra1Bank = " + extra1Bank + "," + extra1Offset + "," + extra1Count + ", extra2Bank = " + extra2Bank + "," + extra2Offset + "," + extra2Count); if (inventoryUcode8_bc) - MainActivity.csLibrary4A.startOperation(Cs108Library4A.OperationTypes.TAG_INVENTORY_COMPACT); + MainActivity.csLibrary4A.startOperation(RfidReaderChipData.OperationTypes.TAG_INVENTORY_COMPACT); else - MainActivity.csLibrary4A.startOperation(Cs108Library4A.OperationTypes.TAG_INVENTORY); + MainActivity.csLibrary4A.startOperation(RfidReaderChipData.OperationTypes.TAG_INVENTORY); inventoryRfidTask = new InventoryRfidTask(getContext(), extra1Bank, extra2Bank, extra1Count, extra2Count, extra1Offset, extra2Offset, false, MainActivity.csLibrary4A.getInventoryBeep(), MainActivity.sharedObjects.tagsList, readerListAdapter, null, mDid, rfidRunTime, null, rfidVoltageLevel, rfidYieldView, button, rfidRateView); + inventoryRfidTask.bProtectOnly = checkBoxFilterByProtect.isChecked(); } inventoryRfidTask.execute(); } @@ -615,7 +689,7 @@ public void run() { } else { button.setText("Start"); button.setEnabled(true); - setNotificationListener(); + if (userVisibleHint) setNotificationListener(); } } }; diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/LedTagFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/KilowayFragment.java similarity index 75% rename from app/src/main/java/com/csl/cs108ademoapp/fragments/LedTagFragment.java rename to app/src/main/java/com/csl/cs108ademoapp/fragments/KilowayFragment.java index 12cbf82..6689cca 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/LedTagFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/KilowayFragment.java @@ -12,15 +12,15 @@ import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; -import com.csl.cs108ademoapp.adapters.LedTagAdapter; +import com.csl.cs108ademoapp.adapters.KilowayAdapter; import com.google.android.material.tabs.TabLayout; -public class LedTagFragment extends CommonFragment { +public class KilowayFragment extends CommonFragment { private ActionBar actionBar; private ViewPager viewPager; - LedTagAdapter mAdapter; + KilowayAdapter mAdapter; - private String[] tabs = {"Configuration", "Scan"}; + private String[] tabs = {"Scan", "Access"}; int iTargetOld, iSessionOld; @Override @@ -32,22 +32,22 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa @Override public boolean onOptionsItemSelected(MenuItem item) { InventoryRfidiMultiFragment fragment1 = (InventoryRfidiMultiFragment) mAdapter.fragment1; - switch (item.getItemId()) { - case R.id.menuAction_clear: - fragment1.clearTagsList(); - return true; - case R.id.menuAction_sortRssi: - fragment1.sortTagsListByRssi(); - return true; - case R.id.menuAction_sort: - fragment1.sortTagsList(); - return true; - case R.id.menuAction_save: - fragment1.saveTagsList(); - return true; - default: - return super.onOptionsItemSelected(item); - } + if (item.getItemId() == R.id.menuAction_clear) { + fragment1.clearTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_sortRssi) { + fragment1.sortTagsListByRssi(); + return true; + } else if (item.getItemId() == R.id.menuAction_sort) { + fragment1.sortTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_save) { + fragment1.saveTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_share) { + fragment1.shareTagsList(); + return true; + } else return super.onOptionsItemSelected(item); } @Override @@ -56,11 +56,11 @@ public void onActivityCreated(Bundle savedInstanceState) { actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); actionBar.setIcon(R.drawable.dl_inv); - actionBar.setTitle(R.string.title_activity_ledTag); + actionBar.setTitle(R.string.title_activity_kiloway); TabLayout tabLayout = (TabLayout) getActivity().findViewById(R.id.OperationsTabLayout); - mAdapter = new LedTagAdapter(getActivity().getSupportFragmentManager()); + mAdapter = new KilowayAdapter(getActivity().getSupportFragmentManager()); viewPager = (ViewPager) getActivity().findViewById(R.id.OperationsPager); viewPager.setAdapter(mAdapter); viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); @@ -125,7 +125,7 @@ public void onDetach() { super.onDetach(); } - public LedTagFragment() { + public KilowayFragment() { super("LedTagFragment"); } } diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/LongjingFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/LongjingFragment.java new file mode 100644 index 0000000..64b407c --- /dev/null +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/LongjingFragment.java @@ -0,0 +1,132 @@ +package com.csl.cs108ademoapp.fragments; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; + +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; +import androidx.viewpager.widget.ViewPager; + +import com.csl.cs108ademoapp.MainActivity; +import com.csl.cs108ademoapp.R; +import com.csl.cs108ademoapp.adapters.LongjingAdapter; +import com.google.android.material.tabs.TabLayout; + +public class LongjingFragment extends CommonFragment { + private ActionBar actionBar; + private ViewPager viewPager; + LongjingAdapter mAdapter; + + private String[] tabs = {"Scan", "Geiger"}; //"Access", + int iTargetOld, iSessionOld; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + super.onCreateView(inflater, container, savedInstanceState, true); + return inflater.inflate(R.layout.custom_tabbed_layout, container, false); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + InventoryRfidiMultiFragment fragment1 = (InventoryRfidiMultiFragment) mAdapter.fragment1; + if (item.getItemId() == R.id.menuAction_clear) { + fragment1.clearTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_sortRssi) { + fragment1.sortTagsListByRssi(); + return true; + } else if (item.getItemId() == R.id.menuAction_sort) { + fragment1.sortTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_save) { + fragment1.saveTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_share) { + fragment1.shareTagsList(); + return true; + } else return super.onOptionsItemSelected(item); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + + actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); + actionBar.setIcon(R.drawable.dl_inv); + actionBar.setTitle(R.string.title_activity_longjing); + + TabLayout tabLayout = (TabLayout) getActivity().findViewById(R.id.OperationsTabLayout); + + mAdapter = new LongjingAdapter(getActivity().getSupportFragmentManager()); + viewPager = (ViewPager) getActivity().findViewById(R.id.OperationsPager); + viewPager.setAdapter(mAdapter); + viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); + + for (String tab_name : tabs) { + tabLayout.addTab(tabLayout.newTab().setText(tab_name)); + } + + tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { + @Override + public void onTabSelected(TabLayout.Tab tab) { + viewPager.setCurrentItem(tab.getPosition()); + } + + @Override + public void onTabUnselected(TabLayout.Tab tab) { + } + + @Override + public void onTabReselected(TabLayout.Tab tab) { + } + }); + + iTargetOld = MainActivity.csLibrary4A.getQueryTarget(); + iSessionOld = MainActivity.csLibrary4A.getQuerySession(); + MainActivity.csLibrary4A.setBasicCurrentLinkProfile(); + } + + @Override + public void onPause() { + mAdapter.fragment0.onPause(); + mAdapter.fragment1.onPause(); + super.onPause(); + } + + @Override + public void onStop() { + mAdapter.fragment0.onStop(); + mAdapter.fragment1.onStop(); + super.onStop(); + } + + @Override + public void onDestroyView() { + mAdapter.fragment0.onDestroyView(); + mAdapter.fragment1.onDestroyView(); + super.onDestroyView(); + } + + @Override + public void onDestroy() { + mAdapter.fragment0.onDestroy(); + mAdapter.fragment1.onDestroy(); + MainActivity.csLibrary4A.setTagGroup(MainActivity.csLibrary4A.getQuerySelect(), iSessionOld, iTargetOld); + //MainActivity.mCs108Library4a.macWrite(0x203, 0); + super.onDestroy(); + } + + @Override + public void onDetach() { + mAdapter.fragment0.onDetach(); + mAdapter.fragment1.onDetach(); + super.onDetach(); + } + + public LongjingFragment() { + super("LedTagFragment"); + } +} diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/MicronFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/MicronFragment.java index 2080ec3..583a7ec 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/MicronFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/MicronFragment.java @@ -30,22 +30,22 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa @Override public boolean onOptionsItemSelected(MenuItem item) { InventoryRfidiMultiFragment fragment = (InventoryRfidiMultiFragment) mAdapter.fragment0; - switch (item.getItemId()) { - case R.id.menuAction_clear: - fragment.clearTagsList(); - return true; - case R.id.menuAction_sortRssi: - fragment.sortTagsListByRssi(); - return true; - case R.id.menuAction_sort: - fragment.sortTagsList(); - return true; - case R.id.menuAction_save: - fragment.saveTagsList(); - return true; - default: - return super.onOptionsItemSelected(item); - } + if (item.getItemId() == R.id.menuAction_clear) { + fragment.clearTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_sortRssi) { + fragment.sortTagsListByRssi(); + return true; + } else if (item.getItemId() == R.id.menuAction_sort) { + fragment.sortTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_save) { + fragment.saveTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_share) { + fragment.shareTagsList(); + return true; + } else return super.onOptionsItemSelected(item); } @Override @@ -81,6 +81,8 @@ public void onTabUnselected(TabLayout.Tab tab) { public void onTabReselected(TabLayout.Tab tab) { } }); + + MainActivity.csLibrary4A.setBasicCurrentLinkProfile(); } @Override @@ -109,8 +111,7 @@ public void onDestroy() { if (mAdapter.fragment0 != null) mAdapter.fragment0.onDestroy(); if (mAdapter.fragment1 != null) mAdapter.fragment1.onDestroy(); if (MainActivity.selectFor != -1) { - MainActivity.csLibrary4A.setSelectCriteriaDisable(1); - MainActivity.csLibrary4A.setSelectCriteriaDisable(2); + MainActivity.csLibrary4A.setSelectCriteriaDisable(-1); MainActivity.selectFor = -1; } MainActivity.csLibrary4A.restoreAfterTagSelect(); diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingAdminFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingAdminFragment.java index deae37a..c316b99 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingAdminFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingAdminFragment.java @@ -21,12 +21,12 @@ import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; import com.csl.cs108ademoapp.SettingTask; -import com.csl.cs108library4a.Cs108Library4A; +import com.csl.cslibrary4a.RfidReaderChipData; public class SettingAdminFragment extends CommonFragment { private CheckBox checkBoxTriggerReporting, checkBoxInventoryBeep, checkBoxInventoryVibrate, checkBoxSaveFileEnable, checkBoxSaveCloudEnable, checkBoxSaveNewCloudEnable, checkBoxSaveAllCloudEnable, checkBoxDebugEnable; private CheckBox checkBoxCsvColumnResBank, checkBoxCsvColumnEpcBank, checkBoxCsvColumnTidBank, checkBoxCsvColumnUserBank, checkBoxCsvColumnPhase, checkBoxCsvColumnChannel, checkBoxCsvColumnTime, checkBoxCsvColumnTimeZone, checkBoxCsvColumnLocation, checkBoxCsvColumnDirection, checkBoxCsvColumnOthers; - private EditText editTextDeviceName, editTextCycleDelay, editTextTriggerReportingCount, editTextBeepCount, editTextVibrateTime, editTextVibrateWindow, editTextServer, editTextServerTimeout; + private EditText editTextDeviceName, editTextCycleDelay, editTextTriggerReportingCount, editTextBeepCount, editTextVibrateTime, editTextVibrateWindow, editTextServer, editTextServerTimeout, editTextServerImpinj, editTextServerImpinjName, editTextServerImpinjPasword; private TextView textViewReaderModel; private Spinner spinnerQueryBattery, spinnerQueryRssi, spinnerQueryVibrateMode, spinnerSavingFormat; private Button buttonCSLServer, button; @@ -46,7 +46,7 @@ public class SettingAdminFragment extends CommonFragment { int iVibrateTime = -1; int iVibrateTimeMin = 1; int iVibrateTimeMax = 999; int iVibrateWindow = -1; int iVibrateWindowMin = 1; int iVibrateWindowMax = 4; boolean triggerReporting, inventoryBeep, inventoryVibrate, saveFileEnable, saveCloudEnable, saveNewCloudEnable, saveAllCloudEnable, debugEnable; - String serverName; + String serverName, serverImpinj, serverImpinjName, serverImpinjPasword; int iServerTimeout = -1; int iServerTimeoutMin = 3; int iServerTimeoutMax = 9; private SettingTask settingTask; @@ -173,6 +173,9 @@ public void onNothingSelected(AdapterView adapterView) { checkBoxSaveAllCloudEnable = (CheckBox) getActivity().findViewById(R.id.settingAdminAllToCloudEnable); editTextServer = (EditText) getActivity().findViewById(R.id.settingAdminServer); editTextServer.setHint("Cloud Address Pattern"); + editTextServerImpinj = (EditText) getActivity().findViewById(R.id.settingAdminServerImpinj); + editTextServerImpinjName = (EditText) getActivity().findViewById(R.id.settingAdminServerImpinjName); + editTextServerImpinjPasword = (EditText) getActivity().findViewById(R.id.settingAdminServerImpinjPassword); TextView textViewAdminServerConnectTimeoutLabel = (TextView) getActivity().findViewById(R.id.settingAdminServerConnectTimeoutLabel); String stringAdminServerConnectTimeoutLabel = textViewAdminServerConnectTimeoutLabel.getText().toString(); @@ -312,17 +315,17 @@ public void onClick(View v) { savingFormatSelect = spinnerSavingFormat.getSelectedItemPosition(); { csvColumnSelect = 0; - if (checkBoxCsvColumnResBank.isChecked()) csvColumnSelect |= (0x01 << Cs108Library4A.CsvColumn.RESERVE_BANK.ordinal()); - if (checkBoxCsvColumnEpcBank.isChecked()) csvColumnSelect |= (0x01 << Cs108Library4A.CsvColumn.EPC_BANK.ordinal()); - if (checkBoxCsvColumnTidBank.isChecked()) csvColumnSelect |= (0x01 << Cs108Library4A.CsvColumn.TID_BANK.ordinal()); - if (checkBoxCsvColumnUserBank.isChecked()) csvColumnSelect |= (0x01 << Cs108Library4A.CsvColumn.USER_BANK.ordinal()); - if (checkBoxCsvColumnPhase.isChecked()) csvColumnSelect |= (0x01 << Cs108Library4A.CsvColumn.PHASE.ordinal()); - if (checkBoxCsvColumnChannel.isChecked()) csvColumnSelect |= (0x01 << Cs108Library4A.CsvColumn.CHANNEL.ordinal()); - if (checkBoxCsvColumnTime.isChecked()) csvColumnSelect |= (0x01 << Cs108Library4A.CsvColumn.TIME.ordinal()); - if (checkBoxCsvColumnTimeZone.isChecked()) csvColumnSelect |= (0x01 << Cs108Library4A.CsvColumn.TIMEZONE.ordinal()); - if (checkBoxCsvColumnLocation.isChecked()) csvColumnSelect |= (0x01 << Cs108Library4A.CsvColumn.LOCATION.ordinal()); - if (checkBoxCsvColumnDirection.isChecked()) csvColumnSelect |= (0x01 << Cs108Library4A.CsvColumn.DIRECTION.ordinal()); - if (checkBoxCsvColumnOthers.isChecked()) csvColumnSelect |= (0x01 << Cs108Library4A.CsvColumn.OTHERS.ordinal()); + if (checkBoxCsvColumnResBank.isChecked()) csvColumnSelect |= (0x01 << RfidReaderChipData.CsvColumn.RESERVE_BANK.ordinal()); + if (checkBoxCsvColumnEpcBank.isChecked()) csvColumnSelect |= (0x01 << RfidReaderChipData.CsvColumn.EPC_BANK.ordinal()); + if (checkBoxCsvColumnTidBank.isChecked()) csvColumnSelect |= (0x01 << RfidReaderChipData.CsvColumn.TID_BANK.ordinal()); + if (checkBoxCsvColumnUserBank.isChecked()) csvColumnSelect |= (0x01 << RfidReaderChipData.CsvColumn.USER_BANK.ordinal()); + if (checkBoxCsvColumnPhase.isChecked()) csvColumnSelect |= (0x01 << RfidReaderChipData.CsvColumn.PHASE.ordinal()); + if (checkBoxCsvColumnChannel.isChecked()) csvColumnSelect |= (0x01 << RfidReaderChipData.CsvColumn.CHANNEL.ordinal()); + if (checkBoxCsvColumnTime.isChecked()) csvColumnSelect |= (0x01 << RfidReaderChipData.CsvColumn.TIME.ordinal()); + if (checkBoxCsvColumnTimeZone.isChecked()) csvColumnSelect |= (0x01 << RfidReaderChipData.CsvColumn.TIMEZONE.ordinal()); + if (checkBoxCsvColumnLocation.isChecked()) csvColumnSelect |= (0x01 << RfidReaderChipData.CsvColumn.LOCATION.ordinal()); + if (checkBoxCsvColumnDirection.isChecked()) csvColumnSelect |= (0x01 << RfidReaderChipData.CsvColumn.DIRECTION.ordinal()); + if (checkBoxCsvColumnOthers.isChecked()) csvColumnSelect |= (0x01 << RfidReaderChipData.CsvColumn.OTHERS.ordinal()); } if (editTextCycleDelay != null) cycleDelay = Long.parseLong(editTextCycleDelay.getText().toString()); if (editTextTriggerReportingCount != null) sTriggerCount = Short.parseShort(editTextTriggerReportingCount.getText().toString()); @@ -338,6 +341,9 @@ public void onClick(View v) { saveAllCloudEnable = checkBoxSaveAllCloudEnable.isChecked(); serverName = editTextServer.getText().toString(); iServerTimeout = Integer.parseInt(editTextServerTimeout.getText().toString()); + serverImpinj = editTextServerImpinj.getText().toString(); + serverImpinjName = editTextServerImpinjName.getText().toString(); + serverImpinjPasword = editTextServerImpinjPasword.getText().toString(); debugEnable = checkBoxDebugEnable.isChecked(); settingUpdate(); } catch (Exception ex) { @@ -395,17 +401,17 @@ public void run() { spinnerSavingFormat.setSelection(MainActivity.csLibrary4A.getSavingFormatSetting()); { int csvColumnSelect = MainActivity.csLibrary4A.getCsvColumnSelectSetting(); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.RESERVE_BANK.ordinal())) != 0) checkBoxCsvColumnResBank.setChecked(true); else checkBoxCsvColumnResBank.setChecked(false); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.EPC_BANK.ordinal())) != 0) checkBoxCsvColumnEpcBank.setChecked(true); else checkBoxCsvColumnEpcBank.setChecked(false); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.TID_BANK.ordinal())) != 0) checkBoxCsvColumnTidBank.setChecked(true); else checkBoxCsvColumnTidBank.setChecked(false); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.USER_BANK.ordinal())) != 0) checkBoxCsvColumnUserBank.setChecked(true); else checkBoxCsvColumnUserBank.setChecked(false); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.PHASE.ordinal())) != 0) checkBoxCsvColumnPhase.setChecked(true); else checkBoxCsvColumnPhase.setChecked(false); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.CHANNEL.ordinal())) != 0) checkBoxCsvColumnChannel.setChecked(true); else checkBoxCsvColumnChannel.setChecked(false); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.TIME.ordinal())) != 0) checkBoxCsvColumnTime.setChecked(true); else checkBoxCsvColumnTime.setChecked(false); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.TIMEZONE.ordinal())) != 0) checkBoxCsvColumnTimeZone.setChecked(true); else checkBoxCsvColumnTimeZone.setChecked(false); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.LOCATION.ordinal())) != 0) checkBoxCsvColumnLocation.setChecked(true); else checkBoxCsvColumnLocation.setChecked(false); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.DIRECTION.ordinal())) != 0) checkBoxCsvColumnDirection.setChecked(true); else checkBoxCsvColumnDirection.setChecked(false); - if ((csvColumnSelect & (0x01 << Cs108Library4A.CsvColumn.OTHERS.ordinal())) != 0) checkBoxCsvColumnOthers.setChecked(true); else checkBoxCsvColumnOthers.setChecked(false); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.RESERVE_BANK.ordinal())) != 0) checkBoxCsvColumnResBank.setChecked(true); else checkBoxCsvColumnResBank.setChecked(false); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.EPC_BANK.ordinal())) != 0) checkBoxCsvColumnEpcBank.setChecked(true); else checkBoxCsvColumnEpcBank.setChecked(false); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.TID_BANK.ordinal())) != 0) checkBoxCsvColumnTidBank.setChecked(true); else checkBoxCsvColumnTidBank.setChecked(false); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.USER_BANK.ordinal())) != 0) checkBoxCsvColumnUserBank.setChecked(true); else checkBoxCsvColumnUserBank.setChecked(false); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.PHASE.ordinal())) != 0) checkBoxCsvColumnPhase.setChecked(true); else checkBoxCsvColumnPhase.setChecked(false); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.CHANNEL.ordinal())) != 0) checkBoxCsvColumnChannel.setChecked(true); else checkBoxCsvColumnChannel.setChecked(false); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.TIME.ordinal())) != 0) checkBoxCsvColumnTime.setChecked(true); else checkBoxCsvColumnTime.setChecked(false); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.TIMEZONE.ordinal())) != 0) checkBoxCsvColumnTimeZone.setChecked(true); else checkBoxCsvColumnTimeZone.setChecked(false); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.LOCATION.ordinal())) != 0) checkBoxCsvColumnLocation.setChecked(true); else checkBoxCsvColumnLocation.setChecked(false); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.DIRECTION.ordinal())) != 0) checkBoxCsvColumnDirection.setChecked(true); else checkBoxCsvColumnDirection.setChecked(false); + if ((csvColumnSelect & (0x01 << RfidReaderChipData.CsvColumn.OTHERS.ordinal())) != 0) checkBoxCsvColumnOthers.setChecked(true); else checkBoxCsvColumnOthers.setChecked(false); } if (editTextCycleDelay != null) editTextCycleDelay.setText(String.valueOf(MainActivity.csLibrary4A.getCycleDelay())); if (editTextTriggerReportingCount != null) { @@ -421,6 +427,9 @@ public void run() { if (editTextVibrateWindow != null) editTextVibrateWindow.setText(String.valueOf(MainActivity.csLibrary4A.getVibrateWindow())); editTextServer.setText(MainActivity.csLibrary4A.getServerLocation()); editTextServerTimeout.setText(String.valueOf(MainActivity.csLibrary4A.getServerTimeout())); + editTextServerImpinj.setText(MainActivity.csLibrary4A.getServerImpinjLocation()); + editTextServerImpinjName.setText(MainActivity.csLibrary4A.getServerImpinjName()); + editTextServerImpinjPasword.setText(MainActivity.csLibrary4A.getServerImpinjPassword()); if (updating == false) { String name = MainActivity.csLibrary4A.getBluetoothICFirmwareName(); if (name == null) { @@ -596,6 +605,33 @@ else if (MainActivity.csLibrary4A.setServerTimeout(iServerTimeout) == false) invalidRequest = true; } } + if (invalidRequest == false && editTextServerImpinj != null) { + String string = MainActivity.csLibrary4A.getServerImpinjLocation(); if (string == null) string = ""; + MainActivity.csLibrary4A.appendToLog("old serverImpinj = " + string + ", new = " + serverImpinj); + if (string.matches(serverImpinj) == false || sameCheck == false) { + sameSetting = false; + if (MainActivity.csLibrary4A.setServerImpinjLocation(serverImpinj) == false) + invalidRequest = true; + } + } + if (invalidRequest == false && editTextServerImpinjName != null) { + String string = MainActivity.csLibrary4A.getServerImpinjName(); if (string == null) string = ""; + MainActivity.csLibrary4A.appendToLog("old serverImpinjName = " + string + ", new = " + serverImpinjName); + if (string.matches(serverImpinjName) == false || sameCheck == false) { + sameSetting = false; + if (MainActivity.csLibrary4A.setServerImpinjName(serverImpinjName) == false) + invalidRequest = true; + } + } + if (invalidRequest == false && editTextServerImpinjPasword != null) { + String string = MainActivity.csLibrary4A.getServerImpinjPassword(); if (string == null) string = ""; + MainActivity.csLibrary4A.appendToLog("old serverImpinjPassword = " + string + ", new = " + serverImpinjPasword + ", matched = " + string.matches(serverImpinjPasword)); + if (string.length() != serverImpinjPasword.length() || string.matches(serverImpinjPasword) == false || sameCheck == false) { + sameSetting = false; + if (MainActivity.csLibrary4A.setServerImpinjPassword(serverImpinjPasword) == false) + invalidRequest = true; + } + } if (invalidRequest == false && checkBoxDebugEnable != null) { MainActivity.csLibrary4A.appendToLog("getDebugEnable = " + MainActivity.csLibrary4A.getUserDebugEnable() + ", debugEnable = " + debugEnable); if (MainActivity.csLibrary4A.getUserDebugEnable() != debugEnable || sameCheck == false) { diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingOperateFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingOperateFragment.java index 3106706..5a21ed7 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingOperateFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingOperateFragment.java @@ -184,7 +184,7 @@ public void onClick(View v) { checkBoxTagFocus = (CheckBox) getActivity().findViewById(R.id.settingOperateTagFocus); String string = checkBoxTagFocus.getText().toString(); - if (MainActivity.csLibrary4A.get98XX() != 0) checkBoxTagFocus.setText(string.substring(0, string.length()-1) + ". When enabled, tag select is disabled.)"); + if (MainActivity.csLibrary4A.get98XX() == 2) checkBoxTagFocus.setText(string.substring(0, string.length()-1) + ". When enabled, tag select is disabled.)"); checkBoxTagFocus.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { @@ -200,6 +200,8 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { targetAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinnerInvAlgo.setAdapter(targetAdapter); + TextView textViewRetry = (TextView) getActivity().findViewById(R.id.settingOperateRetryLabel); + if (MainActivity.csLibrary4A.get98XX() == 2) textViewRetry.setText("Minimum minQ cycles"); editTextRetry = (EditText) getActivity().findViewById(R.id.settingOperateRetry); spinnerProfile = (Spinner) getActivity().findViewById(R.id.settingOperateProfile); @@ -360,12 +362,12 @@ public void run() { updateRunning = true; if (MainActivity.csLibrary4A.mrfidToWriteSize() != 0) { - updating = true; MainActivity.csLibrary4A.appendToLog("upating 1"); + updating = true; MainActivity.csLibrary4A.appendToLog("updating 1"); } else { iPopulation = MainActivity.csLibrary4A.getPopulation(); if (iPopulation < 0) { - updating = true; MainActivity.csLibrary4A.appendToLog("upating 2"); + updating = true; MainActivity.csLibrary4A.appendToLog("updating 2"); } else { editTextPopulation.setText(String.valueOf(iPopulation)); @@ -381,7 +383,7 @@ public void run() { if (updating == false && textViewPortChannel != null) { lValue = MainActivity.csLibrary4A.getAntennaSelect(); if (lValue < 0) { - updating = true; MainActivity.csLibrary4A.appendToLog("upating 4"); + updating = true; MainActivity.csLibrary4A.appendToLog("updating 4"); } else { textViewPortChannel.setText(String.valueOf(lValue+1)); } @@ -390,7 +392,7 @@ public void run() { if (updating == false) { lValue = MainActivity.csLibrary4A.getPwrlevel(); if (lValue < 0) { - updating = true; MainActivity.csLibrary4A.appendToLog("upating 5"); + updating = true; MainActivity.csLibrary4A.appendToLog("updating 5"); } else { editTextOperatePower.setText(String.valueOf(lValue)); } @@ -398,7 +400,7 @@ public void run() { if (updating == false && editTextPortDwell != null) { lValue = MainActivity.csLibrary4A.getAntennaDwell(); if (lValue < 0) { - updating = true; MainActivity.csLibrary4A.appendToLog("upating 6"); + updating = true; MainActivity.csLibrary4A.appendToLog("updating 6"); } else { editTextPortDwell.setText(String.valueOf(lValue)); } @@ -412,7 +414,7 @@ public void run() { if (updating == false) { iValue = MainActivity.csLibrary4A.getQuerySession(); if (iValue < 0) { - updating = true; MainActivity.csLibrary4A.appendToLog("upating 7"); + updating = true; MainActivity.csLibrary4A.appendToLog("updating 7"); } else { spinnerQuerySession.setSelection(iValue); } @@ -420,7 +422,7 @@ public void run() { if (updating == false) { iValue = MainActivity.csLibrary4A.getTagFocus(); if (iValue < 0) { - updating = true; MainActivity.csLibrary4A.appendToLog("upating 8"); + updating = true; MainActivity.csLibrary4A.appendToLog("updating 8"); } else { checkBoxTagFocus.setChecked(iValue > 0 ? true : false); @@ -430,7 +432,7 @@ public void run() { if (updating == false) { iValue = MainActivity.csLibrary4A.getFastId(); if (iValue < 0) { - updating = true; MainActivity.csLibrary4A.appendToLog("upating 8"); + updating = true; MainActivity.csLibrary4A.appendToLog("updating 8"); } else checkBoxFastId.setChecked(iValue > 0 ? true : false); } @@ -440,23 +442,23 @@ public void run() { if (updating == false) { int iRetry = MainActivity.csLibrary4A.getRetryCount(); if (iRetry < 0) { - updating = true; MainActivity.csLibrary4A.appendToLog("upating 9"); + updating = true; MainActivity.csLibrary4A.appendToLog("updating 9"); } else editTextRetry.setText(String.valueOf(iRetry)); } if (updating == false) { String[] strCountryList = MainActivity.csLibrary4A.getCountryList(); - for (int i = 0; i < strCountryList.length; i++) MainActivity.csLibrary4A.appendToLog("upating: String " + i + " = " + strCountryList[i]); + for (int i = 0; i < strCountryList.length; i++) MainActivity.csLibrary4A.appendToLog("updating: String " + i + " = " + strCountryList[i]); String[] strChannelFrequencyList = MainActivity.csLibrary4A.getChannelFrequencyList(); - //for (int i = 0; i < strChannelFrequencyList.length; i++) MainActivity.csLibrary4A.appendToLog("upating: String " + i + " = " + strChannelFrequencyList[i]); + //for (int i = 0; i < strChannelFrequencyList.length; i++) MainActivity.csLibrary4A.appendToLog("updating: String " + i + " = " + strChannelFrequencyList[i]); if (strCountryList == null) { - updating = true; MainActivity.csLibrary4A.appendToLog("upating 10"); + updating = true; MainActivity.csLibrary4A.appendToLog("updating 10"); } else { ArrayAdapter targetAdapter1 = new ArrayAdapter(getActivity(), R.layout.custom_spinner_layout, strCountryList); targetAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinnerRegulatoryRegion.setAdapter(targetAdapter1); int countryNumber = MainActivity.csLibrary4A.getCountryNumberInList(); - MainActivity.csLibrary4A.appendToLog("upating countryNumber = " + countryNumber); + MainActivity.csLibrary4A.appendToLog("updating countryNumber = " + countryNumber); if (countryNumber < 0 || countryNumber > strCountryList.length) spinnerRegulatoryRegion.setSelection(0); else spinnerRegulatoryRegion.setSelection(countryNumber); if (strCountryList.length == 1) spinnerRegulatoryRegion.setEnabled(false); @@ -485,7 +487,7 @@ public void run() { if (updating == false) { iValue = MainActivity.csLibrary4A.getCurrentProfile(); if (iValue < 0) { - updating = true; MainActivity.csLibrary4A.appendToLog("upating 11"); + updating = true; MainActivity.csLibrary4A.appendToLog("updating 11"); } else { spinnerProfile.setSelection(iValue); } @@ -493,20 +495,20 @@ public void run() { if (updating == false) { String strRssi = MainActivity.csLibrary4A.getEnvironmentalRSSI(); if (strRssi == null) { - updating = true; MainActivity.csLibrary4A.appendToLog("upating 12"); + updating = true; MainActivity.csLibrary4A.appendToLog("updating 12"); } else textViewEnvironmentalRSSI.setText(strRssi); } if (updating == false) { iValue = MainActivity.csLibrary4A.getHighCompression(); if (iValue < 0) { - updating = true; MainActivity.csLibrary4A.appendToLog("upating 13"); + updating = true; MainActivity.csLibrary4A.appendToLog("updating 13"); } else checkBoxHighCompression.setChecked(iValue == 0 ? false : true); } if (updating == false) { iValue = MainActivity.csLibrary4A.getRflnaGain(); if (iValue < 0) { - updating = true; MainActivity.csLibrary4A.appendToLog("upating 14"); + updating = true; MainActivity.csLibrary4A.appendToLog("updating 14"); } else { switch (iValue) { case 2: @@ -526,7 +528,7 @@ public void run() { if (updating == false) { iValue = MainActivity.csLibrary4A.getIflnaGain(); if (iValue < 0) { - updating = true; MainActivity.csLibrary4A.appendToLog("upating 15"); + updating = true; MainActivity.csLibrary4A.appendToLog("updating 15"); } else { switch (iValue) { case 1: @@ -549,7 +551,7 @@ public void run() { if (updating == false) { iValue = MainActivity.csLibrary4A.getAgcGain(); if (iValue < 0) { - updating = true; MainActivity.csLibrary4A.appendToLog("upating 16"); + updating = true; MainActivity.csLibrary4A.appendToLog("updating 16"); } else { switch (iValue) { case 4: diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingWedgeFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingWedgeFragment.java index 232bef9..431ece0 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingWedgeFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingWedgeFragment.java @@ -5,7 +5,6 @@ import android.content.DialogInterface; import android.os.Bundle; import android.view.View; -import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.Spinner; @@ -27,7 +26,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.fragment_directwedge_settings, null); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - builder.setTitle("Simple Wedge Settings"); + builder.setTitle("Wedge Settings"); //builder.setMessage("simple wedge setttings"); builder.setView(view); builder.setPositiveButton("Save", new DialogInterface.OnClickListener() { diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/Ucode8Fragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/Ucode8Fragment.java index f11fb32..ad41ce9 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/Ucode8Fragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/Ucode8Fragment.java @@ -19,7 +19,7 @@ public class Ucode8Fragment extends CommonFragment { private ViewPager viewPager; Ucode8Adapter mAdapter; - private String[] tabs = {"Configuration", "Scan" }; // {"Configuration", "Scan", "Untrace"}; + private String[] tabs = {"Configure", "Scan", "Security", "Untrace"}; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -30,22 +30,22 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa @Override public boolean onOptionsItemSelected(MenuItem item) { InventoryRfidiMultiFragment fragment1 = (InventoryRfidiMultiFragment) mAdapter.fragment1; - switch (item.getItemId()) { - case R.id.menuAction_clear: - fragment1.clearTagsList(); - return true; - case R.id.menuAction_sortRssi: - fragment1.sortTagsListByRssi(); - return true; - case R.id.menuAction_sort: - fragment1.sortTagsList(); - return true; - case R.id.menuAction_save: - fragment1.saveTagsList(); - return true; - default: - return super.onOptionsItemSelected(item); - } + if (item.getItemId() == R.id.menuAction_clear) { + fragment1.clearTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_sortRssi) { + fragment1.sortTagsListByRssi(); + return true; + } else if (item.getItemId() == R.id.menuAction_sort) { + fragment1.sortTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_save) { + fragment1.saveTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_share) { + fragment1.shareTagsList(); + return true; + } else return super.onOptionsItemSelected(item); } @Override diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/UcodeFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/UcodeFragment.java index 2dd9026..5c5db8a 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/UcodeFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/UcodeFragment.java @@ -18,7 +18,7 @@ public class UcodeFragment extends CommonFragment { private ViewPager viewPager; UcodeAdapter mAdapter; - private String[] tabs = {"Configuration", "Scan"}; + private String[] tabs = {"Scan", "Authenticate"}; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -29,22 +29,22 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa @Override public boolean onOptionsItemSelected(MenuItem item) { InventoryRfidiMultiFragment fragment1 = (InventoryRfidiMultiFragment) mAdapter.fragment1; - switch (item.getItemId()) { - case R.id.menuAction_clear: - fragment1.clearTagsList(); - return true; - case R.id.menuAction_sortRssi: - fragment1.sortTagsListByRssi(); - return true; - case R.id.menuAction_sort: - fragment1.sortTagsList(); - return true; - case R.id.menuAction_save: - fragment1.saveTagsList(); - return true; - default: - return super.onOptionsItemSelected(item); - } + if (item.getItemId() == R.id.menuAction_clear) { + fragment1.clearTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_sortRssi) { + fragment1.sortTagsListByRssi(); + return true; + } else if (item.getItemId() == R.id.menuAction_sort) { + fragment1.sortTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_save) { + fragment1.saveTagsList(); + return true; + } else if (item.getItemId() == R.id.menuAction_share) { + fragment1.shareTagsList(); + return true; + } else return super.onOptionsItemSelected(item); } @Override diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/UtraceFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/UtraceFragment.java index 02fa267..d18ef17 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/UtraceFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/UtraceFragment.java @@ -1,11 +1,11 @@ package com.csl.cs108ademoapp.fragments; +import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; @@ -16,16 +16,17 @@ import android.widget.Toast; import com.csl.cs108ademoapp.AccessTask; -import com.csl.cs108ademoapp.GenericTextWatcher; import com.csl.cs108ademoapp.MainActivity; import com.csl.cs108ademoapp.R; -import com.csl.cs108library4a.Cs108Library4A; -import com.csl.cs108library4a.ReaderDevice; +import com.csl.cs108ademoapp.SelectTag; +import com.csl.cslibrary4a.ReaderDevice; +import com.csl.cslibrary4a.RfidReaderChipData; public class UtraceFragment extends CommonFragment { final boolean DEBUG = true; + SelectTag selectTag; Spinner memoryBankSpinner; - EditText editTextRWTagID, editTextAccessRWAccPassword, editTextaccessRWAntennaPower; + EditText editTextRWTagID, editTextAccessRWAccPassword; CheckBox checkBoxHideXpc, checkBoxHideEpc, checkBoxHideTid, checkBoxHideUser, checkBoxHideRange; RadioButton radioButtonRangeToggle, radioButtonRangeReduced, radioButtonHideSomeTid, radioButtonHideAllTid; @@ -43,16 +44,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - memoryBankSpinner = (Spinner) getActivity().findViewById(R.id.utraceBank); - ArrayAdapter memoryBankAdapter = ArrayAdapter.createFromResource(getActivity(), R.array.read_memoryBank_options, R.layout.custom_spinner_layout); - memoryBankAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - memoryBankSpinner.setAdapter(memoryBankAdapter); - memoryBankSpinner.setEnabled(true); - - editTextRWTagID = (EditText) getActivity().findViewById(R.id.utraceTagID); - editTextAccessRWAccPassword = (EditText) getActivity().findViewById(R.id.utracePasswordValue); - editTextAccessRWAccPassword.addTextChangedListener(new GenericTextWatcher(editTextAccessRWAccPassword, 8)); - editTextAccessRWAccPassword.setText("00000000"); + selectTag = new SelectTag((Activity)getActivity(), 2); checkBoxHideXpc = (CheckBox) getActivity().findViewById(R.id.utraceAssertUXPC); checkBoxHideEpc = (CheckBox) getActivity().findViewById(R.id.utraceHideEpc); @@ -108,8 +100,7 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { editTextEpcSize = (EditText) getActivity().findViewById(R.id.utraceEpcLength); - editTextaccessRWAntennaPower = (EditText) getActivity().findViewById(R.id.utraceAntennaPower); - editTextaccessRWAntennaPower.setText(String.valueOf(300)); + selectTag.editTextAccessAntennaPower.setText(String.valueOf(300)); buttonUntrace = (Button) getActivity().findViewById(R.id.utraceUntraceButton); buttonUntrace.setOnClickListener(new View.OnClickListener() { @@ -126,10 +117,16 @@ public void onClick(View v) { } }); - setupTagID(); + MainActivity.csLibrary4A.appendToLog("going to setupTagID"); setupTagID(); MainActivity.csLibrary4A.setSameCheck(false); } + @Override + public void onResume() { + super.onResume(); + MainActivity.csLibrary4A.appendToLog("going to setupTagID"); setupTagID(); + } + @Override public void onDestroy() { if (accessTask != null) accessTask.cancel(true); @@ -141,7 +138,7 @@ public void onDestroy() { public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if(getUserVisibleHint()) { - setupTagID(); + MainActivity.csLibrary4A.appendToLog("going to setupTagID"); setupTagID(); userVisibleHint = true; MainActivity.csLibrary4A.appendToLog("UtraceFragment is now VISIBLE"); } else { @@ -155,12 +152,20 @@ public UtraceFragment() { } void setupTagID() { + MainActivity.csLibrary4A.appendToLog("selectTag 1 = " + (selectTag != null ? "Valid" : "Null")); + if (selectTag == null) return; ReaderDevice tagSelected = MainActivity.tagSelected; + MainActivity.csLibrary4A.appendToLog("Start with tagSelected = " + (tagSelected == null ? "NULL" : (tagSelected.getSelected() + ", " + tagSelected.getAddress()))); boolean bSelected = false; if (tagSelected != null) { if (tagSelected.getSelected() == true) { bSelected = true; - if (editTextRWTagID != null) editTextRWTagID.setText(tagSelected.getAddress()); + MainActivity.csLibrary4A.appendToLog("selectTag is " + (selectTag == null ? "NULL" : "valid")); + if (selectTag != null) MainActivity.csLibrary4A.appendToLog("selectTag.editTextTag is " + (selectTag.editTextTagID == null ? "NULL" : "valid")); + if (selectTag.editTextTagID != null) { + MainActivity.csLibrary4A.appendToLog("editTextRWTagID.setText " + tagSelected.getAddress()); + selectTag.editTextTagID.setText(tagSelected.getAddress()); + } String stringDetail = tagSelected.getDetails(); int indexUser = stringDetail.indexOf("USER="); @@ -171,6 +176,8 @@ void setupTagID() { boolean bEnableBAPMode = false; int number = Integer.valueOf(stringUser.substring(3, 4), 16); if ((number % 2) == 1) bEnableBAPMode = true; +// CheckBox checkBoxBAP = (CheckBox) getActivity().findViewById(R.id.coldChainEnableBAP); +// checkBoxBAP.setChecked(bEnableBAPMode); } } } @@ -219,20 +226,18 @@ else if (taskRequest) { boolean invalid = (MainActivity.csLibrary4A.setUntraceable(rangeValue, checkBoxHideUser.isChecked(), tidValue, epcValue, checkBoxHideEpc.isChecked(), checkBoxHideXpc.isChecked()) == false); MainActivity.csLibrary4A.appendToLog("processTickItems, invalid = " + invalid); - Button button = null; int selectBank = memoryBankSpinner.getSelectedItemPosition() + 1; MainActivity.csLibrary4A.appendToLog("selectBank = " + selectBank); - if (strUntraceButtonBackup == null) strUntraceButtonBackup = buttonUntrace.getText().toString(); buttonUntrace.setText("Show"); button = buttonUntrace; + Button button = buttonUntrace; int selectBank = selectTag.spinnerSelectBank.getSelectedItemPosition() + 1; MainActivity.csLibrary4A.appendToLog("selectBank = " + selectBank); + //if (strUntraceButtonBackup == null) strUntraceButtonBackup = buttonUntrace.getText().toString(); buttonUntrace.setText("Show"); button = buttonUntrace; accessTask = new AccessTask( - button, null, - invalid, - editTextRWTagID.getText().toString(), selectBank, (selectBank == 1 ? 32 : 0), - editTextAccessRWAccPassword.getText().toString(), - Integer.valueOf(editTextaccessRWAntennaPower.getText().toString()), - Cs108Library4A.HostCommands.CMD_UNTRACEABLE, - 0, 0, true, + button, null, invalid, + selectTag.editTextTagID.getText().toString(), selectBank, (selectBank == 1 ? 32 : 0), + selectTag.editTextAccessPassword.getText().toString(), Integer.valueOf(selectTag.editTextAccessAntennaPower.getText().toString()), RfidReaderChipData.HostCommands.CMD_UNTRACEABLE, + 0, 0, true, false, null, null, null, null, null); + MainActivity.csLibrary4A.appendToLog("setSelectCriteria: going to execute accessTask"); accessTask.execute(); rerunRequest = true; - MainActivity.csLibrary4A.appendToLog("accessTask is created"); + MainActivity.csLibrary4A.appendToLog("setSelectCriteria: accessTask is executed"); } if (rerunRequest) { mHandler.postDelayed(updateRunnable, 500); @@ -249,7 +254,7 @@ boolean processResult() { else if (accessTask.getStatus() != AsyncTask.Status.FINISHED) return false; else { accessResult = accessTask.accessResult; - if (strUntraceButtonBackup != null) buttonUntrace.setText(strUntraceButtonBackup); strUntraceButtonBackup = null; + //if (strUntraceButtonBackup != null) buttonUntrace.setText(strUntraceButtonBackup); strUntraceButtonBackup = null; accessTask = null; return true; } diff --git a/app/src/main/res/layout/custom_readwrite.xml b/app/src/main/res/layout/custom_readwrite.xml index ae1c061..9ed90d1 100644 --- a/app/src/main/res/layout/custom_readwrite.xml +++ b/app/src/main/res/layout/custom_readwrite.xml @@ -1,6 +1,7 @@ + android:layout_height="wrap_content" + android:layout_marginBottom="1dp">