/
USBReceiver.kt
71 lines (53 loc) · 1.95 KB
/
USBReceiver.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package com.pavelrekun.rekado.services.usb
import android.hardware.usb.UsbDevice
import android.hardware.usb.UsbManager
import android.os.Bundle
import com.pavelrekun.rekado.base.BaseActivity
import com.pavelrekun.rekado.services.eventbus.Events
import com.pavelrekun.rekado.services.dialogs.Dialogs
import com.pavelrekun.rekado.services.logs.Logger
import com.pavelrekun.rekado.services.payloads.PayloadLoader
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
class USBReceiver : BaseActivity() {
companion object {
private const val APX_VID = 0x0955
private const val APX_PID = 0x7321
}
private var vid: Int = 0
private var pid: Int = 0
private lateinit var device: UsbDevice
private var usbHandler: USBHandler? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (intent.action == UsbManager.ACTION_USB_DEVICE_ATTACHED) {
device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE)
vid = device.vendorId
pid = device.productId
Logger.log(1, "USB device connected: ${device.deviceName}")
Dialogs.showPayloadsDialog(this)
}
}
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
fun onEvent(event: Events.PayloadSelected) {
if (vid == APX_VID && pid == APX_PID) {
usbHandler = PayloadLoader()
}
usbHandler?.handleDevice(device)
Logger.log(1, "Payload loading finished for device: " + device.deviceName)
finish()
}
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
fun onEvent(event: Events.PayloadNotSelected) {
finish()
}
override fun onStart() {
super.onStart()
EventBus.getDefault().register(this)
}
override fun onStop() {
super.onStop()
EventBus.getDefault().unregister(this)
}
}