/* 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/osdep.h"
#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 qemu_charpipe_poll(void);

ANDROID_END_HEADER
