diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index ae388c2..cb865f6 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -4,8 +4,6 @@
+
diff --git a/app/build.gradle b/app/build.gradle
index 7fe82c8..0a45e20 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -14,13 +14,13 @@ android {
compileSdk 34
namespace 'in.sminnovations.hpostesting'
- // prod - production, preprod - preproduction, quality - qc,
+ // prod - production, preprod - preproduction, quality - qc
defaultConfig {
- applicationId "in.sminnovations.hpostesting.quality"
+ applicationId "in.sminnovations.hpostesting"
minSdk 21
targetSdk 34
- versionCode 52
- versionName "2.1.52"
+ versionCode 56
+ versionName "2.1.56"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
diff --git a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt
index b1aab07..891c3a5 100644
--- a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt
+++ b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt
@@ -29,7 +29,7 @@ object Constants {
const val DEVICE_VENDOR_ID = 1027
const val HOMO_CUBE_ID = 29987
const val VENDOR_ID = 6790
- const val HEMO_CUBE_V2_ID = 24577
+ const val HEMO_CUBE_V2_PRODUCT_ID = 24577
const val HEMO_CUBE_V2_VENDOR_ID = 1027
const val ERROR_NORMAL = 400
@@ -40,6 +40,7 @@ object Constants {
const val USER_ID = "usernameId"
val STATICID = listOf(
+ "ADMIN",
"VIZ-1000-0004",
"VIZ-1000-0005",
"VIZ-1000-0006",
@@ -88,6 +89,19 @@ object Constants {
const val BUFFER_LED_LOWER_BOUND = 21000
const val BUFFER_LED_UPPER_BOUND = 24500
+ const val TEST_STATUS_CODE_TEST_STARTED = 1.0
+ const val TEST_STATUS_CODE_CONFIG_STARTED = 2.0
+ const val TEST_STATUS_CODE_CONFIG_COMPLETED = 3.0
+ const val TEST_STATUS_CODE_BUFFER_STARTED = 4.0
+ const val TEST_STATUS_CODE_BUFFER_COMPLETED = 5.0
+ const val TEST_STATUS_CODE_BUFFER_PRINT_STARTED = 6.0
+ const val TEST_STATUS_CODE_BUFFER_PRINT_COMPLETED = 7.0
+ const val TEST_STATUS_CODE_SAMPLE_STARTED = 8.0
+ const val TEST_STATUS_CODE_SAMPLE_COMPLETED = 9.0
+ const val TEST_STATUS_CODE_SAMPLE_PRINT_STARTED = 10.0
+ const val TEST_STATUS_CODE_SAMPLE_PRINT_COMPLETED = 11.0
+ const val TEST_STATUS_CODE_TEST_COMPLETED = 12.0
+
val DEVICE_CONFIGURATION: Map>> = mapOf>>(
"HCV-000-3001" to listOf(
listOf(1.313, -0.89), // LED1, 435nm
@@ -153,6 +167,7 @@ object Constants {
const val INCUBATION_TIME_MIN = 0
const val INCUBATION_TIME_MAX = 1400
+ const val BATTERY_LEVEL_MIN = 0
val BUFFER_INTENSITY_THRESHOLDS: Map>> = mapOf>>(
"HCV-000-3001" to listOf(
diff --git a/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt b/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt
index 73079ab..49115b7 100644
--- a/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt
+++ b/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt
@@ -11,7 +11,7 @@ import com.example.hpostesting.data.model.patient.HemoCubeTestData
import com.google.android.datatransport.runtime.dagger.Provides
import javax.inject.Singleton
-@Database(entities = [UserData::class, HemoCubeTestData::class, DeviceData::class], version = 11, exportSchema = false)
+@Database(entities = [UserData::class, HemoCubeTestData::class, DeviceData::class], version = 13, exportSchema = false)
@TypeConverters(Converters::class)
abstract class MyDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
diff --git a/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt
index 85d5052..91763ae 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt
@@ -114,6 +114,15 @@ class MainActivity : AppCompatActivity() {
Constants.DEVICE_TYPE_HOMOCUBE
}
+ device.productId == Constants.HEMO_CUBE_V2_PRODUCT_ID && device.vendorId == Constants.HEMO_CUBE_V2_VENDOR_ID -> {
+ binding.cvItem1.visibility = View.VISIBLE
+ binding.cvItem3.visibility = View.VISIBLE
+ binding.cvItem2.visibility = View.GONE
+ binding.cvItem4.visibility = View.GONE
+ DataHolder.deviceType.postValue(Constants.DEVICE_TYPE_HOMOCUBE)
+ Constants.DEVICE_TYPE_HOMOCUBE
+ }
+
device.productId == Constants.DEVICE_PRODUCT_ID && device.vendorId == Constants.DEVICE_VENDOR_ID -> {
Log.d(
TAG,
diff --git a/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt b/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt
index e0034c0..b3b9338 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt
@@ -26,6 +26,7 @@ import android.widget.AutoCompleteTextView
import androidx.core.content.ContextCompat.getSystemService
import androidx.core.content.getSystemService
import androidx.fragment.app.FragmentActivity
+import com.example.hpostesting.data.constant.Constants
import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel
import com.google.firebase.firestore.FirebaseFirestore
@@ -196,7 +197,7 @@ class UserListAdapter(
// }
}
userCard.setOnClickListener {
- if (batLevel < 40) {
+ if (batLevel < Constants.BATTERY_LEVEL_MIN) {
Toast.makeText(
view.context,
context?.getString(R.string.low_battery_warning),
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 ba6f55b..7128812 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
@@ -57,6 +57,7 @@ class HemoCubeFragment : Fragment() {
private var validationError = false
private var deviceHardwareId = ""
private var allErrorMessages = ""
+ private var testStatusCode = 0.0
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?,
@@ -121,6 +122,11 @@ class HemoCubeFragment : Fragment() {
}
+ if (sharedPreferences.getString(Constants.USER_ID, "").toString() == "ADMIN") {
+ activity?.runOnUiThread {
+ binding.tvDeviceMessages.visibility = View.VISIBLE
+ }
+ }
}
private fun observeViewModel() {
@@ -171,6 +177,10 @@ class HemoCubeFragment : Fragment() {
hemoCubeViewModel.messages.observe(viewLifecycleOwner) {
binding.tvSubtitle4.text = it
}
+
+ hemoCubeViewModel.deviceMessages.observe(viewLifecycleOwner) {
+ binding.tvDeviceMessages.text = it
+ }
}
private fun checkAndStartProcess() {
@@ -251,7 +261,7 @@ class HemoCubeFragment : Fragment() {
data?.let {
val stringData = String(it)
fullReadOutput.append(stringData)
- handleUsbData(stringData, fullReadOutput)
+ handleUsbData(stringData, testStatusCode)
}
}
@@ -284,31 +294,27 @@ class HemoCubeFragment : Fragment() {
})
}
- private fun handleUsbData(stringData: String, fullReadOutput: StringBuilder) {
+ private fun handleUsbData(stringData: String, testStatusCode: Double) {
if (stringData.contains("#")) {
isTestOngoing = true
}
resultData += stringData
+ hemoCubeViewModel.deviceMessages.postValue(resultData)
when {
- stringData.contains("SNS") -> {
- val slData = stringData.split(" ")
- if (slData.size > 1 && slData[1].trim().length == 12) {
- val hardwareId = slData[1].trim()
- deviceHardwareId = hardwareId
- }
- }
+ resultData.contains("SNE") && this.testStatusCode < Constants.TEST_STATUS_CODE_CONFIG_COMPLETED -> {
+ val pattern = Regex("HCV-\\d{3}-\\d{4}")
+ val matchResult = pattern.find(resultData)
+ val hardwareId = matchResult?.value
- stringData.contains("SNE") -> {
- val slData = stringData.split(" ")
- if (slData.size > 1) {
- val hardwareId = slData[0].trim()
+ if (hardwareId.toString().length == 12) {
deviceHardwareId += hardwareId
with(sharedPreferences.edit()) {
putString(Constants.DEVICE_ID, deviceHardwareId)
apply()
}
+ this.testStatusCode = Constants.TEST_STATUS_CODE_CONFIG_COMPLETED
} else {
hemoCubeViewModel.messages.postValue("Config error")
}
@@ -318,32 +324,37 @@ class HemoCubeFragment : Fragment() {
hemoCubeViewModel.messages.postValue(getString(R.string.start))
}
- stringData.contains("#BS") -> {
+ resultData.contains("#BS") && this.testStatusCode < Constants.TEST_STATUS_CODE_BUFFER_STARTED -> {
hemoCubeViewModel.messages.postValue(getString(R.string.buffer_started))
+ this.testStatusCode = Constants.TEST_STATUS_CODE_BUFFER_STARTED
}
- stringData.contains("#BC") -> {
+ resultData.contains("#BC") && this.testStatusCode < Constants.TEST_STATUS_CODE_BUFFER_COMPLETED -> {
+ this.testStatusCode = Constants.TEST_STATUS_CODE_BUFFER_COMPLETED
activity?.runOnUiThread {
binding.tvSubtitle4.text = getString(R.string.buffer_completed)
binding.btnSamplestart.visibility = View.VISIBLE
}
}
- stringData.contains("#SS") -> {
+ resultData.contains("#SS") && this.testStatusCode < Constants.TEST_STATUS_CODE_SAMPLE_STARTED -> {
+ this.testStatusCode = Constants.TEST_STATUS_CODE_SAMPLE_STARTED
activity?.runOnUiThread {
binding.tvSubtitle4.text = getString(R.string.sample_started)
binding.btnSamplestart.visibility = View.GONE
}
}
- stringData.contains("#SC") -> {
+ resultData.contains("#SC") && this.testStatusCode < Constants.TEST_STATUS_CODE_SAMPLE_COMPLETED -> {
+ this.testStatusCode = Constants.TEST_STATUS_CODE_SAMPLE_COMPLETED
hemoCubeViewModel.messages.postValue(
getString(R.string.sample_completed) + "\n" + getString(R.string.gathering_data))
fetchResult()
testingTrace.stop()
}
- resultData.contains("REND") -> {
+ resultData.contains("REND") && this.testStatusCode < Constants.TEST_STATUS_CODE_SAMPLE_PRINT_COMPLETED -> {
+ this.testStatusCode = Constants.TEST_STATUS_CODE_SAMPLE_PRINT_COMPLETED
hemoCubeViewModel.messages.postValue(
getString(R.string.data_collected_processing_data)
)
diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt
index b9af079..f32fa04 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt
@@ -51,6 +51,7 @@ class HemoCubeViewModel @Inject constructor(
val deviceData = MutableLiveData()
val networkStatusLiveData: LiveData
get() = _networkStatusLiveData
+ val deviceMessages = MutableLiveData()
val fireBaseUpload = MutableLiveData()
val fireBaseBulkUpload = MutableLiveData()
diff --git a/app/src/main/res/layout/fragment_hemo_cube_reference.xml b/app/src/main/res/layout/fragment_hemo_cube_reference.xml
index a9aa2dd..9b166f9 100644
--- a/app/src/main/res/layout/fragment_hemo_cube_reference.xml
+++ b/app/src/main/res/layout/fragment_hemo_cube_reference.xml
@@ -195,16 +195,31 @@
style="@style/title1_1"
android:visibility="gone"
android:layout_width="match_parent"
- android:layout_height="80dp"
+ android:layout_height="40dp"
android:layout_marginHorizontal="24dp"
- android:layout_marginTop="172dp"
+ android:layout_marginTop="72dp"
android:gravity="center"
android:textColor="@color/red"
- android:textSize="18sp"
+ android:textSize="12sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btn_submit" />
+
+