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 5f7843f..0000131 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 @@ -372,8 +372,12 @@ class HemoCubeFragment : Fragment() { hemoCubeViewModel.deviceMessages.postValue(currentResultData) when { - (resultData.contains("SNE") || resultData.contains("SN"))&& this.testStatusCode < TestStatus.CONFIG_COMPLETED.code -> { - processHardwareId(resultData) + resultData.contains("SNE") && this.testStatusCode < TestStatus.CONFIG_COMPLETED.code -> { + processV2HardwareId(resultData) + } + + (resultData.contains("SN") && !resultData.contains("SNE")) && this.testStatusCode > TestStatus.SAMPLE_STARTED.code -> { + processV1HardwareId(resultData) } resultData.contains("#BS") && this.testStatusCode < TestStatus.BUFFER_STARTED.code -> { @@ -568,8 +572,37 @@ class HemoCubeFragment : Fragment() { currentResultData = "" } - fun processHardwareId(resultData: String) { - val hardwareId = extractMiddleString(resultData) + fun processV1HardwareId(resultData: String) { + val hardwareId = extractV1HardwareId(resultData) + + if (!hardwareId.isNullOrBlank()) { + updateDeviceId(hardwareId) + activity?.runOnUiThread { + binding.btnPlacebuffer.visibility = View.VISIBLE + } + hemoCubeViewModel.messages.postValue(getString(R.string.start)) + } else { + hemoCubeViewModel.messages.postValue("Config error") + } + + if (!Constants.DEVICE_CONFIGURATION.containsKey(deviceHardwareId)) { + assignDefaultDevice(resultData) + allErrorMessages += "Calibration configuration for this device id is not found\n" + } + if (!Constants.BUFFER_INTENSITY_THRESHOLDS.containsKey(deviceHardwareId)) { + allErrorMessages += "ADC thresholds for this device id are not found\n" + } + } + + fun extractV1HardwareId(input: String): String? { + val regex = Regex("SN (\\S+)") + val matchResult = regex.find(input) + + return matchResult?.groupValues?.get(1) + } + + fun processV2HardwareId(resultData: String) { + val hardwareId = extractV2HardwareId(resultData) if (!hardwareId.isNullOrBlank()) { updateDeviceId(hardwareId) @@ -603,7 +636,7 @@ class HemoCubeFragment : Fragment() { hemoCubeViewModel.messages.postValue(getString(R.string.start)) } - fun extractMiddleString(input: String): String? { + fun extractV2HardwareId(input: String): String? { val pattern = Regex("SNS\\s*(.*?)\\s*SNE") val matchResult: MatchResult? = pattern.find(input)