/* Copyright (C) 2007-2008 The Android Open Source Project
**
** This software is licensed under the terms of the GNU General Public
** License version 2, as published by the Free Software Foundation, and
** may be copied, distributed, and modified under those terms.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
** GNU General Public License for more details.
*/
#pragma once

#include "qemu-common.h"
#include "android/utils/compiler.h"

ANDROID_BEGIN_HEADER

/* open two connected character drivers that can be used to communicate by internal
 * QEMU components. For Android, this is used to connect an emulated serial port
 * with the android modem
 */
extern int  qemu_chr_open_charpipe( CharDriverState* *pfirst, CharDriverState* *psecond );

/* create a buffering character driver for a given endpoint. The result will buffer
 * anything that is sent to it but cannot be sent to the endpoint immediately.
 * On the other hand, if the endpoint calls can_read() or read(), these calls
 * are passed immediately to the can_read() or read() handlers of the result.
 */
extern CharDriverState*  qemu_chr_open_buffer( CharDriverState*  endpoint );

/* must be called from the main event loop to poll all charpipes */
extern void charpipe_poll( void );

ANDROID_END_HEADER
