Loading adb/SERVICES.TXT +6 −1 Original line number Diff line number Diff line Loading @@ -17,8 +17,10 @@ host:kill upgrade. host:devices host:devices-l Ask to return the list of available Android devices and their state. After the OKAY, this is followed by a 4-byte hex len, state. devices-l includes the device paths in the state. After the OKAY, this is followed by a 4-byte hex len, and a string that will be dumped as-is by the client, then the connection is closed Loading Loading @@ -88,6 +90,9 @@ host:<request> Returns the serial number of the corresponding device/emulator. Note that emulator serial numbers are of the form "emulator-5554" <host-prefix>:get-devpath Returns the device path of the corresponding device/emulator. <host-prefix>:get-state Returns the state of a given device as a string. Loading adb/adb.c +22 −9 Original line number Diff line number Diff line Loading @@ -1201,17 +1201,20 @@ int handle_host_request(char *service, transport_type ttype, char* serial, int r } // return a list of all connected devices if (!strcmp(service, "devices")) { if (!strncmp(service, "devices", 7)) { char buffer[4096]; int use_long = !strcmp(service+7, "-l"); if (use_long || service[7] == 0) { memset(buf, 0, sizeof(buf)); memset(buffer, 0, sizeof(buffer)); D("Getting device list \n"); list_transports(buffer, sizeof(buffer)); list_transports(buffer, sizeof(buffer), use_long); snprintf(buf, sizeof(buf), "OKAY%04x%s",(unsigned)strlen(buffer),buffer); D("Wrote device list \n"); writex(reply_fd, buf, strlen(buf)); return 0; } } // add a new TCP transport, device or emulator if (!strncmp(service, "connect:", 8)) { Loading Loading @@ -1276,6 +1279,16 @@ int handle_host_request(char *service, transport_type ttype, char* serial, int r writex(reply_fd, buf, strlen(buf)); return 0; } if(!strncmp(service,"get-devpath",strlen("get-devpath"))) { char *out = "unknown"; transport = acquire_one_transport(CS_ANY, ttype, serial, NULL); if (transport && transport->devpath) { out = transport->devpath; } snprintf(buf, sizeof buf, "OKAY%04x%s",(unsigned)strlen(out),out); writex(reply_fd, buf, strlen(buf)); return 0; } // indicates a new emulator instance has started if (!strncmp(service,"emulator:",9)) { int port = atoi(service+9); Loading adb/adb.h +3 −2 Original line number Diff line number Diff line Loading @@ -190,6 +190,7 @@ struct atransport /* used to identify transports for clients */ char *serial; char *product; char *devpath; int adb_port; // Use for emulators (local transport) /* a list of adisconnect callbacks called when the transport is kicked */ Loading Loading @@ -253,7 +254,7 @@ int adb_main(int is_daemon, int server_port); ** get_device_transport does an acquire on your behalf before returning */ void init_transport_registration(void); int list_transports(char *buf, size_t bufsize); int list_transports(char *buf, size_t bufsize, int show_devpath); void update_transports(void); asocket* create_device_tracker(void); Loading Loading @@ -286,7 +287,7 @@ void register_socket_transport(int s, const char *serial, int port, int local); void unregister_transport(atransport *t); void unregister_all_tcp_transports(); void register_usb_transport(usb_handle *h, const char *serial, unsigned writeable); void register_usb_transport(usb_handle *h, const char *serial, const char *devpath, unsigned writeable); /* this should only be used for transports with connection_state == CS_NOPERM */ void unregister_usb_transport(usb_handle *usb); Loading adb/commandline.c +17 −5 Original line number Diff line number Diff line Loading @@ -84,8 +84,8 @@ void help() " returns an error if more than one USB device is present.\n" " -e - directs command to the only running emulator.\n" " returns an error if more than one emulator is running.\n" " -s <serial number> - directs command to the USB device or emulator with\n" " the given serial number. Overrides ANDROID_SERIAL\n" " -s <specific device> - directs command to the device or emulator with the given\n" " serial number or device path. Overrides ANDROID_SERIAL\n" " environment variable.\n" " -p <product name or path> - simple product name like 'sooner', or\n" " a relative/absolute path to a product\n" Loading @@ -93,7 +93,8 @@ void help() " If -p is not specified, the ANDROID_PRODUCT_OUT\n" " environment variable is used, which must\n" " be an absolute path.\n" " devices - list all connected devices\n" " devices [-l] - list all connected devices\n" " ('-l' means list device paths)\n" " connect <host>[:<port>] - connect to a device via TCP/IP\n" " Port 5555 is used by default if no port number is specified.\n" " disconnect [<host>[:<port>]] - disconnect from a TCP/IP device.\n" Loading Loading @@ -159,6 +160,7 @@ void help() " adb kill-server - kill the server if it is running\n" " adb get-state - prints: offline | bootloader | device\n" " adb get-serialno - prints: <serial-number>\n" " adb get-devpath - prints: <device-path>\n" " 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" Loading Loading @@ -1016,7 +1018,16 @@ top: if(!strcmp(argv[0], "devices")) { char *tmp; snprintf(buf, sizeof buf, "host:%s", argv[0]); char *listopt; if (argc < 2) listopt = ""; else if (argc == 2 && !strcmp(argv[1], "-l")) listopt = argv[1]; else { fprintf(stderr, "Usage: adb devices [-l]\n"); return 1; } snprintf(buf, sizeof buf, "host:%s%s", argv[0], listopt); tmp = adb_query(buf); if(tmp) { printf("List of devices attached \n"); Loading Loading @@ -1298,7 +1309,8 @@ top: /* passthrough commands */ if(!strcmp(argv[0],"get-state") || !strcmp(argv[0],"get-serialno")) !strcmp(argv[0],"get-serialno") || !strcmp(argv[0],"get-devpath")) { char *tmp; Loading adb/transport.c +22 −4 Original line number Diff line number Diff line Loading @@ -370,7 +370,7 @@ static int list_transports_msg(char* buffer, size_t bufferlen) char head[5]; int len; len = list_transports(buffer+4, bufferlen-4); len = list_transports(buffer+4, bufferlen-4, 0); snprintf(head, sizeof(head), "%04x", len); memcpy(buffer, head, 4); len += 4; Loading Loading @@ -601,6 +601,8 @@ static void transport_registration_func(int _fd, unsigned ev, void *data) free(t->product); if (t->serial) free(t->serial); if (t->devpath) free(t->devpath); memset(t,0xee,sizeof(atransport)); free(t); Loading Loading @@ -762,6 +764,10 @@ retry: result = t; break; } if (t->devpath && !strcmp(serial, t->devpath)) { result = t; break; } } else { if (ttype == kTransportUsb && t->type == kTransportUsb) { if (result) { Loading Loading @@ -837,7 +843,7 @@ static const char *statename(atransport *t) } } int list_transports(char *buf, size_t bufsize) int list_transports(char *buf, size_t bufsize, int show_devpath) { char* p = buf; char* end = buf + bufsize; Loading @@ -850,6 +856,12 @@ int list_transports(char *buf, size_t bufsize) const char* serial = t->serial; if (!serial || !serial[0]) serial = "????????????"; if (show_devpath) { const char* devpath = t->devpath; if (!devpath || !devpath[0]) devpath = "????????????"; len = snprintf(p, end - p, "%s\t%s\t%s\n", serial, devpath, statename(t)); } else len = snprintf(p, end - p, "%s\t%s\n", serial, statename(t)); if (p + len >= end) { Loading Loading @@ -911,6 +923,9 @@ atransport *find_transport(const char *serial) if (t->serial && !strcmp(serial, t->serial)) { break; } if (t->devpath && !strcmp(serial, t->devpath)) { break; } } adb_mutex_unlock(&transport_lock); Loading Loading @@ -956,7 +971,7 @@ void unregister_all_tcp_transports() #endif void register_usb_transport(usb_handle *usb, const char *serial, unsigned writeable) void register_usb_transport(usb_handle *usb, const char *serial, const char *devpath, unsigned writeable) { atransport *t = calloc(1, sizeof(atransport)); D("transport: %p init'ing for usb_handle %p (sn='%s')\n", t, usb, Loading @@ -965,6 +980,9 @@ void register_usb_transport(usb_handle *usb, const char *serial, unsigned writea if(serial) { t->serial = strdup(serial); } if(devpath) { t->devpath = strdup(devpath); } register_transport(t); } Loading Loading
adb/SERVICES.TXT +6 −1 Original line number Diff line number Diff line Loading @@ -17,8 +17,10 @@ host:kill upgrade. host:devices host:devices-l Ask to return the list of available Android devices and their state. After the OKAY, this is followed by a 4-byte hex len, state. devices-l includes the device paths in the state. After the OKAY, this is followed by a 4-byte hex len, and a string that will be dumped as-is by the client, then the connection is closed Loading Loading @@ -88,6 +90,9 @@ host:<request> Returns the serial number of the corresponding device/emulator. Note that emulator serial numbers are of the form "emulator-5554" <host-prefix>:get-devpath Returns the device path of the corresponding device/emulator. <host-prefix>:get-state Returns the state of a given device as a string. Loading
adb/adb.c +22 −9 Original line number Diff line number Diff line Loading @@ -1201,17 +1201,20 @@ int handle_host_request(char *service, transport_type ttype, char* serial, int r } // return a list of all connected devices if (!strcmp(service, "devices")) { if (!strncmp(service, "devices", 7)) { char buffer[4096]; int use_long = !strcmp(service+7, "-l"); if (use_long || service[7] == 0) { memset(buf, 0, sizeof(buf)); memset(buffer, 0, sizeof(buffer)); D("Getting device list \n"); list_transports(buffer, sizeof(buffer)); list_transports(buffer, sizeof(buffer), use_long); snprintf(buf, sizeof(buf), "OKAY%04x%s",(unsigned)strlen(buffer),buffer); D("Wrote device list \n"); writex(reply_fd, buf, strlen(buf)); return 0; } } // add a new TCP transport, device or emulator if (!strncmp(service, "connect:", 8)) { Loading Loading @@ -1276,6 +1279,16 @@ int handle_host_request(char *service, transport_type ttype, char* serial, int r writex(reply_fd, buf, strlen(buf)); return 0; } if(!strncmp(service,"get-devpath",strlen("get-devpath"))) { char *out = "unknown"; transport = acquire_one_transport(CS_ANY, ttype, serial, NULL); if (transport && transport->devpath) { out = transport->devpath; } snprintf(buf, sizeof buf, "OKAY%04x%s",(unsigned)strlen(out),out); writex(reply_fd, buf, strlen(buf)); return 0; } // indicates a new emulator instance has started if (!strncmp(service,"emulator:",9)) { int port = atoi(service+9); Loading
adb/adb.h +3 −2 Original line number Diff line number Diff line Loading @@ -190,6 +190,7 @@ struct atransport /* used to identify transports for clients */ char *serial; char *product; char *devpath; int adb_port; // Use for emulators (local transport) /* a list of adisconnect callbacks called when the transport is kicked */ Loading Loading @@ -253,7 +254,7 @@ int adb_main(int is_daemon, int server_port); ** get_device_transport does an acquire on your behalf before returning */ void init_transport_registration(void); int list_transports(char *buf, size_t bufsize); int list_transports(char *buf, size_t bufsize, int show_devpath); void update_transports(void); asocket* create_device_tracker(void); Loading Loading @@ -286,7 +287,7 @@ void register_socket_transport(int s, const char *serial, int port, int local); void unregister_transport(atransport *t); void unregister_all_tcp_transports(); void register_usb_transport(usb_handle *h, const char *serial, unsigned writeable); void register_usb_transport(usb_handle *h, const char *serial, const char *devpath, unsigned writeable); /* this should only be used for transports with connection_state == CS_NOPERM */ void unregister_usb_transport(usb_handle *usb); Loading
adb/commandline.c +17 −5 Original line number Diff line number Diff line Loading @@ -84,8 +84,8 @@ void help() " returns an error if more than one USB device is present.\n" " -e - directs command to the only running emulator.\n" " returns an error if more than one emulator is running.\n" " -s <serial number> - directs command to the USB device or emulator with\n" " the given serial number. Overrides ANDROID_SERIAL\n" " -s <specific device> - directs command to the device or emulator with the given\n" " serial number or device path. Overrides ANDROID_SERIAL\n" " environment variable.\n" " -p <product name or path> - simple product name like 'sooner', or\n" " a relative/absolute path to a product\n" Loading @@ -93,7 +93,8 @@ void help() " If -p is not specified, the ANDROID_PRODUCT_OUT\n" " environment variable is used, which must\n" " be an absolute path.\n" " devices - list all connected devices\n" " devices [-l] - list all connected devices\n" " ('-l' means list device paths)\n" " connect <host>[:<port>] - connect to a device via TCP/IP\n" " Port 5555 is used by default if no port number is specified.\n" " disconnect [<host>[:<port>]] - disconnect from a TCP/IP device.\n" Loading Loading @@ -159,6 +160,7 @@ void help() " adb kill-server - kill the server if it is running\n" " adb get-state - prints: offline | bootloader | device\n" " adb get-serialno - prints: <serial-number>\n" " adb get-devpath - prints: <device-path>\n" " 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" Loading Loading @@ -1016,7 +1018,16 @@ top: if(!strcmp(argv[0], "devices")) { char *tmp; snprintf(buf, sizeof buf, "host:%s", argv[0]); char *listopt; if (argc < 2) listopt = ""; else if (argc == 2 && !strcmp(argv[1], "-l")) listopt = argv[1]; else { fprintf(stderr, "Usage: adb devices [-l]\n"); return 1; } snprintf(buf, sizeof buf, "host:%s%s", argv[0], listopt); tmp = adb_query(buf); if(tmp) { printf("List of devices attached \n"); Loading Loading @@ -1298,7 +1309,8 @@ top: /* passthrough commands */ if(!strcmp(argv[0],"get-state") || !strcmp(argv[0],"get-serialno")) !strcmp(argv[0],"get-serialno") || !strcmp(argv[0],"get-devpath")) { char *tmp; Loading
adb/transport.c +22 −4 Original line number Diff line number Diff line Loading @@ -370,7 +370,7 @@ static int list_transports_msg(char* buffer, size_t bufferlen) char head[5]; int len; len = list_transports(buffer+4, bufferlen-4); len = list_transports(buffer+4, bufferlen-4, 0); snprintf(head, sizeof(head), "%04x", len); memcpy(buffer, head, 4); len += 4; Loading Loading @@ -601,6 +601,8 @@ static void transport_registration_func(int _fd, unsigned ev, void *data) free(t->product); if (t->serial) free(t->serial); if (t->devpath) free(t->devpath); memset(t,0xee,sizeof(atransport)); free(t); Loading Loading @@ -762,6 +764,10 @@ retry: result = t; break; } if (t->devpath && !strcmp(serial, t->devpath)) { result = t; break; } } else { if (ttype == kTransportUsb && t->type == kTransportUsb) { if (result) { Loading Loading @@ -837,7 +843,7 @@ static const char *statename(atransport *t) } } int list_transports(char *buf, size_t bufsize) int list_transports(char *buf, size_t bufsize, int show_devpath) { char* p = buf; char* end = buf + bufsize; Loading @@ -850,6 +856,12 @@ int list_transports(char *buf, size_t bufsize) const char* serial = t->serial; if (!serial || !serial[0]) serial = "????????????"; if (show_devpath) { const char* devpath = t->devpath; if (!devpath || !devpath[0]) devpath = "????????????"; len = snprintf(p, end - p, "%s\t%s\t%s\n", serial, devpath, statename(t)); } else len = snprintf(p, end - p, "%s\t%s\n", serial, statename(t)); if (p + len >= end) { Loading Loading @@ -911,6 +923,9 @@ atransport *find_transport(const char *serial) if (t->serial && !strcmp(serial, t->serial)) { break; } if (t->devpath && !strcmp(serial, t->devpath)) { break; } } adb_mutex_unlock(&transport_lock); Loading Loading @@ -956,7 +971,7 @@ void unregister_all_tcp_transports() #endif void register_usb_transport(usb_handle *usb, const char *serial, unsigned writeable) void register_usb_transport(usb_handle *usb, const char *serial, const char *devpath, unsigned writeable) { atransport *t = calloc(1, sizeof(atransport)); D("transport: %p init'ing for usb_handle %p (sn='%s')\n", t, usb, Loading @@ -965,6 +980,9 @@ void register_usb_transport(usb_handle *usb, const char *serial, unsigned writea if(serial) { t->serial = strdup(serial); } if(devpath) { t->devpath = strdup(devpath); } register_transport(t); } Loading