nkeynes@19: /** nkeynes@561: * $Id$ nkeynes@19: * External interface to the dreamcast serial port, implemented by nkeynes@19: * sh4/scif.c nkeynes@19: * nkeynes@19: * Copyright (c) 2005 Nathan Keynes. nkeynes@19: * nkeynes@19: * This program is free software; you can redistribute it and/or modify nkeynes@19: * it under the terms of the GNU General Public License as published by nkeynes@19: * the Free Software Foundation; either version 2 of the License, or nkeynes@19: * (at your option) any later version. nkeynes@19: * nkeynes@19: * This program is distributed in the hope that it will be useful, nkeynes@19: * but WITHOUT ANY WARRANTY; without even the implied warranty of nkeynes@19: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the nkeynes@19: * GNU General Public License for more details. nkeynes@19: */ nkeynes@736: #ifndef lxdream_serial_H nkeynes@736: #define lxdream_serial_H 1 nkeynes@19: nkeynes@19: #include nkeynes@19: nkeynes@1077: #include "lxdream.h" nkeynes@1077: nkeynes@19: #ifdef __cplusplus nkeynes@19: extern "C" { nkeynes@19: #endif nkeynes@19: nkeynes@19: #define SERIAL_8BIT 0x00 nkeynes@19: #define SERIAL_7BIT 0x40 nkeynes@19: #define SERIAL_PARITY_OFF 0x00 nkeynes@19: #define SERIAL_PARITY_EVEN 0x20 nkeynes@19: #define SERIAL_PARITY_ODD 0x30 nkeynes@19: #define SERIAL_1STOPBIT 0x00 nkeynes@19: #define SERIAL_2STOPBITS 0x08 nkeynes@19: nkeynes@19: typedef struct serial_device { nkeynes@1077: void (*attach)(struct serial_device *dev); nkeynes@1077: void (*detach)(struct serial_device *dev); nkeynes@1077: void (*destroy)(struct serial_device *dev); nkeynes@1077: void (*set_line_speed)(struct serial_device *dev, uint32_t bps); nkeynes@1077: void (*set_line_params)(struct serial_device *dev, int flags); nkeynes@1077: void (*receive_data)(struct serial_device *dev, uint8_t value); nkeynes@19: } *serial_device_t; nkeynes@19: nkeynes@1077: serial_device_t serial_attach_device( serial_device_t dev ); nkeynes@1077: serial_device_t serial_detach_device( ); nkeynes@1077: serial_device_t serial_get_device( ); nkeynes@1077: nkeynes@1081: void serial_init(); nkeynes@1081: nkeynes@1077: /** nkeynes@1077: * Destroy a serial device. nkeynes@1077: */ nkeynes@1077: void serial_destroy_device( serial_device_t dev ); nkeynes@1077: nkeynes@19: nkeynes@19: void serial_transmit_data( char *data, int length ); nkeynes@19: void serial_transmit_break( void ); nkeynes@19: nkeynes@1077: /** nkeynes@1077: * Create a serial device on a host device identified by the given nkeynes@1077: * file (ie /dev/tty). If filename identifies a regular file, it is opened nkeynes@1077: * for output only. nkeynes@1077: */ nkeynes@1077: serial_device_t serial_fd_device_new_filename( const gchar *filename ); nkeynes@1077: nkeynes@1077: /** nkeynes@1077: * Create a serial device on the host console (stdin/stdout). nkeynes@1077: */ nkeynes@1077: serial_device_t serial_fd_device_new_console(); nkeynes@1077: nkeynes@1077: /** nkeynes@1077: * Create a serial device on a pair of file streams (in and out) nkeynes@1077: */ nkeynes@1077: serial_device_t serial_fd_device_new_file( FILE *in, FILE *out, gboolean closeOnDestroy ); nkeynes@1077: nkeynes@19: #ifdef __cplusplus nkeynes@19: } nkeynes@19: #endif nkeynes@19: nkeynes@736: #endif /* !lxdream_serial_H */