From d9882b14aad72998924704cfd5e0327a48eb046c Mon Sep 17 00:00:00 2001 From: chandrashekhar reddy Date: Sat, 16 Mar 2024 17:45:41 +0530 Subject: [PATCH] Added A command in DeviceFragment for checking temperature --- .../data/constant/HemoCubeCommands.kt | 1 + .../presentation/deviceinfo/DeviceFragment.kt | 77 +++++++++++++++---- app/src/main/res/layout/fragment_device.xml | 20 ++++- 3 files changed, 78 insertions(+), 20 deletions(-) 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 993b8fd..fcce479 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 @@ -16,4 +16,5 @@ enum class HemoCubeCommands(val command: String) { THIRD_GAIN_COMMAND("V\r"), FORTH_GAIN_COMMAND("W\r"), CHECK_CUVETTE_COMMAND("L\r"), + CHECK_TEMP_COMMAND("A\r"), } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceFragment.kt index b771ecc..f6d8a2b 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceFragment.kt @@ -25,6 +25,7 @@ class DeviceFragment : Fragment() { private var deviceId = "" private var startListening = MutableLiveData(false) private var resultData: String = "" + private var hardwareId = "" override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?, ): View { @@ -42,6 +43,9 @@ class DeviceFragment : Fragment() { private fun initViews() { deviceId = sharedPreferences.getString(Constants.DEVICE_ID, "").toString() + deviceViewModel.deviceMessages.observe(viewLifecycleOwner) { + binding.tvSubtitle4.text = it + } listenToHemoCube() getDeviceId() } @@ -53,11 +57,25 @@ class DeviceFragment : Fragment() { object : UsbServiceListener { @SuppressLint("SetTextI18n") override fun onUsbRead(data: ByteArray?) { - data?.let { - val stringData = String(it) - deviceViewModel.messages.postValue(stringData) - binding.tvSubtitle4.text = "Device ID: ${stringData}" - } +// data?.let { +// val stringData = String(it) +// deviceViewModel.messages.postValue(stringData) +// binding.tvSubtitle4.text = "Device ID" +// } + } + + override fun onUsbError(e: Exception?) { + deviceViewModel.progressBar.postValue(false) + } + }) + } + private fun getTemp() { + deviceViewModel.progressBar.postValue(true) + (activity as DeviceActivity).mService.sendAndListenToHemoCube( + HemoCubeCommands.CHECK_TEMP_COMMAND, + object : UsbServiceListener { + @SuppressLint("SetTextI18n") + override fun onUsbRead(data: ByteArray?) { } override fun onUsbError(e: Exception?) { @@ -81,18 +99,37 @@ class DeviceFragment : Fragment() { deviceViewModel.messages.postValue(stringData) fullReadOutput.append(stringData) resultData += stringData - binding.tvSubtitle4.text = "Device ID : ${resultData}" - if (stringData.contains("SN")) { - val slData = stringData.split(" ") - if (slData.size > 1) { - val hardwareId = slData[1].trim() - with(sharedPreferences.edit()) { - putString(Constants.DEVICE_ID, hardwareId) - apply() - } -// binding.tvSubtitle4.text = hardwareId - } + deviceViewModel.deviceMessages.postValue(resultData) +// binding.tvSubtitle4.text = "" + + if (stringData.contains("SNE")) { +// val slData = stringData.split(" ") +// if (slData.size > 1) { +// val hardwareId = slData[1].trim() +// with(sharedPreferences.edit()) { +// putString(Constants.DEVICE_ID, hardwareId) +// apply() +// } +// binding.tvSubtitle4.text = "Device ID :$hardwareId" +// } + hardwareId = extractV2HardwareId(resultData).toString() + getTemp() } + else if (stringData.contains("#AC")) { +// val slData = stringData.split(" ") +// if (slData.size > 1) { +// val hardwareId = slData[5].trim() +// with(sharedPreferences.edit()) { +// putString(Constants.DEVICE_ID, hardwareId) +// apply() +// } +// // binding.tvSubtitle4.text = hardwareId +// } + val lines = resultData.split("\n") + var temp = lines[2] + binding.tvSubtitleNew.text = "Device ID : "+hardwareId+"\nTemperature : $temp" + } + } } @@ -104,4 +141,10 @@ class DeviceFragment : Fragment() { Firebase.crashlytics.recordException(e) } } -} \ No newline at end of file + fun extractV2HardwareId(input: String): String? { + val pattern = Regex("SNS\\s*(.*?)\\s*SNE") + val matchResult: MatchResult? = pattern.find(input) + + return matchResult?.groups?.get(1)?.value + } +} diff --git a/app/src/main/res/layout/fragment_device.xml b/app/src/main/res/layout/fragment_device.xml index 84d4928..06fe488 100644 --- a/app/src/main/res/layout/fragment_device.xml +++ b/app/src/main/res/layout/fragment_device.xml @@ -8,9 +8,23 @@ + - \ No newline at end of file +