Home | History | Annotate | Download | only in android
      1 /*
      2  * Copyright (C) 2010 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 #ifndef ANDROID_ASYNC_CONSOLE_H
     17 #define ANDROID_ASYNC_CONSOLE_H
     18 
     19 #include "android/async-utils.h"
     20 
     21 /* An AsyncConsoleConnector allows you to asynchronously connect to an
     22  * Android console port.
     23  */
     24 typedef struct {
     25     int              state;
     26     int              error;
     27     LoopIo*          io;
     28     SockAddress      address;
     29     AsyncConnector   connector[1];
     30     AsyncLineReader  lreader[1];
     31     uint8_t          lbuff[128];
     32 } AsyncConsoleConnector;
     33 
     34 /* Initialize the console connector. This attempts to connect to the address
     35  * provided through 'io'. Use asyncConsoleConnect_run() after that.
     36  */
     37 AsyncStatus
     38 asyncConsoleConnector_connect(AsyncConsoleConnector* acc,
     39                               const SockAddress*     address,
     40                               LoopIo*                io);
     41 
     42 /* Asynchronous console connection management. Returns:
     43  *
     44  * ASYNC_COMPLETE:
     45  *    Connection was complete, and the console banner was properly read/eaten.
     46  *    you can now send/write commands through the console with 'io'.
     47  *
     48  * ASYNC_ERROR:
     49  *    An error occured, either during the connection itself, or when
     50  *    reading the content. This sets errno to ENOPROTOOPT if the connector
     51  *    detects that you're not connected to a proper Android emulator console
     52  *    port (i.e. if the banner was incorrect). Other errors are possible
     53  *    (e.g. in case of early connection termination).
     54  *
     55  * ASYNC_NEED_MORE:
     56  *     Not enough data was exchanged, call this function later.
     57  */
     58 AsyncStatus
     59 asyncConsoleConnector_run(AsyncConsoleConnector* acc);
     60 
     61 
     62 #endif /* ANDROID_ASYNC_CONSOLE_H */
     63