diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 245f817..ea83f8c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -116,7 +116,7 @@ diff --git a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt index a9b4632..3c613cb 100644 --- a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt +++ b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt @@ -55,6 +55,7 @@ object Constants { const val USER_ID = "usernameId" const val QUICK_CAPTURE_SOLUTION = "SOLUTION" + const val QUICK_CAPTURE_FOR_ADMIN = "ADMIN" const val QUICK_CAPTURE_CONCENTRATION = "CONCENTRATION" const val QUICK_CAPTURE_VOLUME = "VOLUME" const val QUICK_CAPTURE_READING_PER_SAMPLE = "READING_PER_SAMPLE" diff --git a/app/src/main/java/com/example/hpostesting/data/constant/HemoCubeCommands.kt b/app/src/main/java/com/example/hpostesting/data/constant/HemoCubeCommands.kt index 5edd02b..993b8fd 100644 --- a/app/src/main/java/com/example/hpostesting/data/constant/HemoCubeCommands.kt +++ b/app/src/main/java/com/example/hpostesting/data/constant/HemoCubeCommands.kt @@ -15,4 +15,5 @@ enum class HemoCubeCommands(val command: String) { SECOND_GAIN_COMMAND("U\r"), THIRD_GAIN_COMMAND("V\r"), FORTH_GAIN_COMMAND("W\r"), + CHECK_CUVETTE_COMMAND("L\r"), } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/data/constant/TestStatus.kt b/app/src/main/java/com/example/hpostesting/data/constant/TestStatus.kt index f40e4ac..86c4fb0 100644 --- a/app/src/main/java/com/example/hpostesting/data/constant/TestStatus.kt +++ b/app/src/main/java/com/example/hpostesting/data/constant/TestStatus.kt @@ -10,8 +10,12 @@ enum class TestStatus(val code: Double) { FIRST_EMPTY_AIR_READING_PRINT_COMPLETED(4.4), EPROM_ADC_RETRIEVAL_STARTED(4.5), EPROM_ADC_RETRIEVAL_COMPLETED(4.6), - BUFFER_STARTED(4.7), - BUFFER_COMPLETED(5.0), + CUVETTE_ABSENT(4.7), + CUVETTE_PRESENT(4.8), + CUVETTE_ABSENTS(7.7), + CUVETTE_PRESENTS(7.8), + BUFFER_STARTED(4.9), + BUFFER_COMPLETED(5.1), BUFFER_PRINT_STARTED(6.0), BUFFER_PRINT_COMPLETED(7.0), SAMPLE_STARTED(8.0), diff --git a/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt b/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt index 6776455..002fb30 100644 --- a/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt +++ b/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt @@ -10,7 +10,7 @@ import com.example.hpostesting.data.model.patient.UserData @Database( entities = [UserData::class, HemoCubeTestData::class, DeviceData::class, BufferCheckData::class], - version = 29, + version = 30, exportSchema = false ) @TypeConverters(Converters::class) diff --git a/app/src/main/java/com/example/hpostesting/data/datasource/LocalFileDataSource.kt b/app/src/main/java/com/example/hpostesting/data/datasource/LocalFileDataSource.kt index 4983c11..eaccd9d 100644 --- a/app/src/main/java/com/example/hpostesting/data/datasource/LocalFileDataSource.kt +++ b/app/src/main/java/com/example/hpostesting/data/datasource/LocalFileDataSource.kt @@ -11,4 +11,6 @@ interface LocalFileDataSource { fun exportDataToCSV( fileName: String, dataList: List, ): Boolean + fun backUpDataToCSV(fileName: String, dataList: List) + } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/data/datasource/LocalFileDataSourceImpl.kt b/app/src/main/java/com/example/hpostesting/data/datasource/LocalFileDataSourceImpl.kt index a6c8f37..d217c92 100644 --- a/app/src/main/java/com/example/hpostesting/data/datasource/LocalFileDataSourceImpl.kt +++ b/app/src/main/java/com/example/hpostesting/data/datasource/LocalFileDataSourceImpl.kt @@ -153,6 +153,127 @@ class LocalFileDataSourceImpl @Inject constructor() : LocalFileDataSource { } } + override fun backUpDataToCSV(fileName: String, dataList: List) { + try { + val filePath = File(getExternalStorageDirectory(), fileName) + val writer = FileWriter(filePath) + val csvWriter = CSVWriter(writer) + // Write CSV header + val header = arrayOf( + "_id", + "name", + "incubationTime", + "bloodGroup", + "birthYear", // Include other fields from the data class + "state", + "abhaId", + "userImageURL", + "location", + "reportUploadTime", + "testType", + "testTime", + "testStatus", + "gender", + "localFlag", // Add more fields as necessary + "deviceId", + "appVersion", + "deviceSerialNumber", + "deviceType", + "kitSerial", + "resultData", + "led1Buffer", + "led2Buffer", + "led3Buffer", + "led4Buffer", + "led1Sample", + "led2Sample", + "led3Sample", + "led4Sample", + "led1Average", + "led2Average", + "led3Average", + "led4Average", + "abs1", + "abs2", + "abs3", + "abs4", + "deviceRatio", + "calculatedRatio", + "predictedDenovixRatio", + "coefficients", + "classificationResult", + "prdClassification", + "errorMessages", + "batteryLevel", + "batteryCapacity", + "batteryMaxCapacity", + "batteryTemperature", + "batteryVoltage" + ) + csvWriter.writeNext(header) + + // Filter and write data rows where testStatus is true + val filteredDataList = dataList.filter { it.testStatus == true } + for (data in filteredDataList) { + val row = arrayOf( + data._id, + data.name, + data.incubationTime, + data.bloodGroup, + data.birthYear, // Include other fields similarly + data.state, + data.abhaId, + data.userImageURL, + data.location?.toString(), + data.reportUploadTime ?: "", + data.testType ?: "", + data.testTime ?: "", + data.testStatus?.toString() ?: "", + data.gender, + data.localFlag.toString(), + data.deviceId ?: "", + data.appVersion ?: "", + data.deviceSerialNumber, + data.deviceType, + data.kitSerial, + data.resultData, + data.led1Buffer?.toString() ?: "", + data.led2Buffer?.toString() ?: "", + data.led3Buffer?.toString() ?: "", + data.led4Buffer?.toString() ?: "", + data.led1Sample?.toString() ?: "", + data.led2Sample?.toString() ?: "", + data.led3Sample?.toString() ?: "", + data.led4Sample?.toString() ?: "", + data.led1Average?.toString() ?: "", + data.led2Average?.toString() ?: "", + data.led3Average?.toString() ?: "", + data.led4Average?.toString() ?: "", + data.abs1?.toString() ?: "", + data.abs2?.toString() ?: "", + data.abs3?.toString() ?: "", + data.abs4?.toString() ?: "", + data.deviceRatio?.toString() ?: "", + data.calculatedRatio?.toString() ?: "", + data.predictedDenovixRatio?.toString() ?: "", + data.coefficients ?: "", + data.classificationResult, + data.prdClassification, + data.errorMessages, + data.batteryLevel, + data.batteryCapacity, + data.batteryMaxCapacity, + data.batteryTemperature, + data.batteryVoltage + ) + csvWriter.writeNext(row) + } + writer.close() + } catch (e: IOException) { + e.printStackTrace() + } + } + private fun getExternalStorageDirectory(): File { val folder = File(Environment.getExternalStorageDirectory(), "HposFolder") diff --git a/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt b/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt index 88fbf60..2f7a862 100644 --- a/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt +++ b/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt @@ -90,6 +90,7 @@ data class HemoCubeTestData( var quickCapture: Boolean = false, var solution: String? = "", var concentration: String? = "", + var filter: String? = "", var volume: String? = "", var isCSVCreated: Boolean = false, ) diff --git a/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsFragment.kt index df19e76..433c31a 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsFragment.kt @@ -44,7 +44,6 @@ class AssuranceControlsFragment : Fragment() { private fun initViews() { // binding.btnSubmit.visibility = View.GONE - val solutionSpinner: Spinner = binding.spinnerSolutions val solutionOptions = arrayOf("Select solution", "Tartrazine", "Acid Red") val solutionAdapter = @@ -123,6 +122,27 @@ class AssuranceControlsFragment : Fragment() { } } + + val adminspinner: Spinner = binding.spinnerAdmin + val adminOptions = arrayOf("Select options", "Sickle-Cert-Buffer", "1 Abs Holo Filter", "0.25 Abs Holo Filter", "Air Blank") + val adminAdapter = + ArrayAdapter(requireContext(), R.layout.simple_spinner_item, adminOptions) + adminAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + adminspinner.adapter =adminAdapter + adminspinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected( + parent: AdapterView<*>?, + view: View?, + position: Int, + id: Long, + ) { + val selectedValue: String = adminOptions[position] + + } + + override fun onNothingSelected(parent: AdapterView<*>?) { + } + } // load saved values val savedSolution = sharedPreferences.getString(Constants.QUICK_CAPTURE_SOLUTION, "").toString() @@ -139,18 +159,30 @@ class AssuranceControlsFragment : Fragment() { val volumePosition = getPositionOfValue(savedVolume, volumeOptions.toList()) volumeSpinner.setSelection(volumePosition) + + val foradmin = + sharedPreferences.getString(Constants.QUICK_CAPTURE_FOR_ADMIN, "").toString() + val adminPosition = getPositionOfValue(foradmin, adminOptions.toList()) + adminspinner.setSelection(adminPosition) + binding.btnSubmit.setOnClickListener { val selectedSolution = binding.spinnerSolutions.selectedItem.toString() val selectedConcentration = binding.spinnerConcentration.selectedItem.toString() + val selectedadminOption = binding.spinnerAdmin.selectedItem.toString() // Check if any of the selections are default values - if (selectedSolution == "Select solution") { - Toast.makeText(requireContext(), "Please select a solution", Toast.LENGTH_LONG).show() - return@setOnClickListener // Prevent further execution - } +// if (selectedSolution == "Select solution") { +// Toast.makeText(requireContext(), "Please select a solution", Toast.LENGTH_LONG).show() +// return@setOnClickListener // Prevent further execution +// } +// +// if (selectedConcentration == "Select concentration") { +// Toast.makeText(requireContext(), "Please select a concentration", Toast.LENGTH_LONG).show() +// return@setOnClickListener // Prevent further execution +// } - if (selectedConcentration == "Select concentration") { - Toast.makeText(requireContext(), "Please select a concentration", Toast.LENGTH_LONG).show() + if (selectedadminOption == "Select options") { + Toast.makeText(requireContext(), "Please select a option", Toast.LENGTH_LONG).show() return@setOnClickListener // Prevent further execution } DataHolder.hemoCubeTestData!!.quickCapture = true @@ -162,7 +194,14 @@ class AssuranceControlsFragment : Fragment() { DataHolder.hemoCubeTestData!!._id = currentUnixTime.toString() + "SMI" DataHolder.hemoCubeTestData!!.solution = binding.spinnerSolutions.selectedItem.toString() DataHolder.hemoCubeTestData!!.concentration = binding.spinnerConcentration.selectedItem.toString() - DataHolder.hemoCubeTestData!!.name = "${DataHolder.hemoCubeTestData!!.solution} ${DataHolder.hemoCubeTestData!!.concentration} ${DataHolder.hemoCubeTestData!!.volume}" + DataHolder.hemoCubeTestData!!.filter = binding.spinnerAdmin.selectedItem.toString() + if(binding.spinnerAdmin.selectedItem.toString().equals("Select options")){ + Toast.makeText(requireContext(), "Please select a option", Toast.LENGTH_LONG).show() + }else { + DataHolder.hemoCubeTestData!!.name = DataHolder.hemoCubeTestData!!.filter.toString() + } + + DataHolder.selectedTest = UserData() DataHolder.selectedTest?._id = DataHolder.hemoCubeTestData!!._id @@ -175,6 +214,7 @@ class AssuranceControlsFragment : Fragment() { DataHolder.hemoCubeTestData!!.concentration ) putString(Constants.QUICK_CAPTURE_VOLUME, DataHolder.hemoCubeTestData!!.volume) + putString(Constants.QUICK_CAPTURE_FOR_ADMIN, DataHolder.hemoCubeTestData!!.filter) apply() } diff --git a/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacActivity.kt index 351e285..c70fccf 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacActivity.kt @@ -23,7 +23,7 @@ import androidx.core.view.get import com.example.hpostesting.data.constant.DataHolder import com.example.hpostesting.data.constant.Constants import com.example.hpostesting.data.constant.LanguageManager -import com.example.hpostesting.presentation.testRight.UsbService +import com.example.hpostesting.util.UsbService import com.hoho.android.usbserial.driver.UsbSerialDriver import com.hoho.android.usbserial.driver.UsbSerialProber import dagger.hilt.android.AndroidEntryPoint diff --git a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt index dd1ab96..74a9d99 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt @@ -24,7 +24,7 @@ import com.example.hpostesting.data.constant.DataHolder import com.example.hpostesting.data.constant.Constants import com.example.hpostesting.data.constant.LanguageManager import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel -import com.example.hpostesting.presentation.testRight.UsbService +import com.example.hpostesting.util.UsbService import com.hoho.android.usbserial.driver.UsbSerialDriver import com.hoho.android.usbserial.driver.UsbSerialProber import dagger.hilt.android.AndroidEntryPoint diff --git a/app/src/main/java/com/example/hpostesting/presentation/calibration/CalibrationActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/calibration/CalibrationActivity.kt index 1753cce..db14f47 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/calibration/CalibrationActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/calibration/CalibrationActivity.kt @@ -23,7 +23,7 @@ import androidx.core.view.get import com.example.hpostesting.data.constant.DataHolder import com.example.hpostesting.data.constant.Constants import com.example.hpostesting.data.constant.LanguageManager -import com.example.hpostesting.presentation.testRight.UsbService +import com.example.hpostesting.util.UsbService import com.hoho.android.usbserial.driver.UsbSerialDriver import com.hoho.android.usbserial.driver.UsbSerialProber import dagger.hilt.android.AndroidEntryPoint diff --git a/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceActivity.kt index 94e58e1..421061d 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceActivity.kt @@ -27,7 +27,7 @@ import com.example.hpostesting.data.constant.HemoCubeCommands import com.example.hpostesting.data.constant.LanguageManager import com.example.hpostesting.presentation.utils.DeviceCommunicationHandler import com.example.hpostesting.presentation.utils.UsbServiceListener -import com.example.hpostesting.presentation.testRight.UsbService +import com.example.hpostesting.util.UsbService import com.hoho.android.usbserial.driver.UsbSerialDriver import com.hoho.android.usbserial.driver.UsbSerialProber import dagger.hilt.android.AndroidEntryPoint diff --git a/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionActivity.kt index 2fbafcc..107d782 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionActivity.kt @@ -26,7 +26,7 @@ import com.example.hpostesting.data.constant.HemoCubeCommands import com.example.hpostesting.data.constant.LanguageManager import com.example.hpostesting.presentation.utils.DeviceCommunicationHandler import com.example.hpostesting.presentation.utils.UsbServiceListener -import com.example.hpostesting.presentation.testRight.UsbService +import com.example.hpostesting.util.UsbService import com.hoho.android.usbserial.driver.UsbSerialDriver import com.hoho.android.usbserial.driver.UsbSerialProber import dagger.hilt.android.AndroidEntryPoint diff --git a/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsActivity.kt index 74b2414..6a41736 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsActivity.kt @@ -23,7 +23,7 @@ import androidx.core.view.get import com.example.hpostesting.data.constant.DataHolder import com.example.hpostesting.data.constant.Constants import com.example.hpostesting.data.constant.LanguageManager -import com.example.hpostesting.presentation.testRight.UsbService +import com.example.hpostesting.util.UsbService import com.hoho.android.usbserial.driver.UsbSerialDriver import com.hoho.android.usbserial.driver.UsbSerialProber import dagger.hilt.android.AndroidEntryPoint diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt index 9a23c11..cfe5d24 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt @@ -4,6 +4,7 @@ import android.annotation.SuppressLint import android.content.Context import android.content.Intent import android.content.SharedPreferences +import android.graphics.Color import android.os.Bundle import android.util.Log import android.view.LayoutInflater @@ -35,7 +36,9 @@ import kotlin.math.log10 @Suppress("MemberVisibilityCanBePrivate") class HemoCubeFragment : Fragment() { - + private var checkCuvette = false + private var checkCuvetteSam = false + private var sampleClick = false private lateinit var binding: FragmentHemoCubeReferenceBinding private val hemoCubeViewModel: HemoCubeViewModel by activityViewModels() private lateinit var sharedPreferences: SharedPreferences @@ -111,33 +114,63 @@ class HemoCubeFragment : Fragment() { binding.nameEditText.visibility = View.GONE binding.tvTitle.visibility = View.GONE binding.btnGo.visibility = View.GONE - binding.btnPlacebuffer.visibility = View.GONE +// binding.btnPlacebuffer.visibility = View.GONE binding.tvName.text = "Name: ${testDetails?.name}\n ID: ${testDetails?._id}" binding.tvSubtitle4.text = "Config" - binding.btnSamplestart.setOnClickListener { - activity?.runOnUiThread { - binding.tvSubtitle4.visibility = View.VISIBLE -// binding.tvSubtitle4.text = "Sample Started" + + if (isBufferValueAvailable() || !Constants.BLANK_EVERY_TEST) { + binding.btnPlacebuffer.apply { + setBackgroundColor(Color.GREEN) // Set button background color to green + text = "Fresh Buffer" // Change button text to "Buffer Exists" + } + }else if(!isBufferValueAvailable() || Constants.BLANK_EVERY_TEST){ + binding.btnPlacebuffer.apply { + setBackgroundColor(Color.RED) // Set button background color to green + text = "No Buffer" // Change button text to "Buffer Exists" } - startSampleProcess() - it.visibility = View.GONE } - binding.btnPlacebuffer.setOnClickListener { - if (isBufferValueAvailable() || !Constants.BLANK_EVERY_TEST) { - showBufferAlertDialog() - } else { + + binding.btnSamplestart.setOnClickListener { + sampleClick = true + if(checkCuvetteSam){ activity?.runOnUiThread { binding.tvSubtitle4.visibility = View.VISIBLE -// binding.tvSubtitle4.text = "Buffer Started" +// binding.tvSubtitle4.text = "Sample Started" } - - checkAndStartProcess() - it.visibility = View.GONE + startSampleProcess() +// it.visibility = View.GONE + }else{ + checkCuvettePresence() } } + binding.btnRetryCheckCuvette.setOnClickListener { + + checkCuvettePresence() + } + binding.btnPlacebuffer.setOnClickListener { + if(checkCuvette){ + + startBufferProcess() +// if (isBufferValueAvailable() || !Constants.BLANK_EVERY_TEST) { +//// showBufferAlertDialog() +// } else { + activity?.runOnUiThread { + binding.tvSubtitle4.visibility = View.VISIBLE +// binding.tvSubtitle4.text = "Buffer Started" + } + + // checkAndStartProcess() + +// it.visibility = View.GONE +// } + }else{ + checkCuvettePresence() + } + + } if (sharedPreferences.getString(Constants.USER_ID, "").toString() == "ADMIN") { activity?.runOnUiThread { @@ -261,9 +294,9 @@ class HemoCubeFragment : Fragment() { currentResultData = "" } - private fun checkAndStartProcess() { - startBufferProcess() - } +// private fun checkAndStartProcess() { +// startBufferProcess() +// } private fun isBufferValueAvailable(): Boolean { return try { @@ -314,7 +347,7 @@ class HemoCubeFragment : Fragment() { override fun onClickPositiveButton() { activity?.runOnUiThread { - binding.btnPlacebuffer.visibility = View.GONE +// binding.btnPlacebuffer.visibility = View.GONE binding.btnSamplestart.visibility = View.VISIBLE binding.tvSubtitle4.text = getString(R.string.place_sample) } @@ -391,7 +424,7 @@ class HemoCubeFragment : Fragment() { resultData += stringData currentResultData += stringData hemoCubeViewModel.deviceMessages.postValue(currentResultData) - + Log.e("testStatus",this.testStatusCode.toString()) when { resultData.contains("SNE") && this.testStatusCode < TestStatus.CONFIG_COMPLETED.code -> { processV2HardwareId(resultData) @@ -418,20 +451,51 @@ class HemoCubeFragment : Fragment() { (resultData.contains("#RC") && this.testStatusCode < TestStatus.EPROM_ADC_RETRIEVAL_COMPLETED.code) -> { this.testStatusCode = TestStatus.EPROM_ADC_RETRIEVAL_COMPLETED.code hemoCubeViewModel.messages.postValue("EPROM ADC Loaded") - showStartBufferButton() + //checkCuvettePresence() + } + resultData.contains("#CIN") && sampleClick && this.testStatusCode < TestStatus.CUVETTE_PRESENTS.code -> { + hemoCubeViewModel.messages.postValue(getString(R.string.cuvette_present)) + this.testStatusCode = TestStatus.CUVETTE_PRESENTS.code + activity?.runOnUiThread { + checkCuvetteSam = true + binding.btnRetryCheckCuvette.visibility = View.GONE + } + } + resultData.contains("#AIN") && sampleClick && this.testStatusCode <= TestStatus.CUVETTE_ABSENTS.code -> { + hemoCubeViewModel.messages.postValue(getString(R.string.cuvette_absent)) + this.testStatusCode = TestStatus.CUVETTE_ABSENTS.code + showRetryButtonForCuvette() } + resultData.contains("#CIN") && this.testStatusCode < TestStatus.CUVETTE_PRESENT.code -> { + hemoCubeViewModel.messages.postValue(getString(R.string.cuvette_present)) + this.testStatusCode = TestStatus.CUVETTE_PRESENT.code + activity?.runOnUiThread { + checkCuvette = true + binding.btnRetryCheckCuvette.visibility = View.GONE + } + } + resultData.contains("#AIN") && this.testStatusCode <= TestStatus.CUVETTE_ABSENT.code -> { + hemoCubeViewModel.messages.postValue(getString(R.string.cuvette_absent)) + this.testStatusCode = TestStatus.CUVETTE_ABSENT.code + showRetryButtonForCuvette() + } resultData.contains("#BS") && this.testStatusCode < TestStatus.BUFFER_STARTED.code -> { hemoCubeViewModel.messages.postValue(getString(R.string.buffer_started)) this.testStatusCode = TestStatus.BUFFER_STARTED.code } resultData.contains("#BC") && this.testStatusCode < TestStatus.BUFFER_COMPLETED.code -> { - this.testStatusCode = TestStatus.BUFFER_COMPLETED.code activity?.runOnUiThread { + resultData = "" + // resultData.replace("#AIN","#BAIN",false) + Log.d("resultDataBC",resultData) binding.tvSubtitle4.text = getString(R.string.buffer_completed) - binding.btnSamplestart.visibility = View.VISIBLE +// binding.btnSamplestart.visibility = View.VISIBLE + binding.btnPlacebuffer.visibility = View.GONE } + this.testStatusCode = TestStatus.BUFFER_COMPLETED.code + } (resultData.contains("#SS") || resultData.contains("#SS1")) && this.testStatusCode < TestStatus.SAMPLE_STARTED.code -> { @@ -439,11 +503,15 @@ class HemoCubeFragment : Fragment() { activity?.runOnUiThread { binding.tvSubtitle4.text = getString(R.string.sample_started) binding.btnSamplestart.visibility = View.GONE + binding.btnPlacebuffer.visibility = View.GONE } } (resultData.contains("#SC") || resultData.contains("#SC1")) && this.testStatusCode < TestStatus.SAMPLE_COMPLETED.code -> { this.testStatusCode = TestStatus.SAMPLE_COMPLETED.code + activity?.runOnUiThread { + binding.btnSamplestart.visibility = View.GONE + } hemoCubeViewModel.messages.postValue( getString(R.string.sample_completed) + "\n" + getString(R.string.gathering_data) ) @@ -600,6 +668,13 @@ class HemoCubeFragment : Fragment() { } } + private fun showRetryButtonForCuvette() { + activity?.runOnUiThread { +// binding.btnPlacebuffer.visibility = View.GONE + binding.btnRetryCheckCuvette.visibility = View.VISIBLE + } + } + fun finishReading() { repeatReadingCount += 1 isTestOngoing = false @@ -686,9 +761,20 @@ class HemoCubeFragment : Fragment() { fun showStartBufferButton() { activity?.runOnUiThread { + binding.btnRetryCheckCuvette.visibility = View.GONE + binding.btnPlacebuffer.visibility = View.VISIBLE } - hemoCubeViewModel.messages.postValue(getString(R.string.start)) +// hemoCubeViewModel.messages.postValue(getString(R.string.start)) + } + + fun showStartSampleButton() { + activity?.runOnUiThread { + binding.btnRetryCheckCuvette.visibility = View.GONE + + binding.btnSamplestart.visibility = View.VISIBLE + } +// hemoCubeViewModel.messages.postValue(getString(R.string.start)) } fun extractV1HardwareId(input: String): String? { @@ -1142,13 +1228,29 @@ class HemoCubeFragment : Fragment() { Toast.makeText(requireContext(), getString(messageResId), Toast.LENGTH_SHORT).show() } - private fun startBufferProcess() { - hemoCubeViewModel.progressBar.postValue(true) + private fun checkCuvettePresence() { + Toast.makeText(requireContext(),"Please wait...",Toast.LENGTH_LONG).show() activity?.runOnUiThread { - binding.btnPlacebuffer.visibility = View.GONE + binding.btnRetryCheckCuvette.visibility = View.GONE } + hemoCubeViewModel.progressBar.postValue(true) + + (activity as HemocubeActivity).mService.sendAndListenToHemoCube(HemoCubeCommands.CHECK_CUVETTE_COMMAND, + object : UsbServiceListener { + override fun onUsbRead(data: ByteArray?) {} + + override fun onUsbError(e: Exception?) { + hemoCubeViewModel.progressBar.postValue(false) + } + }) + } + private fun startBufferProcess() { + hemoCubeViewModel.progressBar.postValue(true) +// activity?.runOnUiThread { +// binding.btnPlacebuffer.visibility = View.GONE +// } (activity as HemocubeActivity).mService.sendAndListenToHemoCube(HemoCubeCommands.START_BUFFER_COMMAND, object : UsbServiceListener { override fun onUsbRead(data: ByteArray?) {} @@ -1160,16 +1262,17 @@ class HemoCubeFragment : Fragment() { } private fun startSampleProcess() { - hemoCubeViewModel.progressBar.postValue(true) + hemoCubeViewModel.progressBar.postValue(true) - (activity as HemocubeActivity).mService.sendAndListenToHemoCube(HemoCubeCommands.START_SAMPLE, - object : UsbServiceListener { - override fun onUsbRead(data: ByteArray?) {} + (activity as HemocubeActivity).mService.sendAndListenToHemoCube(HemoCubeCommands.START_SAMPLE, + object : UsbServiceListener { + override fun onUsbRead(data: ByteArray?) {} + + override fun onUsbError(e: Exception?) { + hemoCubeViewModel.progressBar.postValue(false) + } + }) - override fun onUsbError(e: Exception?) { - hemoCubeViewModel.progressBar.postValue(false) - } - }) } private fun sendFirstGainCommand() { diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt index 2036b1e..3f261a0 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt @@ -113,7 +113,7 @@ class HemoCubeViewModel @Inject constructor( testDetails?.kitSerial = kitSerial } testDetails?.testStatus = testStatus - + // localFileDataSource.backUpDataToCSV("",testDetails) try { if (isOnline) { parseData() @@ -399,6 +399,8 @@ class HemoCubeViewModel @Inject constructor( testDetails?.solution = DataHolder.hemoCubeTestData?.solution testDetails?.concentration = DataHolder.hemoCubeTestData?.concentration testDetails?.volume = DataHolder.hemoCubeTestData?.volume + testDetails?.filter = DataHolder.hemoCubeTestData?.filter + } private fun addResultTestToDb() { @@ -644,7 +646,7 @@ class HemoCubeViewModel @Inject constructor( val fileName = "HPOS${getCurrentDate()}.csv" if (localFileDataSource.exportDataToCSV(fileName, hemoCubeTestData)) { hemoCubeTestData.forEach { data -> - data.localFlag = true + // data.localFlag = true hemoCubeDao.updateCSVFieldById( data._id, true diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt index d200140..53f28fc 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt @@ -25,7 +25,7 @@ import androidx.core.view.get import com.example.hpostesting.data.constant.DataHolder import com.example.hpostesting.data.constant.Constants import com.example.hpostesting.data.constant.LanguageManager -import com.example.hpostesting.presentation.testRight.UsbService +import com.example.hpostesting.util.UsbService import com.hoho.android.usbserial.driver.UsbSerialDriver import com.hoho.android.usbserial.driver.UsbSerialProber import dagger.hilt.android.AndroidEntryPoint diff --git a/app/src/main/java/com/example/hpostesting/presentation/jig/JigActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/jig/JigActivity.kt index 4d503ef..1ea2013 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/jig/JigActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/jig/JigActivity.kt @@ -24,7 +24,7 @@ import androidx.core.view.get import com.example.hpostesting.data.constant.DataHolder import com.example.hpostesting.data.constant.Constants import com.example.hpostesting.data.constant.LanguageManager -import com.example.hpostesting.presentation.testRight.UsbService +import com.example.hpostesting.util.UsbService import com.hoho.android.usbserial.driver.UsbSerialDriver import com.hoho.android.usbserial.driver.UsbSerialProber import dagger.hilt.android.AndroidEntryPoint diff --git a/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightActivity.kt index 2974965..04163f1 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightActivity.kt @@ -21,6 +21,7 @@ import androidx.core.content.ContextCompat import androidx.core.view.get import com.example.hpostesting.data.constant.DataHolder import com.example.hpostesting.data.constant.Constants +import com.example.hpostesting.util.UsbService import com.hoho.android.usbserial.driver.UsbSerialDriver import com.hoho.android.usbserial.driver.UsbSerialProber import dagger.hilt.android.AndroidEntryPoint diff --git a/app/src/main/java/com/example/hpostesting/presentation/trueheme/TrueHemeActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/trueheme/TrueHemeActivity.kt index df42793..dc201c3 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/trueheme/TrueHemeActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/trueheme/TrueHemeActivity.kt @@ -25,7 +25,7 @@ import com.example.hpostesting.data.constant.Constants import com.example.hpostesting.data.constant.LanguageManager import com.example.hpostesting.presentation.hemocube.HemoCubeFragment import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel -import com.example.hpostesting.presentation.testRight.UsbService +import com.example.hpostesting.util.UsbService import com.hoho.android.usbserial.driver.UsbSerialDriver import com.hoho.android.usbserial.driver.UsbSerialProber import dagger.hilt.android.AndroidEntryPoint diff --git a/app/src/main/java/com/example/hpostesting/presentation/testRight/UsbService.kt b/app/src/main/java/com/example/hpostesting/util/UsbService.kt similarity index 98% rename from app/src/main/java/com/example/hpostesting/presentation/testRight/UsbService.kt rename to app/src/main/java/com/example/hpostesting/util/UsbService.kt index 133f5b9..8fd4d51 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/testRight/UsbService.kt +++ b/app/src/main/java/com/example/hpostesting/util/UsbService.kt @@ -1,4 +1,4 @@ -package com.example.hpostesting.presentation.testRight +package com.example.hpostesting.util import android.app.Service import android.content.Intent diff --git a/app/src/main/res/layout/fragment_assurance_controls.xml b/app/src/main/res/layout/fragment_assurance_controls.xml index c343a7e..bc6a673 100644 --- a/app/src/main/res/layout/fragment_assurance_controls.xml +++ b/app/src/main/res/layout/fragment_assurance_controls.xml @@ -39,6 +39,7 @@ + + + + +