From 8151d6da6115910de7c19f1fb4659f47ab6b1df0 Mon Sep 17 00:00:00 2001 From: "smileomi18@gmail.com" Date: Wed, 19 Jul 2023 16:28:31 +0530 Subject: [PATCH] usb --- .../example/hpostesting/data/DataHolder.kt | 1 + .../hpostesting/data/constant/Constants.kt | 4 ++ .../hpostesting/presentation/MainActivity.kt | 30 +++++++++- .../testRight/TestRightActivity.kt | 11 ++-- .../testRight/TestRightExpReference.kt | 60 +++++++++++++++++-- 5 files changed, 94 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/example/hpostesting/data/DataHolder.kt b/app/src/main/java/com/example/hpostesting/data/DataHolder.kt index 1ff8020..85a67fd 100644 --- a/app/src/main/java/com/example/hpostesting/data/DataHolder.kt +++ b/app/src/main/java/com/example/hpostesting/data/DataHolder.kt @@ -21,6 +21,7 @@ object DataHolder { var deviceConstant: TestRightDeviceConstants? = null var deviceSerialNumber: String = "ABCD" + val deviceType = MutableLiveData() /* Contains wavelength -> pixel no.*/ val wavelengthToPixelArray = ArrayList() diff --git a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt index 3d5308f..7d1ca63 100644 --- a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt +++ b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt @@ -22,7 +22,11 @@ object Constants { const val MAX_WAVELENGTH_RANGE_TO_RECORD = 750 const val DEVICE_PRODUCT_ID = 24597 + const val DEVICE_TYPE_HOMOCUBE = "HOMOCUBE" + const val DEVICE_VENDOR_ID = 1027 + const val HOMO_CUBE_ID = 29987 + const val VENDOR_ID = 6790 const val ERROR_NORMAL = 400 const val ERROR_CRITICAL = 401 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 11a9476..c968ccd 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt @@ -11,6 +11,7 @@ import android.location.Location import android.os.Bundle import android.util.Log import android.view.Menu +import android.view.View import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat @@ -75,12 +76,38 @@ class MainActivity : AppCompatActivity() { addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED) } registerReceiver(mUsbReceiver, filter) +// DataHolder.deviceType.observe(this) { deviceType -> +// when (deviceType) { +// Constants.DEVICE_TYPE_HOMOCUBE -> { +// binding.cvItem1.visibility = View.VISIBLE +// binding.cvItem3.visibility = View.VISIBLE +// binding.cvItem2.visibility = View.GONE +// binding.cvItem4.visibility = View.GONE +// Toast.makeText(this, "HomoCube Connected", Toast.LENGTH_SHORT).show() +// DataHolder.usbConnected.value = true +// DataHolder.deviceType.postValue(Constants.DEVICE_TYPE_HOMOCUBE) +// } +// "Test" -> { +// +// } +// } +// } } private fun checkAndUpdateUsbConnection() { val availableDrivers = UsbSerialProber.getDefaultProber() .findAllDrivers(getSystemService(Context.USB_SERVICE) as UsbManager) - if (availableDrivers.isNotEmpty() && availableDrivers[0].device.productId == Constants.DEVICE_PRODUCT_ID && availableDrivers[0].device.vendorId == Constants.DEVICE_VENDOR_ID) { +// Log.d("mariya", availableDrivers[0].device.toString()) + if (availableDrivers.isNotEmpty() && availableDrivers[0].device.productId == Constants.HOMO_CUBE_ID && availableDrivers[0].device.vendorId == Constants.VENDOR_ID) { + Log.e("HomoCube", "product1") + binding.cvItem1.visibility = View.VISIBLE + binding.cvItem3.visibility = View.VISIBLE + binding.cvItem2.visibility = View.GONE + binding.cvItem4.visibility = View.GONE + Toast.makeText(this, "HomoCube Connected", Toast.LENGTH_SHORT).show() + DataHolder.usbConnected.value = true + DataHolder.deviceType.postValue(Constants.DEVICE_TYPE_HOMOCUBE) + }else if (availableDrivers.isNotEmpty() && availableDrivers[0].device.productId == Constants.DEVICE_PRODUCT_ID && availableDrivers[0].device.vendorId == Constants.DEVICE_VENDOR_ID) { Log.d(TAG, "Device matched -> product = ${availableDrivers[0].device.productId}, vendor = ${availableDrivers[0].device.vendorId}") DataHolder.usbConnected.value = true } else if (availableDrivers.isNotEmpty()) { @@ -89,6 +116,7 @@ class MainActivity : AppCompatActivity() { DataHolder.usbConnected.value = false } else { Log.d(TAG, "Device NOT Connected") + Toast.makeText(this, "Device Not Connected", Toast.LENGTH_SHORT).show() DataHolder.usbConnected.value = false } } diff --git a/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightActivity.kt index a647fa4..d59cf5f 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightActivity.kt @@ -124,11 +124,12 @@ class TestRightActivity : AppCompatActivity() { } else { mDriver = availableDrivers[0] - if (mDriver.device.productId != Constants.DEVICE_PRODUCT_ID || mDriver.device.vendorId != Constants.DEVICE_VENDOR_ID){ - Toast.makeText(this, "Device Connected is not supported", Toast.LENGTH_SHORT).show() - onBackPressed() - return - } +// if (mDriver.device.productId != Constants.DEVICE_PRODUCT_ID || mDriver.device.vendorId != Constants.DEVICE_VENDOR_ID +// || (mDriver.device.productId != Constants.HOMO_CUBE_ID || mDriver.device.vendorId != Constants.VENDOR_ID)){ +// Toast.makeText(this, "Device Connected is not supported", Toast.LENGTH_SHORT).show() +// onBackPressed() +// return +// } viewModel.testDetails?.deviceId = mDriver.device.serialNumber.toString() DataHolder.deviceSerialNumber = mDriver.device.serialNumber.toString() diff --git a/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightExpReference.kt b/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightExpReference.kt index f41bcca..4c20c6d 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightExpReference.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightExpReference.kt @@ -48,13 +48,18 @@ class TestRightExpReference : Fragment() { // // DataHolder.sampleReadCounter <= Constants.MAXIMUM_TEST_ALLOWED_BEFORE_REFERENCE - if (DataHolder.deviceConstant == null) { - viewModel.progressBar.postValue(true) - Handler(Looper.getMainLooper()).postDelayed( - { sendCmdToFetchDeviceConstant() }, - Constants.DELAY_BETWEEN_COMMANDS - ) + Log.e("mariya", "onViewCreated 1") + if (DataHolder.deviceType.equals(Constants.DEVICE_TYPE_HOMOCUBE) ) { + Log.e("mariya", "onViewCreated if") + fetchHemoCubeResult() } +// if (DataHolder.deviceConstant == null) { +// viewModel.progressBar.postValue(true) +// Handler(Looper.getMainLooper()).postDelayed( +// { sendCmdToFetchDeviceConstant() }, +// Constants.DELAY_BETWEEN_COMMANDS +// ) +// } } private fun setupListeners() { @@ -112,6 +117,49 @@ class TestRightExpReference : Fragment() { // } } + // private fun sendCmdToFetchDeviceConstant(recursive: Boolean) { + private fun fetchHemoCubeResult() { + Log.d("mariya", "fetchHemoCubeResult() called") + + viewModel.progressBar.postValue(true) + val fullReadOutput = StringBuilder() + + (activity as TestRightActivity).mService.eventDrivenWrite(TestRightCommands.read, + object : UsbServiceListener { + override fun onUsbRead(data: ByteArray?) { + Log.d("mariya", data.toString()) + data?.let { + val stringData = String(it) + fullReadOutput.append(stringData) + Log.d(TAG, "fullReadOutput = $fullReadOutput") + + if (stringData.contains("OK", true)) { + Log.d( + TAG, + "onUsbRead() called in sendCmdToFetchDeviceConstant() found OK" + ) + viewModel.mapDeviceConstants(fullReadOutput.toString()) + viewModel.progressBar.postValue(false) + } else if (stringData.contains("FINE", true)) { + Log.d(TAG, "results = FINE") + viewModel.progressBar.postValue(false) + + viewModel.errorTriggered.postValue(ErrorMessage("Please Try Again!!", Constants.ERROR_CRITICAL)) + + } + } + } + + override fun onUsbError(e: Exception?) { + Log.e(TAG, "onUsbIoError() called in sendCmdToFetchDeviceConstant() -> $e") + viewModel.errorTriggered.postValue(ErrorMessage("Please Try Again this step", Constants.ERROR_NORMAL)) + + viewModel.progressBar.postValue(false) + } + }) + } + + // private fun sendCmdToFetchDeviceConstant(recursive: Boolean) { private fun sendCmdToFetchDeviceConstant() { Log.d(TAG, "sendCmdToFetchDeviceConstant() called")