diff options
Diffstat (limited to 'android/adb-server.h')
-rw-r--r-- | android/adb-server.h | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/android/adb-server.h b/android/adb-server.h new file mode 100644 index 0000000..33ede53 --- /dev/null +++ b/android/adb-server.h @@ -0,0 +1,128 @@ +/* + * Copyright (C) 2011 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. + */ + +#ifndef ANDROID_ADB_SERVER_H_ +#define ANDROID_ADB_SERVER_H_ + +/* + * Encapsulates a socket server that is bound to ADB port, and bridges ADB host + * connections and data to ADB daemon running inside the guest. + */ + +/* Callback to be invoked wheh host ADB gets connected with the guest ADB. + * Param: + * opaque - An opaque pointer associated with the guest. This pointer contains + * the 'opaque' parameter that was passed to the adb_server_register_guest + * routine. + * connection - An opaque pointer defining the connection between the host and + * the guest ADBs. This pointer must be used for further operations on the + * host <-> guest connection. + */ +typedef void (*adbguest_connect)(void* opaque, void* connection); + +/* Callback to be invoked wheh the host ADB sends data to the guest ADB. + * Param: + * opaque - An opaque pointer associated with the guest. This pointer contains + * the 'opaque' parameter that was passed to the adb_server_register_guest + * routine. + * connection - An opaque pointer defining the connection between the host and + * the guest ADB. This pointer must be used for further operations on the + * host <-> guest connection. + * buff, size - Buffer that has ben sent by the host. + */ +typedef void (*adbguest_read)(void* opaque, + void* connection, + const void* buff, + int size); + +/* Callback to be invoked wheh the host ADB gets disconnected. + * Param: + * opaque - An opaque pointer associated with the guest. This pointer contains + * the 'opaque' parameter that was passed to the adb_server_register_guest + * routine. + * connection - An opaque pointer defining the connection between the host and + * the guest ADB. This pointer must be used for further operations on the + * host <-> guest connection. + */ +typedef void (*adbguest_disconnect)(void* opaque, void* connection); + +/* Defines a set of callbacks for a guest ADB. */ +typedef struct AdbGuestRoutines AdbGuestRoutines; +struct AdbGuestRoutines { + /* Callback to invoke when ADB host is connected. */ + adbguest_connect on_connected; + /* Callback to invoke when ADB host is disconnected. */ + adbguest_disconnect on_disconnect; + /* Callback to invoke when ADB host sends data. */ + adbguest_read on_read; +}; + +/* Initializes ADB server. + * Param: + * port - socket port that is assigned for communication with the ADB host. This + * is 'base port' + 1. + * Return: + * 0 on success, or != 0 on failure. + */ +extern int adb_server_init(int port); + +/* Checks if ADB server has been initialized. */ +extern int adb_server_is_initialized(void); + +/* Registers ADB guest with the ADB server. + * There can be two cases here, as far as connection with the host is concerned: + * - There is no host connection to immediately associate the guest with. In + * this case the guest will be registered as "pending connection", and routine + * will return. + * - There is a pending host connection to associate with the new guest. In this + * case the association will be made in this routine, and 'adbguest_connect' + * callback will be called before this routine returns. + * Param: + * opaque Opaque pointer associated with the guest. This pointer will be passed + * back to thee guest API in callback routines. + * callbacks Contains callback routines for the registering guest. + * Return: + * An opaque pointer associated with the ADB guest on success, or NULL on + * failure. The pointer returned from this routine must be passed into ADB + * server API called from the guest. + */ +extern void* adb_server_register_guest(void* opaque, AdbGuestRoutines* callbacks); + +/* Completes connection with the guest. + * This routine is called by the guest when it receives a 'start' request from + * ADB guest. This request tells the system that ADB daemon running inside the + * guest is ready to receive data. + * Param: + * opaque - An opaque pointer returned from adb_server_register_guest. + */ +extern void adb_server_complete_connection(void* opaque); + +/* Handles data received from the guest. + * Param: + * opaque - An opaque pointer returned from adb_server_register_guest. + * data, size - Data buffer received from the guest. + */ +extern void adb_server_on_guest_message(void* opaque, + const uint8_t* data, + int size); + +/* Notifies the ADB server that the guest has closed its connection. + * Param: + * opaque - An opaque pointer returned from adb_server_register_guest. + */ +extern void adb_server_on_guest_closed(void* opaque); + +#endif /* ANDROID_ADB_SERVER_H_ */ |