Compare commits

...

1 Commits

Author SHA1 Message Date
sathwik
c3acb41590 updated the uto sumbit 2025-07-15 14:57:19 +05:30
7 changed files with 77 additions and 10 deletions

View File

@@ -5,3 +5,9 @@
key0: prime24 key0: prime24
### Version 133.3
Printer not added yet
//update it when it is completed

View File

@@ -21,7 +21,7 @@ android {
minSdk 30 minSdk 30
targetSdk 34 targetSdk 34
versionCode 138 versionCode 138
versionName "2.1.133" versionName "2.1.133.3"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
externalNativeBuild { externalNativeBuild {
cmake { cmake {

View File

@@ -15,7 +15,7 @@ std::vector<std::pair<int, std::pair<std::string, std::unordered_map<std::string
extern "C" extern "C"
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_com_example_hpostesting_firebase_FirebaseManager_getFirebaseDataMap(JNIEnv *env,jobject thiz) { Java_com_example_hpostesting_firebase_FirebaseManager_getFirebaseDataMap(JNIEnv *env,jobject thiz) {
jclass mapClass = env->FindClass("java/util/LinkedHashMap"); // ✅ preserves insertion order jclass mapClass = env->FindClass("java/util/LinkedHashMap");
jmethodID init = env->GetMethodID(mapClass, "<init>", "()V"); jmethodID init = env->GetMethodID(mapClass, "<init>", "()V");
jmethodID put = env->GetMethodID(mapClass, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); jmethodID put = env->GetMethodID(mapClass, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
jobject outerMap = env->NewObject(mapClass, init); jobject outerMap = env->NewObject(mapClass, init);

View File

@@ -32,7 +32,6 @@ import retrofit2.http.PUT
import retrofit2.http.Part import retrofit2.http.Part
interface MolbioResultApi { interface MolbioResultApi {
@PUT("deviceService/results/HPOS") @PUT("deviceService/results/HPOS")
suspend fun uploadResults( suspend fun uploadResults(
@Body molbioV2ResultRequest: MolbioV2ResultRequest, @Body molbioV2ResultRequest: MolbioV2ResultRequest,
@@ -47,6 +46,7 @@ interface MolbioResultApi {
// suspend fun deviceUpdate( // suspend fun deviceUpdate(
// @Body deviceUpdateRequest: DeviceUpdateRequest, // @Body deviceUpdateRequest: DeviceUpdateRequest,
// ): ResponseBody // ): ResponseBody
@POST("deviceService/device/getUpdate") @POST("deviceService/device/getUpdate")
suspend fun deviceUpdate( suspend fun deviceUpdate(
@Body deviceUpdateRequest: DeviceUpdateRequest, @Body deviceUpdateRequest: DeviceUpdateRequest,
@@ -62,7 +62,6 @@ interface MolbioResultApi {
@Part logFile: MultipartBody.Part, @Part logFile: MultipartBody.Part,
): UploadLogsResponse ): UploadLogsResponse
@PUT("deviceService/device/uploadDeviceDiagnostics") @PUT("deviceService/device/uploadDeviceDiagnostics")
suspend fun deviceDiagnostics( suspend fun deviceDiagnostics(
@Body deviceDiagnosticsRequest: DeviceDiagnosticsRequest @Body deviceDiagnosticsRequest: DeviceDiagnosticsRequest

View File

@@ -36,7 +36,6 @@ class FirebaseManager @Inject constructor(private val context: Context) {
init { init {
System.loadLibrary("native-server") //use NDK ro secure somethings System.loadLibrary("native-server") //use NDK ro secure somethings
} }
} }
private val sharedPreferencesServerConfig = context.getSharedPreferences("FirebaseConfigPrefs", Context.MODE_PRIVATE) private val sharedPreferencesServerConfig = context.getSharedPreferences("FirebaseConfigPrefs", Context.MODE_PRIVATE)
private val sharedPreferencesDev = context.getSharedPreferences("DevMode",Context.MODE_PRIVATE) private val sharedPreferencesDev = context.getSharedPreferences("DevMode",Context.MODE_PRIVATE)

View File

@@ -37,6 +37,7 @@ import com.example.hpostesting.presentation.main_base.DashboardActivity
import com.google.firebase.crashlytics.ktx.crashlytics import com.google.firebase.crashlytics.ktx.crashlytics
import com.google.firebase.ktx.Firebase import com.google.firebase.ktx.Firebase
import `in`.sminnovations.hpostesting.databinding.FragmentDeviceProvisionBinding import `in`.sminnovations.hpostesting.databinding.FragmentDeviceProvisionBinding
import okio.ByteString.Companion.decodeBase64
import java.io.File import java.io.File
class DeviceProvisionFragment : Fragment() { class DeviceProvisionFragment : Fragment() {
@@ -147,17 +148,18 @@ class DeviceProvisionFragment : Fragment() {
DashboardActivity::class.java DashboardActivity::class.java
) )
) )
} else { } else {
Toast.makeText( Toast.makeText(
activity, activity,
"An error in device provision: ${response.data.message}", "An error in device provision: ${response.data.message}",
Toast.LENGTH_LONG Toast.LENGTH_LONG
).show() ).show()
Log.d("Error in hpos network", "observeViewModel:${response.data.message} ")
binding.btnSubmit.visibility = View.VISIBLE binding.btnSubmit.visibility = View.VISIBLE
} }
} }
is Result.Error -> { is Result.Error -> {
response.exception.let { message -> response.exception.let { message ->
Toast.makeText( Toast.makeText(
@@ -165,7 +167,9 @@ class DeviceProvisionFragment : Fragment() {
"An error occurred in device provision: $message", "An error occurred in device provision: $message",
Toast.LENGTH_LONG Toast.LENGTH_LONG
).show() ).show()
Log.d("Error in hpos network 2", "observeViewModel:$message} ")
} }
Log.d("Error in hpos network 3", "observeViewModel: $response} ")
} }
is Result.Loading -> { is Result.Loading -> {

View File

@@ -29,6 +29,8 @@ import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.lifecycleScope
import androidx.transition.Visibility
import com.example.hpostesting.data.constant.DataHolder import com.example.hpostesting.data.constant.DataHolder
import com.example.hpostesting.util.Result import com.example.hpostesting.util.Result
import com.example.hpostesting.data.constant.Constants import com.example.hpostesting.data.constant.Constants
@@ -45,6 +47,9 @@ import com.google.firebase.crashlytics.ktx.crashlytics
import com.google.firebase.ktx.Firebase import com.google.firebase.ktx.Firebase
import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.R
import `in`.sminnovations.hpostesting.databinding.FragmentHemoCubeReferenceBinding import `in`.sminnovations.hpostesting.databinding.FragmentHemoCubeReferenceBinding
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlin.math.abs import kotlin.math.abs
import kotlin.math.log10 import kotlin.math.log10
import kotlin.random.Random import kotlin.random.Random
@@ -142,6 +147,7 @@ class TrueHemeTestFragment : Fragment() {
return binding.root return binding.root
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
initViews() initViews()
@@ -150,10 +156,52 @@ class TrueHemeTestFragment : Fragment() {
observeViewModel() observeViewModel()
} }
private fun autoSmbt(ignoreCuvette : Boolean = true){
submitClick = true
checkSubmit = true
lifecycleScope.launch {
delay(100)
}
activity?.runOnUiThread {
if (checkSubmit) {
with(sharedPreferences.edit()) {
putBoolean(Constants.QUICK_CAPTURE, false)
apply()
}
if (DataHolder.hemoCubeTestData!!.classificationResult != "Invalid") {
DataHolder.sampleReadCounter++
}
binding.btnSubmit.isEnabled = false
binding.btnSubmit.isClickable = false
activity?.runOnUiThread {
Log.d("HemoCubeFragment", "Test Process completed, result saved")
binding.progressBar.visibility = View.VISIBLE
binding.btnSubmit.visibility = View.GONE
}
trueHemeTestViewModel.uploadHemoCubeResultToDatabase(
isOnline,
true,
sharedPreferences.getString(Constants.KIT_NUMBER, ""),
quickCapture
)
Toast.makeText(requireContext(), "Auto Sumbitted", Toast.LENGTH_SHORT).show()
} else {
checkCuvettePresence()
binding.btnSubmit.isEnabled = true
binding.btnSubmit.isClickable = true
Toast.makeText(requireContext(), "Auto Sumbit Failed ", Toast.LENGTH_SHORT).show()
binding.btnSubmit.visibility = View.VISIBLE
}
}
}
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
private fun initViews() { private fun initViews() {
binding.tvSubtitle4.movementMethod = ScrollingMovementMethod() binding.tvSubtitle4.movementMethod = ScrollingMovementMethod()
binding.tvDeviceMessages.movementMethod = ScrollingMovementMethod() binding.tvDeviceMessages.movementMethod = ScrollingMovementMethod()
binding.btnSubmit.setOnClickListener { binding.btnSubmit.setOnClickListener {
// with(sharedPreferences.edit()) { // with(sharedPreferences.edit()) {
// putBoolean(Constants.QUICK_CAPTURE, false) // putBoolean(Constants.QUICK_CAPTURE, false)
@@ -451,7 +499,7 @@ class TrueHemeTestFragment : Fragment() {
} }
} }
private fun showBufferAlertDialog() { private fun showBufferAlertDialog(){
val title = "WARNING" val title = "WARNING"
val message = getString(R.string.do_exist) val message = getString(R.string.do_exist)
val negativeText = getString(R.string.no) val negativeText = getString(R.string.no)
@@ -658,6 +706,8 @@ class TrueHemeTestFragment : Fragment() {
} }
showRetryButtonForCuvette() showRetryButtonForCuvette()
} }
//need to change where check submit
resultData.contains("#CIN") && this.submitClick && this.testStatusCode < TestStatus.CUVETTE_PRESENTT.code -> { resultData.contains("#CIN") && this.submitClick && this.testStatusCode < TestStatus.CUVETTE_PRESENTT.code -> {
trueHemeTestViewModel.messages.postValue(getString(R.string.cuvette_presentt)) trueHemeTestViewModel.messages.postValue(getString(R.string.cuvette_presentt))
this.testStatusCode = TestStatus.CUVETTE_PRESENTT.code this.testStatusCode = TestStatus.CUVETTE_PRESENTT.code
@@ -665,6 +715,8 @@ class TrueHemeTestFragment : Fragment() {
binding.testing.visibility = View.GONE binding.testing.visibility = View.GONE
} }
} }
resultData.contains("#AIN") && this.submitClick && this.testStatusCode <= TestStatus.CUVETTE_ABSENTT.code -> { resultData.contains("#AIN") && this.submitClick && this.testStatusCode <= TestStatus.CUVETTE_ABSENTT.code -> {
trueHemeTestViewModel.messages.postValue(getString(R.string.cuvette_absentt)) trueHemeTestViewModel.messages.postValue(getString(R.string.cuvette_absentt))
this.testStatusCode = TestStatus.CUVETTE_ABSENTT.code this.testStatusCode = TestStatus.CUVETTE_ABSENTT.code
@@ -957,11 +1009,15 @@ class TrueHemeTestFragment : Fragment() {
if (readingsPerSample == 1) { if (readingsPerSample == 1) {
activity?.runOnUiThread { activity?.runOnUiThread {
binding.btnSubmit.visibility = View.VISIBLE
binding.btnSubmit.isEnabled = true //changing to invisible
binding.btnSubmit.isClickable = true binding.btnSubmit.visibility = View.GONE
// binding.btnSubmit.isEnabled = true
// binding.btnSubmit.isClickable = true
// binding.clParent.setBackgroundColor(Color.parseColor("#edfffd")) // binding.clParent.setBackgroundColor(Color.parseColor("#edfffd"))
autoSmbt(true)
binding.ivCheck.visibility = View.VISIBLE binding.ivCheck.visibility = View.VISIBLE
} }
} else { } else {
trueHemeTestViewModel.uploadHemoCubeResultToDatabase( trueHemeTestViewModel.uploadHemoCubeResultToDatabase(
@@ -1769,4 +1825,7 @@ class TrueHemeTestFragment : Fragment() {
private fun generateTwoDigitRandomNumber(): Int { private fun generateTwoDigitRandomNumber(): Int {
return Random.nextInt(10, 100) return Random.nextInt(10, 100)
} }
} }