Compare commits
1 Commits
Diagnostic
...
dev-assura
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c379d68679 |
@@ -1,7 +1,5 @@
|
|||||||
package com.example.hpostesting.data.api
|
package com.example.hpostesting.data.api
|
||||||
|
|
||||||
import com.example.hpostesting.data.model.devicediagnostics.DeviceDiagnosticsRequest
|
|
||||||
import com.example.hpostesting.data.model.devicediagnostics.DeviceDiagnosticsResponse
|
|
||||||
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionRequest
|
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionRequest
|
||||||
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionResponse
|
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionResponse
|
||||||
import com.example.hpostesting.data.model.login.LoginRequest
|
import com.example.hpostesting.data.model.login.LoginRequest
|
||||||
@@ -20,5 +18,4 @@ interface MolbioAuthApi {
|
|||||||
suspend fun login(
|
suspend fun login(
|
||||||
@Body loginRequest: LoginRequest
|
@Body loginRequest: LoginRequest
|
||||||
): LoginResponse
|
): LoginResponse
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,5 @@
|
|||||||
package com.example.hpostesting.data.api
|
package com.example.hpostesting.data.api
|
||||||
|
|
||||||
import com.example.hpostesting.data.model.devicediagnostics.DeviceDiagnosticsRequest
|
|
||||||
import com.example.hpostesting.data.model.devicediagnostics.DeviceDiagnosticsResponse
|
|
||||||
import com.example.hpostesting.data.model.log.UploadLogsResponse
|
import com.example.hpostesting.data.model.log.UploadLogsResponse
|
||||||
import com.example.hpostesting.data.model.molbioresult.MolbioV2ResultRequest
|
import com.example.hpostesting.data.model.molbioresult.MolbioV2ResultRequest
|
||||||
import com.example.hpostesting.data.model.molbioresult.MolbioV2ResultResponse
|
import com.example.hpostesting.data.model.molbioresult.MolbioV2ResultResponse
|
||||||
@@ -45,10 +43,4 @@ interface MolbioResultApi {
|
|||||||
suspend fun uploadLogs(
|
suspend fun uploadLogs(
|
||||||
@Part logFile: MultipartBody.Part
|
@Part logFile: MultipartBody.Part
|
||||||
): UploadLogsResponse
|
): UploadLogsResponse
|
||||||
|
|
||||||
|
|
||||||
@PUT("deviceService/device/uploadDeviceDiagnostics")
|
|
||||||
suspend fun deviceDiagnostics(
|
|
||||||
@Body deviceDiagnosticsRequest: DeviceDiagnosticsRequest
|
|
||||||
): DeviceDiagnosticsResponse
|
|
||||||
}
|
}
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
package com.example.hpostesting.data.model.devicediagnostics
|
|
||||||
|
|
||||||
data class AdditionalDetails(
|
|
||||||
val batteryLevel: String? = "",
|
|
||||||
val batteryCapacity: String? = "",
|
|
||||||
val batteryMaxCapacity: String? = "",
|
|
||||||
val batteryTemperature: String? = "",
|
|
||||||
val batteryVoltage: String? = "",
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
package com.example.hpostesting.data.model.devicediagnostics
|
|
||||||
|
|
||||||
data class DeviceDiagnosticsData(
|
|
||||||
val id: String? = "",
|
|
||||||
val deviceId: String? = "",
|
|
||||||
val additionalDetails: AdditionalDetails?= AdditionalDetails(),
|
|
||||||
val createdBy: String? = "",
|
|
||||||
val updatedBy: String? = "",
|
|
||||||
val updatedAt: String? = "",
|
|
||||||
val createdAt: String? = "",
|
|
||||||
)
|
|
||||||
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.example.hpostesting.data.model.devicediagnostics
|
|
||||||
|
|
||||||
data class DeviceDiagnosticsRequest(
|
|
||||||
val additionalDetails: AdditionalDetails?= AdditionalDetails()
|
|
||||||
)
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
package com.example.hpostesting.data.model.devicediagnostics
|
|
||||||
|
|
||||||
import com.google.gson.annotations.SerializedName
|
|
||||||
|
|
||||||
|
|
||||||
data class DeviceDiagnosticsResponse(
|
|
||||||
@SerializedName("Data")
|
|
||||||
val data: DeviceDiagnosticsData? = DeviceDiagnosticsData(),
|
|
||||||
val message: String? = "",
|
|
||||||
val result: String? = ""
|
|
||||||
)
|
|
||||||
@@ -6,8 +6,6 @@ import com.example.hpostesting.data.api.MolbioAuthApi
|
|||||||
import com.example.hpostesting.data.api.MolbioResultApi
|
import com.example.hpostesting.data.api.MolbioResultApi
|
||||||
import com.example.hpostesting.data.model.PendingUploads
|
import com.example.hpostesting.data.model.PendingUploads
|
||||||
import com.example.hpostesting.data.model.Response
|
import com.example.hpostesting.data.model.Response
|
||||||
import com.example.hpostesting.data.model.devicediagnostics.DeviceDiagnosticsRequest
|
|
||||||
import com.example.hpostesting.data.model.devicediagnostics.DeviceDiagnosticsResponse
|
|
||||||
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionRequest
|
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionRequest
|
||||||
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionResponse
|
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionResponse
|
||||||
import com.example.hpostesting.data.model.diagnostics.DiagnosticsData
|
import com.example.hpostesting.data.model.diagnostics.DiagnosticsData
|
||||||
@@ -80,14 +78,9 @@ class DatabaseRepository @Inject constructor(
|
|||||||
return safeApiCall { molbioResultApi.deviceUpdate(deviceUpdateRequest) }
|
return safeApiCall { molbioResultApi.deviceUpdate(deviceUpdateRequest) }
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun deviceDiagnostics(deviceDiagnosticsRequest: DeviceDiagnosticsRequest): Result<DeviceDiagnosticsResponse> {
|
|
||||||
return safeApiCall { molbioResultApi.deviceDiagnostics(deviceDiagnosticsRequest) }
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun downloadClientCertificate(): Result<ResponseBody> {
|
override suspend fun downloadClientCertificate(): Result<ResponseBody> {
|
||||||
return safeApiCall { molbioResultApi.downloadClientCertificate() }
|
return safeApiCall { molbioResultApi.downloadClientCertificate() }
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun uploadLogs(logFile: MultipartBody.Part): Result<UploadLogsResponse> {
|
override suspend fun uploadLogs(logFile: MultipartBody.Part): Result<UploadLogsResponse> {
|
||||||
return safeApiCall { molbioResultApi.uploadLogs(logFile) }
|
return safeApiCall { molbioResultApi.uploadLogs(logFile) }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,6 @@ package com.example.hpostesting.data.repository
|
|||||||
|
|
||||||
import com.example.hpostesting.data.Result
|
import com.example.hpostesting.data.Result
|
||||||
import com.example.hpostesting.data.model.Response
|
import com.example.hpostesting.data.model.Response
|
||||||
import com.example.hpostesting.data.model.devicediagnostics.DeviceDiagnosticsRequest
|
|
||||||
import com.example.hpostesting.data.model.devicediagnostics.DeviceDiagnosticsResponse
|
|
||||||
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionRequest
|
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionRequest
|
||||||
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionResponse
|
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionResponse
|
||||||
import com.example.hpostesting.data.model.diagnostics.DiagnosticsData
|
import com.example.hpostesting.data.model.diagnostics.DiagnosticsData
|
||||||
@@ -51,7 +49,7 @@ interface Repository {
|
|||||||
suspend fun checkUpdate(checkUpdateRequest: CheckUpdateRequest): Result<CheckUpdateResponse>
|
suspend fun checkUpdate(checkUpdateRequest: CheckUpdateRequest): Result<CheckUpdateResponse>
|
||||||
|
|
||||||
suspend fun deviceUpdate(deviceUpdateRequest: DeviceUpdateRequest): Result<ResponseBody>
|
suspend fun deviceUpdate(deviceUpdateRequest: DeviceUpdateRequest): Result<ResponseBody>
|
||||||
suspend fun deviceDiagnostics(deviceDiagnosticsRequest: DeviceDiagnosticsRequest): Result<DeviceDiagnosticsResponse>
|
|
||||||
suspend fun downloadClientCertificate(): Result<ResponseBody>
|
suspend fun downloadClientCertificate(): Result<ResponseBody>
|
||||||
suspend fun uploadLogs(logFile: MultipartBody.Part): Result<UploadLogsResponse>
|
suspend fun uploadLogs(logFile: MultipartBody.Part): Result<UploadLogsResponse>
|
||||||
}
|
}
|
||||||
@@ -13,6 +13,7 @@ import android.widget.AdapterView
|
|||||||
import android.widget.ArrayAdapter
|
import android.widget.ArrayAdapter
|
||||||
import android.widget.Spinner
|
import android.widget.Spinner
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
|
import androidx.core.view.isVisible
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import com.example.hpostesting.data.DataHolder
|
import com.example.hpostesting.data.DataHolder
|
||||||
import com.example.hpostesting.data.constant.Constants
|
import com.example.hpostesting.data.constant.Constants
|
||||||
@@ -102,9 +103,6 @@ class AssuranceControlsFragment: Fragment() {
|
|||||||
id: Long
|
id: Long
|
||||||
) {
|
) {
|
||||||
val selectedValue: String = volumeOptions[position]
|
val selectedValue: String = volumeOptions[position]
|
||||||
if (!selectedValue.equals("Select volume")) {
|
|
||||||
DataHolder.hemoCubeTestData!!.volume = selectedValue
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onNothingSelected(parent: AdapterView<*>?) {
|
override fun onNothingSelected(parent: AdapterView<*>?) {
|
||||||
@@ -125,13 +123,19 @@ class AssuranceControlsFragment: Fragment() {
|
|||||||
volumeSpinner.setSelection(volumePosition)
|
volumeSpinner.setSelection(volumePosition)
|
||||||
|
|
||||||
binding.btnSubmit.setOnClickListener {
|
binding.btnSubmit.setOnClickListener {
|
||||||
val selectedSolution = DataHolder.hemoCubeTestData!!.solution
|
val selectedSolution = binding.spinnerSolutions.selectedItem.toString()
|
||||||
val selectedVolume = DataHolder.hemoCubeTestData!!.volume
|
val selectedConcentration = binding.spinnerConcentration.selectedItem.toString()
|
||||||
if (selectedSolution == "Select solution" || selectedVolume == "Select volume") {
|
|
||||||
Toast.makeText(requireContext(), "Please select both solution and volume", Toast.LENGTH_SHORT).show()
|
// Check if any of the selections are default values
|
||||||
return@setOnClickListener
|
if (selectedSolution == "Select solution") {
|
||||||
|
Toast.makeText(requireContext(), "Please select a solution", Toast.LENGTH_LONG).show()
|
||||||
|
return@setOnClickListener // Prevent further execution
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (selectedConcentration == "Select concentration") {
|
||||||
|
Toast.makeText(requireContext(), "Please select a concentration", Toast.LENGTH_LONG).show()
|
||||||
|
return@setOnClickListener // Prevent further execution
|
||||||
|
}
|
||||||
DataHolder.hemoCubeTestData!!.quickCapture = true
|
DataHolder.hemoCubeTestData!!.quickCapture = true
|
||||||
val currentUnixTime = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
val currentUnixTime = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
Instant.now().epochSecond
|
Instant.now().epochSecond
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ class HomeFragment : Fragment() {
|
|||||||
thresholds = Constants.BUFFER_INTENSITY_THRESHOLDS[userData.deviceId].toString(),
|
thresholds = Constants.BUFFER_INTENSITY_THRESHOLDS[userData.deviceId].toString(),
|
||||||
interpretation = userData.classificationResult,
|
interpretation = userData.classificationResult,
|
||||||
testId = userData._id,
|
testId = userData._id,
|
||||||
testTime = userData.testTime,
|
testTime = "2024-02-08 16:33:56",//userData.testTime,
|
||||||
collectionTime = "2024-02-08 16:33:56",//userData.testTime,
|
collectionTime = "2024-02-08 16:33:56",//userData.testTime,
|
||||||
expiryTime = "2024-02-08 16:33:56"//userData.testTime,
|
expiryTime = "2024-02-08 16:33:56"//userData.testTime,
|
||||||
)
|
)
|
||||||
@@ -817,7 +817,7 @@ class HomeFragment : Fragment() {
|
|||||||
thresholds = Constants.BUFFER_INTENSITY_THRESHOLDS[userData.deviceId].toString(),
|
thresholds = Constants.BUFFER_INTENSITY_THRESHOLDS[userData.deviceId].toString(),
|
||||||
interpretation = userData.classificationResult,
|
interpretation = userData.classificationResult,
|
||||||
testId = userData._id,
|
testId = userData._id,
|
||||||
testTime = userData.testTime,
|
testTime = "2024-02-08 16:33:56",//userData.testTime,
|
||||||
collectionTime = "2024-02-08 16:33:56",//userData.testTime,
|
collectionTime = "2024-02-08 16:33:56",//userData.testTime,
|
||||||
expiryTime = "2024-02-08 16:33:56",//userData.testTime,
|
expiryTime = "2024-02-08 16:33:56",//userData.testTime,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package com.example.hpostesting.presentation.diagnostics
|
package com.example.hpostesting.presentation.diagnostics
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
|
||||||
import android.content.IntentFilter
|
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
@@ -13,12 +11,8 @@ import android.widget.Toast
|
|||||||
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 com.example.hpostesting.data.Result
|
|
||||||
import com.example.hpostesting.data.Result.Success
|
|
||||||
import com.example.hpostesting.data.constant.Constants
|
import com.example.hpostesting.data.constant.Constants
|
||||||
import com.example.hpostesting.data.constant.HemoCubeCommands
|
import com.example.hpostesting.data.constant.HemoCubeCommands
|
||||||
import com.example.hpostesting.data.model.devicediagnostics.AdditionalDetails
|
|
||||||
import com.example.hpostesting.data.model.devicediagnostics.DeviceDiagnosticsRequest
|
|
||||||
import com.example.hpostesting.data.model.diagnostics.DiagnosticsData
|
import com.example.hpostesting.data.model.diagnostics.DiagnosticsData
|
||||||
import com.example.hpostesting.data.model.patient.DeviceData
|
import com.example.hpostesting.data.model.patient.DeviceData
|
||||||
import com.example.hpostesting.presentation.UsbServiceListener
|
import com.example.hpostesting.presentation.UsbServiceListener
|
||||||
@@ -38,10 +32,7 @@ class DiagnosticsFragment : Fragment() {
|
|||||||
private var resultData: String = ""
|
private var resultData: String = ""
|
||||||
private val messages = MutableLiveData<String>()
|
private val messages = MutableLiveData<String>()
|
||||||
private var startListening = MutableLiveData(false)
|
private var startListening = MutableLiveData(false)
|
||||||
private val batteryStatus: Intent? =
|
|
||||||
IntentFilter(Intent.ACTION_BATTERY_CHANGED).let { ifilter ->
|
|
||||||
context?.registerReceiver(null, ifilter)
|
|
||||||
}
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?,
|
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?,
|
||||||
): View {
|
): View {
|
||||||
@@ -65,25 +56,7 @@ class DiagnosticsFragment : Fragment() {
|
|||||||
binding.btnSubmit.setOnClickListener {
|
binding.btnSubmit.setOnClickListener {
|
||||||
binding.btnSubmit.visibility = View.GONE
|
binding.btnSubmit.visibility = View.GONE
|
||||||
runDeviceDiagnostics()
|
runDeviceDiagnostics()
|
||||||
val batteryLevel = diagnosticsViewModel.getBatteryLevel().toString()
|
|
||||||
val batteryCapacity = context?.let { diagnosticsViewModel.getBatteryCapacity(it).toString() }
|
|
||||||
val batteryMaxCapacity = context?.let { diagnosticsViewModel.getBatteryMaxCapacity(it).toString() }
|
|
||||||
val batteryTemperature = diagnosticsViewModel.getBatteryTemperature().toString()
|
|
||||||
val batteryVoltage = context?.let { diagnosticsViewModel.getBatteryVoltage(it).toString() }
|
|
||||||
|
|
||||||
val additionalDetails = AdditionalDetails(
|
|
||||||
batteryLevel = batteryLevel,
|
|
||||||
batteryCapacity = batteryCapacity!!,
|
|
||||||
batteryMaxCapacity = batteryMaxCapacity!!,
|
|
||||||
batteryTemperature = batteryTemperature,
|
|
||||||
batteryVoltage = batteryVoltage!!
|
|
||||||
)
|
|
||||||
diagnosticsViewModel.deviceDiagnostics(
|
|
||||||
DeviceDiagnosticsRequest(additionalDetails = additionalDetails)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -108,42 +81,6 @@ class DiagnosticsFragment : Fragment() {
|
|||||||
|
|
||||||
binding.progressBar.visibility = View.GONE
|
binding.progressBar.visibility = View.GONE
|
||||||
}
|
}
|
||||||
|
|
||||||
diagnosticsViewModel.deviceDiagnosticsResponse.observe(viewLifecycleOwner) { response ->
|
|
||||||
when (response) {
|
|
||||||
is Success -> {
|
|
||||||
if (response.data.result == "Success") {
|
|
||||||
Toast.makeText(
|
|
||||||
activity, response.data.message ?: "Device diagnostics uploaded successfully", Toast.LENGTH_LONG
|
|
||||||
).show()
|
|
||||||
|
|
||||||
response.data.data?.let { diagnosticsData ->
|
|
||||||
|
|
||||||
val batteryLevel = diagnosticsData.additionalDetails?.batteryLevel
|
|
||||||
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Toast.makeText(
|
|
||||||
activity,
|
|
||||||
"${response.data.message}",
|
|
||||||
Toast.LENGTH_LONG
|
|
||||||
).show()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
is Result.Error -> {
|
|
||||||
// Handle the error scenario
|
|
||||||
Toast.makeText(
|
|
||||||
activity,
|
|
||||||
"An error occurred: ${response.exception.message}",
|
|
||||||
Toast.LENGTH_LONG
|
|
||||||
).show()
|
|
||||||
}
|
|
||||||
is Result.Loading -> {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getDeviceId() {
|
private fun getDeviceId() {
|
||||||
@@ -179,7 +116,6 @@ class DiagnosticsFragment : Fragment() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun listenToHemoCube() {
|
private fun listenToHemoCube() {
|
||||||
|
|
||||||
val fullReadOutput = StringBuilder()
|
val fullReadOutput = StringBuilder()
|
||||||
|
|||||||
@@ -1,18 +1,9 @@
|
|||||||
package com.example.hpostesting.presentation.diagnostics
|
package com.example.hpostesting.presentation.diagnostics
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.Intent
|
|
||||||
import android.content.IntentFilter
|
|
||||||
import android.os.BatteryManager
|
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import com.example.hpostesting.data.Result
|
|
||||||
import com.example.hpostesting.data.model.Response
|
import com.example.hpostesting.data.model.Response
|
||||||
import com.example.hpostesting.data.model.devicediagnostics.DeviceDiagnosticsRequest
|
|
||||||
import com.example.hpostesting.data.model.devicediagnostics.DeviceDiagnosticsResponse
|
|
||||||
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionRequest
|
|
||||||
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionResponse
|
|
||||||
import com.example.hpostesting.data.model.diagnostics.DiagnosticsData
|
import com.example.hpostesting.data.model.diagnostics.DiagnosticsData
|
||||||
import com.example.hpostesting.data.model.patient.DeviceData
|
import com.example.hpostesting.data.model.patient.DeviceData
|
||||||
import com.example.hpostesting.data.repository.Repository
|
import com.example.hpostesting.data.repository.Repository
|
||||||
@@ -21,8 +12,7 @@ import kotlinx.coroutines.launch
|
|||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class DiagnosticsViewModel @Inject constructor(
|
class DiagnosticsViewModel @Inject constructor(
|
||||||
private val respository: Repository,
|
private val repository: Repository
|
||||||
context: Context,
|
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
var isServiceConnected = false
|
var isServiceConnected = false
|
||||||
val progressBar = MutableLiveData(false)
|
val progressBar = MutableLiveData(false)
|
||||||
@@ -30,15 +20,11 @@ class DiagnosticsViewModel @Inject constructor(
|
|||||||
|
|
||||||
val deviceData = MutableLiveData<DeviceData?>()
|
val deviceData = MutableLiveData<DeviceData?>()
|
||||||
val fireBaseUpload = MutableLiveData<String>()
|
val fireBaseUpload = MutableLiveData<String>()
|
||||||
val deviceDiagnosticsResponse = MutableLiveData<com.example.hpostesting.data.Result<DeviceDiagnosticsResponse>>()
|
|
||||||
private val batteryStatus: Intent? =
|
|
||||||
IntentFilter(Intent.ACTION_BATTERY_CHANGED).let { ifilter ->
|
|
||||||
context.registerReceiver(null, ifilter)
|
|
||||||
}
|
|
||||||
fun addDiagnosticsDataToDb(data: DiagnosticsData) {
|
fun addDiagnosticsDataToDb(data: DiagnosticsData) {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
try {
|
try {
|
||||||
when (val response = respository.addDiagnostics(data)) {
|
when (val response = repository.addDiagnostics(data)) {
|
||||||
is Response.Success -> {
|
is Response.Success -> {
|
||||||
// Log.i("Testdb", "Data uploaded to Firestore successfully")
|
// Log.i("Testdb", "Data uploaded to Firestore successfully")
|
||||||
fireBaseUpload.postValue("Success")
|
fireBaseUpload.postValue("Success")
|
||||||
@@ -57,81 +43,4 @@ class DiagnosticsViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun deviceDiagnostics(deviceDiagnosticsRequest: DeviceDiagnosticsRequest) = viewModelScope.launch {
|
|
||||||
deviceDiagnosticsResponse.postValue(Result.Loading())
|
|
||||||
respository.deviceDiagnostics(deviceDiagnosticsRequest).let {
|
|
||||||
deviceDiagnosticsResponse.postValue(it)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fun getBatteryLevel(): Float? {
|
|
||||||
val batteryPct: Float? = batteryStatus?.let { intent ->
|
|
||||||
val level: Int =
|
|
||||||
intent.getIntExtra(
|
|
||||||
BatteryManager.EXTRA_LEVEL,
|
|
||||||
-1
|
|
||||||
)
|
|
||||||
val scale: Int =
|
|
||||||
intent.getIntExtra(
|
|
||||||
BatteryManager.EXTRA_SCALE,
|
|
||||||
-1
|
|
||||||
)
|
|
||||||
level * 100 / scale.toFloat()
|
|
||||||
}
|
|
||||||
|
|
||||||
return batteryPct
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getBatteryTemperature(): Float? {
|
|
||||||
val batteryTemp: Float? = batteryStatus?.let { intent ->
|
|
||||||
val temperature = intent.getIntExtra(
|
|
||||||
BatteryManager.EXTRA_TEMPERATURE,
|
|
||||||
0
|
|
||||||
)
|
|
||||||
temperature.toFloat() / 10
|
|
||||||
}
|
|
||||||
|
|
||||||
return batteryTemp
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getBatteryVoltage(context: Context): Float {
|
|
||||||
val batteryIntent =
|
|
||||||
context.registerReceiver(
|
|
||||||
null,
|
|
||||||
IntentFilter(Intent.ACTION_BATTERY_CHANGED)
|
|
||||||
)
|
|
||||||
val voltage = batteryIntent?.getIntExtra(
|
|
||||||
BatteryManager.EXTRA_VOLTAGE,
|
|
||||||
0
|
|
||||||
) ?: 0
|
|
||||||
|
|
||||||
// milli-volts to volts
|
|
||||||
return voltage.toFloat() / 1000
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fun getBatteryCapacity(context: Context): Int {
|
|
||||||
val batteryManager =
|
|
||||||
context.getSystemService(Context.BATTERY_SERVICE) as BatteryManager
|
|
||||||
val currentCapacity =
|
|
||||||
batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER)
|
|
||||||
|
|
||||||
return currentCapacity
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getBatteryMaxCapacity(context: Context): Float {
|
|
||||||
val batteryManager = context.getSystemService(Context.BATTERY_SERVICE) as BatteryManager
|
|
||||||
val designCapacity =
|
|
||||||
batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY)
|
|
||||||
val currentCapacity =
|
|
||||||
batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER)
|
|
||||||
|
|
||||||
// Calculate the estimated maximum battery capacity in mAh
|
|
||||||
val maxCapacity = currentCapacity.toFloat() / designCapacity.toFloat() * 100
|
|
||||||
|
|
||||||
return maxCapacity
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user