diff options
-rw-r--r-- | adb/adb.c | 1 | ||||
-rw-r--r-- | adb/adb.h | 54 | ||||
-rw-r--r-- | adb/adb_auth.c | 1 | ||||
-rw-r--r-- | adb/adb_auth_client.c | 8 | ||||
-rw-r--r-- | adb/adb_client.c | 27 | ||||
-rw-r--r-- | adb/adb_listeners.c | 1 | ||||
-rw-r--r-- | adb/adb_main.c | 4 | ||||
-rw-r--r-- | adb/commandline.c | 21 | ||||
-rw-r--r-- | adb/file_sync_client.c | 13 | ||||
-rw-r--r-- | adb/file_sync_service.c | 14 | ||||
-rw-r--r-- | adb/framebuffer_service.c | 30 | ||||
-rw-r--r-- | adb/remount_service.c | 7 | ||||
-rw-r--r-- | adb/services.c | 29 | ||||
-rw-r--r-- | adb/sockets.c | 14 | ||||
-rw-r--r-- | adb/transport.c | 13 | ||||
-rw-r--r-- | adb/transport.h | 55 | ||||
-rw-r--r-- | adb/transport_local.c | 11 | ||||
-rw-r--r-- | adb/transport_usb.c | 1 | ||||
-rw-r--r-- | adb/usb_linux.c | 21 | ||||
-rw-r--r-- | adb/usb_linux_client.c | 12 | ||||
-rw-r--r-- | adb/usb_windows.c | 11 |
21 files changed, 193 insertions, 155 deletions
@@ -31,6 +31,7 @@ #include "adb.h" #include "adb_auth.h" #include "adb_listeners.h" +#include "transport.h" #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) @@ -18,10 +18,10 @@ #define __ADB_H #include <limits.h> +#include <sys/types.h> #include "adb_trace.h" #include "fdevent.h" -#include "transport.h" /* readx(), writex() */ #ifdef __cplusplus extern "C" { @@ -37,12 +37,15 @@ extern "C" { #define A_WRTE 0x45545257 #define A_AUTH 0x48545541 -#define A_VERSION 0x01000000 // ADB protocol version +// ADB protocol version. +#define A_VERSION 0x01000000 -#define ADB_VERSION_MAJOR 1 // Used for help/version information -#define ADB_VERSION_MINOR 0 // Used for help/version information +// Used for help/version information. +#define ADB_VERSION_MAJOR 1 +#define ADB_VERSION_MINOR 0 -#define ADB_SERVER_VERSION 32 // Increment this when we want to force users to start a new adb server +// Increment this when we want to force users to start a new adb server. +#define ADB_SERVER_VERSION 32 typedef struct amessage amessage; typedef struct apacket apacket; @@ -263,33 +266,11 @@ void fatal(const char *fmt, ...); void fatal_errno(const char *fmt, ...); void handle_packet(apacket *p, atransport *t); -void send_packet(apacket *p, atransport *t); void get_my_path(char *s, size_t maxLen); int launch_server(int server_port); int adb_main(int is_daemon, int server_port); - -/* transports are ref-counted -** 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 long_listing); -void update_transports(void); - -asocket* create_device_tracker(void); - -/* Obtain a transport from the available transports. -** If state is != CS_ANY, only transports in that state are considered. -** If serial is non-NULL then only the device with that serial will be chosen. -** If no suitable transport is found, error is set. -*/ -atransport *acquire_one_transport(int state, transport_type ttype, const char* serial, char **error_out); -void add_transport_disconnect( atransport* t, adisconnect* dis ); -void remove_transport_disconnect( atransport* t, adisconnect* dis ); -void run_transport_disconnects( atransport* t ); -void kick_transport( atransport* t ); - /* initialize a transport object's func pointers and state */ #if ADB_HOST int get_available_local_transport_index(); @@ -297,22 +278,6 @@ int get_available_local_transport_index(); int init_socket_transport(atransport *t, int s, int port, int local); void init_usb_transport(atransport *t, usb_handle *usb, int state); -/* for MacOS X cleanup */ -void close_usb_devices(); - -/* cause new transports to be init'd and added to the list */ -int register_socket_transport(int s, const char *serial, int port, int local); - -/* these should only be used for the "adb disconnect" command */ -void unregister_transport(atransport *t); -void unregister_all_tcp_transports(); - -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); - -atransport *find_transport(const char *serial); #if ADB_HOST atransport* find_emulator_transport_by_adb_port(int adb_port); #endif @@ -343,9 +308,6 @@ void set_verity_enabled_state_service(int fd, void* cookie); apacket *get_apacket(void); void put_apacket(apacket *p); -int check_header(apacket *p); -int check_data(apacket *p); - // Define it if you want to dump packets. #define DEBUG_PACKETS 0 diff --git a/adb/adb_auth.c b/adb/adb_auth.c index 11a89b0..c236b64 100644 --- a/adb/adb_auth.c +++ b/adb/adb_auth.c @@ -24,6 +24,7 @@ #include "adb.h" #include "adb_auth.h" +#include "transport.h" #include "sysdeps.h" int auth_enabled = 0; diff --git a/adb/adb_auth_client.c b/adb/adb_auth_client.c index 55e9dca..7be883c 100644 --- a/adb/adb_auth_client.c +++ b/adb/adb_auth_client.c @@ -14,18 +14,20 @@ * limitations under the License. */ +#include <resolv.h> #include <stdio.h> #include <string.h> -#include <resolv.h> -#include <cutils/list.h> -#include <cutils/sockets.h> #include "sysdeps.h" + #include "adb.h" #include "adb_auth.h" +#include "cutils/list.h" +#include "cutils/sockets.h" #include "fdevent.h" #include "mincrypt/rsa.h" #include "mincrypt/sha.h" +#include "transport.h" #define TRACE_TAG TRACE_AUTH diff --git a/adb/adb_client.c b/adb/adb_client.c index ac5e15a..9bf7b2b 100644 --- a/adb/adb_client.c +++ b/adb/adb_client.c @@ -1,17 +1,34 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + #include <errno.h> #include <limits.h> #include <stdarg.h> -#include <zipfile/zipfile.h> -#include <sys/types.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> #include <sys/stat.h> +#include <sys/types.h> #include "sysdeps.h" #define TRACE_TAG TRACE_ADB #include "adb_client.h" +#include "transport.h" +#include "zipfile/zipfile.h" static transport_type __adb_transport = kTransportAny; static const char* __adb_serial = NULL; diff --git a/adb/adb_listeners.c b/adb/adb_listeners.c index cccc520..f68b876 100644 --- a/adb/adb_listeners.c +++ b/adb/adb_listeners.c @@ -20,6 +20,7 @@ #include <stdlib.h> #include "sysdeps.h" +#include "transport.h" int gListenAll = 0; /* Not static because it is used in commandline.c. */ diff --git a/adb/adb_main.c b/adb/adb_main.c index 57a15dd..f8475c7 100644 --- a/adb/adb_main.c +++ b/adb/adb_main.c @@ -21,10 +21,12 @@ #include <stdio.h> #include <stdlib.h> +#include "sysdeps.h" + #include "adb.h" #include "adb_auth.h" #include "adb_listeners.h" -#include "sysdeps.h" +#include "transport.h" #if !ADB_HOST #include <getopt.h> diff --git a/adb/commandline.c b/adb/commandline.c index 830f290..2a02c38 100644 --- a/adb/commandline.c +++ b/adb/commandline.c @@ -14,30 +14,31 @@ * limitations under the License. */ -#include <stdio.h> -#include <stdint.h> -#include <stdlib.h> -#include <string.h> +#include <assert.h> +#include <ctype.h> #include <errno.h> -#include <unistd.h> #include <limits.h> #include <stdarg.h> -#include <sys/types.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> #include <sys/stat.h> -#include <ctype.h> -#include <assert.h> - -#include "sysdeps.h" +#include <sys/types.h> #if !defined(_WIN32) #include <termios.h> +#include <unistd.h> #endif +#include "sysdeps.h" + #define TRACE_TAG TRACE_ADB #include "adb.h" #include "adb_client.h" #include "adb_auth.h" #include "file_sync_service.h" +#include "transport.h" static int do_cmd(transport_type ttype, char* serial, char *cmd, ...); diff --git a/adb/file_sync_client.c b/adb/file_sync_client.c index f7828a6..cf446e2 100644 --- a/adb/file_sync_client.c +++ b/adb/file_sync_client.c @@ -14,24 +14,25 @@ * limitations under the License. */ +#include <dirent.h> +#include <errno.h> +#include <limits.h> #include <stdio.h> #include <stdlib.h> #include <string.h> -#include <errno.h> #include <sys/stat.h> #include <sys/time.h> -#include <time.h> -#include <dirent.h> -#include <limits.h> #include <sys/types.h> -#include <zipfile/zipfile.h> +#include <time.h> #include <utime.h> #include "sysdeps.h" + #include "adb.h" #include "adb_client.h" #include "file_sync_service.h" - +#include "transport.h" +#include "zipfile/zipfile.h" static unsigned long long total_bytes; static long long start_time; diff --git a/adb/file_sync_service.c b/adb/file_sync_service.c index 7de82b7..0944e5d 100644 --- a/adb/file_sync_service.c +++ b/adb/file_sync_service.c @@ -14,24 +14,24 @@ * limitations under the License. */ -#include <stdlib.h> +#include <dirent.h> +#include <errno.h> +#include <selinux/android.h> #include <stdio.h> +#include <stdlib.h> #include <string.h> - #include <sys/stat.h> #include <sys/types.h> -#include <dirent.h> -#include <utime.h> #include <unistd.h> +#include <utime.h> -#include <errno.h> -#include <private/android_filesystem_config.h> -#include <selinux/android.h> #include "sysdeps.h" #define TRACE_TAG TRACE_SYNC #include "adb.h" #include "file_sync_service.h" +#include "private/android_filesystem_config.h" +#include "transport.h" /* TODO: use fs_config to configure permissions on /data */ static bool is_on_system(const char *name) { diff --git a/adb/framebuffer_service.c b/adb/framebuffer_service.c index 61578aa..5665a56 100644 --- a/adb/framebuffer_service.c +++ b/adb/framebuffer_service.c @@ -14,21 +14,23 @@ * limitations under the License. */ -#include <stdlib.h> +#include <errno.h> +#include <fcntl.h> +#include <linux/fb.h> #include <stdio.h> -#include <unistd.h> +#include <stdlib.h> #include <string.h> -#include <fcntl.h> -#include <errno.h> +#include <sys/ioctl.h> +#include <sys/mman.h> #include <sys/types.h> #include <sys/wait.h> +#include <unistd.h> -#include "fdevent.h" -#include "adb.h" +#include "sysdeps.h" -#include <linux/fb.h> -#include <sys/ioctl.h> -#include <sys/mman.h> +#include "adb.h" +#include "fdevent.h" +#include "transport.h" /* TODO: ** - sync with vsync to avoid tearing @@ -68,15 +70,15 @@ void framebuffer_service(int fd, void *cookie) if (pid == 0) { dup2(fds[1], STDOUT_FILENO); - close(fds[0]); - close(fds[1]); + adb_close(fds[0]); + adb_close(fds[1]); const char* command = "screencap"; const char *args[2] = {command, NULL}; execvp(command, (char**)args); exit(1); } - close(fds[1]); + adb_close(fds[1]); fd_screencap = fds[0]; /* read w, h & format */ @@ -174,9 +176,9 @@ void framebuffer_service(int fd, void *cookie) } done: - close(fds[0]); + adb_close(fds[0]); TEMP_FAILURE_RETRY(waitpid(pid, NULL, 0)); pipefail: - close(fd); + adb_close(fd); } diff --git a/adb/remount_service.c b/adb/remount_service.c index d7b0dd1..7e5613a 100644 --- a/adb/remount_service.c +++ b/adb/remount_service.c @@ -14,8 +14,6 @@ * limitations under the License. */ -#include "sysdeps.h" - #include <errno.h> #include <fcntl.h> #include <mntent.h> @@ -25,11 +23,12 @@ #include <sys/mount.h> #include <unistd.h> -#include "cutils/properties.h" +#include "sysdeps.h" #define TRACE_TAG TRACE_ADB #include "adb.h" - +#include "cutils/properties.h" +#include "transport.h" static int system_ro = 1; static int vendor_ro = 1; diff --git a/adb/services.c b/adb/services.c index bd210a8..2325c0f 100644 --- a/adb/services.c +++ b/adb/services.c @@ -14,29 +14,30 @@ * limitations under the License. */ +#include <errno.h> #include <stddef.h> -#include <stdlib.h> #include <stdio.h> -#include <unistd.h> +#include <stdlib.h> #include <string.h> -#include <errno.h> + +#ifndef _WIN32 +#include <netdb.h> +#include <netinet/in.h> +#include <sys/ioctl.h> +#include <unistd.h> +#endif + +#if !ADB_HOST +#include "cutils/android_reboot.h" +#include "cutils/properties.h" +#endif #include "sysdeps.h" #define TRACE_TAG TRACE_SERVICES #include "adb.h" #include "file_sync_service.h" - -#if ADB_HOST -# ifndef HAVE_WINSOCK -# include <netinet/in.h> -# include <netdb.h> -# include <sys/ioctl.h> -# endif -#else -# include <cutils/android_reboot.h> -# include <cutils/properties.h> -#endif +#include "transport.h" typedef struct stinfo stinfo; diff --git a/adb/sockets.c b/adb/sockets.c index 1598c3c..7da6d57 100644 --- a/adb/sockets.c +++ b/adb/sockets.c @@ -14,21 +14,21 @@ * limitations under the License. */ +#include <ctype.h> +#include <errno.h> #include <stdio.h> #include <stdlib.h> -#include <unistd.h> -#include <errno.h> #include <string.h> -#include <ctype.h> +#include <unistd.h> #include "sysdeps.h" -#if !ADB_HOST -#include <cutils/properties.h> -#endif - #define TRACE_TAG TRACE_SOCKETS #include "adb.h" +#if !ADB_HOST +#include "cutils/properties.h" +#endif +#include "transport.h" ADB_MUTEX_DEFINE( socket_list_lock ); diff --git a/adb/transport.c b/adb/transport.c index ffe59da..4904cd0 100644 --- a/adb/transport.c +++ b/adb/transport.c @@ -14,13 +14,15 @@ * limitations under the License. */ +#include "sysdeps.h" + +#include "transport.h" + +#include <errno.h> #include <stdio.h> #include <stdlib.h> -#include <unistd.h> #include <string.h> -#include <errno.h> - -#include "sysdeps.h" +#include <unistd.h> #define TRACE_TAG TRACE_TRANSPORT #include "adb.h" @@ -494,8 +496,7 @@ create_device_tracker(void) /* call this function each time the transport list has changed */ -void update_transports(void) -{ +void update_transports(void) { char buffer[1024]; int len; device_tracker* tracker; diff --git a/adb/transport.h b/adb/transport.h index d95ad32..9802b91 100644 --- a/adb/transport.h +++ b/adb/transport.h @@ -19,17 +19,64 @@ #include <sys/types.h> +#include "adb.h" + #ifdef __cplusplus extern "C" { #endif -/* convenience wrappers around read/write that will retry on -** EINTR and/or short read/write. Returns 0 on success, -1 -** on error or EOF. -*/ +/* + * Convenience wrappers around read/write that will retry on + * EINTR and/or short read/write. Returns 0 on success, -1 + * on error or EOF. + */ int readx(int fd, void *ptr, size_t len); int writex(int fd, const void *ptr, size_t len); +/* + * Obtain a transport from the available transports. + * If state is != CS_ANY, only transports in that state are considered. + * If serial is non-NULL then only the device with that serial will be chosen. + * If no suitable transport is found, error is set. + */ +atransport* acquire_one_transport(int state, transport_type ttype, + const char* serial, char** error_out); +void add_transport_disconnect(atransport* t, adisconnect* dis); +void remove_transport_disconnect(atransport* t, adisconnect* dis); +void kick_transport(atransport* t); +void run_transport_disconnects(atransport* t); +void update_transports(void); + +/* transports are ref-counted +** 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 long_listing); +atransport* find_transport(const char* serial); + +void register_usb_transport(usb_handle* h, const char* serial, + const char* devpath, unsigned writeable); + +/* cause new transports to be init'd and added to the list */ +int register_socket_transport(int s, const char* serial, int port, int local); + +/* this should only be used for transports with connection_state == CS_NOPERM */ +void unregister_usb_transport(usb_handle* usb); + +/* these should only be used for the "adb disconnect" command */ +void unregister_transport(atransport* t); +void unregister_all_tcp_transports(); + +int check_header(apacket* p); +int check_data(apacket* p); + +/* for MacOS X cleanup */ +void close_usb_devices(); + +void send_packet(apacket* p, atransport* t); + +asocket* create_device_tracker(void); + #ifdef __cplusplus } #endif diff --git a/adb/transport_local.c b/adb/transport_local.c index 6c4e220..e07f2f7 100644 --- a/adb/transport_local.c +++ b/adb/transport_local.c @@ -14,19 +14,20 @@ * limitations under the License. */ +#include <errno.h> #include <stdio.h> #include <stdlib.h> #include <string.h> -#include <errno.h> +#include <sys/types.h> #include "sysdeps.h" -#include <sys/types.h> -#if !ADB_HOST -#include <cutils/properties.h> -#endif #define TRACE_TAG TRACE_TRANSPORT #include "adb.h" +#if !ADB_HOST +#include "cutils/properties.h" +#endif +#include "transport.h" #if ADB_HOST /* we keep a list of opened transports. The atransport struct knows to which diff --git a/adb/transport_usb.c b/adb/transport_usb.c index 1138ddd..37a8219 100644 --- a/adb/transport_usb.c +++ b/adb/transport_usb.c @@ -22,6 +22,7 @@ #define TRACE_TAG TRACE_TRANSPORT #include "adb.h" +#include "transport.h" static int remote_read(apacket *p, atransport *t) { diff --git a/adb/usb_linux.c b/adb/usb_linux.c index d242c8a..d03f8be 100644 --- a/adb/usb_linux.c +++ b/adb/usb_linux.c @@ -14,33 +14,30 @@ * limitations under the License. */ +#include <ctype.h> +#include <dirent.h> +#include <errno.h> +#include <fcntl.h> +#include <linux/usbdevice_fs.h> +#include <linux/version.h> #include <stdio.h> #include <stdlib.h> -#include <unistd.h> #include <string.h> - #include <sys/ioctl.h> -#include <sys/types.h> #include <sys/time.h> -#include <dirent.h> -#include <fcntl.h> -#include <errno.h> -#include <ctype.h> - -#include <linux/usbdevice_fs.h> -#include <linux/version.h> +#include <sys/types.h> +#include <unistd.h> #if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 20) #include <linux/usb/ch9.h> #else #include <linux/usb_ch9.h> #endif -#include <asm/byteorder.h> #include "sysdeps.h" #define TRACE_TAG TRACE_USB #include "adb.h" - +#include "transport.h" /* usb scan debugging is waaaay too verbose */ #define DBGX(x...) diff --git a/adb/usb_linux_client.c b/adb/usb_linux_client.c index ee6b37c..c88b258 100644 --- a/adb/usb_linux_client.c +++ b/adb/usb_linux_client.c @@ -14,22 +14,22 @@ * limitations under the License. */ +#include <dirent.h> +#include <errno.h> +#include <linux/usb/ch9.h> +#include <linux/usb/functionfs.h> #include <stdio.h> #include <stdlib.h> -#include <unistd.h> #include <string.h> - -#include <linux/usb/ch9.h> -#include <linux/usb/functionfs.h> #include <sys/ioctl.h> #include <sys/types.h> -#include <dirent.h> -#include <errno.h> +#include <unistd.h> #include "sysdeps.h" #define TRACE_TAG TRACE_USB #include "adb.h" +#include "transport.h" #define MAX_PACKET_SIZE_FS 64 #define MAX_PACKET_SIZE_HS 512 diff --git a/adb/usb_windows.c b/adb/usb_windows.c index a2d7226..3c5533b 100644 --- a/adb/usb_windows.c +++ b/adb/usb_windows.c @@ -14,19 +14,20 @@ * limitations under the License. */ -#include <winsock2.h> -#include <windows.h> -#include <winerror.h> -#include <errno.h> -#include <usb100.h> +#include <winsock2.h> // winsock.h *must* be included before windows.h. #include <adb_api.h> +#include <errno.h> #include <stdio.h> #include <stdlib.h> +#include <usb100.h> +#include <windows.h> +#include <winerror.h> #include "sysdeps.h" #define TRACE_TAG TRACE_USB #include "adb.h" +#include "transport.h" /** Structure usb_handle describes our connection to the usb device via AdbWinApi.dll. This structure is returned from usb_open() routine and |