diff --git a/app/src/main/java/com/example/hpostesting/HPOSTestingApplication.kt b/app/src/main/java/com/example/hpostesting/HPOSTestingApplication.kt index 2f64fca..eec15d6 100644 --- a/app/src/main/java/com/example/hpostesting/HPOSTestingApplication.kt +++ b/app/src/main/java/com/example/hpostesting/HPOSTestingApplication.kt @@ -1,20 +1,15 @@ package com.example.hpostesting import android.app.Application -import android.content.Context -import androidx.room.Room -import com.example.hpostesting.data.dao.MyDatabase -import com.google.android.datatransport.runtime.dagger.Provides import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.firestore.FirebaseFirestoreSettings import dagger.hilt.android.HiltAndroidApp import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.SupervisorJob -import javax.inject.Singleton @HiltAndroidApp -class HPOSTestingApplication: Application() { +class HPOSTestingApplication : Application() { val applicationScope = CoroutineScope(SupervisorJob() + Dispatchers.IO) override fun onCreate() { diff --git a/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt index f5b87e4..5565aeb 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt @@ -87,7 +87,7 @@ class KitScanActivity : AppCompatActivity(), IDcsSdkApiDelegate { override fun dcssdkEventAuxScannerAppeared( dcsScannerInfo: DCSScannerInfo?, - dcsScannerInfo1: DCSScannerInfo? + dcsScannerInfo1: DCSScannerInfo?, ) { } @@ -223,11 +223,11 @@ class KitScanActivity : AppCompatActivity(), IDcsSdkApiDelegate { notifications_mask or DCSSDKDefs.DCSSDK_EVENT.DCSSDK_EVENT_BARCODE.value sdkHandler!!.dcssdkSubsribeForEvents(notifications_mask) mScannerInfoList.addAll(sdkHandler!!.dcssdkGetAvailableScannersList()) - Log.e("scannersize",sdkHandler!!.dcssdkGetAvailableScannersList().size.toString()) + Log.e("scannersize", sdkHandler!!.dcssdkGetAvailableScannersList().size.toString()) if (mScannerInfoList.isNotEmpty()) { sdkHandler!!.dcssdkEstablishCommunicationSession(mScannerInfoList[0].scannerID) } else { - Toast.makeText(this,"Error", Toast.LENGTH_LONG).show() + Toast.makeText(this, "Error", Toast.LENGTH_LONG).show() } } @@ -242,7 +242,10 @@ class KitScanActivity : AppCompatActivity(), IDcsSdkApiDelegate { val outXML = StringBuilder() val result: DCSSDK_RESULT = sdkHandler!!.dcssdkExecuteCommandOpCodeInXMLForScanner( - DCSSDK_COMMAND_OPCODE.DCSSDK_DEVICE_PULL_TRIGGER, inXML, outXML, mScannerInfoList[0].scannerID // Ensure you're using the correct scanner ID + DCSSDK_COMMAND_OPCODE.DCSSDK_DEVICE_PULL_TRIGGER, + inXML, + outXML, + mScannerInfoList[0].scannerID // Ensure you're using the correct scanner ID ) if (result == DCSSDK_RESULT.DCSSDK_RESULT_SUCCESS) { Log.d("Scanning", "Success") 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 f1d0992..e581fa1 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt @@ -111,7 +111,11 @@ class MainActivity : AppCompatActivity() { val deviceType = when { availableDrivers.isNotEmpty() -> { val device = availableDrivers[0].device - Toast.makeText(this, "Connected, productId: ${device.productId}, vendorId: ${device.vendorId}", Toast.LENGTH_SHORT).show() + Toast.makeText( + this, + "Connected, productId: ${device.productId}, vendorId: ${device.vendorId}", + Toast.LENGTH_SHORT + ).show() when { device.productId == Constants.HOMO_CUBE_ID && device.vendorId == Constants.VENDOR_ID -> { binding.cvItem1.visibility = View.VISIBLE @@ -348,7 +352,7 @@ class MainActivity : AppCompatActivity() { } override fun onRequestPermissionsResult( - requestCode: Int, permissions: Array, grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray, ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) when (requestCode) { diff --git a/app/src/main/java/com/example/hpostesting/presentation/SplashActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/SplashActivity.kt index c8e4a3a..8d7ec74 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/SplashActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/SplashActivity.kt @@ -1,6 +1,5 @@ package com.example.hpostesting.presentation -import com.example.hpostesting.presentation.dashboard.DashboardActivity import android.Manifest import android.content.Context import android.content.Intent @@ -16,6 +15,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import com.example.hpostesting.data.DataHolder import com.example.hpostesting.data.constant.LanguageManager +import com.example.hpostesting.presentation.dashboard.DashboardActivity import com.example.hpostesting.util.MyUtils import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.databinding.ActivitySplashBinding @@ -53,7 +53,10 @@ class SplashActivity : AppCompatActivity() { private fun setupStaticConstants() { DataHolder.mobileUniqueId = - Settings.Secure.getString(applicationContext.contentResolver, Settings.Secure.ANDROID_ID) + Settings.Secure.getString( + applicationContext.contentResolver, + Settings.Secure.ANDROID_ID + ) } // private fun setupFirestoreCache() { @@ -98,7 +101,10 @@ class SplashActivity : AppCompatActivity() { private fun requestPermissionsBelowAndroidR() { val permissionsToRequest = requiredPermissions .filterNot { permission -> - ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED + ContextCompat.checkSelfPermission( + this, + permission + ) == PackageManager.PERMISSION_GRANTED } .toTypedArray() @@ -114,9 +120,18 @@ class SplashActivity : AppCompatActivity() { val coarseLocationPermission = Manifest.permission.ACCESS_COARSE_LOCATION val cameraPermission = Manifest.permission.CAMERA val locationPermissionsGranted = - ContextCompat.checkSelfPermission(this, fineLocationPermission) == PackageManager.PERMISSION_GRANTED && - ContextCompat.checkSelfPermission(this, coarseLocationPermission) == PackageManager.PERMISSION_GRANTED - val cameraPermissionGranted = ContextCompat.checkSelfPermission(this, cameraPermission) == PackageManager.PERMISSION_GRANTED + ContextCompat.checkSelfPermission( + this, + fineLocationPermission + ) == PackageManager.PERMISSION_GRANTED && + ContextCompat.checkSelfPermission( + this, + coarseLocationPermission + ) == PackageManager.PERMISSION_GRANTED + val cameraPermissionGranted = ContextCompat.checkSelfPermission( + this, + cameraPermission + ) == PackageManager.PERMISSION_GRANTED if (locationPermissionsGranted && cameraPermissionGranted) { handlePermissionsResult(true) diff --git a/app/src/main/java/com/example/hpostesting/presentation/UsbServiceListener.kt b/app/src/main/java/com/example/hpostesting/presentation/UsbServiceListener.kt index f041e98..595f93b 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/UsbServiceListener.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/UsbServiceListener.kt @@ -1,6 +1,6 @@ package com.example.hpostesting.presentation interface UsbServiceListener { - fun onUsbRead(data: ByteArray?) - fun onUsbError(e: Exception?) + fun onUsbRead(data: ByteArray?) + fun onUsbError(e: Exception?) } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt b/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt index 0c32c61..bae6504 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt @@ -17,13 +17,11 @@ import com.example.hpostesting.data.model.patient.HemoCubeTestData import com.example.hpostesting.data.model.patient.UserData import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.databinding.OfflineUserListViewBinding -import org.apache.commons.collections4.MapUtils.getString import java.text.SimpleDateFormat import java.util.Calendar import java.util.Date import java.util.Locale - class OfflineUserListAdapter(private val view: View, private val batLevel: Int) : RecyclerView.Adapter() { @@ -33,13 +31,13 @@ class OfflineUserListAdapter(private val view: View, private val batLevel: Int) private val differCallback = object : DiffUtil.ItemCallback() { override fun areItemsTheSame( - oldItem: HemoCubeTestData, newItem: HemoCubeTestData + oldItem: HemoCubeTestData, newItem: HemoCubeTestData, ): Boolean { return oldItem._id == newItem._id } override fun areContentsTheSame( - oldItem: HemoCubeTestData, newItem: HemoCubeTestData + oldItem: HemoCubeTestData, newItem: HemoCubeTestData, ): Boolean { return oldItem == newItem } @@ -104,20 +102,20 @@ class OfflineUserListAdapter(private val view: View, private val batLevel: Int) ).show() } else if (isBetween15And30Minutes(userList.incubationTime) > Constants.INCUBATION_TIME_MAX) { - Toast.makeText( - view.context, - view.context.getString(R.string.incubation_crossed_30_minutes), - Toast.LENGTH_SHORT - ).show() - } else { - DataHolder.selectedTest = UserData( - _id = userList._id, - bloodGroup = userList.bloodGroup, - incubationTime = userList.incubationTime - ) - view.findNavController() - .navigate(R.id.action_nav_home_to_mainActivity) - } + Toast.makeText( + view.context, + view.context.getString(R.string.incubation_crossed_30_minutes), + Toast.LENGTH_SHORT + ).show() + } else { + DataHolder.selectedTest = UserData( + _id = userList._id, + bloodGroup = userList.bloodGroup, + incubationTime = userList.incubationTime + ) + view.findNavController() + .navigate(R.id.action_nav_home_to_mainActivity) + } } else { Toast.makeText( view.context, @@ -143,7 +141,6 @@ class OfflineUserListAdapter(private val view: View, private val batLevel: Int) return diffMillis / (60 * 1000) } - private fun showWarningToast(resId: Int) { val contextToUse = view.context ?: return 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 aadcc8f..7466e79 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 @@ -4,30 +4,28 @@ import android.annotation.SuppressLint import android.app.AlertDialog import android.content.Context import android.content.Context.INPUT_METHOD_SERVICE -import android.view.inputmethod.InputMethodManager import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.inputmethod.InputMethodManager +import android.widget.AutoCompleteTextView import android.widget.Toast +import androidx.fragment.app.FragmentActivity import androidx.navigation.findNavController import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide import com.example.hpostesting.data.DataHolder import com.example.hpostesting.data.model.patient.UserData +import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel import com.firebase.ui.firestore.FirestoreRecyclerAdapter import com.firebase.ui.firestore.FirestoreRecyclerOptions +import com.google.firebase.firestore.FirebaseFirestore import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.databinding.UserItemViewBinding import java.text.SimpleDateFormat import java.util.Calendar import java.util.Date import java.util.Locale -import android.widget.AutoCompleteTextView -import androidx.core.content.ContextCompat.getSystemService -import androidx.core.content.getSystemService -import androidx.fragment.app.FragmentActivity -import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel -import com.google.firebase.firestore.FirebaseFirestore class UserListAdapter( @@ -36,7 +34,7 @@ class UserListAdapter( options: FirestoreRecyclerOptions, private val view: View, private val batLevel: Int, - private val requireActivity: FragmentActivity + private val requireActivity: FragmentActivity, ) : FirestoreRecyclerAdapter(options) { class OrderItemViewHolder(val binding: UserItemViewBinding) : @@ -96,16 +94,21 @@ class UserListAdapter( .setView(dialogView) .setTitle(R.string.blood_group) - val etBloodGroup = dialogView.findViewById(R.id.et_blood_group) + val etBloodGroup = + dialogView.findViewById(R.id.et_blood_group) builder.setPositiveButton(R.string.ok) { dialog, which -> val bloodGroup = etBloodGroup.text.toString() - if (bloodGroup.equals("Select Blood Group") ||bloodGroup.equals("ರಕ್ತ ಗುಂಪು ಆಯ್ಕೆಮಾಡಿ") || bloodGroup.isNullOrBlank()) { + if (bloodGroup.equals("Select Blood Group") || bloodGroup.equals("ರಕ್ತ ಗುಂಪು ಆಯ್ಕೆಮಾಡಿ") || bloodGroup.isNullOrBlank()) { if (view != null) { - etBloodGroup.error =view.context.getString(R.string.blood_group_error) + etBloodGroup.error = view.context.getString(R.string.blood_group_error) } if (view != null) { - Toast.makeText(context, view.context.getString(R.string.blood_group_toast), Toast.LENGTH_SHORT).show() + Toast.makeText( + context, + view.context.getString(R.string.blood_group_toast), + Toast.LENGTH_SHORT + ).show() } } else { // Check if hemoCubeViewModel and testDetails are not null @@ -119,7 +122,8 @@ class UserListAdapter( val document = userdata.documents[0] db.collection("patientData") .document(document.id) - .update("bloodGroup", bloodGroup, + .update( + "bloodGroup", bloodGroup, "incubationTime", SimpleDateFormat( "yyyy-MM-dd HH:mm:ss", Locale.getDefault() ).format(Calendar.getInstance().time).toString() diff --git a/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsActivity.kt index 307ac08..f5d5680 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsActivity.kt @@ -8,7 +8,7 @@ import dagger.hilt.android.AndroidEntryPoint import `in`.sminnovations.hpostesting.databinding.ActivityAssuranceControlsBinding @AndroidEntryPoint -class AssuranceControlsActivity: AppCompatActivity() { +class AssuranceControlsActivity : AppCompatActivity() { lateinit var binding: ActivityAssuranceControlsBinding lateinit var sharedPreference: SharedPreferences diff --git a/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsFragment.kt index 250bea2..1ce31a1 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsFragment.kt @@ -21,7 +21,7 @@ import com.example.hpostesting.presentation.hemocube.HemocubeActivity import `in`.sminnovations.hpostesting.databinding.FragmentAssuranceControlsBinding import java.time.Instant -class AssuranceControlsFragment: Fragment() { +class AssuranceControlsFragment : Fragment() { lateinit var binding: FragmentAssuranceControlsBinding private lateinit var sharedPreferences: SharedPreferences @@ -47,7 +47,8 @@ class AssuranceControlsFragment: Fragment() { val solutionSpinner: Spinner = binding.spinnerSolutions val solutionOptions = arrayOf("Select solution", "Tartrazine", "Acid Red") - val solutionAdapter = ArrayAdapter(requireContext(), R.layout.simple_spinner_item, solutionOptions) + val solutionAdapter = + ArrayAdapter(requireContext(), R.layout.simple_spinner_item, solutionOptions) solutionAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) solutionSpinner.adapter = solutionAdapter solutionSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { @@ -55,7 +56,7 @@ class AssuranceControlsFragment: Fragment() { parent: AdapterView<*>?, view: View?, position: Int, - id: Long + id: Long, ) { val selectedValue: String = solutionOptions[position] if (!selectedValue.equals("Select solution")) { @@ -68,8 +69,21 @@ class AssuranceControlsFragment: Fragment() { } val concentrationSpinner: Spinner = binding.spinnerConcentration - val concentrationOptions = arrayOf("Select concentration", "65umol", "45umol", "22.5umol", "12.25umol", "6.125umol", "75umol", "50umol", "25umol", "12.5umol", "6.25umol") - val concentrationAdapter = ArrayAdapter(requireContext(), R.layout.simple_spinner_item, concentrationOptions) + val concentrationOptions = arrayOf( + "Select concentration", + "65umol", + "45umol", + "22.5umol", + "12.25umol", + "6.125umol", + "75umol", + "50umol", + "25umol", + "12.5umol", + "6.25umol" + ) + val concentrationAdapter = + ArrayAdapter(requireContext(), R.layout.simple_spinner_item, concentrationOptions) concentrationAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) concentrationSpinner.adapter = concentrationAdapter concentrationSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { @@ -77,7 +91,7 @@ class AssuranceControlsFragment: Fragment() { parent: AdapterView<*>?, view: View?, position: Int, - id: Long + id: Long, ) { val selectedValue: String = concentrationOptions[position] if (!selectedValue.equals("Select concentration")) { @@ -91,7 +105,8 @@ class AssuranceControlsFragment: Fragment() { val volumeSpinner: Spinner = binding.spinnerVolume val volumeOptions = arrayOf("Select volume", "1uml", "2uml", "4uml", "4.5uml", "5uml") - val volumeAdapter = ArrayAdapter(requireContext(), R.layout.simple_spinner_item, volumeOptions) + val volumeAdapter = + ArrayAdapter(requireContext(), R.layout.simple_spinner_item, volumeOptions) volumeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) volumeSpinner.adapter = volumeAdapter volumeSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { @@ -99,7 +114,7 @@ class AssuranceControlsFragment: Fragment() { parent: AdapterView<*>?, view: View?, position: Int, - id: Long + id: Long, ) { val selectedValue: String = volumeOptions[position] if (!selectedValue.equals("Select volume")) { @@ -112,12 +127,15 @@ class AssuranceControlsFragment: Fragment() { } // load saved values - val savedSolution = sharedPreferences.getString(Constants.QUICK_CAPTURE_SOLUTION, "").toString() + val savedSolution = + sharedPreferences.getString(Constants.QUICK_CAPTURE_SOLUTION, "").toString() val solutionPosition = getPositionOfValue(savedSolution, solutionOptions.toList()) solutionSpinner.setSelection(solutionPosition) - val savedConcentration = sharedPreferences.getString(Constants.QUICK_CAPTURE_CONCENTRATION, "").toString() - val concentrationPosition = getPositionOfValue(savedConcentration, concentrationOptions.toList()) + val savedConcentration = + sharedPreferences.getString(Constants.QUICK_CAPTURE_CONCENTRATION, "").toString() + val concentrationPosition = + getPositionOfValue(savedConcentration, concentrationOptions.toList()) concentrationSpinner.setSelection(concentrationPosition) val savedVolume = sharedPreferences.getString(Constants.QUICK_CAPTURE_VOLUME, "").toString() @@ -128,7 +146,11 @@ class AssuranceControlsFragment: Fragment() { val selectedSolution = DataHolder.hemoCubeTestData!!.solution val selectedVolume = DataHolder.hemoCubeTestData!!.volume if (selectedSolution == "Select solution" || selectedVolume == "Select volume") { - Toast.makeText(requireContext(), "Please select both solution and volume", Toast.LENGTH_SHORT).show() + Toast.makeText( + requireContext(), + "Please select both solution and volume", + Toast.LENGTH_SHORT + ).show() return@setOnClickListener } @@ -139,7 +161,8 @@ class AssuranceControlsFragment: Fragment() { "" } DataHolder.hemoCubeTestData!!._id = currentUnixTime.toString() + "SMI" - DataHolder.hemoCubeTestData!!.name = "${DataHolder.hemoCubeTestData!!.solution} ${DataHolder.hemoCubeTestData!!.concentration} ${DataHolder.hemoCubeTestData!!.volume}" + DataHolder.hemoCubeTestData!!.name = + "${DataHolder.hemoCubeTestData!!.solution} ${DataHolder.hemoCubeTestData!!.concentration} ${DataHolder.hemoCubeTestData!!.volume}" DataHolder.selectedTest = UserData() DataHolder.selectedTest?._id = DataHolder.hemoCubeTestData!!._id @@ -147,7 +170,10 @@ class AssuranceControlsFragment: Fragment() { with(sharedPreferences.edit()) { putString(Constants.QUICK_CAPTURE_SOLUTION, DataHolder.hemoCubeTestData!!.solution) - putString(Constants.QUICK_CAPTURE_CONCENTRATION, DataHolder.hemoCubeTestData!!.concentration) + putString( + Constants.QUICK_CAPTURE_CONCENTRATION, + DataHolder.hemoCubeTestData!!.concentration + ) putString(Constants.QUICK_CAPTURE_VOLUME, DataHolder.hemoCubeTestData!!.volume) apply() } diff --git a/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacActivity.kt index 4ff6e46..bf68427 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacActivity.kt @@ -31,7 +31,7 @@ import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.databinding.ActivityAutoDacBinding @AndroidEntryPoint -class AutoDacActivity: AppCompatActivity() { +class AutoDacActivity : AppCompatActivity() { private lateinit var binding: ActivityAutoDacBinding val viewModel: AutoDacViewModel by viewModels() private var myMenu: Menu? = null @@ -62,7 +62,6 @@ class AutoDacActivity: AppCompatActivity() { } } - private val connection = object : ServiceConnection { override fun onServiceConnected(className: ComponentName, service: IBinder) { val binder = service as UsbService.UsbServiceBinder @@ -107,6 +106,7 @@ class AutoDacActivity: AppCompatActivity() { } } } + open fun connectUsb(permissionGranted: Boolean) { Log.d(TAG, "connectUsb() called, permission variable = $permissionGranted") val manager = getSystemService(Context.USB_SERVICE) as UsbManager @@ -126,7 +126,6 @@ class AutoDacActivity: AppCompatActivity() { } } - fun onErrorReported(msg: String) { Toast.makeText(this, msg, Toast.LENGTH_SHORT).show() if (!isFinishing) onBackPressed() @@ -161,17 +160,16 @@ class AutoDacActivity: AppCompatActivity() { manager.requestPermission(device, mPendingIntent) } - fun setupService() { val intent = Intent(this, UsbService::class.java) bindService(intent, connection, Context.BIND_AUTO_CREATE) } - override fun onCreateOptionsMenu(menu: Menu?): Boolean { menuInflater.inflate(R.menu.my_menu, menu) return true } + override fun onDestroy() { super.onDestroy() if (viewModel.isServiceConnected) { diff --git a/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacFragment.kt index 2cc3a6a..2fb36b2 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacFragment.kt @@ -22,7 +22,7 @@ import java.text.SimpleDateFormat import java.util.Calendar import java.util.Locale -class AutoDacFragment: Fragment() { +class AutoDacFragment : Fragment() { private lateinit var binding: FragmentAutoDacBinding private val autoDacViewModel: AutoDacViewModel by activityViewModels() @@ -47,7 +47,6 @@ class AutoDacFragment: Fragment() { observeViewModel() } - private fun initViews() { binding.btnSubmit.visibility = View.GONE listenToHemoCube() @@ -58,7 +57,6 @@ class AutoDacFragment: Fragment() { } } - private fun observeViewModel() { autoDacViewModel.deviceData.observe(viewLifecycleOwner) { @@ -93,6 +91,7 @@ class AutoDacFragment: Fragment() { binding.tvSubtitle4.text = stringData } } + override fun onUsbError(e: Exception?) { autoDacViewModel.progressBar.postValue(false) } @@ -106,6 +105,7 @@ class AutoDacFragment: Fragment() { object : UsbServiceListener { override fun onUsbRead(data: ByteArray?) { } + override fun onUsbError(e: Exception?) { autoDacViewModel.progressBar.postValue(false) } @@ -145,10 +145,20 @@ class AutoDacFragment: Fragment() { if (resultData.contains("#CC")) { autoDacViewModel.addAutoDacDataToDb( DiagnosticsData( - deviceId = sharedPreferences.getString(Constants.DEVICE_ID, "").toString(), - devicePassword = sharedPreferences.getString(Constants.DEVICE_PASSWORD_API, "").toString(), - deviceNatsToken = sharedPreferences.getString(Constants.NATS_TOKEN, "").toString(), - accessToken = sharedPreferences.getString(Constants.ACCESS_TOKEN, "").toString(), + deviceId = sharedPreferences.getString(Constants.DEVICE_ID, "") + .toString(), + devicePassword = sharedPreferences.getString( + Constants.DEVICE_PASSWORD_API, + "" + ).toString(), + deviceNatsToken = sharedPreferences.getString( + Constants.NATS_TOKEN, + "" + ).toString(), + accessToken = sharedPreferences.getString( + Constants.ACCESS_TOKEN, + "" + ).toString(), deviceData = resultData, runTime = SimpleDateFormat( "yyyy-MM-dd HH:mm:ss", Locale.getDefault() diff --git a/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacViewModel.kt index c4ada03..3f32aaa 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacViewModel.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacViewModel.kt @@ -2,12 +2,9 @@ package com.example.hpostesting.presentation.autodac import android.content.Context import android.content.SharedPreferences -import android.util.Log -import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.example.hpostesting.data.NetworkStatusLiveData import com.example.hpostesting.data.dao.HemoCubeDao import com.example.hpostesting.data.model.Response import com.example.hpostesting.data.model.diagnostics.DiagnosticsData @@ -18,10 +15,10 @@ import kotlinx.coroutines.launch import javax.inject.Inject @HiltViewModel -class AutoDacViewModel @Inject constructor( +class AutoDacViewModel @Inject constructor( private val hemoCubeDao: HemoCubeDao, private val repository: Repository, - context: Context + context: Context, ) : ViewModel() { var isServiceConnected = false val progressBar = MutableLiveData(false) diff --git a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt index 7372588..6c2f41d 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt @@ -127,18 +127,19 @@ open class HemocubeBufferCheckActivity : AppCompatActivity() { @SuppressLint("MutableImplicitPendingIntent") private fun requestUserPermission(manager: UsbManager, device: UsbDevice) { - val mPendingIntent: PendingIntent = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { - PendingIntent.getBroadcast( - this, 0, Intent(Constants.HEMOCUBE_USB_PERMISSION), PendingIntent.FLAG_MUTABLE - ) - } else { - PendingIntent.getBroadcast( - this, - 0, - Intent(Constants.HEMOCUBE_USB_PERMISSION), - PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_IMMUTABLE - ) - } + val mPendingIntent: PendingIntent = + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { + PendingIntent.getBroadcast( + this, 0, Intent(Constants.HEMOCUBE_USB_PERMISSION), PendingIntent.FLAG_MUTABLE + ) + } else { + PendingIntent.getBroadcast( + this, + 0, + Intent(Constants.HEMOCUBE_USB_PERMISSION), + PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_IMMUTABLE + ) + } val filter = IntentFilter(Constants.HEMOCUBE_USB_PERMISSION) registerReceiver(broadcastReceiver, filter) @@ -153,7 +154,8 @@ open class HemocubeBufferCheckActivity : AppCompatActivity() { private fun moveToNext() { if (supportFragmentManager.isDestroyed) return - supportFragmentManager.beginTransaction().replace(binding.fghemocube.id, HemoCubeBufferCheckFragment()) + supportFragmentManager.beginTransaction() + .replace(binding.fghemocube.id, HemoCubeBufferCheckFragment()) .commit() } diff --git a/app/src/main/java/com/example/hpostesting/presentation/calibration/CalibrationActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/calibration/CalibrationActivity.kt index f164a64..7304554 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/calibration/CalibrationActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/calibration/CalibrationActivity.kt @@ -31,7 +31,7 @@ import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.databinding.ActivityCalibrationBinding @AndroidEntryPoint -class CalibrationActivity: AppCompatActivity() { +class CalibrationActivity : AppCompatActivity() { private lateinit var binding: ActivityCalibrationBinding val viewModel: CalibrationViewModel by viewModels() private var myMenu: Menu? = null @@ -107,6 +107,7 @@ class CalibrationActivity: AppCompatActivity() { } } } + open fun connectUsb(permissionGranted: Boolean) { Log.d(TAG, "connectUsb() called, permission variable = $permissionGranted") val manager = getSystemService(Context.USB_SERVICE) as UsbManager @@ -136,24 +137,26 @@ class CalibrationActivity: AppCompatActivity() { private fun moveToNext() { if (supportFragmentManager.isDestroyed) return - supportFragmentManager.beginTransaction().replace(binding.fgCalibration.id, CalibrationFragment()) + supportFragmentManager.beginTransaction() + .replace(binding.fgCalibration.id, CalibrationFragment()) .commit() } @SuppressLint("MutableImplicitPendingIntent") private fun requestUserPermission(manager: UsbManager, device: UsbDevice) { - val mPendingIntent: PendingIntent = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { - PendingIntent.getBroadcast( - this, 0, Intent(Constants.HEMOCUBE_USB_PERMISSION), PendingIntent.FLAG_MUTABLE - ) - } else { - PendingIntent.getBroadcast( - this, - 0, - Intent(Constants.HEMOCUBE_USB_PERMISSION), - PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_IMMUTABLE - ) - } + val mPendingIntent: PendingIntent = + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { + PendingIntent.getBroadcast( + this, 0, Intent(Constants.HEMOCUBE_USB_PERMISSION), PendingIntent.FLAG_MUTABLE + ) + } else { + PendingIntent.getBroadcast( + this, + 0, + Intent(Constants.HEMOCUBE_USB_PERMISSION), + PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_IMMUTABLE + ) + } val filter = IntentFilter(Constants.HEMOCUBE_USB_PERMISSION) registerReceiver(broadcastReceiver, filter) @@ -171,6 +174,7 @@ class CalibrationActivity: AppCompatActivity() { menuInflater.inflate(R.menu.my_menu, menu) return true } + override fun onDestroy() { super.onDestroy() if (viewModel.isServiceConnected) { diff --git a/app/src/main/java/com/example/hpostesting/presentation/calibration/CalibrationFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/calibration/CalibrationFragment.kt index cd93680..28d2098 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/calibration/CalibrationFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/calibration/CalibrationFragment.kt @@ -23,7 +23,7 @@ import com.google.firebase.crashlytics.ktx.crashlytics import com.google.firebase.ktx.Firebase import `in`.sminnovations.hpostesting.databinding.FragmentCalibrationBinding -class CalibrationFragment: Fragment() { +class CalibrationFragment : Fragment() { private lateinit var binding: FragmentCalibrationBinding private val calibrationViewModel: CalibrationViewModel by activityViewModels() @@ -226,6 +226,7 @@ class CalibrationFragment: Fragment() { binding.tvSubtitle4.text = stringData } } + override fun onUsbError(e: Exception?) { calibrationViewModel.progressBar.postValue(false) } diff --git a/app/src/main/java/com/example/hpostesting/presentation/calibration/CalibrationViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/calibration/CalibrationViewModel.kt index f3f9007..dddb5a7 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/calibration/CalibrationViewModel.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/calibration/CalibrationViewModel.kt @@ -2,21 +2,12 @@ package com.example.hpostesting.presentation.calibration import android.content.Context import android.content.SharedPreferences -import android.util.Log -import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope -import com.example.hpostesting.data.NetworkStatusLiveData -import com.example.hpostesting.data.constant.Constants -import com.example.hpostesting.data.dao.HemoCubeDao -import com.example.hpostesting.data.model.Response import com.example.hpostesting.data.model.calibration.CalibrationData -import com.example.hpostesting.data.model.diagnostics.DiagnosticsData import com.example.hpostesting.data.model.patient.DeviceData import com.example.hpostesting.data.repository.Repository import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.launch import javax.inject.Inject @HiltViewModel @@ -30,12 +21,8 @@ class CalibrationViewModel @Inject constructor( private val sharedPreference: SharedPreferences = context.getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE) -// private val _networkStatusLiveData = NetworkStatusLiveData(context) val deviceData = MutableLiveData() -// val networkStatusLiveData: LiveData -// get() = _networkStatusLiveData val fireBaseUpload = MutableLiveData() - val savedCalibrationData = MutableLiveData() fun loadSavedCalibrationData(): CalibrationData { val calibrationData = CalibrationData() diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/DashboardActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/DashboardActivity.kt index 3153f95..4bcb859 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/DashboardActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/DashboardActivity.kt @@ -116,7 +116,6 @@ class DashboardActivity : AppCompatActivity(), IDataCollector { } } - val drawerLayout: DrawerLayout = binding.drawerLayout val navView: NavigationView = binding.navView val navController = findNavController(R.id.nav_host_fragment_content_dashboard) diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/GalleryFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/GalleryFragment.kt index 539b6e8..1bef3a3 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/GalleryFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/GalleryFragment.kt @@ -27,6 +27,7 @@ class GalleryFragment : Fragment() { private var _binding: FragmentGalleryBinding? = null private lateinit var sharedPreferences: SharedPreferences private var userid = "" + // This property is only valid between onCreateView and // onDestroyView. private val binding get() = _binding!! @@ -37,7 +38,7 @@ class GalleryFragment : Fragment() { @SuppressLint("SetTextI18n") override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? + inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?, ): View { // val galleryViewModel = // ViewModelProvider(this).get(GalleryViewModel::class.java) diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt index 49359b7..7a5a31c 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt @@ -538,7 +538,6 @@ class HomeFragment : Fragment() { } } - private fun fetchDeviceCredentials() { try { val db = Firebase.firestore diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/SlideshowFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/SlideshowFragment.kt index e6dd549..b93744f 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/SlideshowFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/SlideshowFragment.kt @@ -37,7 +37,8 @@ class SlideshowFragment : PreferenceFragmentCompat() { // App Version Preference val appVersionPreference = Preference(requireContext()) appVersionPreference.title = "App Version" - appVersionPreference.summary = getAppVersion(requireContext()) + " [ " + getAppEnvironment(requireContext()) + " ]" + appVersionPreference.summary = + getAppVersion(requireContext()) + " [ " + getAppEnvironment(requireContext()) + " ]" preferenceScreen.addPreference(languagePreference) preferenceScreen.addPreference(appVersionPreference) diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt index 0294742..2a47765 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt @@ -3,11 +3,11 @@ package com.example.hpostesting.presentation.dashboard.ui import android.content.Context import android.content.SharedPreferences import android.os.Bundle -import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Toast +import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController import com.example.hpostesting.data.constant.Constants import `in`.sminnovations.hpostesting.R @@ -20,7 +20,7 @@ class LoginFragment : Fragment() { private lateinit var sharedPreference: SharedPreferences override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? + savedInstanceState: Bundle?, ): View { _binding = FragmentLoginBinding.inflate(inflater, container, false) sharedPreference = @@ -33,7 +33,6 @@ class LoginFragment : Fragment() { init() } - private fun init() { if (isUserLoggedIn()) { navigateToHomeFragment() diff --git a/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceActivity.kt index 53fd89c..0d27d12 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceActivity.kt @@ -12,13 +12,13 @@ import android.content.SharedPreferences import android.hardware.usb.UsbDevice import android.hardware.usb.UsbDeviceConnection import android.hardware.usb.UsbManager -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.os.IBinder import android.util.Log import android.view.Menu import android.widget.Toast import androidx.activity.viewModels +import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.core.view.get import com.example.hpostesting.data.DataHolder @@ -172,6 +172,7 @@ class DeviceActivity : AppCompatActivity(), DeviceCommunicationHandler { menuInflater.inflate(R.menu.my_menu, menu) return true } + override fun onDestroy() { super.onDestroy() if (deviceViewModel.isServiceConnected) { @@ -182,6 +183,9 @@ class DeviceActivity : AppCompatActivity(), DeviceCommunicationHandler { } override fun sendAndListenToDevice(command: HemoCubeCommands, listener: UsbServiceListener) { - mService.sendAndListenToHemoCube(command = HemoCubeCommands.DEVICE_CONFIGURATION_COMMAND, listener) + mService.sendAndListenToHemoCube( + command = HemoCubeCommands.DEVICE_CONFIGURATION_COMMAND, + listener + ) } } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceFragment.kt index e803484..183efd6 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceFragment.kt @@ -18,8 +18,6 @@ import com.google.firebase.crashlytics.ktx.crashlytics import com.google.firebase.ktx.Firebase import `in`.sminnovations.hpostesting.databinding.FragmentDeviceBinding - - class DeviceFragment : Fragment() { private lateinit var binding: FragmentDeviceBinding private val deviceViewModel: HemoCubeViewModel by activityViewModels() @@ -61,6 +59,7 @@ class DeviceFragment : Fragment() { binding.tvSubtitle4.text = "Device ID: ${stringData}" } } + override fun onUsbError(e: Exception?) { deviceViewModel.progressBar.postValue(false) } @@ -68,7 +67,6 @@ class DeviceFragment : Fragment() { } - private fun listenToHemoCube() { val fullReadOutput = StringBuilder() diff --git a/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceViewModel.kt index 0d2e5d8..b8898b2 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceViewModel.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceViewModel.kt @@ -7,6 +7,7 @@ import com.example.hpostesting.data.model.patient.DeviceData import com.example.hpostesting.data.repository.Repository import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject + @HiltViewModel class DeviceViewModel @Inject constructor( private val hemoCubeDao: HemoCubeDao, @@ -15,12 +16,6 @@ class DeviceViewModel @Inject constructor( var isServiceConnected = false val progressBar = MutableLiveData(false) val messages = MutableLiveData() -// private val _networkStatusLiveData = NetworkStatusLiveData(context) -// val allUserData = hemoCubeDao.getAll() val deviceData = MutableLiveData() -// val networkStatusLiveData: LiveData -// get() = _networkStatusLiveData -val fireBaseUpload = MutableLiveData() - val fireBaseBulkUpload = MutableLiveData() - + val fireBaseUpload = MutableLiveData() } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionActivity.kt index 1e2c5bd..5431804 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionActivity.kt @@ -145,18 +145,19 @@ class DeviceProvisionActivity : AppCompatActivity(), DeviceCommunicationHandler @SuppressLint("MutableImplicitPendingIntent") private fun requestUserPermission(manager: UsbManager, device: UsbDevice) { - val mPendingIntent: PendingIntent = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { - PendingIntent.getBroadcast( - this, 0, Intent(Constants.HEMOCUBE_USB_PERMISSION), PendingIntent.FLAG_MUTABLE - ) - } else { - PendingIntent.getBroadcast( - this, - 0, - Intent(Constants.HEMOCUBE_USB_PERMISSION), - PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_IMMUTABLE - ) - } + val mPendingIntent: PendingIntent = + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { + PendingIntent.getBroadcast( + this, 0, Intent(Constants.HEMOCUBE_USB_PERMISSION), PendingIntent.FLAG_MUTABLE + ) + } else { + PendingIntent.getBroadcast( + this, + 0, + Intent(Constants.HEMOCUBE_USB_PERMISSION), + PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_IMMUTABLE + ) + } val filter = IntentFilter(Constants.HEMOCUBE_USB_PERMISSION) registerReceiver(broadcastReceiver, filter) @@ -185,6 +186,9 @@ class DeviceProvisionActivity : AppCompatActivity(), DeviceCommunicationHandler } override fun sendAndListenToDevice(command: HemoCubeCommands, listener: UsbServiceListener) { - mService.sendAndListenToHemoCube(command = HemoCubeCommands.DEVICE_CONFIGURATION_COMMAND, listener) + mService.sendAndListenToHemoCube( + command = HemoCubeCommands.DEVICE_CONFIGURATION_COMMAND, + listener + ) } } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionFragment.kt index c15bda0..d5f9c26 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionFragment.kt @@ -33,17 +33,19 @@ class DeviceProvisionFragment : Fragment() { private var isOnline = false val deviceData = MutableLiveData() override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? + inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?, ): View { binding = FragmentDeviceProvisionBinding.inflate(inflater, container, false) sharedPreferences = requireContext().getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE) return binding.root } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) initViews() observeViewModel() } + private fun initViews() { listenToHemoCube() getDeviceId() @@ -83,7 +85,8 @@ class DeviceProvisionFragment : Fragment() { response.data.data?.device?.deviceUser?.natsToken ) response.data.data?.device?.deviceUser?.natsToken?.let { - Log.e("natstoken", + Log.e( + "natstoken", it ) } @@ -104,7 +107,8 @@ class DeviceProvisionFragment : Fragment() { ).show() viewModel.addDeviceProvisionDataToDb( DeviceData( - deviceId = sharedPreferences.getString(Constants.DEVICE_ID, "").toString(), + deviceId = sharedPreferences.getString(Constants.DEVICE_ID, "") + .toString(), username = response.data.data?.credentials?.username.toString(), password = response.data.data?.credentials?.password.toString(), deviceProvisionResponse = response.data.data.toString(), @@ -113,9 +117,9 @@ class DeviceProvisionFragment : Fragment() { ) ) // viewModel.addDeviceId(DeviceData(deviceId = sharedPreferences.getString(Constants.DEVICE_ID, "").toString())) - Log.e("idpass",response.toString()) - Log.e("idpass",response.data.data?.credentials?.username.toString()) - Log.e("idpass",deviceProvisionResponse) + Log.e("idpass", response.toString()) + Log.e("idpass", response.data.data?.credentials?.username.toString()) + Log.e("idpass", deviceProvisionResponse) } else { Toast.makeText( activity, @@ -147,7 +151,9 @@ class DeviceProvisionFragment : Fragment() { viewModel.fireBaseUpload.observe(viewLifecycleOwner) { result -> if (result == "Success") { Toast.makeText( - activity, "Device provision successfully uploaded to firebase", Toast.LENGTH_LONG + activity, + "Device provision successfully uploaded to firebase", + Toast.LENGTH_LONG ).show() } } diff --git a/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsActivity.kt index c400280..b839ced 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsActivity.kt @@ -11,13 +11,13 @@ import android.content.ServiceConnection import android.hardware.usb.UsbDevice import android.hardware.usb.UsbDeviceConnection import android.hardware.usb.UsbManager -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.os.IBinder import android.util.Log import android.view.Menu import android.widget.Toast import androidx.activity.viewModels +import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.core.view.get import com.example.hpostesting.data.DataHolder @@ -63,7 +63,6 @@ class DiagnosticsActivity : AppCompatActivity() { } } - private val connection = object : ServiceConnection { override fun onServiceConnected(className: ComponentName, service: IBinder) { val binder = service as UsbService.UsbServiceBinder @@ -108,6 +107,7 @@ class DiagnosticsActivity : AppCompatActivity() { } } } + open fun connectUsb(permissionGranted: Boolean) { Log.d(TAG, "connectUsb() called, permission variable = $permissionGranted") val manager = getSystemService(Context.USB_SERVICE) as UsbManager @@ -133,11 +133,11 @@ class DiagnosticsActivity : AppCompatActivity() { if (!isFinishing) onBackPressed() } - private fun moveToNext() { if (supportFragmentManager.isDestroyed) return - supportFragmentManager.beginTransaction().replace(binding.fgDiagnostics.id, DiagnosticsFragment()) + supportFragmentManager.beginTransaction() + .replace(binding.fgDiagnostics.id, DiagnosticsFragment()) .commit() } @@ -162,17 +162,16 @@ class DiagnosticsActivity : AppCompatActivity() { manager.requestPermission(device, mPendingIntent) } - fun setupService() { val intent = Intent(this, UsbService::class.java) bindService(intent, connection, Context.BIND_AUTO_CREATE) } - override fun onCreateOptionsMenu(menu: Menu?): Boolean { menuInflater.inflate(R.menu.my_menu, menu) return true } + override fun onDestroy() { super.onDestroy() if (viewModel.isServiceConnected) { diff --git a/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsFragment.kt index 2df0132..48ed0ad 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsFragment.kt @@ -68,7 +68,7 @@ class DiagnosticsFragment : Fragment() { messages.observe(viewLifecycleOwner) { binding.tvSubtitle4.text = it - Log.e("diagnostics",binding.tvSubtitle4.text.toString()) + Log.e("diagnostics", binding.tvSubtitle4.text.toString()) } diagnosticsViewModel.fireBaseUpload.observe(viewLifecycleOwner) { result -> @@ -95,6 +95,7 @@ class DiagnosticsFragment : Fragment() { binding.tvSubtitle4.text = stringData } } + override fun onUsbError(e: Exception?) { diagnosticsViewModel.progressBar.postValue(false) } @@ -110,6 +111,7 @@ class DiagnosticsFragment : Fragment() { } + override fun onUsbError(e: Exception?) { diagnosticsViewModel.progressBar.postValue(false) } @@ -122,7 +124,8 @@ class DiagnosticsFragment : Fragment() { startListening.postValue(true) try { - (activity as DiagnosticsActivity).mService.listenToHemoCube(object : UsbServiceListener { + (activity as DiagnosticsActivity).mService.listenToHemoCube(object : + UsbServiceListener { override fun onUsbRead(data: ByteArray?) { data?.let { val stringData = String(it) @@ -146,16 +149,28 @@ class DiagnosticsFragment : Fragment() { } if (resultData.contains("END") || fullReadOutput.contains("END")) { - diagnosticsViewModel.addDiagnosticsDataToDb(DiagnosticsData( - deviceId = sharedPreferences.getString(Constants.DEVICE_ID, "").toString(), - devicePassword = sharedPreferences.getString(Constants.DEVICE_PASSWORD_API, "").toString(), - deviceNatsToken = sharedPreferences.getString(Constants.NATS_TOKEN, "").toString(), - accessToken = sharedPreferences.getString(Constants.ACCESS_TOKEN, "").toString(), - deviceData = resultData, - runTime = SimpleDateFormat( - "yyyy-MM-dd HH:mm:ss", Locale.getDefault() - ).format(Calendar.getInstance().time) - )) + diagnosticsViewModel.addDiagnosticsDataToDb( + DiagnosticsData( + deviceId = sharedPreferences.getString(Constants.DEVICE_ID, "") + .toString(), + devicePassword = sharedPreferences.getString( + Constants.DEVICE_PASSWORD_API, + "" + ).toString(), + deviceNatsToken = sharedPreferences.getString( + Constants.NATS_TOKEN, + "" + ).toString(), + accessToken = sharedPreferences.getString( + Constants.ACCESS_TOKEN, + "" + ).toString(), + deviceData = resultData, + runTime = SimpleDateFormat( + "yyyy-MM-dd HH:mm:ss", Locale.getDefault() + ).format(Calendar.getInstance().time) + ) + ) } // val inputData = mutableListOf() // while (true) { @@ -178,7 +193,6 @@ class DiagnosticsFragment : Fragment() { } } - fun parseData(inputData: List): List> { val pattern = Regex("([A-Z]+)\\s(\\d+)") val parsedData = mutableListOf>() diff --git a/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsViewModel.kt index 91b4c0b..4aff9a6 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsViewModel.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsViewModel.kt @@ -10,9 +10,10 @@ import com.example.hpostesting.data.repository.Repository import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch import javax.inject.Inject + @HiltViewModel class DiagnosticsViewModel @Inject constructor( - private val repository: Repository + private val repository: Repository, ) : ViewModel() { var isServiceConnected = false val progressBar = MutableLiveData(false) diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/DigitalCardActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/DigitalCardActivity.kt index 6e82bf7..c9e3430 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/DigitalCardActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/DigitalCardActivity.kt @@ -1,25 +1,10 @@ package com.example.hpostesting.presentation.hemocube -import android.content.BroadcastReceiver -import android.content.ComponentName import android.content.Context -import android.content.Intent -import android.content.ServiceConnection -import android.hardware.usb.UsbDevice -import android.hardware.usb.UsbDeviceConnection -import android.hardware.usb.UsbManager -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle -import android.os.IBinder -import android.view.Menu -import androidx.activity.viewModels -import com.example.hpostesting.data.DataHolder +import androidx.appcompat.app.AppCompatActivity import com.example.hpostesting.data.constant.LanguageManager -import com.example.hpostesting.presentation.testRight.UsbService -import com.hoho.android.usbserial.driver.UsbSerialDriver -import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.databinding.ActivityDigitalCardBinding -import `in`.sminnovations.hpostesting.databinding.ActivityHemocubeBinding class DigitalCardActivity : AppCompatActivity() { @@ -38,10 +23,10 @@ class DigitalCardActivity : AppCompatActivity() { moveToNext() } - private fun moveToNext() { if (supportFragmentManager.isDestroyed) return - supportFragmentManager.beginTransaction().replace(binding.fghemocube.id, DigitalCardFragment()) + supportFragmentManager.beginTransaction() + .replace(binding.fghemocube.id, DigitalCardFragment()) .commit() } } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/DigitalCardFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/DigitalCardFragment.kt index 7eb68cf..b13d0ea 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/DigitalCardFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/DigitalCardFragment.kt @@ -5,16 +5,14 @@ import android.content.Context import android.content.SharedPreferences import android.os.Bundle import android.util.Log -import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import com.example.hpostesting.data.DataHolder import com.example.hpostesting.data.model.patient.toHemoCubeTestData -import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.databinding.FragmentDigitalCardBinding -import `in`.sminnovations.hpostesting.databinding.FragmentHemoCubeReferenceBinding import java.text.SimpleDateFormat import java.util.Calendar import java.util.Date @@ -61,14 +59,17 @@ class DigitalCardFragment : Fragment() { binding.State.text = "State: ${testDetails?.state}" binding.abhaid.text = "ABHA ID: ${testDetails?.abhaId}" binding.blood.text = "Blood Group: ${testDetails?.bloodGroup}" - binding.sicklecell.text = "Sickle-Cell: ${DataHolder.hemoCubeTestData?.prdClassification.toString()}" + binding.sicklecell.text = + "Sickle-Cell: ${DataHolder.hemoCubeTestData?.prdClassification.toString()}" } // Update the UI with the fetched details val originalDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()) - val originalDate: Date? = originalDateFormat.parse(SimpleDateFormat( - "yyyy-MM-dd HH:mm:ss", Locale.getDefault() - ).format(Calendar.getInstance().time)) + val originalDate: Date? = originalDateFormat.parse( + SimpleDateFormat( + "yyyy-MM-dd HH:mm:ss", Locale.getDefault() + ).format(Calendar.getInstance().time) + ) // Format the parsed date to "mm date, year" val desiredDateFormat = SimpleDateFormat("MMM dd, yyyy", Locale.getDefault()) 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 2878d75..005b0e0 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 @@ -162,11 +162,16 @@ class HemoCubeFragment : Fragment() { } handleReadingFinish() } + is Result.Error -> { binding.btnSubmit.visibility = View.VISIBLE //Remove this line of code while deploying to IOCL it.exception.let { message -> - Toast.makeText(activity, "An error occurred: $message", Toast.LENGTH_LONG) + Toast.makeText( + activity, + "An error occurred: $message", + Toast.LENGTH_LONG + ) .show() } handleReadingFinish() @@ -411,7 +416,8 @@ class HemoCubeFragment : Fragment() { (resultData.contains("#SC") || resultData.contains("#SC1")) && this.testStatusCode < TestStatus.SAMPLE_COMPLETED.code -> { this.testStatusCode = TestStatus.SAMPLE_COMPLETED.code hemoCubeViewModel.messages.postValue( - getString(R.string.sample_completed) + "\n" + getString(R.string.gathering_data)) + getString(R.string.sample_completed) + "\n" + getString(R.string.gathering_data) + ) fetchResult() currentResultData = "" } @@ -519,7 +525,8 @@ class HemoCubeFragment : Fragment() { led1Gain1 = resultLines[5].split(' ')[1].trim().toDoubleOrNull()!! led2Gain1 = resultLines[6].split(' ')[1].trim().toDoubleOrNull()!! led3Gain1 = resultLines[7].split(' ')[1].trim().toDoubleOrNull()!! - led4Gain1 = resultLines[8].split(' ')[1].split('\r')[0].trim().toDoubleOrNull()!! + led4Gain1 = + resultLines[8].split(' ')[1].split('\r')[0].trim().toDoubleOrNull()!! } sendSecondGainCommand() @@ -537,7 +544,8 @@ class HemoCubeFragment : Fragment() { led1Gain2 = resultLines[5].split(' ')[1].trim().toDoubleOrNull()!! led2Gain2 = resultLines[6].split(' ')[1].trim().toDoubleOrNull()!! led3Gain2 = resultLines[7].split(' ')[1].trim().toDoubleOrNull()!! - led4Gain2 = resultLines[8].split(' ')[1].split('\r')[0].trim().toDoubleOrNull()!! + led4Gain2 = + resultLines[8].split(' ')[1].split('\r')[0].trim().toDoubleOrNull()!! } sendForthGainCommand() @@ -555,7 +563,8 @@ class HemoCubeFragment : Fragment() { led1Gain4 = resultLines[5].split(' ')[1].trim().toDoubleOrNull()!! led2Gain4 = resultLines[6].split(' ')[1].trim().toDoubleOrNull()!! led3Gain4 = resultLines[7].split(' ')[1].trim().toDoubleOrNull()!! - led4Gain4 = resultLines[8].split(' ')[1].split('\r')[0].trim().toDoubleOrNull()!! + led4Gain4 = + resultLines[8].split(' ')[1].split('\r')[0].trim().toDoubleOrNull()!! } finishReading() @@ -766,7 +775,7 @@ class HemoCubeFragment : Fragment() { // testState.allErrorMessages += "Error: Invalid Test. Improper buffer reading (high)" + "\n" activity?.runOnUiThread { // binding.errorMessage.text = - getString(R.string.error_improper_buffer_high) + getString(R.string.error_improper_buffer_high) // binding.errorMessage.visibility = View.VISIBLE } } @@ -805,7 +814,7 @@ class HemoCubeFragment : Fragment() { calculatedPredictedDenovixRatio = fittedAbs3.div(fittedAbs1) - val slope = (led4Average - led1Average) / (431-411) + val slope = (led4Average - led1Average) / (431 - 411) val calculatedSlopeRatio = abs(led2Average / slope) val slopeClass = slopeRatioClassification(calculatedSlopeRatio) @@ -875,7 +884,13 @@ class HemoCubeFragment : Fragment() { this.deviceRatioClass = deviceRatioClassification(deviceRatio) this.slopeRatioClass = slopeClass this.classificationResult = deviceRatioClass - hemoCubeViewModel.messages.postValue("${this.classificationResult} \n Device Ratio: ${"%.3f".format(this.deviceRatio)}") + hemoCubeViewModel.messages.postValue( + "${this.classificationResult} \n Device Ratio: ${ + "%.3f".format( + this.deviceRatio + ) + }" + ) if (DataHolder.hemoCubeTestData?.testType == "HB") hemoCubeViewModel.messages.postValue("Hb: $calculatedHb4") this.errorMessages = testState.allErrorMessages @@ -909,7 +924,11 @@ class HemoCubeFragment : Fragment() { } } - fun findResultWithAdditionalMethods(deviceRatio: Double?, deviceRatioClass: String?, slopeRatio: Double?): String { + fun findResultWithAdditionalMethods( + deviceRatio: Double?, + deviceRatioClass: String?, + slopeRatio: Double?, + ): String { try { // hemoCubeViewModel.messages.postValue("post classification checks") if (deviceRatio != null) { diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt index cb3d223..8228afc 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt @@ -74,6 +74,7 @@ open class HemocubeActivity : AppCompatActivity() { viewModel.isServiceConnected = false } } + override fun attachBaseContext(newBase: Context?) { val languageCode = LanguageManager.getSavedLanguage(newBase!!) LanguageManager.setLocale(newBase, languageCode) diff --git a/app/src/main/java/com/example/hpostesting/presentation/jig/JigActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/jig/JigActivity.kt index 53950f0..47405f8 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/jig/JigActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/jig/JigActivity.kt @@ -32,7 +32,7 @@ import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.databinding.ActivityJigBinding @AndroidEntryPoint -class JigActivity: AppCompatActivity(){ +class JigActivity : AppCompatActivity() { private lateinit var binding: ActivityJigBinding val viewModel: JigViewModel by viewModels() private var myMenu: Menu? = null diff --git a/app/src/main/java/com/example/hpostesting/presentation/jig/JigViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/jig/JigViewModel.kt index c51678c..edee95a 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/jig/JigViewModel.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/jig/JigViewModel.kt @@ -15,10 +15,10 @@ import kotlinx.coroutines.launch import javax.inject.Inject @HiltViewModel -class JigViewModel @Inject constructor( +class JigViewModel @Inject constructor( private val hemoCubeDao: HemoCubeDao, private val repository: Repository, - context: Context + context: Context, ) : ViewModel() { var isServiceConnected = false val progressBar = MutableLiveData(false) diff --git a/app/src/main/java/com/example/hpostesting/presentation/trueheme/TrueHemeActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/trueheme/TrueHemeActivity.kt index fb9d678..f9222a5 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/trueheme/TrueHemeActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/trueheme/TrueHemeActivity.kt @@ -76,6 +76,7 @@ class TrueHemeActivity : AppCompatActivity() { viewModel.isServiceConnected = false } } + override fun attachBaseContext(newBase: Context?) { val languageCode = LanguageManager.getSavedLanguage(newBase!!) LanguageManager.setLocale(newBase, languageCode) diff --git a/app/src/main/java/com/example/hpostesting/presentation/trueheme/TrueHemeFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/trueheme/TrueHemeFragment.kt index de444e8..ed85c32 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/trueheme/TrueHemeFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/trueheme/TrueHemeFragment.kt @@ -165,11 +165,16 @@ class TrueHemeFragment : Fragment() { } handleReadingFinish() } + is Result.Error -> { binding.btnSubmit.visibility = View.VISIBLE //Remove this line of code while deploying to IOCL it.exception.let { message -> - Toast.makeText(activity, "An error occurred: $message", Toast.LENGTH_LONG) + Toast.makeText( + activity, + "An error occurred: $message", + Toast.LENGTH_LONG + ) .show() } handleReadingFinish() @@ -410,7 +415,8 @@ class TrueHemeFragment : Fragment() { (resultData.contains("#SC") || resultData.contains("#SC1")) && this.testStatusCode < TestStatus.SAMPLE_COMPLETED.code -> { this.testStatusCode = TestStatus.SAMPLE_COMPLETED.code hemoCubeViewModel.messages.postValue( - getString(R.string.sample_completed) + "\n" + getString(R.string.gathering_data)) + getString(R.string.sample_completed) + "\n" + getString(R.string.gathering_data) + ) fetchResult() currentResultData = "" } @@ -518,7 +524,8 @@ class TrueHemeFragment : Fragment() { led1Gain1 = resultLines[5].split(' ')[1].trim().toDoubleOrNull()!! led2Gain1 = resultLines[6].split(' ')[1].trim().toDoubleOrNull()!! led3Gain1 = resultLines[7].split(' ')[1].trim().toDoubleOrNull()!! - led4Gain1 = resultLines[8].split(' ')[1].split('\r')[0].trim().toDoubleOrNull()!! + led4Gain1 = + resultLines[8].split(' ')[1].split('\r')[0].trim().toDoubleOrNull()!! } sendSecondGainCommand() @@ -536,7 +543,8 @@ class TrueHemeFragment : Fragment() { led1Gain2 = resultLines[5].split(' ')[1].trim().toDoubleOrNull()!! led2Gain2 = resultLines[6].split(' ')[1].trim().toDoubleOrNull()!! led3Gain2 = resultLines[7].split(' ')[1].trim().toDoubleOrNull()!! - led4Gain2 = resultLines[8].split(' ')[1].split('\r')[0].trim().toDoubleOrNull()!! + led4Gain2 = + resultLines[8].split(' ')[1].split('\r')[0].trim().toDoubleOrNull()!! } sendForthGainCommand() @@ -554,7 +562,8 @@ class TrueHemeFragment : Fragment() { led1Gain4 = resultLines[5].split(' ')[1].trim().toDoubleOrNull()!! led2Gain4 = resultLines[6].split(' ')[1].trim().toDoubleOrNull()!! led3Gain4 = resultLines[7].split(' ')[1].trim().toDoubleOrNull()!! - led4Gain4 = resultLines[8].split(' ')[1].split('\r')[0].trim().toDoubleOrNull()!! + led4Gain4 = + resultLines[8].split(' ')[1].split('\r')[0].trim().toDoubleOrNull()!! } finishReading() @@ -828,7 +837,8 @@ class TrueHemeFragment : Fragment() { if ((led1Average < 0.7 || led2Average < 0.7 || led3Average < 0.7 || led4Average < 0.7) && calculatedSlopeRatio > 35.0) { validationError = true activity?.runOnUiThread { - binding.errorMessage.text = "Severely Low Hb. Repeat test with 12 ul in 2 ml Buffer" + binding.errorMessage.text = + "Severely Low Hb. Repeat test with 12 ul in 2 ml Buffer" binding.errorMessage.visibility = View.VISIBLE } } diff --git a/app/src/main/java/com/example/hpostesting/util/PropertyProviderImpl.kt b/app/src/main/java/com/example/hpostesting/util/PropertyProviderImpl.kt index 1a44c13..1289fb5 100644 --- a/app/src/main/java/com/example/hpostesting/util/PropertyProviderImpl.kt +++ b/app/src/main/java/com/example/hpostesting/util/PropertyProviderImpl.kt @@ -5,7 +5,7 @@ import com.example.hpostesting.data.api.PropertyProvider import java.io.InputStream import java.util.Properties -class PropertyProviderImpl (private val assetManager: AssetManager) : PropertyProvider { +class PropertyProviderImpl(private val assetManager: AssetManager) : PropertyProvider { override fun getProperty(key: String): String { val inputStream: InputStream = assetManager.open("app.properties") val properties = Properties()