diff --git a/app/build.gradle b/app/build.gradle index 8541e1a..8a346c6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,8 +6,8 @@ android { applicationId "com.csl.cs108ademoapp" minSdkVersion 19 targetSdkVersion 30 - versionCode 30 - versionName "2.0.0" + versionCode 31 + versionName "2.1.15" } } diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index 85d4ee5..f4aba6a 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -10,8 +10,8 @@ { "type": "SINGLE", "filters": [], - "versionCode": 30, - "versionName": "2.0.0", + "versionCode": 29, + "versionName": "2.1.1", "outputFile": "app-release.apk" } ] diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index cf57b0b..813f986 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,7 +16,7 @@ android:requestLegacyExternalStorage="true" android:theme="@style/AppTheme"> - @@ -26,7 +26,7 @@ diff --git a/app/src/main/java/com/csl/cs108ademoapp/AccessTask.java b/app/src/main/java/com/csl/cs108ademoapp/AccessTask.java index adaaa09..9c9b4ab 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/AccessTask.java +++ b/app/src/main/java/com/csl/cs108ademoapp/AccessTask.java @@ -111,12 +111,16 @@ void preExecute() { //playerN.start(); buttonText = button.getText().toString().trim(); - String buttonText1 = null; String strLastChar = buttonText.substring(buttonText.length()-1); - if (strLastChar.toUpperCase().matches("E")) { - buttonText1 = buttonText.substring(0, buttonText.length()-1); - } else if (buttonText.toUpperCase().matches("STOP")) { - buttonText1 = buttonText; buttonText1 += buttonText1.substring(buttonText.length()-1); - } else buttonText1 = buttonText; + String buttonText1 = ""; String strLastChar = ""; + if (buttonText.length() != 0) { + strLastChar = buttonText.substring(buttonText.length() - 1); + if (strLastChar.toUpperCase().matches("E")) { + buttonText1 = buttonText.substring(0, buttonText.length() - 1); + } else if (buttonText.toUpperCase().matches("STOP")) { + buttonText1 = buttonText; + buttonText1 += buttonText1.substring(buttonText.length() - 1); + } else buttonText1 = buttonText; + } if (repeat || buttonText.length() == 0) button.setText("Stop"); else { if (Character.isUpperCase(strLastChar.charAt(0))) button.setText(buttonText1 + "ING"); @@ -188,6 +192,7 @@ protected String doInBackground(Void... a) { Cs108Connector.Rx000pkgData rx000pkgData = MainActivity.mCs108Library4a.onRFIDEvent(); if (MainActivity.mCs108Library4a.mrfidToWriteSize() != 0) timeMillis = System.currentTimeMillis(); else if (rx000pkgData != null) { + //MainActivity.mCs108Library4a.appendToLog("rx000pkgData.responseType = " + rx000pkgData.responseType.toString()); if (rx000pkgData.responseType == null) { publishProgress("null response"); } else if (rx000pkgData.responseType == Cs108Connector.HostCmdResponseTypes.TYPE_18K6C_TAG_ACCESS) { @@ -195,17 +200,19 @@ else if (rx000pkgData != null) { if (rx000pkgData.decodedError == null) { if (done == false) { accessResult = rx000pkgData.decodedResult; - MainActivity.mCs108Library4a.appendToLog("StreamOut, accResult=" + accessResult); + //MainActivity.mCs108Library4a.appendToLog("StreamOut, accResult=" + accessResult); if (updateRunnable != null) { - MainActivity.mCs108Library4a.appendToLog("StreamOut: start updateRunnable"); + //MainActivity.mCs108Library4a.appendToLog("StreamOut: start updateRunnable"); mHandler.post(updateRunnable); } } done = true; publishProgress(null, rx000pkgData.decodedResult); + } else { + //MainActivity.mCs108Library4a.appendToLog("decodeError = " + rx000pkgData.decodedError + ", length = " + rx000pkgData.decodedError.length()); + publishProgress(rx000pkgData.decodedError); } - else publishProgress(rx000pkgData.decodedError); - iTimeOut = 500; + iTimeOut = 1000; } } else if (rx000pkgData.responseType == Cs108Connector.HostCmdResponseTypes.TYPE_COMMAND_END) { if (rx000pkgData.decodedError != null) { endingMessaage = rx000pkgData.decodedError; ending = true; } @@ -224,17 +231,16 @@ else if (repeat && (nextNew == false || resultError.length() != 0)) { timeMillis = System.currentTimeMillis(); } else if (notificationData != null) { - MainActivity.mCs108Library4a.appendToLog("resultError=" + MainActivity.mCs108Library4a.byteArrayToString(notificationData)); + //MainActivity.mCs108Library4a.appendToLog("resultError=" + MainActivity.mCs108Library4a.byteArrayToString(notificationData)); publishProgress("Received notification uplink event 0xA101 with error code=" + MainActivity.mCs108Library4a.byteArrayToString(notificationData)); - timeMillis = System.currentTimeMillis(); - iTimeOut = 500; + taskCancelReason = TaskCancelRReason.TIMEOUT; } if (System.currentTimeMillis() - timeMillis > iTimeOut) { - MainActivity.mCs108Library4a.appendToLog("endingMessage: iTimeout = " + iTimeOut); + //MainActivity.mCs108Library4a.appendToLog("endingMessage: iTimeout = " + iTimeOut); taskCancelReason = TaskCancelRReason.TIMEOUT; } if (taskCancelReason != TaskCancelRReason.NULL) { - MainActivity.mCs108Library4a.appendToLog("taskCancelReason=" + TaskCancelRReason.values()); + //MainActivity.mCs108Library4a.appendToLog("taskCancelReason=" + TaskCancelRReason.values()); cancel(true); } } @@ -248,6 +254,7 @@ else if (notificationData != null) { protected void onProgressUpdate(String... output) { if (true) progressUpdate(output); else if (output[0] != null) { + MainActivity.mCs108Library4a.appendToLog("onProgressUpdate output[0] = " + output[0]); if (output[0].length() == 2) { if (output[0].contains("TT")) { gotInventory = true; @@ -275,6 +282,7 @@ else if (output[0] != null) { taskCancelReason = TaskCancelRReason.ERROR; } } else { + MainActivity.mCs108Library4a.appendToLog("onProgressUpdate output[1] = " + output[1]); if (registerYield != null) { if (tagInventoried != null) { tagList.add(tagInventoried); @@ -305,6 +313,7 @@ protected void onPostExecute(String result) { protected void progressUpdate(String... output) { if (output[0] != null) { + MainActivity.mCs108Library4a.appendToLog("onProgressUpdate output[0] = " + output[0]); if (output[0].length() == 2) { if (output[0].contains("TT")) { gotInventory = true; @@ -331,6 +340,7 @@ protected void progressUpdate(String... output) { MainActivity.mCs108Library4a.appendToLog("output[0]: " + output[0] + ", resultError = " + resultError); } } else { + MainActivity.mCs108Library4a.appendToLog("onProgressUpdate output[1] = " + output[1]); if (registerYield != null) { if (tagInventoried != null) { tagList.add(tagInventoried); @@ -359,6 +369,9 @@ void DeviceConnectTask4RegisterEnding() { strErrorMessage = ""; switch (taskCancelReason) { case NULL: + if (accessResult == null) MainActivity.mCs108Library4a.appendToLog("taskCancelReason: NULL accessResult"); + if (resultError != null) MainActivity.mCs108Library4a.appendToLog("taskCancelReason: resultError = " + resultError); + if (endingMessaage != null) MainActivity.mCs108Library4a.appendToLog("taskCancelReason: endingMessaage = " + endingMessaage); if (accessResult == null || (resultError != null && resultError.length() != 0) || (endingMessaage != null && endingMessaage.length() != 0)) strErrorMessage += ("Finish as COMMAND END is received " + (gotInventory ? "WITH" : "WITHOUT") + " tag response"); //else Toast.makeText(MainActivity.mContext, R.string.toast_abort_by_SUCCESS, Toast.LENGTH_SHORT).show(); break; diff --git a/app/src/main/java/com/csl/cs108ademoapp/InventoryRfidTask.java b/app/src/main/java/com/csl/cs108ademoapp/InventoryRfidTask.java index 974776f..b260c7e 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/InventoryRfidTask.java +++ b/app/src/main/java/com/csl/cs108ademoapp/InventoryRfidTask.java @@ -262,7 +262,7 @@ void inventoryHandler_tag() { int extraLength = 0; if (extra1Bank != -1 && rx000pkgData.decodedData1 != null) extraLength += rx000pkgData.decodedData1.length; if (extra2Bank != -1 && rx000pkgData.decodedData2 != null) extraLength += rx000pkgData.decodedData2.length; - if (extraLength != 0 && MainActivity.mCs108Library4a.getcsModel() != 710) { + if (extraLength != 0) { byte[] decodedEpcNew = new byte[rx000pkgData.decodedEpc.length - extraLength]; System.arraycopy(rx000pkgData.decodedEpc, 0, decodedEpcNew, 0, decodedEpcNew.length); rx000pkgData.decodedEpc = decodedEpcNew; @@ -650,6 +650,7 @@ public InventoryRfidTask(Context context, int extra1Bank, int extra2Bank, int da boolean popRequest = false; Toast mytoast; void DeviceConnectTask4InventoryEnding(TaskCancelRReason taskCancelRReason) { + MainActivity.mCs108Library4a.abortOperation(); //added in case previous command end is received with inventory stopped MainActivity.mCs108Library4a.appendToLog("serverConnectValid = " + serverConnectValid); if (serverConnectValid && ALLOW_RTSAVE) { try { 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 421cfe6..04c547f 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/adapters/ReaderListAdapter.java +++ b/app/src/main/java/com/csl/cs108ademoapp/adapters/ReaderListAdapter.java @@ -156,8 +156,8 @@ public View getView(int position, View convertView, ViewGroup parent) { int phase = reader.getPhase(); String stringDetailB = null; if (channel != 0 || phase != 0) { - //double dChannel = MainActivity.mCs108Library4a.getLogicalChannel2PhysicalFreq(reader.getChannel()); - //stringDetailB = "Phase=" + phase + "\n" + dChannel + "MHz"; + double dChannel = MainActivity.mCs108Library4a.getLogicalChannel2PhysicalFreq(reader.getChannel()); + stringDetailB = "Phase=" + phase + "\n" + dChannel + "MHz"; } if (stringDetailB != null) readerDetailB.setText(stringDetailB); } 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 ee58e63..572cad9 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AboutFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AboutFragment.java @@ -72,6 +72,8 @@ public void run() { TextView productSerial = (TextView) getActivity().findViewById(R.id.module_productserialnumber); TextView boardVersion = (TextView) getActivity().findViewById(R.id.module_boardversion); TextView barcodeSerial = (TextView) getActivity().findViewById(R.id.moduleBar_serialNumber); + TextView barcodeDate = (TextView) getActivity().findViewById(R.id.moduleBar_date); + TextView barcodeVersion = (TextView) getActivity().findViewById(R.id.moduleBar_version); TextView bluetoothVersion = (TextView) getActivity().findViewById(R.id.bluetooth_version); TextView bluetoothAddress = (TextView) getActivity().findViewById(R.id.bluetooth_address); @@ -99,7 +101,11 @@ public void run() { productSerial.setText(MainActivity.mCs108Library4a.getHostProcessorICSerialNumber()); boardVersion.setText(MainActivity.mCs108Library4a.getHostProcessorICBoardVersion()); if (MainActivity.mCs108Library4a.isBarcodeFailure()) barcodeSerial.setText("Not available"); - else barcodeSerial.setText(MainActivity.mCs108Library4a.getBarcodeSerial()); + else { + barcodeSerial.setText(MainActivity.mCs108Library4a.getBarcodeSerial()); + barcodeDate.setText(MainActivity.mCs108Library4a.getBarcodeDate()); + barcodeVersion.setText(MainActivity.mCs108Library4a.getBarcodeVersion()); + } bluetoothAddress.setText(MainActivity.mCs108Library4a.getBluetoothDeviceAddress()); bluetoothRssi.setText(String.valueOf(MainActivity.mCs108Library4a.getRssi())); } else { 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 aece3f0..ef0ab73 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessFdmicroFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessFdmicroFragment.java @@ -26,7 +26,6 @@ import com.csl.cs108library4a.Cs108Connector; import java.text.SimpleDateFormat; -import java.util.Calendar; import java.util.Date; import static com.csl.cs108ademoapp.MainActivity.mContext; @@ -35,13 +34,17 @@ public class AccessFdmicroFragment extends CommonFragment { SelectTag selectTag; Spinner spinnerSelectCommand, spinnerSelectAuth, spinnerSelectGetSource; TableRow tableRowOffsetLength, tableRowValue, tableRowAuth, tableRowGetTemperature, tableRowGetTemperature1, tableRowLogging, tableRowReg, tableRowEnable; - EditText editTextMemoryValue; + EditText editTextMemoryValue, editTextDelayStart, editTextCntLimit, editTextStep; TextView textViewTemperatureValue, textViewBatteryValue, textViewLoggingValue, textViewLoggingValue1; Button buttonRead, buttonWrite; + SimpleDateFormat formatter; - boolean operationRunning = false, operationRead = false, operationReadTemperature = false, operationReadBattery = false, operationSetLogging = false, operationCheckLogging = false, operationGetLogging = false; + boolean operationRunning = false, operationRead = false, operationReadTemperature = false, operationReadBattery = false, operationSetLogging = false, operationCheckLogging = false, operationStopLogging = false, operationGetLogging = false; AccessTask accessTask; + void clearOperationSelect() { + operationReadTemperature = false; operationReadBattery = false; operationSetLogging = false; operationCheckLogging = false; operationStopLogging = false; operationGetLogging = false; + } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState, false); @@ -96,7 +99,7 @@ public void onNothingSelected(AdapterView parent) { @Override public void onClick(View v) { if (isOperationRunning()) return; - operationReadTemperature = true; + clearOperationSelect(); operationReadTemperature = true; textViewTemperatureValue.setText(""); readWriteOperation(); } @@ -108,19 +111,24 @@ public void onClick(View v) { @Override public void onClick(View v) { if (isOperationRunning()) return; - operationReadBattery = true; + clearOperationSelect(); operationReadBattery = true; textViewBatteryValue.setText(""); readWriteOperation(); } }); textViewBatteryValue = (TextView) getActivity().findViewById(R.id.accessFDbatteryValue); + editTextDelayStart = (EditText) getActivity().findViewById(R.id.accessFDvdetDelayStartCfg); + editTextCntLimit = (EditText) getActivity().findViewById(R.id.accessFDrtcCntLimit); + editTextStep = (EditText) getActivity().findViewById(R.id.accessFDstepCfg); + formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + Button buttonSetLogging = (Button) getActivity().findViewById(R.id.accessFDSetLogging); buttonSetLogging.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (isOperationRunning()) return; - operationSetLogging = true; + clearOperationSelect(); operationSetLogging = true; textViewLoggingValue.setText(""); readWriteOperation(); } @@ -130,7 +138,17 @@ public void onClick(View v) { @Override public void onClick(View v) { if (isOperationRunning()) return; - operationCheckLogging = true; + clearOperationSelect(); operationCheckLogging = true; + textViewLoggingValue.setText(""); + readWriteOperation(); + } + }); + Button buttonStopLogging = (Button) getActivity().findViewById(R.id.accessFDStopLogging); + buttonStopLogging.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (isOperationRunning()) return; + clearOperationSelect(); operationStopLogging = true; textViewLoggingValue.setText(""); readWriteOperation(); } @@ -140,7 +158,7 @@ public void onClick(View v) { @Override public void onClick(View v) { if (isOperationRunning()) return; - operationGetLogging = true; + clearOperationSelect(); operationGetLogging = true; textViewLoggingValue1.setText(""); readWriteOperation(); } @@ -153,24 +171,20 @@ public void onClick(View v) { @Override public void onClick(View v) { if (isOperationRunning()) return; - if (logData == null) return; - SaveList2ExternalTask saveExternalTask = new SaveList2ExternalTask(MainActivity.sharedObjects.barsList); - SimpleDateFormat dataFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); - Calendar c = Calendar.getInstance(); - Date date = new Date(); - - String strMessage = "File Save time: " + dataFormat.format(date); - strMessage += "\nEPC ID: " + logData.strEpc; - Date datetimeStartLog = logData.dateLogStart; - strMessage += "\nStart Log time: " + dataFormat.format(datetimeStartLog); - c.setTime(logData.dateLogStop); strMessage += "\nStop Log time: " + dataFormat.format(c.getTime()); - int sampleInterval = logData.secLogSampleInterval; strMessage += "\nSample step in seconds: " + String.valueOf(sampleInterval); - strMessage += "\nTemperature Log data:"; - c.setTime(logData.dateLogStart); c.add(Calendar.MINUTE, logData.minLogStartDelay); - for (int i = 0; i < logData.iSampleSize; i++) { - strMessage += "\n" + String.format("%i, ", i) + logData.iTempArray[i] + " at " + dataFormat.format(c.getTime()); - c.add(Calendar.SECOND, logData.secLogSampleInterval); + String strMessage = "EPC: " + selectTag.editTextTagID.getText().toString() + "\n"; + strMessage += textViewLoggingValue1.getText().toString(); + if (logData != null) { + Date date = logData.dateLogStart; + if (date != null) { + long ltime = date.getTime(); + ltime += (logData.minLogStartDelay * 1000 * 60); + if (logData.iSampleSize > 0) { + ltime += (logData.iSampleSize -1 ) * logData.secLogSampleInterval * 1000; + } + date.setTime(ltime); + strMessage += ("Stop: " + formatter.format(date) + "\n"); + } } String resultDisplay = saveExternalTask.save2File(strMessage, false); CustomPopupWindow customPopupWindow = new CustomPopupWindow(mContext); @@ -183,7 +197,7 @@ public void onClick(View v) { @Override public void onClick(View v) { if (isOperationRunning()) return; - operationRead = true; + clearOperationSelect(); operationRead = true; readWriteOperation(); } }); @@ -193,7 +207,7 @@ public void onClick(View v) { @Override public void onClick(View v) { if (isOperationRunning()) return; - operationRead = false; + clearOperationSelect(); operationRead = false; readWriteOperation(); } }); @@ -238,14 +252,10 @@ public AccessFdmicroFragment() { } class LogData { - String strEpc; Date dateLogStart; - Date dateLogStop; int minLogStartDelay; int secLogSampleInterval; - int iSampleExpected; int iSampleSize; - int[] iTempArray; } LogData logData; @@ -372,6 +382,9 @@ void readWriteOperation() { } else { MainActivity.mCs108Library4a.appendToLog("Item Selected is " + spinnerSelectCommand.getSelectedItemPosition()); int position = spinnerSelectCommand.getSelectedItemPosition(); + if (operationStopLogging) { + position = 3; operationRead = false; + } switch (position) { case 0: EditText editTextMemoryOffset = (EditText) getActivity().findViewById(R.id.accessFDmemoryOffset); @@ -578,6 +591,44 @@ public void run() { if (operationGetLogging) { switch (iOtherFlowCount) { case 0: + MainActivity.mCs108Library4a.set_fdReadMem(0, 12); + doAccessTask(Cs108Connector.HostCommands.CMD_FDM_RDMEM); + break; + case 1: + MainActivity.mCs108Library4a.appendToLog("case 1: bLogging = " + bLogging + ", accessTask.accessResult = " + accessTask.accessResult); + if (accessTask.accessResult != null) { + Date date = null; + long lDateTime = -1; + int iDelay = -1, iInterval = -1; + if (accessTask.accessResult.length() >= 24) { + try { + String strDateTime = accessTask.accessResult.substring(6, 8); + strDateTime += accessTask.accessResult.substring(4, 6); + strDateTime += accessTask.accessResult.substring(2, 4); + strDateTime += accessTask.accessResult.substring(0, 2); + lDateTime = 1000 * Long.parseLong(strDateTime, 16); + + String strDelay = accessTask.accessResult.substring(18, 20); + strDelay += accessTask.accessResult.substring(16, 18); + iDelay = Integer.parseInt(strDelay, 16); + + String strInterval = accessTask.accessResult.substring(22, 24); + strInterval += accessTask.accessResult.substring(20, 22); + iInterval = Integer.parseInt(strInterval, 16); + } catch(Exception ex) { } + if (iInterval != -1) { + date = new Date(); + date.setTime(lDateTime); + textViewLoggingValue1.append("Start: " + formatter.format(date) + "\n"); + textViewLoggingValue1.append("delay: " + iDelay + " minutes\n"); + textViewLoggingValue1.append("interval: " + iInterval + " seconds\n"); + } + logData = new LogData(); + logData.dateLogStart = date; + logData.minLogStartDelay = iDelay; + logData.secLogSampleInterval = iInterval; + } + } if (bLogging) { MainActivity.mCs108Library4a.set_fdRegAddr(0xc094); doAccessTask(Cs108Connector.HostCommands.CMD_FDM_RDREG); @@ -586,7 +637,8 @@ public void run() { doAccessTask(Cs108Connector.HostCommands.CMD_FDM_RDMEM); } break; - case 1: + case 2: + MainActivity.mCs108Library4a.appendToLog("bLogging = " + bLogging + ", accessTask.accessResult = " + accessTask.accessResult); if (bLogging) { operationGetLogging = false; int iValue = 0; @@ -598,13 +650,18 @@ public void run() { else if (iValue == 0x20) strMessage = "Logging in Progress"; else if (iValue == 00) strMessage = "non-rtc"; textViewLoggingValue1.setText(accessTask.accessResult + ": " + strMessage + "\n"); + break; } else { String strTemp = accessTask.accessResult; iTimeTotal = Integer.parseInt(strTemp.substring(2, 4) + strTemp.substring(0, 2), 16); - textViewLoggingValue1.setText("status: " + accessTask.accessResult + "\n"); + MainActivity.mCs108Library4a.appendToLog("iTimeTotal is set to " + iTimeTotal + ", with strTemp = " + strTemp); + textViewLoggingValue1.append("status: " + accessTask.accessResult + "\n"); + iTimeTotal++; } + logData.iSampleSize = 0; default: - if (iOtherFlowCount != 1) { + MainActivity.mCs108Library4a.appendToLog("iOtherFlowCount = " + iOtherFlowCount + ", accessTask.accessResult = " + accessTask.accessResult); + if (iOtherFlowCount != 2) { String strMessage = ""; //accessTask.accessResult + ": "; String strAccessResult = accessTask.accessResult.substring(6, 8) + accessTask.accessResult.substring(4, 6) + accessTask.accessResult.substring(2, 4) + accessTask.accessResult.substring(0, 2); Long lValue = Long.parseLong(strAccessResult, 16); @@ -621,15 +678,15 @@ public void run() { strMessage += ("invalid checksum, " + strAccessResult); else { iTimeNumber = Integer.parseInt(strAccessResult.substring(0, 4), 16) & 0x7FFF; - strMessage += ("item " + iTimeNumber + ", "); + strMessage += ("item " + iTimeNumber + ": "); int iTemperature = Integer.parseInt(strAccessResult.substring(5, 8), 16) & 0x3FF; strMessage += i2TemperatureString(iTemperature); - logData.iTempArray[logData.iSampleSize++] = iTemperature; + logData.iSampleSize++; } textViewLoggingValue1.append(strMessage + "\n"); } - if (iTimeTotal < (iOtherFlowCount - 1) || bLogging) { + if (iTimeTotal <= (iOtherFlowCount - 2) || bLogging) { textViewLoggingValue1.append("end of logging data\n"); operationGetLogging = false; commandSelected(spinnerSelectCommand.getSelectedItemPosition()); @@ -663,57 +720,50 @@ public void run() { } else if (operationSetLogging) { MainActivity.mCs108Library4a.appendToLog("wallace.iOtherFlowCount = " + iOtherFlowCount + ", accessResult = " + accessTask.accessResult); switch (iOtherFlowCount) { - case 0: - MainActivity.mCs108Library4a.set_fdWriteMem(0xb040, 4, 0x4cb329d6); //~user_cfg1,user_cfg1,~user_cfg0,user_cfg0: default as 0xd629b34c + case 0: //0x4cb3,29d6 + CheckBox checkBox = (CheckBox) getActivity().findViewById(R.id.accessFDenableLEDAutoFlash); + long lValue = 0x4db229d6; + if (checkBox.isChecked()) { + lValue |= 0x2000; lValue &= ~0x20; + lValue &= 0xFFFFFFFF; + MainActivity.mCs108Library4a.appendToLog("lValue = " + String.format("%08x", lValue)); + } else { + lValue &= ~0x2000; lValue |= 0x20; + lValue &= 0xFFFFFFFF; + MainActivity.mCs108Library4a.appendToLog("lValue1 = " + String.format("%08x", lValue)); + } + MainActivity.mCs108Library4a.set_fdWriteMem(0xb040, 4, lValue); //~user_cfg1,user_cfg1,~user_cfg0,user_cfg0: default as 0xd629b34c doAccessTask(Cs108Connector.HostCommands.CMD_FDM_WRMEM); logData = new LogData(); - logData.dateLogStart = new Date(); - logData.strEpc = selectTag.editTextTagID.getText().toString(); break; case 1: - EditText editText = (EditText) getActivity().findViewById(R.id.accessFDrtcCntLimit); - int iValue = 3; + int iValue0 = 3; try { - iValue = Integer.parseInt(editText.getText().toString()); - } catch (Exception ex) { } - editText.setText(String.valueOf(iValue)); - String string1 = String.format("%04X", iValue); + iValue0 = Integer.parseInt(editTextCntLimit.getText().toString()); + } catch (Exception ex) { + } + editTextCntLimit.setText(String.valueOf(iValue0)); + + String string1 = String.format("%04X", iValue0); MainActivity.mCs108Library4a.appendToLog("accessResult: string1 = " + string1); - String string2 = string1.substring(2,4) + string1.substring(0,2) + "0000"; + String string2 = string1.substring(2, 4) + string1.substring(0, 2) + "0000"; MainActivity.mCs108Library4a.appendToLog("accessResult: string2 = " + string2); - iValue = Integer.parseInt(string2, 16); - MainActivity.mCs108Library4a.appendToLog(String.format("accessResult: iValue = %X", iValue)); + int iValue = Integer.parseInt(string2, 16); + MainActivity.mCs108Library4a.appendToLog(String.format("accessResult: iValue = %X, iValue1 = %X", iValue0, iValue)); MainActivity.mCs108Library4a.set_fdWriteMem(0xb094, 4, iValue); //rtc_cnt_limit: default as 0x00000003 doAccessTask(Cs108Connector.HostCommands.CMD_FDM_WRMEM); - logData.iSampleExpected = iValue; logData.iSampleSize = 0; - logData.iTempArray = new int[iValue]; break; case 2: - editText = (EditText) getActivity().findViewById(R.id.accessFDstepCfg); - iValue = 3; - try { - iValue = Integer.parseInt(editText.getText().toString()); - } catch (Exception ex) { } - editText.setText(String.valueOf(iValue)); - string1 = String.format("%04X", iValue); - MainActivity.mCs108Library4a.appendToLog("accessResult: string1 = " + string1); - string2 = string1.substring(2,4) + string1.substring(0,2); string2 += string2; - MainActivity.mCs108Library4a.appendToLog("accessResult: string2 = " + string2); - iValue = Integer.parseInt(string2, 16); - MainActivity.mCs108Library4a.appendToLog(String.format("accessResult: iValue = %X", iValue)); - MainActivity.mCs108Library4a.set_fdWriteMem(0xb0a4, 4, 0x0A000100); //vdet_alarm_step_cfg, vdet_step_cfg: default as 0 doAccessTask(Cs108Connector.HostCommands.CMD_FDM_WRMEM); - logData.secLogSampleInterval = iValue; break; case 3: - editText = (EditText) getActivity().findViewById(R.id.accessFDvdetDelayStartCfg); iValue = 1; try { - iValue = Integer.parseInt(editText.getText().toString()); + iValue = Integer.parseInt(editTextDelayStart.getText().toString()); } catch (Exception ex) { } - editText.setText(String.valueOf(iValue)); + editTextDelayStart.setText(String.valueOf(iValue)); MainActivity.mCs108Library4a.appendToLog(String.format("accessResult: iValue = %X", iValue)); MainActivity.mCs108Library4a.set_fdWrite(0xc084, iValue); //vdet_delay_cfg: default as 0xffff in minute @@ -721,16 +771,16 @@ public void run() { logData.minLogStartDelay = iValue; break; case 4: - editText = (EditText) getActivity().findViewById(R.id.accessFDstepCfg); iValue = 1; try { - iValue = Integer.parseInt(editText.getText().toString()); + iValue = Integer.parseInt(editTextStep.getText().toString()); } catch (Exception ex) { } - editText.setText(String.valueOf(iValue)); + editTextStep.setText(String.valueOf(iValue)); MainActivity.mCs108Library4a.appendToLog(String.format("accessResult: iValue = %X", iValue)); MainActivity.mCs108Library4a.set_fdWrite(0xc085, iValue); //vdet_step_cfg: default as 0xffff in seconds doAccessTask(Cs108Connector.HostCommands.CMD_FDM_WRREG); + logData.secLogSampleInterval = iValue; break; case 5: MainActivity.mCs108Library4a.set_fdWrite(0xc099, 0); //summary_min_temperature: default 0 @@ -748,6 +798,27 @@ public void run() { MainActivity.mCs108Library4a.set_fdRegAddr(0xc084); //vdet_delay_cfg: default as 0xffff in minute doAccessTask(Cs108Connector.HostCommands.CMD_FDM_RDREG); break; + case 9: + Date date = new Date(); + MainActivity.mCs108Library4a.appendToLog("Current time is " + formatter.format(date)); + + long longTemp = date.getTime() / 1000; + Long longValue = ((longTemp & 0xFF) << 24); + longValue |= ((longTemp & 0xFF00) << 8) ; + longValue |= ((longTemp & 0xFF0000) >> 8); + longValue |= ((longTemp & 0xFF000000) >> 24) ; + MainActivity.mCs108Library4a.set_fdWriteMem(0, 4, longValue); //rtc_cnt_limit: default as 0x00000003 + doAccessTask(Cs108Connector.HostCommands.CMD_FDM_WRMEM); + break; + case 10: + longValue = (((long)logData.minLogStartDelay & 0xFF) << 24); + longValue |= ((logData.minLogStartDelay & 0xFF00) << 8) ; + longValue |= ((logData.secLogSampleInterval & 0XFF) << 8 ); + longValue |= ((logData.secLogSampleInterval & 0xFF00) >> 8) ; + MainActivity.mCs108Library4a.appendToLog(String.format("longValue = %08x, minLogStartDelay = %04x, secLogSampleInterval = %04x", longValue, logData.minLogStartDelay, logData.secLogSampleInterval)); + MainActivity.mCs108Library4a.set_fdWriteMem(8, 4, longValue); //rtc_cnt_limit: default as 0x00000003 + doAccessTask(Cs108Connector.HostCommands.CMD_FDM_WRMEM); + break; default: operationSetLogging = false; if (iOtherFlowCount < 88) { @@ -796,6 +867,10 @@ 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(Cs108Connector.HostCommands.CMD_FDM_WRMEM); + MainActivity.mCs108Library4a.set_fdWriteMem(0xb061, 1, 0x40); + doAccessTask(Cs108Connector.HostCommands.CMD_FDM_WRMEM);*/ MainActivity.mCs108Library4a.set_fdWrite(0xc012, 0x0000); doAccessTask(Cs108Connector.HostCommands.CMD_FDM_WRREG); break; @@ -825,6 +900,10 @@ else if (operationReadTemperature) { iOtherFlowCount++; } else { int position = spinnerSelectCommand.getSelectedItemPosition(); + if (operationStopLogging) { + operationStopLogging = false; + position = 3; operationRead = false; + } switch (position) { case 0: if (operationRead) editTextMemoryValue.setText(accessTask.accessResult); @@ -875,7 +954,7 @@ else if (strMessage.matches("FFF0")) customPopupWindow.popupStart(strMessage, false); break; case 3: - editTextMemoryValue.setText(accessTask.accessResult); + textViewLoggingValue.setText(accessTask.accessResult); strMessage = accessTask.accessResult.trim(); if (operationRead) { if (strMessage.matches("0000")) strMessage = null; @@ -928,6 +1007,11 @@ else if (strMessage.matches("FFF0")) customPopupWindow = new CustomPopupWindow(MainActivity.mContext); customPopupWindow.popupStart(strMessage, false); } + if (position == 8 && iOtherFlowCount == 0) { + iOtherFlowCount++; + MainActivity.mCs108Library4a.set_fdWriteMem(0xb040, 4, 0x4db229d6); //~user_cfg1,user_cfg1,~user_cfg0,user_cfg0: default as 0xd629b34c + doAccessTask(Cs108Connector.HostCommands.CMD_FDM_WRMEM); + } break; case 6: strMessage = accessTask.accessResult; 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 1c2dc68..93e281b 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessUcodeFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/AccessUcodeFragment.java @@ -477,6 +477,8 @@ else if (strMatching.substring(0, 4).matches("96C5") == false) { } } void startAccessTask() { if (DEBUG) MainActivity.mCs108Library4a.appendToLog("startAccessTask()"); + MainActivity.mCs108Library4a.setInvAlgo(false); + if (MainActivity.mCs108Library4a.getRetryCount() < 2) MainActivity.mCs108Library4a.setRetryCount(2); if (updating == false) { updating = true; bankProcessing = 0; mHandler.removeCallbacks(updateRunnable); 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 ee583bd..a9edfd3 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/CommonFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/CommonFragment.java @@ -26,7 +26,7 @@ public abstract class CommonFragment extends Fragment { final boolean DEBUG = false; final String TAG = "Hello"; private String fragmentName; - MenuItem menuBatteryVoltageItem; + MenuItem menuTriggerItem, menuBatteryVoltageItem; Handler mHandler = new Handler(); boolean fragmentActive = false; @@ -60,6 +60,28 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa if (menuFragment) setHasOptionsMenu(true); return super.onCreateView(inflater, container, savedInstanceState); } + + int triggerCount_old; + private final Runnable updateTriggerRunnable = new Runnable() { + @Override + public void run() { + mHandler.postDelayed(updateTriggerRunnable, 500); + + if (menuTriggerItem == null) return; + if (MainActivity.mCs108Library4a.isBleConnected() == false) { menuTriggerItem.setTitle(""); return; } + if (menuTriggerItem.getTitle().toString().trim().length() != 0) { + menuTriggerItem.setTitle(""); + } else { + int triggerCount = MainActivity.mCs108Library4a.getTriggerCount(); + if (triggerCount != triggerCount_old) { + triggerCount_old = triggerCount; + if (MainActivity.mCs108Library4a.getTriggerButtonStatus()) menuTriggerItem.setTitle("Ton"); + else menuTriggerItem.setTitle("Toff"); + } + } + } + }; + int batteryCount_old; boolean batteryUpdate = false; CustomPopupWindow batteryWarningPopupWindow; String strBatteryLow; private final Runnable updateBatteryRunnable = new Runnable() { @Override @@ -119,6 +141,7 @@ public void onResume() { if (DEBUG) MainActivity.mCs108Library4a.appendToLog(fragmentName); if (menuFragment) { batteryCount_old = -1; + mHandler.post(updateTriggerRunnable); mHandler.post(updateBatteryRunnable); } super.onResume(); @@ -138,7 +161,8 @@ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { } } else { inflater.inflate(R.menu.menu_home, menu); - menuBatteryVoltageItem = menu.findItem(R.id.home_voltage); + menuBatteryVoltageItem = menu.findItem(R.id.home_voltage);; + menuTriggerItem = menu.findItem(R.id.home_trigger); menu.removeItem(R.id.home_menu); if (fragmentName.matches("InventoryFragment") || fragmentName.contains("InventoryRfidiMultiFragment") @@ -190,6 +214,7 @@ public void onPause() { @Override public void onStop() { if (DEBUG) MainActivity.mCs108Library4a.appendToLog(fragmentName); + mHandler.removeCallbacks(updateTriggerRunnable); mHandler.removeCallbacks(updateBatteryRunnable); super.onStop(); } 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 ac5b20e..bb40b66 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/HomeFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/HomeFragment.java @@ -28,7 +28,7 @@ public void onStart() { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - super.onCreateView(inflater, container, savedInstanceState, false); + super.onCreateView(inflater, container, savedInstanceState, true); return inflater.inflate(R.layout.home_layout, container, false); } 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 241b3b1..9594816 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/InventoryRfidiMultiFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/InventoryRfidiMultiFragment.java @@ -451,6 +451,7 @@ void startInventoryTask() { if (MainActivity.selectFor != 5) { MainActivity.mCs108Library4a.setSelectCriteria(1, true, 4, 5, MainActivity.selectHold, 3, 0x3B0, "00"); MainActivity.mCs108Library4a.setSelectCriteriaDisable(2); + if (MainActivity.mCs108Library4a.getRetryCount() < 2) MainActivity.mCs108Library4a.setRetryCount(2); MainActivity.selectFor = 5; } } else { @@ -470,13 +471,13 @@ void startInventoryTask() { } else if (MainActivity.mDid.matches("E2806894B")) { Log.i(TAG, "HelloK: Find E2806894B"); MainActivity.mCs108Library4a.setInvBrandId(false); - MainActivity.mCs108Library4a.setSelectCriteria(1, true, 4, 0, 1, 0x203, "1", true); - bNeedSelectedTagByTID = false; + MainActivity.mCs108Library4a.setSelectCriteria(1, true, 4, 2, 1, 0x203, "1", true); + if (false) bNeedSelectedTagByTID = false; } else if (MainActivity.mDid.matches("E2806894C")) { Log.i(TAG, "HelloK: Find E2806894C"); MainActivity.mCs108Library4a.setInvBrandId(true); - MainActivity.mCs108Library4a.setSelectCriteria(1, true, 4, 0, 1, 0x204, "1", true); - bNeedSelectedTagByTID = false; + MainActivity.mCs108Library4a.setSelectCriteria(1, true, 4, 2, 1, 0x204, "1", true); + if (false) bNeedSelectedTagByTID = false; } } else if (mDid.indexOf("E28011") == 0) bNeedSelectedTagByTID = false; Log.i(TAG, "HelloK: going to setSelectedTagByTID with mDid = " + mDid + " with extra1Bank = " + extra1Bank + ", extra2Bank = " + extra2Bank + ", bNeedSelectedTagByTID = " + bNeedSelectedTagByTID + ", bMultiBank = " + bMultiBank); @@ -524,10 +525,7 @@ void startInventoryTask() { } if (extra1Bank == 1) extra1Offset += 2; if (extra2Bank == 1) extra2Offset += 2; - if (MainActivity.mCs108Library4a.getcsModel() == 710) { - MainActivity.mCs108Library4a.enableMultibankReadConfig(0, extra1Bank, extra1Offset, extra1Count); - MainActivity.mCs108Library4a.enableMultibankReadConfig(1, extra2Bank, extra2Offset, extra2Count); - } else { + if (true) { MainActivity.mCs108Library4a.setTagRead(extra2Count != 0 && extra2Count != 0 ? 2 : 1); MainActivity.mCs108Library4a.setAccessBank(extra1Bank, extra2Bank); MainActivity.mCs108Library4a.setAccessOffset(extra1Offset, extra2Offset); 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 e15fb5a..1aa921b 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingAdminFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingAdminFragment.java @@ -20,8 +20,8 @@ import com.csl.cs108ademoapp.SettingTask; public class SettingAdminFragment extends CommonFragment { - private CheckBox checkBoxInventoryBeep, checkBoxInventoryVibrate, checkBoxSaveFileEnable, checkBoxSaveCloudEnable, checkBoxSaveNewCloudEnable, checkBoxSaveAllCloudEnable; - private EditText editTextDeviceName, editTextIntraPkgDelay, editTextDeTime, editTextCycleDelay, editTextBeepCount, editTextVibrateTime, editTextVibrateWindow, editTextServer, editTextServerTimeout; + private CheckBox checkBoxTriggerReporting, checkBoxInventoryBeep, checkBoxInventoryVibrate, checkBoxSaveFileEnable, checkBoxSaveCloudEnable, checkBoxSaveNewCloudEnable, checkBoxSaveAllCloudEnable; + private EditText editTextDeviceName, editTextCycleDelay, editTextTriggerReportingCount, editTextBeepCount, editTextVibrateTime, editTextVibrateWindow, editTextServer, editTextServerTimeout; private TextView textViewReaderModel; private Spinner spinnerQueryBattery, spinnerQueryRssi, spinnerQueryVibrateMode; private Button buttonCSLServer, button; @@ -33,13 +33,12 @@ public class SettingAdminFragment extends CommonFragment { int rssiDisplaySelect = -1; int vibrateModeSelect = -1; String deviceName = ""; - int intraPkgDelay = -1; int intraPkgDelayMin = 0; int intraPkgDelayMax = 100; - int deTime = -1; int deTimeMin = 0; int deTimeMax = 100; long cycleDelay = -1; long cycleDelayMin = 0; long cycleDelayMax = 2000; int iBeepCount = -1; int iBeepCountMin = 1; int iBeepCountMax = 100; + short sTriggerCount = -1, sTriggerCountMin = 1, sTriggerCountMax = 100; int iVibrateTime = -1; int iVibrateTimeMin = 1; int iVibrateTimeMax = 999; int iVibrateWindow = -1; int iVibrateWindowMin = 1; int iVibrateWindowMax = 4; - boolean inventoryBeep, inventoryVibrate, saveFileEnable, saveCloudEnable, saveNewCloudEnable, saveAllCloudEnable; + boolean triggerReporting, inventoryBeep, inventoryVibrate, saveFileEnable, saveCloudEnable, saveNewCloudEnable, saveAllCloudEnable; String serverName; int iServerTimeout = -1; int iServerTimeoutMin = 3; int iServerTimeoutMax = 9; @@ -84,21 +83,18 @@ public void onActivityCreated(Bundle savedInstanceState) { spinnerQueryVibrateMode.setAdapter(targetAdapter); } - if (MainActivity.mCs108Library4a.getcsModel() == 710) { - TableRow tableRow = (TableRow) getActivity().findViewById(R.id.settingAdminIntraPackageDelayRow); - tableRow.setVisibility(View.VISIBLE); - editTextIntraPkgDelay = (EditText) getActivity().findViewById(R.id.settingAdminIntraPackageDelay); - tableRow = (TableRow) getActivity().findViewById(R.id.settingAdminDeTimeRow); - tableRow.setVisibility(View.VISIBLE); - editTextDeTime = (EditText) getActivity().findViewById(R.id.settingAdminDeTime); - } - TextView textViewAdminCycleDelayLabel = (TextView) getActivity().findViewById(R.id.settingAdminCycleDelayLabel); String stringAdminCycleDelayLabel = textViewAdminCycleDelayLabel.getText().toString(); stringAdminCycleDelayLabel += "(" + String.valueOf(cycleDelayMin) + "-" + String.valueOf(cycleDelayMax) + "ms)"; textViewAdminCycleDelayLabel.setText(stringAdminCycleDelayLabel); editTextCycleDelay = (EditText) getActivity().findViewById(R.id.settingAdminCycleDelay); + TextView textViewAdminTriggerReportingCountLabel = (TextView) getActivity().findViewById(R.id.settingAdminTriggerReportingCountLabel); + String stringAdminTriggeringReportingCountLabel = textViewAdminTriggerReportingCountLabel.getText().toString(); + stringAdminTriggeringReportingCountLabel += "(" + String.valueOf(sTriggerCountMin) + "-" + String.valueOf(sTriggerCountMax) + ") sec"; + textViewAdminTriggerReportingCountLabel.setText(stringAdminTriggeringReportingCountLabel); + editTextTriggerReportingCount = (EditText) getActivity().findViewById(R.id.settingAdminTriggerReportingCount); + TextView textViewAdminBeepCountLabel = (TextView) getActivity().findViewById(R.id.settingAdminBeepCountLabel); String stringAdminBeepCountLabel = textViewAdminBeepCountLabel.getText().toString(); stringAdminBeepCountLabel += "(" + String.valueOf(iBeepCountMin) + "-" + String.valueOf(iBeepCountMax) + ")"; @@ -117,6 +113,7 @@ public void onActivityCreated(Bundle savedInstanceState) { textViewAdminVibrateWindowLabel.setText(stringAdminVibrateWindowLabel); editTextVibrateWindow = (EditText) getActivity().findViewById(R.id.settingAdminVibrateWindow); + checkBoxTriggerReporting = (CheckBox) getActivity().findViewById(R.id.settingAdminTriggerReporting); checkBoxInventoryBeep = (CheckBox) getActivity().findViewById(R.id.settingAdminInventoryBeep); checkBoxInventoryVibrate = (CheckBox) getActivity().findViewById(R.id.settingAdminInventoryVibrate); checkBoxSaveFileEnable = (CheckBox) getActivity().findViewById(R.id.settingAdminToFileEnable); @@ -256,12 +253,12 @@ public void onClick(View v) { batteryDisplaySelect = spinnerQueryBattery.getSelectedItemPosition(); rssiDisplaySelect = spinnerQueryRssi.getSelectedItemPosition(); vibrateModeSelect = spinnerQueryVibrateMode.getSelectedItemPosition(); - if (editTextIntraPkgDelay != null) intraPkgDelay = Integer.parseInt(editTextIntraPkgDelay.getText().toString()); - if (editTextDeTime != null) deTime = Integer.parseInt(editTextDeTime.getText().toString()); if (editTextCycleDelay != null) cycleDelay = Long.parseLong(editTextCycleDelay.getText().toString()); + if (editTextTriggerReportingCount != null) sTriggerCount = Short.parseShort(editTextTriggerReportingCount.getText().toString()); if (editTextBeepCount != null) iBeepCount = Integer.parseInt(editTextBeepCount.getText().toString()); if (editTextVibrateTime != null) iVibrateTime = Integer.parseInt(editTextVibrateTime.getText().toString()); if (editTextVibrateWindow != null) iVibrateWindow = Integer.parseInt(editTextVibrateWindow.getText().toString()); + triggerReporting = checkBoxTriggerReporting.isChecked(); inventoryBeep = checkBoxInventoryBeep.isChecked(); inventoryVibrate = checkBoxInventoryVibrate.isChecked(); saveFileEnable = checkBoxSaveFileEnable.isChecked(); @@ -294,6 +291,7 @@ public void onDestroy() { public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if(isVisibleToUser) { + checkBoxTriggerReporting.setChecked(MainActivity.mCs108Library4a.getTriggerReporting()); checkBoxInventoryBeep.setChecked(MainActivity.mCs108Library4a.getInventoryBeep()); checkBoxInventoryVibrate.setChecked(MainActivity.mCs108Library4a.getInventoryVibrate()); checkBoxSaveFileEnable.setChecked(MainActivity.mCs108Library4a.getSaveFileEnable()); @@ -319,9 +317,15 @@ public void run() { spinnerQueryBattery.setSelection(MainActivity.mCs108Library4a.getBatteryDisplaySetting()); spinnerQueryRssi.setSelection(MainActivity.mCs108Library4a.getRssiDisplaySetting()); spinnerQueryVibrateMode.setSelection(MainActivity.mCs108Library4a.getVibrateModeSetting()); - if (editTextIntraPkgDelay != null) editTextIntraPkgDelay.setText(String.valueOf(MainActivity.mCs108Library4a.getIntraPkgDelay())); - if (editTextDeTime != null) editTextDeTime.setText(String.valueOf(MainActivity.mCs108Library4a.getDeTime())); if (editTextCycleDelay != null) editTextCycleDelay.setText(String.valueOf(MainActivity.mCs108Library4a.getCycleDelay())); + if (editTextTriggerReportingCount != null) { + int triggerReportingCount = MainActivity.mCs108Library4a.getTriggerReportingCount(); + if (triggerReportingCount != MainActivity.mCs108Library4a.iNO_SUCH_SETTING) { + TableRow tableRow = (TableRow) getActivity().findViewById(R.id.settingAdminTriggerReportingRow); + tableRow.setVisibility(View.VISIBLE); + } + editTextTriggerReportingCount.setText(String.valueOf(triggerReportingCount)); + } if (editTextBeepCount != null) editTextBeepCount.setText(String.valueOf(MainActivity.mCs108Library4a.getBeepCount())); if (editTextVibrateTime != null) editTextVibrateTime.setText(String.valueOf(MainActivity.mCs108Library4a.getVibrateTime())); if (editTextVibrateWindow != null) editTextVibrateWindow.setText(String.valueOf(MainActivity.mCs108Library4a.getVibrateWindow())); @@ -369,23 +373,6 @@ void settingUpdate() { if (MainActivity.mCs108Library4a.setVibrateModeSetting(vibrateModeSelect) == false) invalidRequest = true; } - if (invalidRequest == false && editTextIntraPkgDelay != null) { - if (MainActivity.mCs108Library4a.getIntraPkgDelay() != intraPkgDelay || sameCheck == false) { - sameSetting = false; - if (intraPkgDelay < intraPkgDelayMin || intraPkgDelay > intraPkgDelayMax) invalidRequest = true; - else if (MainActivity.mCs108Library4a.setIntraPkgDelay(intraPkgDelay) == false) - invalidRequest = true; - } - } - if (invalidRequest == false && editTextDeTime != null) { - MainActivity.mCs108Library4a.appendToLog("deTime = " + deTime + ", " + MainActivity.mCs108Library4a.getDeTime()); - if (MainActivity.mCs108Library4a.getDeTime() != deTime || sameCheck == false) { - sameSetting = false; - if (deTime < deTimeMin || deTime > deTimeMax) invalidRequest = true; - else if (MainActivity.mCs108Library4a.setDeTime(deTime) == false) - invalidRequest = true; - } - } if (invalidRequest == false && editTextCycleDelay != null) { if (MainActivity.mCs108Library4a.getCycleDelay() != cycleDelay || sameCheck == false) { sameSetting = false; @@ -394,6 +381,14 @@ else if (MainActivity.mCs108Library4a.setCycleDelay(cycleDelay) == false) invalidRequest = true; } } + if (invalidRequest == false && editTextTriggerReportingCount != null) { + if (MainActivity.mCs108Library4a.getTriggerReportingCount() != sTriggerCount || sameCheck == false) { + sameSetting = false; + if (sTriggerCount < sTriggerCountMin || sTriggerCount > sTriggerCountMax) invalidRequest = true; + else if (MainActivity.mCs108Library4a.setTriggerReportingCount(sTriggerCount) == false) + invalidRequest = true; + } + } if (invalidRequest == false && editTextBeepCount != null) { if (MainActivity.mCs108Library4a.getBeepCount() != iBeepCount || sameCheck == false) { sameSetting = false; @@ -426,6 +421,13 @@ else if (MainActivity.mCs108Library4a.setVibrateWindow(iVibrateWindow) == false) invalidRequest = true; } } + if (invalidRequest == false && checkBoxTriggerReporting != null) { + if (MainActivity.mCs108Library4a.getTriggerReporting() != triggerReporting || sameCheck == false) { + sameSetting = false; + if (MainActivity.mCs108Library4a.setTriggerReporting(triggerReporting) == false) + invalidRequest = true; + } + } if (invalidRequest == false && checkBoxInventoryBeep != null) { MainActivity.mCs108Library4a.appendToLog("getInventoryBeep = " + MainActivity.mCs108Library4a.getInventoryBeep() + ", inventoryBeep = " + inventoryBeep); if (MainActivity.mCs108Library4a.getInventoryBeep() != inventoryBeep || sameCheck == false) { diff --git a/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingFilterPreFragment.java b/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingFilterPreFragment.java index 250fd0f..d2f3592 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingFilterPreFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingFilterPreFragment.java @@ -267,7 +267,7 @@ void settingUpdate() { settingTask = new SettingTask(button, sameSetting, invalidRequest); settingTask.execute(); - //MainActivity.mCs108Library4a.saveSetting2File(); + MainActivity.mCs108Library4a.saveSetting2File(); } } 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 481ca7a..e84ab61 100644 --- a/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingOperateFragment.java +++ b/app/src/main/java/com/csl/cs108ademoapp/fragments/SettingOperateFragment.java @@ -175,12 +175,7 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { editTextRetry = (EditText) getActivity().findViewById(R.id.settingOperateRetry); spinnerProfile = (Spinner) getActivity().findViewById(R.id.settingOperateProfile); - if (false) { - targetAdapter = ArrayAdapter.createFromResource(getActivity(), R.array.profile1_options, R.layout.custom_spinner_layout); - targetAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - spinnerProfile.setAdapter(targetAdapter); - } - else { + if (true) { ArrayAdapter targetAdapter1 = new ArrayAdapter(getContext(), android.R.layout.simple_spinner_dropdown_item, MainActivity.mCs108Library4a.getProfileList()); targetAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinnerProfile.setAdapter(targetAdapter1); @@ -683,5 +678,6 @@ else if (MainActivity.mCs108Library4a.setPopulation(iPopulation) == false) { settingTask = new SettingTask((sameCheck ? button: button1), sameSetting, invalidRequest); settingTask.execute(); MainActivity.mCs108Library4a.saveSetting2File(); + mHandler.post(updateRunnable); } } diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml index 920fe32..d989fc0 100644 --- a/app/src/main/res/layout/fragment_about.xml +++ b/app/src/main/res/layout/fragment_about.xml @@ -471,7 +471,8 @@ android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="5" - android:gravity="center"> + android:gravity="center" + android:visibility="gone"> + + + + + + + + + + + + + + + + + + + + + + + + android:text="0"/> + android:text="5"/> + android:paddingLeft="10dp" + android:visibility="visible">