blob: 6779ae221f7190a99b7b76557bece8cd0b1c2d58 [file] [log] [blame]
David 'Digit' Turner6d448802010-11-18 16:14:03 +01001/*
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 */
24typedef 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 */
37AsyncStatus
38asyncConsoleConnector_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 */
58AsyncStatus
59asyncConsoleConnector_run(AsyncConsoleConnector* acc,
60 LoopIo* io);
61
62
63#endif /* ANDROID_ASYNC_CONSOLE_H */