mirror of
https://github.com/priyanshujain/sanderling.git
synced 2026-10-02 19:17:10 +00:00
feat(sidecar): reach USB devices via the adb server by serial
This commit is contained in:
1 parent
90224dfd06
commit
da6612890f
2 files changed
+37
-6
No files matched your search
@@ -630,12 +630,24 @@ class MaestroDriverBackend(private val serial: String?) : DriverBackend {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun buildDadb(serial: String?): dadb.Dadb {
|
internal sealed interface DadbTarget {
|
||||||
return if (serial == null) {
|
data class Tcp(val host: String, val port: Int) : DadbTarget
|
||||||
dadb.Dadb.create("localhost", 5555)
|
data class Server(val serial: String) : DadbTarget
|
||||||
} else {
|
}
|
||||||
dadb.Dadb.create(serial.substringBefore(":"), serial.substringAfter(":").toIntOrNull() ?: 5555)
|
|
||||||
}
|
// A host:port serial connects to adbd directly; any other serial is reached
|
||||||
|
// through the adb server, the only path to a USB-attached device. A null serial
|
||||||
|
// keeps the emulator loopback default.
|
||||||
|
internal fun dadbTargetFor(serial: String?): DadbTarget {
|
||||||
|
if (serial == null) return DadbTarget.Tcp("localhost", 5555)
|
||||||
|
val colon = serial.lastIndexOf(':')
|
||||||
|
val port = if (colon >= 0) serial.substring(colon + 1).toIntOrNull() else null
|
||||||
|
return if (port != null) DadbTarget.Tcp(serial.substring(0, colon), port) else DadbTarget.Server(serial)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun buildDadb(serial: String?): dadb.Dadb = when (val target = dadbTargetFor(serial)) {
|
||||||
|
is DadbTarget.Tcp -> dadb.Dadb.create(target.host, target.port)
|
||||||
|
is DadbTarget.Server -> dadb.adbserver.AdbServer.createDadb("localhost", 5037, "host:transport:${target.serial}")
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun findBoundsBySelector(root: maestro.TreeNode, selector: String): IntArray? {
|
internal fun findBoundsBySelector(root: maestro.TreeNode, selector: String): IntArray? {
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package dev.sanderling.sidecar
|
||||||
|
|
||||||
|
import org.junit.Test
|
||||||
|
import kotlin.test.assertEquals
|
||||||
|
|
||||||
|
class DadbTargetTest {
|
||||||
|
|
||||||
|
@Test fun nullSerialDefaultsToEmulatorLoopback() {
|
||||||
|
assertEquals(DadbTarget.Tcp("localhost", 5555), dadbTargetFor(null))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test fun hostPortSerialConnectsDirectly() {
|
||||||
|
assertEquals(DadbTarget.Tcp("192.168.1.243", 5555), dadbTargetFor("192.168.1.243:5555"))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test fun usbSerialRoutesThroughAdbServer() {
|
||||||
|
assertEquals(DadbTarget.Server("663c91b1"), dadbTargetFor("663c91b1"))
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user