| /* |
| * 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_ */ |