diff options
Diffstat (limited to 'android_qemud.h')
-rw-r--r-- | android_qemud.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/android_qemud.h b/android_qemud.h new file mode 100644 index 0000000..1e9fad5 --- /dev/null +++ b/android_qemud.h @@ -0,0 +1,71 @@ +/* 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. +*/ +#ifndef _android_qemud_h +#define _android_qemud_h + +#include "vl.h" + +/* recent versions of the emulated Android system contains a background + * daemon, named 'qemud', which runs as root and opens /dev/ttyS0 + * + * its purpose is to multiplex several communication channels between + * the emulator and the system through a single serial port. + * + * each channel will be connected to a qemud-created unix socket on the + * system, and to either a emulated character device or other facility in + * the emulator. + * + * +--------> /dev/socket/qemud_gsm + * emulated GSM <-----+ ______|_ + * | emulated | | + * +====> /dev/ttyS0 <===>| qemud |------> /dev/socket/qemud_gps + * | |________| + * emulated GPS <-----+ | + * | +---------> other + * | + * other <--------------+ + * + * + * this is done to overcome specific permission problems, as well as to add various + * features that would require special kernel drivers otherwise even though they + * only need a simple character channel. + */ + +/* initialize the qemud support code in the emulator + */ + +extern void android_qemud_init( void ); + +/* return the character driver state object that needs to be connected to the + * emulated serial port where all multiplexed channels go through. + */ +extern CharDriverState* android_qemud_get_cs( void ); + +/* return the character driver state corresponding to a named qemud communication + * channel. this can be used to send/data the channel. + * returns 0 on success, or -1 in case of error + */ +extern int android_qemud_get_channel( const char* name, CharDriverState* *pcs ); + +/* set the character driver state for a given qemud communication channel. this + * is used to attach the channel to an external char driver device directly. + * returns 0 on success, -1 on error + */ +extern int android_qemud_set_channel( const char* name, CharDriverState* peer_cs ); + +/* list of known qemud channel names */ +#define ANDROID_QEMUD_GSM "gsm" +#define ANDROID_QEMUD_GPS "gps" + +/* add new channel names here when you need them */ + +#endif /* _android_qemud_h */ |