adb: Improved support for running adb over TCP/IP
Added new commands:
adb connect <host>:<port> (to connect to a device via TCP/IP)
adb tcpip <port> (to restart adbd on the device to listen on TCP/IP)
adb usb (to restart adbd on the device to listen USB)
Signed-off-by: Mike Lockwood <lockwood@android.com>
diff --git a/commandline.c b/commandline.c
index 4ec5c8b..5d3187a 100644
--- a/commandline.c
+++ b/commandline.c
@@ -105,6 +105,7 @@
" environment variable is used, which must\n"
" be an absolute path.\n"
" devices - list all connected devices\n"
+ " connect <host>:<port> - connect to a device via TCP/IP"
"\n"
"device commands:\n"
" adb push <local> <remote> - copy file/dir to device\n"
@@ -149,7 +150,9 @@
" adb status-window - continuously print device status for a specified device\n"
" adb remount - remounts the /system partition on the device read-write\n"
" adb reboot [bootloader|recovery] - reboots the device, optionally into the bootloader or recovery program\n"
- " adb root - restarts adb with root permissions\n"
+ " adb root - restarts the adbd daemon with root permissions\n"
+ " adb usb - restarts the adbd daemon listening on USB"
+ " adb tcpip <port> - restarts the adbd daemon listening on TCP on the specified port"
"\n"
"networking:\n"
" adb ppp <tty> [parameters] - Run PPP over USB.\n"
@@ -850,6 +853,22 @@
}
}
+ if(!strcmp(argv[0], "connect")) {
+ char *tmp;
+ if (argc != 2) {
+ fprintf(stderr, "Usage: adb connect <host>:<port>\n");
+ return 1;
+ }
+ snprintf(buf, sizeof buf, "host:%s:%s", argv[0], argv[1]);
+ tmp = adb_query(buf);
+ if(tmp) {
+ printf("%s\n", tmp);
+ return 0;
+ } else {
+ return 1;
+ }
+ }
+
if (!strcmp(argv[0], "emu")) {
return adb_send_emulator_command(argc, argv);
}
@@ -908,35 +927,15 @@
return 0;
}
- if(!strcmp(argv[0], "remount")) {
- int fd = adb_connect("remount:");
- if(fd >= 0) {
- read_and_dump(fd);
- adb_close(fd);
- return 0;
- }
- fprintf(stderr,"error: %s\n", adb_error());
- return 1;
- }
-
- if(!strcmp(argv[0], "reboot")) {
- int fd;
+ if(!strcmp(argv[0], "remount") || !strcmp(argv[0], "reboot")
+ || !strcmp(argv[0], "tcpip") || !strcmp(argv[0], "usb")
+ || !strcmp(argv[0], "reboot")) {
+ char command[100];
if (argc > 1)
- snprintf(buf, sizeof(buf), "reboot:%s", argv[1]);
+ snprintf(command, sizeof(command), "%s:%s", argv[0], argv[1]);
else
- snprintf(buf, sizeof(buf), "reboot:");
- fd = adb_connect(buf);
- if(fd >= 0) {
- read_and_dump(fd);
- adb_close(fd);
- return 0;
- }
- fprintf(stderr,"error: %s\n", adb_error());
- return 1;
- }
-
- if(!strcmp(argv[0], "root")) {
- int fd = adb_connect("root:");
+ snprintf(command, sizeof(command), "%s:", argv[0]);
+ int fd = adb_connect(command);
if(fd >= 0) {
read_and_dump(fd);
adb_close(fd);