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) {
|
hemoCubeViewModel.fireBaseUpload.observe(viewLifecycleOwner) {
|
||||||
if (it == "Success") {
|
if (it == "Success") {
|
||||||
Toast.makeText(
|
Toast.makeText(
|
||||||
requireContext(),
|
requireContext(), "Test Results Uploaded Successfully", Toast.LENGTH_SHORT
|
||||||
"Test Results Uploaded Successfully",
|
|
||||||
Toast.LENGTH_SHORT
|
|
||||||
).show()
|
).show()
|
||||||
}
|
}
|
||||||
binding.progressBar.visibility = View.GONE
|
binding.progressBar.visibility = View.GONE
|
||||||
@@ -84,7 +82,8 @@ class HemoCubeFragment : Fragment() {
|
|||||||
|
|
||||||
hemoCubeViewModel.deviceData.observe(viewLifecycleOwner) {
|
hemoCubeViewModel.deviceData.observe(viewLifecycleOwner) {
|
||||||
deviceData = it
|
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()) {
|
if (checkBufferValue()) {
|
||||||
// TODO("Call S command")
|
// with(sharedPreference.edit()) {
|
||||||
//We have to store the buffer value like this
|
// putInt(Constants.BUFFER_VALUE_1, 2000)
|
||||||
with(sharedPreference.edit()) {
|
// apply()
|
||||||
putInt(Constants.BUFFER_VALUE, 2000)
|
// }
|
||||||
apply()
|
UIUtils.createAlertDialog(requireContext(),
|
||||||
}
|
|
||||||
|
|
||||||
UIUtils.createAlertDialog(
|
|
||||||
requireContext(),
|
|
||||||
"WARNING",
|
"WARNING",
|
||||||
"Please check if you have placed the sample of this person",
|
"Do you want to continue with existing buffer",
|
||||||
getString(R.string.no),
|
getString(R.string.no),
|
||||||
"Yes",
|
"Yes",
|
||||||
object : MyDialogListener {
|
object : MyDialogListener {
|
||||||
override fun onClickNegativeButton() {}
|
override fun onClickNegativeButton() {
|
||||||
override fun onClickPositiveButton() {
|
startBuffer()
|
||||||
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 onClickPositiveButton() {
|
||||||
|
startSample()
|
||||||
|
}
|
||||||
|
})
|
||||||
} else {
|
} else {
|
||||||
// TODO("Call B command")
|
startBuffer()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -140,61 +125,25 @@ class HemoCubeFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun setupButtonClickListeners() {
|
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.btnSubmit.setOnClickListener {
|
||||||
|
|
||||||
binding.progressBar.visibility = View.VISIBLE
|
binding.progressBar.visibility = View.VISIBLE
|
||||||
|
|
||||||
if (isOnline) {
|
if (isOnline) {
|
||||||
|
getResult()
|
||||||
resultRatio?.let { ratio ->
|
resultRatio?.let { ratio ->
|
||||||
Log.e("Testdb", "upload")
|
Log.e("Testdb", "upload")
|
||||||
hemoCubeViewModel.uploadHemoCubeResultToDatabase(
|
hemoCubeViewModel.uploadHemoCubeResultToDatabase(
|
||||||
requireContext(),
|
requireContext(), isOnline, true, kitSerial, ratio, resultData, testTime
|
||||||
isOnline,
|
|
||||||
true,
|
|
||||||
kitSerial,
|
|
||||||
ratio,
|
|
||||||
resultData,
|
|
||||||
testTime
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
binding.progressBar.visibility = View.VISIBLE
|
binding.progressBar.visibility = View.VISIBLE
|
||||||
} else {
|
} else {
|
||||||
|
getResult()
|
||||||
resultRatio?.let { ratio ->
|
resultRatio?.let { ratio ->
|
||||||
hemoCubeViewModel.uploadHemoCubeResultToDatabase(
|
hemoCubeViewModel.uploadHemoCubeResultToDatabase(
|
||||||
requireContext(),
|
requireContext(), isOnline, true, kitSerial, ratio, resultData, testTime
|
||||||
isOnline,
|
|
||||||
true,
|
|
||||||
kitSerial,
|
|
||||||
ratio,
|
|
||||||
resultData,
|
|
||||||
testTime
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Toast.makeText(
|
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() {
|
private fun listenToHemoCube() {
|
||||||
if (DataHolder.hemoCubeTestData == null) {
|
if (DataHolder.hemoCubeTestData == null) {
|
||||||
DataHolder.hemoCubeTestData = DataHolder.selectedTest?.toHemoCubeTestData()
|
DataHolder.hemoCubeTestData = DataHolder.selectedTest?.toHemoCubeTestData()
|
||||||
@@ -259,8 +162,7 @@ class HemoCubeFragment : Fragment() {
|
|||||||
|
|
||||||
hemoCubeViewModel.progressBar.postValue(true)
|
hemoCubeViewModel.progressBar.postValue(true)
|
||||||
val fullReadOutput = StringBuilder()
|
val fullReadOutput = StringBuilder()
|
||||||
(activity as HemocubeActivity).mService.listenToHemoCube(object :
|
(activity as HemocubeActivity).mService.listenToHemoCube(object : UsbServiceListener {
|
||||||
UsbServiceListener {
|
|
||||||
override fun onUsbRead(data: ByteArray?) {
|
override fun onUsbRead(data: ByteArray?) {
|
||||||
data?.let {
|
data?.let {
|
||||||
val stringData = String(it)
|
val stringData = String(it)
|
||||||
@@ -270,7 +172,6 @@ class HemoCubeFragment : Fragment() {
|
|||||||
resultData = fullReadOutput.toString()
|
resultData = fullReadOutput.toString()
|
||||||
DataHolder.hemoCubeTestData?.resultData
|
DataHolder.hemoCubeTestData?.resultData
|
||||||
resultRatio = "" // TODO
|
resultRatio = "" // TODO
|
||||||
val pareseddata = parseUsbData(fullReadOutput.toString())
|
|
||||||
Log.d("Result", data.toString())
|
Log.d("Result", data.toString())
|
||||||
hemoCubeViewModel.progressBar.postValue(false)
|
hemoCubeViewModel.progressBar.postValue(false)
|
||||||
}
|
}
|
||||||
@@ -282,84 +183,41 @@ class HemoCubeFragment : Fragment() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: remove
|
private fun startBuffer() {
|
||||||
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() {
|
|
||||||
hemoCubeViewModel.progressBar.postValue(true)
|
hemoCubeViewModel.progressBar.postValue(true)
|
||||||
val fullReadOutput = StringBuilder()
|
val fullReadOutput = StringBuilder()
|
||||||
|
|
||||||
(activity as HemocubeActivity).mService.sendAndListenToHemoCube(HemoCubeCommands.getBuffer,
|
(activity as HemocubeActivity).mService.sendAndListenToHemoCube(
|
||||||
|
HemoCubeCommands.startBuffer,
|
||||||
object : UsbServiceListener {
|
object : UsbServiceListener {
|
||||||
override fun onUsbRead(data: ByteArray?) {
|
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 onUsbError(e: Exception?) {
|
override fun onUsbError(e: Exception?) {
|
||||||
hemoCubeViewModel.progressBar.postValue(false)
|
hemoCubeViewModel.progressBar.postValue(false)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getSampleResult() {
|
private fun startSample() {
|
||||||
hemoCubeViewModel.progressBar.postValue(true)
|
hemoCubeViewModel.progressBar.postValue(true)
|
||||||
val fullReadOutput = StringBuilder()
|
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 {
|
object : UsbServiceListener {
|
||||||
override fun onUsbRead(data: ByteArray?) {
|
override fun onUsbRead(data: ByteArray?) {
|
||||||
data?.let {
|
data?.let {
|
||||||
|
|||||||
@@ -49,29 +49,18 @@
|
|||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_subtitle4"
|
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_width="0dp"
|
||||||
android:layout_height="80dp"
|
android:layout_height="80dp"
|
||||||
android:layout_marginHorizontal="24dp"
|
android:layout_marginHorizontal="24dp"
|
||||||
android:layout_marginTop="16dp"
|
android:layout_marginTop="16dp"
|
||||||
android:hint="Result"
|
android:textSize="22sp"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/tv_subtitle3" />
|
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
|
<Button
|
||||||
android:id="@+id/btn_submit"
|
android:id="@+id/btn_submit"
|
||||||
android:layout_width="216dp"
|
android:layout_width="216dp"
|
||||||
@@ -83,7 +72,7 @@
|
|||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/btn_show_result" />
|
app:layout_constraintTop_toBottomOf="@id/tv_subtitle4" />
|
||||||
|
|
||||||
<!-- <Button-->
|
<!-- <Button-->
|
||||||
<!-- android:id="@+id/btn_read"-->
|
<!-- android:id="@+id/btn_read"-->
|
||||||
|
|||||||
Reference in New Issue
Block a user