blob: 2d8519ae7a52c7d127200f9d92be532e46d12811 [file] [log] [blame]
/*
* Copyright (C) 2010 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_ASYNC_CONSOLE_H
#define ANDROID_ASYNC_CONSOLE_H
#include "android/async-utils.h"
/* An AsyncConsoleConnector allows you to asynchronously connect to an
* Android console port.
*/
typedef struct {
int state;
int error;
LoopIo* io;
SockAddress address;
AsyncConnector connector[1];
AsyncLineReader lreader[1];
uint8_t lbuff[128];
} AsyncConsoleConnector;
/* Initialize the console connector. This attempts to connect to the address
* provided through 'io'. Use asyncConsoleConnect_run() after that.
*/
AsyncStatus
asyncConsoleConnector_connect(AsyncConsoleConnector* acc,
const SockAddress* address,
LoopIo* io);
/* Asynchronous console connection management. Returns:
*
* ASYNC_COMPLETE:
* Connection was complete, and the console banner was properly read/eaten.
* you can now send/write commands through the console with 'io'.
*
* ASYNC_ERROR:
* An error occured, either during the connection itself, or when
* reading the content. This sets errno to ENOPROTOOPT if the connector
* detects that you're not connected to a proper Android emulator console
* port (i.e. if the banner was incorrect). Other errors are possible
* (e.g. in case of early connection termination).
*
* ASYNC_NEED_MORE:
* Not enough data was exchanged, call this function later.
*/
AsyncStatus
asyncConsoleConnector_run(AsyncConsoleConnector* acc);
#endif /* ANDROID_ASYNC_CONSOLE_H */