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 7a844c8..62ac7ee 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 @@ -70,9 +70,7 @@ class HemoCubeFragment : Fragment() { hemoCubeViewModel.fireBaseUpload.observe(viewLifecycleOwner) { if (it == "Success") { Toast.makeText( - requireContext(), - "Test Results Uploaded Successfully", - Toast.LENGTH_SHORT + requireContext(), "Test Results Uploaded Successfully", Toast.LENGTH_SHORT ).show() } binding.progressBar.visibility = View.GONE @@ -84,7 +82,8 @@ class HemoCubeFragment : Fragment() { hemoCubeViewModel.deviceData.observe(viewLifecycleOwner) { deviceData = it - Toast.makeText(requireContext(), calculateRatio(0.17).toString(), Toast.LENGTH_SHORT).show() + Toast.makeText(requireContext(), calculateRatio(0.17).toString(), Toast.LENGTH_SHORT) + .show() } @@ -97,40 +96,26 @@ class HemoCubeFragment : Fragment() { } if (checkBufferValue()) { -// TODO("Call S command") - //We have to store the buffer value like this - with(sharedPreference.edit()) { - putInt(Constants.BUFFER_VALUE, 2000) - apply() - } - - UIUtils.createAlertDialog( - requireContext(), +// with(sharedPreference.edit()) { +// putInt(Constants.BUFFER_VALUE_1, 2000) +// apply() +// } + UIUtils.createAlertDialog(requireContext(), "WARNING", - "Please check if you have placed the sample of this person", + "Do you want to continue with existing buffer", getString(R.string.no), "Yes", object : MyDialogListener { - override fun onClickNegativeButton() {} - override fun onClickPositiveButton() { - UIUtils.createAlertDialog( - requireContext(), - getString(R.string.have_you_placed_sample), - getString(R.string.please_place_sample), - getString(R.string.no), - getString(R.string.yes_and_run), - object : MyDialogListener { - override fun onClickNegativeButton() {} - override fun onClickPositiveButton() { -// fetchHemoCubeResult() - getSampleResult() - } - }) + override fun onClickNegativeButton() { + startBuffer() } - } - ) + + override fun onClickPositiveButton() { + startSample() + } + }) } else { -// TODO("Call B command") + startBuffer() } } @@ -140,61 +125,25 @@ class HemoCubeFragment : Fragment() { } private fun setupButtonClickListeners() { - binding.btnShowResult.setOnClickListener { - UIUtils.createAlertDialog( - requireContext(), - "WARNING", - "Please check if you have placed the sample of this person", - getString(R.string.no), - "Yes", - object : MyDialogListener { - override fun onClickNegativeButton() {} - override fun onClickPositiveButton() { - UIUtils.createAlertDialog( - requireContext(), - getString(R.string.have_you_placed_sample), - getString(R.string.please_place_sample), - getString(R.string.no), - getString(R.string.yes_and_run), - object : MyDialogListener { - override fun onClickNegativeButton() {} - override fun onClickPositiveButton() { -// fetchHemoCubeResult() - getSampleResult() - } - }) - } - }) - } binding.btnSubmit.setOnClickListener { binding.progressBar.visibility = View.VISIBLE if (isOnline) { + getResult() resultRatio?.let { ratio -> Log.e("Testdb", "upload") hemoCubeViewModel.uploadHemoCubeResultToDatabase( - requireContext(), - isOnline, - true, - kitSerial, - ratio, - resultData, - testTime + requireContext(), isOnline, true, kitSerial, ratio, resultData, testTime ) } binding.progressBar.visibility = View.VISIBLE } else { + getResult() resultRatio?.let { ratio -> hemoCubeViewModel.uploadHemoCubeResultToDatabase( - requireContext(), - isOnline, - true, - kitSerial, - ratio, - resultData, - testTime + requireContext(), isOnline, true, kitSerial, ratio, resultData, testTime ) } Toast.makeText( @@ -206,52 +155,6 @@ class HemoCubeFragment : Fragment() { } } - fun parseUsbData(data: String) { - val bufferPattern = """ok (Green|Blue) B Intensity: (\d+\.\d+)""".toRegex() - val samplePattern = """ok (Green|Blue) Intensity: (\d+\.\d+)""".toRegex() - val avgPattern = """ok Avg (Green|Blue): (\d+\.\d+)""".toRegex() - val resultPattern = """ok Result: (\d+\.\d+)""".toRegex() - - var greenBIntensity: Double? = null - var blueBIntensity: Double? = null - var greenIntensity: Double? = null - var blueIntensity: Double? = null - var avgGreen: Double? = null - var avgBlue: Double? = null - var result: Double? = null - - for (line in data.split("\n")) { - when { - bufferPattern.matches(line) -> { - val (color, intensity) = bufferPattern.find(line)!!.destructured - if (color == "Green") greenBIntensity = intensity.toDouble() - else blueBIntensity = intensity.toDouble() - } - samplePattern.matches(line) -> { - val (color, intensity) = samplePattern.find(line)!!.destructured - if (color == "Green") greenIntensity = intensity.toDouble() - else blueIntensity = intensity.toDouble() - } - avgPattern.matches(line) -> { - val (color, avg) = avgPattern.find(line)!!.destructured - if (color == "Green") avgGreen = avg.toDouble() - else avgBlue = avg.toDouble() - } - resultPattern.matches(line) -> { - result = resultPattern.find(line)!!.destructured.component1().toDouble() - } - } - } - - Log.d("greenBuffer", greenBIntensity.toString()) - Log.d("greenBuffer", blueIntensity.toString()) - Log.d("greenBuffer", blueBIntensity.toString()) - } - - private fun calculateResult() { - hemoCubeViewModel - } - private fun listenToHemoCube() { if (DataHolder.hemoCubeTestData == null) { DataHolder.hemoCubeTestData = DataHolder.selectedTest?.toHemoCubeTestData() @@ -259,8 +162,7 @@ class HemoCubeFragment : Fragment() { hemoCubeViewModel.progressBar.postValue(true) val fullReadOutput = StringBuilder() - (activity as HemocubeActivity).mService.listenToHemoCube(object : - UsbServiceListener { + (activity as HemocubeActivity).mService.listenToHemoCube(object : UsbServiceListener { override fun onUsbRead(data: ByteArray?) { data?.let { val stringData = String(it) @@ -270,7 +172,6 @@ class HemoCubeFragment : Fragment() { resultData = fullReadOutput.toString() DataHolder.hemoCubeTestData?.resultData resultRatio = "" // TODO - val pareseddata = parseUsbData(fullReadOutput.toString()) Log.d("Result", data.toString()) hemoCubeViewModel.progressBar.postValue(false) } @@ -282,84 +183,41 @@ class HemoCubeFragment : Fragment() { }) } - //TODO: remove - private fun fetchHemoCubeResultNew() { - hemoCubeViewModel.progressBar.postValue(true) - val fullReadOutput = StringBuilder() - (activity as HemocubeActivity).mService.listenToHemoCube(object : - UsbServiceListener { - override fun onUsbRead(data: ByteArray?) { - data?.let { - val stringData = String(it) - fullReadOutput.append(stringData) - - // Split the data into lines - val lines = fullReadOutput.toString().split("\n") - - // Filter and get only the lines starting with "#" - val bufferLines = lines.filter { it.startsWith("#") } - - // Create a new text with the filtered lines and join them with line breaks - val newText = bufferLines.joinToString("\n") - - // Update the TextView with the new text - binding.tvSubtitle4.text = newText - - // Get the result data - val data = parseUsbData(fullReadOutput.toString()) - Log.d("Result", data.toString()) - - // Update the view model with progress bar state - hemoCubeViewModel.progressBar.postValue(false) - } - } - - override fun onUsbError(e: Exception?) { - hemoCubeViewModel.progressBar.postValue(false) - } - }) - } - - private fun getBufferResult() { + private fun startBuffer() { hemoCubeViewModel.progressBar.postValue(true) val fullReadOutput = StringBuilder() - (activity as HemocubeActivity).mService.sendAndListenToHemoCube(HemoCubeCommands.getBuffer, + (activity as HemocubeActivity).mService.sendAndListenToHemoCube( + HemoCubeCommands.startBuffer, object : UsbServiceListener { - override fun onUsbRead(data: ByteArray?) { - data?.let { - val stringData = String(it) - fullReadOutput.append(stringData) - - if (stringData.contains("RESULT", true)) { -// hemoCubeViewModel.mapDeviceConstants(fullReadOutput.toString()) - - val response: String = "RESULT SN18291 1937.23 2828.11" - -// val response = stringData - val result = response.split(" ") - val deviceSerialNo = result[1] - val led1Buffer = result[2].toDouble() - val led2Buffer = result[3].toDouble() - DataHolder.hemoCubeTestData?.deviceSerialNumber = deviceSerialNo - DataHolder.hemoCubeTestData?.led1Buffer = led1Buffer - DataHolder.hemoCubeTestData?.led2Buffer = led2Buffer - hemoCubeViewModel.progressBar.postValue(false) - } - } - } - + override fun onUsbRead(data: ByteArray?) {} override fun onUsbError(e: Exception?) { hemoCubeViewModel.progressBar.postValue(false) } }) } - private fun getSampleResult() { + private fun startSample() { hemoCubeViewModel.progressBar.postValue(true) val fullReadOutput = StringBuilder() - (activity as HemocubeActivity).mService.sendAndListenToHemoCube(HemoCubeCommands.getSample, + (activity as HemocubeActivity).mService.sendAndListenToHemoCube( + HemoCubeCommands.startSample, + object : UsbServiceListener { + override fun onUsbRead(data: ByteArray?) {} + override fun onUsbError(e: Exception?) { + hemoCubeViewModel.progressBar.postValue(false) + } + }) + } + + + private fun getResult() { + hemoCubeViewModel.progressBar.postValue(true) + val fullReadOutput = StringBuilder() + + (activity as HemocubeActivity).mService.sendAndListenToHemoCube( + HemoCubeCommands.getSample, object : UsbServiceListener { override fun onUsbRead(data: ByteArray?) { data?.let { diff --git a/app/src/main/res/layout/fragment_hemo_cube_reference.xml b/app/src/main/res/layout/fragment_hemo_cube_reference.xml index 3a612f7..77d621c 100644 --- a/app/src/main/res/layout/fragment_hemo_cube_reference.xml +++ b/app/src/main/res/layout/fragment_hemo_cube_reference.xml @@ -49,29 +49,18 @@ -