From 3292a0e38239a69c1090845e1baa1e409843f20a Mon Sep 17 00:00:00 2001 From: Pritimay Sarkar Date: Wed, 2 Aug 2023 23:14:57 +0530 Subject: [PATCH] merge --- .../presentation/hemocube/HemoCubeFragment.kt | 68 ++++++++++++++++++- .../testRight/TestRightExpReference.kt | 2 +- .../presentation/testRight/UsbService.kt | 12 +++- 3 files changed, 78 insertions(+), 4 deletions(-) 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 08c3ab5..3fe5fee 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 @@ -14,6 +14,7 @@ import android.widget.Toast import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import com.example.hpostesting.data.DataHolder +import com.example.hpostesting.data.constant.HemoCubeCommands import com.example.hpostesting.data.model.patient.toHemoCubeTestData import com.example.hpostesting.presentation.UsbServiceListener import com.example.hpostesting.presentation.utils.MyDialogListener @@ -96,11 +97,11 @@ class HemoCubeFragment : Fragment() { override fun onClickNegativeButton() {} override fun onClickPositiveButton() { fetchHemoCubeResult() + sendCommandToHemoCube() } }) } }) - } binding.btnSubmit.setOnClickListener { @@ -194,7 +195,7 @@ class HemoCubeFragment : Fragment() { hemoCubeViewModel.progressBar.postValue(true) val fullReadOutput = StringBuilder() - (activity as HemocubeActivity).mService.eventDrivenWriteHemoCube(object : + (activity as HemocubeActivity).mService.listenToHemoCube(object : UsbServiceListener { override fun onUsbRead(data: ByteArray?) { data?.let { @@ -216,4 +217,67 @@ class HemoCubeFragment : Fragment() { } }) } + + 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 sendCommandToHemoCube() { + hemoCubeViewModel.progressBar.postValue(true) + val fullReadOutput = StringBuilder() + + (activity as HemocubeActivity).mService.eventDrivenWriteHemoCube(HemoCubeCommands.run, + 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()) + hemoCubeViewModel.progressBar.postValue(false) + } else if (stringData.contains("FINE", true)) { + hemoCubeViewModel.progressBar.postValue(false) + } + } + } + + override fun onUsbError(e: Exception?) { + hemoCubeViewModel.progressBar.postValue(false) + } + }) + } } diff --git a/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightExpReference.kt b/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightExpReference.kt index 3c3941a..a9d0536 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightExpReference.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightExpReference.kt @@ -83,7 +83,6 @@ class TestRightExpReference : Fragment() { binding.btnSetReference.isEnabled = true } } - } /** @@ -96,6 +95,7 @@ class TestRightExpReference : Fragment() { private fun startTakingReference() { sendCmdToSetLed() } + private fun sendCmdToFetchDeviceConstant() { Log.d(TAG, "sendCmdToFetchDeviceConstant() called") diff --git a/app/src/main/java/com/example/hpostesting/presentation/testRight/UsbService.kt b/app/src/main/java/com/example/hpostesting/presentation/testRight/UsbService.kt index f9e86ae..9b4ee5c 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/testRight/UsbService.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/testRight/UsbService.kt @@ -7,6 +7,7 @@ import android.os.Binder import android.os.IBinder import android.util.Log import com.example.hpostesting.data.constant.Constants +import com.example.hpostesting.data.constant.HemoCubeCommands import com.example.hpostesting.data.constant.TestRightCommands import com.example.hpostesting.presentation.UsbServiceListener import com.hoho.android.usbserial.driver.UsbSerialDriver @@ -64,7 +65,7 @@ class UsbService : Service() { } } - fun eventDrivenWriteHemoCube(listener: UsbServiceListener) { + fun listenToHemoCube(listener: UsbServiceListener) { this.listener = listener try { @@ -72,4 +73,13 @@ class UsbService : Service() { listener.onUsbError(e) } } + + fun eventDrivenWriteHemoCube(command: HemoCubeCommands, listener: UsbServiceListener) { + try { + this.listener = listener + mPort.write(command.command.toByteArray(), Constants.WRITE_TIMEOUT_MILLIS) + } catch (e: IOException) { + listener.onUsbError(e) + } + } } \ No newline at end of file