Flushed Kit number, Kit count and Buffer value for new kit
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -49,29 +49,18 @@
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_subtitle4"
|
||||
style="@style/title2"
|
||||
style="@style/title1_1"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/red"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="80dp"
|
||||
android:layout_marginHorizontal="24dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:hint="Result"
|
||||
android:textSize="22sp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_subtitle3" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_show_result"
|
||||
android:layout_width="216dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="24dp"
|
||||
android:clickable="false"
|
||||
android:text="@string/show_hemocube_result"
|
||||
android:textColor="@color/white"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_subtitle4" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_submit"
|
||||
android:layout_width="216dp"
|
||||
@@ -83,7 +72,7 @@
|
||||
android:textColor="@color/white"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/btn_show_result" />
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_subtitle4" />
|
||||
|
||||
<!-- <Button-->
|
||||
<!-- android:id="@+id/btn_read"-->
|
||||
|
||||
Reference in New Issue
Block a user