diff --git a/app/src/main/java/com/example/hpos/data/DataHolder.kt b/app/src/main/java/com/example/hpos/data/DataHolder.kt index 00ef732..1406241 100644 --- a/app/src/main/java/com/example/hpos/data/DataHolder.kt +++ b/app/src/main/java/com/example/hpos/data/DataHolder.kt @@ -5,7 +5,8 @@ import com.example.hpos.data.model.TestRightDeviceConstants object DataHolder { // var usbConnected: Boolean = false - val usbConnected = MutableLiveData(false) +// val usbConnected = MutableLiveData(false) + val usbConnected = MutableLiveData(true) var isStoragePermissionGranted = false var isAppFolderCreated = false diff --git a/app/src/main/java/com/example/hpos/data/constant/Constants.kt b/app/src/main/java/com/example/hpos/data/constant/Constants.kt index a21025c..dd70cb8 100644 --- a/app/src/main/java/com/example/hpos/data/constant/Constants.kt +++ b/app/src/main/java/com/example/hpos/data/constant/Constants.kt @@ -9,10 +9,13 @@ object Constants { const val TEST_RIGHT_TOTAL_PIXEL = 3694 // const val TEST_RIGHT_TOTAL_PIXEL = 12 - const val MAXIMUM_TEST_ALLOWED_BEFORE_REFERENCE = 1 + const val MAXIMUM_TEST_ALLOWED_BEFORE_REFERENCE = 10 const val RANGE_IN_RESULT_CALCULATIONS = 10 const val WAVELENGTH_OF_INTEREST_ONE = 427 const val WAVELENGTH_OF_INTEREST_TWO = 555 + + const val DEVICE_PRODUCT_ID = 24597 + const val DEVICE_VENDOR_ID = 1027 } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpos/presentation/MainActivity.kt b/app/src/main/java/com/example/hpos/presentation/MainActivity.kt index 6fb3acb..79ceba0 100644 --- a/app/src/main/java/com/example/hpos/presentation/MainActivity.kt +++ b/app/src/main/java/com/example/hpos/presentation/MainActivity.kt @@ -4,8 +4,10 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter +import android.hardware.usb.UsbDevice import android.hardware.usb.UsbManager import android.os.Bundle +import android.util.Log import android.view.Gravity import android.view.Menu import android.widget.Toast @@ -15,9 +17,11 @@ import androidx.core.view.get import androidx.lifecycle.ViewModelProvider import com.example.hpos.R import com.example.hpos.data.DataHolder +import com.example.hpos.data.constant.Constants import com.example.hpos.databinding.ActivityMainBinding import com.example.hpos.presentation.testRight.TestRightActivity import com.example.hpos.util.MyViewModelFactory +import com.hoho.android.usbserial.driver.UsbSerialProber class MainActivity : AppCompatActivity() @@ -64,6 +68,21 @@ class MainActivity : AppCompatActivity() registerReceiver(mUsbReceiver, filter) } + 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(TAG, "Device matched -> product = ${availableDrivers[0].device.productId}, vendor = ${availableDrivers[0].device.vendorId}") + DataHolder.usbConnected.value = true + } else if (availableDrivers.isNotEmpty()) { + Log.d(TAG, "Device NOT matched -> product = ${availableDrivers[0].device.productId}, vendor = ${availableDrivers[0].device.vendorId}") + Toast.makeText(this, "Device Not Compatible", Toast.LENGTH_SHORT).show() + DataHolder.usbConnected.value = false + } else { + Log.d(TAG, "Device NOT Connected") + DataHolder.usbConnected.value = false + } + } + private fun setupListeners() { binding.cvItem1.setOnClickListener { @@ -76,11 +95,12 @@ class MainActivity : AppCompatActivity() } DataHolder.usbConnected.observe(this){ +// Log.d(TAG, "usbConnected observer called with value -> $it") if (it){ myMenu?.get(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_usb_24) } else { +// Log.d(TAG, "into no block -> $it") myMenu?.get(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_usb_off_24) - Toast.makeText(this, "USB NOT CONNECTED", Toast.LENGTH_SHORT).show() } } } @@ -88,7 +108,7 @@ class MainActivity : AppCompatActivity() override fun onCreateOptionsMenu(menu: Menu?): Boolean { menuInflater.inflate(R.menu.my_menu, menu) myMenu = menu - DataHolder.usbConnected.value = DataHolder.usbConnected.value + checkAndUpdateUsbConnection() return true } diff --git a/app/src/main/java/com/example/hpos/presentation/testRight/TestRightActivity.kt b/app/src/main/java/com/example/hpos/presentation/testRight/TestRightActivity.kt index 58c2dcb..ddddda1 100644 --- a/app/src/main/java/com/example/hpos/presentation/testRight/TestRightActivity.kt +++ b/app/src/main/java/com/example/hpos/presentation/testRight/TestRightActivity.kt @@ -88,12 +88,13 @@ class TestRightActivity : AppCompatActivity() { private fun setupListener() { DataHolder.usbConnected.observe(this){ + Log.d("USB OBSERVE", "testrightactivity called -> $it") if (it){ myMenu?.get(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_usb_24) } else { myMenu?.get(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_usb_off_24) // val myToast = Toast.makeText(this, "USB is Detached", Toast.LENGTH_SHORT) - Toast.makeText(this, "USB is Detached", Toast.LENGTH_SHORT).show() + Toast.makeText(this, "Device is Disconnected", Toast.LENGTH_SHORT).show() } } } @@ -112,6 +113,13 @@ class TestRightActivity : AppCompatActivity() { onUsbError("No Device is Connected") } 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 + } + mConnection = manager.openDevice(mDriver.device) if (mConnection == null) {